MAIN START
LAD GR1,ARG ;パラメタ
CALL CHGMJ ;副プログラムの呼び出し
RET
ARG DC DATA ;文字列
DC #63AD ;キービット
DATA DC 'LANGUAGE CASL II'
END
CHGMJ START ;文字列の変換 [b12.cas]
RPUSH ;汎用レジスタの退避
LD GR2,1,GR1 ;キービットの取り出し
LD GR1,0,GR1 ;文字列のアドレス
LAD GR4,0 ;格納場所の指標レジスタ
LAD GR5,16 ;ループカウンタ
LOOP LD GR3,0,GR1 ; [ a ]
LD GR2,GR2 ;キーの符号判定
JPL L1
ST GR3,OUT,GR4 ;文字の格納 [ b ]
LAD GR4,1,GR4 ;指標レジスタの加算
JUMP L2
L1 PUSH 0,GR3 ;スタック領域に格納
L2 SLL GR2,1 ;1ビット左シフト [ c ]
LAD GR1,1,GR1
SUBA GR5,=1 ;カウンタの減算
JPL LOOP
LAD GR1,15 ;指標レジスタの初期設定
L3 POP GR3 ;スタックから戻す
ST GR3,OUT,GR1 ;文字の格納 [ d ]
LAD GR1,-1,GR1
CPA GR1,GR4
JMI L4
JUMP L3
L4 OUT OUT,LEN ;出力
RPOP ;汎用レジスタの復元
RET
LEN DC 16
OUT DS 16
END