BIOSにSC-3000用入力ルーチンを実装したので、BRUCE'S CONTROLLER TESTERで試しました。
[1][2][3][4][5][6][7][8][9][0][-][^]
BIOSにSC-3000用入力ルーチンを追加します。
> copy /b coleco29.bin+sc3k.bin COLECO.ROM
BIOS自身もメモリマップの修正などが必要です。
coleco29.asm
ORG C000H
ORG C3B9H
IO_Joy1 EQU 0DCH ; Joystick 1 input port IO_Joy2 EQU 0DDH ; Joystick 2 input port IO_Sound EQU 07FH ; Sound chip output port
A0038 JP V_NMI
A0066 JP 2000H
入力ルーチンをSC-3000用に置き換えます。
;*************************************** ; 1F76 ReadCtlRaw ; ; Update the joystick and keypad shadow bytes. ;*************************************** A114A _ReadCtlRaw CALL 2010H ;IN A,(IO_Joy1) ; Update joystick 1 shadow RET ; CPL LD (Joy1Shad),A IN A,(IO_Joy2) ; Update joystick 2 shadow CPL OUT (IO_KP_Select),A ; Select keypad mode LD (Joy2Shad),A ; 13 T-states (wait for mode change) PUSH AF ; 11 T-states POP AF ; 11 T-states, total 35 (original 31) IN A,(IO_Joy1) ; Update keyboard 1 shadow CPL LD (Key1Shad),A IN A,(IO_Joy2) ; Update keyboard 2 shadow CPL OUT (IO_Joy_Select),A ; Select joystick mode L1137 LD (Key2Shad),A ; RET
SC-3000用の入力ルーチンです。
sc3k.asm
ORG 2000H A2000 LD A,02H LD (0CFFFH),A RET DB 0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH DB 0FFH,0FFH A2010 PUSH BC PUSH DE LD D,0FFH LD A,07H OUT (0DEH),A IN A,(0DCH) CPL BIT 4,A JR Z,SKIP LD D,0BFH SKIP LD B,A LD C,A RL B RR C JR C,A202C RR C LD A,4CH AND B LD B,A LD A,02H AND C OR B JR A2038 A202C RR C LD A,4CH AND B LD B,A LD A,02H AND C OR B OR 01H A2038 LD (0C3EEH),A LD A,(0CFFFH) LD (0C3F0H),A LD A,00H OUT (0DEH),A IN A,(0DCH) CPL BIT 0,A JR Z,KEY8 LD A,02H JP TENKEY KEY8 IN A,(0DDH) CPL BIT 0,A JR Z,KEY2 LD A,0EH JP TENKEY KEY2 LD A,01H OUT (0DEH),A IN A,(0DCH) CPL BIT 0,A JR Z,KEY9 LD A,08H JP TENKEY KEY9 IN A,(0DDH) CPL BIT 0,A JR Z,KEY3 LD A,04H JP TENKEY KEY3 LD A,02H OUT (0DEH),A IN A,(0DCH) CPL BIT 0,A JR Z,KEY0 LD A,03H JP TENKEY KEY0 IN A,(0DDH) CPL BIT 0,A JR Z,KEY4 LD A,05H JP TENKEY KEY4 LD A,03H OUT (0DEH),A IN A,(0DCH) CPL BIT 0,A JR Z,KEYA LD A,0DH JP TENKEY KEYA IN A,(0DDH) CPL BIT 0,A JR Z,KEY5 LD A,06H JP TENKEY KEY5 LD A,04H OUT (0DEH),A IN A,(0DCH) CPL BIT 0,A JR Z,KEYS LD A,0CH JP TENKEY KEYS IN A,(0DDH) CPL BIT 0,A JR Z,KEY6 LD A,09H JP TENKEY KEY6 LD A,05H OUT (0DEH),A IN A,(0DCH) CPL BIT 0,A JR Z,KEY7 LD A,01H JP TENKEY KEY7 LD A,06H OUT (0DEH),A IN A,(0DCH) CPL BIT 0,A JR Z,NOKEY LD A,0AH TENKEY AND D LD (0C3F0H),A LD A,00H LD (0CFFFH),A NOKEY POP DE POP BC IN A,(0BFH) EI RET END
Enri's Home Pageとは違う結果になりましたのでメモ。
キーパッドマトリックス 0=未使用、1=’6’、2=’1’、3=’3’、 4=’9’、5=’0’、6=’*’、7=’F3’、 8=’2’、9=゜#’、A=’7’、B=’F4’、 C=’5’、D=’4’、E=’8’、F=何も押されていない