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

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

<b>Ассемблер</b> - Секреты 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. Поэзия однако...

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

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


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

Похожие статьи:
Смайлик - Для нормального человека: одна бутылка - нормально, две бутылки - много, три бутылки - мало...
Юмор - Наблюдение опытного пользователя.
News - Новости, старости: Chaos Construction 2001 состоялся, Pussy стала freeware, новое бумажное издание на спектруме, Raver покинул ряды Phantasy, новая версия эмулятора спектрума Real Speccy, Assembly 2001, новый коммандер Real Commander 2.0, Delirium Tremens уходят со спектрума...
Новье !? - О программах : Ocean Conquest, Assault Course, Drift, Sigma Seven.
HOT GAMES - Лучшая десятка от Magic Soft.

В этот день...   25 марта