Программирование на Ассемблере
move.l #-1,D7 ;для EXIT_AMIGA (флаг)
qu:
move.l conhandle(PC),D1
move.l dosbase(PC),A6
jsr Close(A6) ;закрываем консоль
move.l dosbase(PC),A1
move.l ExecBase,A6
jsr CloseLib(A6) ;закрываем dos.library EXIT_AMIGA ;только для AssemPro! openfile: ;открыть канал ввода/вывода
move.l A1,D1 ;имя файла - в D1
move.l D0,D2 ;режим - в D2
move.l dosbase(PC),A6
jsr Open(A6) ;открываем файл (консоль)
tst.l D0 ;ошибка?
rts dosname: dc.b \'dos.library\',0
align.w dosbase: dc.l 0 consolname: dc.b \'CON:0/100/640/100/** CLI-Test **\',0
align.w conhandle: dc.l 0 mytext: dc.b \"** Hello, world! **\",0
align.w outline: dc.w 0
inbuff: blk.b 80 end
6.4.3. Работа с принтером. До сих пор мы рассматривали ввод/вывод на примере консоли. Теперь поговорим
о других устройствах вывода. Для начала рассмотрим, как Amiga работает с
принтером.
Для принтера выделяется специальный тип каналов ввода/вывода - \"PRT:\",
подобно тому, как для консоли выделяются каналы \"CON:\" и \"RAW:\". Правда, в
отличие от консоли, канал принтера должен открываться в режиме mode_new =
1006. А дальше все очень просто: Вы используете уже известную Вам функцию
Write для печати на принтер, передав ей в качестве параметра идентификатор
открытого канала PRT:.
Заметим, что можно написать универсальную функцию для вывода данных в канал
ввода/вывода. Для этого нужно выделить какой-нибудь регистр (например, D1)
для передачи ей идентификатора канала в качестве параметра. Такая функция
будет способна выводить данные на консоль, на принтер и на другие
устройства.
|