__________________________________________
(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,который когда-то распространял
Инфорком. В принципе, никто не мешает Вам
создавать и свои собственные шрифты. Поле
для деятельности обширное! Попробуйте и не
пожалеете!
------------------------------------------
Other articles: