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