MS-DOS для программиста


Программа FDDIO - часть 4


asm out 12,al // Сброс триггера-указателя байта // для работы с 16-разрядными портами. // Следующий байт, выводимый в 16-разрядный // порт будет интерпретироваться // как младший

asm out 11,al // Установка режима контроллера ПДП

asm mov ax,of // Смещение буфера, младший байт asm out 4,al asm mov al,ah // Смещение буфера, старший байт asm out 4,al

asm mov ax,sg // Номер страницы asm out 81h,al

asm mov ax,511 // Длина передаваемых данных asm out 5,al asm mov al,ah asm out 5,al

asm mov al,2 // Разблокировка канала 2 контроллера ПДП asm out 10,al

// Инициализация контроллера закончена, // разрешаем прерывания. _enable(); }

/** * get_dpt * * Вычислить адрес таблицы параметров дискеты * * Функция возвращает указатель на таблицу * параметров дискеты * **/

DPT far *get_dpt(void) { void far * far *ptr;

ptr = (void far * far *)MK_FP(0x0, 0x78); return(DPT far*)(*ptr); }

/** * delay * * Формирование временной задержки при помощи * таймера. * * В качестве параметра функции передается * длительность задержки в количестве прерываний, * поступающих от таймера (таймер генерирует * в одну секунду примерно 18 прерываний) * **/

void delay(int cnt) { asm push bx asm push dx asm push si

asm mov si, cnt asm mov ah, 0 asm int 1ah asm mov bx, dx asm add bx, si

delay_loop: asm int 1ah asm cmp dx, bx asm jne delay_loop

asm pop si asm pop dx asm pop bx }

Остальные команды вы можете попробовать сами. Для получения дополнительной информации по контроллеру НГМД обратитесь к техническому руководству по IBM PC. Многое можно почерпнуть из описания микросхем дискового контроллера 765 фирмы NEC и аналогов этой микросхемы - Intel 8272A и отечественной КР1810ВГ72А.




- Начало -  - Назад -  - Вперед -