From 4e49a0fedef7ebb2e4c30482b02520866aea8442 Mon Sep 17 00:00:00 2001 From: Wayne Warthen Date: Fri, 27 Jun 2025 11:26:35 -0700 Subject: [PATCH] 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