ZX Format #03
29 февраля 1996
  TR-DOS  

Железо - Исправление ошибки TR-DOS.

<b>Железо</b> - Исправление ошибки TR-DOS.

   Исправление ошибки TR-DOS

(C) MAD MAX
________________________________

   Наверное  многие  (а  точнее,
практически  все) сталкивались с
таким неприятным явлением, - при
чтении некоторых программ голов-
ка  дисковода яростно забивается
в  конец  дисковода, издавая при
этом  душераздирающие звуки. По-
чему  это  происходит?  Что это?
Ошибка  контроллера или ошибка в
программе?  Многие думали о раз-
ном.  Но  вот Константин Углеков
из  Москвы  (огромное ему спаси-
бо!) решил уделить внимание дан-
ной  проблеме более серьезно. Мы
приводим  его выкладку по поводу
устранения данного дефекта, взя-
тую  из описания эмулятора Спек-
трума.

   На входе в подпрограмму #3Е44
(TR-DOS) в регистре B должна со-
держаться константа позициониро-
вания (от #08 до #0B); с ней де-
лают OR #18 и кладут результат в
регистр команд контроллера (зна-
чения  #18-#1B соответствуют ко-
манде  ПОИСК без проверки адрес-
ных  маркеров  на  дорожке). При
вызове  #3Е44 из #3ЕB5 регистр B
никак  не  определен, и он может
содержать,  например, число сек-
торов при вызове #3D13 с C=5 или
C=6.   Если  же  число  секторов
больше #20 , то в регистр команд
будет  направлен  не код команды
ПОИСК, а что-то иное.
   Простая  проверка показывает,
что  все происходит именно таким
образом.  Вызывая  #3D13  с  BC=
#4005  несколько  раз подряд (DE
считаем   неизмененным),   можно
наблюдать   перемещение  головок
дисковода  на  один шаг к центру
диска перед позиционированием на
начало  читаемого  блока,  а при
вызовах  с  BC=#6005 наблюдается
один шаг в обратном направлении.
Если  учесть,  что  #40 OR #18 =
#58  - код команды шаг вперед, а
#60 OR #18 - код команды шаг на-
зад, то никаких сомнений быть не
может - это ошибка TR-DOS!
   Сразу   следует  вопрос  -  а
можно  ли  испортить  диск, если
задать  число  секторов  #A0-#BF
(чтобы  получить  команду записи
сектора), или #F0-#FF (чтобы по-
лучить  команду записи дорожки)?
Ответ  - нет. Даже если контрол-
лер воспринимает числа #B8 и #F8
как законные команды, то для то-
го,  чтобы  запись на диск нача-
лась,  контроллер должен сначала
получить первый байт данных; для
команды записи сектора этот байт
должен  поступить  не позже про-
хождения  8-го  байта  GAP перед
записываемым сектором, а для за-
писи дорожки - в течении прохож-
дения  3  байт  с момента подачи
команды. Если первый байт данных
не  получен в эти сроки, то опе-
рация сразу же завершается ошиб-
кой  LOST  DATA  (Потеря данных;
бит  2  регистра  состояний),  и
выставляется  сигнал  IRQ (как и
положено  для  завершения  любой
операции). Раз эта ошибка не мо-
жет  привести  к порче диска, то
закономерен  вопрос:  а стоит ли
на нее вообще обращать внимание?
Если  Вас  интересует  повышение
скорости  обмена  с  диском,  то
непременно!  Все модификации TR-
DOS  на базе версии 5.03 с прис-
тавочками  типа  "FAST", "TURBO"
и  т.п.  совершенно бесмысслены,
если   при   каждом  обращени  к
функциям  5,6 подпрограммы #3D13
будет теряться время либо на по-
зиционирование  (хорошо, если на
один  шаг), либо на поиск секто-
ра.

   Что  можно предложить взамен?
Вместо вызова #3Е44 из #3EB2 вы-
зываем   что-нибудь  вроде  #880
(если  там  пусто),  а по адресу
#880  помещаем  небольшую  прог-
раммку:

PUSH  HL    ;в H номер дорожки
            ;который еще нужен
PUSH  AF    ;то же Замечание
CALL  #3E08 ;регистры HL и DE
            ;будут испорчены, а
            ;DE можно не сохран.
LD    B,A   ;наконец-то в B
            ;попадет значение
            ;константы позицио-
            ;нирования
POP   AF
POP   HL
JP    #3E44 ;и никакой ошибки!

   Чтобы  выполнить данную дора-
ботку,  Вам придется стереть со-
держимое  ПЗУ, и прошить его за-
ново. Для тех ПЗУ, в которых нет
пустого места (Scorpion), возмо-
жен  вариант  записи данного ку-
сочка  на  какое-нибудь ненужное
текстовое сообщение типа "INTER-
FACE ONE FITTED". Интересно, как
много  Скорпионов  с этим интер-
фейсом?
   К  вышесказанному следует до-
бавить, что данная доработка бы-
ла произведена на реальном Спек-
труме  и показала себя наилучшим
образом, не дав никаких побочных
эффектов. И посему рекомендуется
для употребления.



Другие статьи номера:

IS-DOS - "IS-DOS - начинающим" No 3

IS-DOS - "Оконная система IS-DOS".

IS-DOS - "Формат объектных модулей *.obj IS-DOS Ассемблера".

IS-DOS - "Формат таблицы локальных символов IS-DOS Ассемблера".

Авторы журнала - ZX-Format No.3

Железо - Исправление ошибки TR-DOS.

Железо - новая звуковая карта: General Sound.

Железо - новая модель Спектрума: Scorpion ZS 256 Turbo+.

Железо - о турбировании Спектрум-машин.

Железо - обзор модемов для ZX Spectrum.

Железо - Шинная архитектура Спектрума (концептуальная разработка).

Игрушки - "Last battle" (Последняя битва) подробное описание.

Игрушки - 48 утюгов (второй уровень).

Игрушки - десятка наиболее продаваемых в С.-Петербурге.

Игрушки - описание игры BATMAN-II.

Игрушки - что новенького: The Light Corridor, Jonny Quest in Doctor Zins, Bedlam, Bubble Dizzy, Navy Seals, Пираты.

Конкурс - конкурс на компьютерный анекдот.

Лотерея - лотерея для читателей журнала.

От авторов - о третьем выпуске журнала.

Отдохнём - HУ, ЮЗЕР, ПОГОДИ!

Отдохнём - глюкодром: Самые ОПЕЧАТКИ.

Помощь - Очередной трактат об очердной оболчке и не только.

Почтовый ящик - дискуссия.

Почтовый ящик - доска обьявлений.

Почтовый ящик - письма читателей.

Премьера - TASM 4.0 (Turbo ASseMbler for ZX-Spectrum 128k)

Премьера - Приключения ВИННИ ПУХА.

Программистам - Basic для всех №3.

Программистам - Адаптация игр: адаптация программ на диск.

Программистам - Адаптация игр: зыкрытые коды.

Программистам - адаптцация игр: бессмертия.

Программистам - ассемблер: Экскурс в анатомию ZX

Разное - Amiga: вопросы и ответы.

Разное - Амига: новости.

Разное - Перспективы П/О.


Темы: Игры, Программное обеспечение, Пресса, Аппаратное обеспечение, Сеть, Демосцена, Люди, Программирование

Похожие статьи:
free humor - aнекдот недели от Freeman'a.
Музыка - Музыка в жизни компьютерщика.
Программистам - iS-DOS 512k.
Маразм жив! - я решил ВЫПУСКАТЬ ГАЗЕТУ!
Вступление - содержание номера.

В этот день...   25 апреля