1. Для начала нужно определиться, какие функции будут возлагаться на этот драйвер, т.е. что он будет уметь делать. Основные функции видеоадаптеров это - установка видеорежима, рисование точек и линий, печать текста, вывод изображений.
2. Раз драйвер нерезидентный, то он видимо будет грузиться из файла. Т.е. компиляцию кода желательно производить в формат *.COM, а потом уже можно переименовать в *.DRV к примеру. Программа использующая драйвер загрузит его из файла в память, затем взяв адрес основной функции работы из памяти по заранее заданному смещению будет вызывать нужную функцию с параметрами. Например:
Код: Выделить всё
@Function table:
dw CGA_DriverFunction
dw CGA_PutImage
dw CGA_PutPixel
...
...
; ax - function number
; bx, cx, dx - params
CGA_DriverFunction proc near
add ax, ax
add ax, offset @FunctionTable
call ax
retn
CGA_DriverFunction endp
CGA_PutImage proc near
....
CGA_PutImage endp
CGA_PutPixel proc near
....
CGA_PutPixel endp
Я писал драйвер для работы c VESA стандартом, так что с алгоритмами рисования линий и точек - без проблем. Если совсем туго будет попробую скинуть пример.