Description
РДС.Руководство пользователя.
1.Процессор консольных команд.
Процессор консольных команд в РДС v2.00 значительно усовершенствован и рас-
ширен по сравнению с более ранними версиями.В целом он функционально более
приближен к ПКК используемому в МикроДОС,и по сравнению с последним,есть суще
ственный плюс – возможность использования настоящих BAT-файлов.
В ПКК РДС начиная с v2.00 используются следующие встроенные команды: “ста-
рые” – REN,ERA,TYPE,SAVE,DIR,USER;и новые – TEST,REST.
Команда REN – переименование файлов
Синтаксис: REN <новое имя> =<старое имя>
Пример: REN T1.TXT =T0.TXT – переименовать файл T0.TXT в T1.TXT
Команда ERA – удаление файлов
Синтаксис: ERA <имя файла>
Команда TYPE – вывод на экран содержимого файла
Синтаксис: TYPE <имя файла>
Команда SAVE – сохранение памяти с адреса 0100h в файл
Синтаксис: SAVE <количество блоков 256кб (дес)> <имя файла>
Пример: SAVE 32 PROG.COM – сохранить 8кб из памяти в файл PROG.COM
Команда DIR – вывести содержимое директории диска
Синтаксис: DIR [диск][маска файлов]
Команда USER – сменить текущего пользователя
Синтаксис: USER <номер пользователя (дес)>
Команда TEST – тест квазидиска,аналогична команде “8” в МикроДОС.
Синтаксис: TEST [Диск][команда] , где “команда” может принимать значения:
R — будет выполнено восстановление контрольных сумм по данным сектора.
F — будет выполнено форматирование указанного квазидиска.
Внимание! При форматировании квазидиска C: на нём будут удалены все файлы,
в том числе командный процессор и система станет неработоспособна, для их
восстановления потребуется перезапуск из основного файла РДС.
Примеры:
TEST
или
TEST C: – тестирование квази-диска
TEST R
или
TEST C:R – тестирование квази-диска с восстановлением
TEST D:F – форматирование второго квази-диска (при его наличии)
Команда REST – сброс дисковой подсистемы.Теперь после “горячего” старта ОС,
например после нажатия ‘УС+С’,сброса не происходит,но тем не менее не нужно
опасаться ошибки BDOS “Disk is R/O”,так как новая версия BDOS автоматически
обрабатывает эту ошибку.Это означает,что после смены диска не обязательно про
изводить сброс дисковой подсистемы.(В МикроДОС BDOS работает аналогично,но
там есть возможность потери информации в каталоге диска,в РДС же это не гро-
зит.) Команда REST введена в основном для того чтобы некоторые программы пра-
вильно воспринимали информацию о заполнености диска.
В ПКК РДС v3.XX добавлена новая команда HDD.
Синтаксис: HDD [диск:][номер] , где номер – шестнадцатиричное число.
Диск указывать не обязательно, в этом случае подключение будет выполнено к
текущему диску.
Примеры:
HDD<BK> – выводит текущие номера подключенных “дискет”.
HDD A:1F
или
HDD A:001F – подключает к устройству А: “дискету” HDD номер 1FH.
HDD B:0 – отключает винчестер от устройства В:.
HDD 5 – назначает текущему диску (А: или В:) дискету номер 5.
В ПКК РДС v2.00 введена возможность переназначения консоли ввода-вывода,
аналогичная имеющейся в МикроДОС.
Пример.
C>DIR>LST<BK> ,где <ВК> означает нажатие соответсвующей клавиши.
По этой команде листинг каталога диска С: будет выведен помимо экрана в файл
LST,на этом же диске.
C>SID<SID.INP<BK>
По этой команде будет загружен отладчик SID,и команды будут ему передаваться
из файла SID.INP.
Кстати теперь при запуске файлов типа .COM и .BAT возможно указание расшире
ния.К примеру на диске имеются файлы DIRH.COM и DIRH.BAT,и после команды
C>DIRH<BK>
будет всегда запускаться COM-файл,так как у COM-файлов приоритет над BAT-фай-
лами.И поэтому нужно вводить:
C>DIRH.COM<BK> (или DIRH<BK> – для запуска COM-файла.
и C>DIRH.BAT<BK> – для запуска BAT-файла.
Для вывода управляющих последовательностей символов,по прежнему использует-
ся их прямой набор.
Пример.
A>^[\<BK> -Включение КОИ-7.Нажать клавиши <АР2><\><BK>.
Управляющая последовательность кодов 1Bh,07 включает/выключает подачу звуко
вого сигнала при каждом нажатии клавиш.
Пример:
A>^[^G<BK> -нажатие клавиш <АР2><УС+G><BK>.
Список некоторых управляющих последовательностей приведён в таблице:
┌──────────────┬────────────────────┬────────────────────────────────────────┐
│ <АР2><[> или │ 1Bh, 5Bh │ Включение КОИ-8 │
│ <АР2></> │ 1Bh, 2Fh │ │
├──────────────┼────────────────────┼────────────────────────────────────────┤
│ <АР2><\> │ 1Bh, 5Ch │ Включение КОИ-7 │
├──────────────┼────────────────────┼────────────────────────────────────────┤
│ <АР2><6> │ 1Bh, 36h │ Вывод символов в негативе │
│ │ или 1Bh, 62h │ │
├──────────────┼────────────────────┼────────────────────────────────────────┤
│ <АР2><7> │ 1Bh, 37h │ Отключение вывода символов в негативе │
│ │ или 1Bh, 61h │ │
├──────────────┼────────────────────┼────────────────────────────────────────┤
│ <АР2><E> │ 1Bh, 45h │ Сброс экрана │
│ │ │ (стирание и отключение негатива) │
├──────────────┼────────────────────┼────────────────────────────────────────┤
│ <АР2><J> │ 1Bh, 4Ah │ Стирание экрана │
├──────────────┼────────────────────┼────────────────────────────────────────┤
│ <АР2><H> │ 1Bh, 48h │ Переместить курсор в левый вехний │
│ │ │ угол экрана без стирания │
├──────────────┼────────────────────┼────────────────────────────────────────┤
│ <АР2><Y>YX │ 1Bh, 59h, YYh, XXh │ Перемещение курсора в координаты X и Y │
│ <АР2><T>YX │ 1Bh, 54h, YYh, XXh │ (используются коды введённых символов) │
├──────────────┼────────────────────┼────────────────────────────────────────┤
│ <АР2><P>YX │ 1Bh, 50h, YYh, XXh │ Установить цвет фона YYh и цвет │
│ │ │ символов XXh │
├──────────────┼────────────────────┼────────────────────────────────────────┤
│ <АР2><УС+G> │ 1Bh, 07h │ Включение/выключение звука нажатия │
│ │ │ клавиш │
└──────────────┴────────────────────┴────────────────────────────────────────┘
1.1 Использование BAT-файлов.
BAT-файл представляет собой обычный текстовый файл,в котором содержатся
команды только для ПКК,возможно задание до 10-ти параметров.Последовательно-
сть символов %N -где N номер параметра от 0 до 9,означает подстановку соответ
ствующего параметра при исполнении BAT-файла.Параметры разделяются между со-
бой пробелом.
Пример:
C>PROG PAR0 PAR1 PAR2 … PAR9
Пример использования BAT-файла.
Содержимое файла MAC.BAT :
M80 =%0
L80 %0,%1,%0/N/E
Этот файл можно использовать для трансляции любой программы на МакроАссембле-
ре вместе с файлом-библиотекой типа .REL.После введения следующей команды:
MAC PROG MYLIB<BK> ,ПКК выполнит следующие команды:
M80 =PROG
L80 PROG,MYLIB,PROG/N/E
Результатом будет файл PROG.COM.
2.Драйвер клавиатуры.
Драйвер клавиатуры примерно такой же как и в МИКРОДос последних версий.
1) Переключение русские/латинские (в том числе временное) -<РУС/ЛАТ>.
2) Переключение маленькие/большие (в том числе временное) – <СС>.
Осуществляется поддержка индикации каждого режима клавиатуры.
3) При нажатии клавиш <УС+СС> и клавиш дополнительного поля клавиату-
ры,вырабатываются коды псевдографики.Раскладка такая же как в МИКРОДос.Рис.1.
Переключение групп тоже аналогичное – <‘+ТАБ>,<‘+ПС>,<‘+ЗБ>,<‘+ВК>,где значок
“‘” означает одновременное нажатие <УС+СС>.При одновременном нажатии клавиши
<УС> и клавиш дополнителного поля и <ТАБ>,<ПС>,<ЗБ>,<ВК>,так же вырабатывают-
ся коды псевдографики.Рис.2.
Рис.1 Рис.2
┌───┬───┬───┐ ┌───┬───┬───┐
│ ╔ │ ╦ │ ╗ │ │ ¤ │ Ё │ ё │
├───┼───┼───┤ ├───┼───┼───┤
│ ╠ │ ╬ │ ╣ │ │ █ │ ° │ ▓ │
├───┼───┼───┤ ├───┼───┼───┤
│ ╚ │ ╩ │ ╝ │ │ ▀ │ ▌ │ ▒ │
├───┼───┼───┤ ├───┼───┼───┤
│ ═ │ ║ │ ═ │ │ ▄ │ ▐ │ ░ │
└───┴───┴───┘ └───┴───┴───┘
3.Распределение памяти и совместимость.
После запуска программы из командной строки,становится доступной память с
адреса 100h по 0FAFFH.
Все программы написанные для СР/М будут работать,программы написанные в МИ-
КРОДос для ВЕКТОРа тоже будут работать,если в них нет обращения к функциям
BDOS,которых нет в СР/М.Не будут работать также программы некорректно написан
ные,то есть такие которые обращаются напрямую к РК-консоли по адресам 0F800h-
0F81Bh.Эти адреса в РДС предоставлены под ОЗУ пользователя,и в принципе можно
было написать эмулятор РК-консоли для запуска этих немногочиленных программ,
но эта игра вряд ли стоит свеч.Ведь никто не собирается заставлять вас,уважа-
емые пользоатели,стирать со всех своих дискет МИКРОДос.
Формат квазидиска в МикроДОС и РДС теперь одинаков, вы спокойно можете “пе-
реключаться” с МикроДОС на РДС и обратно,и спокойно пользоваться всеми файла-
ми, единственное ограничение — не удаляйте и не перемещайте файл RDS.SYS.
4.Генерация РДС.
Для записи РДС на системные дорожки можно воспользоваться программой System
Generator для РДС.Синтаксис командной строки аналогичен программе SYSGEN в Ми
кроДОС.
SG [S:]FILENAME.EXT D:ADDR ,где S-исходный диск,D-диск назначения,ADDR-
стартовый адрес файла (шестн.),а FILENAME.EXT – имя файла.
Пример:
A>SG RDS2.COM A:100<BK>
5.Изменения по сравнению с v1.xx.
Кроме того,что переключение букв большие/мал. происходит теперь клавишей
<СС>,а клавиша <F5> теперь вырабатывает код 04,- изменению коснулось клавиш
F6-F10.Ранее для их задействования надо было нажимать клавишу <УС> и одну из
клавиш <F1>-<F5>,теперь вместо клавиши <УС> надо нажать клавишу <СС>.Комбина-
ции клавиши <СС> и <F1>-<F5> вырабатывают коды 10h-14h.Во всех ранних програм
мах (например Test & Format) необходимо пользоваться старым способом.
6.Заключение.
В целом,представленная версия РДС может считаться вполне законченным продук
том,в который,по принципу разумной достаточности,включены все необходимые для
хорошей ОС для ВЕКТОРа возможности,поэтому представляется маловероятной необ-
ходимость в будущем выпускать новые версии РДС.Та цель для которой создава-
лась эта ОС,достигнута,кроме того после выхода в свет v1.04,оказалось что мно
гие пользователи желают видеть эту ОС предназначенной для работы не только в
основном в режиме №1,но и как конкурента ОС типа МикроДОС,т.е. предназначен-
ной и для работы программ разработанных ранее под CP/M.В частности результа-
том этого явилась смена формата знакогенератора и следовательно увеличение бы
строты вывода символов на экран,а также повышения сервисности процессора кон-
сольных команд.
Вьюнов.
РДС.Руководство программиста.
1.Введение.
Программирование в РДС мало отличается от программирования в СР/М,интерес
для программиста представляют системные ячейки и переключение режимов.Кроме
того есть некоторые тонкости в работе с адресами 0А000h по 0DFFFh.
2.Системные ячейки.
РДС предоставляет программисту 62,5кб в режиме 0 (полностью совместимом с
СР/М) и 64кб в режиме 1.При этом в обоих режимах задействованы системные ячей
ки,которые находятся в нулевой системной странице памяти(адреса с 0 по 0100h)
Как известно в ОС СР/М в этой области памяти зарезервированы следующие адреса
0-2 – “горячий” старт ОС,
3 – байт конфигурации,
4 – номер текущего диска и области пользователя,
5-7 – переход на диспетчер функций BDOS,
38h-3Ah – переход на обработку прерывания по кадровому импульсу
(в “Вектор 06Ц”),
5Ch-7Fh – зарезервированы для БУФ файла,
80h-0FFh – зарезервированы под область DMA.
В РДС добавлены следующие ячейки:
8-0Аh – переход на диспетчер функций BDOS,добавлен для корот-
кого вызова BDOS – командой RST 1,а также зарезервирован для расширения функ-
ций BDOS.
0Bh-0Dh – признак РДС (три байта в КОИ-8 – “РДС”),для того что-
бы программа смогла определить (если надо),что она работает именно в РДС.
0Eh – версия РДС,старшая тетрада – номер версии,младшая –
номер коррекции.
0Fh – слово включения резидентной части РДС,байт выводимый
в порт 10h.В данной версии ОС,РДС находится в нулевой зоне квазидиска,соответ
ственно слово включения будет – 20h.
3Bh – копия порта 10h,используется при обращении к резидент
ной части РДС.(См. также п.8)
3Ch – слово возврата из резидентной части РДС,после холодно
ного старта и для полной СР/М-совместимости установлено в 23h,но может быть
изменено (например,если его установить в 0,то по адресам с 0A000h по 0DFFFh
будут находится 2 и 3 экранные плоскости).
3Dh – коды ошибок BIOS,если при обмене с диском не было оши
бок,устанавливается в 0.В основном эта ячейка предназначена для режима работы
РДС номер 1.
3Eh – номер текущего режима РДС (биты 0-6),в данной версии
использутся только режимы 0 и 1,бит 7 зарезервирован для переключения режимов
3Fh – номер режима обработки ошибок BIOS при обмене информа
цией с дисками.Номера 0 и 2 используются только в режиме 0 РДС,номер 1 – в лю
бом.
– номер 0 (установлен при холодном старте) — ошибки обрабатывает BIOS,выво-
водится сообщение типа “BIOS ERROR,CONTINUE ?”
– номер 1 — BDOS и BIOS игнорируют ошибки,их обработка поручается программе
пользователя,в ячейке 3Dh – код ошибки.
– номер 2 — ошибки передаются для обработки BDOS
– номер 3 — дополнительный режим, ошибки обрабатываются BDOS, плюс при чте-
нии с КД выполняется корректировка контрольных сумм по данным секторов
40h-5Bh – зарезервированы в режиме номер 1.
Кроме того,в сегменте РДС (то есть в данной версии зона 0) по адресу 0А000h
находятся три слова,которые содержат адреса частей РДС интересных для програм
миста.По адресу 0А000h – адрес начала кода BIOS,0А002h – адрес начала BIOS ди
сплэя (РК-консоль) и 0А004 – адрес начала знакогенератора.
3.Переключение режимов.
Режим номер 1 в РДС есть то новое,ради чего и была написана эта ОС,этот ре-
жим предоставляет пользователю все 64кб ОЗУ ВЕКТОРа,и предназначен для созда-
ния ВЕКТОРовских программ для ДОС.Именно он позволяет использовать полноцвет-
ную графику и дисковые функции BDOS одновременно,- без всяких проблем.
Я не случайно упомянул,про дисковые функции,-дело в том,что в режиме 1,фун-
кции работы с консолью BDOS не работают,ведь подразумевается,что программа
для того и выходит в него,чтобы использовать нестандартные векторовские функ-
ции работы с экраном,поэтому эта программа должна их в себе содержать.Кстати,
для своей работы программа пользователя может использовать знакогенератор РДС
который содержит 256 знаков с матрицей 6Х10 точек (10 байт на символ).
Кроме того,возможно использование программы обработки “дисплэйного” прерыва
ния (RST 7) и подпрограмм работы с клавиатурой (об этом смотри п.8).
Теперь приведу пример переключения режимов.Представим программу,которой тре
буется после загрузки перейти в режим 1,использовать 16-цветную графику и ра-
боту с дисками,а после окончания работы,скажем по желанию пользователя,-выйти
обратно в ОС.Ниже приведен пример структуры такой программы.
ВНИМАНИЕ ! По сравнению с v1.XX ,переключение из режима в режим стало более
удобным,- не обязательно после каждого переключения “сбрасывать” дисковую под
систему.
START: LXI SP,0
DI
XRA A
STA 3CH ;По адресам 0А000h-0DFFFh должно быть экранное ОЗУ.
MVI A,81H
STA 3EH ;Переходим в режим 1,бит 7 – признак переключения.
MVI C,0 ;Используем для этого функцию 0.
CALL 5 ;или RST 1
;После этого РДС установит режим обработки дисковых
;ошибок номер 1,и запишет 0C9h (RET) по адресу 38h.
LDA 4
STA TDISK ;Возьмем номер текущего диска.
LXI H,INT0
SHLD 1 ;Установим адрес перехода по БЛК+СБР,
LXI H,INT7
SHLD 39H ;и адрес “дисплэйного” прерывания.
MVI A,0C3H
STA 38H
EI ;Разрешаем прерывания.
. . .
Далее текст программы…
. . .
;Здесь выход в РДС.
EXIT: DI
MVI A,80H
STA 3EH ;В режим номер 0.
MVI C,0
CALL 5 ;После этого РДС установит режим обработки ошибок – 0
;и запишет 23h по адресу 3Ch.
EI
LDA TDISK
STA 4 ;Установим текущим прежний диск.
JMP 0
END
4.Пример обработки ошибок BIOS в режиме РДС номер 1.
При работе программы в режиме номер 1,при использовании дисковых функций
BDOS нужно следить за ошибками BIOS.Примерный код такого обработчика приведен
ниже.
;Программа вызывающая функции BDOS.
. . .
MVI C,15
CALL V5 ;Вызов функции BDOS.
. . .
V5: CALL 5
MOV C,A ;Сохраним “выход” BDOS.
LDA 3DH
ANA A
MOV A,C
RZ ;Возврат,если нет ошибок.
BIOSER: ;Здесь код обработчика ошибок BIOS.
. . .
Кроме приведённого выше способа обработки дисковых ошибок в режиме РДС но-
мер 1,есть ещё один способ.
Он заключается в том,что режим обработки ошибок (ячейка 3Fh) устанавливают,
как и режиме 0 РДС,в 0 или 2,но при этом перехватывают обработку функций РК-
консоли.Об этом смотри п.8.
5.Доступ к данным BIOS дисплэя.
По смещению 1Еh от начала кода BIOS дисплэя, находится указатель (слово)
на некоторые небезынтересные для программиста ячейки.
+—–+—–+————————————————————–+
|Смещ.|Длина| Назначение данных |
+—–+—–+————————————————————–+
| 0 | 1 | ХХ |
| 1 | 1 | Текущая координата X курсора,от 0 до 79. |
| 2 | 1 | Текущая координата Y курсора,от 0 до 255. |
| 3 | 1 | При ненулевом значении байта,при каждом прерывании по кадрово|
| | |му импульсу,будет устанавливаться палитра и этот байт уменьш..|
| 4 | 16 | Таблица элементов палитры (цветов). |
| 20 | 2 | Указатель на текущую кодовую таблицу символов. |
| 22 | 2 | Указатель на коды,вырабатываемые при нажатии комбинаций кла- |
| | |виш <УС>,<СС> и клавиш дополнительного поля клавиатуры (также |
| | |такие как <ТАБ>,<ПС>,<ЗБ>,<ВК>), – это четыре группы по 16 б.;|
| | |и следом за ними четыре группы по 12 байт – коды псевдографики|
| | |вырабатываемые при совместном нажатии клавиш <УС+СС> и дополни|
| | |тельного поля клавиатуры. |
| 24 | 1 | Цвет бордюра экрана и признак режимов 512/256 (копия порта 2)|
| 25 | 1 | Ячейка Scroll,копия порта 3. |
| 26 | 1 | Байт определяющий нажата ли какая-либо клавиша,если -1,то нет|
| 27 | 1 | Больше не используется, оставлено для совместимости. |
| | |Было RUSLT=FFh, при =A0h ускоряет работу ПП обработки прерыва-|
| | |ния,пропуская проверку при отсутствии нажатых клавиш и РУС/СС.|
| 28 | 2 | MODKEY: состояние РУС и СС (= 0,1 или 2) |
| 30 | 1 | PORT1. Как бы состояние порта 1, но РУС=7 и 5 биты, СС=6 бит.|
| 31 | 1 | Количество введенных кодов в буфере клавиатуры. |
| 32 | 1 | Указатель на первое свободное место в буфере клавиатуры. |
| 33 | 1 | Указатель на первый введенный код в кольцевом буфере. |
| 34 | 8 | Кольцевой буфер клавиатуры на 8 символов. |
| 42 | 1 | Константа чтения,подпрограммы чтения байта с магнитофона. |
| 43 | 1 | Константа записи,подпрограммы записи байта на магнитофон. |
| 44 | 1 | При ненулевом значении этого байта,при каждом нажатии на кла-|
| | |виши,будет подаваться звуковой сигнал. |
| 45 | 1 | TIMER |
| 46 | 1 | POVTK |
| 47 | 1 | POVTK2 |
| 48 | 1 | CNTCUR |
| 49 | 1 | CURFR |
| 50 | 1 | ESCCNT |
| 51 | 1 | ESCP |
| 52 | 1 | MASC |
| 53 | 1 | MIGCN |
+—–+—–+————————————————————–+
Пример доступа к этим данным:
. . .
DI
LDA 15
OUT 10H
LHLD 0A002H
LXI D,1EH
DAD D
MOV E,M
INX H
MOV D,M
XCHG ;теперь в HL адрес начала данных.
LXI D,СМЕЩЕНИЕ ; смещение нужного байта.
DAD D
. . .
;здесь производятся неоходимые над этими данными действия.
. . .
LDA 3CH ;отключение “сегмента” РДС.
OUT 10H
EI
. . .
6.Новые функции BDOS.
Начиная с версии 2.00, в BDOS РДС введены новые функции,которые вызываются
с занесением в регистр С значения 80h,а в регистр В – номер новой функции.
Функция 0.
Тест квазидиска,в D передаётся номер диска (C: = 2), в E параметры проверки
(0 – обычный тест, 1 – тест с восстановлением контрольных сумм секторов,
2 – форматирование КД). При обнаружении ошибки выводится сообщение с указа-
нием номера дорожки и сектора.
Функция 1.
Сообщение о занятости текущего диска.Входных параметров нет,на выходе в HL
содержится количество занятых файлами килобайт,в DE – всего килобайт на диске
Функция 2.
Переназначение ввода с клавиатуры на файл,в DE БУФ файла.На выходе – А=0FFh
если ошибка,иначе А=0.
Функция 3.
Установка вывода в файл,выводимых на экран символов,в DE БУФ файла.Если всё
нормально – на выходе А=0.
Функция 4.
Закрытия файла вывода символов.Без параметров.
Функция 5.
Запуск BAT-файла,в DE БУФ,по адресу 80h – параметры для BAT-файла в том же
формате,в котором они передаются Consol Command Processor’ом COM-файлу.Пара-
метры должны быть разделены пробелом.Подробнее см. в “РДС.Руководство пользо
вателя”.На выходе – А=0,если всё нормально.
Функция 6.
Получение очередного символа из BAT-файла.На выходе – А=очередной символ,
или 1Аh,если достигнут конец файла.
Функция 7.
Получение параметров BAT-файла,в DE адрес следующей структуры: 1-й байт –
номер параметра,2 и 3-й байт – адрес,куда переслать параметр.
Функция 8.
Статус BAT-файла,на выходе А=0 – не активен,А=-1 активен.
Функция 9.
Вызов функций BIOS,в DE адрес следующей структуры: 1-й байт – номер функции
(номер 0 – активность клавиатуры),2 и 3-й байт – передаваемые параметры.
Функция 10.
Передача команд основному CCP РДС – файлу COMMAND.SYS,по адресу 80h- до 128
символов команд,разделённых 0Dh и 0Аh,и заканчивающихся символом 1Аh.
Функция 11.
Установка активности альтернативного CCP,в DE БУФ файла с обязательным ука-
занием диска.
Функция 12.
При Е=0 – деактивизация альтернативного CCP,возвращение активности основно-
му;при Е=-1 получение статуса альтернативного CCP,если А=0 – не активен,А=-1
– активен.
Функция 13.
Проверка текущего диска на статус Read only,если он установлен то происхо-
дит “сброс” текущего диска.
Функция 14.Получение номера “диска” HDD.
Вход: регистр Е – номер диска (А:=0 и т.д.);выход: HL=номер (0 – если не
один “диск” не подключен),DE=максимальный возможный номер “диска”.
Функция 15.Установка номера “диска” HDD.
Вход: по адресу 4 – номер диска (обычно текуший,А:=0 и т.д.),DE=номер;
выход: А=0 – нормально.
ПРИМЕЧАНИЕ: Все параметры-адреса должны лежать (в новых функциях) вне диа-
пазона 0A000h-0DFFFh.
7.Установка и работа альтернативного
Consol Command Processor’a.
В версиях РДС до 2.00,была возможность подмены основного CCP методом замены
файла COMMAND.SYS,но начиная с версии 2.00 появляется более элегантное реше-
ние этой проблемы.С помощью новых функций BDOS №№ 10,11,12 возможна одновре-
менная работа основного и альтернативного CCP.
К примеру,оболочка типа Vector Commander с помощью новой функции 0B80h,уста
навливает себя в качестве активного (загружаемого после каждого “горячего”
старта) CCP, и при необходимости передаёт, с помощью функции 0A80h,команды
основному CCP.После вызова этой функции,необходимо сделать “горячий” старт,т.
е. JMP 0,после этого временно,до конца выполнения последней переданной коман-
ды,становится активным основной CCP,а затем снова передаётся управление аль-
тернативному.
8.Использование подпрограмм “дисплэного”
прерывания и работы с клавиатурой.
Ниже приведён пример программы,которая переходит в режмим РДС №1 и при этом
использует для своей работы подпрограмму “дисплэйного” прерывания,функции ра-
боты с клавиатурой РДС,а также перехватывает подпрограмму вывода символа на
экран “РК-консоли” (в виду возможных ошибок диска) на подпрограмму вывода сим
вола в окно сообщений ОС.
; Программа начинает свою работу ещё в режиме РДС №0.
LHLD 6
LXI D,37H ;по смещению 36h,от адреса перехода на диспетчер
;функции BDOS,содержится команда перехода на адрес
;”дисплэйного” прерывания в сегменте РДС.
DAD D
MOV E,M
INX H
MOV D,M
XCHG
SHLD OINT7+1
LDA 4 ;здесь переход в режим №1.
STA MEM4
MVI C,0
MVI A,81H
STA 3EH
CALL 5
DI
LXI H,INT7
SHLD 39H
MVI A,0C3H
STA 38H
LXI H,BDOS
SHLD 6
SHLD 9 ;после перехода в режим №1,при вызове функций BDOS
;по умолчанию блокируются прерывания,поэтому здесь
;происходит замена векторов.
LDA 0FH
OUT 10H
LHLD 0A002H
LXI D,10
DAD D
MOV E,M
INX H
MOV D,M
XCHG
SHLD OPRINTC ;сохраняем старый адрес подпрограммы вывода символа.
XCHG
LXI D,IN_WINDOW ;это адрес подпрограммы вывода символа в окно
;сообщений ОС.Незабудьте,что в момент передачи уп
;равления этой подпрограмме,подключен сегмент РДС !
MOV M,D
DCX H
MOV M,E
XRA A
STA 3CH ;по адресам 0А000h-0DFFFh будут 2 и 3 экр.плоскости.
STA 3BH
OUT 10H
EI
;Здесь можно также было установить новую таблицу цветов и отключить
;режим 512/256 экрана,установив соответствующие ячейки.
;Ниже начинается основная программа.
. . .
INT7: PUSH H
PUSH PSW
LDA 15
OUT 10H
LXI H,0
DAD SP
LXI SP,STEK1
OINT7: CALL 0
SPHL
LDA 3BH ;возможно прерывание произошло в момент обращения
;в сегмент РДС.
OUT 10H
POP PSW
POP H
EI
RET
BDOS: LXI H,0
DAD SP
SHLD BDOS10+1
DI
LDA 15
STA 3BH
OUT 10H
LXI SP,STEK2
EI
CALL 0A006H ;на диспетчер BDOS в сегменте РДС.
DI
MOV C,A
BDOS10: LXI SP,0
LDA 3CH
STA 3BH
OUT 10H
MOV A,C
EI
RET
;При возврате в режим №0,нужно будет лишь восстановить адрес
;подпрограммы вывода символа на экран.
9.Заключение.
В заключении хочу упомянуть о некоторых тонкостях работы с адресами 0A000h-
0DFFFh.Все дисковые функции работают с этими адресами корректно,а вот функции
9 и 10 в режиме 0,если их параметры лежат в указанном диапазоне,не будут рабо
тать верно.Это надо учитывать при разработке программ,в крайнем случае можно
написать собственные аналогичные функции.
И последнее,новый ПКК после запуска COM-файла,по адресу 4Сh оставляет БУФ
запущенного файла.Таким образом программа может узнать под каким именем и что
очень важно – с какого диска она загружена.
Вьюнов.

Reviews
There are no reviews yet.