Browse Source

Merge pull request #644 from dinoboards/dean-dev-2026-01-07-fix-vdp-detection

hbios/tms: fix for tms9918 and added detection for 'Super V9958' fpga
pull/646/head
Wayne Warthen 3 weeks ago
committed by GitHub
parent
commit
59694aa936
No known key found for this signature in database GPG Key ID: B5690EEEBB952194
  1. 46
      Source/HBIOS/tms.asm

46
Source/HBIOS/tms.asm

@ -321,22 +321,25 @@ TMS_INIT:
RET RET
; ;
TMS_INIT1: TMS_INIT1:
CALL TMS_CRTINIT ; SETUP THE TMS/V99x8 CHIP REGISTERS
; THIS IS BEST DONE BEFORE DETECTION OF TYPE
; AND VRAM SIZE
CALL PRTSTRD CALL PRTSTRD
.TEXT " VDP=$" .TEXT " VDP=$"
CALL TMS_GETTYP ; A <- 0: TMS9918A, 1: V9938, 2: V9958, x: VDP ID CALL TMS_GETTYP ; A <- 0: TMS9918A, 1: V9938, 2: V9958, x: VDP ID
PUSH AF
CALL TMS_CRTINIT ; SETUP THE TMS/V99x8 CHIP REGISTERS
; THIS IS BEST DONE BEFORE DETECTION OF TYPE
; AND VRAM SIZE
POP AF
INC A INC A
DEC A DEC A
JR NZ, TMS_NOT9918 JR NZ, TMS_NOT9918
CALL PRTSTRD CALL PRTSTRD
.TEXT "TMS9918 VRAM=16KB INTERRUPT=60HZ$" .TEXT "TMS9918 VRAM=16KB INTERRUPT=60HZ$"
JR TMS_INIT3
JR TMS_INIT4
TMS_NOT9918: TMS_NOT9918:
DEC A DEC A
@ -347,9 +350,18 @@ TMS_NOT9918:
JR TMS_INIT2 JR TMS_INIT2
TMS_NOT9938: TMS_NOT9938:
; ASSUME V9958
DEC A
JR NZ, TMS_NOTV9958
CALL PRTSTRD CALL PRTSTRD
.TEXT "V9958$" .TEXT "V9958$"
JR TMS_INIT2
TMS_NOTV9958:
; ASSUME SUPER V9958
CALL PRTSTRD
.TEXT "SUPER V9958 VRAM=8MB$"
JR TMS_INIT3
TMS_INIT2: TMS_INIT2:
CALL PRTSTRD CALL PRTSTRD
@ -361,18 +373,19 @@ TMS_INIT2:
JR NZ, NOT_64K JR NZ, NOT_64K
PRTS("64KB$") PRTS("64KB$")
JR TMS_INIT3
JR TMS_INIT4
NOT_64K: NOT_64K:
DEC A DEC A
JR NZ, NOT_128K JR NZ, NOT_128K
PRTS("128KB$") PRTS("128KB$")
JR TMS_INIT3
JR TMS_INIT4
NOT_128K: NOT_128K:
PRTS("192KB$") PRTS("192KB$")
TMS_INIT3:
#IF (TMSTIMENABLE) #IF (TMSTIMENABLE)
CALL PRTSTRD CALL PRTSTRD
#IF (TICKFREQ == 50) #IF (TICKFREQ == 50)
@ -382,7 +395,7 @@ NOT_128K:
#ENDIF #ENDIF
#ENDIF #ENDIF
TMS_INIT3:
TMS_INIT4:
CALL PC_SPACE CALL PC_SPACE
LD A,TMS_COLS LD A,TMS_COLS
CALL PRTDEC8 CALL PRTDEC8
@ -799,7 +812,7 @@ TMS_PROBE:
; ;
; ASSUMES INTERRUPTS ARE DISABLED (DI) ; ASSUMES INTERRUPTS ARE DISABLED (DI)
; ;
; A <- 0: TMS9918A, 1: V9938, 2: V9958, x: VDP ID
; A <- 0: TMS9918A, 1: V9938, 2: V9958, 3: Super V9958
; F <- z: TMS9918A, nz: other ; F <- z: TMS9918A, nz: other
; ;
TMS_GETTYP: TMS_GETTYP:
@ -815,7 +828,9 @@ TMS_GETTYP:
EZ80_IO EZ80_IO
IN A,(TMS_CMDREG) ; READ S#1 IN A,(TMS_CMDREG) ; READ S#1
AND 00111110B ; GET VDP ID AND 00111110B ; GET VDP ID
RRCA
RRCA ; 00000 - V9938 1
; 00010 - V9958 2
; 10010 - v9958 3
EX AF,AF' EX AF,AF'
XOR A ; RESTORE SELECT REGISTER TO S#0 FOR INT HANDLER XOR A ; RESTORE SELECT REGISTER TO S#0 FOR INT HANDLER
@ -826,7 +841,14 @@ TMS_GETTYP:
OUT (TMS_CMDREG),A OUT (TMS_CMDREG),A
EX AF,AF' EX AF,AF'
RET NZ ; RETURN VDP ID FOR V9958 OR HIGHER
JR Z, TMS_ISV9938
CP 2
RET Z ; RETURN 2 FOR V9958
LD A, 3
RET ; RETURN 3 FOR SUPER V9958
TMS_ISV9938:
INC A ; RETURN 1 FOR V9938 INC A ; RETURN 1 FOR V9938
RET RET
; ;

Loading…
Cancel
Save