Программирование на Ассемблере
выше)
beq.s error ;обработка ошибок
move.l D0,conhandle rts
...
conhandle: dc.l 1 ;место для идентификатора консоли Сделаем несколько замечаний: Режим mode_old обычно используется для открытия файлов, которые уже
существуют, однако он же используется и для работы с консолью, хотя это и
приводит к созданию нового окна.
Если при открытии файла произошла ошибка (например, файл не найден), то в
регистре D0 возвращается ноль, иначе возвращается идентификационный номер
созданного канала ввода/вывода. Этот номер необходимо сохранить, так как он
должен передаваться в качестве параметра всем функциям, работающим с
каналами ввода/вывода. В нашем примере этот номер сохраняется в переменной
conhandle. Как уже упоминалось, окна ввода/вывода не имеют символа закрытия (close
gadget), однако функции изменения размера и размещения на переднем/заднем
плане существуют и для них. Заботу об этих функциях полностью берет на себя
операционная система (в отличие от компьютеров ATARI ST, где изменение
размера должно контролироваться программой пользователя). Как и в случае с библиотеками, открытые каналы ввода/вывода нужно закрывать
до завершения программы. Это делается с помощью функции Close, которая
имеет смещение -36. Функция Close вызывается с единственным параметром в
регистре D1, который должен содержать идентификатор закрываемого канала. Таким образом, в конце программы нам нужно поместить следующий фрагмент: Close = -36 ;(6.3.2C)
...
move.l conhandle,D1 ;идентификатор канала консоли
move.l dosbase,A6 ;базовый адрес библиотеки dos
jsr Close(A6) ;закрываем канал После этого окно исчезнет. Вы можете создавать несколько окон, выполняя по одному вызову Open на
каждое окно. В этом случае Вы будете иметь несколько идентификаторов, с
каждым из которых можно работать по отдельности.
|