MC-8では、テンキーなどで、コマンドを使うと思いますが
ソフトウェア的Commandが、Dataから使う事が出来ます。
自分で、勝手に決める事ができ非常に便利です。
僕は、00h~7Fhをnote-dataとしていますので
80h~0FFh迄をCommandとして使います。
ちょっと変わった、ProgramジャンプTechnicを紹介します。
JP_TBL:DW xxxx xxxx xxxx xxxx・・・
とジャンプテーブルにアドレスを書いておきます
その上で、80hからのData番号で、CommandジャンプさせるTechnicです
Aレジスタに、Dataが入っている事を想定します。
PUSH AF
AND 80h
JP NZ,JP_PRG
JP_PRG:
POP AF
AND 7Fh
LD HL,JP_TBL
LD B,0
LD C,A
ADD HL,BC
ADD HL,BC
LD E,(HL)
INC HL
LD D,(HL)
EX DE,HL
JP (HL)
と言う少し変わったプログラムを使います
また、プログラムを作る上で、フラグという物が必要になります
1Byte 8Bit有るので、1Bitごとをフラグに当てます
フラグのAddressをF_ADRとします
また、何番目のフラグというのは、Aレジスタに置きます
まず、SHFT_1と言うサブルーチンを作ります。
SHFT_1: OR A
PUSH AF
RRCA
RRCA
RRCA
AND 1Fh
LD B,0
LD C,A
LD HL,F_ADR
ADD HL,BC
POP AF
LD C,1
RRCA
JR C,STEP_1
STEP_1:
RLC C
RRCA
JR C,STEP_2
STEP_2:
RLC C
RLC C
RRCA
JR C,STEP_3
RLC C
RLC C
RLC C
RLC C
RET
フラグのSet
SET_F:
CALL SHFT_1
LD A,(HL)
OR C
LD (HL),A
と言うProgramです
フラグのRESET
RES_F:
CALL SHIFT_1
LD A,C
LD C,A
LD A,(HL)
AND C
LD (HL),A
と言うProgramです
フラグのテスト
TES_F:
CALL SHFT_1
LD A,(HL)
AND C
JP Z,ZERO
"1"で動くProgram
JP STEP
ZERO:
"0"で動くProgram
STEP:Programの続き
別に JP Zを
JP NZ,ICHI
でも構いません。
以上僕のプログラミング技法です