Программирование на Ассемблере
Такие
библиотеки предоставляют все необходимые функции для работы с файл-
реквестерами и имеют удобный интерфейс взаимодействия с программами
пользователя. Информацию о том, как программировать реквестеры reqtools, Вы
можете найти в документации, входящей в комплект reqtools.library. 6.5.7. Непосредственный доступ к диску. Библиотека dos.library предоставляет все функции для работы с файлами,
однако иногда требуется обращаться к диску напрямую, минуя файловую систему
(например, при написании \"нефайловых\" игр или демонстраций). Для этого
используется специальное программно-эмулируемое устройство -
trackdisk.device, которое обеспечивает доступ к диску на низком уровне и
позволяет работать с отдельными секторами.
Однако помните, что различные эксперименты с trackdisk.device могут
привести к нежелательной модификации диска, поэтому мы рекомендуем при
изучении этого пункта использовать специально выделенный тестовый диск. Итак, начнем с инициализации trackdisk.device: ;** Direct Disk Access via trackdisk.device ** (6.5.6) OpenLib = -552
CloseLib = -414
ExecBase = 4
Open = -30
Close = -36
OpenDevice = -444
CloseDevice = -450
SendIO = -462
Read = -42
Write = -48
WaitForChar = -204
mode_old = 1005 run:
bsr.s init ;инициализация
bra.s test ;тест
init:
move.l ExecBase,A6
lea dosname(PC),A1
moveq #0,D0
jsr OpenLib(A6) ;открываем dos.library
move.l D0,dosbase
beq error ;ошибка!
lea diskio(PC),A1 ;область diskio
move.l diskrep,14(A1) ;порт
moveq #0,d0 ;работаем с DF0:
moveq #0,d1 ;сбрасываем флаги
lea trddevice(PC),A0 ;имя устройства
jsr OpenDevice(A6) ;открываем trackdisk.device
tst.l D0 ;ошибка?
bne error ;да!
move.l #consolname,D1
move.l #mode_old,D2
move.l dosbase(PC),A6
jsr Open(A6) ;открываем консоль
tst.l D0
beq error ;ошибка!
move.l D0,conhandle ;сохраняем id консоли
rts ;возврат
test: ;место для тестовой программы ...
|