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,80 +431,80 @@ 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: IN A,(SLOT3)
.FDREAD: EX AF,AF'
IN A,(SLOT3) LD A,XH
EX AF,AF' OUT (SLOT3),A
LD A,XH LD B,4
OUT (SLOT3),A LD C,FDC_93.Data
LD B,4 LD A,#80 ;COMMAND READ
LD C,FDC_93.Data OUT (FDC_93.Command),A
LD A,#80 ;COMMAND READ .FDR001: IN A,(FDC_93.DrvCTRL) ;WAIT INTRQ or DRQ
OUT (FDC_93.Command),A AND #C0
.FDR001: JR NZ,.FDR004
IN A,(FDC_93.DrvCTRL) ;WAIT INTRQ or DRQ INC DE
AND #C0 LD A,E
JR NZ,.FDR004 OR D
INC DE JR NZ,.FDR001
LD A,E DJNZ .FDR001
OR D SCF
JR NZ,.FDR001 JR .FDR005
DJNZ .FDR001 ;
SCF .FDR004: INI ;READ BYTE
JR .FDR005 .FDR002: IN A,(FDC_93.DrvCTRL)
.FDR004: AND #C0
INI ;READ BYTE JR Z,.FDR002
.FDR002: JP P,.FDR004
IN A,(FDC_93.DrvCTRL) .FDR005: EX AF,AF'
AND #C0 OUT (SLOT3),A
JR Z,.FDR002 EX AF,AF'
JP P,.FDR004 ;
.FDR005: POP DE
EX AF,AF' ;EI
OUT (SLOT3),A IN A,(FDC_93.Command)
EX AF,AF' LD C,A
;------------------------------- ;R01 ; JP C,ERRRD ;READ ERROR
POP DE ; !TEST 29/06/2024
;EI ;JP C,.ERR_XRD
IN A,(FDC_93.Command) JP NC,.NO_ERR_XRD
LD C,A DEC D
;R01 JR Z,.RSTOP
JP C,.ERR_XRD JR .RRETRY
; JP C,ERRRD ;READ ERROR ;
AND #7F .NO_ERR_XRD: ;
RET Z AND #7F
BIT 2,C RET Z
JR NZ,.ERDATA BIT 2,C
LD A,5 ;SEEK ERROR JR NZ,.ERDATA
DEC D LD A,5 ;SEEK ERROR
JP Z,.RSTOP DEC D
PUSH DE JR Z,.RSTOP
CALL RESWG ; RESET_WG PUSH DE
LD A,XL CALL RESWG ; RESET_WG
CALL SEEK ; !!!!! ¯®á¬®âà¥âì LD A,XL
.ERR_XRD: CALL SEEK ; !!!!! ¯®á¬®âà¥âì
POP DE .ERR_XRD: 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'
LD A,#D0 LD A,#D0
OUT (FDC_93.Command),A ;STOP OPERATION OUT (FDC_93.Command),A ;STOP OPERATION
EX AF,AF' EX AF,AF'
BIT 0,C BIT 0,C
SCF SCF
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.