mirror of
https://github.com/wwarthen/RomWBW.git
synced 2026-02-06 14:11:48 -06:00
Support 40 and 80 Column Video for NABU
- 40 column mode will work with original TMS9918 video chip - 80 column mode requires FPGA TMS video chip replacement
This commit is contained in:
@@ -48,10 +48,6 @@ TMSINTEN: .EQU 5 ; INTERRUPT ENABLE BIT
|
||||
#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
|
||||
;
|
||||
#IF (TMSMODE == TMSMODE_MSX)
|
||||
.ECHO "MSX"
|
||||
@@ -64,10 +60,6 @@ TMS_CMDREG .EQU $99 ; READ STATUS / WRITE REG SEL
|
||||
#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
|
||||
.ECHO "COLECO"
|
||||
#ENDIF
|
||||
;
|
||||
@@ -93,10 +85,6 @@ 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
|
||||
.ECHO "SCG"
|
||||
#ENDIF
|
||||
;
|
||||
@@ -104,10 +92,6 @@ TMS_ACR .EQU $9C ; AUX CONTROL REGISTER
|
||||
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_KBDDATA .EQU $E2 ; KBD CTLR DATA PORT
|
||||
TMS_KBDST .EQU $E3 ; KBD CTLR STATUS/CMD PORT
|
||||
.ECHO "MBC"
|
||||
@@ -117,19 +101,21 @@ 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_KBDDATA .EQU $4C ; KBD CTLR DATA PORT
|
||||
TMS_KBDST .EQU $4D ; KBD CTLR STATUS/CMD PORT
|
||||
.ECHO "DUO"
|
||||
#ENDIF
|
||||
;
|
||||
#IF (TMSMODE == TMSMODE_NABU)
|
||||
#IF ((TMSMODE == TMSMODE_NABU40) | (TMSMODE == TMSMODE_NABU80))
|
||||
TMS_DATREG .EQU $A0 ; READ/WRITE DATA
|
||||
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
|
||||
;
|
||||
.ECHO ", IO="
|
||||
@@ -141,7 +127,7 @@ TMS_CMDREG .EQU $A1 ; READ STATUS / WRITE REG SEL
|
||||
;
|
||||
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_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
|
||||
@@ -168,7 +154,7 @@ PPKENABLE .SET TRUE ; INCLUDE PPK KEYBOARD SUPPORT
|
||||
KBDENABLE .SET TRUE ; INCLUDE KBD KEYBOARD SUPPORT
|
||||
#ENDIF
|
||||
;
|
||||
#IF (TMSMODE == TMSMODE_NABU)
|
||||
#IF ((TMSMODE == TMSMODE_NABU40) |(TMSMODE == TMSMODE_NABU80))
|
||||
NABUKBENABLE .SET TRUE ; INCLUDE NABU KEYBOARD SUPPORT
|
||||
#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) ###
|
||||
#ELSE
|
||||
; 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)
|
||||
#ELSE
|
||||
#DEFINE TMS_IODELAY NOP \ NOP ; 8 W/S
|
||||
@@ -244,8 +230,11 @@ TMS_INIT:
|
||||
#IF (TMSMODE == TMSMODE_MSX9958)
|
||||
PRTS("RC_V9958$")
|
||||
#ENDIF
|
||||
#IF (TMSMODE == TMSMODE_NABU)
|
||||
PRTS("NABU$")
|
||||
#IF (TMSMODE == TMSMODE_NABU40)
|
||||
PRTS("NABU-40$")
|
||||
#ENDIF
|
||||
#IF (TMSMODE == TMSMODE_NABU80)
|
||||
PRTS("NABU-80$")
|
||||
#ENDIF
|
||||
;
|
||||
PRTS(" IO=0x$")
|
||||
@@ -272,7 +261,7 @@ TMS_INIT1:
|
||||
#IF MKYENABLE
|
||||
CALL MKY_INIT ; INITIALIZE MKY KEYBOARD DRIVER
|
||||
#ENDIF
|
||||
#IF (TMSMODE == TMSMODE_NABU)
|
||||
#IF ((TMSMODE == TMSMODE_NABU40) | (TMSMODE == TMSMODE_NABU80))
|
||||
CALL NABUKB_INIT ; INITIALIZE NABU KEYBOARD DRIVER
|
||||
#ENDIF
|
||||
|
||||
@@ -329,7 +318,7 @@ TMS_FNTBL:
|
||||
.DW KBD_FLUSH
|
||||
.DW KBD_READ
|
||||
#ENDIF
|
||||
#IF (TMSMODE == TMSMODE_NABU)
|
||||
#IF ((TMSMODE == TMSMODE_NABU40) | (TMSMODE == TMSMODE_NABU80))
|
||||
.DW NABUKB_STAT
|
||||
.DW NABUKB_FLUSH
|
||||
.DW NABUKB_READ
|
||||
@@ -557,7 +546,7 @@ TMS_SET:
|
||||
;----------------------------------------------------------------------
|
||||
;
|
||||
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
|
||||
XOR A
|
||||
OUT (TMS_CMDREG), A
|
||||
@@ -653,7 +642,7 @@ TMS_CRTINIT2:
|
||||
DJNZ TMS_CRTINIT2 ; LOOP
|
||||
;
|
||||
; 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 A,%00000100 ; ONLY WTE BIT SET
|
||||
CALL TMS_SET ; DO IT
|
||||
@@ -1101,7 +1090,7 @@ 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))
|
||||
#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
|
||||
#ENDIF
|
||||
;
|
||||
@@ -1150,7 +1139,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) | (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),
|
||||
; BUT THIS SEEMS TO BE WRONG AND CORRECTLY DOCUMENTED AT
|
||||
|
||||
Reference in New Issue
Block a user