
Сообщение от
makbar
...господа, я же пояснил это рисунком 3 в журнале 12 1992г )))
400 нс!!! Wait нужен не процу как таковому, а ВГ93, чтобы проц помедленнее его опрашивал.
Если верить написанному выше, то значит я таки тоже в вашей банде! Собирал его, пользовался не DOS а просто обменником. Контроллер в полной обвязке: тормозилка, ФАПЧ + мои личные доработки, не касающихся критических узлов оригинальной схемы. Впечатления следующие (это плюсы):
1. Несколько раз по глупости портил дискету - восстанавливал все руками сам.
(реверс по данным из журнала + анализ данных на самой дискете).
2. Контроллер работал как часы: даже когда я добыл связку из двух 80ти дорожечных дискогрыза с электромагнитами загрузки взамен 40ка дорожечного болгарина.
3. Писал обменник на спектрумскую хобету - работало. Правда не сразу понял, что при форматировании следует правильно указывать номер стороны: контроллер PC не мог игнорировать сей флаг, в отличии от ВГ93.
4. Намучившись с хобетой писал именно к этому дискогрызу обменник между FAT12 и квазидиском ORDOSа, все работало, причем лучше чем с хобетой, в том числе был и форматтер.
5. Весь цикл жизни ни одна из моих не самых качественных дискет не испоганилась от хранения как такового. Первые дискеты без использования сроком около 9 лет считались в последствии нормально.
Про пункт №4 я уже писал и желающие могут посмотреть этот опус. Напомню, 97 год, писалось на самом Орионе, так что ногами не пинать. Но посмотрите, как сделана низкоуровневая работа с ВГшкой!
Код:
;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
И оно не зависало, если внезапно сектор не найден - вываливалось с текущей ошибкой (заполнив буфер одним из байтов при чтении).
В общем, я уже и не помню, почему я выбрал именно этот контроллер (Радио №12'92), но его работа мне очень нравилась, не смотря что он сначала был на макетке и только потом на саморазведенной плате. Собирался без осцилла, чисто с помощью Цшки. Не могу сказать подобного про Специалистовский: тот из-за особенности софта и схемного решения часто вис. И дискеты свои же портил. К сожалению, не могу знать, чья разработка он был.