TVボーイとMC-10の大きな違いは割り込みです。MC-10のBASICでは割り込みアドレスが固定されており、しかもビデオメモリと被るため利用できません。
SCI TOF OCF ICF IRQ1 SWI NMI FAD6 FAD6 FAD7 FAD6 FAC5 FAD6 FAD6 4200 4203 4206 4209 420C 420F 4212
TVボーイ($F000-$FFFF)のゲームをMC-10($8000-$8FFF)にリロケートして、割り込み処理が必要な部分はアドレスがずれないように、固有ルーチン($7000-$7FFF)へジャンプさせます。
;
; File: frogger10.c10
;
org $7000
jmp START
WAIT:
ldaa $7F
jsr WAIT_LOOP
rts
WAIT_LOOP:
deca
nop ;DUMMY
nop ;DUMMY
nop ;DUMMY
nop ;DUMMY
nop ;DUMMY
nop ;DUMMY
bne WAIT_LOOP
rts
SHOT:
ldaa #$80
coma ;flip the bits
staa $0002 ;store in keystrobe
ldaa $BFFF ;get the key group
bita #$08
beq keySPC
ldaa #%11111110 ; check CTRL key
staa 2
ldaa 3
bita #%00000010
beq keyCTRL
ldaa #$FF
rts
INPUT:
ldaa #$80
coma ;flip the bits
staa $0002 ;store in keystrobe
ldaa $BFFF ;get the key group
bita #$04
beq keyW
ldaa #$04
coma ;flip the bits
staa $0002 ;store in keystrobe
ldaa $BFFF ;get the key group
bita #$08
beq keyZ
ldaa #$02
coma ;flip the bits
staa $0002 ;store in keystrobe
ldaa $BFFF ;get the key group
bita #$01
beq keyA
ldaa #$08
coma ;flip the bits
staa $0002 ;store in keystrobe
ldaa $BFFF ;get the key group
bita #$04
beq keyS
ldaa #$FF
rts
keyCTRL:
ldaa #$FB
rts
keySPC:
ldaa #$FD
rts
keyW:
ldaa #$FD
rts
keyZ:
ldaa #$FB
rts
keyA:
ldaa #$F7
rts
keyS:
ldaa #$EF
rts
;
org $8000
START:
clra
staa $0001
staa $0017
coma
staa $0005
; ldaa #$7F
ldaa #$FF
staa $0000
