|
|
@ -48,10 +48,6 @@ TMSINTEN: .EQU 5 ; INTERRUPT ENABLE BIT |
|
|
#IF ((TMSMODE == TMSMODE_MSX) | (TMSMODE == TMSMODE_MSX9958)) |
|
|
#IF ((TMSMODE == TMSMODE_MSX) | (TMSMODE == TMSMODE_MSX9958)) |
|
|
TMS_DATREG .EQU $98 ; READ/WRITE DATA |
|
|
TMS_DATREG .EQU $98 ; READ/WRITE DATA |
|
|
TMS_CMDREG .EQU $99 ; READ STATUS / WRITE REG SEL |
|
|
TMS_CMDREG .EQU $99 ; READ STATUS / WRITE REG SEL |
|
|
;TMS_PPIA .EQU 0 ; PPI PORT A |
|
|
|
|
|
;TMS_PPIB .EQU 0 ; PPI PORT B |
|
|
|
|
|
;TMS_PPIC .EQU 0 ; PPI PORT C |
|
|
|
|
|
;TMS_PPIX .EQU 0 ; PPI CONTROL PORT |
|
|
|
|
|
; |
|
|
; |
|
|
#IF (TMSMODE == TMSMODE_MSX) |
|
|
#IF (TMSMODE == TMSMODE_MSX) |
|
|
.ECHO "MSX" |
|
|
.ECHO "MSX" |
|
|
@ -64,10 +60,6 @@ TMS_CMDREG .EQU $99 ; READ STATUS / WRITE REG SEL |
|
|
#IF (TMSMODE == TMSMODE_COLECO) |
|
|
#IF (TMSMODE == TMSMODE_COLECO) |
|
|
TMS_DATREG .EQU $BE ; READ/WRITE DATA |
|
|
TMS_DATREG .EQU $BE ; READ/WRITE DATA |
|
|
TMS_CMDREG .EQU $BF ; READ STATUS / WRITE REG SEL |
|
|
TMS_CMDREG .EQU $BF ; READ STATUS / WRITE REG SEL |
|
|
;TMS_PPIA .EQU 0 ; PPI PORT A |
|
|
|
|
|
;TMS_PPIB .EQU 0 ; PPI PORT B |
|
|
|
|
|
;TMS_PPIC .EQU 0 ; PPI PORT C |
|
|
|
|
|
;TMS_PPIX .EQU 0 ; PPI CONTROL PORT |
|
|
|
|
|
.ECHO "COLECO" |
|
|
.ECHO "COLECO" |
|
|
#ENDIF |
|
|
#ENDIF |
|
|
; |
|
|
; |
|
|
@ -93,10 +85,6 @@ TMS_PPIX .EQU $87 ; PPI CONTROL PORT |
|
|
TMS_DATREG .EQU $98 ; READ/WRITE DATA |
|
|
TMS_DATREG .EQU $98 ; READ/WRITE DATA |
|
|
TMS_CMDREG .EQU $99 ; READ STATUS / WRITE REG SEL |
|
|
TMS_CMDREG .EQU $99 ; READ STATUS / WRITE REG SEL |
|
|
TMS_ACR .EQU $9C ; AUX CONTROL REGISTER |
|
|
TMS_ACR .EQU $9C ; AUX CONTROL REGISTER |
|
|
;TMS_PPIA .EQU 0 ; PPI PORT A |
|
|
|
|
|
;TMS_PPIB .EQU 0 ; PPI PORT B |
|
|
|
|
|
;TMS_PPIC .EQU 0 ; PPI PORT C |
|
|
|
|
|
;TMS_PPIX .EQU 0 ; PPI CONTROL PORT |
|
|
|
|
|
.ECHO "SCG" |
|
|
.ECHO "SCG" |
|
|
#ENDIF |
|
|
#ENDIF |
|
|
; |
|
|
; |
|
|
@ -104,10 +92,6 @@ TMS_ACR .EQU $9C ; AUX CONTROL REGISTER |
|
|
TMS_DATREG .EQU $98 ; READ/WRITE DATA |
|
|
TMS_DATREG .EQU $98 ; READ/WRITE DATA |
|
|
TMS_CMDREG .EQU $99 ; READ STATUS / WRITE REG SEL |
|
|
TMS_CMDREG .EQU $99 ; READ STATUS / WRITE REG SEL |
|
|
TMS_ACR .EQU $9C ; AUX CONTROL REGISTER |
|
|
TMS_ACR .EQU $9C ; AUX CONTROL REGISTER |
|
|
;TMS_PPIA .EQU 0 ; PPI PORT A |
|
|
|
|
|
;TMS_PPIB .EQU 0 ; PPI PORT B |
|
|
|
|
|
;TMS_PPIC .EQU 0 ; PPI PORT C |
|
|
|
|
|
;TMS_PPIX .EQU 0 ; PPI CONTROL PORT |
|
|
|
|
|
TMS_KBDDATA .EQU $E2 ; KBD CTLR DATA PORT |
|
|
TMS_KBDDATA .EQU $E2 ; KBD CTLR DATA PORT |
|
|
TMS_KBDST .EQU $E3 ; KBD CTLR STATUS/CMD PORT |
|
|
TMS_KBDST .EQU $E3 ; KBD CTLR STATUS/CMD PORT |
|
|
.ECHO "MBC" |
|
|
.ECHO "MBC" |
|
|
@ -117,19 +101,21 @@ TMS_KBDST .EQU $E3 ; KBD CTLR STATUS/CMD PORT |
|
|
TMS_DATREG .EQU $A0 ; READ/WRITE DATA |
|
|
TMS_DATREG .EQU $A0 ; READ/WRITE DATA |
|
|
TMS_CMDREG .EQU $A1 ; READ STATUS / WRITE REG SEL |
|
|
TMS_CMDREG .EQU $A1 ; READ STATUS / WRITE REG SEL |
|
|
TMS_ACR .EQU $A6 ; AUX CONTROL REGISTER |
|
|
TMS_ACR .EQU $A6 ; AUX CONTROL REGISTER |
|
|
;TMS_PPIA .EQU 0 ; PPI PORT A |
|
|
|
|
|
;TMS_PPIB .EQU 0 ; PPI PORT B |
|
|
|
|
|
;TMS_PPIC .EQU 0 ; PPI PORT C |
|
|
|
|
|
;TMS_PPIX .EQU 0 ; PPI CONTROL PORT |
|
|
|
|
|
TMS_KBDDATA .EQU $4C ; KBD CTLR DATA PORT |
|
|
TMS_KBDDATA .EQU $4C ; KBD CTLR DATA PORT |
|
|
TMS_KBDST .EQU $4D ; KBD CTLR STATUS/CMD PORT |
|
|
TMS_KBDST .EQU $4D ; KBD CTLR STATUS/CMD PORT |
|
|
.ECHO "DUO" |
|
|
.ECHO "DUO" |
|
|
#ENDIF |
|
|
#ENDIF |
|
|
; |
|
|
; |
|
|
#IF (TMSMODE == TMSMODE_NABU) |
|
|
|
|
|
|
|
|
#IF ((TMSMODE == TMSMODE_NABU40) | (TMSMODE == TMSMODE_NABU80)) |
|
|
TMS_DATREG .EQU $A0 ; READ/WRITE DATA |
|
|
TMS_DATREG .EQU $A0 ; READ/WRITE DATA |
|
|
TMS_CMDREG .EQU $A1 ; READ STATUS / WRITE REG SEL |
|
|
TMS_CMDREG .EQU $A1 ; READ STATUS / WRITE REG SEL |
|
|
.ECHO "NABU" |
|
|
|
|
|
|
|
|
; |
|
|
|
|
|
#IF (TMSMODE == TMSMODE_NABU40) |
|
|
|
|
|
.ECHO "NABU-40" |
|
|
|
|
|
#ENDIF |
|
|
|
|
|
#IF (TMSMODE == TMSMODE_NABU80) |
|
|
|
|
|
.ECHO "NABU-80" |
|
|
|
|
|
#ENDIF |
|
|
#ENDIF |
|
|
#ENDIF |
|
|
; |
|
|
; |
|
|
.ECHO ", IO=" |
|
|
.ECHO ", IO=" |
|
|
@ -141,7 +127,7 @@ TMS_CMDREG .EQU $A1 ; READ STATUS / WRITE REG SEL |
|
|
; |
|
|
; |
|
|
TMS_ROWS .EQU 24 |
|
|
TMS_ROWS .EQU 24 |
|
|
; |
|
|
; |
|
|
#IF ((TMSMODE == TMSMODE_MSX9958) | (TMSMODE == TMSMODE_MBC) | (TMSMODE == TMSMODE_DUO) | (TMSMODE == TMSMODE_NABU)) |
|
|
|
|
|
|
|
|
#IF ((TMSMODE == TMSMODE_MSX9958) | (TMSMODE == TMSMODE_MBC) | (TMSMODE == TMSMODE_DUO) | (TMSMODE == TMSMODE_NABU80)) |
|
|
TMS_FNTVADDR .EQU $1000 ; VRAM ADDRESS OF FONT DATA |
|
|
TMS_FNTVADDR .EQU $1000 ; VRAM ADDRESS OF FONT DATA |
|
|
TMS_FNTSIZE .EQU 8*256 ; ### JLC Mod for JBL compatibility ### = 8x8 Font 256 Chars |
|
|
TMS_FNTSIZE .EQU 8*256 ; ### JLC Mod for JBL compatibility ### = 8x8 Font 256 Chars |
|
|
TMS_CHRVADDR .EQU $0000 ; VRAM ADDRESS OF CHAR SCREEN DATA (NEW CONSTANT) = REG2 * $400 |
|
|
TMS_CHRVADDR .EQU $0000 ; VRAM ADDRESS OF CHAR SCREEN DATA (NEW CONSTANT) = REG2 * $400 |
|
|
@ -168,7 +154,7 @@ PPKENABLE .SET TRUE ; INCLUDE PPK KEYBOARD SUPPORT |
|
|
KBDENABLE .SET TRUE ; INCLUDE KBD KEYBOARD SUPPORT |
|
|
KBDENABLE .SET TRUE ; INCLUDE KBD KEYBOARD SUPPORT |
|
|
#ENDIF |
|
|
#ENDIF |
|
|
; |
|
|
; |
|
|
#IF (TMSMODE == TMSMODE_NABU) |
|
|
|
|
|
|
|
|
#IF ((TMSMODE == TMSMODE_NABU40) |(TMSMODE == TMSMODE_NABU80)) |
|
|
NABUKBENABLE .SET TRUE ; INCLUDE NABU KEYBOARD SUPPORT |
|
|
NABUKBENABLE .SET TRUE ; INCLUDE NABU KEYBOARD SUPPORT |
|
|
#ENDIF |
|
|
#ENDIF |
|
|
; |
|
|
; |
|
|
@ -181,7 +167,7 @@ NABUKBENABLE .SET TRUE ; INCLUDE NABU KEYBOARD SUPPORT |
|
|
;#DEFINE TMS_IODELAY NOP \ NOP \ NOP \ NOP \ NOP ; 20 W/S ### JLC Mod for Clock/2 (9 MHz) ### |
|
|
;#DEFINE TMS_IODELAY NOP \ NOP \ NOP \ NOP \ NOP ; 20 W/S ### JLC Mod for Clock/2 (9 MHz) ### |
|
|
#ELSE |
|
|
#ELSE |
|
|
; BELOW WAS TUNED FOR SBC AT 8MHZ |
|
|
; BELOW WAS TUNED FOR SBC AT 8MHZ |
|
|
#IF ((TMSMODE == TMSMODE_MSX9958) | (TMSMODE == TMSMODE_MBC) | (TMSMODE == TMSMODE_DUO) | (TMSMODE == TMSMODE_NABU)) |
|
|
|
|
|
|
|
|
#IF ((TMSMODE == TMSMODE_MSX9958) | (TMSMODE == TMSMODE_MBC) | (TMSMODE == TMSMODE_DUO) | (TMSMODE == TMSMODE_NABU40) | (TMSMODE == TMSMODE_NABU80)) |
|
|
#DEFINE TMS_IODELAY NOP \ NOP \ NOP \ NOP \ NOP \ NOP \ NOP ; V9958 NEEDS AT WORST CASE, APPROX 4us (28T) DELAY BETWEEN I/O (WHEN IN TEXT MODE) |
|
|
#DEFINE TMS_IODELAY NOP \ NOP \ NOP \ NOP \ NOP \ NOP \ NOP ; V9958 NEEDS AT WORST CASE, APPROX 4us (28T) DELAY BETWEEN I/O (WHEN IN TEXT MODE) |
|
|
#ELSE |
|
|
#ELSE |
|
|
#DEFINE TMS_IODELAY NOP \ NOP ; 8 W/S |
|
|
#DEFINE TMS_IODELAY NOP \ NOP ; 8 W/S |
|
|
@ -244,8 +230,11 @@ TMS_INIT: |
|
|
#IF (TMSMODE == TMSMODE_MSX9958) |
|
|
#IF (TMSMODE == TMSMODE_MSX9958) |
|
|
PRTS("RC_V9958$") |
|
|
PRTS("RC_V9958$") |
|
|
#ENDIF |
|
|
#ENDIF |
|
|
#IF (TMSMODE == TMSMODE_NABU) |
|
|
|
|
|
PRTS("NABU$") |
|
|
|
|
|
|
|
|
#IF (TMSMODE == TMSMODE_NABU40) |
|
|
|
|
|
PRTS("NABU-40$") |
|
|
|
|
|
#ENDIF |
|
|
|
|
|
#IF (TMSMODE == TMSMODE_NABU80) |
|
|
|
|
|
PRTS("NABU-80$") |
|
|
#ENDIF |
|
|
#ENDIF |
|
|
; |
|
|
; |
|
|
PRTS(" IO=0x$") |
|
|
PRTS(" IO=0x$") |
|
|
@ -272,7 +261,7 @@ TMS_INIT1: |
|
|
#IF MKYENABLE |
|
|
#IF MKYENABLE |
|
|
CALL MKY_INIT ; INITIALIZE MKY KEYBOARD DRIVER |
|
|
CALL MKY_INIT ; INITIALIZE MKY KEYBOARD DRIVER |
|
|
#ENDIF |
|
|
#ENDIF |
|
|
#IF (TMSMODE == TMSMODE_NABU) |
|
|
|
|
|
|
|
|
#IF ((TMSMODE == TMSMODE_NABU40) | (TMSMODE == TMSMODE_NABU80)) |
|
|
CALL NABUKB_INIT ; INITIALIZE NABU KEYBOARD DRIVER |
|
|
CALL NABUKB_INIT ; INITIALIZE NABU KEYBOARD DRIVER |
|
|
#ENDIF |
|
|
#ENDIF |
|
|
|
|
|
|
|
|
@ -329,7 +318,7 @@ TMS_FNTBL: |
|
|
.DW KBD_FLUSH |
|
|
.DW KBD_FLUSH |
|
|
.DW KBD_READ |
|
|
.DW KBD_READ |
|
|
#ENDIF |
|
|
#ENDIF |
|
|
#IF (TMSMODE == TMSMODE_NABU) |
|
|
|
|
|
|
|
|
#IF ((TMSMODE == TMSMODE_NABU40) | (TMSMODE == TMSMODE_NABU80)) |
|
|
.DW NABUKB_STAT |
|
|
.DW NABUKB_STAT |
|
|
.DW NABUKB_FLUSH |
|
|
.DW NABUKB_FLUSH |
|
|
.DW NABUKB_READ |
|
|
.DW NABUKB_READ |
|
|
@ -557,7 +546,7 @@ TMS_SET: |
|
|
;---------------------------------------------------------------------- |
|
|
;---------------------------------------------------------------------- |
|
|
; |
|
|
; |
|
|
TMS_WR: |
|
|
TMS_WR: |
|
|
#IF ((TMSMODE == TMSMODE_MSX9958) | (TMSMODE == TMSMODE_MBC) | (TMSMODE == TMSMODE_DUO) | (TMSMODE == TMSMODE_NABU)) |
|
|
|
|
|
|
|
|
#IF ((TMSMODE == TMSMODE_MSX9958) | (TMSMODE == TMSMODE_MBC) | (TMSMODE == TMSMODE_DUO) | (TMSMODE == TMSMODE_NABU80)) |
|
|
; CLEAR R#14 FOR V9958 |
|
|
; CLEAR R#14 FOR V9958 |
|
|
XOR A |
|
|
XOR A |
|
|
OUT (TMS_CMDREG), A |
|
|
OUT (TMS_CMDREG), A |
|
|
@ -653,7 +642,7 @@ TMS_CRTINIT2: |
|
|
DJNZ TMS_CRTINIT2 ; LOOP |
|
|
DJNZ TMS_CRTINIT2 ; LOOP |
|
|
; |
|
|
; |
|
|
; ENABLE WAIT SIGNAL IF 9938/58 |
|
|
; ENABLE WAIT SIGNAL IF 9938/58 |
|
|
#IF ((TMSMODE == TMSMODE_MSX9958) | (TMSMODE == TMSMODE_MBC) | (TMSMODE == TMSMODE_DUO) | (TMSMODE == TMSMODE_NABU)) |
|
|
|
|
|
|
|
|
#IF ((TMSMODE == TMSMODE_MSX9958) | (TMSMODE == TMSMODE_MBC) | (TMSMODE == TMSMODE_DUO) | (TMSMODE == TMSMODE_NABU80)) |
|
|
LD C,25 ; REGISTER 25 |
|
|
LD C,25 ; REGISTER 25 |
|
|
LD A,%00000100 ; ONLY WTE BIT SET |
|
|
LD A,%00000100 ; ONLY WTE BIT SET |
|
|
CALL TMS_SET ; DO IT |
|
|
CALL TMS_SET ; DO IT |
|
|
@ -1101,7 +1090,7 @@ TMS_IDAT: |
|
|
.DB TMS_KBDDATA ; 8242 DATA PORT |
|
|
.DB TMS_KBDDATA ; 8242 DATA PORT |
|
|
.DB 0 ; FILLER |
|
|
.DB 0 ; FILLER |
|
|
#ENDIF |
|
|
#ENDIF |
|
|
#IF ((TMSMODE == TMSMODE_MSX) | (TMSMODE == TMSMODE_MSX9958) | (TMSMODE == TMSMODE_SCG) | (TMSMODE == TMSMODE_COLECO) | (TMSMODE == TMSMODE_NABU)) |
|
|
|
|
|
|
|
|
#IF ((TMSMODE == TMSMODE_MSX) | (TMSMODE == TMSMODE_MSX9958) | (TMSMODE == TMSMODE_SCG) | (TMSMODE == TMSMODE_COLECO) | (TMSMODE == TMSMODE_NABU40) | (TMSMODE == TMSMODE_NABU80)) |
|
|
.FILL 4,0 ; DUMMY KEYBOARD CONFIG DATA |
|
|
.FILL 4,0 ; DUMMY KEYBOARD CONFIG DATA |
|
|
#ENDIF |
|
|
#ENDIF |
|
|
; |
|
|
; |
|
|
@ -1150,7 +1139,7 @@ TMS_IDAT: |
|
|
; 5S Fifth sprite (not displayed) detected. Value in FS* is valid. |
|
|
; 5S Fifth sprite (not displayed) detected. Value in FS* is valid. |
|
|
; INT Set at each screen update, used for interrupts. |
|
|
; INT Set at each screen update, used for interrupts. |
|
|
; |
|
|
; |
|
|
#IF ((TMSMODE == TMSMODE_MSX9958) | (TMSMODE == TMSMODE_MBC) | (TMSMODE == TMSMODE_DUO) | (TMSMODE == TMSMODE_NABU)) |
|
|
|
|
|
|
|
|
#IF ((TMSMODE == TMSMODE_MSX9958) | (TMSMODE == TMSMODE_MBC) | (TMSMODE == TMSMODE_DUO) | (TMSMODE == TMSMODE_NABU80)) |
|
|
; |
|
|
; |
|
|
; NOTE: YAMAHA 9938/58 DOCUMENTATION SAYS R3 IS SAME AS 9918 (ADR >> 10), |
|
|
; NOTE: YAMAHA 9938/58 DOCUMENTATION SAYS R3 IS SAME AS 9918 (ADR >> 10), |
|
|
; BUT THIS SEEMS TO BE WRONG AND CORRECTLY DOCUMENTED AT |
|
|
; BUT THIS SEEMS TO BE WRONG AND CORRECTLY DOCUMENTED AT |
|
|
|