|
|
|
@ -23,17 +23,25 @@ TMSINTEN: .EQU 5 ; INTERRUPT ENABLE BIT |
|
|
|
.ECHO "TMS INTERRUPTS ENABLED\n" |
|
|
|
#ENDIF |
|
|
|
|
|
|
|
#IF ((TMSMODE == TMSMODE_RC) | (TMSMODE == TMSMODE_RCV9958)) |
|
|
|
#IF ((TMSMODE == TMSMODE_MSX) | (TMSMODE == TMSMODE_MSX9958)) |
|
|
|
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_MSXKBD) |
|
|
|
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 $9C ; 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_RCV9958) | (TMSMODE == TMSMODE_MBC)) |
|
|
|
#IF ((TMSMODE == TMSMODE_MSX9958) | (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_RCV9958) | (TMSMODE == TMSMODE_MBC)) |
|
|
|
#IF ((TMSMODE == TMSMODE_MSX9958) | (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_RCKBD) |
|
|
|
#IF (TMSMODE == TMSMODE_MSXKBD) |
|
|
|
PRTS("RCKBD$") |
|
|
|
#ENDIF |
|
|
|
#IF (TMSMODE == TMSMODE_RCV9958) |
|
|
|
#IF (TMSMODE == TMSMODE_MSX9958) |
|
|
|
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_RCKBD) | (TMSMODE == TMSMODE_MBC)) |
|
|
|
#IF ((TMSMODE == TMSMODE_MSXKBD) | (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_RCKBD) | (TMSMODE == TMSMODE_MBC)) |
|
|
|
#IF ((TMSMODE == TMSMODE_MSXKBD) | (TMSMODE == TMSMODE_MBC)) |
|
|
|
.DW KBD_STAT |
|
|
|
.DW KBD_FLUSH |
|
|
|
.DW KBD_READ |
|
|
|
@ -433,7 +437,7 @@ TMS_SET: |
|
|
|
;---------------------------------------------------------------------- |
|
|
|
; |
|
|
|
TMS_WR: |
|
|
|
#IF ((TMSMODE == TMSMODE_RCV9958) | (TMSMODE == TMSMODE_MBC)) |
|
|
|
#IF ((TMSMODE == TMSMODE_MSX9958) | (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_RCV9958) | (TMSMODE == TMSMODE_N8) | (TMSMODE == TMSMODE_SCG)) |
|
|
|
#IF ((TMSMODE == TMSMODE_MSX) | (TMSMODE == TMSMODE_MSX9958) | (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_RCKBD) | (TMSMODE == TMSMODE_MBC)) |
|
|
|
#IF ((TMSMODE == TMSMODE_MSXKBD) | (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: |
|
|
|
|