30D6 inc b 30D7 inc c 30D8 jr 30DDh 30DA ldi a, (hl) 30DB ld (de), a 30DC inc de 30DD dec c 30DE jr nz, 30DAh 30E0 dec b 30E1 jr nz, 30DAh 30E3 ret
なんでループをdec bcじゃなくてbとc別々にまわしてるんだろう。意味は一緒ですよね?何か違うのかな・・・
あ、30D7から入るとbが加算されないからループ回数が256回ずれる。これがミソかな。そんな気がする。
だよね、bcのチェックをしっかりしてあるなら30DAから入っても動作は同じだし、
そのずれを利用してオーバーロード的な使い方をできるようにしてあるんだ。なるほろなるほろ。
で根本的なバグの原因はldi a, (hl)だ。これhl元に戻してくれないんだ。
bは使わないで欲しいし、やっぱりこれを元に自分用の範囲コピーを書き直すしかないかな・・・
つかそのままでいいよね。たった7バイトでかける。
これなら起動用メールに書き足せあーー、jr nzがないんだった。jp nzでもいいけどそっちも文字があるかわからん。そこチェックしておくか。
0000 ldi a, (hl) 0001 ld (de), a 0002 inc de 0003 dec c 0004 jp nz, 0000h 0007 ret