From 8c4a3d2b3dbed4c94a56127bf1724b8702b3359e Mon Sep 17 00:00:00 2001 From: Wayne Warthen Date: Fri, 12 Apr 2024 17:04:36 -0700 Subject: [PATCH] Final Video Hardware Reset Changes - Modified TMS driver to always imbed an uncompressed font. This is because I have found no reasonable way to decompress a font while an OS is still active without mangling some of the OSes RAM. --- Source/HBIOS/Config/DUO_std.asm | 5 +++-- Source/HBIOS/cfg_duo.asm | 2 +- Source/HBIOS/hbios.asm | 12 ++++++++++-- Source/HBIOS/tms.asm | 17 ++++++++++------- Source/HBIOS/vga.asm | 4 ++-- Source/ver.inc | 2 +- Source/ver.lib | 2 +- 7 files changed, 28 insertions(+), 16 deletions(-) diff --git a/Source/HBIOS/Config/DUO_std.asm b/Source/HBIOS/Config/DUO_std.asm index 855735ea..be2621d3 100644 --- a/Source/HBIOS/Config/DUO_std.asm +++ b/Source/HBIOS/Config/DUO_std.asm @@ -38,10 +38,11 @@ BATCOND .SET TRUE ; ENABLE LOW BATTERY WARNING MESSAGE ROMSIZE .SET 512 ; SIZE OF ROM IN KB (MUST MATCH YOUR HARDWARE!!!) RAMSIZE .SET 512 ; SIZE OF RAM IN KB (MUST MATCH YOUR HARDWARE!!!) ; -PCFENABLE .SET TRUE ; ENABLE PCF8584 I2C CONTROLLER +PCFENABLE .SET FALSE ; ENABLE PCF8584 I2C CONTROLLER ; MDFFENABLE .SET FALSE ; MD: ENABLE FLASH FILE SYSTEM ; UARTINTS .SET FALSE ; UART: INCLUDE INTERRUPT SUPPORT UNDER IM1/2/3 ; -ESPENABLE .SET TRUE ; ESP: ENABLE ESP32 IO BOARD DRIVER (ESP.ASM) +CHENABLE .SET TRUE ; CH: ENABLE CH375/376 USB SUPPORT +ESPENABLE .SET TRUE ; ESP: ENABLE ESP32 IO BOARD DRIVER (ESP.ASM) diff --git a/Source/HBIOS/cfg_duo.asm b/Source/HBIOS/cfg_duo.asm index 4decaa5c..3ec2732d 100644 --- a/Source/HBIOS/cfg_duo.asm +++ b/Source/HBIOS/cfg_duo.asm @@ -237,7 +237,7 @@ SDTRACE .EQU 1 ; SD: TRACE LEVEL (0=NO,1=ERRORS,2=ALL) SDCSIOFAST .EQU FALSE ; SD: ENABLE TABLE-DRIVEN BIT INVERTER IN CSIO MODE SDMTSWAP .EQU TRUE ; SD: SWAP THE LOGICAL ORDER OF THE SPI PORTS OF THE MT011 ; -CHENABLE .EQU TRUE ; CH: ENABLE CH375/376 USB SUPPORT +CHENABLE .EQU FALSE ; CH: ENABLE CH375/376 USB SUPPORT CHTRACE .EQU 1 ; CH: TRACE LEVEL (0=NO,1=ERRORS,2=ALL) CHUSBTRACE .EQU 1 ; CHUSB: TRACE LEVEL (0=NO,1=ERRORS,2=ALL) CHSDTRACE .EQU 1 ; CHSD: TRACE LEVEL (0=NO,1=ERRORS,2=ALL) diff --git a/Source/HBIOS/hbios.asm b/Source/HBIOS/hbios.asm index 4dee78c9..93b6ec05 100644 --- a/Source/HBIOS/hbios.asm +++ b/Source/HBIOS/hbios.asm @@ -6544,7 +6544,10 @@ ORG_FONTS .EQU $ ; #IFDEF USEFONT8X8 FONT8X8: - #IF USELZSA2 +; +; FOR NOW, WE NEVER COMPRESS THE 8X8 FONT. SEE TMS DRIVER. +; + #IF USELZSA2 & FALSE #INCLUDE "font8x8c.asm" #ELSE #INCLUDE "font8x8u.asm" @@ -8044,7 +8047,7 @@ SLACK .EQU BNKTOP - $ ; ; DIAGNOSE HBIOS BANK OVERFLOW ; -#IF (SLACK<0) +#IF (SLACK < 0) .ECHO "*** ERROR: HBIOS too big!!!\n" !!! ; FORCE AN ASSEMBLY ERROR #ENDIF @@ -8059,6 +8062,11 @@ SLACK .EQU BNKTOP - $ !!! ; FORCE AN ASSEMBLY ERROR #ENDIF ; +;;;#IF (SLACK < (1024 * 3)) +;;; .ECHO "*** ERROR: Low HEAP space!!!\n" +;;; !!! ; FORCE AN ASSEMBLY ERROR +;;;#ENDIF +; #IFDEF ROMBOOT #IF (ROMSIZE > 0) .FILL SLACK diff --git a/Source/HBIOS/tms.asm b/Source/HBIOS/tms.asm index d0efcf93..5477a104 100644 --- a/Source/HBIOS/tms.asm +++ b/Source/HBIOS/tms.asm @@ -352,15 +352,11 @@ TMS_VDARES: CALL TMS_Z180IO #ENDIF CALL TMS_CRTINIT1A -#IF (!USELZSA2) - ; WE WANT TO RELOAD THE FONT ON RESET, BUT THIS IS NOT CURRENTLY - ; POSSIBLE WHEN FONT COMPRESSION IS IN USE. CALL TMS_CLRCUR ; CLEAR CURSOR CALL TMS_LOADFONT ; RELOAD FONT LD A,$FF ; REMOVE LD (TMS_CURSAV),A ; ... SAVED CURSOR CHAR CALL TMS_SETCUR ; RESTORE CURSOR -#ENDIF XOR A RET @@ -672,8 +668,15 @@ TMS_LOADFONT: ; SET WRITE ADDRESS TO TMS_FNTVADDR LD HL,TMS_FNTVADDR CALL TMS_WR - -#IF USELZSA2 +; +; THE USE OF COMPRESSED FONT STORAGE FOR THE TMS DRIVER IS DISABLED +; SO THAT WE CAN RELOAD THE FONT DATA ON USER RESET. THE TMS CHIP +; IS FREQUENTLY REPROGRAMMED BY GAMES, ETC., SO IT IS NECESSARY TO +; REINIT AND RELOAD FONTS. RELOADING A COMPRESSED FONT AFTER +; SYSTEM INITIALIZATION REQUIRES A LARGE DECOMPRESSION BUFFER THAT WE +; HAVE NO WAY TO ACCOMMODATE WITHOUT TRASHING OS/APP MEMORY. +; +#IF USELZSA2 & FALSE LD (TMS_STACK),SP ; SAVE STACK LD HL,(TMS_STACK) ; AND SHIFT IT LD DE,$2000 ; DOWN 4KB TO @@ -701,7 +704,7 @@ TMS_LOADFONT1: OR E JR NZ,TMS_LOADFONT1 ; -#IF USELZSA2 +#IF USELZSA2 & FALSE LD HL,(TMS_STACK) ; ERASE DECOMPRESS BUFFER LD SP,HL ; BY RESTORING THE STACK RET ; DONE diff --git a/Source/HBIOS/vga.asm b/Source/HBIOS/vga.asm index cbe7f6fe..b58da631 100644 --- a/Source/HBIOS/vga.asm +++ b/Source/HBIOS/vga.asm @@ -546,7 +546,7 @@ VGA_LOADFONT: LD HL,$7000 | VGA_89BIT ; CLEAR FONT PAGE NUM CALL VGA_SETCFG -#IF USELZSA2 +#IF USELZSA2 & (VGASIZ != V80X60) LD (VGA_STACK),SP ; SAVE STACK LD HL,(VGA_STACK) ; AND SHIFT IT LD DE,$2000 ; DOWN 4KB TO @@ -583,7 +583,7 @@ VGA_LOADFONT2: LD HL,$7070 | VGA_89BIT ; SET FONT PAGE NUM TO 7 CALL VGA_SETCFG -#IF USELZSA2 +#IF USELZSA2 & (VGASIZ != V80X60) LD HL,(VGA_STACK) ; ERASE DECOMPRESS BUFFER LD SP,HL ; BY RESTORING THE STACK RET ; DONE diff --git a/Source/ver.inc b/Source/ver.inc index aa9bde05..e5d42087 100644 --- a/Source/ver.inc +++ b/Source/ver.inc @@ -2,7 +2,7 @@ #DEFINE RMN 5 #DEFINE RUP 0 #DEFINE RTP 0 -#DEFINE BIOSVER "3.5.0-dev.26" +#DEFINE BIOSVER "3.5.0-dev.27" #define rmj RMJ #define rmn RMN #define rup RUP diff --git a/Source/ver.lib b/Source/ver.lib index b4504981..6aa41d89 100644 --- a/Source/ver.lib +++ b/Source/ver.lib @@ -3,5 +3,5 @@ rmn equ 5 rup equ 0 rtp equ 0 biosver macro - db "3.5.0-dev.26" + db "3.5.0-dev.27" endm