![]() |
|
|
|
|
|
#1 |
|
Member
Join Date: 16th April 2007
Location: Санкт-Петербург
Posts: 67
Thanks: 0
Thanked 0 Times in 0 Posts
![]() |
Если кто не знает это делается так: ВГ подаётся любая команда I типа с битом h=0 (модификатор поднять головки). Потом даётся пауза, чтобы головки поднялись, двигател заглох. Перед тем как начнётся перепозиционирование подаётся принудительное прерывание. Величина паузы - в XAS'е три HALT'а, но на практике хватает одного.
__________________
C Nonsense in BASIC, 0:1 |
|
|
|
|
|
#2 | |
|
Guru
Join Date: 19th January 2005
Location: Санкт-Петербург
Posts: 10,689
Thanks: 394
Thanked 1,447 Times in 714 Posts
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
Quote:
![]() А не плодить темы, от которых ощущение будто автор общается сам с собой. |
|
|
|
|
|
|
#4 |
|
Master
Join Date: 27th April 2005
Location: Москва
Posts: 869
Thanks: 0
Thanked 6 Times in 5 Posts
![]() |
Только после этого надо регистры дорожки и сектора взад выставлять и делать рекалибровку, по хорошему если.
И еще замечание: если в дисководе нет диска, то мотор не выключается. Чтобы его выключить, в порту #FF предусмотрен бит, который имитирует выдачу HLT на ВГ93. В TR-DOS есть подпрограммка хитрая, она на него серию импульсов выдает. Адрес не помню, она вызывается перед входом в командный процессор. Там выбирается текущий дисковод, даются импульсы, затем зачем-то выбирается дисковод D, снова даются имульсы. Нарушение этого алгоритма не канает - двигло не выключается. |
|
|
|
|
|
#5 | |
|
Guru
Join Date: 25th January 2005
Location: Miass, Chelyabinsk region
Posts: 4,044
Thanks: 630
Thanked 892 Times in 627 Posts
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
Quote:
) ага, ага при таком выключается всё! сложнее включить потом (пример тому - magic) но как-то можно, сходу не помню как..а в тр-дос, кажется, не на всех контроллерах дисководы выключаются.. у меня выключался тлько по прошествии 15 индексных импульсов.
__________________
wbw, psb. |
|
|
|
|
|
|
#6 |
|
Master
Join Date: 27th April 2005
Location: Москва
Posts: 869
Thanks: 0
Thanked 6 Times in 5 Posts
![]() |
Включить не так сложно:
1) Отпустить Reset. 2) Подождать - не знаю сколько но это ключевой момент, посему чем дольше тем лучше. 3) Установить в регистре дорожки число, соответствующее реальности. Сделать это можно двумя способами: либо подать команду "чтение индекса" и посмотреть считанный заголовок, либо подать команду "рекалибровка" AKA "Восстановление" в старой литературе, при этом башка гарантированно отъедет на 0 трек и в регистре гарантированно встанет 0. Прикол с Magic заключается в отсутствии необходимой паузы (2). Загрузка порта #FF там есть (выбираем верхнюю сторону диска), и затем следует первая команда - рекалибровка. К тому моменту, как подается эта команда, ВГшка не успевает выйти из ступора и тупо повисает. По поводу индексных импульсов - да, бит HLT порта #FF через диод заведен еще и на IP. Смысл - эмуляция индексных импульсов. Как раз для остановки дисковода при отсутствии диска. Смысл выбора дисковода D:, насколько я понимаю, заключается в том, чтобы выбрать дисковод, которого скорее всего нет, и из-за этого линия HLT будет болтаться в "1". Нетрудно догадаться, что при отсутствии диска в 5.25" приводе HLT всегда будет висеть в "0" (оптопара постоянно засвечена). Помнится я подключил дисковод D: и получил интересную картину: при попытке остановки дисковода на мгновение помигивает светодиод дисковода D:, затем снова переходим на текущий, двигатели продолжают вращаться. Т. о. при наличии всех четырех приводов и при отсутствии во всех приводах дисков, алгоритм работать не будет. |
|
|
|
|
|
#9 |
|
Master
Join Date: 27th April 2005
Location: Москва
Posts: 869
Thanks: 0
Thanked 6 Times in 5 Posts
![]() |
Вряд-ли. Операция смены текущего дисковода на ВГ93 вообще никак не влияет, ибо проходит мимо нее. Скорее всего ты путаешь, или имеет место быть какой-нибудь побочный эффект.
|
|
|
|
|
|
#10 |
|
Master
Join Date: 10th April 2005
Location: Сибирь
Posts: 631
Thanks: 20
Thanked 90 Times in 43 Posts
![]() ![]() |
Во многих моих программах используется метод снятия выбора дисковода с использованием процедуры из ПЗУ TR-DOS, например в G's Boot. Исходники G's Boot'а - на ZX Open Source.
__________________
Если в каком-либо моем сообщении перестала работать гиперссылка, напишите мне об этом в личном сообщении. Grand's — сайт об электронно-вычислительной технике (программы, документация, фотографии) Last edited by Grand; 5th June 2007 at 04:42. |
|
|
|
![]() |
| Currently Active Users Viewing This Thread: 1 (0 members and 1 guests) | |
|
|