From ab7c56627041cb9a09adb97cafc2e4d65cae5644 Mon Sep 17 00:00:00 2001 From: Wayne Warthen Date: Wed, 25 Jun 2025 12:35:24 -0700 Subject: [PATCH 1/4] Abstraction of Font File Processing Moved common font data file processing (including decompression) into core code and removed redundant code from VDA drivers. --- Source/HBIOS/cvdu.asm | 52 ++++++--------- Source/HBIOS/hbios.asm | 146 ++++++++++++++++++++++++++++++++++++----- Source/HBIOS/tms.asm | 31 ++------- Source/HBIOS/vga.asm | 43 ++++-------- Source/HBIOS/vrc.asm | 56 ++-------------- 5 files changed, 178 insertions(+), 150 deletions(-) diff --git a/Source/HBIOS/cvdu.asm b/Source/HBIOS/cvdu.asm index 2b5b6298..b432515f 100644 --- a/Source/HBIOS/cvdu.asm +++ b/Source/HBIOS/cvdu.asm @@ -50,11 +50,13 @@ CVDU_COLS .EQU 80 #IF (CVDUMON == CVDUMON_CGA) #DEFINE USEFONT8X8 #DEFINE CVDU_FONT FONT8X8 +CVDU_FONTID .EQU FONTID_8X8 #ENDIF ; #IF (CVDUMON == CVDUMON_EGA) #DEFINE USEFONT8X16 #DEFINE CVDU_FONT FONT8X16 +CVDU_FONTID .EQU FONTID_8X16 #ENDIF ; TERMENABLE .SET TRUE ; INCLUDE TERMINAL PSEUDODEVICE DRIVER @@ -105,6 +107,7 @@ CVDU_INIT1: CALL PRTDEC PRTS("KB$") CALL CVDU_LOADFONT ; LOAD FONT DATA FROM ROM TO CVDU STRORAGE + ; *** DIAGNOSE FONT LOAD ERROR HERE!!! *** CALL CVDU_VDAINI CALL KBD_INIT ; INITIALIZE KEYBOARD DRIVER @@ -494,48 +497,35 @@ CVDU_LOADFONT: LD HL,$2000 ; START OF FONT BUFFER LD C,18 ; UPDATE ADDRESS REGISTER PAIR CALL CVDU_WRX ; DO IT - -#IF USELZSA2 - LD (CVDU_STACK),SP ; SAVE STACK - LD HL,(CVDU_STACK) ; AND SHIFT IT - LD DE,$2000 ; DOWN 4KB TO - OR A ; CREATE A - SBC HL,DE ; DECOMPRESSION BUFFER - LD SP,HL ; HL POINTS TO BUFFER - EX DE,HL ; START OF STACK BUFFER - PUSH DE ; SAVE IT - LD HL,CVDU_FONT ; START OF FONT DATA - CALL DLZSA2 ; DECOMPRESS TO DE - POP HL ; RECALL STACK BUFFER POSITION -#ELSE - LD HL,CVDU_FONT ; START OF FONT DATA -#ENDIF - +; + LD A,CVDU_FONTID ; DESIRED FONT + CALL FNT_SELECT ; SELECT IT + RET NZ ; ERROR RETURN +; LD DE,$2000 ; LENGTH OF FONT DATA LD C,31 ; DATA REGISTER +; CVDU_LOADFONT1: - LD A,(HL) ; LOAD NEXT BYTE OF FONT DATA - CALL CVDU_WR ; WRITE IT +; DEC DE ; DECREMENT LOOP COUNTER #IF (CVDUMON == CVDUMON_CGA) ; SKIP ALTERNATING 8 BYTE PAIRS (SEE COMMENT ABOVE) + ; WE ONLY GET NEXT REAL FONT BYTE IF BIT 3 OF COUNTER IS SET. BIT 3,E ; BIT 3 CHANGES WITH EVERY 8 BYTES - JR Z,CVDU_LOADFONT2 ; WHEN ZERO, DON'T INC FONT PTR + CALL NZ,FNT_NEXT ; LOAD NEXT FONT BYTE ONLY IF BIT IS ON +#ELSE + CALL FNT_NEXT ; LOAD NEXT FONT BYTE #ENDIF - INC HL ; INCREMENT FONT DATA POINTER -CVDU_LOADFONT2: +; + CALL CVDU_WR ; WRITE IT LD A,D ; CHECK DE... OR E ; FOR COUNTER EXHAUSTED - JR NZ,CVDU_LOADFONT1 ; LOOP TILL DONE - -#IF USELZSA2 - LD HL,(CVDU_STACK) ; ERASE DECOMPRESS BUFFER - LD SP,HL ; BY RESTORING THE STACK - RET ; DONE -CVDU_STACK .DW 0 -#ELSE + JR Z,CVDU_LOADFONT3 ; BAIL OUT IF DONE + JR CVDU_LOADFONT1 ; LOOP TILL DONE +; +CVDU_LOADFONT3: + XOR A ; SIGNAL SUCCESS RET -#ENDIF ; ;---------------------------------------------------------------------- ; SET CURSOR POSITION TO ROW IN D AND COLUMN IN E diff --git a/Source/HBIOS/hbios.asm b/Source/HBIOS/hbios.asm index d5781f95..e3388618 100644 --- a/Source/HBIOS/hbios.asm +++ b/Source/HBIOS/hbios.asm @@ -8290,6 +8290,104 @@ HB_CPUSPD2: HB_UTIL_END .EQU $ ; ;================================================================================================== +; FONT MANAGEMENT ROUTINES +;================================================================================================== +; +; SELECT A FONT BASED ON THE FONT ID PASSED IN REGISTER A. THIS WILL +; PREPARE TO STREAM FONT DATA VIA THE FNT_NEXT ROUTINE. USES DE, AND +; HL. +; +FNT_SELECT: + ; THE MAP IS CURRENTLY ASSUMED TO BE IN THE HBIOS BANK + LD E,A ; DESIRED FONT ID TO E + LD HL,FNT_MAP ; POINT TO START OF MAP + LD A,(HL) ; LOAD THE FONT ID + AND $7F ; REMOVE COMPRESSION BIT 7 + OR A ; CHECK OF END OF TABLE + JR Z,FNT_SELECT_ERR ; IF SO, BAIL OUT W/ ERR + CP E ; CHECK FOR DESIRED FONT ID + JR Z,FNT_SELECT1 ; IF SO, LOCK IT IN + INC HL ; BUMP PAST FONT ID + INC HL ; BUMP TO + INC HL ; ... NEXT TABLE ENTRY + JR FNT_SELECT ; AND LOOP +; +FNT_SELECT1: + LD E,(HL) ; GET FONT ID BYTE + INC HL ; BUMP PAST FONT ID + LD A,BID_BIOS ; FOR NOW, ASSUME FONT IN HBIOS + LD (FNT_BID),A ; SAVE IT + LD A,(HL) ; DEREF HL + INC HL + LD H,(HL) + LD L,A + BIT 7,E ; COMPRESSED FONT DATA? + JR Z,FNT_SELECT2 ; IF NOT, SKIP DECOMP +; +#IF ((CVDUENABLE | GDCENABLE | TMSENABLE | VGAENABLE | VRCENABLE) & USELZSA2) + ; BELOW DOES NOT YET HANDLE COMPRESSED FONT DATA IN ROM!!! + PUSH HL ; SAVE COMP DATA PTR + LD HL,0 ; COPY SP + ADD HL,SP ; ... TO HL + LD DE,$2100 ; SPACE FOR DECOMP BUF AND STACK + CCF ; CLEAR CARRY + SBC HL,DE ; HL IS START OF DECOMP BUF + POP DE ; RECOVER COMP DATA PTR + EX DE,HL ; SWAP + PUSH DE ; SAVE START OF DECOMP BUF + CALL DLZSA2 ; DECOMP + POP HL ; START OF DECOMP BUF +#ELSE + JR FNT_SELECT_ERR ; OOPS, CAN'T DECOMPRESS +#ENDIF +; +FNT_SELECT2: + LD (FNT_PTR),HL ; SAVE STARTING POINTER + XOR A ; SIGNAL SUCCESS + RET + +FNT_SELECT_ERR: + OR $FF ; SIGNAL FAILURE + RET +; +; RETURN THE NEXT BYTE OF FONT DATA IN REGISTER A. EACH CALL RETURNS +; THE NEXT BYTE OF DATA. THERE IS NO INDICATION OF THE END OF THE +; FONT DATA. THE CALLER IS EXPECTED TO KNOW HOW MANY +; BYTES OF FONT DATA WILL BE RETURNED. ONLY REGISTER A IS +; MODIFIED. +; +ROMFONTS .EQU TRUE +; +FNT_NEXT: +#IF ROMFONTS + PUSH HL + PUSH DE + LD A,(FNT_BID) + LD D,A + LD HL,(FNT_PTR) + HB_DI + CALL HBX_PEEK + HB_EI + INC HL + LD (FNT_PTR),HL + LD A,E + POP DE + POP HL + RET +#ELSE + PUSH HL ; SAVE HL + LD HL,(FNT_PTR) ; GET CUR FONT DATA PTR + LD A,(HL) ; GET NEXT BYTE TO A + INC HL ; BUMP PTR + LD (FNT_PTR),HL ; SAVE PTR + POP HL ; RESTORE HL + RET ; DONE +#ENDIF +; +FNT_BID .DB 0 ; BANK CONTAINING FONT DATA +FNT_PTR .DW 0 ; POINTER TO NEXT BYTE OF DATA +; +;================================================================================================== ; DISPLAY SUMMARY OF ATTACHED UNITS/DEVICES ;================================================================================================== ; @@ -9550,25 +9648,41 @@ FONT8X16: MEMECHO " 8X16" #ENDIF ; -#IFDEF USEFONTCGA -FONTCGA: - #IF USELZSA2 - #INCLUDE "fontcgac.asm" - #ELSE - #INCLUDE "fontcgau.asm" - #ENDIF - MEMECHO " CGA" +; HIGH BIT OF THE FONTID BYTE INDICATES THAT THE FONT DATA IS COMPRESSED +; +#IF USELZSA2 +FNT_CMPMASK .EQU $80 +#ELSE +FNT_CMPMASK .EQU $00 #ENDIF ; -#IFDEF USEFONTVGARC -FONTVGARC: - #IF USELZSA2 - #INCLUDE "fontvgarcc.asm" - #ELSE - #INCLUDE "fontvgarcu.asm" - #ENDIF - MEMECHO " VGARC" +; FONT LOCATION MAP +; +FNT_MAP: +#IFDEF USEFONT6X8 + ; FOR NOW, WE NEVER COMPRESS THE 6X8 FONT. SEE TMS DRIVER. +;;; .DB FONTID_6X8 | FNT_CMPMASK + .DB FONTID_6X8 + .DW FONT6X8 +#ENDIF +; +#IFDEF USEFONT8X8 + .DB FONTID_8X8 | FNT_CMPMASK + .DW FONT8X8 +#ENDIF +; +#IFDEF USEFONT8X11 + .DB FONTID_8X11 | FNT_CMPMASK + .DW FONT8X11 #ENDIF +; +#IFDEF USEFONT8X16 + .DB FONTID_8X16 | FNT_CMPMASK + .DW FONT8X16 +#ENDIF +; + .DB 0 ; END OF TABLE + ; SIZ_FONTS .EQU $ - ORG_FONTS MEMECHO " occupy " diff --git a/Source/HBIOS/tms.asm b/Source/HBIOS/tms.asm index 679bddf1..eb6dee54 100644 --- a/Source/HBIOS/tms.asm +++ b/Source/HBIOS/tms.asm @@ -297,6 +297,7 @@ TMS_INIT1: ; CALL TMS_CRTINIT ; SETUP THE TMS CHIP REGISTERS CALL TMS_LOADFONT ; LOAD FONT DATA FROM ROM TO TMS STRORAGE + ; *** DIAGNOSE FONT LOAD ERROR HERE!!! *** CALL TMS_CLEAR ; CLEAR SCREEN, HOME CURSOR #IF (TMSKBD == TMSKBD_PPK) CALL PPK_INIT ; INITIALIZE PPI KEYBOARD DRIVER @@ -773,43 +774,23 @@ TMS_LOADFONT: ; 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 - CCF ; CREATE A - SBC HL,DE ; DECOMPRESSION BUFFER - LD SP,HL ; HL POINTS TO BUFFER - EX DE,HL ; START OF STACK BUFFER - PUSH DE ; SAVE IT - LD HL,TMS_FONT ; START OF FONT DATA - CALL DLZSA2 ; DECOMPRESS TO DE - POP HL ; RECALL STACK BUFFER POSITION -#ELSE - LD HL,TMS_FONT ; START OF FONT DATA -#ENDIF + LD A,FONTID_6X8 ; WE WANT 6X8 + CALL FNT_SELECT ; SELECT IT + RET NZ ; ERROR RETURN ; ; FILL TMS_FNTVADDR BYTES FROM FONTDATA LD DE,TMS_FNTSIZE TMS_LOADFONT1: - LD A,(HL) + CALL FNT_NEXT ; NEXT FONT DATA BYTE EZ80_IO OUT (TMS_DATREG),A TMS_IODELAY ; DELAY - INC HL DEC DE LD A,D OR E JR NZ,TMS_LOADFONT1 -; -#IF USELZSA2 & FALSE - LD HL,(TMS_STACK) ; ERASE DECOMPRESS BUFFER - LD SP,HL ; BY RESTORING THE STACK - RET ; DONE -TMS_STACK .DW 0 -#ELSE + XOR A ; SIGNAL SUCCESS RET -#ENDIF ; ;---------------------------------------------------------------------- ; VIRTUAL CURSOR MANAGEMENT diff --git a/Source/HBIOS/vga.asm b/Source/HBIOS/vga.asm index 563df03d..df4a8d96 100644 --- a/Source/HBIOS/vga.asm +++ b/Source/HBIOS/vga.asm @@ -51,6 +51,7 @@ VGA_SCANL .EQU 16 VGA_89BIT .EQU VGA_8BIT #DEFINE USEFONT8X16 #DEFINE VGA_FONT FONT8X16 +VGA_FONTID .EQU FONTID_8X16 #ENDIF #IF (VGASIZ=V80X30) VGA_ROWS .EQU 30 @@ -59,6 +60,7 @@ VGA_SCANL .EQU 16 VGA_89BIT .EQU VGA_8BIT #DEFINE USEFONT8X16 #DEFINE VGA_FONT FONT8X16 +VGA_FONTID .EQU FONTID_8X16 #ENDIF #IF (VGASIZ=V80X43) VGA_ROWS .EQU 43 @@ -67,6 +69,7 @@ VGA_SCANL .EQU 11 VGA_89BIT .EQU VGA_8BIT #DEFINE USEFONT8X11 #DEFINE VGA_FONT FONT8X11 +VGA_FONTID .EQU FONTID_8X11 #ENDIF #IF (VGASIZ=V80X60) VGA_ROWS .EQU 60 @@ -75,6 +78,7 @@ VGA_SCANL .EQU 8 VGA_89BIT .EQU VGA_8BIT #DEFINE USEFONT8X8 #DEFINE VGA_FONT FONT8X8 +VGA_FONTID .EQU FONTID_8X8 #ENDIF ; #IF VGA_CSTY=VGA_BLOK @@ -138,6 +142,7 @@ VGA_INIT1: ; HARDWARE INITIALIZATION CALL VGA_CRTINIT ; SETUP THE VGA CHIP REGISTERS CALL VGA_LOADFONT ; LOAD FONT DATA FROM ROM TO VGA STORAGE + ; *** DIAGNOSE FONT LOAD ERROR HERE!!! *** CALL VGA_VDAINI CALL KBD_INIT ; INITIALIZE KEYBOARD DRIVER @@ -550,52 +555,32 @@ VGA_CRTCDUMP1: VGA_LOADFONT: LD HL,$7000 | VGA_89BIT ; CLEAR FONT PAGE NUM CALL VGA_SETCFG - -#IF USELZSA2 - LD (VGA_STACK),SP ; SAVE STACK - LD HL,(VGA_STACK) ; AND SHIFT IT - LD DE,$2000 ; DOWN 4KB TO - OR A ; CREATE A - SBC HL,DE ; DECOMPRESSION BUFFER - LD SP,HL ; HL POINTS TO BUFFER - EX DE,HL ; START OF STACK BUFFER - PUSH DE ; SAVE IT - LD HL,VGA_FONT ; START OF FONT DATA - CALL DLZSA2 ; DECOMPRESS TO DE - POP HL ; RECALL STACK BUFFER POSITION -#ELSE - LD HL,VGA_FONT ; START OF FONT DATA -#ENDIF - +; + LD A,VGA_FONTID ; DESIRED FONT + CALL FNT_SELECT ; SELECT IT + RET NZ ; ERROR RETURN +; LD DE,$7000 ; PAGE 7 OF VIDEO RAM VGA_LOADFONT1: LD B,VGA_SCANL ; # BYTES FOR EACH CHAR VGA_LOADFONT2: - LD A,(HL) ; GET NEXT BYTE + CALL FNT_NEXT ; GET NEXT BYTE CALL VGA_MEMWR ; MEM(DE) := A - INC HL ; NEXT FONT BYTE INC DE ; NEXT MEM BYTE DJNZ VGA_LOADFONT2 - +; LD BC,16-VGA_SCANL ; MOVE TO NEXT EX DE,HL ; 16 BYTE ADD HL,BC ; CHARACTER EX DE,HL - +; LD A,D CP $80 ; CHECK FOR END JR NZ,VGA_LOADFONT1 ; LOOP LD HL,$7070 | VGA_89BIT ; SET FONT PAGE NUM TO 7 CALL VGA_SETCFG - -#IF USELZSA2 - LD HL,(VGA_STACK) ; ERASE DECOMPRESS BUFFER - LD SP,HL ; BY RESTORING THE STACK - RET ; DONE -VGA_STACK .DW 0 -#ELSE + XOR A RET -#ENDIF ; ;---------------------------------------------------------------------- ; SET CURSOR POSITION TO ROW IN D AND COLUMN IN E diff --git a/Source/HBIOS/vrc.asm b/Source/HBIOS/vrc.asm index c87051c6..fd5eeab8 100644 --- a/Source/HBIOS/vrc.asm +++ b/Source/HBIOS/vrc.asm @@ -24,6 +24,8 @@ VRC_COLS .EQU 64 #DEFINE USEFONT8X8 #DEFINE VRC_FONT FONT8X8 ; +VRC_FONTID .EQU FONTID_8X8 +; TERMENABLE .SET TRUE ; INCLUDE TERMINAL PSEUDODEVICE DRIVER KBDENABLE .SET TRUE ; INCLUDE KBD KEYBOARD SUPPORT ; @@ -70,6 +72,7 @@ VRC_INIT1: ; HARDWARE INITIALIZATION CALL VRC_CRTINIT ; SETUP THE VGARC CHIP REGISTERS CALL VRC_LOADFONT ; LOAD FONT DATA FROM ROM TO VGARC STORAGE + ; *** DIAGNOSE FONT LOAD ERROR HERE!!! *** CALL VRC_VDAINI ; RESET CALL KBD_INIT ; INITIALIZE KEYBOARD DRIVER @@ -273,67 +276,22 @@ VRC_CRTINIT: ;---------------------------------------------------------------------- ; VRC_LOADFONT: + LD A,VRC_FONTID ; DESIRED FONT ID + CALL FNT_SELECT ; SELECT IT + RET NZ ; ERROR RETURN ; -#IF USELZSA2 - LD (VRC_STACK),SP ; SAVE STACK - LD HL,(VRC_STACK) ; AND SHIFT IT - LD DE,$2000 ; DOWN 4KB TO - OR A ; CREATE A - SBC HL,DE ; DECOMPRESSION BUFFER - LD SP,HL ; HL POINTS TO BUFFER - EX DE,HL ; START OF STACK BUFFER - PUSH DE ; SAVE IT - LD HL,VRC_FONT ; START OF FONT DATA - CALL DLZSA2 ; DECOMPRESS TO DE - POP HL ; RECALL STACK BUFFER POSITION -#ELSE - LD HL,VRC_FONT ; START OF FONT DATA -#ENDIF -; -#IF 0 - ; THIS APPROACH TO LOADING FONTS IS BEST (FASTEST), BUT IS - ; CAUSING ARTIFACTS ON THE DISPLAYED FONTS WHEN RUN ON A - ; Z280. IT IS NOT CLEAR WHAT THE PROBLEM IS (POSSIBLY - ; Z280 BUG), BUT FOR NOW WE AVOID THIS AND USE AN - ; ALTERNATIVE APPROACH BELOW. - LD DE,0+(128*8)-1 ; LENGTH OF FONT DATA - 1 - ADD HL,DE ; ADD TO HL - LD BC,VRC_FONTBASE+3 ; WORK BACKWARDS - OTDR ; DO 4 PAGES - DEC C - OTDR - DEC C - OTDR - DEC C - OTDR - DEC C -#ENDIF -; -#IF 1 - ; ALTERNATIVE APPROACH TO LOADING FONTS. THIS ONE AVOIDS - ; THE USE OF OTDR WHICH SEEMS TO CAUSE PROBLEMS ON Z280. LD B,0 LD C,VRC_FONTBASE VRC_LOADFONT1: - LD A,(HL) + CALL FNT_NEXT OUT (C),A - INC HL INC B JR NZ,VRC_LOADFONT1 INC C LD A,C CP VRC_FONTBASE + 4 JR NZ,VRC_LOADFONT1 -#ENDIF -; -#IF USELZSA2 - LD HL,(VRC_STACK) ; ERASE DECOMPRESS BUFFER - LD SP,HL ; BY RESTORING THE STACK - RET ; DONE -VRC_STACK .DW 0 -#ELSE RET -#ENDIF ; ;---------------------------------------------------------------------- ; SET CURSOR POSITION TO ROW IN D AND COLUMN IN E From 00a6c8143a08cc657c5f255803cd4472bfb3fa19 Mon Sep 17 00:00:00 2001 From: Wayne Warthen Date: Thu, 26 Jun 2025 11:51:47 -0700 Subject: [PATCH 2/4] Support Font Data in ROM Video soft font data was occupying a large amount of space in the HBIOS bank. This change moves the font data to a ROM bank by default. Thanks and credit to @b1ackmai1er who provided much of the code that originated this change. Co-Authored-By: b1ackmai1er <39449559+b1ackmai1er@users.noreply.github.com> --- Doc/ChangeLog.txt | 1 + Source/HBIOS/cfg_DUO.asm | 1 + Source/HBIOS/cfg_DYNO.asm | 1 + Source/HBIOS/cfg_EPITX.asm | 1 + Source/HBIOS/cfg_EZZ80.asm | 1 + Source/HBIOS/cfg_FZ80.asm | 1 + Source/HBIOS/cfg_GMZ180.asm | 1 + Source/HBIOS/cfg_HEATH.asm | 1 + Source/HBIOS/cfg_MASTER.asm | 1 + Source/HBIOS/cfg_MBC.asm | 1 + Source/HBIOS/cfg_MK4.asm | 1 + Source/HBIOS/cfg_MON.asm | 1 + Source/HBIOS/cfg_N8.asm | 1 + Source/HBIOS/cfg_NABU.asm | 1 + Source/HBIOS/cfg_RCEZ80.asm | 1 + Source/HBIOS/cfg_RCZ180.asm | 1 + Source/HBIOS/cfg_RCZ280.asm | 1 + Source/HBIOS/cfg_RCZ80.asm | 1 + Source/HBIOS/cfg_RPH.asm | 1 + Source/HBIOS/cfg_S100.asm | 1 + Source/HBIOS/cfg_SBC.asm | 1 + Source/HBIOS/cfg_SCZ180.asm | 1 + Source/HBIOS/cfg_Z80RETRO.asm | 1 + Source/HBIOS/cfg_ZETA.asm | 1 + Source/HBIOS/cfg_ZETA2.asm | 1 + Source/HBIOS/hbios.asm | 258 ++++++++++++++++++++-------------- Source/HBIOS/layout.inc | 4 +- Source/HBIOS/romfonts.asm | 59 ++++++-- Source/ver.inc | 2 +- Source/ver.lib | 2 +- 30 files changed, 231 insertions(+), 119 deletions(-) diff --git a/Doc/ChangeLog.txt b/Doc/ChangeLog.txt index 407f55e3..0cb5db2d 100644 --- a/Doc/ChangeLog.txt +++ b/Doc/ChangeLog.txt @@ -12,6 +12,7 @@ Version 3.6 - WBW: Added boundary check to ram/rom disk driver - WBW: Per Peter Onion, switch KERMIT default file xfer mode to binary - J?L: Source for ZSDOS2 and BPBIOS Utilities (from disassembly) +- WBW: Support ROM-based font storage Version 3.5.1 ------------- diff --git a/Source/HBIOS/cfg_DUO.asm b/Source/HBIOS/cfg_DUO.asm index 431bcbb9..8bc8769e 100644 --- a/Source/HBIOS/cfg_DUO.asm +++ b/Source/HBIOS/cfg_DUO.asm @@ -71,6 +71,7 @@ INTMODE .SET 2 ; INTERRUPTS: 0=NONE, 1=MODE 1, 2=MODE 2, 3=MODE 3 (Z280) ; RAMSIZE .SET 512 ; SIZE OF RAM IN KB (MUST MATCH YOUR HARDWARE!!!) ROMSIZE .SET 512 ; SIZE OF ROM IN KB (MUST MATCH YOUR HARDWARE!!!) +ROMFONTS .SET TRUE ; LOAD FONTS FROM ROM APP_BNKS .SET $FF ; BANKS TO RESERVE FOR APP USE ($FF FOR AUTO SIZING) MEMMGR .SET MM_Z2 ; MEMORY MANAGER: MM_[SBC|Z2|N8|Z180|Z280|MBC|RPH|MON|EZ512] MPGSEL_0 .SET $50 ; Z2 MEM MGR BANK 0 PAGE SELECT REG (WRITE ONLY) diff --git a/Source/HBIOS/cfg_DYNO.asm b/Source/HBIOS/cfg_DYNO.asm index 2e7c2838..2e490248 100644 --- a/Source/HBIOS/cfg_DYNO.asm +++ b/Source/HBIOS/cfg_DYNO.asm @@ -71,6 +71,7 @@ INTMODE .SET 2 ; INTERRUPTS: 0=NONE, 1=MODE 1, 2=MODE 2, 3=MODE 3 (Z280) ; RAMSIZE .SET 512 ; SIZE OF RAM IN KB (MUST MATCH YOUR HARDWARE!!!) ROMSIZE .SET 512 ; SIZE OF ROM IN KB (MUST MATCH YOUR HARDWARE!!!) +ROMFONTS .SET TRUE ; LOAD FONTS FROM ROM APP_BNKS .SET $FF ; BANKS TO RESERVE FOR APP USE ($FF FOR AUTO SIZING) MEMMGR .SET MM_Z180 ; MEMORY MANAGER: MM_[SBC|Z2|N8|Z180|Z280|MBC|RPH|MON|EZ512] RAMBIAS .SET ROMSIZE ; OFFSET OF START OF RAM IN PHYSICAL ADDRESS SPACE diff --git a/Source/HBIOS/cfg_EPITX.asm b/Source/HBIOS/cfg_EPITX.asm index ff80c150..2c4ca360 100644 --- a/Source/HBIOS/cfg_EPITX.asm +++ b/Source/HBIOS/cfg_EPITX.asm @@ -71,6 +71,7 @@ INTMODE .SET 2 ; INTERRUPTS: 0=NONE, 1=MODE 1, 2=MODE 2, 3=MODE 3 (Z280) ; RAMSIZE .SET 512 ; SIZE OF RAM IN KB (MUST MATCH YOUR HARDWARE!!!) ROMSIZE .SET 512 ; SIZE OF ROM IN KB (MUST MATCH YOUR HARDWARE!!!) +ROMFONTS .SET TRUE ; LOAD FONTS FROM ROM APP_BNKS .SET $FF ; BANKS TO RESERVE FOR APP USE ($FF FOR AUTO SIZING) MEMMGR .SET MM_Z180 ; MEMORY MANAGER: MM_[SBC|Z2|N8|Z180|Z280|MBC|RPH|MON|EZ512] RAMBIAS .SET ROMSIZE ; OFFSET OF START OF RAM IN PHYSICAL ADDRESS SPACE diff --git a/Source/HBIOS/cfg_EZZ80.asm b/Source/HBIOS/cfg_EZZ80.asm index 6603d06c..d018867c 100644 --- a/Source/HBIOS/cfg_EZZ80.asm +++ b/Source/HBIOS/cfg_EZZ80.asm @@ -71,6 +71,7 @@ INTMODE .SET 1 ; INTERRUPTS: 0=NONE, 1=MODE 1, 2=MODE 2, 3=MODE 3 (Z280) ; RAMSIZE .SET 512 ; SIZE OF RAM IN KB (MUST MATCH YOUR HARDWARE!!!) ROMSIZE .SET 512 ; SIZE OF ROM IN KB (MUST MATCH YOUR HARDWARE!!!) +ROMFONTS .SET TRUE ; LOAD FONTS FROM ROM APP_BNKS .SET $FF ; BANKS TO RESERVE FOR APP USE ($FF FOR AUTO SIZING) MEMMGR .SET MM_Z2 ; MEMORY MANAGER: MM_[SBC|Z2|N8|Z180|Z280|MBC|RPH|MON|EZ512] MPGSEL_0 .SET $78 ; Z2 MEM MGR BANK 0 PAGE SELECT REG (WRITE ONLY) diff --git a/Source/HBIOS/cfg_FZ80.asm b/Source/HBIOS/cfg_FZ80.asm index 492efe5d..20df2770 100644 --- a/Source/HBIOS/cfg_FZ80.asm +++ b/Source/HBIOS/cfg_FZ80.asm @@ -71,6 +71,7 @@ INTMODE .SET 0 ; INTERRUPTS: 0=NONE, 1=MODE 1, 2=MODE 2, 3=MODE 3 (Z280) ; RAMSIZE .SET 512 ; SIZE OF RAM IN KB (MUST MATCH YOUR HARDWARE!!!) ROMSIZE .SET 0 ; SIZE OF ROM IN KB (MUST MATCH YOUR HARDWARE!!!) +ROMFONTS .SET TRUE ; LOAD FONTS FROM ROM APP_BNKS .SET $FF ; BANKS TO RESERVE FOR APP USE ($FF FOR AUTO SIZING) MEMMGR .SET MM_Z2 ; MEMORY MANAGER: MM_[SBC|Z2|N8|Z180|Z280|MBC|RPH|MON|EZ512] MPGSEL_0 .SET $78 ; Z2 MEM MGR BANK 0 PAGE SELECT REG (WRITE ONLY) diff --git a/Source/HBIOS/cfg_GMZ180.asm b/Source/HBIOS/cfg_GMZ180.asm index 99f5030c..a0d38d51 100644 --- a/Source/HBIOS/cfg_GMZ180.asm +++ b/Source/HBIOS/cfg_GMZ180.asm @@ -70,6 +70,7 @@ INTMODE .SET 2 ; INTERRUPTS: 0=NONE, 1=MODE 1, 2=MODE 2, 3=MODE 3 (Z280) ; RAMSIZE .SET 512 ; SIZE OF RAM IN KB (MUST MATCH YOUR HARDWARE!!!) ROMSIZE .SET 512 ; SIZE OF ROM IN KB (MUST MATCH YOUR HARDWARE!!!) +ROMFONTS .SET TRUE ; LOAD FONTS FROM ROM APP_BNKS .SET $FF ; BANKS TO RESERVE FOR APP USE ($FF FOR AUTO SIZING) MEMMGR .SET MM_Z180 ; MEMORY MANAGER: MM_[SBC|Z2|N8|Z180|Z280|MBC|RPH|MON|EZ512] RAMBIAS .SET ROMSIZE ; OFFSET OF START OF RAM IN PHYSICAL ADDRESS SPACE diff --git a/Source/HBIOS/cfg_HEATH.asm b/Source/HBIOS/cfg_HEATH.asm index 21f337d3..241b9ac2 100644 --- a/Source/HBIOS/cfg_HEATH.asm +++ b/Source/HBIOS/cfg_HEATH.asm @@ -71,6 +71,7 @@ INTMODE .SET 1 ; INTERRUPTS: 0=NONE, 1=MODE 1, 2=MODE 2, 3=MODE 3 (Z280) ; RAMSIZE .SET 512 ; SIZE OF RAM IN KB (MUST MATCH YOUR HARDWARE!!!) ROMSIZE .SET 512 ; SIZE OF ROM IN KB (MUST MATCH YOUR HARDWARE!!!) +ROMFONTS .SET TRUE ; LOAD FONTS FROM ROM APP_BNKS .SET $FF ; BANKS TO RESERVE FOR APP USE ($FF FOR AUTO SIZING) MEMMGR .SET MM_Z2 ; MEMORY MANAGER: MM_[SBC|Z2|N8|Z180|Z280|MBC|RPH|MON|EZ512] MPGSEL_0 .SET $78 ; Z2 MEM MGR BANK 0 PAGE SELECT REG (WRITE ONLY) diff --git a/Source/HBIOS/cfg_MASTER.asm b/Source/HBIOS/cfg_MASTER.asm index 6e458c29..52cd1635 100644 --- a/Source/HBIOS/cfg_MASTER.asm +++ b/Source/HBIOS/cfg_MASTER.asm @@ -71,6 +71,7 @@ INTMODE .EQU 0 ; INTERRUPTS: 0=NONE, 1=MODE 1, 2=MODE 2, 3=MODE 3 (Z280) ; RAMSIZE .EQU 512 ; SIZE OF RAM IN KB (MUST MATCH YOUR HARDWARE!!!) ROMSIZE .EQU 512 ; SIZE OF ROM IN KB (MUST MATCH YOUR HARDWARE!!!) +ROMFONTS .EQU TRUE ; LOAD FONTS FROM ROM APP_BNKS .EQU $FF ; BANKS TO RESERVE FOR APP USE ($FF FOR AUTO SIZING) MEMMGR .EQU MM_NONE ; MEMORY MANAGER: MM_[SBC|Z2|N8|Z180|Z280|MBC|RPH|MON|EZ512] RAMBIAS .EQU ROMSIZE ; OFFSET OF START OF RAM IN PHYSICAL ADDRESS SPACE diff --git a/Source/HBIOS/cfg_MBC.asm b/Source/HBIOS/cfg_MBC.asm index fe907a30..e1ad3e1f 100644 --- a/Source/HBIOS/cfg_MBC.asm +++ b/Source/HBIOS/cfg_MBC.asm @@ -71,6 +71,7 @@ INTMODE .SET 0 ; INTERRUPTS: 0=NONE, 1=MODE 1, 2=MODE 2, 3=MODE 3 (Z280) ; RAMSIZE .SET 512 ; SIZE OF RAM IN KB (MUST MATCH YOUR HARDWARE!!!) ROMSIZE .SET 512 ; SIZE OF ROM IN KB (MUST MATCH YOUR HARDWARE!!!) +ROMFONTS .SET TRUE ; LOAD FONTS FROM ROM APP_BNKS .SET $FF ; BANKS TO RESERVE FOR APP USE ($FF FOR AUTO SIZING) MEMMGR .SET MM_MBC ; MEMORY MANAGER: MM_[SBC|Z2|N8|Z180|Z280|MBC|RPH|MON|EZ512] MPCL_RAM .SET $78 ; SBC MEM MGR RAM PAGE SELECT REG (WRITE ONLY) diff --git a/Source/HBIOS/cfg_MK4.asm b/Source/HBIOS/cfg_MK4.asm index a5de49b0..bd5795cd 100644 --- a/Source/HBIOS/cfg_MK4.asm +++ b/Source/HBIOS/cfg_MK4.asm @@ -71,6 +71,7 @@ INTMODE .SET 2 ; INTERRUPTS: 0=NONE, 1=MODE 1, 2=MODE 2, 3=MODE 3 (Z280) ; RAMSIZE .SET 512 ; SIZE OF RAM IN KB (MUST MATCH YOUR HARDWARE!!!) ROMSIZE .SET 512 ; SIZE OF ROM IN KB (MUST MATCH YOUR HARDWARE!!!) +ROMFONTS .SET TRUE ; LOAD FONTS FROM ROM APP_BNKS .SET $FF ; BANKS TO RESERVE FOR APP USE ($FF FOR AUTO SIZING) MEMMGR .SET MM_Z180 ; MEMORY MANAGER: MM_[SBC|Z2|N8|Z180|Z280|MBC|RPH|MON|EZ512] RAMBIAS .SET ROMSIZE ; OFFSET OF START OF RAM IN PHYSICAL ADDRESS SPACE diff --git a/Source/HBIOS/cfg_MON.asm b/Source/HBIOS/cfg_MON.asm index e8192fd6..2a0ae026 100644 --- a/Source/HBIOS/cfg_MON.asm +++ b/Source/HBIOS/cfg_MON.asm @@ -73,6 +73,7 @@ INTMODE .SET 2 ; INTERRUPTS: 0=NONE, 1=MODE 1, 2=MODE 2, 3=MODE 3 (Z280) ; RAMSIZE .SET 512 ; SIZE OF RAM IN KB (MUST MATCH YOUR HARDWARE!!!) ROMSIZE .SET 512 ; SIZE OF ROM IN KB (MUST MATCH YOUR HARDWARE!!!) +ROMFONTS .SET TRUE ; LOAD FONTS FROM ROM APP_BNKS .SET $FF ; BANKS TO RESERVE FOR APP USE ($FF FOR AUTO SIZING) MEMMGR .SET MM_MON ; MEMORY MANAGER: MM_[SBC|Z2|N8|Z180|Z280|MBC|RPH|MON|EZ512] ; diff --git a/Source/HBIOS/cfg_N8.asm b/Source/HBIOS/cfg_N8.asm index 5b948649..2915e2ec 100644 --- a/Source/HBIOS/cfg_N8.asm +++ b/Source/HBIOS/cfg_N8.asm @@ -71,6 +71,7 @@ INTMODE .SET 2 ; INTERRUPTS: 0=NONE, 1=MODE 1, 2=MODE 2, 3=MODE 3 (Z280) ; RAMSIZE .SET 512 ; SIZE OF RAM IN KB (MUST MATCH YOUR HARDWARE!!!) ROMSIZE .SET 512 ; SIZE OF ROM IN KB (MUST MATCH YOUR HARDWARE!!!) +ROMFONTS .SET TRUE ; LOAD FONTS FROM ROM APP_BNKS .SET $FF ; BANKS TO RESERVE FOR APP USE ($FF FOR AUTO SIZING) MEMMGR .SET MM_N8 ; MEMORY MANAGER: MM_[SBC|Z2|N8|Z180|Z280|MBC|RPH|MON|EZ512] RAMBIAS .SET 0 ; OFFSET OF START OF RAM IN PHYSICAL ADDRESS SPACE diff --git a/Source/HBIOS/cfg_NABU.asm b/Source/HBIOS/cfg_NABU.asm index 862e8234..f21d2bfe 100644 --- a/Source/HBIOS/cfg_NABU.asm +++ b/Source/HBIOS/cfg_NABU.asm @@ -71,6 +71,7 @@ INTMODE .SET 2 ; INTERRUPTS: 0=NONE, 1=MODE 1, 2=MODE 2, 3=MODE 3 (Z280) ; RAMSIZE .SET 512 ; SIZE OF RAM IN KB (MUST MATCH YOUR HARDWARE!!!) ROMSIZE .SET 512 ; SIZE OF ROM IN KB (MUST MATCH YOUR HARDWARE!!!) +ROMFONTS .SET TRUE ; LOAD FONTS FROM ROM APP_BNKS .SET $FF ; BANKS TO RESERVE FOR APP USE ($FF FOR AUTO SIZING) MEMMGR .SET MM_Z2 ; MEMORY MANAGER: MM_[SBC|Z2|N8|Z180|Z280|MBC|RPH|MON|EZ512] MPGSEL_0 .SET $78 ; Z2 MEM MGR BANK 0 PAGE SELECT REG (WRITE ONLY) diff --git a/Source/HBIOS/cfg_RCEZ80.asm b/Source/HBIOS/cfg_RCEZ80.asm index 81ed7d30..2ad50ba6 100644 --- a/Source/HBIOS/cfg_RCEZ80.asm +++ b/Source/HBIOS/cfg_RCEZ80.asm @@ -69,6 +69,7 @@ INTMODE .SET 1 ; INTERRUPTS: 0=NONE, 1=MODE 1, 2=MODE 2, 3=MODE 3 (Z280) ; RAMSIZE .SET 512 ; SIZE OF RAM IN KB (MUST MATCH YOUR HARDWARE!!!) ROMSIZE .SET 512 ; SIZE OF ROM IN KB (MUST MATCH YOUR HARDWARE!!!) +ROMFONTS .SET TRUE ; LOAD FONTS FROM ROM APP_BNKS .SET $FF ; BANKS TO RESERVE FOR APP USE ($FF FOR AUTO SIZING) MEMMGR .SET MM_Z2 ; MEMORY MANAGER: MM_[SBC|Z2|N8|Z180|Z280|MBC|RPH|MON|EZ512] MPGSEL_0 .SET $78 ; Z2 MEM MGR BANK 0 PAGE SELECT REG (WRITE ONLY) diff --git a/Source/HBIOS/cfg_RCZ180.asm b/Source/HBIOS/cfg_RCZ180.asm index 7314bc00..b311a722 100644 --- a/Source/HBIOS/cfg_RCZ180.asm +++ b/Source/HBIOS/cfg_RCZ180.asm @@ -71,6 +71,7 @@ INTMODE .SET 2 ; INTERRUPTS: 0=NONE, 1=MODE 1, 2=MODE 2, 3=MODE 3 (Z280) ; RAMSIZE .SET 512 ; SIZE OF RAM IN KB (MUST MATCH YOUR HARDWARE!!!) ROMSIZE .SET 512 ; SIZE OF ROM IN KB (MUST MATCH YOUR HARDWARE!!!) +ROMFONTS .SET TRUE ; LOAD FONTS FROM ROM APP_BNKS .SET $FF ; BANKS TO RESERVE FOR APP USE ($FF FOR AUTO SIZING) MEMMGR .SET MM_Z180 ; MEMORY MANAGER: MM_[SBC|Z2|N8|Z180|Z280|MBC|RPH|MON|EZ512] RAMBIAS .SET ROMSIZE ; OFFSET OF START OF RAM IN PHYSICAL ADDRESS SPACE diff --git a/Source/HBIOS/cfg_RCZ280.asm b/Source/HBIOS/cfg_RCZ280.asm index 6d56c86b..f76a1ad6 100644 --- a/Source/HBIOS/cfg_RCZ280.asm +++ b/Source/HBIOS/cfg_RCZ280.asm @@ -71,6 +71,7 @@ INTMODE .SET 0 ; INTERRUPTS: 0=NONE, 1=MODE 1, 2=MODE 2, 3=MODE 3 (Z280) ; RAMSIZE .SET 512 ; SIZE OF RAM IN KB (MUST MATCH YOUR HARDWARE!!!) ROMSIZE .SET 512 ; SIZE OF ROM IN KB (MUST MATCH YOUR HARDWARE!!!) +ROMFONTS .SET TRUE ; LOAD FONTS FROM ROM APP_BNKS .SET $FF ; BANKS TO RESERVE FOR APP USE ($FF FOR AUTO SIZING) MEMMGR .SET MM_Z2 ; MEMORY MANAGER: MM_[SBC|Z2|N8|Z180|Z280|MBC|RPH|MON|EZ512] RAMBIAS .SET ROMSIZE ; OFFSET OF START OF RAM IN PHYSICAL ADDRESS SPACE diff --git a/Source/HBIOS/cfg_RCZ80.asm b/Source/HBIOS/cfg_RCZ80.asm index 729f96bb..e4ba044a 100644 --- a/Source/HBIOS/cfg_RCZ80.asm +++ b/Source/HBIOS/cfg_RCZ80.asm @@ -71,6 +71,7 @@ INTMODE .SET 1 ; INTERRUPTS: 0=NONE, 1=MODE 1, 2=MODE 2, 3=MODE 3 (Z280) ; RAMSIZE .SET 512 ; SIZE OF RAM IN KB (MUST MATCH YOUR HARDWARE!!!) ROMSIZE .SET 512 ; SIZE OF ROM IN KB (MUST MATCH YOUR HARDWARE!!!) +ROMFONTS .SET TRUE ; LOAD FONTS FROM ROM APP_BNKS .SET $FF ; BANKS TO RESERVE FOR APP USE ($FF FOR AUTO SIZING) MEMMGR .SET MM_Z2 ; MEMORY MANAGER: MM_[SBC|Z2|N8|Z180|Z280|MBC|RPH|MON|EZ512] MPGSEL_0 .SET $78 ; Z2 MEM MGR BANK 0 PAGE SELECT REG (WRITE ONLY) diff --git a/Source/HBIOS/cfg_RPH.asm b/Source/HBIOS/cfg_RPH.asm index 0998c00c..ff9edaf0 100644 --- a/Source/HBIOS/cfg_RPH.asm +++ b/Source/HBIOS/cfg_RPH.asm @@ -71,6 +71,7 @@ INTMODE .SET 2 ; INTERRUPTS: 0=NONE, 1=MODE 1, 2=MODE 2, 3=MODE 3 (Z280) ; RAMSIZE .SET 512 ; SIZE OF RAM IN KB (MUST MATCH YOUR HARDWARE!!!) ROMSIZE .SET 512 ; SIZE OF ROM IN KB (MUST MATCH YOUR HARDWARE!!!) +ROMFONTS .SET TRUE ; LOAD FONTS FROM ROM APP_BNKS .SET $FF ; BANKS TO RESERVE FOR APP USE ($FF FOR AUTO SIZING) MEMMGR .SET MM_RPH ; MEMORY MANAGER: MM_[SBC|Z2|N8|Z180|Z280|MBC|RPH|MON|EZ512] RAMBIAS .SET 0 ; OFFSET OF START OF RAM IN PHYSICAL ADDRESS SPACE diff --git a/Source/HBIOS/cfg_S100.asm b/Source/HBIOS/cfg_S100.asm index 8df8b29f..99b503b7 100644 --- a/Source/HBIOS/cfg_S100.asm +++ b/Source/HBIOS/cfg_S100.asm @@ -71,6 +71,7 @@ INTMODE .SET 2 ; INTERRUPTS: 0=NONE, 1=MODE 1, 2=MODE 2, 3=MODE 3 (Z280) ; RAMSIZE .SET 512 ; SIZE OF RAM IN KB (MUST MATCH YOUR HARDWARE!!!) ROMSIZE .SET 512 ; SIZE OF ROM IN KB (MUST MATCH YOUR HARDWARE!!!) +ROMFONTS .SET TRUE ; LOAD FONTS FROM ROM APP_BNKS .SET $FF ; BANKS TO RESERVE FOR APP USE ($FF FOR AUTO SIZING) MEMMGR .SET MM_Z180 ; MEMORY MANAGER: MM_[SBC|Z2|N8|Z180|Z280|MBC|RPH|MON|EZ512] RAMBIAS .SET ROMSIZE ; OFFSET OF START OF RAM IN PHYSICAL ADDRESS SPACE diff --git a/Source/HBIOS/cfg_SBC.asm b/Source/HBIOS/cfg_SBC.asm index 5c536e04..f0a2b488 100644 --- a/Source/HBIOS/cfg_SBC.asm +++ b/Source/HBIOS/cfg_SBC.asm @@ -71,6 +71,7 @@ INTMODE .SET 0 ; INTERRUPTS: 0=NONE, 1=MODE 1, 2=MODE 2, 3=MODE 3 (Z280) ; RAMSIZE .SET 512 ; SIZE OF RAM IN KB (MUST MATCH YOUR HARDWARE!!!) ROMSIZE .SET 512 ; SIZE OF ROM IN KB (MUST MATCH YOUR HARDWARE!!!) +ROMFONTS .SET TRUE ; LOAD FONTS FROM ROM APP_BNKS .SET $FF ; BANKS TO RESERVE FOR APP USE ($FF FOR AUTO SIZING) MEMMGR .SET MM_SBC ; MEMORY MANAGER: MM_[SBC|Z2|N8|Z180|Z280|MBC|RPH|MON|EZ512] MPCL_RAM .SET $78 ; SBC MEM MGR RAM PAGE SELECT REG (WRITE ONLY) diff --git a/Source/HBIOS/cfg_SCZ180.asm b/Source/HBIOS/cfg_SCZ180.asm index 1fca8ac5..86b4575a 100644 --- a/Source/HBIOS/cfg_SCZ180.asm +++ b/Source/HBIOS/cfg_SCZ180.asm @@ -71,6 +71,7 @@ INTMODE .SET 2 ; INTERRUPTS: 0=NONE, 1=MODE 1, 2=MODE 2, 3=MODE 3 (Z280) ; RAMSIZE .SET 512 ; SIZE OF RAM IN KB (MUST MATCH YOUR HARDWARE!!!) ROMSIZE .SET 512 ; SIZE OF ROM IN KB (MUST MATCH YOUR HARDWARE!!!) +ROMFONTS .SET TRUE ; LOAD FONTS FROM ROM APP_BNKS .SET $FF ; BANKS TO RESERVE FOR APP USE ($FF FOR AUTO SIZING) MEMMGR .SET MM_Z180 ; MEMORY MANAGER: MM_[SBC|Z2|N8|Z180|Z280|MBC|RPH|MON|EZ512] RAMBIAS .SET ROMSIZE ; OFFSET OF START OF RAM IN PHYSICAL ADDRESS SPACE diff --git a/Source/HBIOS/cfg_Z80RETRO.asm b/Source/HBIOS/cfg_Z80RETRO.asm index a24a05dc..06ef9954 100644 --- a/Source/HBIOS/cfg_Z80RETRO.asm +++ b/Source/HBIOS/cfg_Z80RETRO.asm @@ -71,6 +71,7 @@ INTMODE .SET 2 ; INTERRUPTS: 0=NONE, 1=MODE 1, 2=MODE 2, 3=MODE 3 (Z280) ; RAMSIZE .SET 512 ; SIZE OF RAM IN KB (MUST MATCH YOUR HARDWARE!!!) ROMSIZE .SET 512 ; SIZE OF ROM IN KB (MUST MATCH YOUR HARDWARE!!!) +ROMFONTS .SET TRUE ; LOAD FONTS FROM ROM APP_BNKS .SET $FF ; BANKS TO RESERVE FOR APP USE ($FF FOR AUTO SIZING) MEMMGR .SET MM_Z2 ; MEMORY MANAGER: MM_[SBC|Z2|N8|Z180|Z280|MBC|RPH|MON|EZ512] MPGSEL_0 .SET $60 ; Z2 MEM MGR BANK 0 PAGE SELECT REG (WRITE ONLY) diff --git a/Source/HBIOS/cfg_ZETA.asm b/Source/HBIOS/cfg_ZETA.asm index c0d737b7..5417ebd8 100644 --- a/Source/HBIOS/cfg_ZETA.asm +++ b/Source/HBIOS/cfg_ZETA.asm @@ -71,6 +71,7 @@ INTMODE .SET 0 ; INTERRUPTS: 0=NONE, 1=MODE 1, 2=MODE 2, 3=MODE 3 (Z280) ; RAMSIZE .SET 512 ; SIZE OF RAM IN KB (MUST MATCH YOUR HARDWARE!!!) ROMSIZE .SET 512 ; SIZE OF ROM IN KB (MUST MATCH YOUR HARDWARE!!!) +ROMFONTS .SET TRUE ; LOAD FONTS FROM ROM APP_BNKS .SET $FF ; BANKS TO RESERVE FOR APP USE ($FF FOR AUTO SIZING) MEMMGR .SET MM_SBC ; MEMORY MANAGER: MM_[SBC|Z2|N8|Z180|Z280|MBC|RPH|MON|EZ512] MPCL_RAM .SET $78 ; SBC MEM MGR RAM PAGE SELECT REG (WRITE ONLY) diff --git a/Source/HBIOS/cfg_ZETA2.asm b/Source/HBIOS/cfg_ZETA2.asm index 4280d684..15ac8659 100644 --- a/Source/HBIOS/cfg_ZETA2.asm +++ b/Source/HBIOS/cfg_ZETA2.asm @@ -71,6 +71,7 @@ INTMODE .SET 2 ; INTERRUPTS: 0=NONE, 1=MODE 1, 2=MODE 2, 3=MODE 3 (Z280) ; RAMSIZE .SET 512 ; SIZE OF RAM IN KB (MUST MATCH YOUR HARDWARE!!!) ROMSIZE .SET 512 ; SIZE OF ROM IN KB (MUST MATCH YOUR HARDWARE!!!) +ROMFONTS .SET TRUE ; LOAD FONTS FROM ROM APP_BNKS .SET $FF ; BANKS TO RESERVE FOR APP USE ($FF FOR AUTO SIZING) MEMMGR .SET MM_Z2 ; MEMORY MANAGER: MM_[SBC|Z2|N8|Z180|Z280|MBC|RPH|MON|EZ512] MPGSEL_0 .SET $78 ; Z2 MEM MGR BANK 0 PAGE SELECT REG (WRITE ONLY) diff --git a/Source/HBIOS/hbios.asm b/Source/HBIOS/hbios.asm index e3388618..d58a0b45 100644 --- a/Source/HBIOS/hbios.asm +++ b/Source/HBIOS/hbios.asm @@ -5454,7 +5454,7 @@ SYS_RESUSER: ; IN0 A,(Z180_ITC) ; GET ITC REGISTER XOR $80 ; PRECLEAR TRAP BIT - RET M ; IF TRAP BIT NOT SET, DONE + JP M,SYS_RESUSER3 ; IF TRAP BIT NOT SET, DONE ; ; HANDLE INVALID OPCODE DEC HL ; BACK UP TO OPCODE START @@ -5488,6 +5488,7 @@ SYS_RESUSER2: ; #ENDIF ; +SYS_RESUSER3: ; RESET ACTIVE VIDEO DISPLAY ATTACHED TO EMULATOR CALL TERM_RESET ; @@ -8287,62 +8288,111 @@ HB_CPUSPD2: RET ; AND DONE #ENDIF ; CPUFAM != CPU_EZ80 ; -HB_UTIL_END .EQU $ -; ;================================================================================================== ; FONT MANAGEMENT ROUTINES ;================================================================================================== ; ; SELECT A FONT BASED ON THE FONT ID PASSED IN REGISTER A. THIS WILL -; PREPARE TO STREAM FONT DATA VIA THE FNT_NEXT ROUTINE. USES DE, AND -; HL. +; PREPARE TO STREAM FONT DATA VIA THE FNT_NEXT ROUTINE. USES AF, BC, +; DE, AND HL. RETURNS ZERO (ZF SET) FOR SUCCESS OR NON-ZERO (ZF CLEAR) +; IF FONT NOT FOUND. +; +#IF ROMFONTS +FNT_BNKID .EQU FONTS_BNK +FNT_MAP .EQU FONTS_LOC +#ELSE +FNT_BNKID .EQU BID_BIOS +#ENDIF ; FNT_SELECT: - ; THE MAP IS CURRENTLY ASSUMED TO BE IN THE HBIOS BANK LD E,A ; DESIRED FONT ID TO E + LD A,FNT_BNKID ; FONT BANK ID TO A + LD (FNT_BID),A ; SAVE IN WORKING VARIABLE + LD D,FNT_BNKID ; D = BANK FOR FONT DATA LD HL,FNT_MAP ; POINT TO START OF MAP - LD A,(HL) ; LOAD THE FONT ID - AND $7F ; REMOVE COMPRESSION BIT 7 - OR A ; CHECK OF END OF TABLE +FNT_SELECT0: + CALL FNT_BYTE ; LOAD THE FONT ID FROM MAP + ;;;CALL PC_SPACE ; ** DEBUG *** + ;;;CALL PRTHEXBYTE ; ** DEBUG *** + AND $7F ; MASK OUT COMP INDICATOR + OR A ; CHECK FOR END OF TABLE JR Z,FNT_SELECT_ERR ; IF SO, BAIL OUT W/ ERR CP E ; CHECK FOR DESIRED FONT ID JR Z,FNT_SELECT1 ; IF SO, LOCK IT IN INC HL ; BUMP PAST FONT ID INC HL ; BUMP TO INC HL ; ... NEXT TABLE ENTRY - JR FNT_SELECT ; AND LOOP + JR FNT_SELECT0 ; AND LOOP ; FNT_SELECT1: - LD E,(HL) ; GET FONT ID BYTE + CALL FNT_BYTE ; GET FONT ID BYTE + PUSH AF ; SAVE IT + LD C,A ; SAVE IT IN E INC HL ; BUMP PAST FONT ID - LD A,BID_BIOS ; FOR NOW, ASSUME FONT IN HBIOS - LD (FNT_BID),A ; SAVE IT - LD A,(HL) ; DEREF HL - INC HL - LD H,(HL) - LD L,A - BIT 7,E ; COMPRESSED FONT DATA? + CALL FNT_BYTE ; LO BYTE OF ADDRESS + LD E,A ; PUT IN E + INC HL ; BUMP + CALL FNT_BYTE ; HI BYTE OF ADDRESS + LD D,A ; PUT IN D + EX DE,HL ; FULL ADDRESS TO HL + POP AF ; RECOVER FONT ID + AND $80 ; COMPRESSED FONT DATA? JR Z,FNT_SELECT2 ; IF NOT, SKIP DECOMP ; #IF ((CVDUENABLE | GDCENABLE | TMSENABLE | VGAENABLE | VRCENABLE) & USELZSA2) - ; BELOW DOES NOT YET HANDLE COMPRESSED FONT DATA IN ROM!!! - PUSH HL ; SAVE COMP DATA PTR - LD HL,0 ; COPY SP - ADD HL,SP ; ... TO HL - LD DE,$2100 ; SPACE FOR DECOMP BUF AND STACK - CCF ; CLEAR CARRY - SBC HL,DE ; HL IS START OF DECOMP BUF - POP DE ; RECOVER COMP DATA PTR - EX DE,HL ; SWAP - PUSH DE ; SAVE START OF DECOMP BUF - CALL DLZSA2 ; DECOMP - POP HL ; START OF DECOMP BUF +; +; DECOMPRESS THE FONT DATA. WE USURP $E000-$EFFF AS A BUFFER FOR THE +; DECOMPRESSED DATA. IF THE FONT DATA IS IN ROM, WE FIRST COPY THE +; COMPRESSED DATA TO $D000-DFFF. THE BUFFER SIZES ARE LARGE ENOUGH TO +; CONTAIN THE LARGEST FONT IN ITS DECOMPRESSED STATE. THE BUFFER +; LOCATIONS ARE SAFE DURING BOOT, BUT *NOT* FOR A RUNNING SYSTEM. SO, +; ANY FONT THAT MUST BE RELOADED AFTER BOOT WILL NEED TO BE SAVED IN +; DECOMPRESSED STATE! SPECIFICALLY THE 6X8 TMS FONT. +; + ;;;CALL PC_SPACE ; ** DEBUG *** + ;;;LD A,'C' ; ** DEBUG *** + ;;;CALL COUT ; ** DEBUG *** +; + #IF ROMFONTS + ;;;LD A,'R' ; ** DEBUG *** + ;;;CALL COUT ; ** DEBUG *** +; + ; COPY THE COMPRESSED DATA FROM ROM TO RAM BUFFER + LD A,(FNT_BID) ; GET ROM FONT BANK ID + LD (HB_SRCBNK),A ; SETUP SOURCE BANK + LD A,BID_BIOS ; DEST BANK IS BIOS BANK + LD (HB_DSTBNK),A ; SETUP DESTINATION BANK + LD DE,$D000 ; PUT DEST IN DE + LD BC,$1000 ; BLINDLY COPY 4K + CALL HBX_BNKCPY ; COPY COMP FONT DATA TO RAM +; + ; DO THE DECOMPRESSION + LD HL,$D000 ; COMP BUF ADR TO HL + LD DE,$E000 ; DECOMP BUF ADR TO DE + CALL DLZSA2 ; DECOMPRESS + LD A,BID_BIOS ; BANK OF DECOMP BUF + LD (FNT_BID),A ; UPDATE FNT_BID + LD HL,$E000 ; DEOMP BUF ADR TO HL + #ELSE + ;;;LD A,'I' ; ** DEBUG *** + ;;;CALL COUT ; ** DEBUG *** + LD DE,$E000 ; DECOMP BUF ADR TO DE + CALL DLZSA2 ; DECOMPRESS + LD HL,$E000 ; DECOMP BUF ADR TO HL + #ENDIF +; #ELSE JR FNT_SELECT_ERR ; OOPS, CAN'T DECOMPRESS #ENDIF ; FNT_SELECT2: LD (FNT_PTR),HL ; SAVE STARTING POINTER + ;;;LD A,(FNT_BID) ; ** DEBUG *** + ;;;CALL PC_SPACE ; ** DEBUG *** + ;;;CALL PRTHEXBYTE ; ** DEBUG *** + ;;;LD HL,(FNT_PTR) ; ** DEBUG *** + ;;;CALL PC_SPACE ; ** DEBUG *** + ;;;CALL PRTHEXWORDHL ; ** DEBUG *** XOR A ; SIGNAL SUCCESS RET @@ -8352,41 +8402,38 @@ FNT_SELECT_ERR: ; ; RETURN THE NEXT BYTE OF FONT DATA IN REGISTER A. EACH CALL RETURNS ; THE NEXT BYTE OF DATA. THERE IS NO INDICATION OF THE END OF THE -; FONT DATA. THE CALLER IS EXPECTED TO KNOW HOW MANY -; BYTES OF FONT DATA WILL BE RETURNED. ONLY REGISTER A IS -; MODIFIED. -; -ROMFONTS .EQU TRUE +; FONT DATA. THE CALLER CONTROLS NUMBER OF BYTES REQUESTED. +; ONLY REGISTER A IS MODIFIED. ; FNT_NEXT: -#IF ROMFONTS PUSH HL + LD HL,(FNT_PTR) + CALL FNT_BYTE + INC HL + LD (FNT_PTR),HL + POP HL + RET +; +; HELPER FUNCTION TO RETRIEVE A BYTE OF ROM FONT DATA FROM THE +; ROM FONT BANK. RETURNS BYTE FROM (FNT_BID:HL). RETURNS BYTE IN A. +; ALL OTHER REGSITERS UNCHANGED. +; +FNT_BYTE: PUSH DE LD A,(FNT_BID) LD D,A - LD HL,(FNT_PTR) HB_DI CALL HBX_PEEK HB_EI - INC HL - LD (FNT_PTR),HL LD A,E POP DE - POP HL RET -#ELSE - PUSH HL ; SAVE HL - LD HL,(FNT_PTR) ; GET CUR FONT DATA PTR - LD A,(HL) ; GET NEXT BYTE TO A - INC HL ; BUMP PTR - LD (FNT_PTR),HL ; SAVE PTR - POP HL ; RESTORE HL - RET ; DONE -#ENDIF ; FNT_BID .DB 0 ; BANK CONTAINING FONT DATA FNT_PTR .DW 0 ; POINTER TO NEXT BYTE OF DATA ; +HB_UTIL_END .EQU $ +; ;================================================================================================== ; DISPLAY SUMMARY OF ATTACHED UNITS/DEVICES ;================================================================================================== @@ -9604,85 +9651,88 @@ ORG_FONTS .EQU $ ; MEMECHO "FONTS" ; -#IFDEF USEFONT6X8 -FONT6X8: -; -; FOR NOW, WE NEVER COMPRESS THE 6X8 FONT. SEE TMS DRIVER. -; - #IF USELZSA2 & FALSE - #INCLUDE "font6x8c.asm" - #ELSE - #INCLUDE "font6x8u.asm" - #ENDIF - MEMECHO " 6X8" -#ENDIF -; -#IFDEF USEFONT8X8 -FONT8X8: -; - #IF USELZSA2 - #INCLUDE "font8x8c.asm" - #ELSE - #INCLUDE "font8x8u.asm" - #ENDIF - MEMECHO " 8X8" -#ENDIF -; -#IFDEF USEFONT8X11 -FONT8X11: - #IF USELZSA2 - #INCLUDE "font8x11c.asm" - #ELSE - #INCLUDE "font8x11u.asm" - #ENDIF - MEMECHO " 8X11" -#ENDIF -; -#IFDEF USEFONT8X16 -FONT8X16: - #IF USELZSA2 - #INCLUDE "font8x16c.asm" - #ELSE - #INCLUDE "font8x16u.asm" - #ENDIF - MEMECHO " 8X16" -#ENDIF +#IF !ROMFONTS ; ; HIGH BIT OF THE FONTID BYTE INDICATES THAT THE FONT DATA IS COMPRESSED ; -#IF USELZSA2 + #IF USELZSA2 FNT_CMPMASK .EQU $80 -#ELSE + #ELSE FNT_CMPMASK .EQU $00 -#ENDIF + #ENDIF ; ; FONT LOCATION MAP ; FNT_MAP: -#IFDEF USEFONT6X8 + #IFDEF USEFONT6X8 ; FOR NOW, WE NEVER COMPRESS THE 6X8 FONT. SEE TMS DRIVER. ;;; .DB FONTID_6X8 | FNT_CMPMASK .DB FONTID_6X8 .DW FONT6X8 -#ENDIF + #ENDIF ; -#IFDEF USEFONT8X8 + #IFDEF USEFONT8X8 .DB FONTID_8X8 | FNT_CMPMASK .DW FONT8X8 -#ENDIF + #ENDIF ; -#IFDEF USEFONT8X11 + #IFDEF USEFONT8X11 .DB FONTID_8X11 | FNT_CMPMASK .DW FONT8X11 -#ENDIF + #ENDIF ; -#IFDEF USEFONT8X16 + #IFDEF USEFONT8X16 .DB FONTID_8X16 | FNT_CMPMASK .DW FONT8X16 -#ENDIF + #ENDIF ; .DB 0 ; END OF TABLE - +; + #IFDEF USEFONT6X8 +FONT6X8: +; +; FOR NOW, WE NEVER COMPRESS THE 6X8 FONT. SEE TMS DRIVER. +; + #IF USELZSA2 & FALSE + #INCLUDE "font6x8c.asm" + #ELSE + #INCLUDE "font6x8u.asm" + #ENDIF + MEMECHO " 6X8" + #ENDIF +; + #IFDEF USEFONT8X8 +FONT8X8: +; + #IF USELZSA2 + #INCLUDE "font8x8c.asm" + #ELSE + #INCLUDE "font8x8u.asm" + #ENDIF + MEMECHO " 8X8" + #ENDIF +; + #IFDEF USEFONT8X11 +FONT8X11: + #IF USELZSA2 + #INCLUDE "font8x11c.asm" + #ELSE + #INCLUDE "font8x11u.asm" + #ENDIF + MEMECHO " 8X11" + #ENDIF +; + #IFDEF USEFONT8X16 +FONT8X16: + #IF USELZSA2 + #INCLUDE "font8x16c.asm" + #ELSE + #INCLUDE "font8x16u.asm" + #ENDIF + MEMECHO " 8X16" + #ENDIF +; +#ENDIF ; SIZ_FONTS .EQU $ - ORG_FONTS MEMECHO " occupy " diff --git a/Source/HBIOS/layout.inc b/Source/HBIOS/layout.inc index 815dfa67..504dcd3a 100644 --- a/Source/HBIOS/layout.inc +++ b/Source/HBIOS/layout.inc @@ -185,8 +185,8 @@ HWMON_IMGLOC .EQU BNK_NXTLOC ; LOCATION OF BINARY LOAD IMAGE IN BANK BNK_NXTLOC .SET HWMON_IMGLOC + HWMON_SIZ ; IMG LOC OF NEXT COMPONENT ; FONTS_BNK .EQU BNK_CUR -FONTS_LOC .EQU $0000 -FONTS_SIZ .EQU $2100 +FONTS_LOC .EQU BNK_NXTLOC +FONTS_SIZ .EQU $2000 FONTS_END .EQU FONTS_LOC + FONTS_SIZ FONTS_IMGLOC .EQU BNK_NXTLOC ; LOCATION OF BINARY LOAD IMAGE IN BANK BNK_NXTLOC .SET FONTS_IMGLOC + FONTS_SIZ ; IMG LOC OF NEXT COMPONENT diff --git a/Source/HBIOS/romfonts.asm b/Source/HBIOS/romfonts.asm index ea679298..8e892822 100644 --- a/Source/HBIOS/romfonts.asm +++ b/Source/HBIOS/romfonts.asm @@ -7,49 +7,68 @@ ; FONTS. ; ; FOR NOW, WE ARE JUST INCLUDING 3 FONTS AND THEY ARE NOT COMPRESSED. -; THESE THREE FONTS SHOULD ALWAYS RESULT IN AN 8K BINARY. ; #INCLUDE "std.asm" ; +COMP .EQU $80 ; BIT MASK FOR COMPRESSED FONT +RAW .EQU $00 ; BIT MASK FOR RAW FONT ; +; FONT INCLUSION CONTROLS. THE FMT_XXX SETTING CONTROLS WHETHER THE +; FONT DATA WILL BE COMPRESSED OR NOT. GENERALLY, COMPRESSED IS USED +; TO SAVE SPACE. THE 6X8 FONT IS AN EXCEPTION BECAUSE IT IS USED BY +; THE TMS DRIVER WHICH RELOADS THE FONT ON-THE-FLY DURING SYSTEM +; OPERATION. SEE TMS.ASM. ; USEFONT6X8 .EQU TRUE +FMT_6X8 .EQU RAW +; USEFONT8X8 .EQU TRUE -USEFONT8X11 .EQU FALSE +FMT_8X8 .EQU COMP +; +USEFONT8X11 .EQU TRUE +FMT_8X11 .EQU COMP +; USEFONT8X16 .EQU TRUE +FMT_8X16 .EQU COMP ; .ORG FONTS_LOC ; ; FONT LOCATION MAP ; #IF USEFONT6X8 - .DB FONTID_6X8 + .DB FONTID_6X8 | FMT_6X8 .DW FONT6X8 #ENDIF ; #IF USEFONT8X8 - .DB FONTID_8X8 + .DB FONTID_8X8 | FMT_8X8 .DW FONT8X8 #ENDIF ; #IF USEFONT8X11 - .DB FONTID_8X11 + .DB FONTID_8X11 | FMT_8X11 .DW FONT8X11 #ENDIF ; #IF USEFONT8X16 - .DB FONTID_8X16 + .DB FONTID_8X16 | FMT_8X16 .DW FONT8X16 #ENDIF ; .DB 0 ; END OF TABLE ; -; +; INCLUDE ACTUAL FONT FILES ; #IF USEFONT6X8 .ECHO "FONT6X8: " FONT6X8: -#INCLUDE "font6x8u.asm" + #IF (FMT_6X8 == COMP) + .ECHO "COMPRESSED " + #INCLUDE "font6x8c.asm" + #ELSE + .ECHO "RAW " + #INCLUDE "font6x8u.asm" + #ENDIF .ECHO $ - FONT6X8 .ECHO " BYTES\n" #ENDIF @@ -57,7 +76,13 @@ FONT6X8: #IF USEFONT8X8 .ECHO "FONT8X8: " FONT8X8: -#INCLUDE "font8x8u.asm" + #IF (FMT_8X8 == COMP) + .ECHO "COMPRESSED " + #INCLUDE "font8x8c.asm" + #ELSE + .ECHO "RAW " + #INCLUDE "font8x8u.asm" + #ENDIF .ECHO $ - FONT8X8 .ECHO " BYTES\n" #ENDIF @@ -65,7 +90,13 @@ FONT8X8: #IF USEFONT8X11 .ECHO "FONT8X11: " FONT8X11: -#INCLUDE "font8x11u.asm" + #IF (FMT_8X11 == COMP) + .ECHO "COMPRESSED " + #INCLUDE "font8x11c.asm" + #ELSE + .ECHO "RAW " + #INCLUDE "font8x11u.asm" + #ENDIF .ECHO $ - FONT8X11 .ECHO " BYTES\n" #ENDIF @@ -73,7 +104,13 @@ FONT8X11: #IF USEFONT8X16 .ECHO "FONT8X16: " FONT8X16: -#INCLUDE "font8x16u.asm" + #IF (FMT_8X16 == COMP) + .ECHO "COMPRESSED " + #INCLUDE "font8x16c.asm" + #ELSE + .ECHO "RAW " + #INCLUDE "font8x16u.asm" + #ENDIF .ECHO $ - FONT8X16 .ECHO " BYTES\n" #ENDIF diff --git a/Source/ver.inc b/Source/ver.inc index ead423b3..8ca74ec4 100644 --- a/Source/ver.inc +++ b/Source/ver.inc @@ -2,7 +2,7 @@ #DEFINE RMN 6 #DEFINE RUP 0 #DEFINE RTP 0 -#DEFINE BIOSVER "3.6.0-dev.6" +#DEFINE BIOSVER "3.6.0-dev.7" #define rmj RMJ #define rmn RMN #define rup RUP diff --git a/Source/ver.lib b/Source/ver.lib index abc87464..b3c39a8b 100644 --- a/Source/ver.lib +++ b/Source/ver.lib @@ -3,5 +3,5 @@ rmn equ 6 rup equ 0 rtp equ 0 biosver macro - db "3.6.0-dev.6" + db "3.6.0-dev.7" endm From 4e49a0fedef7ebb2e4c30482b02520866aea8442 Mon Sep 17 00:00:00 2001 From: Wayne Warthen Date: Fri, 27 Jun 2025 11:26:35 -0700 Subject: [PATCH 3/4] ROM Fonts Z280 Fix The HBX_PEEK function does not handle invocation from system mode. Implemented a workaround for this. --- Source/HBIOS/hbios.asm | 33 +++++++++++++++++++++++++++++---- Source/HBIOS/vrc.asm | 1 + 2 files changed, 30 insertions(+), 4 deletions(-) diff --git a/Source/HBIOS/hbios.asm b/Source/HBIOS/hbios.asm index d58a0b45..3c13dfb5 100644 --- a/Source/HBIOS/hbios.asm +++ b/Source/HBIOS/hbios.asm @@ -8305,6 +8305,8 @@ FNT_BNKID .EQU BID_BIOS #ENDIF ; FNT_SELECT: + ;;;CALL PC_SPACE ; ** DEBUG *** + ;;;CALL PRTHEXBYTE ; ** DEBUG *** LD E,A ; DESIRED FONT ID TO E LD A,FNT_BNKID ; FONT BANK ID TO A LD (FNT_BID),A ; SAVE IN WORKING VARIABLE @@ -8335,6 +8337,17 @@ FNT_SELECT1: CALL FNT_BYTE ; HI BYTE OF ADDRESS LD D,A ; PUT IN D EX DE,HL ; FULL ADDRESS TO HL + +;;;#IF ROMFONTS +;;; CALL PC_SPACE ; ** DEBUG *** +;;; LD A,'R' ; ** DEBUG *** +;;; CALL COUT ; ** DEBUG *** +;;;#ELSE +;;; CALL PC_SPACE ; ** DEBUG *** +;;; LD A,'H' ; ** DEBUG *** +;;; CALL COUT ; ** DEBUG *** +;;;#ENDIF + POP AF ; RECOVER FONT ID AND $80 ; COMPRESSED FONT DATA? JR Z,FNT_SELECT2 ; IF NOT, SKIP DECOMP @@ -8349,14 +8362,10 @@ FNT_SELECT1: ; ANY FONT THAT MUST BE RELOADED AFTER BOOT WILL NEED TO BE SAVED IN ; DECOMPRESSED STATE! SPECIFICALLY THE 6X8 TMS FONT. ; - ;;;CALL PC_SPACE ; ** DEBUG *** ;;;LD A,'C' ; ** DEBUG *** ;;;CALL COUT ; ** DEBUG *** ; #IF ROMFONTS - ;;;LD A,'R' ; ** DEBUG *** - ;;;CALL COUT ; ** DEBUG *** -; ; COPY THE COMPRESSED DATA FROM ROM TO RAM BUFFER LD A,(FNT_BID) ; GET ROM FONT BANK ID LD (HB_SRCBNK),A ; SETUP SOURCE BANK @@ -8419,6 +8428,21 @@ FNT_NEXT: ; ALL OTHER REGSITERS UNCHANGED. ; FNT_BYTE: +#IF (MEMMGR == MM_Z280) + ; HBX_PEEK FOR Z280 DOES NOT WORK WHEN INVOKED WHILE IN + ; SYSTEM MODE. THIS SHOULD BE REVISITED. + LD A,(FNT_BID) + PUSH BC + PUSH DE + PUSH HL + LD B,$00 + CALL Z280_BNKSEL + POP HL + POP DE + POP BC + LDUP A,(HL) + RET +#ELSE PUSH DE LD A,(FNT_BID) LD D,A @@ -8428,6 +8452,7 @@ FNT_BYTE: LD A,E POP DE RET +#ENDIF ; FNT_BID .DB 0 ; BANK CONTAINING FONT DATA FNT_PTR .DW 0 ; POINTER TO NEXT BYTE OF DATA diff --git a/Source/HBIOS/vrc.asm b/Source/HBIOS/vrc.asm index fd5eeab8..bdc9414c 100644 --- a/Source/HBIOS/vrc.asm +++ b/Source/HBIOS/vrc.asm @@ -25,6 +25,7 @@ VRC_COLS .EQU 64 #DEFINE VRC_FONT FONT8X8 ; VRC_FONTID .EQU FONTID_8X8 +;VRC_FONTID .EQU FONTID_6X8 ; TERMENABLE .SET TRUE ; INCLUDE TERMINAL PSEUDODEVICE DRIVER KBDENABLE .SET TRUE ; INCLUDE KBD KEYBOARD SUPPORT From c399864e95243fa3ee25a61b70d22fd1ae62cbbc Mon Sep 17 00:00:00 2001 From: Wayne Warthen Date: Fri, 27 Jun 2025 15:24:14 -0700 Subject: [PATCH 4/4] S100 Monitor Menu Key Change Changed the menu key of the S100 Monitor from 'S' to '1' in the RomLdr. This is to free up the 'S' key for a more generic use. --- Source/HBIOS/romldr.asm | 4 ++-- Source/ver.inc | 2 +- Source/ver.lib | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/Source/HBIOS/romldr.asm b/Source/HBIOS/romldr.asm index b0217222..b26b0448 100644 --- a/Source/HBIOS/romldr.asm +++ b/Source/HBIOS/romldr.asm @@ -1557,7 +1557,7 @@ s100mon1: ld ix,HWMON_IMGLOC ; execution resumes here jp HB_BNKCALL ; do it ; -str_smon .db "S100 Z180 Monitor",0 +str_smon .db "S100 Z180 Hardware Monitor",0 str_s100con .db "\r\n\r\nConsole on S100 Bus",0 ; #endif @@ -2635,7 +2635,7 @@ ra_ent(str_mon, 'M', KY_CL, MON_BNK, MON_IMGLOC, MON_LOC, MON_SIZ, MON_ ra_entsiz .equ $ - ra_tbl #if (BIOS == BIOS_WBW) #if (PLATFORM == PLT_S100) -ra_ent(str_smon, 'S', $FF, bid_cur, $8000, $8000, $0001, s100mon) +ra_ent(str_smon, '1', $FF, bid_cur, $8000, $8000, $0001, s100mon) #endif #endif ra_ent(str_cpm22, 'C', KY_BK, CPM22_BNK, CPM22_IMGLOC, CPM_LOC, CPM_SIZ, CPM_ENT) diff --git a/Source/ver.inc b/Source/ver.inc index 8ca74ec4..5f0965a5 100644 --- a/Source/ver.inc +++ b/Source/ver.inc @@ -2,7 +2,7 @@ #DEFINE RMN 6 #DEFINE RUP 0 #DEFINE RTP 0 -#DEFINE BIOSVER "3.6.0-dev.7" +#DEFINE BIOSVER "3.6.0-dev.8" #define rmj RMJ #define rmn RMN #define rup RUP diff --git a/Source/ver.lib b/Source/ver.lib index b3c39a8b..01b5171a 100644 --- a/Source/ver.lib +++ b/Source/ver.lib @@ -3,5 +3,5 @@ rmn equ 6 rup equ 0 rtp equ 0 biosver macro - db "3.6.0-dev.7" + db "3.6.0-dev.8" endm