diff --git a/Source/HBIOS/ide.asm b/Source/HBIOS/ide.asm index dbc8326f..60ecebef 100644 --- a/Source/HBIOS/ide.asm +++ b/Source/HBIOS/ide.asm @@ -192,7 +192,7 @@ IDE_CFGTBL: #IF (IDECNT >= 1) ; IDE_DEV0M: ; DEVICE 0, MASTER - .DB 0 ; DRIVER DEVICE NUMBER + .DB $FE ; DRIVER DEVICE NUMBER (FILLED DYNAMICALLY) .DB IDE0MODE ; DRIVER DEVICE MODE .DB 0 ; DEVICE STATUS .DB 0 ; DEVICE TYPE @@ -206,7 +206,7 @@ IDE_DEV0M: ; DEVICE 0, MASTER .DW IDE_DEV0S ; PARTNER ; IDE_DEV0S: ; DEVICE 0, SLAVE - .DB 0 ; DRIVER DEVICE NUMBER + .DB $FE ; DRIVER DEVICE NUMBER (FILLED DYNAMICALLY) .DB IDE0MODE ; DRIVER DEVICE MODE .DB 0 ; DEVICE STATUS .DB 0 ; DEVICE TYPE @@ -223,7 +223,7 @@ IDE_DEV0S: ; DEVICE 0, SLAVE #IF (IDECNT >= 2) ; IDE_DEV1M: ; DEVICE 1, MASTER - .DB 0 ; DRIVER DEVICE NUMBER + .DB $FE ; DRIVER DEVICE NUMBER (FILLED DYNAMICALLY) .DB IDE1MODE ; DRIVER DEVICE MODE .DB 0 ; DEVICE STATUS .DB 0 ; DEVICE TYPE @@ -237,7 +237,7 @@ IDE_DEV1M: ; DEVICE 1, MASTER .DW IDE_DEV1S ; PARTNER ; IDE_DEV1S: ; DEVICE 1, SLAVE - .DB 0 ; DRIVER DEVICE NUMBER + .DB $FE ; DRIVER DEVICE NUMBER (FILLED DYNAMICALLY) .DB IDE1MODE ; DRIVER DEVICE MODE .DB 0 ; DEVICE STATUS .DB 0 ; DEVICE TYPE @@ -254,7 +254,7 @@ IDE_DEV1S: ; DEVICE 1, SLAVE #IF (IDECNT >= 3) ; IDE_DEV2M: ; DEVICE 2, MASTER - .DB 0 ; DRIVER DEVICE NUMBER + .DB $FE ; DRIVER DEVICE NUMBER (FILLED DYNAMICALLY) .DB IDE2MODE ; DRIVER DEVICE MODE .DB 0 ; DEVICE STATUS .DB 0 ; DEVICE TYPE @@ -268,7 +268,7 @@ IDE_DEV2M: ; DEVICE 2, MASTER .DW IDE_DEV2S ; PARTNER ; IDE_DEV2S: ; DEVICE 2, SLAVE - .DB 0 ; DRIVER DEVICE NUMBER + .DB $FE ; DRIVER DEVICE NUMBER (FILLED DYNAMICALLY) .DB IDE2MODE ; DRIVER DEVICE MODE .DB 0 ; DEVICE STATUS .DB 0 ; DEVICE TYPE @@ -1256,18 +1256,27 @@ IDE_INITDEV00: ; #IF (IDETRACE >= 3) CALL IDE_PRTPREFIX - PRTS("SIG=0x$") + PRTS(" SIG=0x$") LD BC,(HB_WRKBUF) CALL PRTHEXWORD #ENDIF ; - LD BC,$848A ; STANDARD CF CARD SIGNATURE - CALL IDE_INITDEV000 ; TEST & SET - LD BC,$044A ; ALT SIG FOR CF +; SEE PAGE 114 OF CF+ & CF SPECIFICATION REV. 3.0 FOR CF CARD +; SIGNATURE VALUES. ALL OF THE BELOW ARE DOCUMENTED THERE EXCEPT +; $045A WHICH IS A VALUE DISCOVERED ON A CF<->SD CARD ADAPTER. +; +; SIGNATURE $045A IS NOT LISTED IN THE CF SPEC. IT WAS ADDED BECAUSE +; IT WAS SEEN IN THE WILD ON A CF-SD ADAPTER. HOWEVER IT HAS NOW +; ALSO BEEN SEEN ON A SPINNING HARD DISK. SINCE IT IS AMBIGUOUS, I +; WILL CONSIDER IT TO BE A HARD DISK. +; + LD BC,$848A ; STANDARD CF CARD SIGNATURE %1000 1111 1000 1010 CALL IDE_INITDEV000 ; TEST & SET - LD BC,$045A ; ALT SIG FOR CF + LD BC,$044A ; ALT SIG FOR CF NON-REMOVABLE %0000 0100 0100 1010 CALL IDE_INITDEV000 ; TEST & SET - LD BC,$0040 ; ALT SIG FOR CF NON-REMOVABLE + ;LD BC,$045A ; ?ALT SIG FOR CF NON-REMOVABLE %0000 0100 0101 1010 + ;CALL IDE_INITDEV000 ; TEST & SET + LD BC,$0040 ; ALT SIG FOR CF NON-REMOVABLE %0000 0000 0100 0000 CALL IDE_INITDEV000 ; TEST & SET JR IDE_INITDEV1 ; CONTINUE INIT ; @@ -1552,8 +1561,10 @@ IDE_PRTPREFIX: CALL NEWLINE PRTS("IDE$") LD A,(IY+IDE_DEV) ; GET CURRENT DEVICE NUM - ADD A,'0' - CALL COUT + CP $FE ; NOT YET ASSIGNED? + JR Z,IDE_PRTPREFIX1 ; SKIP DEV NUM IF SO + CALL PRTDECB +IDE_PRTPREFIX1: CALL PC_COLON POP AF RET diff --git a/Source/HBIOS/ppide.asm b/Source/HBIOS/ppide.asm index b638f861..9fc40047 100644 --- a/Source/HBIOS/ppide.asm +++ b/Source/HBIOS/ppide.asm @@ -209,7 +209,7 @@ PPIDE_CFGTBL: #IF (PPIDECNT >= 1) ; PPIDE_DEV0M: ; DEVICE 0, MASTER - .DB 0 ; DRIVER RELATIVE DEVICE NUMBER (ASSIGNED DURING INIT) + .DB $FE ; DRIVER DEVICE NUMBER (FILLED DYNAMICALLY) .DB 0 ; DEVICE STATUS .DB 0 ; DEVICE TYPE .DB PPIDE_ACC_MAS | (PPIDE0A8BIT & PPIDE_ACC_8BIT) ; UNIT ACCESS FLAGS @@ -222,7 +222,7 @@ PPIDE_DEV0M: ; DEVICE 0, MASTER .DW PPIDE_DEV0S ; PARTNER ; PPIDE_DEV0S: ; DEVICE 0, SLAVE - .DB 0 ; DRIVER RELATIVE DEVICE NUMBER (ASSIGNED DURING INIT) + .DB $FE ; DRIVER DEVICE NUMBER (FILLED DYNAMICALLY) .DB 0 ; DEVICE STATUS .DB 0 ; DEVICE TYPE .DB (PPIDE0B8BIT & PPIDE_ACC_8BIT) ; UNIT ACCESS FLAGS @@ -239,7 +239,7 @@ PPIDE_DEV0S: ; DEVICE 0, SLAVE #IF (PPIDECNT >= 2) ; PPIDE_DEV1M: ; DEVICE 1, MASTER - .DB 0 ; DRIVER RELATIVE DEVICE NUMBER (ASSIGNED DURING INIT) + .DB $FE ; DRIVER DEVICE NUMBER (FILLED DYNAMICALLY) .DB 0 ; DEVICE STATUS .DB 0 ; DEVICE TYPE .DB PPIDE_ACC_MAS | (PPIDE1A8BIT & PPIDE_ACC_8BIT) ; UNIT ACCESS FLAGS @@ -252,7 +252,7 @@ PPIDE_DEV1M: ; DEVICE 1, MASTER .DW PPIDE_DEV1S ; PARTNER ; PPIDE_DEV1S: ; DEVICE 1, SLAVE - .DB 0 ; DRIVER RELATIVE DEVICE NUMBER (ASSIGNED DURING INIT) + .DB $FE ; DRIVER DEVICE NUMBER (FILLED DYNAMICALLY) .DB 0 ; DEVICE STATUS .DB 0 ; DEVICE TYPE .DB (PPIDE1B8BIT & PPIDE_ACC_8BIT) ; UNIT ACCESS FLAGS @@ -269,7 +269,7 @@ PPIDE_DEV1S: ; DEVICE 1, SLAVE #IF (PPIDECNT >= 3) ; PPIDE_DEV2M: ; DEVICE 2, MASTER - .DB 0 ; DRIVER RELATIVE DEVICE NUMBER (ASSIGNED DURING INIT) + .DB $FE ; DRIVER DEVICE NUMBER (FILLED DYNAMICALLY) .DB 0 ; DEVICE STATUS .DB 0 ; DEVICE TYPE .DB PPIDE_ACC_MAS | (PPIDE2A8BIT & PPIDE_ACC_8BIT) ; UNIT ACCESS FLAGS @@ -282,7 +282,7 @@ PPIDE_DEV2M: ; DEVICE 2, MASTER .DW PPIDE_DEV2S ; PARTNER ; PPIDE_DEV2S: ; DEVICE 2, SLAVE - .DB 0 ; DRIVER RELATIVE DEVICE NUMBER (ASSIGNED DURING INIT) + .DB $FE ; DRIVER DEVICE NUMBER (FILLED DYNAMICALLY) .DB 0 ; DEVICE STATUS .DB 0 ; DEVICE TYPE .DB (PPIDE2B8BIT & PPIDE_ACC_8BIT) ; UNIT ACCESS FLAGS @@ -1280,19 +1280,28 @@ PPIDE_INITDEV00: ; CREDIT TO LASZLO SZOLNOKI ; #IF (PPIDETRACE >= 3) - CALL IDE_PRTPREFIX - PRTS("SIG=0x$") + CALL PPIDE_PRTPREFIX + PRTS(" SIG=0x$") LD BC,(HB_WRKBUF) CALL PRTHEXWORD #ENDIF ; - LD BC,$848A ; STANDARD CF CARD SIGNATURE - CALL PPIDE_INITDEV000 ; TEST & SET - LD BC,$044A ; ALT SIG FOR CF +; SEE PAGE 114 OF CF+ & CF SPECIFICATION REV. 3.0 FOR CF CARD +; SIGNATURE VALUES. ALL OF THE BELOW ARE DOCUMENTED THERE EXCEPT +; $045A WHICH IS A VALUE DISCOVERED ON A CF<->SD CARD ADAPTER. +; +; SIGNATURE $045A IS NOT LISTED IN THE CF SPEC. IT WAS ADDED BECAUSE +; IT WAS SEEN IN THE WILD ON A CF-SD ADAPTER. HOWEVER IT HAS NOW +; ALSO BEEN SEEN ON A SPINNING HARD DISK. SINCE IT IS AMBIGUOUS, I +; WILL CONSIDER IT TO BE A HARD DISK. +; + LD BC,$848A ; STANDARD CF CARD SIGNATURE %1000 1111 1000 1010 CALL PPIDE_INITDEV000 ; TEST & SET - LD BC,$045A ; ALT SIG FOR CF + LD BC,$044A ; ALT SIG FOR CF NON-REMOVABLE %0000 0100 0100 1010 CALL PPIDE_INITDEV000 ; TEST & SET - LD BC,$0040 ; ALT SIG FOR CF NON-REMOVABLE + ;LD BC,$045A ; ?ALT SIG FOR CF NON-REMOVABLE %0000 0100 0101 1010 + ;CALL PPIDE_INITDEV000 ; TEST & SET + LD BC,$0040 ; ALT SIG FOR CF NON-REMOVABLE %0000 0000 0100 0000 CALL PPIDE_INITDEV000 ; TEST & SET JR PPIDE_INITDEV1 ; CONTINUE INIT ; @@ -1631,8 +1640,10 @@ PPIDE_PRTPREFIX: CALL NEWLINE PRTS("PPIDE$") LD A,(IY+PPIDE_DEV) ; GET CURRENT DEVICE NUM - ADD A,'0' - CALL COUT + CP $FE ; NOT YET ASSIGNED? + JR Z,PPIDE_PRTPREFIX1 ; SKIP DEV NUM IF SO + CALL PRTDECB +PPIDE_PRTPREFIX1: CALL PC_COLON POP AF RET diff --git a/Source/ver.inc b/Source/ver.inc index 7da481e4..3b282151 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.194" +#DEFINE BIOSVER "3.1.1-pre.195" diff --git a/Source/ver.lib b/Source/ver.lib index 58903a71..97eebbc4 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.194" + db "3.1.1-pre.195" endm