Virtual Worlds #01
31 декабря 1999
  TR-DOS  

Ассемблер - Секреты TR-DOS: о методах пределения наличия дисководов.

 ┌────────────────────────────┐
░▒▓▒▓▓█▓█ TR-DOS █▓█▓▓▒▓▒░ └────────────────────────────┘

            (C) TimeKeeper/MHCG


  Открывая  эту  рубрику я хотел
бы  для начала сказать пару слов
о том, зачем это и для кого. Де-
ло  в том, что разговоров на эту
тему  было  уже довольно много и
может показаться, что ничего но-
вого  здесь  уже  не придумаешь,
так  вот,  сразу спешу вас заве-
рить  в  том,  что  осталось еще
достаточно  проблем  и  загадок,
которые  общими  усилиями  можно
попытаться  разрешить.  Да  и не
все  что  было  опубликовано или
кем-то  сказано по поводу TR-DOS
было  правильно и понятно. Я уже
довольно  давно пытался написать
драйвер дисковых операций с пол-
ным перехватом  дисковых ошибок,
но никак  не мог найти все необ-
ходимые для этого данные. Даже в
знаменитой  ZX-Ревю  я не  нашел
ответов   на  интересующие  меня
вопросы,  а  в листингах драйве-
ров, которые я пытался набирать,
зачастую было очень много ошибок
или  же они мне просто не подхо-
дили.  Кстати,  раз  уж я начал,
так  скажу  несколько "ласковых"
про  статьи из ZX-Ревю. Интерес-
ного  там, конечно, очень много,
но вот листинги оставляют желать
лучшего. Драйвер дисковых опера-
ций, который стоит в этом номере
журнала,  был  набран  именно из
Ревюшки, но отассемблировать его
в  первоначальном  виде так и не
удалось. Часть подпрограм просто
отсутствовала,  а часть была на-
писанa неправильно. Мне лишь чу-
дом  удалось  довести драйвер до
рабочего  состояния.  В  связи с
этим  случаем  у  меня создалось
такое  впечатление, что листинги
програм  печатаются  вообще  без
какой  либо предварительной про-
верки  на  работоспособность. Но
это уже к вопросу о профессиона-
лизме  и,  возможно, мы еще вер-
немся   к  этому,  но  в  другой
раз...

 Первое, о  чем бы я хотел напи-
сать, - это как можно определить
наличие  дисководов. Не  присут-
ствие  или отсутствие  дискеты в
дисководе, а именно  наличие са-
мого  дисковода. Вы спросите за-
чем? Ну это уже на ваше усмотре-
ние. Я использовал  эту проверку
в Hard Core ver 3.01 full, чтобы
знать, сколько панелей можно вы-
водить, две или одну, да и прос-
то  в  последнее  время входит в
моду  вставлять в программу тест
компьютера,  так  вот  туда то и
можно  приспособить эту процеду-
ру:


        ORG   #8000
        ENT
        XOR   A
        CALL  TEST
        LD    (DRV_0),A
        LD    A,1
        CALL  TEST
        LD    (DRV_1),A
        LD    A,2
        CALL  TEST
        LD    (DRV_2),A
        LD    A,3
        CALL  TEST
        LD    (DRV_3),A
        RET
TEST    OR    #3C
        LD    C,#FF
        LD    HL,#1FF3
        CALL  DOS
        LD    A,#08
        LD    HL,#2FC3
        CALL  DOS
        LD    IY,10000

; число в IY подобрано
; опытным путем.
; (максимальное время передвиже-
; ния головки  дисковода от пос-
; леднего трека на нулевой)

