· Начало · Отвђтить · Статистика · Поиск · FAQ · Правила · Установки · Язык · Выход · WASM.RU · Noir.Ru ·

 WASM Phorum —› WASM.ASSEMBLER —› Помогите написать драйвер клавиатуры

Посл.отвђт Сообщенiе


Дата: Ноя 9, 2004 18:35:27

Для курсовой мне нужно написать драйвер клавиатуры под DOS, выполняющий полностью все функции стандартного драйвера. А что, вообще, он делает? Я думаю, описывает функции DOS(типа 0Ah и др.) для работы с клавиатурой, которые мне придётся написать самому с помощью портов ввода-вывода. Или я не прав? В принципе, я уже начал его писать, вот только что делать дальше не знаю, подскажите.

_1964629256__KeyDrv.asm


Дата: Ноя 9, 2004 19:03:26

Почитай Зубкова, например.
Вообшето в инете полно примеров.
Примерно так это делается:
1)забиваешь в памяти место
2)копируешь туда обработчик
3)Редактируешт IDT
4) дальше в коде
1обработчика читаешь коды клавишь через порты
2посылаешь EIO контроллеру
5)при необходимости для выхода, обнуляешь память, востонавливаешь IDT

Если будуть срочные вопросы, можешь писать на аску ICQ : 220-078-640


Дата: Ноя 9, 2004 21:39:23

„Почитай Зубкова, например.“
У меня есть "Assembler для DOS, Windows и Unix", но там маловато - даже 15 страниц про драйвера нету. Может есть другие книжки, целеком посвящённые драйверам? Для Windows я видал такие, а для DOS нет.


Дата: Ноя 10, 2004 05:31:49

Смотри у Зубкова главу 5.8, 5.11 там есть примеры кода.
Можешь ещё полистать tech60.


Дата: Ноя 10, 2004 10:57:08

Можно дизасемблить и помотреть стандартный DOS драйвер.


Дата: Ноя 10, 2004 12:23:50

У Финогенова есть кой-чего на эту тему (в аттаче). Правда, не драйвер, а так - описание взаимодействия системы с клавой.

2139455631__rf51_53.zip


Дата: Ноя 10, 2004 12:44:00 · Поправил: LocTb

ProgramMan
3)Редактируешт IDT- DOS же, просто таблицу векторов прерываний, по DWORD'у на прерывание.


Дата: Ноя 10, 2004 12:55:06

LocTb, нда... бывает я уже давно под дос не писал


Дата: Ноя 10, 2004 18:59:03

„У Финогенова есть кой-чего на эту тему (в аттаче). “
Спасибо за доку. Я от туда вот что вычитал:
„...Системные программы с помощью драйвера клавиатуры (точнее говоря, объединенного драйвера клавиатуры и экрана, так называемого драйвера консоли с именем CON) считывают из кольцевого буфера содержимое ячейки...“
У меня есть драйвер консоли, может выкинуть из него всё что касается вывода и получится драйвер клавиатуры?


Дата: Ноя 16, 2004 11:16:45

Что касается драйверов (именно драйверов! которые подключаются в config.sys через device=), то поищи в библиотеке или в инете вот это:
---------
ББК 32.973.2-018
Л92
УДК 681.322-181.4
Роберт Лэй
Разработка драйверов устройств для MS-DOS
Перевод с английского.
Рязань: Versus Ltd. 1992 .
---------
Здесь расписаны структура драйвера,компиляция,примеры и.т.д. и т.п. Очень полезная штука.
В Досе драйвер CON - драйвер стандартного ввода вывода, совмещает драйвер клавы и дисплея.
Так что тебе надо именно драйвер консоли писать(клав+дисп), который заменит при установке родной драйвер CON.

А вообще по клавиатуре посмотри Джордейна.


Дата: Ноя 16, 2004 11:17:40

Что касается драйверов (именно драйверов! которые подключаются в config.sys через device=), то поищи в библиотеке или в инете вот это:
---------
ББК 32.973.2-018
Л92
УДК 681.322-181.4
Роберт Лэй
Разработка драйверов устройств для MS-DOS
Перевод с английского.
Рязань: Versus Ltd. 1992 .
---------
Здесь расписаны структура драйвера,компиляция,примеры и.т.д. и т.п. Очень полезная штука.
В Досе драйвер CON - драйвер стандартного ввода вывода, совмещает драйвер клавы и дисплея.
Так что тебе надо именно драйвер консоли писать(клав+дисп), который заменит при установке родной драйвер CON.

А вообще по клавиатуре посмотри Джордейна.


_605358720__Sol03.zip


Дата: Ноя 17, 2004 14:57:08

Книга Джордейна называется вроде "Справочник програмиста персонального компьютера" или что-то типа того


Дата: Ноя 17, 2004 16:47:09

Книжку Лэя поискал - не нашёл, а вот за доку спасибо. Ничего более подробно описывающего работу обработчика девятого прерывания я не видал.


Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.091