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>
This commit is contained in:
Wayne Warthen
2025-06-26 11:51:47 -07:00
parent ab7c566270
commit 00a6c8143a
30 changed files with 231 additions and 119 deletions

View File

@@ -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