Deja Vu #0A
30 сентября 2000

Программирование - процедура определения наличия диска в дисководе.

<b>Программирование</b> - процедура определения наличия
 диска в дисководе.
__________________________________________

(C) SKL-KEEPER
__________________________________________

   Начиная  с  Jemmini commander'а (как же
давно это было!), в очень многих boot'ах и
          коммандерах  стала   применяться
          процедура   определения  наличия
          диска в дисководе. Да  ведь  как
          удобно-то! В былые времена у ме-
          ня были случаи, когда по  собст-
          венной невнимательности или  за-
          парке гробил диски и  программы,
          а все потому, что не  удосужился
          при смене диска перечитать ката-
лог:-( Помню, с каким восторгом  воспринял
я появление в своей коллекции Perfect Com-
mander'а V.1.53 и какое удовольствие полу-
чал от такой рутинной работы, как  копиро-
вание на одном дисководе: знай себе, меняй
диски,программа сама за тебя все остальное
сделает!
   Все было прекрасно, пока я не обзавелся
"Scorpion'ом ZS-256 TURBO"  с ПрофПЗУ и не
поставил  на  него  трехдюймовый дисковод,
который, вскоре, стал  для меня  основным.
Да оно и понятно: пятидюймовых дискет сей-
час уже не сыщешь, жизнь заставила перехо-
дить на "трехдюймовки".
   И вот тут начались неприятности. Оказы-
вается, то,что прекрасно работает на флоп-
поводе 5,25", плохо или совсем не работает
на 3,5". Как известно, в Скорпионах с Проф
ПЗУ при включении  компьютера  в  сеть  по
умолчанию устанавливается режим turbo. А в
этом  режиме  на трехдюймовых дисководах в
подавляющем  большинстве boot'ов и комман-
деров наличие диска не определяется!!!:-(
   Тут  есть  еще  один  нюанс: защищен ли
диск от записи. Если  защищен, большинство
программ или, вообще, не реагируют на сме-
ну диска, или, что еще хуже, "дергают", т.
е. на долю секунды  появляется изображение
заставки или панели, затем пропадает, дис-
ковод опять читает, и все повторяется сно-
ва.
   Обидно, что во многих замечательных bo-
ot'ах  и коммандерах процедура определения
наличия  диска в дисководе работает некор-
ректно! Даже  в  моем  любимом "командире"
REAL  COMMANDER v1.8, самом  безглючном  и
удобном, на  мой  взгляд! Хотя я не совсем
прав в данном случае: наличие диска в этой
программе  определяется, но со второго ра-
за, т.е. вставил  диск, вынул, опять вста-
вил, тогда только срабатывает...
   Я занимался  разработкой удобного  сис-
темного boot'а, и очень мне  хотелось сде-
лать  в  нем еще и автоопределение наличия
диска. Т.к. я кодер пока начинающий,доста-
точного опыта у меня нет, решил попытаться
"вытащить"  эту  процедуру  из  какой-либо
программы,где она хорошо работает. Идеаль-
но, на мой взгляд, наличие диска определя-
ется  в  Best Viewer'е И.Рощина. Несколько
часов  потратил  на "копание" в программе,
но так и не смог ее оттуда достать:-( Вни-
мательно почитал статью И.Рощина в "ZX-Rе-
вю" N:5-6 за 1997 год с названием "TR-DOS.
Как не допустить ошибки", попробовал  вос-
пользоваться опубликованной там процедурой
и опять "облом": на трехдюймовом дисководе
в режиме turbo наличие диска не  определя-
ется. Но  ведь  в  своем  Best Viewer'е он
применил ту же программу, во  всяком  слу-
чае, куски ее я там находил, когда  "пере-
капывал" оригинал. Утаил что-то, что ли?:)
И почтового адреса его нет, что б написать
ему и посоветоваться...
   В  общем, эту затею я отложил, а взялся
за boot, разработанный RED LIMITED. И хотя
он  тоже  не  совсем  корректно  определял
наличие  диска  в  3-дюймовом  дисководе в
режиме turbo,я его немного доработал, и он
стал работать нормально. Спросите, как до-
работал? А почитайте мою статью в  DEJA VU
#09 в разделе "кодинг". Принцип  тот же. И
что интересно, работает!..
   Итак, я написал небольшую программу для
демонстрации этой процедуры. При ее запус-
ке она пишет "DISK PRESENT", стоит Вам вы-
тащить  диск  из  флопповода,  он начинает
вращаться, и  появляется  надпись  "INSERT
DISK  FOR REREADING". Нажатие ENTER приве-
дет  к выходу из программы, поэтому можете
запускать  ее  прямо из ассемблера. Но не-
достаток  у  этой процедуры все же есть, а
именно тот самый нюанс, о котором  я напи-
сал  выше:-( Но, тем  не  менее, программа
работоспособна, и  я  рискну предложить ее
Вам  для  использования  в своих boot'ах и
commander'ах. Я думаю, если  уж Вы делаете
такие вещи, Вам не составит труда из пред-
ложенной  демонстрационной программы выта-
щить то, что Вам нужно?
   Надеюсь, ребята из RED LIMITED не будут
против того, что я решил предать огласке и
всеобщему вниманию их процедуру... В любом
случае, я буду рад письму от них, на кото-
рое  отвечу  непременно. Мой  адрес  можно
найти в разделе "Реклама" этого журнала.
   Комментарии  в  тексте  программы мини-
мальны, т.к. я не слишком хорошо в них ра-
зобрался,что б комментировать, что для че-
го... Итак:

;Процедура определения наличия диска
;в дисководе из boot'а RED LIMITED,
;вытащенная by SKL-KEEPER aka Колесников
;Сергей в декабре 1999 года.

        ORG 30000
        LD HL,#4000     ;Очистка экрана
        LD DE,#4001
        LD BC,#1800
        LD (HL),L
        LDIR
        LD A,#05        ;BORDER 5
        OUT (#FE),A
        LD (HL),#28
        LD BC,#02FF
        LDIR
        LD A,2
        CALL #1601
        LD DE,TXT_1     ;Печать надписи
        LD BC,26        ;DISK PRESENT
        CALL #203C
        LD DE,#A500
        LD HL,#4000
        LD BC,#1B00
        LDIR
LAB_1   CALL LAB11
LAB_2   EI
LAB_3   RES 5,(IY+#01)
LAB_4   CALL LAB16
        CP #00
        JP NZ,LAB_1
        LD A,(#C900)
        AND A
        JR Z,LAB_2
        HALT
        BIT 5,(IY+#01)
        JR Z,LAB_4
        LD A,(IY+#CE)
        CP #0D          ;Это ENTER?
        RET Z           ;если да,выход.
        JR LAB_3

LAB_5   LD DE,#1E75
        LD A,#3F
        LD I,A
        IM 1
LAB_6   PUSH DE
LAB_7   NOP
        NOP
        NOP
        JP #3D2F

LAB_8   LD IX,#2FC1
LAB_9   PUSH IX
        JR LAB_7

LAB10   LD A,#08
        LD C,#1F
        LD DE,#2A53
        JR LAB_6

LAB11   LD HL,#0000
        LD (#C900),HL
        LD (#C901),HL
        LD (#5CF4),HL
        LD HL,#C9F1
        LD (#5CC2),HL
        CALL LAB15
LAB12   LD A,#00
        AND A
        JR NZ,LAB13
        LD A,2
        CALL #1601      ;Печать надписи
        LD DE,TXT_2     ;INSERT DISK FOR
        LD BC,32        ;REREADING.
        CALL #203C
LAB13   LD HL,#C000
        LD B,#09
        CALL LAB_5
        CALL LAB15
        CALL LAB16
LAB14   LD A,C
        LD (#C900),A
        RET

LAB15   LD HL,#BFFF
        LD DE,#5AFF
        LD BC,#1B00
        LDDR
        RET

LAB16   LD A,#C3
        LD (#5CC2),A
        LD HL,LAB17
        LD (#5CC3),HL
        CALL LAB_8
        CALL LAB10
        LD (LAB17+1),SP
        LD DE,#0000
        LD IX,#2740
        CALL LAB_9
LAB17   LD SP,#0000
        LD DE,#1FF3
        CALL LAB_6
        LD DE,#1FEB
        CALL LAB_6
        CALL LAB_8
        LD A,#C9
        LD (#5CC2),A
        LD A,(#5CCD)
        AND #40
        RET

TXT_1   DEFB 16,0,17,5,22,0,4
        DEFB "       DISK PRESENT"
TXT_2   DEFB 22,0,4,16,0,17,5
        DEFB "INSERT DISK FOR"
        DEFB " REREADING"
------------------------------------------

И в заключении:
---------------

   Информация для тех, у кого есть принтер
и кто  пользуется  IS-DOS'овским  LOTUS'ом
для печати текстов художественными шрифта-
ми. Если  Вас не устраивает начертание ка-
ких-то отдельных букв шрифта,отгрузите его
на TR-DOS'овский диск и, с помощью какого-
-нибудь редактора спрайтов, исправьте нуж-
ные Вам буквы. Исправленный фонт перепиши-
те опять на IS-DOS'овский диск и печатайте
на здоровье! Лично  я пользуюсь FILES DUMP
EDITOR V1.3,который когда-то распространял
Инфорком. В принципе, никто не мешает  Вам
создавать и свои собственные  шрифты. Поле
для деятельности обширное! Попробуйте и не
пожалеете!
------------------------------------------



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

Аперитивчик - управление оболочкой журнала.

Аперитивчик - вступление: много раз ставился вопрос о прекращении выпуска пос ледующих номеров Deja VU...

Тема - Новый ZX Spectrum: рассуждения на тему Спектрума нового поколения.

Тема - Бесплатный сыр: что такое shareware программы и как на них заработать.

Тема - Кибер война: о том как Русские Хакеры похищают военные секpеты США.

Тема - Russian ZX: история создания Российского спектрума.

Тема - Теория журналостроения - часть №2. Как самому сделать журнал.

Капля припоя - Схема #1FFD ON/OFF для SCORPION ZS 256 на основе схемы опубликованной в ZX Format.

Капля припоя - схема 128 цветов на ZX Spectrum'е.

Капля припоя - схема Чтение порта #7FFD на ZS Scorpion.

Капля припоя - схема ZS Scorpion 1024.

Капля припоя - как взламывать Телефонные карточки.

Капля припоя - схема цифрового индиктора треков для Дисковода.

Капля припоя - подключение HD дисковода к ZX Spectrum.

Капля припоя - схема индикации записи и чтения на дисковод.

Капля припоя - О проблеме в прошивке расширенной клавиатуры (в "таганрогской" схеме) в IS-DOS.

Капля припоя - схема Kempston Mouse Interface (v2.1) на БИС KP580BB55A!

Капля припоя - Юстировка головки дисковода FDD 3,5".

Software - обзор новых игра для Спектрума: 8-й отдел, Xor 2000, Цезарь, Пасьянс "Пирамида", Aliens.

Software - обзор новых игра для Спектрума: Tower Pod и текстовая адвентюра Кащеева Цепь.

Software - описания редактора звуков CYBERAX Sound Editor v1.0.

Программирование - процедура печати сообщений в нижних строках экрана.

Программирование - процедура определения наличия диска в дисководе.

Программирование - решение проблемы 2000 года в IS-DOS.

Программирование - Доработка GLOBAL COMMANDER'а.

Программирование - Загрузчик для рабочей дискеты.

Программирование - быстрая процедура печати спрайтов через стек от WoodlandStudio.

Программирование - некоторые вопросы создания файловых оболочек на SPECCY и обзор SPECTRUM'овских DOS'в.

Программирование - BOOT изнутри №2 потенциальные глюки и недостатки...

Программирование - об архивировании - алгоритмы, производящие сжатие без потерь.

Программирование - Качесвенная процедура конверсия ZX картинки в ASCII.

Программирование - "цветные" точки и линии, градиентная заливка, конверсия в 256 цветов.

Another World - новости из мира PC.

Доска почета - Антология компьютерных журналов для ZX Spectrum.

Доска почета - Точка зрения: системная Шина ZX Spectrum.

Доска почета - печальная история жизни Владимирской группы REMEDY, так и не выпустившей Героев на спектруме.

Доска почета - о различных находках и разгаданных секретах нашего любимого и непревзойденного компьютера ZX Spectrum.

Доска почета - Почта №1: открытое письмо Дмитрия Кленова об информационном голоде на ZX Spectrum.

Доска почета - Почта №2: критика от Blade/Triumph.

Семь и 1/2 - посмеемся: Анекдоты пpо ламеpов и юзеpов, а также pеальные звонки в слyжбy тех. поддеpжки.

Семь и 1/2 - посмеемся: Анекдоты пpо ламеpов и юзеpов, а также pеальные звонки в слyжбy тех. поддеpжки №2.

Семь и 1/2 - Винни Пух 2.

Семь и 1/2 - Компьютеры в кино... 25 характерных особенностей компьютеров, показываемых в голливудских кинофильмах.

Пробы пера - Великая летопись кунгов - новелла по игре Черный Ворон.

Пробы пера - рассказ "разбуженная магия".

Пробы пера - Рассказик о SPECCY...

Пробы пера - рассказ "Эликсир Зверя".

Пробы пера - Поэзия.

Реклама - куплю/продам ZX Spectrum/Спектрум.


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

Похожие статьи:
Ассемблер - Плавный скрол текста вверх в окне 15x24 знакоместа.
От авторов - Новая оболочка у журнала.
Открытия - Про пиво и рассказы М.Жванецкого. Почему пиво лучше, чеm женщины ?
PartyZone 2 - Phat'0 ZX results.
Introduction - Несколько авторских слов.

В этот день...   9 октября