Browse Source

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>
pull/578/head v3.6.0-dev.7
Wayne Warthen 7 months ago
parent
commit
00a6c8143a
No known key found for this signature in database GPG Key ID: 8B34ED29C07EEB0A
  1. 1
      Doc/ChangeLog.txt
  2. 1
      Source/HBIOS/cfg_DUO.asm
  3. 1
      Source/HBIOS/cfg_DYNO.asm
  4. 1
      Source/HBIOS/cfg_EPITX.asm
  5. 1
      Source/HBIOS/cfg_EZZ80.asm
  6. 1
      Source/HBIOS/cfg_FZ80.asm
  7. 1
      Source/HBIOS/cfg_GMZ180.asm
  8. 1
      Source/HBIOS/cfg_HEATH.asm
  9. 1
      Source/HBIOS/cfg_MASTER.asm
  10. 1
      Source/HBIOS/cfg_MBC.asm
  11. 1
      Source/HBIOS/cfg_MK4.asm
  12. 1
      Source/HBIOS/cfg_MON.asm
  13. 1
      Source/HBIOS/cfg_N8.asm
  14. 1
      Source/HBIOS/cfg_NABU.asm
  15. 1
      Source/HBIOS/cfg_RCEZ80.asm
  16. 1
      Source/HBIOS/cfg_RCZ180.asm
  17. 1
      Source/HBIOS/cfg_RCZ280.asm
  18. 1
      Source/HBIOS/cfg_RCZ80.asm
  19. 1
      Source/HBIOS/cfg_RPH.asm
  20. 1
      Source/HBIOS/cfg_S100.asm
  21. 1
      Source/HBIOS/cfg_SBC.asm
  22. 1
      Source/HBIOS/cfg_SCZ180.asm
  23. 1
      Source/HBIOS/cfg_Z80RETRO.asm
  24. 1
      Source/HBIOS/cfg_ZETA.asm
  25. 1
      Source/HBIOS/cfg_ZETA2.asm
  26. 258
      Source/HBIOS/hbios.asm
  27. 4
      Source/HBIOS/layout.inc
  28. 59
      Source/HBIOS/romfonts.asm
  29. 2
      Source/ver.inc
  30. 2
      Source/ver.lib

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

1
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)

1
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

1
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

1
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)

1
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)

1
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

1
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)

1
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

1
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)

1
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

1
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]
;

1
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

1
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)

1
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)

1
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

1
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

1
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)

1
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

1
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

1
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)

1
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

1
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)

1
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)

1
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)

258
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 "

4
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

59
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

2
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

2
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

Loading…
Cancel
Save