|
|
|
@ -46,17 +46,12 @@ TMSINTEN: .EQU 5 ; INTERRUPT ENABLE BIT |
|
|
|
.ECHO "TMS: MODE=" |
|
|
|
; |
|
|
|
#IF ((TMSMODE == TMSMODE_MSX) | (TMSMODE == TMSMODE_MSX9958)) |
|
|
|
#IF (PLATFORM == PLT_NABU) |
|
|
|
TMS_DATREG .EQU $A0 ; READ/WRITE DATA |
|
|
|
TMS_CMDREG .EQU $A1 ; READ STATUS / WRITE REG SEL |
|
|
|
#ELSE |
|
|
|
TMS_DATREG .EQU $98 ; READ/WRITE DATA |
|
|
|
TMS_CMDREG .EQU $99 ; READ STATUS / WRITE REG SEL |
|
|
|
#ENDIF |
|
|
|
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_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) |
|
|
|
.ECHO "MSX" |
|
|
|
@ -69,10 +64,10 @@ TMS_PPIX .EQU 0 ; PPI CONTROL PORT |
|
|
|
#IF (TMSMODE == TMSMODE_COLECO) |
|
|
|
TMS_DATREG .EQU $BE ; READ/WRITE DATA |
|
|
|
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 |
|
|
|
;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" |
|
|
|
#ENDIF |
|
|
|
; |
|
|
|
@ -98,10 +93,10 @@ TMS_PPIX .EQU $87 ; PPI CONTROL PORT |
|
|
|
TMS_DATREG .EQU $98 ; READ/WRITE DATA |
|
|
|
TMS_CMDREG .EQU $99 ; READ STATUS / WRITE REG SEL |
|
|
|
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_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" |
|
|
|
#ENDIF |
|
|
|
; |
|
|
|
@ -109,10 +104,10 @@ TMS_PPIX .EQU 0 ; PPI CONTROL PORT |
|
|
|
TMS_DATREG .EQU $98 ; READ/WRITE DATA |
|
|
|
TMS_CMDREG .EQU $99 ; READ STATUS / WRITE REG SEL |
|
|
|
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_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_KBDST .EQU $E3 ; KBD CTLR STATUS/CMD PORT |
|
|
|
.ECHO "MBC" |
|
|
|
@ -122,14 +117,20 @@ TMS_KBDST .EQU $E3 ; KBD CTLR STATUS/CMD PORT |
|
|
|
TMS_DATREG .EQU $A0 ; READ/WRITE DATA |
|
|
|
TMS_CMDREG .EQU $A1 ; READ STATUS / WRITE REG SEL |
|
|
|
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_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_KBDST .EQU $4D ; KBD CTLR STATUS/CMD PORT |
|
|
|
.ECHO "DUO" |
|
|
|
#ENDIF |
|
|
|
; |
|
|
|
#IF (TMSMODE == TMSMODE_NABU) |
|
|
|
TMS_DATREG .EQU $A0 ; READ/WRITE DATA |
|
|
|
TMS_CMDREG .EQU $A1 ; READ STATUS / WRITE REG SEL |
|
|
|
.ECHO "NABU" |
|
|
|
#ENDIF |
|
|
|
; |
|
|
|
.ECHO ", IO=" |
|
|
|
.ECHO TMS_DATREG |
|
|
|
@ -140,7 +141,7 @@ TMS_KBDST .EQU $4D ; KBD CTLR STATUS/CMD PORT |
|
|
|
; |
|
|
|
TMS_ROWS .EQU 24 |
|
|
|
; |
|
|
|
#IF ((TMSMODE == TMSMODE_MSX9958) | (TMSMODE == TMSMODE_MBC) | (TMSMODE == TMSMODE_DUO)) |
|
|
|
#IF ((TMSMODE == TMSMODE_MSX9958) | (TMSMODE == TMSMODE_MBC) | (TMSMODE == TMSMODE_DUO) | (TMSMODE == TMSMODE_NABU)) |
|
|
|
TMS_FNTVADDR .EQU $1000 ; VRAM ADDRESS OF FONT DATA |
|
|
|
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 |
|
|
|
@ -167,6 +168,10 @@ PPKENABLE .SET TRUE ; INCLUDE PPK KEYBOARD SUPPORT |
|
|
|
KBDENABLE .SET TRUE ; INCLUDE KBD KEYBOARD SUPPORT |
|
|
|
#ENDIF |
|
|
|
; |
|
|
|
#IF (TMSMODE == TMSMODE_NABU) |
|
|
|
NABUKBENABLE .SET TRUE ; INCLUDE NABU KEYBOARD SUPPORT |
|
|
|
#ENDIF |
|
|
|
; |
|
|
|
; TMS_IODELAY IS USED TO ADD RECOVERY TIME TO TMS9918/V9958 ACCESSES |
|
|
|
; IF YOU SEE SCREEN CORRUPTION, ADJUST THIS!!! |
|
|
|
; |
|
|
|
@ -176,7 +181,7 @@ KBDENABLE .SET TRUE ; INCLUDE KBD KEYBOARD SUPPORT |
|
|
|
;#DEFINE TMS_IODELAY NOP \ NOP \ NOP \ NOP \ NOP ; 20 W/S ### JLC Mod for Clock/2 (9 MHz) ### |
|
|
|
#ELSE |
|
|
|
; BELOW WAS TUNED FOR SBC AT 8MHZ |
|
|
|
#IF ((TMSMODE == TMSMODE_MSX9958) | (TMSMODE == TMSMODE_MBC) | (TMSMODE == TMSMODE_DUO)) |
|
|
|
#IF ((TMSMODE == TMSMODE_MSX9958) | (TMSMODE == TMSMODE_MBC) | (TMSMODE == TMSMODE_DUO) | (TMSMODE == TMSMODE_NABU)) |
|
|
|
#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 |
|
|
|
#DEFINE TMS_IODELAY NOP \ NOP ; 8 W/S |
|
|
|
@ -239,6 +244,9 @@ TMS_INIT: |
|
|
|
#IF (TMSMODE == TMSMODE_MSX9958) |
|
|
|
PRTS("RC_V9958$") |
|
|
|
#ENDIF |
|
|
|
#IF (TMSMODE == TMSMODE_NABU) |
|
|
|
PRTS("NABU$") |
|
|
|
#ENDIF |
|
|
|
; |
|
|
|
PRTS(" IO=0x$") |
|
|
|
LD A,TMS_DATREG |
|
|
|
@ -264,8 +272,8 @@ TMS_INIT1: |
|
|
|
#IF MKYENABLE |
|
|
|
CALL MKY_INIT ; INITIALIZE MKY KEYBOARD DRIVER |
|
|
|
#ENDIF |
|
|
|
#IF (PLATFORM == PLT_NABU) |
|
|
|
CALL NABUKB_INIT |
|
|
|
#IF (TMSMODE == TMSMODE_NABU) |
|
|
|
CALL NABUKB_INIT ; INITIALIZE NABU KEYBOARD DRIVER |
|
|
|
#ENDIF |
|
|
|
|
|
|
|
#IF (INTMODE == 1 & TMSTIMENABLE) |
|
|
|
@ -315,29 +323,27 @@ TMS_FNTBL: |
|
|
|
.DW PPK_STAT |
|
|
|
.DW PPK_FLUSH |
|
|
|
.DW PPK_READ |
|
|
|
#ELSE |
|
|
|
#ENDIF |
|
|
|
#IF ((TMSMODE == TMSMODE_MSXKBD) | (TMSMODE == TMSMODE_MBC) | (TMSMODE == TMSMODE_DUO)) |
|
|
|
.DW KBD_STAT |
|
|
|
.DW KBD_FLUSH |
|
|
|
.DW KBD_READ |
|
|
|
#ELSE |
|
|
|
#ENDIF |
|
|
|
#IF (TMSMODE == TMSMODE_NABU) |
|
|
|
.DW NABUKB_STAT |
|
|
|
.DW NABUKB_FLUSH |
|
|
|
.DW NABUKB_READ |
|
|
|
#ENDIF |
|
|
|
#IF ((TMSMODE == TMSMODE_MSX) | (TMSMODE == TMSMODE_MSX9958) | (TMSMODE == TMSMODE_SCG) | (TMSMODE == TMSMODE_COLECO)) |
|
|
|
#IF MKYENABLE |
|
|
|
.DW MKY_STAT |
|
|
|
.DW MKY_FLUSH |
|
|
|
.DW MKY_READ |
|
|
|
|
|
|
|
#ELSE |
|
|
|
#IF (PLATFORM == PLT_NABU) |
|
|
|
.DW NABUKB_STAT |
|
|
|
.DW NABUKB_FLUSH |
|
|
|
.DW NABUKB_READ |
|
|
|
#ELSE |
|
|
|
.DW TMS_STAT |
|
|
|
.DW TMS_FLUSH |
|
|
|
.DW TMS_READ |
|
|
|
#ENDIF |
|
|
|
#ENDIF |
|
|
|
#ENDIF |
|
|
|
#ENDIF |
|
|
|
.DW TMS_VDARDC |
|
|
|
#IF (($ - TMS_FNTBL) != (VDA_FNCNT * 2)) |
|
|
|
@ -551,7 +557,7 @@ TMS_SET: |
|
|
|
;---------------------------------------------------------------------- |
|
|
|
; |
|
|
|
TMS_WR: |
|
|
|
#IF ((TMSMODE == TMSMODE_MSX9958) | (TMSMODE == TMSMODE_MBC) | (TMSMODE == TMSMODE_DUO)) |
|
|
|
#IF ((TMSMODE == TMSMODE_MSX9958) | (TMSMODE == TMSMODE_MBC) | (TMSMODE == TMSMODE_DUO) | (TMSMODE == TMSMODE_NABU)) |
|
|
|
; CLEAR R#14 FOR V9958 |
|
|
|
XOR A |
|
|
|
OUT (TMS_CMDREG), A |
|
|
|
@ -647,7 +653,7 @@ TMS_CRTINIT2: |
|
|
|
DJNZ TMS_CRTINIT2 ; LOOP |
|
|
|
; |
|
|
|
; ENABLE WAIT SIGNAL IF 9938/58 |
|
|
|
#IF ((TMSMODE == TMSMODE_MSX9958) | (TMSMODE == TMSMODE_MBC) | (TMSMODE == TMSMODE_DUO)) |
|
|
|
#IF ((TMSMODE == TMSMODE_MSX9958) | (TMSMODE == TMSMODE_MBC) | (TMSMODE == TMSMODE_DUO) | (TMSMODE == TMSMODE_NABU)) |
|
|
|
LD C,25 ; REGISTER 25 |
|
|
|
LD A,%00000100 ; ONLY WTE BIT SET |
|
|
|
CALL TMS_SET ; DO IT |
|
|
|
@ -1083,7 +1089,7 @@ TMS_COLOR_TBL .DB $01,$08,$02,$0A,$04,$06,$0C,$0F,$0E,$09,$03,$0B,$05,$0D,$07,$0 |
|
|
|
;================================================================================================== |
|
|
|
; |
|
|
|
TMS_IDAT: |
|
|
|
#IF ((TMSMODE == TMSMODE_MSX) | (TMSMODE == TMSMODE_MSX9958) | (TMSMODE == TMSMODE_N8) | (TMSMODE == TMSMODE_SCG)) |
|
|
|
#IF ((TMSMODE == TMSMODE_N8)) |
|
|
|
.DB TMS_PPIA ; PPI PORT A |
|
|
|
.DB TMS_PPIB ; PPI PORT B |
|
|
|
.DB TMS_PPIC ; PPI PORT C |
|
|
|
@ -1095,6 +1101,9 @@ TMS_IDAT: |
|
|
|
.DB TMS_KBDDATA ; 8242 DATA PORT |
|
|
|
.DB 0 ; FILLER |
|
|
|
#ENDIF |
|
|
|
#IF ((TMSMODE == TMSMODE_MSX) | (TMSMODE == TMSMODE_MSX9958) | (TMSMODE == TMSMODE_SCG) | (TMSMODE == TMSMODE_COLECO) | (TMSMODE == TMSMODE_NABU)) |
|
|
|
.FILL 4,0 ; DUMMY KEYBOARD CONFIG DATA |
|
|
|
#ENDIF |
|
|
|
; |
|
|
|
.DB TMS_DATREG |
|
|
|
.DB TMS_CMDREG |
|
|
|
@ -1141,7 +1150,7 @@ TMS_IDAT: |
|
|
|
; 5S Fifth sprite (not displayed) detected. Value in FS* is valid. |
|
|
|
; INT Set at each screen update, used for interrupts. |
|
|
|
; |
|
|
|
#IF ((TMSMODE == TMSMODE_MSX9958) | (TMSMODE == TMSMODE_MBC) | (TMSMODE == TMSMODE_DUO)) |
|
|
|
#IF ((TMSMODE == TMSMODE_MSX9958) | (TMSMODE == TMSMODE_MBC) | (TMSMODE == TMSMODE_DUO) | (TMSMODE == TMSMODE_NABU)) |
|
|
|
; |
|
|
|
; NOTE: YAMAHA 9938/58 DOCUMENTATION SAYS R3 IS SAME AS 9918 (ADR >> 10), |
|
|
|
; BUT THIS SEEMS TO BE WRONG AND CORRECTLY DOCUMENTED AT |
|
|
|
|