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

@@ -12,6 +12,7 @@ Version 3.6
- WBW: Added boundary check to ram/rom disk driver - WBW: Added boundary check to ram/rom disk driver
- WBW: Per Peter Onion, switch KERMIT default file xfer mode to binary - WBW: Per Peter Onion, switch KERMIT default file xfer mode to binary
- J?L: Source for ZSDOS2 and BPBIOS Utilities (from disassembly) - J?L: Source for ZSDOS2 and BPBIOS Utilities (from disassembly)
- WBW: Support ROM-based font storage
Version 3.5.1 Version 3.5.1
------------- -------------

View File

@@ -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!!!) RAMSIZE .SET 512 ; SIZE OF RAM IN KB (MUST MATCH YOUR HARDWARE!!!)
ROMSIZE .SET 512 ; SIZE OF ROM 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) 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] 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) MPGSEL_0 .SET $50 ; Z2 MEM MGR BANK 0 PAGE SELECT REG (WRITE ONLY)

View File

@@ -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!!!) RAMSIZE .SET 512 ; SIZE OF RAM IN KB (MUST MATCH YOUR HARDWARE!!!)
ROMSIZE .SET 512 ; SIZE OF ROM 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) 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] 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 RAMBIAS .SET ROMSIZE ; OFFSET OF START OF RAM IN PHYSICAL ADDRESS SPACE

View File

@@ -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!!!) RAMSIZE .SET 512 ; SIZE OF RAM IN KB (MUST MATCH YOUR HARDWARE!!!)
ROMSIZE .SET 512 ; SIZE OF ROM 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) 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] 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 RAMBIAS .SET ROMSIZE ; OFFSET OF START OF RAM IN PHYSICAL ADDRESS SPACE

View File

@@ -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!!!) RAMSIZE .SET 512 ; SIZE OF RAM IN KB (MUST MATCH YOUR HARDWARE!!!)
ROMSIZE .SET 512 ; SIZE OF ROM 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) 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] 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) MPGSEL_0 .SET $78 ; Z2 MEM MGR BANK 0 PAGE SELECT REG (WRITE ONLY)

View File

@@ -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!!!) RAMSIZE .SET 512 ; SIZE OF RAM IN KB (MUST MATCH YOUR HARDWARE!!!)
ROMSIZE .SET 0 ; SIZE OF ROM 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) 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] 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) MPGSEL_0 .SET $78 ; Z2 MEM MGR BANK 0 PAGE SELECT REG (WRITE ONLY)

View File

@@ -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!!!) RAMSIZE .SET 512 ; SIZE OF RAM IN KB (MUST MATCH YOUR HARDWARE!!!)
ROMSIZE .SET 512 ; SIZE OF ROM 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) 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] 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 RAMBIAS .SET ROMSIZE ; OFFSET OF START OF RAM IN PHYSICAL ADDRESS SPACE

View File

@@ -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!!!) RAMSIZE .SET 512 ; SIZE OF RAM IN KB (MUST MATCH YOUR HARDWARE!!!)
ROMSIZE .SET 512 ; SIZE OF ROM 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) 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] 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) MPGSEL_0 .SET $78 ; Z2 MEM MGR BANK 0 PAGE SELECT REG (WRITE ONLY)

View File

@@ -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!!!) RAMSIZE .EQU 512 ; SIZE OF RAM IN KB (MUST MATCH YOUR HARDWARE!!!)
ROMSIZE .EQU 512 ; SIZE OF ROM 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) 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] 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 RAMBIAS .EQU ROMSIZE ; OFFSET OF START OF RAM IN PHYSICAL ADDRESS SPACE

View File

@@ -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!!!) RAMSIZE .SET 512 ; SIZE OF RAM IN KB (MUST MATCH YOUR HARDWARE!!!)
ROMSIZE .SET 512 ; SIZE OF ROM 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) 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] 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) MPCL_RAM .SET $78 ; SBC MEM MGR RAM PAGE SELECT REG (WRITE ONLY)

View File

@@ -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!!!) RAMSIZE .SET 512 ; SIZE OF RAM IN KB (MUST MATCH YOUR HARDWARE!!!)
ROMSIZE .SET 512 ; SIZE OF ROM 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) 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] 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 RAMBIAS .SET ROMSIZE ; OFFSET OF START OF RAM IN PHYSICAL ADDRESS SPACE

View File

