Абзац
:: Поиск
:: Поддержка проекта
Webmoney:
  • Z610389805629
  • R427996570517
  • E023541002978
  • :: №16 (16.05.2003) Просмотров: 4712

    Автор: Евгений Илясов.

    Рубрика: В помощь разработчику.

    Номер: №16 (16.05.2003).



    Тормоз для винчестера

    Счастливым обладателям «винтов» посвящается.


    «Если говорить о каком-то наращивании, то в первую очередь - «винт», т.к. он дает самый серьезный выигрыш по любым характеристикам, - сравнительно с имеющимися».


    «Очень советую поставить винчестер. Сам уже полтора года с «винтом», и уже не представляю себе машины без него. Хотя, говорят, первые PC тоже бывали без «винтов».


    «... и полностью разделяю ваше мнение по поводу работы с «винтом». Надо было столько лет «юзать» дисковод, чтобы это оценить».

    Приведены «цитаты из классики», то бишь «надерганные» из информационных сборников «Open letters» мнения по поводу использования винчестеров с контроллером IDE DRIVE в системе IS-DOS.

    Довольно долгое время они вызывали у меня улыбку. До тех пор, пока... Пока архив на дискетах не «разбух» на столько, что стал серьезно тормозить дела. И вот, настало время, когда мне не остается ничего другого, как только присоединить свой голос к вышеприведенным восторгам.

    Но у каждой медали есть две стороны. Есть у Sinclair-совместимого компьютера с винчестером некоторая особенность, не то, чтобы очень уж неприятная, но скажем так, заставляющая время от времени хмурить брови.

    Речь в данном случае идет о том, что магнитные диски винчестера, в отличие от флоппи-родственников, пока включен компьютер, вращаются безостановочно. Во время работы в операционной системе IS-DOS, это существенно ускоряет операции обмена данными с накопителем и повышает общую производительность системы. А вот когда приходится использовать TR-DOS’ные программы (любимый ассемблер, любимый граф. редактор, любимый архиватор, или же любимый гейм-блокбастер), тогда этот же самый фактор способствует лишь бесполезной выработке хотя и значительного, но все же конечного ресурса работы винчестра.

    Есть, конечно, способы «заткнуть» движок накопителя. Можно, например, использовать драйвер винчестера под IS-DOS, содержащий функцию «standby» («ide+3sby.blk» или «ide+5sby.blk»), которая «перекрывает кислород» жесткому диску по истечении заданного времени (от одной секунды до, примерно, шестнадцати с половиной минут). Или, если TR-DOS’ная программа была загружена в RAM-дисковод (это, естественно, только для KAY’ев) утилитой «trd_ram.com», включить в стартовом меню утилиты флажок «Standby Y». По разным причинам идеальным выходом из положения ни один из этих способов назвать нельзя, и те, кто имеет некоторый опыт работы с винчестером в IS-DOS, хорошо об этом знают.

    Здесь предлагается альтернативный вариант «тормоза» - короткая программулька, которая тоже «глушит» винчестер до очередного обращения к нему, но вызывается для этого из-под TR-DOS. Исходным материалом для этой программы послужила IS-DOS’ная утилита «standby.com» (IskraSoft, 1998 г.), практически без изменений перенесенная в TR-DOS и снабженная для загрузки машиннокодового блока и его устойчивой отработки простейшим интерфейсом на Бейсике.

    Варианты использования могут быть самыми разными - «на вкус и цвет товарищей нет». Например, «автопилотный» - помещаем ее на диск под именем «boot», а в Бейсик-загрузчик дописываем строку, которая после свершения программой своего «тормозного» дела запускает «настоящий бут», естественно, уже имеющий к этому времени другое имя; если «автостоп» будет находиться в начале дискеты, то в этом случае вы даже не заметите его присутствия. Или, скажем, просто добавляем эту скромную утилитку на свой диск с TR-DOS’ыми программами, и в самом начале общения с диском, выбираем ее для исполнения. Именно такой вариант, не требующий дополнительных затрат времени на реорганизацию дисковой структуры, и реализован в приведенном листинге Бейсик-загрузчика:

    «Standby.B»


    10 CLEAR 29999
    20 RANDOMIZE USR 15619: REM: LOAD «standby» CODE 3e4
    30 RANDOMIZE USR 3e4
    40 REM CLEAR 65367
    50 RANDOMIZE USR 15619: REM: RUN «boot»

    Восстановление стандартного адреса RAMTOP в строке с номером 40 может быть полезным, если заведомо предполагается работа компьютера в режиме 48 Кб (например, «старые» игрушки, адаптированные для загрузки с диска), поскольку сама TR-DOS не очень-то корректно ведет себя с областью памяти UDG, переустанавливая ее адрес по своему собственному усмотрению (точнее - ликвидируя совсем).

    Шестнадцатеричный листинг кодов программы, или так называемый, «дамп»:

    «standby.C», адрес 24000, размер 17 байт.


    F3, DB, F0, 07, 38, FB, 3E, A0, D3, D0, 3E, E0, D3, F0, FB, AF, C9.

    Загрузка «не в свои» адреса введена потому, что вполне обычный для IS-DOS адрес загрузки 24000 слишком низок для использования в рамках TR-DOS. Впрочем, ничто не мешает перетранслировать процедуру «торможения» винчестера, благодаря ее релоцируемости, на какой-нибудь более высокий адрес. Ассемблерный листинг в формате ассемблера для этой цели также приводится:


            ORG 24000
            DI
    LABEL   IN A,(#F0)
            RLCA
            JR C,LABEL
            LD A,#A0
            OUT (#D0),A    ;кидаются значения...
            LD A,#E0
            OUT (#F0),A    ;... в порты винчестера.
            EI
            XOR A          ;обнулить аккумулятор
            RET            ;выход

    Удачного торможения!

    © 2004-2013 Perspective group