From 9358299f142de1d8caf122f9105170fa247cf197 Mon Sep 17 00:00:00 2001 From: Wayne Warthen Date: Sun, 7 May 2023 16:27:25 -0700 Subject: [PATCH] Z280 Workaround for VGARC Z280 is having an issue with OTDR instruction when loading the font for VGARC. For now, the use of OTDR has been eliminated. --- Doc/ChangeLog.txt | 1 + Source/Doc/UserGuide.md | 5 ++++- Source/Fonts/Build.cmd | 5 +++-- Source/Fonts/Makefile | 9 ++++++--- Source/Fonts/fontvgarcu.bin | Bin 0 -> 1024 bytes Source/HBIOS/Makefile | 3 ++- Source/HBIOS/hbios.asm | 10 ++++++++++ Source/HBIOS/vrc.asm | 29 ++++++++++++++++++++++++++--- Source/ver.inc | 2 +- Source/ver.lib | 2 +- 10 files changed, 54 insertions(+), 12 deletions(-) create mode 100644 Source/Fonts/fontvgarcu.bin diff --git a/Doc/ChangeLog.txt b/Doc/ChangeLog.txt index 5d55b78c..0d7610d9 100644 --- a/Doc/ChangeLog.txt +++ b/Doc/ChangeLog.txt @@ -5,6 +5,7 @@ Version 3.3 - A?C: Support for SD PIO - A?C: Support for Z80-Retro SD interface - WBW: Support per-drive floppy configuration +- WBW: Support for Bill Shen's VGARC Version 3.2.1 ------------- diff --git a/Source/Doc/UserGuide.md b/Source/Doc/UserGuide.md index 294c7cf4..9424ed1f 100644 --- a/Source/Doc/UserGuide.md +++ b/Source/Doc/UserGuide.md @@ -3808,6 +3808,7 @@ the RomWBW HBIOS configuration. - WDC Floppy Disk Controller w/ 3.5" HD Drives - Onboard IDE Hard Disk Interface Module - PPIDE Hard Disk Interface Module + - VGARC Video & Keyboard Module - Serial baud rate is usually determined by hardware for ACIA and SIO interfaces @@ -3831,6 +3832,7 @@ the RomWBW HBIOS configuration. - WDC Floppy Disk Controller w/ 3.5" HD Drives - Onboard IDE Hard Disk Interface Module - PPIDE Hard Disk Interface Module + - VGARC Video & Keyboard Module - Serial baud rate is usually determined by hardware for ACIA and SIO interfaces @@ -3854,6 +3856,7 @@ the RomWBW HBIOS configuration. - WDC Floppy Disk Controller w/ 3.5" HD Drives - Onboard IDE Hard Disk Interface Module - PPIDE Hard Disk Interface Module + - VGARC Video & Keyboard Module - Serial baud rate is usually determined by hardware for ACIA and SIO interfaces @@ -3923,6 +3926,6 @@ may be discovered by RomWBW in your system. | USB-FIFO | Char | FT232H-based ECB USB FIFO | | VDU | Video | MC6845 Family Video Display Controller | | VGA | Video | HD6445CP4-based Video Display Controller | -| VRC | Video | VGARC Video Display Controller s | +| VRC | Video | VGARC Video Display Controller | | YM | Audio | YM2612 Programmable Sound Generator | | Z2U | Char | Zilog Z280 CPU Built-in Serial Ports | diff --git a/Source/Fonts/Build.cmd b/Source/Fonts/Build.cmd index d41f7a41..9032d1bb 100644 --- a/Source/Fonts/Build.cmd +++ b/Source/Fonts/Build.cmd @@ -11,8 +11,8 @@ echo Preparing compressed font files... lzsa -f2 -r font8x8u.bin font8x8c.bin || exit /b lzsa -f2 -r font8x11u.bin font8x11c.bin || exit /b lzsa -f2 -r font8x16u.bin font8x16c.bin || exit /b - lzsa -f2 -r fontcgau.bin fontcgac.bin || exit /b +lzsa -f2 -r fontvgarcu.bin fontvgarcc.bin || exit /b fonttool font8x8u.bin > font8x8u.asm || exit /b fonttool font8x11u.bin > font8x11u.asm || exit /b @@ -20,6 +20,7 @@ fonttool font8x16u.bin > font8x16u.asm || exit /b fonttool font8x8c.bin > font8x8c.asm || exit /b fonttool font8x11c.bin > font8x11c.asm || exit /b fonttool font8x16c.bin > font8x16c.asm || exit /b - fonttool fontcgau.bin > fontcgau.asm || exit /b fonttool fontcgac.bin > fontcgac.asm || exit /b +fonttool fontvgarcu.bin > fontvgarcu.asm || exit /b +fonttool fontvgarcc.bin > fontvgarcc.asm || exit /b diff --git a/Source/Fonts/Makefile b/Source/Fonts/Makefile index dae4a305..75b4e705 100644 --- a/Source/Fonts/Makefile +++ b/Source/Fonts/Makefile @@ -1,8 +1,8 @@ OBJECTS = \ - font8x8u.asm font8x11u.asm font8x16u.asm fontcgau.asm \ - font8x8c.asm font8x11c.asm font8x16c.asm fontcgac.asm + font8x8u.asm font8x11u.asm font8x16u.asm fontcgau.asm fontvgarcu.asm \ + font8x8c.asm font8x11c.asm font8x16c.asm fontcgac.asm fontvgarcc.asm -OTHERS = font8x8c.bin font8x11c.bin font8x16c.bin fontcgac.bin +OTHERS = font8x8c.bin font8x11c.bin font8x16c.bin fontcgac.bin fontvgarcc.bin TOOLS = ../../Tools @@ -26,5 +26,8 @@ font8x16c.bin: font8x16u.bin fontcgac.bin: fontcgau.bin $(BINDIR)/lzsa -f2 -r $< $@ +fontvgarcc.bin: fontvgarcu.bin + $(BINDIR)/lzsa -f2 -r $< $@ + %.asm: %.bin $(BINDIR)/bin2asm $< > $@ diff --git a/Source/Fonts/fontvgarcu.bin b/Source/Fonts/fontvgarcu.bin new file mode 100644 index 0000000000000000000000000000000000000000..91b53d17e34bfc35bb6022c3ffc3755a8167feed GIT binary patch literal 1024 zcmX|AyJ{RU6g`;17KsfiRT!@@TTH1U1Qk;Vqhg9JwwS`j7F#SP#T2f>6hg4%58UMg z{0r#}4h#N?r1vkx5UiZ5aeUC~&VA@Uj=d!@ZQ}!*eMG-PL}7)u9|7a(+0J#mQNEdP+b(9J0x#IX-EczkhK0;q2qf z%VL4MG(L^#4%kk4+A`DeMZP!&Ly2sb0xVH}eEm!y|NMP5}@wq zik_o##2pAFREfvO#{w*G%FR*?GEsHRbImcddd+Duj{R(DQ_BVGgHyK}yPeW@wSrx* z?a+UMbGF85E6}i7KwImRZ|TxHG2x6km}I=`K*M|i@NqTlqK9^J-cxUk4N0VLXji7~ z6X#1IOrp~{Mam@Stz}%4C9-RjV*%%6y-6!otQKBao{QgdveuD#ecTM2P|wE{BbZzk z?I8r_r9w=#eqdkH2R-87uq5c@u?VtP`)>&8C-&>@x{qKikr2m$VG(gRtZKYybN;t{ zF$%9zyqA12)cHxGK~ z{$G-BI?lthOf@lp9k9QKR+&@ui98u=C*d8Sy=#03w>?27rA-3`!%Dpip%PH7Vh6qq zWPoyxmwYlmD#KH#`Ir#6URrxgyC(tkOF7O9u*$VOtU76x1K+3E9qU)W*IVXOj`Oq6 at+o8Wk`wtkrA`&!N4sVyq5a641O5SrA;=T} literal 0 HcmV?d00001 diff --git a/Source/HBIOS/Makefile b/Source/HBIOS/Makefile index f002e93b..504cfd13 100644 --- a/Source/HBIOS/Makefile +++ b/Source/HBIOS/Makefile @@ -24,7 +24,8 @@ endif include $(TOOLS)/Makefile.inc -FONTS := font8x11c.asm font8x11u.asm font8x16c.asm font8x16u.asm font8x8c.asm font8x8u.asm fontcgac.asm fontcgau.asm +FONTS := font8x11c.asm font8x11u.asm font8x16c.asm font8x16u.asm font8x8c.asm font8x8u.asm \ + fontcgac.asm fontcgau.asm fontvgarcc.asm fontvgarcu.asm ifeq ($(CPUFAM),2) TASM=$(BINDIR)/uz80as -t hd64180 diff --git a/Source/HBIOS/hbios.asm b/Source/HBIOS/hbios.asm index 90938132..8d8464ee 100644 --- a/Source/HBIOS/hbios.asm +++ b/Source/HBIOS/hbios.asm @@ -6225,6 +6225,16 @@ FONTCGA: .ECHO " CGA" #ENDIF ; +#IFDEF USEFONTVGARC +FONTVGARC: + #IF USELZSA2 + #INCLUDE "fontvgarcc.asm" + #ELSE + #INCLUDE "fontvgarcu.asm" + #ENDIF + .ECHO " VGARC" +#ENDIF +; SIZ_FONTS .EQU $ - ORG_FONTS .ECHO " occupy " .ECHO SIZ_FONTS diff --git a/Source/HBIOS/vrc.asm b/Source/HBIOS/vrc.asm index a436a9b1..d9751cdb 100644 --- a/Source/HBIOS/vrc.asm +++ b/Source/HBIOS/vrc.asm @@ -21,8 +21,8 @@ VRC_KBDST .EQU $F5 VRC_ROWS .EQU 48 VRC_COLS .EQU 64 ; -#DEFINE USEFONT8X8 -#DEFINE VRC_FONT FONT8X8 +#DEFINE USEFONTVGARC +#DEFINE VRC_FONT FONTVGARC ; TERMENABLE .SET TRUE ; INCLUDE TERMINAL PSEUDODEVICE DRIVER ; @@ -283,9 +283,14 @@ VRC_LOADFONT: 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 HL,ENDFONT-1 LD BC,VRC_FONTBASE+3 ; WORK BACKWARDS OTDR ; DO 4 PAGES DEC C @@ -295,6 +300,24 @@ VRC_LOADFONT: 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) + 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 diff --git a/Source/ver.inc b/Source/ver.inc index 4531ae07..714cc992 100644 --- a/Source/ver.inc +++ b/Source/ver.inc @@ -2,7 +2,7 @@ #DEFINE RMN 3 #DEFINE RUP 0 #DEFINE RTP 0 -#DEFINE BIOSVER "3.3.0-dev.10" +#DEFINE BIOSVER "3.3.0-dev.11" #define rmj RMJ #define rmn RMN #define rup RUP diff --git a/Source/ver.lib b/Source/ver.lib index 576e76d8..1af700cc 100644 --- a/Source/ver.lib +++ b/Source/ver.lib @@ -3,5 +3,5 @@ rmn equ 3 rup equ 0 rtp equ 0 biosver macro - db "3.3.0-dev.10" + db "3.3.0-dev.11" endm