@@ -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!!!) RAMSIZE .SET 512 ; SIZE OF RAM IN KB (MUST MATCH YOUR HARDWARE!!!)
ROMSIZE .SET 512 ; SIZE OF ROM 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) 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] MEMMGR .SET MM_MON ; MEMORY MANAGER: MM_[SBC|Z2|N8|Z180|Z280|MBC|RPH|MON|EZ512]
; ;

View File

@@ -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!!!) RAMSIZE .SET 512 ; SIZE OF RAM IN KB (MUST MATCH YOUR HARDWARE!!!)
ROMSIZE .SET 512 ; SIZE OF ROM 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) 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] 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 RAMBIAS .SET 0 ; OFFSET OF START OF RAM IN PHYSICAL ADDRESS SPACE

View File

@@ -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!!!) RAMSIZE .SET 512 ; SIZE OF RAM IN KB (MUST MATCH YOUR HARDWARE!!!)
ROMSIZE .SET 512 ; SIZE OF ROM 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) 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] 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) MPGSEL_0 .SET $78 ; Z2 MEM MGR BANK 0 PAGE SELECT REG (WRITE ONLY)

View File

@@ -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!!!) RAMSIZE .SET 512 ; SIZE OF RAM IN KB (MUST MATCH YOUR HARDWARE!!!)
ROMSIZE .SET 512 ; SIZE OF ROM 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) 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] 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) MPGSEL_0 .SET $78 ; Z2 MEM MGR BANK 0 PAGE SELECT REG (WRITE ONLY)

View File

@@ -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!!!) RAMSIZE .SET 512 ; SIZE OF RAM IN KB (MUST MATCH YOUR HARDWARE!!!)
ROMSIZE .SET 512 ; SIZE OF ROM 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) 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] 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 RAMBIAS .SET ROMSIZE ; OFFSET OF START OF RAM IN PHYSICAL ADDRESS SPACE

View File

@@ -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!!!) RAMSIZE .SET 512 ; SIZE OF RAM IN KB (MUST MATCH YOUR HARDWARE!!!)
ROMSIZE .SET 512 ; SIZE OF ROM 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) 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] 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 RAMBIAS .SET ROMSIZE ; OFFSET OF START OF RAM IN PHYSICAL ADDRESS SPACE

View File

@@ -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!!!) RAMSIZE .SET 512 ; SIZE OF RAM IN KB (MUST MATCH YOUR HARDWARE!!!)
ROMSIZE .SET 512 ; SIZE OF ROM 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) 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] 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) MPGSEL_0 .SET $78 ; Z2 MEM MGR BANK 0 PAGE SELECT REG (WRITE ONLY)

View File

@@ -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!!!) RAMSIZE .SET 512 ; SIZE OF RAM IN KB (MUST MATCH YOUR HARDWARE!!!)
ROMSIZE .SET 512 ; SIZE OF ROM 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) 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] 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 RAMBIAS .SET 0 ; OFFSET OF START OF RAM IN PHYSICAL ADDRESS SPACE

View File

@@ -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!!!) RAMSIZE .SET 512 ; SIZE OF RAM IN KB (MUST MATCH YOUR HARDWARE!!!)
ROMSIZE .SET 512 ; SIZE OF ROM 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) 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] 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 RAMBIAS .SET ROMSIZE ; OFFSET OF START OF RAM IN PHYSICAL ADDRESS SPACE

View File

@@ -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!!!) RAMSIZE .SET 512 ; SIZE OF RAM IN KB (MUST MATCH YOUR HARDWARE!!!)
ROMSIZE .SET 512 ; SIZE OF ROM 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) 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] 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) MPCL_RAM .SET $78 ; SBC MEM MGR RAM PAGE SELECT REG (WRITE ONLY)

View File

@@ -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!!!) RAMSIZE .SET 512 ; SIZE OF RAM IN KB (MUST MATCH YOUR HARDWARE!!!)
ROMSIZE .SET 512 ; SIZE OF ROM 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) 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] 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 RAMBIAS .SET ROMSIZE ; OFFSET OF START OF RAM IN PHYSICAL ADDRESS SPACE

View File

@@ -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!!!) RAMSIZE .SET 512 ; SIZE OF RAM IN KB (MUST MATCH YOUR HARDWARE!!!)
ROMSIZE .SET 512 ; SIZE OF ROM 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) 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] 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) MPGSEL_0 .SET $60 ; Z2 MEM MGR BANK 0 PAGE SELECT REG (WRITE ONLY)

