@ -23,17 +23,25 @@ TMSINTEN: .EQU 5 ; INTERRUPT ENABLE BIT
.ECHO "TMS INTERRUPTS ENABLED\n"
# ENDIF
# IF (( TMSMODE = = TMSMODE_RC ) | ( TMSMODE = = TMSMODE_RCV 9958 ))
# IF (( TMSMODE = = TMSMODE_MSX ) | ( TMSMODE = = TMSMODE_MSX 9958 ))
TMS_DATREG .EQU $ 98 ; READ/WRITE DATA
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
# ENDIF
# 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
# ENDIF
# IF ( TMSMODE = = TMSMODE_RCKBD )
# IF ( TMSMODE = = TMSMODE_MSX KBD )
TMS_DATREG .EQU $ 98 ; READ/WRITE DATA
TMS_CMDREG .EQU $ 99 ; READ STATUS / WRITE REG SEL
TMS_KBDDATA .EQU $ E0 ; KBD CTLR DATA PORT
@ -41,18 +49,15 @@ TMS_KBDST .EQU $E1 ; KBD CTLR STATUS/CMD PORT
# ENDIF
# IF ( TMSMODE = = TMSMODE_N8 )
TMS_DATREG .EQU $ 98 ; READ/WRITE DATA
TMS_CMDREG .EQU $ 99 ; READ STATUS / WRITE REG SEL
TMS_PPIA .EQU $ 84 ; PPI PORT A
TMS_PPIB .EQU $ 85 ; PPI PORT B
TMS_PPIC .EQU $ 86 ; PPI PORT C
TMS_PPIX .EQU $ 87 ; PPI CONTROL PORT
# ENDIF
# IF ( TMSMODE = = TMSMODE_SCG )
TMS_DATREG .EQU $ 98 ; READ/WRITE DATA
TMS_CMDREG .EQU $ 99 ; READ STATUS / WRITE REG SEL
TMS_ACR .EQU $ 9 C ; AUX CONTROL REGISTER
@ -60,7 +65,6 @@ 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
# ENDIF
;
# IF ( TMSMODE = = TMSMODE_MBC )
@ -78,7 +82,7 @@ TMS_KBDST .EQU $E3 ; KBD CTLR STATUS/CMD PORT
TMS_ROWS .EQU 24
# IF (( TMSMODE = = TMSMODE_RCV 9958 ) | ( TMSMODE = = TMSMODE_MBC ))
# IF (( TMSMODE = = TMSMODE_MSX 9958 ) | ( TMSMODE = = TMSMODE_MBC ))
TMS_FNTVADDR .EQU $ 1000 ; VRAM ADDRESS OF FONT DATA
TMS_COLS .EQU 80
# ELSE
@ -99,7 +103,7 @@ TERMENABLE .SET TRUE ; INCLUDE TERMINAL PSEUDODEVICE DRIVER
# DEFINE TMS_IODELAY EX ( SP ), HL \ EX ( SP ), HL ; 38 W/S
# ELSE
; BELOW WAS TUNED FOR SBC AT 8MHZ
# IF (( TMSMODE = = TMSMODE_RCV 9958 ) | ( TMSMODE = = TMSMODE_MBC ))
# IF (( TMSMODE = = TMSMODE_MSX 9958 ) | ( TMSMODE = = TMSMODE_MBC ))
# 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
@ -148,13 +152,13 @@ TMS_INIT:
# IF ( TMSMODE = = TMSMODE_N8 )
PRTS ( "N8$" )
# ENDIF
# IF ( TMSMODE = = TMSMODE_RC )
# IF ( TMSMODE = = TMSMODE_MSX )
PRTS ( "RC$" )
# ENDIF
# IF ( TMSMODE = = TMSMODE_RC KBD )
# IF ( TMSMODE = = TMSMODE_MSX KBD )
PRTS ( "RCKBD$" )
# ENDIF
# IF ( TMSMODE = = TMSMODE_RCV 9958 )
# IF ( TMSMODE = = TMSMODE_MSX 9958 )
PRTS ( "RC_V9958$" )
# ENDIF
;
@ -176,7 +180,7 @@ TMS_INIT1:
# IF ( TMSMODE = = TMSMODE_N8 )
CALL PPK_INIT ; INITIALIZE PPI KEYBOARD DRIVER
# ENDIF
# IF (( TMSMODE = = TMSMODE_RC KBD ) | ( TMSMODE = = TMSMODE_MBC ))
# IF (( TMSMODE = = TMSMODE_MSX KBD ) | ( TMSMODE = = TMSMODE_MBC ))
CALL KBD_INIT ; INITIALIZE 8242 KEYBOARD DRIVER
# ENDIF
# IF MKYENABLE
@ -231,7 +235,7 @@ TMS_FNTBL:
.DW PPK_FLUSH
.DW PPK_READ
# ELSE
# IF (( TMSMODE = = TMSMODE_RC KBD ) | ( TMSMODE = = TMSMODE_MBC ))
# IF (( TMSMODE = = TMSMODE_MSX KBD ) | ( TMSMODE = = TMSMODE_MBC ))
.DW KBD_STAT
.DW KBD_FLUSH
.DW KBD_READ
@ -433,7 +437,7 @@ TMS_SET:
;----------------------------------------------------------------------
;
TMS_WR:
# IF (( TMSMODE = = TMSMODE_RCV 9958 ) | ( TMSMODE = = TMSMODE_MBC ))
# IF (( TMSMODE = = TMSMODE_MSX 9958 ) | ( TMSMODE = = TMSMODE_MBC ))
; CLEAR R#14 FOR V9958
XOR A
OUT ( TMS_CMDREG ), A
@ -918,13 +922,13 @@ TMS_BUF .FILL 256,0 ; COPY BUFFER
;
TMS_IDAT:
# IF (( TMSMODE = = TMSMODE_RC ) | ( TMSMODE = = TMSMODE_RCV 9958 ) | ( TMSMODE = = TMSMODE_N8 ) | ( TMSMODE = = TMSMODE_SCG ))
# IF (( TMSMODE = = TMSMODE_MSX ) | ( TMSMODE = = TMSMODE_MSX 9958 ) | ( TMSMODE = = TMSMODE_N8 ) | ( TMSMODE = = TMSMODE_SCG ))
.DB TMS_PPIA ; PPI PORT A
.DB TMS_PPIB ; PPI PORT B
.DB TMS_PPIC ; PPI PORT C
.DB TMS_PPIX ; PPI CONTROL PORT
# ENDIF
# IF (( TMSMODE = = TMSMODE_RC KBD ) | ( TMSMODE = = TMSMODE_MBC ))
# IF (( TMSMODE = = TMSMODE_MSX KBD ) | ( TMSMODE = = TMSMODE_MBC ))
.DB TMS_KBDST ; 8242 CMD/STATUS PORT
.DB TMS_KBDDATA ; 8242 DATA PORT
.DB 0 ; FILLER
@ -976,7 +980,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_RCV9958 ) | ( TMSMODE = = TMSMODE_MBC ))
# IF (( TMSMODE = = TMSMODE_MSX9958 ) | ( TMSMODE = = TMSMODE_MBC ))
TMS_INITVDU:
.DB $ 04 ; REG 0 - NO EXTERNAL VID, SET M4 = 1
TMS_INITVDU_REG_1: