PC-G850VS / マシン語 3 / 文字を動かす

100 ORG 100H
110 LD E,0 ;横座標
120 LD D,2 ;縦座標
130LOOP: ;行番号とラベルとの間にスペースを入れてはならない。
140 LD A,'A' ;表示する文字をアキュムレーターにロードする。
141 PUSH DE     ;IOCS を呼ぶ前にレジスタの値を待避しておく。
150 CALL 0BE62H ;IOCS を呼んで表示する。
151 POP DE      ;IOCS を呼び終わったらレジスタの値を戻しておく。
152 LD BC,0  ;wait 処理 (16 ビットカウンターを初期化する)
153L1:       ; 〃
154 DEC BC   ; 〃 (カウンターを 1 だけデクリメントする)
155 LD A,B   ; 〃 (16 ビットを 8 ビットずつにわけて両者の OR をとり、全部のビットがゼロになっているかどうかを調べて、ノンゼロならループを繰り返す)
156 OR C     ; 〃 ( 〃 )
157 JP NZ,L1 ; 〃 ( 〃 )
160 LD A,''
161 PUSH DE
170 CALL 0BE62H ;150 行目で文字を表示した座標に空文字を表示する (表示されていた文字を消す)。
171 POP DE
180 INC E     ;横座標を 1 だけインクリメントする (1 だけ右にずらす)。
190 LD A,E    ;横座標をアキュムレーターにロードする。
200 CP 24     ;アキュムレーターの値と 24 (1 行の最大文字数) とをコンペアする。
201           ;アキュムレーターの値のほうが小さいときに (つまり注目座標が画面をはみ出していないとき) C (キャリー) フラグが立つ。
210 JP C,LOOP ;C フラグが立ったら LOOP ラベルへジャンプして、また処理を繰り返す。
220 RET


参考: ポケコンジャーナル、1994 年 1 月号、p.68-69