From 9a503696c8882b569da18b3efeda2e38487cd90d Mon Sep 17 00:00:00 2001 From: Wayne Warthen Date: Sat, 2 Jul 2022 19:25:06 -0700 Subject: [PATCH 1/2] Improve CF Card Identification Added additional CF Card signatures. Credit to Laszlo Szolnoki. --- Source/HBIOS/ide.asm | 36 ++++++++++++++++++++++++------------ Source/HBIOS/ppide.asm | 33 +++++++++++++++++++++++---------- Source/ver.inc | 2 +- Source/ver.lib | 2 +- 4 files changed, 49 insertions(+), 24 deletions(-) diff --git a/Source/HBIOS/ide.asm b/Source/HBIOS/ide.asm index 9c05c54c..f43e4468 100644 --- a/Source/HBIOS/ide.asm +++ b/Source/HBIOS/ide.asm @@ -1246,19 +1246,31 @@ IDE_INITDEV00: CALL DUMP_BUFFER ; DUMP IT IF DEBUGGING #ENDIF ; - XOR A LD (IY+IDE_MED),0 ; CLEAR FLAGS - - ; DETERMINE IF CF DEVICE - LD HL,HB_WRKBUF ; FIRST WORD OF IDENTIFY DATA HAS CF FLAG - LD A,$8A ; FIRST BYTE OF MARKER IS $8A - CP (HL) ; COMPARE - JR NZ,IDE_INITDEV1 ; IF NO MATCH, NOT CF - INC HL - LD A,$84 ; SECOND BYTE OF MARKER IS $84 - CP (HL) ; COMPARE - JR NZ,IDE_INITDEV1 ; IF NOT MATCH, NOT CF - SET 0,(IY+IDE_MED) ; SET FLAGS BIT FOR CF MEDIA +; + ; DETERMINE IF CF DEVICE BY TESTING FOR CF CARD SIGNATURES + ; IN THEORY, THERE ARE SOME OTHER POSSIBLE VARIATIONS, BUT + ; THEY ARE NOT RECOMMENDED BY THE CF CARD SPEC AND MIGHT + ; OVERLAP WITH "REAL" HARD DISK SIGNATURES. I HAVE NEVER + ; SEEN A CF CARD THAT DID NOT USE ONE OF THE BELOW. + ; CREDIT TO LASZLO SZOLNOKI + LD BC,$848A ; STANDARD CF CARD SIGNATURE + CALL IDE_INITDEV000 ; TEST & SET + LD BC,$044A ; ALT SIG FOR NON-REMOVABLE + CALL IDE_INITDEV000 ; TEST & SET + LD BC,$0040 ; ALT SIG FOR NON-REMOVABLE + CALL IDE_INITDEV000 ; TEST & SET + JR IDE_INITDEV1 ; CONTINUE INIT +; +IDE_INITDEV000: + ; CHECK IF FIRST WORD OF IDENTIFY DATA MATCHES VALUE IN BC + ; AND SET CF FLAG IF SO + LD HL,(HB_WRKBUF) ; FIRST WORD OF IDENTIFY DATA + OR A ; CLEAR CARRY + SBC HL,BC ; COMPARE + RET NZ ; ABORT IF NOT EQUAL + SET 0,(IY+IDE_MED) ; ELSE SET FLAGS BIT FOR CF MEDIA + RET ; AND RETURN ; IDE_INITDEV1: ; DETERMINE IF LBA CAPABLE diff --git a/Source/HBIOS/ppide.asm b/Source/HBIOS/ppide.asm index 13c536f1..2b18f519 100644 --- a/Source/HBIOS/ppide.asm +++ b/Source/HBIOS/ppide.asm @@ -1273,16 +1273,29 @@ PPIDE_INITDEV00: ; LD (IY+PPIDE_MED),0 ; CLEAR MEDIA FLAGS ; - ; DETERMINE IF CF DEVICE - LD HL,HB_WRKBUF ; FIRST WORD OF IDENTIFY DATA HAS CF FLAG - LD A,$8A ; FIRST BYTE OF MARKER IS $8A - CP (HL) ; COMPARE - JR NZ,PPIDE_INITDEV1 ; IF NO MATCH, NOT CF - INC HL - LD A,$84 ; SECOND BYTE OF MARKER IS $84 - CP (HL) ; COMPARE - JR NZ,PPIDE_INITDEV1 ; IF NOT MATCH, NOT CF - SET 0,(IY+PPIDE_MED) ; SET FLAGS BIT FOR CF MEDIA + ; DETERMINE IF CF DEVICE BY TESTING FOR CF CARD SIGNATURES + ; IN THEORY, THERE ARE SOME OTHER POSSIBLE VARIATIONS, BUT + ; THEY ARE NOT RECOMMENDED BY THE CF CARD SPEC AND MIGHT + ; OVERLAP WITH "REAL" HARD DISK SIGNATURES. I HAVE NEVER + ; SEEN A CF CARD THAT DID NOT USE ONE OF THE BELOW. + ; CREDIT TO LASZLO SZOLNOKI + LD BC,$848A ; STANDARD CF CARD SIGNATURE + CALL PPIDE_INITDEV000 ; TEST & SET + LD BC,$044A ; ALT SIG FOR NON-REMOVABLE + CALL PPIDE_INITDEV000 ; TEST & SET + LD BC,$0040 ; ALT SIG FOR NON-REMOVABLE + CALL PPIDE_INITDEV000 ; TEST & SET + JR PPIDE_INITDEV1 ; CONTINUE INIT +; +PPIDE_INITDEV000: + ; CHECK IF FIRST WORD OF IDENTIFY DATA MATCHES VALUE IN BC + ; AND SET CF FLAG IF SO + LD HL,(HB_WRKBUF) ; FIRST WORD OF IDENTIFY DATA + OR A ; CLEAR CARRY + SBC HL,BC ; COMPARE + RET NZ ; ABORT IF NOT EQUAL + SET 0,(IY+PPIDE_MED) ; ELSE SET FLAGS BIT FOR CF MEDIA + RET ; AND RETURN ; PPIDE_INITDEV1: ; DETERMINE IF LBA CAPABLE diff --git a/Source/ver.inc b/Source/ver.inc index f92228a4..90b2cbf3 100644 --- a/Source/ver.inc +++ b/Source/ver.inc @@ -2,4 +2,4 @@ #DEFINE RMN 1 #DEFINE RUP 1 #DEFINE RTP 0 -#DEFINE BIOSVER "3.1.1-pre.177" +#DEFINE BIOSVER "3.1.1-pre.178" diff --git a/Source/ver.lib b/Source/ver.lib index e720a560..0814c961 100644 --- a/Source/ver.lib +++ b/Source/ver.lib @@ -3,5 +3,5 @@ rmn equ 1 rup equ 1 rtp equ 0 biosver macro - db "3.1.1-pre.177" + db "3.1.1-pre.178" endm From 0c61385df4adc25e216ae9857d9b52c9341d0f64 Mon Sep 17 00:00:00 2001 From: Wayne Warthen Date: Sun, 3 Jul 2022 15:21:30 -0700 Subject: [PATCH 2/2] RomDsk Makefile Compatibility Improvement Laszlo reported that the Unix make system was failing on openSuse Linux. Turns out that it did not like the syntax in one line of the Makefile in the RomDsk directory. This small change eliminates the incompatibility. --- Source/RomDsk/Makefile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Source/RomDsk/Makefile b/Source/RomDsk/Makefile index c94e9ab7..8d32a429 100644 --- a/Source/RomDsk/Makefile +++ b/Source/RomDsk/Makefile @@ -23,8 +23,8 @@ rom512_%.dat rom1024_%.dat: ROMAPPS=$(ROMAPPS1) $(ROMAPPS2) rom%_wbw.dat: BIOS=wbw rom%_una.dat: BIOS=una -rom128%.dat: - >$@ +rom128_%.dat: + touch $@ %.dat: ### Making ROM Disk $@