Программирование на Ассемблере
bsr.s accdisk ;работаем с trackdisk bsr.s getchr ;ждем нажатия клавиши
bra.s qu ;выход qu:
move.l ExecBase,A6
lea diskio(PC),A1 ;загружаем адрес I/O-структуры
move #9,28(A1) ;команда MOTOR
move.l #0,36(A1) ;выключить мотор
jsr SendIO(A6) move.l conhandle(PC),D1
move.l dosbase(PC),A6
jsr Close(A6) ;закрываем консоль
error3:
lea diskio(PC),A1
move.l 32(A1),D7
jsr CloseDevice(A6) ;закрываем trackdisk.device
error2:
move.l dosbase(PC),A1
move.l ExecBase,A6
jsr CloseLib(A6) ;закрываем dos.library
error1:
EXIT_AMIGA
openfile: ;открыть файл
move.l A1,D1
move.l D0,D2
jsr Open(A6)
tst.l D0
rts scankey: ;проверка нажатия клавиши
move.l conhandle(PC),D1
move.l #500,D2 ;время ожидания
move.l dosbase(PC),A6
jsr WaitForChar(A6)
tst.l D0
rts getchr: ;чтение символа с клавиатуры
moveq.l #1,D3
move.l conhandle,D1
lea inbuff(PC),A1 ;буфер клавиатуры
move.l A1,D2
mvoe.l dosbase(PC),A6
jsr Read(A6)
moveq #0,D0
move.b inbuff(PC),D0
rts accdisk:
lea diskio(PC),A1
move #2,28(A1) ;команда: READ
move.l #diskbuff,40(A1) ;адрес буфера чтения
move.l #2*512,36(A1) ;читаем два сектора
move.l #20*512,44(A1) ;смещение: 20 секторов
move.l ExecBase,A6
jsr SendIO(A6) ;посылаем команду
rts ;все! dosname: dc.b \'dos.library\',0
align.w
dosbase: dc.l 0
consolname: dc.b \'RAW:0/100/640/100/** Test-Window S.D.
|