ВУЗ:
Составители:
149
; назначены только для символьных устройств.
; Команды 12 (IOCTL-вывод), 13 (открытия устройства) и 14
; (закрытия устройства) не обрабатываются в данном драйвере
; Команда 10: Состояние вывода
output_status: jmp done ; Выйти с уст. битом "сделано"
; Команда 11: Очистка вывода
output_ckear: jmp done ; Выйти с уст. битом "сделано"
; Команда 12: IOCTL-вывод
ioctl_output: jmp unknown ; Выйти с уст. битом "ошибка"
; Команда 13: Открытие
open: jmp done ; Выйти с уст. битом "сделано"
; Команда 14: Закрытие
close: jmp done ; Выйти с уст. битом "сделано"
; Команда 15: Сменный носитель
; Драйвер по номеру устройства в группе, полученному от DOS,
; должен установить бит "занято" в слове состояния заголовка
; запроса в 1, если носитель не сменный, или в 0, если носи-
; тель сменный. в RAM-диске носитель несменный, поэтому сле-
; дует установить этот бит в 1.
removable: mov es:[bx].rh_status,200h ; Установка бита "занято"
jmp done ; Выйти с уст. битом "сделано"
; Команда 16: Вывод по занятости
; Это команда для символьных устройств. Данный драйвер должен
; установить бит 2ошибка" и код ошибки 3 (неизвестная команда)
output_busy: jmp unknown ; Выйти с уст. битом "ошибка"
; Выход по ошибке
unknow: or es:[bx].rh_status,8003h ; Уст. бита и кода ош.
jmp done ; Выйти с уст. битом "сделано"
; Обычный выход
done: or es:[bx].rh_status,100h ; Уст. бит "сделано"
pop si
pop di
pop dx
pop cx
pop bx
pop ax
pop es
pop ds
ret ; Возврат в DOS
; Конец программы
end_of_program:
; Выравнивание начало RAM-диска на границу параграфа
if ($-start_address)mod 16 (если не 0)
org ($-start_address)+(16-($-atart_address)mod 16)
endif
start_disk equ $
; Процедура initial помещается в начало RAM-диска, т.к.
; она выполняется единственный раз в команде нициализа-
; ции, после чего ее можно стереть.
initial proc near ; Вывод сообщения на консоль
149 ; назначены только для символьных устройств. ; Команды 12 (IOCTL-вывод), 13 (открытия устройства) и 14 ; (закрытия устройства) не обрабатываются в данном драйвере ; Команда 10: Состояние вывода output_status: jmp done ; Выйти с уст. битом "сделано" ; Команда 11: Очистка вывода output_ckear: jmp done ; Выйти с уст. битом "сделано" ; Команда 12: IOCTL-вывод ioctl_output: jmp unknown ; Выйти с уст. битом "ошибка" ; Команда 13: Открытие open: jmp done ; Выйти с уст. битом "сделано" ; Команда 14: Закрытие close: jmp done ; Выйти с уст. битом "сделано" ; Команда 15: Сменный носитель ; Драйвер по номеру устройства в группе, полученному от DOS, ; должен установить бит "занято" в слове состояния заголовка ; запроса в 1, если носитель не сменный, или в 0, если носи- ; тель сменный. в RAM-диске носитель несменный, поэтому сле- ; дует установить этот бит в 1. removable: mov es:[bx].rh_status,200h ; Установка бита "занято" jmp done ; Выйти с уст. битом "сделано" ; Команда 16: Вывод по занятости ; Это команда для символьных устройств. Данный драйвер должен ; установить бит 2ошибка" и код ошибки 3 (неизвестная команда) output_busy: jmp unknown ; Выйти с уст. битом "ошибка" ; Выход по ошибке unknow: or es:[bx].rh_status,8003h ; Уст. бита и кода ош. jmp done ; Выйти с уст. битом "сделано" ; Обычный выход done: or es:[bx].rh_status,100h ; Уст. бит "сделано" pop si pop di pop dx pop cx pop bx pop ax pop es pop ds ret ; Возврат в DOS ; Конец программы end_of_program: ; Выравнивание начало RAM-диска на границу параграфа if ($-start_address)mod 16 (если не 0) org ($-start_address)+(16-($-atart_address)mod 16) endif start_disk equ $ ; Процедура initial помещается в начало RAM-диска, т.к. ; она выполняется единственный раз в команде нициализа- ; ции, после чего ее можно стереть. initial proc near ; Вывод сообщения на консоль
Страницы
- « первая
- ‹ предыдущая
- …
- 147
- 148
- 149
- 150
- 151
- …
- следующая ›
- последняя »