RECOVERY:

- обновлены системные файлы
- подправлены опечатки. Спасибо @Andrew_Gorshkov
BIOS:
Исправлен баг в READ_SECTOR, могло уходить в бесконечный цикл
This commit is contained in:
Tolik 2024-06-29 02:43:04 +10:00
parent 44dfb7f39b
commit 9c14f06b9c
2 changed files with 75 additions and 75 deletions

View File

@ -232,7 +232,7 @@ FDD_5x_LONG_READ:
PUSH DE PUSH DE
PUSH BC PUSH BC
PUSH HL PUSH HL
CALL RD_SEC CALL READ_SECTOR
JP C,ERRDOS JP C,ERRDOS
LD D,YH LD D,YH
LD E,YL LD E,YL
@ -431,15 +431,13 @@ FDD_5x_LONG_WRITE:
;------------------------------- ;-------------------------------
;READ SECTOR ;READ SECTOR
;------------------------------- ;-------------------------------
RD_SEC: LD D,5 ;RETRY COUNT READ_SECTOR: LD D,5 ;RETRY COUNT
.RRETRY: .RRETRY: ;DI
;DI
PUSH DE PUSH DE
LD A,E LD A,E
INC A INC A
OUT (FDC_93.Sector),A OUT (FDC_93.Sector),A
.FDREAD: .FDREAD: IN A,(SLOT3)
IN A,(SLOT3)
EX AF,AF' EX AF,AF'
LD A,XH LD A,XH
OUT (SLOT3),A OUT (SLOT3),A
@ -447,8 +445,7 @@ RD_SEC: LD D,5 ;RETRY COUNT
LD C,FDC_93.Data LD C,FDC_93.Data
LD A,#80 ;COMMAND READ LD A,#80 ;COMMAND READ
OUT (FDC_93.Command),A OUT (FDC_93.Command),A
.FDR001: .FDR001: IN A,(FDC_93.DrvCTRL) ;WAIT INTRQ or DRQ
IN A,(FDC_93.DrvCTRL) ;WAIT INTRQ or DRQ
AND #C0 AND #C0
JR NZ,.FDR004 JR NZ,.FDR004
INC DE INC DE
@ -458,41 +455,44 @@ RD_SEC: LD D,5 ;RETRY COUNT
DJNZ .FDR001 DJNZ .FDR001
SCF SCF
JR .FDR005 JR .FDR005
.FDR004: ;
INI ;READ BYTE .FDR004: INI ;READ BYTE
.FDR002: .FDR002: IN A,(FDC_93.DrvCTRL)
IN A,(FDC_93.DrvCTRL)
AND #C0 AND #C0
JR Z,.FDR002 JR Z,.FDR002
JP P,.FDR004 JP P,.FDR004
.FDR005: .FDR005: EX AF,AF'
EX AF,AF'
OUT (SLOT3),A OUT (SLOT3),A
EX AF,AF' EX AF,AF'
;------------------------------- ;
POP DE POP DE
;EI ;EI
IN A,(FDC_93.Command) IN A,(FDC_93.Command)
LD C,A LD C,A
;R01 ;R01 ; JP C,ERRRD ;READ ERROR
JP C,.ERR_XRD ; !TEST 29/06/2024
; JP C,ERRRD ;READ ERROR ;JP C,.ERR_XRD
JP NC,.NO_ERR_XRD
DEC D
JR Z,.RSTOP
JR .RRETRY
;
.NO_ERR_XRD: ;
AND #7F AND #7F
RET Z RET Z
BIT 2,C BIT 2,C
JR NZ,.ERDATA JR NZ,.ERDATA
LD A,5 ;SEEK ERROR LD A,5 ;SEEK ERROR
DEC D DEC D
JP Z,.RSTOP JR Z,.RSTOP
PUSH DE PUSH DE
CALL RESWG ; RESET_WG CALL RESWG ; RESET_WG
LD A,XL LD A,XL
CALL SEEK ; !!!!! ¯®á¬®âà¥âì CALL SEEK ; !!!!! ¯®á¬®âà¥âì
.ERR_XRD: .ERR_XRD: POP DE
POP DE
JR .RRETRY JR .RRETRY
.ERDATA: ;
DEC D ; POTERIA DANNYH .ERDATA: DEC D ; POTERIA DANNYH
JR NZ,.RRETRY JR NZ,.RRETRY
.ERRRD: LD A,9 ;READ ERROR .ERRRD: LD A,9 ;READ ERROR
.RSTOP: EX AF,AF' .RSTOP: EX AF,AF'
@ -504,7 +504,7 @@ RD_SEC: LD D,5 ;RETRY COUNT
RET Z RET Z
LD A,6 ;SECTOR NOT FOUND /NO DISK/ LD A,6 ;SECTOR NOT FOUND /NO DISK/
RET RET
; ; ; ;
; ;
;------------------------------- ;-------------------------------

Binary file not shown.