Browse Source

Merge branch 'master' into map/slc-inv-rom

pull/577/head
Mark Pruden 7 months ago
committed by GitHub
parent
commit
782e614b29
No known key found for this signature in database GPG Key ID: B5690EEEBB952194
  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. 52
      Source/HBIOS/cvdu.asm
  27. 281
      Source/HBIOS/hbios.asm
  28. 4
      Source/HBIOS/layout.inc
  29. 59
      Source/HBIOS/romfonts.asm
  30. 14
      Source/HBIOS/romldr.asm
  31. 31
      Source/HBIOS/tms.asm
  32. 43
      Source/HBIOS/vga.asm
  33. 57
      Source/HBIOS/vrc.asm
  34. 2
      Source/ver.inc
  35. 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
- MAP: New Slice Inventory Rom App "S" display bootable slices, during boot
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)

52
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

281
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

4
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

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

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

31
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

43
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

57
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

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.8"
#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.8"
endm

Loading…
Cancel
Save