HEX4   START               ;16進数 [b15.cas]
       IN     HEX,LEN      ;16進数の入力
       LAD    GR3,0        ;結果の格納場所
       LD     GR1,LEN
       CPA    GR1,=4       ;長さのチェック
       JNZ    ERROR
LOOP   SUBA   GR1,=1
       JMI    FIN
       SRL    GR3,4        ;右に4ビットシフト [  a  ]
       LD     GR2,HEX,GR1  ;1文字取り出す
       CPA    GR2,='0'     ;数字か?
       JMI    ERROR
       CPA    GR2,=':'     ;数字か?
       JMI    NUM
       CPA    GR2,='A'     ;'A'から'F'?
       JMI    ERROR
       CPA    GR2,='F'     ;'A'から'F'?
       JPL    ERROR
       SUBA   GR2,='A'     ; [  b  ]
       LAD    GR2,10,GR2
N1     SLL    GR2,12       ;12ビット左シフト
       ADDA   GR3,GR2      ;加算
       JUMP   LOOP
NUM    SUBA   GR2,='0'     ;文字から数値へ  [  c  ]
       JUMP   N1
ERROR  OUT    ER,ERLEN     ;エラーメッセージ
FIN    ST     GR3,N
       RET
LEN    DS     1
N      DS     1
ER     DC     'ERROR'
ERLEN  DC     5
HEX    DS     256
       END