|
|
@ -3,6 +3,7 @@ |
|
|
; |
|
|
; |
|
|
; WRITTEN BY: DOUGLAS GOODALL |
|
|
; WRITTEN BY: DOUGLAS GOODALL |
|
|
; UPDATED BY: WAYNE WARTHEN -- 4/7/2013 |
|
|
; UPDATED BY: WAYNE WARTHEN -- 4/7/2013 |
|
|
|
|
|
; UPDATED BY: DEAN NETHERTON -- 5/26/2021 - V9958 SUPPORT |
|
|
;====================================================================== |
|
|
;====================================================================== |
|
|
; |
|
|
; |
|
|
; TODO: |
|
|
; TODO: |
|
|
@ -19,7 +20,7 @@ TMSCTRL1: .EQU 1 ; CONTROL BITS |
|
|
TMSINTEN: .EQU 5 ; INTERRUPT ENABLE BIT |
|
|
TMSINTEN: .EQU 5 ; INTERRUPT ENABLE BIT |
|
|
|
|
|
|
|
|
#IF TMSTIMENABLE |
|
|
#IF TMSTIMENABLE |
|
|
.ECHO "TMS/V9958 INTERRUPTS ENABLED\n" |
|
|
|
|
|
|
|
|
.ECHO "TMS INTERRUPTS ENABLED\n" |
|
|
#ENDIF |
|
|
#ENDIF |
|
|
|
|
|
|
|
|
#IF ((TMSMODE == TMSMODE_RC) | (TMSMODE == TMSMODE_RCV9958)) |
|
|
#IF ((TMSMODE == TMSMODE_RC) | (TMSMODE == TMSMODE_RCV9958)) |
|
|
@ -93,9 +94,9 @@ TERMENABLE .SET TRUE ; INCLUDE TERMINAL PSEUDODEVICE DRIVER |
|
|
; |
|
|
; |
|
|
TMS_PREINIT: |
|
|
TMS_PREINIT: |
|
|
; DISABLE INTERRUPT GENERATION |
|
|
; DISABLE INTERRUPT GENERATION |
|
|
LD A, (TMS_INIT9918_REG_1) |
|
|
|
|
|
|
|
|
LD A, (TMS_INITVDU_REG_1) |
|
|
RES TMSINTEN, A ; RESET INTERRUPT ENABLE BIT |
|
|
RES TMSINTEN, A ; RESET INTERRUPT ENABLE BIT |
|
|
LD (TMS_INIT9918_REG_1), A |
|
|
|
|
|
|
|
|
LD (TMS_INITVDU_REG_1), A |
|
|
LD C, TMSCTRL1 |
|
|
LD C, TMSCTRL1 |
|
|
JP TMS_SET |
|
|
JP TMS_SET |
|
|
; |
|
|
; |
|
|
@ -112,11 +113,21 @@ TMS_INIT: |
|
|
LD IY,TMS_IDAT ; POINTER TO INSTANCE DATA |
|
|
LD IY,TMS_IDAT ; POINTER TO INSTANCE DATA |
|
|
; |
|
|
; |
|
|
CALL NEWLINE ; FORMATTING |
|
|
CALL NEWLINE ; FORMATTING |
|
|
|
|
|
PRTS("TMS: MODE=$") |
|
|
|
|
|
#IF (TMSMODE == TMSMODE_SCG) |
|
|
|
|
|
PRTS("SCG$") |
|
|
|
|
|
#ENDIF |
|
|
|
|
|
#IF (TMSMODE == TMSMODE_N8) |
|
|
|
|
|
PRTS("N8$") |
|
|
|
|
|
#ENDIF |
|
|
|
|
|
#IF (TMSMODE == TMSMODE_RC) |
|
|
|
|
|
PRTS("RC$") |
|
|
|
|
|
#ENDIF |
|
|
#IF (TMSMODE == TMSMODE_RCV9958) |
|
|
#IF (TMSMODE == TMSMODE_RCV9958) |
|
|
PRTS("V9958: IO=0x$") |
|
|
|
|
|
#ELSE |
|
|
|
|
|
PRTS("TMS: IO=0x$") |
|
|
|
|
|
|
|
|
PRTS("RC_V9958$") |
|
|
#ENDIF |
|
|
#ENDIF |
|
|
|
|
|
; |
|
|
|
|
|
PRTS(" IO=0x$") |
|
|
LD A,TMS_DATREG |
|
|
LD A,TMS_DATREG |
|
|
CALL PRTHEXBYTE |
|
|
CALL PRTHEXBYTE |
|
|
CALL TMS_PROBE ; CHECK FOR HW EXISTENCE |
|
|
CALL TMS_PROBE ; CHECK FOR HW EXISTENCE |
|
|
@ -134,7 +145,7 @@ TMS_INIT1: |
|
|
#IF (TMSMODE == TMSMODE_N8) |
|
|
#IF (TMSMODE == TMSMODE_N8) |
|
|
CALL PPK_INIT ; INITIALIZE KEYBOARD DRIVER |
|
|
CALL PPK_INIT ; INITIALIZE KEYBOARD DRIVER |
|
|
#ELSE |
|
|
#ELSE |
|
|
#IF MSKENABLE |
|
|
|
|
|
|
|
|
#IF MKYENABLE |
|
|
CALL MKY_INIT |
|
|
CALL MKY_INIT |
|
|
#ENDIF |
|
|
#ENDIF |
|
|
#ENDIF |
|
|
#ENDIF |
|
|
@ -144,9 +155,9 @@ TMS_INIT1: |
|
|
LD HL, TMS_TSTINT ; GET INT VECTOR |
|
|
LD HL, TMS_TSTINT ; GET INT VECTOR |
|
|
CALL HB_ADDIM1 ; ADD TO IM1 CALL LIST |
|
|
CALL HB_ADDIM1 ; ADD TO IM1 CALL LIST |
|
|
|
|
|
|
|
|
LD A, (TMS_INIT9918_REG_1) |
|
|
|
|
|
|
|
|
LD A, (TMS_INITVDU_REG_1) |
|
|
SET TMSINTEN, A ; SET INTERRUPT ENABLE BIT |
|
|
SET TMSINTEN, A ; SET INTERRUPT ENABLE BIT |
|
|
LD (TMS_INIT9918_REG_1), A |
|
|
|
|
|
|
|
|
LD (TMS_INITVDU_REG_1), A |
|
|
LD C, TMSCTRL1 |
|
|
LD C, TMSCTRL1 |
|
|
CALL TMS_SET |
|
|
CALL TMS_SET |
|
|
#ENDIF |
|
|
#ENDIF |
|
|
@ -187,7 +198,7 @@ TMS_FNTBL: |
|
|
.DW PPK_FLUSH |
|
|
.DW PPK_FLUSH |
|
|
.DW PPK_READ |
|
|
.DW PPK_READ |
|
|
#ELSE |
|
|
#ELSE |
|
|
#IF MSKENABLE |
|
|
|
|
|
|
|
|
#IF MKYENABLE |
|
|
.DW MKY_STAT |
|
|
.DW MKY_STAT |
|
|
.DW MKY_FLUSH |
|
|
.DW MKY_FLUSH |
|
|
.DW MKY_READ |
|
|
.DW MKY_READ |
|
|
@ -239,11 +250,7 @@ TMS_VDARES1: ; ENTRY POINT TO AVOID TMS_Z180IO RECURSION |
|
|
RET |
|
|
RET |
|
|
|
|
|
|
|
|
TMS_VDADEV: |
|
|
TMS_VDADEV: |
|
|
#IF (TMSMODE == TMSMODE_RCV9958) |
|
|
|
|
|
LD D, VDADEV_V9958 |
|
|
|
|
|
#ELSE |
|
|
|
|
|
LD D,VDADEV_TMS ; D := DEVICE TYPE |
|
|
LD D,VDADEV_TMS ; D := DEVICE TYPE |
|
|
#ENDIF |
|
|
|
|
|
LD E,0 ; E := PHYSICAL UNIT IS ALWAYS ZERO |
|
|
LD E,0 ; E := PHYSICAL UNIT IS ALWAYS ZERO |
|
|
LD H,TMSMODE ; H := MODE |
|
|
LD H,TMSMODE ; H := MODE |
|
|
LD L,TMS_DATREG ; L := BASE I/O ADDRESS |
|
|
LD L,TMS_DATREG ; L := BASE I/O ADDRESS |
|
|
@ -456,8 +463,8 @@ TMS_CRTINIT1: |
|
|
; |
|
|
; |
|
|
; INITIALIZE VDU REGISTERS |
|
|
; INITIALIZE VDU REGISTERS |
|
|
LD C,0 ; START WITH REGISTER 0 |
|
|
LD C,0 ; START WITH REGISTER 0 |
|
|
LD B,TMS_INIT9918LEN ; NUMBER OF REGISTERS TO INIT |
|
|
|
|
|
LD HL,TMS_INIT9918 ; HL = POINTER TO THE DEFAULT VALUES |
|
|
|
|
|
|
|
|
LD B,TMS_INITVDULEN ; NUMBER OF REGISTERS TO INIT |
|
|
|
|
|
LD HL,TMS_INITVDU ; HL = POINTER TO THE DEFAULT VALUES |
|
|
TMS_CRTINIT2: |
|
|
TMS_CRTINIT2: |
|
|
LD A,(HL) ; GET VALUE |
|
|
LD A,(HL) ; GET VALUE |
|
|
CALL TMS_SET ; WRITE IT |
|
|
CALL TMS_SET ; WRITE IT |
|
|
@ -837,7 +844,7 @@ TMS_TSTINT: |
|
|
|
|
|
|
|
|
TMS_INTHNDL: |
|
|
TMS_INTHNDL: |
|
|
|
|
|
|
|
|
#IF MSKENABLE |
|
|
|
|
|
|
|
|
#IF MKYENABLE |
|
|
CALL MKY_INT |
|
|
CALL MKY_INT |
|
|
#ENDIF |
|
|
#ENDIF |
|
|
|
|
|
|
|
|
@ -913,9 +920,9 @@ TMS_PORTS: |
|
|
; INT Set at each screen update, used for interrupts. |
|
|
; INT Set at each screen update, used for interrupts. |
|
|
; |
|
|
; |
|
|
#IF (TMSMODE == TMSMODE_RCV9958) |
|
|
#IF (TMSMODE == TMSMODE_RCV9958) |
|
|
TMS_INIT9918: |
|
|
|
|
|
|
|
|
TMS_INITVDU: |
|
|
.DB $04 ; REG 0 - NO EXTERNAL VID, SET M4 = 1 |
|
|
.DB $04 ; REG 0 - NO EXTERNAL VID, SET M4 = 1 |
|
|
TMS_INIT9918_REG_1: |
|
|
|
|
|
|
|
|
TMS_INITVDU_REG_1: |
|
|
.DB $50 ; REG 1 - ENABLE SCREEN, SET MODE 1 |
|
|
.DB $50 ; REG 1 - ENABLE SCREEN, SET MODE 1 |
|
|
.DB $03 ; REG 2 - PATTERN NAME TABLE := 0 |
|
|
.DB $03 ; REG 2 - PATTERN NAME TABLE := 0 |
|
|
.DB $00 ; REG 3 - NO COLOR TABLE |
|
|
.DB $00 ; REG 3 - NO COLOR TABLE |
|
|
@ -929,9 +936,9 @@ TMS_INIT9918_REG_1: |
|
|
.DB $00 ; REG 10 - COLOUR TABLE A14-A16 (TMS_FNTVADDR - $1000) |
|
|
.DB $00 ; REG 10 - COLOUR TABLE A14-A16 (TMS_FNTVADDR - $1000) |
|
|
|
|
|
|
|
|
#ELSE ; TMS REGISTER SET |
|
|
#ELSE ; TMS REGISTER SET |
|
|
TMS_INIT9918: |
|
|
|
|
|
|
|
|
TMS_INITVDU: |
|
|
.DB $00 ; REG 0 - NO EXTERNAL VID |
|
|
.DB $00 ; REG 0 - NO EXTERNAL VID |
|
|
TMS_INIT9918_REG_1: |
|
|
|
|
|
|
|
|
TMS_INITVDU_REG_1: |
|
|
.DB $50 ; REG 1 - ENABLE SCREEN, SET MODE 1 |
|
|
.DB $50 ; REG 1 - ENABLE SCREEN, SET MODE 1 |
|
|
.DB $00 ; REG 2 - PATTERN NAME TABLE := 0 |
|
|
.DB $00 ; REG 2 - PATTERN NAME TABLE := 0 |
|
|
.DB $00 ; REG 3 - NO COLOR TABLE |
|
|
.DB $00 ; REG 3 - NO COLOR TABLE |
|
|
@ -941,17 +948,13 @@ TMS_INIT9918_REG_1: |
|
|
.DB $F0 ; REG 7 - WHITE ON BLACK |
|
|
.DB $F0 ; REG 7 - WHITE ON BLACK |
|
|
#ENDIF |
|
|
#ENDIF |
|
|
; |
|
|
; |
|
|
TMS_INIT9918LEN .EQU $ - TMS_INIT9918 |
|
|
|
|
|
|
|
|
TMS_INITVDULEN .EQU $ - TMS_INITVDU |
|
|
; |
|
|
; |
|
|
; |
|
|
; |
|
|
#IF (CPUFAM == CPU_Z180) |
|
|
#IF (CPUFAM == CPU_Z180) |
|
|
TMS_DCNTL .DB $00 ; SAVE Z180 DCNTL AS NEEDED |
|
|
TMS_DCNTL .DB $00 ; SAVE Z180 DCNTL AS NEEDED |
|
|
#ENDIF |
|
|
#ENDIF |
|
|
|
|
|
|
|
|
#IF (TMSMODE == TMSMODE_RCV9958) |
|
|
|
|
|
.ECHO "V9958 instance data occupies " |
|
|
|
|
|
#ELSE |
|
|
|
|
|
|
|
|
; |
|
|
.ECHO "TMS instance data occupies " |
|
|
.ECHO "TMS instance data occupies " |
|
|
#ENDIF |
|
|
|
|
|
.ECHO $ - TMS_IDAT |
|
|
.ECHO $ - TMS_IDAT |
|
|
.ECHO " bytes\n" |
|
|
.ECHO " bytes\n" |
|
|
|