mirror of
https://github.com/wwarthen/RomWBW.git
synced 2026-02-06 22:13:13 -06:00
TMS: Enable support for using VSYNC interrupt
Use the VSYNC interrupt to trigger the sys timer event
This commit is contained in:
@@ -152,6 +152,7 @@ CVDUENABLE .EQU FALSE ; CVDU: ENABLE CVDU VIDEO/KBD DRIVER (CVDU.ASM)
|
||||
NECENABLE .EQU FALSE ; NEC: ENABLE NEC UPD7220 VIDEO/KBD DRIVER (NEC.ASM)
|
||||
TMSENABLE .EQU FALSE ; TMS: ENABLE TMS9918 VIDEO/KBD DRIVER (TMS.ASM)
|
||||
TMSMODE .EQU TMSMODE_NONE ; TMS: DRIVER MODE: TMSMODE_[SCG/N8]
|
||||
TMSTIMENABLE .EQU FALSE ; TMS: INTERRUPTS NOT ENABLED
|
||||
VGAENABLE .EQU FALSE ; VGA: ENABLE VGA VIDEO/KBD DRIVER (VGA.ASM)
|
||||
VGASIZ .EQU V80X25 ; VGA: DISPLAY FORMAT [V80X25|V80X30|V80X43]
|
||||
;
|
||||
|
||||
@@ -107,6 +107,7 @@ CVDUENABLE .EQU FALSE ; CVDU: ENABLE CVDU VIDEO/KBD DRIVER (CVDU.ASM)
|
||||
NECENABLE .EQU FALSE ; NEC: ENABLE NEC UPD7220 VIDEO/KBD DRIVER (NEC.ASM)
|
||||
TMSENABLE .EQU FALSE ; TMS: ENABLE TMS9918 VIDEO/KBD DRIVER (TMS.ASM)
|
||||
TMSMODE .EQU TMSMODE_SCG ; TMS: DRIVER MODE: TMSMODE_[SCG/N8]
|
||||
TMSTIMENABLE .EQU FALSE ; TMS: INTERRUPTS NOT ENABLED
|
||||
VGAENABLE .EQU FALSE ; VGA: ENABLE VGA VIDEO/KBD DRIVER (VGA.ASM)
|
||||
VGASIZ .EQU V80X25 ; VGA: DISPLAY FORMAT [V80X25|V80X30|V80X43]
|
||||
;
|
||||
|
||||
@@ -110,6 +110,7 @@ CVDUENABLE .EQU FALSE ; CVDU: ENABLE CVDU VIDEO/KBD DRIVER (CVDU.ASM)
|
||||
NECENABLE .EQU FALSE ; NEC: ENABLE NEC UPD7220 VIDEO/KBD DRIVER (NEC.ASM)
|
||||
TMSENABLE .EQU TRUE ; TMS: ENABLE TMS9918 VIDEO/KBD DRIVER (TMS.ASM)
|
||||
TMSMODE .EQU TMSMODE_N8 ; TMS: DRIVER MODE: TMSMODE_[SCG/N8]
|
||||
TMSTIMENABLE .EQU FALSE ; TMS: INTERRUPTS NOT ENABLED
|
||||
VGAENABLE .EQU FALSE ; VGA: ENABLE VGA VIDEO/KBD DRIVER (VGA.ASM)
|
||||
VGASIZ .EQU V80X25 ; VGA: DISPLAY FORMAT [V80X25|V80X30|V80X43]
|
||||
;
|
||||
|
||||
@@ -111,6 +111,7 @@ CVDUENABLE .EQU FALSE ; CVDU: ENABLE CVDU VIDEO/KBD DRIVER (CVDU.ASM)
|
||||
NECENABLE .EQU FALSE ; NEC: ENABLE NEC UPD7220 VIDEO/KBD DRIVER (NEC.ASM)
|
||||
TMSENABLE .EQU FALSE ; TMS: ENABLE TMS9918 VIDEO/KBD DRIVER (TMS.ASM)
|
||||
TMSMODE .EQU TMSMODE_SCG ; TMS: DRIVER MODE: TMSMODE_[SCG/N8]
|
||||
TMSTIMENABLE .EQU FALSE ; TMS: INTERRUPTS NOT ENABLED
|
||||
VGAENABLE .EQU FALSE ; VGA: ENABLE VGA VIDEO/KBD DRIVER (VGA.ASM)
|
||||
VGASIZ .EQU V80X25 ; VGA: DISPLAY FORMAT [V80X25|V80X30|V80X43]
|
||||
;
|
||||
|
||||
@@ -986,6 +986,10 @@ HB_START1: ; BNKCALL ARRIVES HERE, BUT NOW RUNNING IN RAM BANK
|
||||
;
|
||||
; MAKE SURE IM1 INT VECTOR IS RIGHT
|
||||
#IF (INTMODE == 1)
|
||||
#IF (TMSTIMENABLE)
|
||||
CALL TMS_INT_DIS ; SPECIAL CASE - NEED TO STOP TMS9918 FROM FIRING INTERRUPTS
|
||||
#ENDIF ; WHEN DRIVER IS LOADED - IT WILL BE RELOADED
|
||||
|
||||
; JP INT_IM1 IF INTERRUPT MODE ACTIVE
|
||||
LD A,$C3
|
||||
LD ($0038),A
|
||||
|
||||
@@ -186,6 +186,7 @@ AYMODE_RCZ180 .EQU 4 ; RC2014 SOUND MODULE BY ED BRINDLEY ON Z180
|
||||
TMSMODE_NONE .EQU 0
|
||||
TMSMODE_SCG .EQU 1 ; SCG ECB BOARD
|
||||
TMSMODE_N8 .EQU 2 ; N8 BUILT-IN VIDEO
|
||||
TMSMODE_RC2014 .EQU 3 ; RC2014 BUILT-IN VIDEO
|
||||
;
|
||||
; SERIAL DEVICE CONFIGURATION CONSTANTS
|
||||
;
|
||||
|
||||
@@ -14,6 +14,24 @@
|
||||
; TMS DRIVER - CONSTANTS
|
||||
;======================================================================
|
||||
;
|
||||
|
||||
TMSCTRL1: .EQU 1 ; CONTROL BITS
|
||||
TMSINTEN: .EQU 5 ; INTERRUPT ENABLE BIT
|
||||
|
||||
#IF TMSTIMENABLE
|
||||
.ECHO "TMS INTERRUPTS ENABLED"
|
||||
#ENDIF
|
||||
|
||||
#IF (TMSMODE == TMSMODE_RC2014)
|
||||
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_N8)
|
||||
|
||||
TMS_DATREG .EQU $98 ; READ/WRITE DATA
|
||||
@@ -93,6 +111,17 @@ TMS_INIT1:
|
||||
#IF (TMSMODE == TMSMODE_N8)
|
||||
CALL PPK_INIT ; INITIALIZE KEYBOARD DRIVER
|
||||
#ENDIF
|
||||
#IF (INTMODE == 1 & TMSTIMENABLE)
|
||||
; ADD IM1 INT CALL LIST ENTRY
|
||||
LD HL, TMS_TSTINT ; GET INT VECTOR
|
||||
CALL HB_ADDIM1 ; ADD TO IM1 CALL LIST
|
||||
|
||||
LD A, (TMS_INIT9918_REG_1)
|
||||
SET TMSINTEN, A ; SET INTERRUPT ENABLE BIT
|
||||
LD (TMS_INIT9918_REG_1), A
|
||||
LD C, TMSCTRL1
|
||||
CALL TMS_SET
|
||||
#ENDIF
|
||||
;
|
||||
; ADD OURSELVES TO VDA DISPATCH TABLE
|
||||
LD BC,TMS_FNTBL ; BC := FUNCTION TABLE ADDRESS
|
||||
@@ -107,6 +136,23 @@ TMS_INIT1:
|
||||
;
|
||||
XOR A ; SIGNAL SUCCESS
|
||||
RET
|
||||
|
||||
#IFDEF APPBOOT
|
||||
#IF TMSTIMENABLE
|
||||
; SPECIAL CASE FOR APPBOOT - NEEDING TO DISABLE INTERRUPT GENERATOR
|
||||
; ISSUE:
|
||||
; IF THE CURRENT ROMBOOT HAD LOADED THE TMS DRIVER
|
||||
; THEN THE ROMLOADER MAY START RECEIVING INTERRUPTS
|
||||
; FROM THE CHIP BEFORE THE TMS DRIVER HAS BEEN RE-
|
||||
; INITALISED, AND CAUSING BAD INT PANICS
|
||||
TMS_INT_DIS:
|
||||
LD A, (TMS_INIT9918_REG_1)
|
||||
RES TMSINTEN, A ; RESET INTERRUPT ENABLE BIT
|
||||
LD (TMS_INIT9918_REG_1), A
|
||||
LD C, TMSCTRL1
|
||||
JP TMS_SET
|
||||
#ENDIF
|
||||
#ENDIF
|
||||
;
|
||||
;======================================================================
|
||||
; TMS DRIVER - VIDEO DISPLAY ADAPTER (VDA) FUNCTIONS
|
||||
@@ -745,6 +791,20 @@ TMS_Z180IOX:
|
||||
RET ; DONE
|
||||
;
|
||||
#ENDIF
|
||||
|
||||
#IF (INTMODE == 1 & TMSTIMENABLE)
|
||||
TMS_TSTINT:
|
||||
IN A, (TMS_CMDREG) ; TEST FOR INT FLAG
|
||||
AND $80
|
||||
JR NZ, TMS_INTHNDL
|
||||
AND $00 ; RETURN Z - NOT HANDLED
|
||||
RET
|
||||
|
||||
TMS_INTHNDL:
|
||||
CALL HB_TIMINT ; RETURN NZ - HANDLED
|
||||
OR $FF
|
||||
RET
|
||||
#ENDIF
|
||||
;
|
||||
;==================================================================================================
|
||||
; TMS DRIVER - DATA
|
||||
@@ -798,6 +858,7 @@ TMS_BUF .FILL 256,0 ; COPY BUFFER
|
||||
;
|
||||
TMS_INIT9918:
|
||||
.DB $00 ; REG 0 - NO EXTERNAL VID
|
||||
TMS_INIT9918_REG_1:
|
||||
.DB $50 ; REG 1 - ENABLE SCREEN, SET MODE 1
|
||||
.DB $00 ; REG 2 - PATTERN NAME TABLE := 0
|
||||
.DB $00 ; REG 3 - NO COLOR TABLE
|
||||
|
||||
Reference in New Issue
Block a user