diff --git a/src/bios/exp/EXTENDED/FDD_DRIVER_2.asm b/src/bios/exp/EXTENDED/FDD_DRIVER_2.asm index 4367bd5..d5d72d5 100644 --- a/src/bios/exp/EXTENDED/FDD_DRIVER_2.asm +++ b/src/bios/exp/EXTENDED/FDD_DRIVER_2.asm @@ -232,7 +232,7 @@ FDD_5x_LONG_READ: PUSH DE PUSH BC PUSH HL - CALL RD_SEC + CALL READ_SECTOR JP C,ERRDOS LD D,YH LD E,YL @@ -431,80 +431,80 @@ FDD_5x_LONG_WRITE: ;------------------------------- ;READ SECTOR ;------------------------------- -RD_SEC: LD D,5 ;RETRY COUNT -.RRETRY: - ;DI - PUSH DE - LD A,E - INC A - OUT (FDC_93.Sector),A -.FDREAD: - IN A,(SLOT3) - EX AF,AF' - LD A,XH - OUT (SLOT3),A - LD B,4 - LD C,FDC_93.Data - LD A,#80 ;COMMAND READ - OUT (FDC_93.Command),A -.FDR001: - IN A,(FDC_93.DrvCTRL) ;WAIT INTRQ or DRQ - AND #C0 - JR NZ,.FDR004 - INC DE - LD A,E - OR D - JR NZ,.FDR001 - DJNZ .FDR001 - SCF - JR .FDR005 -.FDR004: - INI ;READ BYTE -.FDR002: - IN A,(FDC_93.DrvCTRL) - AND #C0 - JR Z,.FDR002 - JP P,.FDR004 -.FDR005: - EX AF,AF' - OUT (SLOT3),A - EX AF,AF' -;------------------------------- - POP DE - ;EI - IN A,(FDC_93.Command) - LD C,A -;R01 - JP C,.ERR_XRD -; JP C,ERRRD ;READ ERROR - AND #7F - RET Z - BIT 2,C - JR NZ,.ERDATA - LD A,5 ;SEEK ERROR - DEC D - JP Z,.RSTOP - PUSH DE - CALL RESWG ; RESET_WG - LD A,XL - CALL SEEK ; !!!!! посмотреть -.ERR_XRD: - POP DE - JR .RRETRY -.ERDATA: - DEC D ; POTERIA DANNYH - JR NZ,.RRETRY -.ERRRD: LD A,9 ;READ ERROR -.RSTOP: EX AF,AF' - LD A,#D0 - OUT (FDC_93.Command),A ;STOP OPERATION - EX AF,AF' - BIT 0,C - SCF - RET Z - LD A,6 ;SECTOR NOT FOUND /NO DISK/ - RET -; +READ_SECTOR: LD D,5 ;RETRY COUNT +.RRETRY: ;DI + PUSH DE + LD A,E + INC A + OUT (FDC_93.Sector),A +.FDREAD: IN A,(SLOT3) + EX AF,AF' + LD A,XH + OUT (SLOT3),A + LD B,4 + LD C,FDC_93.Data + LD A,#80 ;COMMAND READ + OUT (FDC_93.Command),A +.FDR001: IN A,(FDC_93.DrvCTRL) ;WAIT INTRQ or DRQ + AND #C0 + JR NZ,.FDR004 + INC DE + LD A,E + OR D + JR NZ,.FDR001 + DJNZ .FDR001 + SCF + JR .FDR005 + ; +.FDR004: INI ;READ BYTE +.FDR002: IN A,(FDC_93.DrvCTRL) + AND #C0 + JR Z,.FDR002 + JP P,.FDR004 +.FDR005: EX AF,AF' + OUT (SLOT3),A + EX AF,AF' + ; + POP DE + ;EI + IN A,(FDC_93.Command) + LD C,A +;R01 ; JP C,ERRRD ;READ ERROR + ; !TEST 29/06/2024 + ;JP C,.ERR_XRD + JP NC,.NO_ERR_XRD + DEC D + JR Z,.RSTOP + JR .RRETRY + ; +.NO_ERR_XRD: ; + AND #7F + RET Z + BIT 2,C + JR NZ,.ERDATA + LD A,5 ;SEEK ERROR + DEC D + JR Z,.RSTOP + PUSH DE + CALL RESWG ; RESET_WG + LD A,XL + CALL SEEK ; !!!!! посмотреть +.ERR_XRD: POP DE + JR .RRETRY + ; +.ERDATA: DEC D ; POTERIA DANNYH + JR NZ,.RRETRY +.ERRRD: LD A,9 ;READ ERROR +.RSTOP: EX AF,AF' + LD A,#D0 + OUT (FDC_93.Command),A ;STOP OPERATION + EX AF,AF' + BIT 0,C + SCF + RET Z + LD A,6 ;SECTOR NOT FOUND /NO DISK/ + RET +; ; ; ; ;------------------------------- diff --git a/src/bios/shared/RECOVERY.IMG b/src/bios/shared/RECOVERY.IMG index 7420ffa..acdef4c 100755 Binary files a/src/bios/shared/RECOVERY.IMG and b/src/bios/shared/RECOVERY.IMG differ