Не знаю. Когда я делал свой дисковод из журнала Радио (это который потом с SP-DOS работал), я сделал только то, что было в статье (удлинение цикла обращения и предкомпенсация записи). Так вот, у меня все отлично работало на программном уровне на штатных 2,5МГц, впрочем как и с SPDOS.
Пришлось разбить цикл на две части - второе условие уже вылазило за пределы таймингов. Ну и при чтении 1К сектора таких циклов естественно 4. А для спектрумских дискет вообще один:Код:;FDC CONTROL REGISTER CTR:PUSH PSW CT0:LDA 0F700H ANI 1H JNZ CT0 POP PSW STA 0F700H RET ;WAITING FOR DRIVE READY RED:LDA 0F700H ANI 80H JNZ RED RET RWR:LDA 0F700H ANI 82H JNZ RWR RET ;LOAD SECTOR 512 BYTES WITH CHECKING CHECKSUMM ;10H TRIES, [HL] - ADR... INS:PUSH D PUSH B MVI B,10H IS0:PUSH B LDA TRK ANI 1H MOV C,A LDA DRV ORA C STA 0F602H LDA TRK RRC ANI 7FH STA 0F703H XRA A MOV B,A MVI A,18H CALL CTR CALL RWR LDA SEC INR A STA 0F702H MVI A,80H CALL CTR MVI C,82H LXI D,0F700H IS1:LDAX D ANA C JZ IS1 LDA 0F703H MOV M,A INX H INR B JNZ IS1 IS2:LDAX D ANA C JZ IS2 LDA 0F703H MOV M,A INX H INR B JNZ IS2 POP B LDA 0F700H MOV C,A ANI 80H JNZ IS3 MOV A,C ANI 08H JZ IS4 DCR B JNZ IS0 MVI A,08H JMP IS5 IS3:MVI A,80H JMP IS5 IS4:XRA A IS5:STA BER POP B POP D RET ;SAVE SECTOR 512 BYTES ;[HL] - ADR... OTS:PUSH D PUSH B LDA TRK ANI 1H MOV C,A LDA DRV ORA C STA 0F602H LDA TRK RRC ANI 7FH STA 0F703H MVI A,18H CALL CTR XRA A MOV B,A LXI D,0F700H CALL RED MVI C,82H LDA SEC INR A STA 0F702H MVI A,0A0H CALL CTR OS0:LDAX D ANA C JZ OS0 MOV A,M STA 0F703H INX H DCR B JNZ OS0 OS1:LDAX D ANA C JZ OS1 MOV A,M STA 0F703H INX H DCR B JNZ OS1 LDA 0F700H ANI 80H STA BER POP B POP D RET
Это все надежно работало с 800К дискетами и двумя дисководами Электроника (сдвоенная пачка от корвета, кстати) в далеких 90х...Код:;Управление Регистром CTR:LDA 0F700H ANI 01H JNZ CTR MOV A,C STA 0F700H RET ;Запись данных с синхронизацией DAT:LDA 0F700H ANI 01H JNZ DAT MOV A,C STA 0F703H RET ;Чтение сектора SEC-СЕКТОР, TRK-ДОРОЖКА INS:PUSH H PUSH D PUSH B LDA TRK ANI 1H ORI 0EH STA 0F602H LDA TRK ANI 7EH RRC MOV C,A CALL DAT MVI C,18H CALL CTR LDA SEC INR A STA 0F702H CALL RED MVI C,80H CALL CTR LXI H,BUF LXI D,0F700H MVI C,82H IN0:LDAX D ANA C JZ IN0 LDA 0F703H MOV M,A INR L JNZ IN0 LDA 0F700H POP B POP D POP H RET ;Запись сектора SEC-СЕКТОР, TRK-ДОРОЖКА OTS:PUSH H PUSH D PUSH B LDA TRK ANI 1H ORI 0EH STA 0F602H LDA TRK ANI 7EH RRC MOV C,A CALL DAT MVI C,18H CALL CTR LDA SEC INR A STA 0F702H CALL RED MVI C,0A0H CALL CTR LXI H,BUF LXI D,0F700H MVI C,82H OT0:LDAX D ANA C JZ OT0 MOV A,M STA 0F703H INR L JNZ OT0 LDA 0F700H POP B POP D POP H RET


Ответить с цитированием

Нужно эту доработку указать в первом посте, причем строго обязательно.
ScorpEvo ZS 1024 turbo+ CF-HDD/FDD/Mouse/SMUC 3.1/ProfROMse/NeoGS/ZC
Радио-Губитель
Канал на 