diff --git a/Doc/ChangeLog.txt b/Doc/ChangeLog.txt index 705cf355..e73f96e5 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 - MAP: New Slice Inventory Rom App "S" display bootable slices, during boot 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/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..3c13dfb5 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,6 +8288,175 @@ HB_CPUSPD2: RET ; AND DONE #ENDIF ; CPUFAM != CPU_EZ80 ; +;================================================================================================== +; 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 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: + ;;;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 + LD D,FNT_BNKID ; D = BANK FOR FONT DATA + LD HL,FNT_MAP ; POINT TO START OF MAP +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_SELECT0 ; AND LOOP +; +FNT_SELECT1: + CALL FNT_BYTE ; GET FONT ID BYTE + PUSH AF ; SAVE IT + LD C,A ; SAVE IT IN E + INC HL ; BUMP PAST FONT ID + 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 + +;;;#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 +; +#IF ((CVDUENABLE | GDCENABLE | TMSENABLE | VGAENABLE | VRCENABLE) & USELZSA2) +; +; 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. +; + ;;;LD A,'C' ; ** DEBUG *** + ;;;CALL COUT ; ** DEBUG *** +; + #IF ROMFONTS + ; 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 + +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 CONTROLS NUMBER OF BYTES REQUESTED. +; ONLY REGISTER A IS MODIFIED. +; +FNT_NEXT: + 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: +#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 + HB_DI + CALL HBX_PEEK + HB_EI + 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 +; HB_UTIL_END .EQU $ ; ;================================================================================================== @@ -9506,68 +9676,87 @@ ORG_FONTS .EQU $ ; MEMECHO "FONTS" ; -#IFDEF USEFONT6X8 -FONT6X8: +#IF !ROMFONTS ; -; FOR NOW, WE NEVER COMPRESS THE 6X8 FONT. SEE TMS DRIVER. +; HIGH BIT OF THE FONTID BYTE INDICATES THAT THE FONT DATA IS COMPRESSED ; - #IF USELZSA2 & FALSE - #INCLUDE "font6x8c.asm" + #IF USELZSA2 +FNT_CMPMASK .EQU $80 #ELSE - #INCLUDE "font6x8u.asm" +FNT_CMPMASK .EQU $00 + #ENDIF +; +; 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 +; + #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 + #ENDIF ; -#IFDEF USEFONT8X8 + #IFDEF USEFONT8X8 FONT8X8: ; - #IF USELZSA2 - #INCLUDE "font8x8c.asm" - #ELSE - #INCLUDE "font8x8u.asm" - #ENDIF + #IF USELZSA2 + #INCLUDE "font8x8c.asm" + #ELSE + #INCLUDE "font8x8u.asm" + #ENDIF MEMECHO " 8X8" -#ENDIF + #ENDIF ; -#IFDEF USEFONT8X11 + #IFDEF USEFONT8X11 FONT8X11: - #IF USELZSA2 - #INCLUDE "font8x11c.asm" - #ELSE - #INCLUDE "font8x11u.asm" - #ENDIF + #IF USELZSA2 + #INCLUDE "font8x11c.asm" + #ELSE + #INCLUDE "font8x11u.asm" + #ENDIF MEMECHO " 8X11" -#ENDIF + #ENDIF ; -#IFDEF USEFONT8X16 + #IFDEF USEFONT8X16 FONT8X16: - #IF USELZSA2 - #INCLUDE "font8x16c.asm" - #ELSE - #INCLUDE "font8x16u.asm" - #ENDIF + #IF USELZSA2 + #INCLUDE "font8x16c.asm" + #ELSE + #INCLUDE "font8x16u.asm" + #ENDIF MEMECHO " 8X16" -#ENDIF -; -#IFDEF USEFONTCGA -FONTCGA: - #IF USELZSA2 - #INCLUDE "fontcgac.asm" - #ELSE - #INCLUDE "fontcgau.asm" #ENDIF - MEMECHO " CGA" -#ENDIF ; -#IFDEF USEFONTVGARC -FONTVGARC: - #IF USELZSA2 - #INCLUDE "fontvgarcc.asm" - #ELSE - #INCLUDE "fontvgarcu.asm" - #ENDIF - MEMECHO " VGARC" #ENDIF ; SIZ_FONTS .EQU $ - ORG_FONTS diff --git a/Source/HBIOS/layout.inc b/Source/HBIOS/layout.inc index f1d55548..714318e1 100644 --- a/Source/HBIOS/layout.inc +++ b/Source/HBIOS/layout.inc @@ -193,8 +193,8 @@ SLC_IMGLOC .EQU BNK_NXTLOC ; LOCATION OF BINARY LOAD IMAGE IN BANK BNK_NXTLOC .SET SLC_IMGLOC + SLC_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/HBIOS/romldr.asm b/Source/HBIOS/romldr.asm index 62037e09..b75eaa78 100644 --- a/Source/HBIOS/romldr.asm +++ b/Source/HBIOS/romldr.asm @@ -1585,7 +1585,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 @@ -2663,12 +2663,12 @@ ra_tbl: ; Name Key Dsky Bank Src Dest Size Entry ; --------- ------- ----- -------- ----- ------- ------- ---------- ra_ent(str_mon, 'M', KY_CL, MON_BNK, MON_IMGLOC, MON_LOC, MON_SIZ, MON_SERIAL) -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) - #endif -#endif +ra_entsiz .equ $ - ra_tbl +#if (BIOS == BIOS_WBW) + #if (PLATFORM == PLT_S100) +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) ra_ent(str_zsys, 'Z', KY_FW, ZSYS_BNK, ZSYS_IMGLOC, CPM_LOC, CPM_SIZ, CPM_ENT) #if (BIOS == BIOS_WBW) 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..bdc9414c 100644 --- a/Source/HBIOS/vrc.asm +++ b/Source/HBIOS/vrc.asm @@ -24,6 +24,9 @@ VRC_COLS .EQU 64 #DEFINE USEFONT8X8 #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 ; @@ -70,6 +73,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 +277,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 diff --git a/Source/ver.inc b/Source/ver.inc index ead423b3..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.6" +#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 abc87464..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.6" + db "3.6.0-dev.8" endm