View File

@@ -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!!!) RAMSIZE .SET 512 ; SIZE OF RAM IN KB (MUST MATCH YOUR HARDWARE!!!)
ROMSIZE .SET 512 ; SIZE OF ROM 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) 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] 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) MPCL_RAM .SET $78 ; SBC MEM MGR RAM PAGE SELECT REG (WRITE ONLY)

View File

@@ -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!!!) RAMSIZE .SET 512 ; SIZE OF RAM IN KB (MUST MATCH YOUR HARDWARE!!!)
ROMSIZE .SET 512 ; SIZE OF ROM 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) 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] 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) MPGSEL_0 .SET $78 ; Z2 MEM MGR BANK 0 PAGE SELECT REG (WRITE ONLY)

View File

@@ -5454,7 +5454,7 @@ SYS_RESUSER:
; ;
IN0 A,(Z180_ITC) ; GET ITC REGISTER IN0 A,(Z180_ITC) ; GET ITC REGISTER
XOR $80 ; PRECLEAR TRAP BIT 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 ; HANDLE INVALID OPCODE
DEC HL ; BACK UP TO OPCODE START DEC HL ; BACK UP TO OPCODE START
@@ -5488,6 +5488,7 @@ SYS_RESUSER2:
; ;
#ENDIF #ENDIF
; ;
SYS_RESUSER3:
; RESET ACTIVE VIDEO DISPLAY ATTACHED TO EMULATOR ; RESET ACTIVE VIDEO DISPLAY ATTACHED TO EMULATOR
CALL TERM_RESET CALL TERM_RESET
; ;
@@ -8287,62 +8288,111 @@ HB_CPUSPD2:
RET ; AND DONE RET ; AND DONE
#ENDIF ; CPUFAM != CPU_EZ80 #ENDIF ; CPUFAM != CPU_EZ80
; ;
HB_UTIL_END .EQU $
;
;================================================================================================== ;==================================================================================================
; FONT MANAGEMENT ROUTINES ; FONT MANAGEMENT ROUTINES
;================================================================================================== ;==================================================================================================
; ;
; SELECT A FONT BASED ON THE FONT ID PASSED IN REGISTER A. THIS WILL ; 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 ; PREPARE TO STREAM FONT DATA VIA THE FNT_NEXT ROUTINE. USES AF, BC,
; HL. ; 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: FNT_SELECT:
; THE MAP IS CURRENTLY ASSUMED TO BE IN THE HBIOS BANK
LD E,A ; DESIRED FONT ID TO E 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 HL,FNT_MAP ; POINT TO START OF MAP
LD A,(HL) ; LOAD THE FONT ID FNT_SELECT0:
AND $7F ; REMOVE COMPRESSION BIT 7 CALL FNT_BYTE ; LOAD THE FONT ID FROM MAP
OR A ; CHECK OF END OF TABLE ;;;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 JR Z,FNT_SELECT_ERR ; IF SO, BAIL OUT W/ ERR
CP E ; CHECK FOR DESIRED FONT ID CP E ; CHECK FOR DESIRED FONT ID
JR Z,FNT_SELECT1 ; IF SO, LOCK IT IN JR Z,FNT_SELECT1 ; IF SO, LOCK IT IN
INC HL ; BUMP PAST FONT ID INC HL ; BUMP PAST FONT ID
INC HL ; BUMP TO INC HL ; BUMP TO
INC HL ; ... NEXT TABLE ENTRY INC HL ; ... NEXT TABLE ENTRY
JR FNT_SELECT ; AND LOOP JR FNT_SELECT0 ; AND LOOP
; ;
FNT_SELECT1: 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 INC HL ; BUMP PAST FONT ID
LD A,BID_BIOS ; FOR NOW, ASSUME FONT IN HBIOS CALL FNT_BYTE ; LO BYTE OF ADDRESS
LD (FNT_BID),A ; SAVE IT LD E,A ; PUT IN E
LD A,(HL) ; DEREF HL INC HL ; BUMP
INC HL CALL FNT_BYTE ; HI BYTE OF ADDRESS
LD H,(HL) LD D,A ; PUT IN D
LD L,A EX DE,HL ; FULL ADDRESS TO HL
BIT 7,E ; COMPRESSED FONT DATA? POP AF ; RECOVER FONT ID
AND $80 ; COMPRESSED FONT DATA?
JR Z,FNT_SELECT2 ; IF NOT, SKIP DECOMP JR Z,FNT_SELECT2 ; IF NOT, SKIP DECOMP
; ;
#IF ((CVDUENABLE | GDCENABLE | TMSENABLE | VGAENABLE | VRCENABLE) & USELZSA2) #IF ((CVDUENABLE | GDCENABLE | TMSENABLE | VGAENABLE | VRCENABLE) & USELZSA2)
; BELOW DOES NOT YET HANDLE COMPRESSED FONT DATA IN ROM!!! ;
PUSH HL ; SAVE COMP DATA PTR ; DECOMPRESS THE FONT DATA. WE USURP $E000-$EFFF AS A BUFFER FOR THE
LD HL,0 ; COPY SP ; DECOMPRESSED DATA. IF THE FONT DATA IS IN ROM, WE FIRST COPY THE
ADD HL,SP ; ... TO HL ; COMPRESSED DATA TO $D000-DFFF. THE BUFFER SIZES ARE LARGE ENOUGH TO
LD DE,$2100 ; SPACE FOR DECOMP BUF AND STACK ; CONTAIN THE LARGEST FONT IN ITS DECOMPRESSED STATE. THE BUFFER
CCF ; CLEAR CARRY ; LOCATIONS ARE SAFE DURING BOOT, BUT *NOT* FOR A RUNNING SYSTEM. SO,
SBC HL,DE ; HL IS START OF DECOMP BUF ; ANY FONT THAT MUST BE RELOADED AFTER BOOT WILL NEED TO BE SAVED IN
POP DE ; RECOVER COMP DATA PTR ; DECOMPRESSED STATE! SPECIFICALLY THE 6X8 TMS FONT.
EX DE,HL ; SWAP ;
PUSH DE ; SAVE START OF DECOMP BUF ;;;CALL PC_SPACE ; ** DEBUG ***
CALL DLZSA2 ; DECOMP ;;;LD A,'C' ; ** DEBUG ***
POP HL ; START OF DECOMP BUF ;;;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 #ELSE
JR FNT_SELECT_ERR ; OOPS, CAN'T DECOMPRESS JR FNT_SELECT_ERR ; OOPS, CAN'T DECOMPRESS
#ENDIF #ENDIF
; ;
FNT_SELECT2: FNT_SELECT2:
LD (FNT_PTR),HL ; SAVE STARTING POINTER 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 XOR A ; SIGNAL SUCCESS
RET RET
@@ -8352,41 +8402,38 @@ FNT_SELECT_ERR:
; ;
; RETURN THE NEXT BYTE OF FONT DATA IN REGISTER A. EACH CALL RETURNS ; 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 ; THE NEXT BYTE OF DATA. THERE IS NO INDICATION OF THE END OF THE
; FONT DATA. THE CALLER IS EXPECTED TO KNOW HOW MANY ; FONT DATA. THE CALLER CONTROLS NUMBER OF BYTES REQUESTED.
; BYTES OF FONT DATA WILL BE RETURNED. ONLY REGISTER A IS ; ONLY REGISTER A IS MODIFIED.
; MODIFIED.
;
ROMFONTS .EQU TRUE
; ;
FNT_NEXT: FNT_NEXT:
#IF ROMFONTS
PUSH HL 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 PUSH DE
LD A,(FNT_BID) LD A,(FNT_BID)
LD D,A LD D,A
LD HL,(FNT_PTR)
HB_DI HB_DI
CALL HBX_PEEK CALL HBX_PEEK
HB_EI HB_EI
INC HL
LD (FNT_PTR),HL
LD A,E LD A,E
POP DE POP DE
POP HL
RET 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_BID .DB 0 ; BANK CONTAINING FONT DATA
FNT_PTR .DW 0 ; POINTER TO NEXT BYTE OF DATA FNT_PTR .DW 0 ; POINTER TO NEXT BYTE OF DATA
; ;
HB_UTIL_END .EQU $
;
;================================================================================================== ;==================================================================================================
; DISPLAY SUMMARY OF ATTACHED UNITS/DEVICES ; DISPLAY SUMMARY OF ATTACHED UNITS/DEVICES
;================================================================================================== ;==================================================================================================
@@ -9604,85 +9651,88 @@ ORG_FONTS .EQU $
; ;
MEMECHO "FONTS" MEMECHO "FONTS"
; ;
#IFDEF USEFONT6X8 #IF !ROMFONTS
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
; ;
; HIGH BIT OF THE FONTID BYTE INDICATES THAT THE FONT DATA IS COMPRESSED ; HIGH BIT OF THE FONTID BYTE INDICATES THAT THE FONT DATA IS COMPRESSED
; ;
#IF USELZSA2 #IF USELZSA2
FNT_CMPMASK .EQU $80 FNT_CMPMASK .EQU $80
#ELSE #ELSE
FNT_CMPMASK .EQU $00 FNT_CMPMASK .EQU $00
#ENDIF #ENDIF
; ;
; FONT LOCATION MAP ; FONT LOCATION MAP
; ;
FNT_MAP: FNT_MAP:
#IFDEF USEFONT6X8 #IFDEF USEFONT6X8
; FOR NOW, WE NEVER COMPRESS THE 6X8 FONT. SEE TMS DRIVER. ; FOR NOW, WE NEVER COMPRESS THE 6X8 FONT. SEE TMS DRIVER.
;;; .DB FONTID_6X8 | FNT_CMPMASK ;;; .DB FONTID_6X8 | FNT_CMPMASK
.DB FONTID_6X8 .DB FONTID_6X8
.DW FONT6X8 .DW FONT6X8
#ENDIF #ENDIF
; ;
#IFDEF USEFONT8X8 #IFDEF USEFONT8X8
.DB FONTID_8X8 | FNT_CMPMASK .DB FONTID_8X8 | FNT_CMPMASK
.DW FONT8X8 .DW FONT8X8
#ENDIF #ENDIF
; ;
#IFDEF USEFONT8X11 #IFDEF USEFONT8X11
.DB FONTID_8X11 | FNT_CMPMASK .DB FONTID_8X11 | FNT_CMPMASK
.DW FONT8X11 .DW FONT8X11
#ENDIF #ENDIF
; ;
#IFDEF USEFONT8X16 #IFDEF USEFONT8X16
.DB FONTID_8X16 | FNT_CMPMASK .DB FONTID_8X16 | FNT_CMPMASK
.DW FONT8X16 .DW FONT8X16
#ENDIF #ENDIF
; ;
.DB 0 ; END OF TABLE .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 SIZ_FONTS .EQU $ - ORG_FONTS
MEMECHO " occupy " MEMECHO " occupy "

