MAIN START LAD GR1,CHECK LAD GR0,DATA CALL MARKCK ;副プログラムの呼び出し RET CHECK DS 2 DATA DC #0002,#0003,#0009,#0000 END MARKCK START ;マークカード [b07.cas] RPUSH ;汎用レジスタの退避 LAD GR2,0 ;ノーマークの数 LAD GR3,0 ;ダブルマークの数 LAD GR4,1 ;個数(40)まで [ a ] LD GR5,GR0 NEXT LAD GR7,0 ;マークの数 LD GR6,0,GR5 SHIFT SRL GR6,1 ;1ビット右シフト JOV BIT ;オーバーフローのチェック JZE ZERO ;ゼロの場合 JUMP SHIFT BIT LAD GR7,1,GR7 ;GR7を1加算 CPA GR7,=2 ;ダブルマークか? [ b ] JNZ SHIFT LAD GR3,1,GR3 ;ダブルマークの数 LB1 LAD GR4,1,GR4 ;カウントアップ CPA GR4,=4 ;40桁?(4桁に変更) JPL FIN LAD GR5,1,GR5 ;次のマーク位置 [ c ] JUMP NEXT ZERO CPA GR7,=0 JNZ LB1 LAD GR2,1,GR2 ;ノーマークの数を1加算 JUMP LB1 FIN ST GR2,0,GR1 ;ノーマークの数 ST GR3,1,GR1 ;ダブルマークの数 RPOP ;汎用レジスタの復元 RET END