
Сообщение от
GARNIZON
Ну и в каком месте там написано что он читает обычно?
Все он там грамотно читает, первый попавшийся из нужных... реально продуманная штука, круче чем ВГ однозначно.
может мы разный код смотрим, я всё еще про RD DOS 2.9
собственно я не вижу ">>первый попавшийся из нужных..."
я не вижу СПИСКА сектров, тольк запрос на чтение 1 (одного) сектора.
вот тот код что я вижу
Код:
RAM:EE52 ; =============== S U B R O U T I N E =======================================
RAM:EE52
RAM:EE52 ; OUT: a!=0 - ERR
RAM:EE52
RAM:EE52 F09_RD_SECT: ; CODE XREF: ReadFromDisk+9p
RAM:EE52 ; DATA XREF: RAM:E020o
RAM:EE52 3E 08 ld a, 8
RAM:EE54 32 4D 75 ld (NRD), a ; Read TRY
RAM:EE57
RAM:EE57 nextRDTry: ; CODE XREF: F09_RD_SECT+Fj
RAM:EE57 CD 67 EE call rd_physical
RAM:EE5A CA DF EE jp z, ret_NOERR
RAM:EE5D 21 4D 75 ld hl, NRD ; Read TRY
RAM:EE60 35 dec (hl)
RAM:EE61 F2 57 EE jp p, nextRDTry
RAM:EE64 C3 1D EE jp FDC_HOME
RAM:EE64 ; End of function F09_RD_SECT
RAM:EE64
RAM:EE67
RAM:EE67 ; =============== S U B R O U T I N E =======================================
RAM:EE67
RAM:EE67
RAM:EE67 rd_physical: ; CODE XREF: F09_RD_SECT:nextRDTryp
RAM:EE67 CD 9D ED call FindSector
RAM:EE6A CD 2C EE call waitDataLabel
RAM:EE6D
RAM:EE6D loc_EE6D: ; CODE XREF: rd_physical+7j
RAM:EE6D B6 or (hl)
RAM:EE6E F2 6D EE jp p, loc_EE6D
RAM:EE71 ;
RAM:EE71 0A ld a, (bc)
RAM:EE72 5F ld e, a
RAM:EE73 32 46 75 ld (LENGTS), a
RAM:EE76
RAM:EE76 loc_EE76: ; CODE XREF: rd_physical+10j
RAM:EE76 34 inc (hl)
RAM:EE77 F2 76 EE jp p, loc_EE76
RAM:EE7A 0A ld a, (bc)
RAM:EE7B 57 ld d, a
RAM:EE7C 32 47 75 ld (LENGTS+1), a
RAM:EE7F
RAM:EE7F loc_EE7F: ; CODE XREF: rd_physical+19j
RAM:EE7F 34 inc (hl)
RAM:EE80 F2 7F EE jp p, loc_EE7F
RAM:EE83 ;
RAM:EE83 0A ld a, (bc) ; skip 0
RAM:EE84 ;
RAM:EE84 3A 44 75 ld a, (BEGS) ; Addr BEGIN RD/WR
RAM:EE87 4F ld c, a
RAM:EE88 3A 45 75 ld a, (BEGS+1) ; Addr BEGIN RD/WR
RAM:EE8B 47 ld b, a
RAM:EE8C
RAM:EE8C readDataLoop: ; CODE XREF: rd_physical+26j
RAM:EE8C ; rd_physical+30j
RAM:EE8C 34 inc (hl)
RAM:EE8D F2 8C EE jp p, readDataLoop
RAM:EE90 ;
RAM:EE90 DB F4 in a, (xF004_DATA)
RAM:EE92 02 ld (bc), a
RAM:EE93 03 inc bc
RAM:EE94 1B dec de
RAM:EE95 7A ld a, d
RAM:EE96 B3 or e
RAM:EE97 C2 8C EE jp nz, readDataLoop
RAM:EE9A
RAM:EE9A loc_EE9A: ; CODE XREF: rd_physical+34j
RAM:EE9A B6 or (hl)
RAM:EE9B F2 9A EE jp p, loc_EE9A
RAM:EE9E ;
RAM:EE9E DB F4 in a, (xF004_DATA)
RAM:EEA0 5F ld e, a
RAM:EEA1
RAM:EEA1 loc_EEA1: ; CODE XREF: rd_physical+3Bj
RAM:EEA1 34 inc (hl)
RAM:EEA2 F2 A1 EE jp p, loc_EEA1
RAM:EEA5 DB F4 in a, (xF004_DATA)
RAM:EEA7 57 ld d, a
RAM:EEA8 D5 push de
RAM:EEA9 CD 5D ED call CalcCRC?
RAM:EEAC D1 pop de
RAM:EEAD
RAM:EEAD loc_EEAD: ; CODE XREF: verify_phisical+4Aj
RAM:EEAD 2A 48 75 ld hl, (KS) ; Readed KS
RAM:EEB0
RAM:EEB0 cp_hl_de: ; CODE XREF: sub_E178:F0E_SAVE2p
RAM:EEB0 ; sub_E178+F9p ...
RAM:EEB0 7C ld a, h
RAM:EEB1 BA cp d
RAM:EEB2 C0 ret nz
RAM:EEB3 7D ld a, l
RAM:EEB4 BB cp e
RAM:EEB5 C9 ret
RAM:EEB5 ; End of function rd_physical