diff --git a/Source/HBIOS/md.asm b/Source/HBIOS/md.asm index 75e1dd6e..8b901ea0 100644 --- a/Source/HBIOS/md.asm +++ b/Source/HBIOS/md.asm @@ -673,14 +673,18 @@ FF_PROBE: LD C,A ; DJNZ FF_PROBE ; ALWAYS AT LEAST ONE DEVICE + #IF (MD_FVBS==1) + CALL PRTSTRD + .TEXT " FLASH FILE SYSTEM $" + LD DE,MD_FFMSGDIS LD A,(MD_FFSEN) OR A JR NZ,MD_PR1 - CALL PRTSTRD - .TEXT " FLASH FILE SYSTEM ENABLED$" -MD_PR1: + LD DE,MD_FFMSGENA +MD_PR1: CALL WRITESTR #ENDIF + XOR A ; INIT SUCCEEDED RET ; @@ -699,8 +703,8 @@ MD_LAND: CALL PC_SPACE #ENDIF ; - LD HL,FF_TABLE ; SEARCH THROUGH THE FLASH - LD DE,FF_T_CNT ; TABLE TO FIND A MATCH + LD HL,MD_TABLE ; SEARCH THROUGH THE FLASH + LD DE,MD_T_CNT ; TABLE TO FIND A MATCH FF_NXT1:LD A,(HL) CP B JR NZ,FF_NXT0 ; FIRST BYTE DOES NOT MATCH @@ -716,7 +720,7 @@ FF_NXT1:LD A,(HL) JR FF_NXT2 ; MATCH SO EXIT ; FF_NXT0:PUSH BC ; WE DIDN'T MATCH SO POINT - LD BC,FF_T_SZ ; TO THE NEXT TABLE ENTRY + LD BC,MD_T_SZ ; TO THE NEXT TABLE ENTRY ADD HL,BC POP BC ; @@ -725,7 +729,7 @@ FF_NXT0:PUSH BC ; WE DIDN'T MATCH SO POINT DEC DE JR NZ,FF_NXT1 ; NOT AT END YET ; - LD HL,MD_UNKNOWN ; WE REACHED THE END WITHOUT A MATCH + LD HL,MD_FFMSGUNK ; WE REACHED THE END WITHOUT A MATCH ; FF_NXT2: #IF (MD_FVBS==1) @@ -938,28 +942,28 @@ MD_FERAS_S LD (HL),A ; COMMAND ; LD A,(HL) ; DO TWO SUCCESSIVE READS -FF_WT4: LD C,(HL) ; FROM THE SAME FLASH ADDRESS. +MD_WT4: LD C,(HL) ; FROM THE SAME FLASH ADDRESS. XOR C ; IF THE SAME ON BOTH READS BIT 6,A ; THEN ERASE IS COMPLETE SO EXIT. ; - JR Z,FF_WT5 ; BIT 6 = 0 IF SAME ON SUCCESSIVE READS = COMPLETE + JR Z,MD_WT5 ; BIT 6 = 0 IF SAME ON SUCCESSIVE READS = COMPLETE ; BIT 6 = 1 IF DIFF ON SUCCESSIVE READS = INCOMPLETE ; LD A,C ; OPERATION IS NOT COMPLETE. CHECK TIMEOUT BIT (BIT 5). BIT 5,C ; IF NO TIMEOUT YET THEN LOOP BACK AND KEEP CHECKING TOGGLE STATUS - JR Z,FF_WT4 ; IF BIT 5=0 THEN RETRY; NZ TRUE IF BIT 5=1 + JR Z,MD_WT4 ; IF BIT 5=0 THEN RETRY; NZ TRUE IF BIT 5=1 ; LD A,(HL) ; WE GOT A TIMOUT. RECHECK TOGGLE BIT IN CASE WE DID COMPLETE XOR (HL) ; THE OPERATION. DO TWO SUCCESSIVE READS. ARE THEY THE SAME? BIT 6,A ; IF THEY ARE THEN OPERATION WAS COMPLETED - JR Z,FF_WT5 ; OTHERWISE ERASE OPERATION FAILED OR TIMED OUT. + JR Z,MD_WT5 ; OTHERWISE ERASE OPERATION FAILED OR TIMED OUT. ; LD C,$F0 ; COMMON FAIL STATUS / PREPARE DEVICE RESET CODE LD (HL),C ; WRITE DEVICE RESET - JR FF_WT6 -FF_WT5: LD C,L ; SET SUCCESS STATUS + JR MD_WT6 +MD_WT5: LD C,L ; SET SUCCESS STATUS ; -FF_WT6: POP AF ; RETURN TO ORIGINAL BANK +MD_WT6: POP AF ; RETURN TO ORIGINAL BANK CALL HBX_BNKSEL ; WHICH IS OUR RAM BIOS COPY ; LD SP,(HBX_BUF + (MD_FEST-MD_FERAS_R)) ; RESTORE STACK @@ -1104,7 +1108,7 @@ MD_W_SZ .EQU $-MD_FWRIT_R ; SIZE OF RELOCATABLE CODE BUFFER REQUIRED #DEFCONT .DB FFROMNM \ #DEFCONT ; ; -FF_TABLE: +MD_TABLE: FF_CHIP(00120H,"29F010$ ") FF_CHIP(001A4H,"29F040$ ") FF_CHIP(01F04H,"AT49F001NT$") @@ -1123,9 +1127,11 @@ FF_CHIP(0BFB6H,"39F020$ ") FF_CHIP(0BFB7H,"39F040$ ") FF_CHIP(0C2A4H,"MX29F040$ ") ; -FF_T_CNT .EQU 17 -FF_T_SZ .EQU ($-FF_TABLE) / FF_T_CNT -MD_UNKNOWN .DB "UNKNOWN$" +MD_T_CNT .EQU 17 +MD_T_SZ .EQU ($-MD_TABLE) / MD_T_CNT +MD_FFMSGUNK .DB "UNKNOWN$" +MD_FFMSGDIS .DB "DISABLED$" +MD_FFMSGENA .DB "ENABLED$" ; ;====================================================================== ;