Программирование на Ассемблере
V0.1\',0
trddevice: dc.b \'trackdisk.device\',0
align.w
conhandle: dc.l 0
inbuff: ds.b 8,0
diskio: ds.l 20,0
diskrep: ds.l 8,0
diskbuff: ds.b 512*2,0 end Приведем пример законченной программы, работающей с диском на низком
уровне: ;***** Track disk - Basic function I/O, 86, S.D ***** ILABEL ASSEMPRO:Includes/amiga.i ;только для AssemPro OpenLib = -552
CloseLib = -414
ExecBase = 4 * Вызовы AmigaDOS Open = -30
Close = -36
OpenDevice = -444
CloseDevice = -450
SendIO = -462
Read = -42
Write = -48
WaitForChar = -204
mode_old = 1005 INIT_AMIGA ;только для AssemPro run:
bsr.s init ;инициализация
bra test ;основная программа init:
move.l ExecBase,A6
lea dosname(PC),A1
moveq #0,D0
jsr OpenLib(A6) ;открываем dos.library
move.l D0,dosbase
beq error1 ;ошибка! нет dos.library??? lea diskio(PC),A1
move.l #diskrep,14(A1) ;порт ввода/вывода
moveq #0,D0 ;номер устройства
moveq #0,D1 ;флаги
lea trddevice(PC),A0 ;имя \"trackdisk.device\"
jsr OpenDevice(A6) ;открываем trackdisk
tst.l D0 ;ошибка?
bne error2 ;да! странно... bp:
lea consolname(PC),A1
move.l #mode_old,D0
bsr.s openfile ;открываем окно (консоль)
beq error3 ;ошибка!
move.l D0,conhandle ;сохраняем идентификатор rts test:
|