Программирование на Ассемблере
;Ваша программа
... ;...продолжается
... ;...здесь error:
... ;Ваш обработчик ошибок OpenFile: ;Функция Open, которая используется не
;только для создания окон
;ввода/вывода, но и для создания
;файлов
move.l dosbase,A6 ;извлекаем адрес библиотеки dos
jsr Open(A6) ;вызываем Open
tst.l D0 ;OK? проверка - после возврата
rts ;возврат dosname: ;ASCII-имя библиотеки dos
dc.b \'dos.library\',0
align ;выравниваем адрес по четности
dosbase: ;место для хранения адреса dos.library
blk.l 1
Но это еще не все. Функция Open требует несколько параметров, уточняющих ее
действия. Эти параметры передаются на регистрах D1 и D2. D1 указывает на
строку, содержащую имя открываемого файла (эта строка должна оканчиваться
нулевым байтом), а D2 содержит 32-битное слово, задающее режим работы с
файлом.
Теперь поясним, как все это можно применить для открытия окна ввода/вывода.
К счастью, операционная система Amiga позволяет одинаковым образом работать
с файлами, консолью (клавиатурой и экраном) и с портом RS232, используя
обобщенное понятие канала ввода/вывода.
Нас интересует именно консоль, так как при указании ее в качестве имени
файла система сама откроет окно ввода/вывода. Имя консоли начинается с
\'CON:\' подобно тому, как имена файлов на диске имеют префикс \'DF0:\'.
В дополнение к этому нужно указать координаты X и Y левого верхнего угла
окна, а также его размеры и заголовок. Полное определение имени консоли для
создания окна выглядит примерно так: consolname: dc.b \'CON:0/100/640/100/-*-Window-*-\',0 Эта строка определяет окно, левый верхний угол которого имеет координаты
X = 0 и Y = 100, а ширина и высота равны соответственно 640 и 100 точек. Чтобы открыть такое окно, нужно написать: mode_old = 1005 ;режим открытия файла консоли lea consolname(PC),A1
move.l A1,D1 ;параметр нужен в D1
move.l #mode_old,D2
bsr openfile ;вызов нашей подпрограммы (см.
|