AGAIN   LD    HL,#1FDD
        CALL  DOS
        LD    A,(#5CD7)
        CP    #50
        RET   NZ
        DEC   IY
        LD    A,LY
        OR    HY
        JR    NZ,AGAIN
        RET
DOS     PUSH  HL
        JP    #3D2F
DRV_0   DEFB  0
DRV_1   DEFB  0
DRV_2   DEFB  0
DRV_3   DEFB  0


  Вообще  говоря,  в контроллере
есть  специальное  средство, для
определения  "готовности" диско-
вода,  но  у меня  это  средство
срабатывает только  когда в дис-
ковод  вставлена дискета. А при-
веденная   процедура   правильно
определяет наличие  дисковода не
зависимо  от  того,  есть  в нем
дискета или нет.

  Как это работает: когда мы по-
даем контроллеру  команду выхода
на нулевую  дорожку, он пытается
получить  от дисковода  подтвер-
ждение  о  выполнении  операции.
(сигнал 'головка в исходном сос-
тоянии'  -  2_ой  бит порта #1F)
Если дисковод подключен и голов-
ка находится на нулевой дорожке,
то контроллер сразу вырабатывает
этот  сигнал,  а  если дисковода
нет,  то  контроллер  не получит
от дисковода подтверждения  и не
будет  выдавать  сигнал подтвер-
ждения, сигнализируя  о том, что
команда  еще  не  выполнена. Ес-
тественно,  проверка должна осу-
ществляться при отключенном тур-
бо режиме, если он у вас есть.

  После  запуска программы будут
по очереди загораться светодиоды
дисководов.  На проверку каждого
из  них  затрачивается  примерно
1/25   секунды   если   дисковод
подключен и около 1/2  в против-
ном  случае, так что при провер-
ке, перед обращением к следующе-
му  дисководу,  неплохо  было бы
выводить сообщение типа: "подож-
дите, тестируется дисковод номер
N",  чтобы пользователь не поду-
мал, что программа зависла.

  После тестирования, в соответ-
ствующую   переменную  заносится
нолик,  если устройство не обна-
ружено или #28 при положительном
результате.

  На  этом  про определялки все.
Возможно, в следующий раз я рас-
скажу  вам о том, как определить
параметры дисковода: кол-во сто-
рон, дорожек, скорость перемеще-
ния головок, и, быть может, даже
фирму,  изготовившую  данную мо-
дель. :-))





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

От редакции - история создания журнала.

Путеводитель - подробное содержание номера.

Описание оболочки - описание оболочки и методов ее правильной эксплуатации.

Авторы - об авторах.

Ассемблер - Z80 Flags: недокументированные комманды процессора Z80.

Ассемблер - Оверлеи для JC: Описание методов создания утилит работающих под управлением Jemmini_Commander 4.0T.

Ассемблер - Секреты TR-DOS: о методах пределения наличия дисководов.

Ассемблер - Круги на воде: Алгоритмы имитации эффекта известного на других платформах, под названием "круги на воде".

Ассемблер - Поиск пути. Решение задачи "статического" поиска наикратчайшего маршрута между двумя точками.

Отдохни - Механический эффект. История о том, что бывает, если использовать презервативы сомнительного происхождения.

Железо - Глюки клавиатуры: почему в играх для двух игроков, при игре вдвоем, компьютер не слушается вашего управления и информация о том, как этого избежать.

Железо - Прерывания: Кое-что непонятное о прерываниях второго рода.

Техпомощь - Мысли вслух. Интересно письмо из конференции fido7.zx.spectrum на тему "К вопросу о стандартизации".

Техпомощь - File FAQ. Полный разбор форматов файлов, наиболее часто встечающихся в Интернет, и не только; а также способы их конвертации в "нормальный" вид.

Техпомощь - Dos Review: материал по формату дисковой операционной системы IS-DOS.

Техпомощь - Dos Review 2: материал по формату дисковых операционных систем ПК "АГАТ", Радио-86РК, SP-DOS, БК-0011М.

Техпомощь - Dos Review 3: материал по формату дисковых операционных систем CP/M, ASC SOUND MASTER, RT11, СМ ЭВМ РАФОС.

Техпомощь - Dos Review 4: материал по формату дисковой операционной системы от неизвестного автора.

DI:HALT:99 - Анализ DH:99. Наконец-то вся правда о прошедшей летом, в г.Дзержинске пати, от самих организаторов.

DI:HALT:99 - Hidden Parts. Жизнь дзержинских (и не только) спектрумистов в период проведения DI:HALT:99.

DI:HALT:99 - Результаты. После прошествия DH:99, чуть ли не каждая вторая газета, считала своим долгом придумать новый вариант результатов. Данная статья направле- на на то, чтобы окончательно поставить все точки над "И".

Программы - Alien: описание и прохождение игры по фильму "Чужой".

Программы - описание Universal AntiProtector 0.01 (программа для автоматического раскалывания ряда популярных защитных систем).

Программы - редактор игровых экранов "Белые Пятна".

Программы - Exhumator: программа для "эксгумации дисков".

Программы - чанковый графический редактор: Hard Core ver 3.01

Программы - Глаз Вопиющего: програмка позволяющая смотреть картинки, спрайты, слушая при этоммузыку.

Отдохни - Стих о Sysop'e. Поэзия однако...

Отдохни - Секс в Фидо. Юмористический расказ о том, как же на самом деле занимаются любовью заядлые фидошники.

Отдохни - Анекдоты. Подборка анекдотов с компьютерной тематикой.


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

Похожие статьи:
Фенечки - говорят дети.
Реклама - Реклама и объявления ...
Цитаты - В этой рубрикe рeчь пойдeт о Цитатах из разных газeт и журналов в юмористичeской, а иногда и остро-сатиричeской формe.

В этот день...   25 августа