Вариант 1 с задержками для FDD

This commit is contained in:
Tolik 2026-05-06 16:12:54 +10:00
parent 0beb007b9d
commit 5d3a690046
3 changed files with 18 additions and 17 deletions

View File

@ -374,13 +374,23 @@ FDD_RW_SECTOR: LD D,FDD_COUNTERS.RW_Retries
LD BC,FDD_COUNTERS.INTRQorDRQ*256 + FDC_93.Data LD BC,FDD_COUNTERS.INTRQorDRQ*256 + FDC_93.Data
;ÛÛÛÛÛÛÛÛÛÛ Š<>ˆˆ<CB86>‰ Š ŠŽ<C5A0>Žˆ Š“‘ŽŠ <20>Ž… “<E28099>ŽŠˆ ŠŽŒ€<C592> „Ž <>ŸˆŸ <20>…‡“œ€ ÛÛÛÛÛÛÛÛÛÛ ;ÛÛÛÛÛÛÛÛÛÛ Š<>ˆˆ<CB86>‰ Š ŠŽ<C5A0>Žˆ Š“‘ŽŠ <20>Ž… “<E28099>ŽŠˆ ŠŽŒ€<C592> „Ž <>ŸˆŸ <20>…‡“œ€ ÛÛÛÛÛÛÛÛÛÛ
OUT (FDC_93.Command),A OUT (FDC_93.Command),A
.wait_loop_next:; íâ®â loop ¨¬¥­­® âãâ ¤«ï § ¤¥à¦ª¨ ¬¥¦¤ã OUT (FDC_93.Command),A ¨ IN A,(FDC_93.DrvCTRL)
INC DE
LD A,E
OR D
JR NZ,.wait_loop ; 26
; ;
.wait_loop: IN A,(FDC_93.DrvCTRL) ; 11 ;WAIT INTRQ or DRQ DJNZ .wait_loop
AND %1100'0000 ; 7 ;b7: INTRQ (¢ë¯®«­ï¥âáï ª®¬ ­¤  = 0), b6: DRQ (§ ¯à®á ¤ ­­ëå = 1). SCF
JR Z,.wait_loop_next ; 12 + 34 (.wait_loop_next) JR .after_rw ; error
;
; ¢ ¯¥à¢ë© à § ¬ë âãâ ¯®á«¥ 26 ⠪⮢
.wait_loop: IN A,(FDC_93.DrvCTRL) ; 11 ; 11 ;WAIT INTRQ or DRQ
AND %0100'0000 ; 7 ; 7 ;b7: INTRQ (¢ë¯®«­ï¥âáï ª®¬ ­¤  = 0), b6: DRQ (§ ¯à®á ¤ ­­ëå = 1).
JR Z,.wait_loop_next ; 7 ; 12 + 34 (.wait_loop_next)
; âãâ ¬ ªá¨¬ã¬ 64 â ªâ  ; âãâ ¬ ªá¨¬ã¬ 64 â ªâ 
EX AF,AF' EX AF,AF'
JR NZ,.write_loop ; १ã«ìâ â BIT 5,B' JR NZ,.write_loop ; 11 ; १ã«ìâ â BIT 5,B'
; ;
;EX AF,AF' ;EX AF,AF'
;READ BYTE. ¬¥¦¤ã .wait_loop ¨ .read_loop (INI) 64+11=75 ⠪⮢ ;READ BYTE. ¬¥¦¤ã .wait_loop ¨ .read_loop (INI) 64+11=75 ⠪⮢
@ -390,9 +400,9 @@ FDD_RW_SECTOR: LD D,FDD_COUNTERS.RW_Retries
OR E OR E
EXX EXX
JR Z,.SectorSizeError JR Z,.SectorSizeError
; ®â .wait_loop ¤®á 75+29=104 ⠪⮢ ; ®â .wait_loop ¤®á ¬¨­¨¬ã¬ 26+11+7+7+11+29=91, ¡ë«® 75+29=104 ⠪⮢
; ¯à¨¬¥à­® 10,4 ¬ªá ¯à¨ ãá«®¢­ëå á।­¨å 10 Œ£æ ; ¯à¨¬¥à­® 9,1 ¬ªá ¯à¨ ãá«®¢­ëå á।­¨å 10 Œ£æ
; ¯à¨¬¥à­® 30 ¬ªá ¯à¨ 3,5 Œ£æ ; ¯à¨¬¥à­® 26 ¬ªá ¯à¨ 3,5 Œ£æ
; „®«¦­® ¡ëâì ­¥ ¡®«ìè¥ 16 ¬ªá ¤«ï 1.44 ¨«¨ 32 ¬ªá ¤«ï 720 ; „®«¦­® ¡ëâì ­¥ ¡®«ìè¥ 16 ¬ªá ¤«ï 1.44 ¨«¨ 32 ¬ªá ¤«ï 720
INI INI
;ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ ;ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
@ -439,15 +449,6 @@ FDD_RW_SECTOR: LD D,FDD_COUNTERS.RW_Retries
POP DE POP DE
JR .RETRY JR .RETRY
; ;
.wait_loop_next:
INC DE
LD A,E
OR D
JR NZ,.wait_loop
;
DJNZ .wait_loop
SCF
JR .after_rw ; error
; ;
.data_lost: DEC D ; ¯®â¥àï ¤ ­­ëå .data_lost: DEC D ; ¯®â¥àï ¤ ­­ëå
JR NZ,.RETRY JR NZ,.RETRY

View File

@ -89,7 +89,7 @@ DRV_LIST:
INCLUDE 'EXTENDED/RAM_DISK_DRIVER.asm' INCLUDE 'EXTENDED/RAM_DISK_DRIVER.asm'
INCLUDE 'EXTENDED/IDE/ATA_DRV.asm' INCLUDE 'EXTENDED/IDE/ATA_DRV.asm'
INCLUDE 'EXTENDED/IDE/ATAPI_DRV.asm' INCLUDE 'EXTENDED/IDE/ATAPI_DRV.asm'
INCLUDE 'EXTENDED/IDE/SHARED.asm' INCLUDE 'EXTENDED/SHARED.asm'
;DISPLAY " EXTENDED end addr: ", /A, $ ;DISPLAY " EXTENDED end addr: ", /A, $