MAIN START
LD GR1,=#09CD
CALL BITOUT ;副プログラムの呼び出し
RET
BITOUT START ;ゼロ抑制 [a10.cas]
RPUSH ;汎用レジスタの退避
LAD GR2,0 ;出力ポインタの初期化
LAD GR3,15 ;カウンタの初期化
CPA GR1,=0 ;ゼロ?
JZE OUT1
LOOP1 SLL GR1,1 ;1ビット論理シフト [ a ]
JOV ONE
SUBA GR3,=1 ;先行するビット0の処理
JUMP LOOP1
LOOP2 JOV ONE
LD GR4,='0' ;'0' → GR4
JUMP STORE
ONE LD GR4,='1' ;'1'→GR4 [ b ]
STORE ST GR4,BUF,GR2 ;1文字格納
LAD GR2,1,GR2
SUBA GR3,=1
JMI OUT2 ;全ビット終了?
SLL GR1,1 ;1ビット論理シフト
JUMP LOOP2
OUT1 LD GR4,='0' ;'0' → GR4
ST GR4,BUF,GR2 ;1文字格納
LAD GR2,1,GR2
OUT2 ST GR2,LEN ;出力文字長の格納 [ c ]
OUT BUF,LEN ;出力
RPOP ;汎用レジスタの復元
RET
BUF DS 16
LEN DS 1
END