From da05245b4a7b709e00236fae434620fc5810bbd5 Mon Sep 17 00:00:00 2001 From: Wayne Warthen Date: Thu, 13 Feb 2025 16:06:43 -0800 Subject: [PATCH] Improved STRICTPART Implementation - Improved implementation of STRICTPART conditional based on comments from @kiwisincebirth. See Issue #490. --- Source/HBIOS/hbios.asm | 30 +++++++++++++----------------- Source/ver.inc | 2 +- Source/ver.lib | 2 +- 3 files changed, 15 insertions(+), 19 deletions(-) diff --git a/Source/HBIOS/hbios.asm b/Source/HBIOS/hbios.asm index 2a0c801f..8733d758 100644 --- a/Source/HBIOS/hbios.asm +++ b/Source/HBIOS/hbios.asm @@ -5137,20 +5137,10 @@ EXT_SLICE2A: ADD HL,DE ; MOVE HL FWD TO GET TO LBA OFFSET CP $2E ; CP/M PARTITION? JR Z,EXT_SLICE3B ; HD1K, GRAB THE LBA OFFSET - CP $00 ; IS ANOTHER PARTITION TYPE, NOT CPM - JR NZ,EXT_SLICE3A ; OTHER VALID PART TYPE -EXT_SLICE2B: - LD DE,12 ; REMAINING SIZE TO GET TO NEXT PARTITION -EXT_SLICE2C: - ADD HL,DE ; BUMP TO NEXT PARTITION ENTRY - TYPE - DJNZ EXT_SLICE2A ; LOOP THRU TABLE - JR EXT_SLICE3C ; READ ALL - NO CP/M PARTITION FOUND -; -EXT_SLICE3A: ; #IF (STRICTPART) ; -; THE FOLLOWING CODE RECORDS THE START OF A FOREIGN PARTITION AS THE IMPLIED +; THE FOLLOWING TEST RECORDS THE START OF A FOREIGN PARTITION AS THE IMPLIED ; END OF NON-PARTITIONED CP/M SPACE (HD512). THIS IS SUBSEQUENTLY USED TO ; ENSURE WE DON'T ACCESS AN HD512 SLICE THAT IS ACTUALLY INSIDE OF A ; FOREIGN PARTITION. HOWEVER, ROMWBW HAS PREVIOUSLY IGNORED FOREIGN @@ -5159,6 +5149,18 @@ EXT_SLICE3A: ; THE STRICTPART CONDITIONAL WILL ENABLE STRICT PARTITION TABLE ; VALIDATION, IF DESIRED. ; + CP $00 ; IS ANOTHER PARTITION TYPE, NOT CPM + JR NZ,EXT_SLICE3A ; OTHER VALID PART TYPE +#ENDIF +; +EXT_SLICE2B: + LD DE,12 ; REMAINING SIZE TO GET TO NEXT PARTITION +EXT_SLICE2C: + ADD HL,DE ; BUMP TO NEXT PARTITION ENTRY - TYPE + DJNZ EXT_SLICE2A ; LOOP THRU TABLE + JR EXT_SLICE3C ; READ ALL - NO CP/M PARTITION FOUND +; +EXT_SLICE3A: ; FOUND OTHER (NOT CPM) PARTITION LD A,(SLICE_FND) ; HAVE WE ALREADY FOUND PROCESSED NON CPM OR A ; PARTITION, AND CAPTURED ITS START SECTOR, SO @@ -5179,12 +5181,6 @@ EXT_SLICE3A: LD DE,8 ; AND INC HL BY 8 TO GET TO NEXT PARITION JR EXT_SLICE2C ; CONTINUE TO NEXT PARTITION ; -#ELSE -; - JR EXT_SLICE2B ; IGNORE FOREIGN PARTITIONS AND GO TO NEXT PART -; -#ENDIF -; EXT_SLICE3B: ; FOUND CP/M (HD1K) PARTITION - RECORD THIS LD A,MID_HDNEW ; DISCOVERED HD1K MEDIA diff --git a/Source/ver.inc b/Source/ver.inc index 6ec74358..5d59c5ef 100644 --- a/Source/ver.inc +++ b/Source/ver.inc @@ -2,7 +2,7 @@ #DEFINE RMN 5 #DEFINE RUP 0 #DEFINE RTP 0 -#DEFINE BIOSVER "3.5.0-beta.7" +#DEFINE BIOSVER "3.5.0-beta.8" #define rmj RMJ #define rmn RMN #define rup RUP diff --git a/Source/ver.lib b/Source/ver.lib index 67abdde2..851b616c 100644 --- a/Source/ver.lib +++ b/Source/ver.lib @@ -3,5 +3,5 @@ rmn equ 5 rup equ 0 rtp equ 0 biosver macro - db "3.5.0-beta.7" + db "3.5.0-beta.8" endm