View File

@@ -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 BNK_NXTLOC .SET HWMON_IMGLOC + HWMON_SIZ ; IMG LOC OF NEXT COMPONENT
; ;
FONTS_BNK .EQU BNK_CUR FONTS_BNK .EQU BNK_CUR
FONTS_LOC .EQU $0000 FONTS_LOC .EQU BNK_NXTLOC
FONTS_SIZ .EQU $2100 FONTS_SIZ .EQU $2000
FONTS_END .EQU FONTS_LOC + FONTS_SIZ FONTS_END .EQU FONTS_LOC + FONTS_SIZ
FONTS_IMGLOC .EQU BNK_NXTLOC ; LOCATION OF BINARY LOAD IMAGE IN BANK FONTS_IMGLOC .EQU BNK_NXTLOC ; LOCATION OF BINARY LOAD IMAGE IN BANK
BNK_NXTLOC .SET FONTS_IMGLOC + FONTS_SIZ ; IMG LOC OF NEXT COMPONENT BNK_NXTLOC .SET FONTS_IMGLOC + FONTS_SIZ ; IMG LOC OF NEXT COMPONENT

View File

@@ -7,49 +7,68 @@
; FONTS. ; FONTS.
; ;
; FOR NOW, WE ARE JUST INCLUDING 3 FONTS AND THEY ARE NOT COMPRESSED. ; 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" #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 USEFONT6X8 .EQU TRUE
FMT_6X8 .EQU RAW
;
USEFONT8X8 .EQU TRUE USEFONT8X8 .EQU TRUE
USEFONT8X11 .EQU FALSE FMT_8X8 .EQU COMP
;
USEFONT8X11 .EQU TRUE
FMT_8X11 .EQU COMP
;
USEFONT8X16 .EQU TRUE USEFONT8X16 .EQU TRUE
FMT_8X16 .EQU COMP
; ;
.ORG FONTS_LOC .ORG FONTS_LOC
; ;
; FONT LOCATION MAP ; FONT LOCATION MAP
; ;
#IF USEFONT6X8 #IF USEFONT6X8
.DB FONTID_6X8 .DB FONTID_6X8 | FMT_6X8
.DW FONT6X8 .DW FONT6X8
#ENDIF #ENDIF
; ;
#IF USEFONT8X8 #IF USEFONT8X8
.DB FONTID_8X8 .DB FONTID_8X8 | FMT_8X8
.DW FONT8X8 .DW FONT8X8
#ENDIF #ENDIF
; ;
#IF USEFONT8X11 #IF USEFONT8X11
.DB FONTID_8X11 .DB FONTID_8X11 | FMT_8X11
.DW FONT8X11 .DW FONT8X11
#ENDIF #ENDIF
; ;
#IF USEFONT8X16 #IF USEFONT8X16
.DB FONTID_8X16 .DB FONTID_8X16 | FMT_8X16
.DW FONT8X16 .DW FONT8X16
#ENDIF #ENDIF
; ;
.DB 0 ; END OF TABLE .DB 0 ; END OF TABLE
; ;
; ; INCLUDE ACTUAL FONT FILES
; ;
#IF USEFONT6X8 #IF USEFONT6X8
.ECHO "FONT6X8: " .ECHO "FONT6X8: "
FONT6X8: FONT6X8:
#INCLUDE "font6x8u.asm" #IF (FMT_6X8 == COMP)
.ECHO "COMPRESSED "
#INCLUDE "font6x8c.asm"
#ELSE
.ECHO "RAW "
#INCLUDE "font6x8u.asm"
#ENDIF
.ECHO $ - FONT6X8 .ECHO $ - FONT6X8
.ECHO " BYTES\n" .ECHO " BYTES\n"
#ENDIF #ENDIF
@@ -57,7 +76,13 @@ FONT6X8:
#IF USEFONT8X8 #IF USEFONT8X8
.ECHO "FONT8X8: " .ECHO "FONT8X8: "
FONT8X8: FONT8X8:
#INCLUDE "font8x8u.asm" #IF (FMT_8X8 == COMP)
.ECHO "COMPRESSED "
#INCLUDE "font8x8c.asm"
#ELSE
.ECHO "RAW "
#INCLUDE "font8x8u.asm"
#ENDIF
.ECHO $ - FONT8X8 .ECHO $ - FONT8X8
.ECHO " BYTES\n" .ECHO " BYTES\n"
#ENDIF #ENDIF
@@ -65,7 +90,13 @@ FONT8X8:
#IF USEFONT8X11 #IF USEFONT8X11
.ECHO "FONT8X11: " .ECHO "FONT8X11: "
FONT8X11: FONT8X11:
#INCLUDE "font8x11u.asm" #IF (FMT_8X11 == COMP)
.ECHO "COMPRESSED "
#INCLUDE "font8x11c.asm"
#ELSE
.ECHO "RAW "
#INCLUDE "font8x11u.asm"
#ENDIF
.ECHO $ - FONT8X11 .ECHO $ - FONT8X11
.ECHO " BYTES\n" .ECHO " BYTES\n"
#ENDIF #ENDIF
@@ -73,7 +104,13 @@ FONT8X11:
#IF USEFONT8X16 #IF USEFONT8X16
.ECHO "FONT8X16: " .ECHO "FONT8X16: "
FONT8X16: FONT8X16:
#INCLUDE "font8x16u.asm" #IF (FMT_8X16 == COMP)
.ECHO "COMPRESSED "
#INCLUDE "font8x16c.asm"
#ELSE
.ECHO "RAW "
#INCLUDE "font8x16u.asm"
#ENDIF
.ECHO $ - FONT8X16 .ECHO $ - FONT8X16
.ECHO " BYTES\n" .ECHO " BYTES\n"
#ENDIF #ENDIF

View File

@@ -2,7 +2,7 @@
#DEFINE RMN 6 #DEFINE RMN 6
#DEFINE RUP 0 #DEFINE RUP 0
#DEFINE RTP 0 #DEFINE RTP 0
#DEFINE BIOSVER "3.6.0-dev.6" #DEFINE BIOSVER "3.6.0-dev.7"
#define rmj RMJ #define rmj RMJ
#define rmn RMN #define rmn RMN
#define rup RUP #define rup RUP

View File

@@ -3,5 +3,5 @@ rmn equ 6
rup equ 0 rup equ 0
rtp equ 0 rtp equ 0
biosver macro biosver macro
db "3.6.0-dev.6" db "3.6.0-dev.7"
endm endm