PDA

Просмотр полной версии : Как глушить дисковод



Krenon
30.05.2007, 18:12
Если кто не знает это делается так: ВГ подаётся любая команда I типа с битом h=0 (модификатор поднять головки). Потом даётся пауза, чтобы головки поднялись, двигател заглох. Перед тем как начнётся перепозиционирование подаётся принудительное прерывание. Величина паузы - в XAS'е три HALT'а, но на практике хватает одного.

newart
30.05.2007, 19:21
Если кто не знает это делается так: ВГ подаётся любая команда I типа с битом h=0 (модификатор поднять головки). Потом даётся пауза, чтобы головки поднялись, двигател заглох. Перед тем как начнётся перепозиционирование подаётся принудительное прерывание. Величина паузы - в XAS'е три HALT'а, но на практике хватает одного.
Может тебе стоит возродить Lamergy или что то вроде того (Krenongy?) и вести там раздел "хочу все знать"? ;)
А не плодить темы, от которых ощущение будто автор общается сам с собой.

psb
31.05.2007, 14:39
лучше глушить дисковод динамитом:) как рыбу:)

а вообще, надежнее сделать out(#ff),0 в тр-досе:) и никаких хальтов:)

Sonic
01.06.2007, 10:43
а вообще, надежнее сделать out(#ff),0 в тр-досе:) и никаких хальтов:)

Только после этого надо регистры дорожки и сектора взад выставлять и делать рекалибровку, по хорошему если.
И еще замечание: если в дисководе нет диска, то мотор не выключается. Чтобы его выключить, в порту #FF предусмотрен бит, который имитирует выдачу HLT на ВГ93. В TR-DOS есть подпрограммка хитрая, она на него серию импульсов выдает. Адрес не помню, она вызывается перед входом в командный процессор. Там выбирается текущий дисковод, даются импульсы, затем зачем-то выбирается дисковод D, снова даются имульсы. Нарушение этого алгоритма не канает - двигло не выключается.

psb
01.06.2007, 14:49
И еще замечание: если в дисководе нет диска, то мотор не выключается.

это при out(#ff),0 не выключается?;)) ага, ага:) при таком выключается всё! сложнее включить потом;) (пример тому - magic) но как-то можно, сходу не помню как..

а в тр-дос, кажется, не на всех контроллерах дисководы выключаются.. у меня выключался тлько по прошествии 15 индексных импульсов.

Sonic
01.06.2007, 15:53
Включить не так сложно:
1) Отпустить Reset.
2) Подождать - не знаю сколько но это ключевой момент, посему чем дольше тем лучше.
3) Установить в регистре дорожки число, соответствующее реальности. Сделать это можно двумя способами: либо подать команду "чтение индекса" и посмотреть считанный заголовок, либо подать команду "рекалибровка" AKA "Восстановление" в старой литературе, при этом башка гарантированно отъедет на 0 трек и в регистре гарантированно встанет 0.
Прикол с Magic заключается в отсутствии необходимой паузы (2). Загрузка порта #FF там есть (выбираем верхнюю сторону диска), и затем следует первая команда - рекалибровка. К тому моменту, как подается эта команда, ВГшка не успевает выйти из ступора и тупо повисает.
По поводу индексных импульсов - да, бит HLT порта #FF через диод заведен еще и на IP. Смысл - эмуляция индексных импульсов. Как раз для остановки дисковода при отсутствии диска. Смысл выбора дисковода D:, насколько я понимаю, заключается в том, чтобы выбрать дисковод, которого скорее всего нет, и из-за этого линия HLT будет болтаться в "1". Нетрудно догадаться, что при отсутствии диска в 5.25" приводе HLT всегда будет висеть в "0" (оптопара постоянно засвечена).
Помнится я подключил дисковод D: и получил интересную картину: при попытке остановки дисковода на мгновение помигивает светодиод дисковода D:, затем снова переходим на текущий, двигатели продолжают вращаться. Т. о. при наличии всех четырех приводов и при отсутствии во всех приводах дисков, алгоритм работать не будет.

psb
01.06.2007, 16:55
о, прикольно:)
спасибо за детальные разьяснения:)

mishutka
02.06.2007, 16:31
припоминаю что мотор останавливается если выбрать другой (даже не существующий) дисковод а потом вернуться к текущему

Sonic
04.06.2007, 08:47
припоминаю что мотор останавливается если выбрать другой (даже не существующий) дисковод а потом вернуться к текущему
Вряд-ли. Операция смены текущего дисковода на ВГ93 вообще никак не влияет, ибо проходит мимо нее. Скорее всего ты путаешь, или имеет место быть какой-нибудь побочный эффект.

Grand
05.06.2007, 02:38
Во многих моих программах используется метод снятия выбора дисковода с использованием процедуры из ПЗУ TR-DOS, например в G's Boot (http://trd.speccy.cz/system/GB22DS.ZIP). Исходники G's Boot'а (http://opensourcezx.untergrund.net/c_soft-commander-grand_boot2.html) - на ZX Open Source (http://opensourcezx.untergrund.net).