From a5de77438b6ce7bee86618e28e7ad944adc7e1ef Mon Sep 17 00:00:00 2001 From: Wayne Warthen Date: Tue, 5 Dec 2023 16:07:16 -0800 Subject: [PATCH] Resurrect BPBIOS Build - Corrected to handle latest changes in RomWBW HBIOS bank layout. --- Source/Apps/Build.cmd | 5 +---- Source/BPBIOS/Build.cmd | 4 ++-- Source/BPBIOS/ZCPR33/Build.cmd | 4 ++-- Source/BPBIOS/deblock.z80 | 9 +++++---- Source/BPBIOS/def-ww-z33.lib | 4 ++-- Source/BPBIOS/def-ww-z33bnk.lib | 4 ++-- Source/BPBIOS/def-ww-z34.lib | 4 ++-- Source/BPBIOS/def-ww-z34bnk.lib | 4 ++-- Source/BPBIOS/def-ww-z41bnk.lib | 4 ++-- Source/BPBIOS/hard-ww.z80 | 1 - Source/BPBIOS/hbios.z80 | 13 ++++++++----- Source/BPBIOS/romwbw.lib | 11 ++++++----- Source/ver.inc | 2 +- Source/ver.lib | 2 +- 14 files changed, 36 insertions(+), 35 deletions(-) diff --git a/Source/Apps/Build.cmd b/Source/Apps/Build.cmd index 709f0fc6..0776541e 100644 --- a/Source/Apps/Build.cmd +++ b/Source/Apps/Build.cmd @@ -1,13 +1,10 @@ @echo off setlocal -set TOOLS=../../Tools +set TOOLS=..\..\Tools set APPBIN=..\..\Binary\Apps - set PATH=%TOOLS%\tasm32;%TOOLS%\zxcc;%PATH% - set TASMTABS=%TOOLS%\tasm32 - set CPMDIR80=%TOOLS%/cpm/ call :asm syscopy || exit /b diff --git a/Source/BPBIOS/Build.cmd b/Source/BPBIOS/Build.cmd index 184aafec..0dd35170 100644 --- a/Source/BPBIOS/Build.cmd +++ b/Source/BPBIOS/Build.cmd @@ -3,8 +3,8 @@ setlocal pushd ZCPR33 && call Build || exit /b & popd -set PATH=%PATH%;..\..\Tools\zxcc;..\..\Tools\cpmtools; - +set TOOLS=..\..\Tools +set PATH=%PATH%;%TOOLS%\zxcc;%TOOLS%\cpmtools; set CPMDIR80=%TOOLS%/cpm/ call :makebp 33 diff --git a/Source/BPBIOS/ZCPR33/Build.cmd b/Source/BPBIOS/ZCPR33/Build.cmd index fbfb43f8..e246c353 100644 --- a/Source/BPBIOS/ZCPR33/Build.cmd +++ b/Source/BPBIOS/ZCPR33/Build.cmd @@ -1,8 +1,8 @@ @echo off setlocal -set PATH=%PATH%;..\..\..\Tools\zxcc;..\..\..\Tools\cpmtools; - +set TOOLS=..\..\..\Tools +set PATH=%PATH%;%TOOLS%\zxcc;%TOOLS%\cpmtools; set CPMDIR80=%TOOLS%/cpm/ copy ..\z3base.lib . || exit /b diff --git a/Source/BPBIOS/deblock.z80 b/Source/BPBIOS/deblock.z80 index 35dc4cbd..3d1f6062 100644 --- a/Source/BPBIOS/deblock.z80 +++ b/Source/BPBIOS/deblock.z80 @@ -268,10 +268,11 @@ MATCH: LD A,(SECMSK) ; Get the sector mask ; ; Modified to use HBIOS host buffer ; - ; HSTBUF is always in HBIOS bank where I/O is done - LD A,(TPABNK) ; TPA BANK - DEC A ; HBIOS bank is one below - LD C,A + ; HSTBUF is always in HBIOS bank where I/O is actually done + ; We need to refer to HBIOS bank using BPBIOS bank id + LD A,(HB_BNKEND) ; Undo the bank adjustment + SUB 80h ; ... and refer to HBIOS bank id + LD C,A ; Set Read Source Bank IF BANKED LD A,(DMABNK) ; Set Read Destination Bank ELSE diff --git a/Source/BPBIOS/def-ww-z33.lib b/Source/BPBIOS/def-ww-z33.lib index d5b833ad..a9cf430f 100644 --- a/Source/BPBIOS/def-ww-z33.lib +++ b/Source/BPBIOS/def-ww-z33.lib @@ -133,8 +133,8 @@ BNK1 EQU BID_COM ; Second TPA Bank (Common Bank) 48000H BNK2 EQU BID_SYS ; System Bank (BIOS, DOS, CPR) 50000H BNKU EQU 00H ; User Area Bank 58000H ; (set to 0 to disable) -BNK3 EQU BID_RAMD ; First Bank for RAM disk 60000H -BNKM EQU BID_RAMM ; Maximum Bank # F8000H +BNK3 EQU BID_BUF ; First Bank for RAM disk 60000H +BNKM EQU BID_BUF ; Maximum Bank # F8000H IF NO ; REMOVE CODE - NOT NEEDED WITH HBIOS makes a ; nice resource for Z180 programing in general diff --git a/Source/BPBIOS/def-ww-z33bnk.lib b/Source/BPBIOS/def-ww-z33bnk.lib index aaae6bf8..1f8a0942 100644 --- a/Source/BPBIOS/def-ww-z33bnk.lib +++ b/Source/BPBIOS/def-ww-z33bnk.lib @@ -133,8 +133,8 @@ BNK1 EQU BID_COM ; Second TPA Bank (Common Bank) 48000H BNK2 EQU BID_SYS ; System Bank (BIOS, DOS, CPR) 50000H BNKU EQU 00H ; User Area Bank 58000H ; (set to 0 to disable) -BNK3 EQU BID_RAMD ; First Bank for RAM disk 60000H -BNKM EQU BID_RAMM ; Maximum Bank # F8000H +BNK3 EQU BID_BUF ; First Bank for RAM disk 60000H +BNKM EQU BID_BUF ; Maximum Bank # F8000H IF NO ; REMOVE CODE - NOT NEEDED WITH HBIOS makes a ; nice resource for Z180 programing in general diff --git a/Source/BPBIOS/def-ww-z34.lib b/Source/BPBIOS/def-ww-z34.lib index d848a30b..262c731b 100644 --- a/Source/BPBIOS/def-ww-z34.lib +++ b/Source/BPBIOS/def-ww-z34.lib @@ -133,8 +133,8 @@ BNK1 EQU BID_COM ; Second TPA Bank (Common Bank) 48000H BNK2 EQU BID_SYS ; System Bank (BIOS, DOS, CPR) 50000H BNKU EQU 00H ; User Area Bank 58000H ; (set to 0 to disable) -BNK3 EQU BID_RAMD ; First Bank for RAM disk 60000H -BNKM EQU BID_RAMM ; Maximum Bank # F8000H +BNK3 EQU BID_BUF ; First Bank for RAM disk 60000H +BNKM EQU BID_BUF ; Maximum Bank # F8000H IF NO ; REMOVE CODE - NOT NEEDED WITH HBIOS makes a ; nice resource for Z180 programing in general diff --git a/Source/BPBIOS/def-ww-z34bnk.lib b/Source/BPBIOS/def-ww-z34bnk.lib index d67f369a..6a5a693e 100644 --- a/Source/BPBIOS/def-ww-z34bnk.lib +++ b/Source/BPBIOS/def-ww-z34bnk.lib @@ -133,8 +133,8 @@ BNK1 EQU BID_COM ; Second TPA Bank (Common Bank) 48000H BNK2 EQU BID_SYS ; System Bank (BIOS, DOS, CPR) 50000H BNKU EQU 00H ; User Area Bank 58000H ; (set to 0 to disable) -BNK3 EQU BID_RAMD ; First Bank for RAM disk 60000H -BNKM EQU BID_RAMM ; Maximum Bank # F8000H +BNK3 EQU BID_BUF ; First Bank for RAM disk 60000H +BNKM EQU BID_BUF ; Maximum Bank # F8000H IF NO ; REMOVE CODE - NOT NEEDED WITH HBIOS makes a ; nice resource for Z180 programing in general diff --git a/Source/BPBIOS/def-ww-z41bnk.lib b/Source/BPBIOS/def-ww-z41bnk.lib index 29d10136..e8e28a1b 100644 --- a/Source/BPBIOS/def-ww-z41bnk.lib +++ b/Source/BPBIOS/def-ww-z41bnk.lib @@ -133,8 +133,8 @@ BNK1 EQU BID_COM ; Second TPA Bank (Common Bank) 48000H BNK2 EQU BID_SYS ; System Bank (BIOS, DOS, CPR) 50000H BNKU EQU 00H ; User Area Bank 58000H ; (set to 0 to disable) -BNK3 EQU BID_RAMD ; First Bank for RAM disk 60000H -BNKM EQU BID_RAMM ; Maximum Bank # F8000H +BNK3 EQU BID_BUF ; First Bank for RAM disk 60000H +BNKM EQU BID_BUF ; Maximum Bank # F8000H IF NO ; REMOVE CODE - NOT NEEDED WITH HBIOS makes a ; nice resource for Z180 programing in general diff --git a/Source/BPBIOS/hard-ww.z80 b/Source/BPBIOS/hard-ww.z80 index 133520f6..b5943ac7 100644 --- a/Source/BPBIOS/hard-ww.z80 +++ b/Source/BPBIOS/hard-ww.z80 @@ -183,7 +183,6 @@ HDSK_RW1: POP BC ; RESTORE INCOMING FUNCTION, DEVICE/UNIT RET NZ ; ABORT IF SEEK RETURNED AN ERROR W/ ERROR IN A LD HL,(HB_DSKBUF) ; GET BUFFER ADDRESS - ;LD D,BID_HB ; BUFFER IN HBIOS BANK LD A,(HB_BNKBIOS) ; BUFFER IN HBIOS BANK LD D,A ; PUT IN D LD E,1 ; ONE SECTOR diff --git a/Source/BPBIOS/hbios.z80 b/Source/BPBIOS/hbios.z80 index aeacf43a..0a97670d 100644 --- a/Source/BPBIOS/hbios.z80 +++ b/Source/BPBIOS/hbios.z80 @@ -48,10 +48,12 @@ HBX_CPYLEN EQU 0FFE8H ; ------------ -------------- -------------- ; -1: BID_COM 90h - 1 = 8Fh ; -2: TPABNK BID_USR 90h - 2 = 8Eh - ; -3: BID_BIOS 90h - 3 = 8Dh - ; -4: SYSBNK BID_AUX 90h - 4 = 8Ch - ; -9: BNKM BID_AUX-5 90h - 9 = 87h - ; -16: RAMBNK RAMD0 90h - 16 = 80h + ; -3: SYSBNK BID_SYS 90h - 3 = 8Dh + ; -4: RAMBNK BID_BUF 90h - 4 = 8Ch + ; -4: MAXBNK BID_BUF 90h - 4 = 8Ch + ; -5: BID_RAMM 90h - 5 = 8BH + ; -15: BID_RAMD 90h - 15 = 81h (varies w/ memory size) + ; -16: BID_HB 90h - 16 = 80h (varies w/ memory size) HB_SELMEM: PUSH AF @@ -71,7 +73,8 @@ HB_SELMEM: CALL HBX_INVOKE ; DO IT, D=BID_BIOS, E=BID_USER LD A,D ; BID_BIOS LD (HB_BNKBIOS),A ; SET HB_BNKBIOS - ADD A,3 ; HBIOS + 3 + LD A,E ; BID_USER + ADD 2 ; ... + 2 LD (HB_BNKEND),A ; ... is the ending RAM bank IF BANKED LD (BNKADJ+1),A ; Dynamically update SELBNK diff --git a/Source/BPBIOS/romwbw.lib b/Source/BPBIOS/romwbw.lib index 36cc0d2c..ff9febb4 100644 --- a/Source/BPBIOS/romwbw.lib +++ b/Source/BPBIOS/romwbw.lib @@ -48,7 +48,7 @@ DRV_P SET NO ; YES if system has flopy drives ; ; RAM/ROM Bank Reserve ; -HB_RAMRESV EQU 8 ; RAM reserve is 8 banks +HB_RAMRESV EQU 5 ; RAM reserve is 8 banks HB_ROMRESV EQU 4 ; ROM reserve is 4 banks ; ; Layout of RAM banks @@ -56,10 +56,11 @@ HB_ROMRESV EQU 4 ; ROM reserve is 4 banks ; TODO: Query system via HBIOS API to determine the actual bank ; assignments, then adjust BPBIOS operation accordingly. ; -BID_RAMD EQU -16 ; 90h - 16 = 80h -BID_RAMM EQU -9 ; 90h - 9 = 87h -BID_SYS EQU -4 ; 90h - 4 = 8Ch -BID_HB EQU -3 ; 90h - 3 = 8Dh +BID_HB EQU -16 ; 90h - 16 = 80h +BID_RAMD EQU -15 ; 90h - 15 = 81h +BID_RAMM EQU -5 ; 90h - 5 = 8Bh +BID_BUF EQU -4 ; 90h - 4 = 8Ch +BID_SYS EQU -3 ; 90h - 3 = 8Dh BID_USR EQU -2 ; 90h - 2 = 8Eh BID_COM EQU -1 ; 90h - 1 = 8Fh ; diff --git a/Source/ver.inc b/Source/ver.inc index 21d16377..5b16860a 100644 --- a/Source/ver.inc +++ b/Source/ver.inc @@ -2,7 +2,7 @@ #DEFINE RMN 4 #DEFINE RUP 0 #DEFINE RTP 0 -#DEFINE BIOSVER "3.4.0-dev.27" +#DEFINE BIOSVER "3.4.0-dev.28" #define rmj RMJ #define rmn RMN #define rup RUP diff --git a/Source/ver.lib b/Source/ver.lib index f0aa5afd..0ba89db6 100644 --- a/Source/ver.lib +++ b/Source/ver.lib @@ -3,5 +3,5 @@ rmn equ 4 rup equ 0 rtp equ 0 biosver macro - db "3.4.0-dev.27" + db "3.4.0-dev.28" endm