[an error occurred while processing this directive]
─PE
─CE|Вызовы Операционной Системы|

 Машинные подпрограммы должны вызывать ОС  в точках, расположенных
в адресах с &FF00 до &FFFF.  От  этих  точек управление передается
дальше  к  различным  подпрограммам ОС, расположение которых может
меняться  от весрии к  версии.  Адреса  некоторых  подпрограмм  ОС
хранятся в  области  с  &200  до  &2FF. Таким образом пользователь
может перехватывать некоторые вызовы ОС.

 Так, подпрограмма "Вывод символа в аккумуляторе на экран" во всех
версиях ОС вызывается по адресу  &FFEE. Эта подрограмма может быть
также  вызвана  по  вектору  &20E,&20F. Содержимое  вектора  может
изменяться в зависимости от версии ОС.

 Параметры подпрограмм ОС передаются в  регистрах  A,  X и Y 6502,
нулевой   странице  или  в  блоках  параметров.  Все  подпрограммы
вызываются  командой  JSR  с  очищенным  десятичным  флагом  слова
состояния 6502.
─PE30
│..........*....*.....*...*.........................................<
 -----------------------------------------------------------------
 Вызов       Вектор    Функция
 Имя    адр. Имя   адр.
 -----------------------------------------------------------------
		UPTV	222	Драйвер принтера.
		FSCV	21E	Вызов файловой системы (ФС).
 OSFIND	FFCE	FINDV	21C	Открыть или закрыть файл.
 OSGBPB	FFD1	GBPBV	21A	Записать или считать блок памяти в файл.
 OSBPUT	FFD4	BPUTV	218	Записать байт в файл из A.
 OSBGET	FFD7	BGETV	216	Считать байт из файла в A.
 OSARGS	FFDA	ARGSV	214	Прочитать или записать информацию о файле.
 OSFILE	FFDD	FILEV	212	Прочитать или записать файл.
 OSRDCH	FFE0	RDCHV	210	Прочитать символ с клавиатуры в A
 OSASCI	FFE3	  -	 -	Вывести символ из A на экран плюс LF (&0A)
				если (A)=&0D.
 OSNEWL	FFE7	  -	 -	Ввести LF, CR (&0A, &0D) на экран.
 OSWRCH	FFEE	WRCHV	20E	Вывести символ из A на экран.
 OSWORD	FFF1	WORDV	20C	Набор различных вызовов ОС, использующих
				блок памяти для передачи параметров.
 OSBYTE	FFF4	BYTEV	20A	Набор различных вызовов ОС, использующих
				регистры для передачи параметров.
 OSCLI	FFF7	CLIV	208	Интерпретатор командной строки.
		IRQ2V	206	Вектор неопознанного прерывания.
 		IRQ1V	204	Вектор IRQ.
		BRKV	202	Вектор системного сброса.
		USERV	200	Зарезервирован.
 -----------------------------------------------------------------
─PE
│.......*......*..............*.............*.......................<
─CE/Файлы/

 Файлы являются последовательностями байтов. Их можно использовать
целиком (используя OSFILE), по блокам  (используя  OSGPB)  или  по
байтам   (используя   OSBGET   и  OSBPUT).  Каждый  файл  обладает
следующими атрибутами:

 |Адрес  загрузки|  - адрес памяти,  с  которого  файл  грузится  по
умолчанию. Если необходимо,  во  время  загрузки  может быть задан
другой адрес.

 |Адрес  выполнения|  имеет  смысл  только  для  файлов,  содержащих
программы в машинных кодах.

 |Длина| - количество байт в файле. Оно может быть равно нулю.

 |Указатель|  - указывает на следующий  обрабатываемый  байт  файла.
Значение "Указателя"  может быть прочитано или изменено (с помощью
OSARGS). Указатель автоматически  инкрементируется  после  вызовов
OSBGET и OSBPUT.

/OSFIND/

Открывает файл для чтения и (или) записи. Аккумулятор содержит тип
операции.

	A=0	Закрыть файл или файлы
	A=&40	Открыть файл для чтения
	A=&80	Открыть файл для записи
	A=&C0	Открыть файл для чтения и записи

 Если A=&40,&80 или &C0, то  Y  (старший  байт) и X (младший байт)
должны  содержать  адрес  области  памяти,  содержащей  имя файла,
заканчивающееся  CR (&0D). На выходе Y содержит  |номер|  файла  для
дальнешего доступа к нему. Если Y=0, ОС не смогла открыть файл.

 Если  A=0  то  файл (или  файлы)  должен  быть  закрыт.  При  Y=0
закрываются  все файлы, в  противном  случае  закрывается  файл  с
соответствующим номером.

 На выходе C,N,V и Z неопределены и D=0.

/OSBPUT/

 Записывает (помещает) байт из A  в  предварительно открытый файл.
На входе Y должен содержать номер файла сообщенный OSFIND.

 На выходе A,X и Y сохранены, N,V и Z неопределены и D=0.

/OSBGET/

 Читает (берет) байт из файла в A. Файл должен быть предварительно
открыт с использованием OSFIND и номер файла должен находится в Y.

 На выходе C=1 означает наличие ошибки а в A находится код ошибки.
A=&FE означает достижение конца файла.  X и Y сохраняются, N,V и Z
неопределены и D=0.

/OSGBPB/

 Читает  или  записывает группу байт. Кроме того, читает служебную
информацию о файлах  и  структуре  диска. На входе X и Y указывают
блок параметров. A задает тип операции.
─PE22

Блок параметров имеет следующий формат:

│.........*.......*.......*.......*.......*.......*.......*.<
---------------------------------------------------------
00 Номер файла сообщенный OSFIND
---------------------------------------------------------
01 Адрес данных 
02 (начиная с младшего байта)
03
04
---------------------------------------------------------
05 Длина группы байт
06 (начиная с младшего байта)
07
08
---------------------------------------------------------
09 Указатель позиции в файле, используемый
0A во время операции
0B (начиная с младшего байта)
0C
---------------------------------------------------------
│.........*.......*.......*.......*.......*.......*.......*.........<

 Особенно важное значение эта подпрограмма  имеет   при  работе  в
локальной  сети,  где  значительное  время  тратится  на  передачу
каждого   отдельного   массива   данных.  Если  в  локальной  сети
передавать  данные   через   вызовы  OSBPUT  и OSBGET, очень много
времени будет тратится на захват сети  для передачи каждого байта;
один только вызов OSGBPB может заменить вызов  OSARGS  и множество
вызовов OSBGET или OSBPUT.

 Перед вызовом  OSGBPB  аккумулятор  может иметь следующие
значения:

А=1   Запись группы байт в файл с использованием нового
      значения указателя.

А=2   Запись группы байт в файл игнорируя новое значение
      указателя.

А=3   Чтение группы байт из файла с использованием нового
      значения указателя.

А=4   Чтение группы байт из файла игнорируя новое значение
      указателя.

А=5   Чтение имени диска. Возвращается:
      Байт с длиной имени диска.
      Имя диска в ASCII кодах.

А=6   Чтение текущей директории и устройства.
      Байт длины имени устройства.
      Имя устройства.
      Байт длины имени директории.
      Имя директории.
      В ДФС именем устройства является номер драйва;
      в локальной сети имени устройства нет, поэтому
      длина имени устройства равна нулю.

А=7   Чтение текущей библиотеки. Параметры и действие
      аналогично А=6.

А=8   Чтение имен из текущей директории. При этом 00-й
      байт в блоке параметров не использыуется, а 
      указатель позиции после выполнения вызова
      устанавливается на начало следующего имени.
      На входе длина группы байт интерпретируется как
      количество считываемых имен; для первого вызова
      указатель позиции должен быть равен нулю. Данные
      возвращаются в формате:
      Длина 1-го имени
      1-е имя
      Длина 2-го имени
      2-е имя
      ....

 Вызванная операция не может быть  закончена, если достигнут конец
файла или в директории больше нет  имен.  В этом случае, флаг С на
выходе равен "1". Если операция не была завершена,  число байт или
количество  имен,  котрые  не  были  считаны  записывается  в блок
параметров   в  поле  'длина  группы  байт'.  Поле  адреса  всегда
указывает  на  следующий  полсле  последнего  адрес,  также  как и
указатель позиции в файле.

 На выходе X, Y и А сохранены. N, V и Z неопределены. С устновлен,
если операция не была завершена.


/OSARGS/

 Эта подпрограмма позволяет читать и писать служебную информацию о
файлах и файловой системе. На  входе X должен указывать на блок из
четырех  байт  нулевой  страницы, а Y  содержать  номер  открытого
файла.

 Если Y не равен нулю, A определяет операцию с файлом:

	A=0	чтение указателя файла
	A=1	запись указателя файла
	A=2	чтение длины файла
	A=&FF	запись изменений в файле на диск

Если Y=0, содержимое A определяет следующие операции:

	A=0	в A возвращается тип файловой системы:
		0 нет файловой системы
		1 кассетная ФС 1200 бод (зарезервировано)
		2 кассетная ФС 300 бод (зарезервировано)
		3 (зарезервировано)
		4 ДФС
		5 Локальная сеть (зарезервировано)
		6 (зарезервировано)

	A=1	Возвращает адрес последней командной строки

	A=&FF	запись  изменений  всех  открытых файлов на
		диск.

 На выходе X и Y сохранены, C,N,V и Z неопрделены и D=0.

/OSFILE/
 Запись или чтение файла целиком.

На входе A содержит тип операции. X и Y указывают на 18-ти байтный
длок  параметров,  располагающийся  в  любой   области  памяти.  X
содержит  малдаший  байт адреса, а  Y  -  старший.  Ниже  показана
структура блока параметров:

│......*.......*....................................................<
─PE26
 ---------------------------------------------------------
 00	Адрес начала имени файла, которое должно оканчиваться
 01	&0D
 ---------------------------------------------------------
 02 Адрес загрузки
 03
 04
 05
 ---------------------------------------------------------
 06	Адрес запуска
 07
 08
 09
 ---------------------------------------------------------
 0A	Адрес начала для операций записи
 0B	или длина для операций чтения
 0C
 0D
 ---------------------------------------------------------
 0E	Адрес конца данных.
 0F
 10
 11
 ---------------------------------------------------------

 Следующая  таблица показывает функции, предоставляемые  OSFILE  с
учетом содержимого A:

	A=0	Записать область память как файл. Так же
		записываются атрибуты файла в каталог.

	A=1	Запись информации о файле в каталог.

	A=2	Запись только адреса загрузки файла.

	A=3	Запись только адреса запуска файла.

	A=4	Запись только атрибутов файла.

	A=5	Чтение информации о файле. В A помещается тип
		файла

	A=6	Удалить файл.

	A=&FF	Загрузить файл в память и считать информацию о
		файле.

 При   загрузке  файла  байт  XY+6   обозначает,   каким   адресом
воспользоваться  для определения начала загрузки.  Если  указанный
байт равен  нулю,  то  в качестве начального адреса берется адрес,
укзанный  в  блоке  параметров.  В   противном  случае  выбирается
стандартный адрес загрузки файла из каталога.

 Атрибуты  файла  хранятся  в одном  байте,  биты  которого  имеют
следующее значение:

	Бит	Значение

	0	не читается Вами
	1	не пишется Вами
	2	не запускается Вами
	3	не стирается Вами
	4	не читается другими
	5	не пишется другими
	6	не запускается другими
	7	не стирается другими

 В качестве типов файла имеются следующие варианты:

	0	ничего не найдено
	1	файл найден
	2	директория найдена

 В  случае  возникновения  ошибки  в  процессе  выполнения  OSFILE
происходит прерывание по BRK.

 На выходе X и Y сохранены, C,N,V и Z неопределны и D=0.


/OSFSC/

 Разнообразные  операции  файловой  системы.  Аккумулятор на входе
имеет следующие значения:

А=0    Зарезервировано

А=1    Контроль EOF (конец файла).  На  входе X содержит указатель
       проверяемого  файла.  На  выходе,  X=&FF  если  конец файла
       достигнут, X=0 в противном случае.

А=2    Выполнение команды '*/'. ДФС попытается запустить файл, чье
       имя  расположено  после  символа  '/'. Это дает возможность
       запускать файлы типа "L.FORM80". Если просто ввести:
       "*L.FORM80"  это будет воспринято ОС  как  "*LOAD  FORM80".
       Поэтому в данном случае будет правильно: "*/L.FORM80", что
       эквивалентно "*RUN  L.FORM80"  (запустить  файл  FORM80  из
       директории L).

А=3    Если была введена команда, которую ОС не может распознать,
       она по  цепочке  передается  всем  загруженным  резидентным
       модулям, включая и ДФС. Если команда и после этого никем не
       опознана,  ДФС  пытается  запустить  файл с таким именем из
       текущей  системной  библиотеки. Если файл  не  найден,  ДФС
       выдает сообщение об  ошибке:  "Bad Command". На входе X и Y
       указывают на начало команды.

А=4    Выполнение команды *RUN. Загружает  и  выполняет  файл, имя
       которого указано в X и Y.

А=5    Выполнение команды *CAT. Выдает каталог. X и Y указывают на
       первый  байт  после команды,  т.к.  там может находится имя
       подкаталога.

А=6    Зарезервировано

А=7    Запрос  о максимально- и  минимально  возможных  значениях
       указателей файлов.

А=8    Зарезервировано


 На выходе значения всех регистров неопределены.



/OSRDCH/
 Эта подпрограмма читает с текущего  устройства  ввода  (обычно  с
клавиатуры) символ в A.

 На  выходе  C=0 указывает на  удачное  завершение  операции.  C=1
указывает на наличие  ошибки в процессе чтения символа, при этом в
A помещается тип ошибки.  C=1  и  A=&1B  означает  наличие события
выхода  (например  в  слдествии  нажатия РЕД), которое должно быть
обработано пользователем вызовом OSBYTE с A=&7E; Бейсик делает это
автоматически. X и Y сохранены, N,V и Z неопределены и D=0.

/OSASCI/
 Эта подпрограмма производит вывод символа  на  текущее устройство
вывода   используя  OSWRCH.  Однако,  если  A=&0D,  вместо  OSWRCH
вызывается OSNEWL. OSASCI имеет точку входа в &FFE3:

│....*......*....*.........*........*...............................<
─PE8
	FFE3	C9	0D	OSASCI	CMP #&0D
	FFE5	D0	07		BNE OSWRCH
	FFE7	A9	0A	OSNEWL	LDA #&0A
	FFE9	20	EEFF		JSR OSWRCH
	FFEC	A9	0D		LDA #&0D
	FFEE	6C	0E02	OSWRCH	JMP(WRCHV)

На выходе A,X и Y сохранены, C,N,V и Z неопределены и D=0.

/OSNEWL/
 Посылает символы LF и CR (&0A, &0D) текущему устройству вывода.

 На выходе X и Y сохранены, C,N,V и Z неопределены и D=0.

/OSWRCH/
 Эта подпрограмма посылает символ из A текущему устройству вывода.

 На выходе A,X и Y сохранены, C,N,V и Z неопределены и D=0. 

 Вся  печать символов из Бейсика,  ОС  и  любой  другой  программы
должна идти  через  этот  вызов.  Следовательно,  Вам  будет легко
перехватить  вывод символов поместив по вектору WRCHV (&20E) адрес
своей  подпрограммы.  Однако  Вы  должны  помнить,  что  некоторые
символы  имеют  специфическое  значение.  Например  символ  &1C  и
следующие за  ним четыре байта определяют границы текстового окна.
Смотрите  описание  VDU  для  получения  подробной  информации  об
управляющих символах.

/OSWORD/
 Вход  OSWORD  объединяет  разнообразные  подпрограммы,  требующие
значительно  большее  количество  параметров,  чем  можно передать
через  регистры  6502.  Как  следствие  OSWORD   использует   блок
параметров   располагаемый   в   памяти  компьютера.  Адрес  блока
параметров  сообщается  в  регистрах X (младший байт) и Y (старший
байт). Содержимое A определяет выбор конкретной подпрограммы.

 Таблица  ниже  содержит  список  подпрограмм   OSWORD.  Некоторые
подпрограммы  помечены  символом  "*",  это   означает,   что  они
зарезервированы  для  дальнейших  модификаций  ПЭВМ   АГАТ,  а  на
серийной модели недоступны.

─PE17
 ---------------------------------------------------------
	A=		Функция
 ---------------------------------------------------------
	0		Чтение строки из текущего устройства ввода
	1	*	Чтение часов
	2	*	Установка часов
	3	*	Чтение внутреннего таймера
	4	*	Установка внутреннего таймера
	5	*	Чтение байта из памяти основного процессора
	6	*	Запись байта в паять основного процессора
	7	*	Генерация звукового сигнала
	8	*	Определение формы звукового сигнала
	9		Чтение цвета точки в позиции экрана X,Y
	A		Чтение матрицы заданного символа
	B	*	Чтение палитры
 ---------------------------------------------------------

/OSWORD с A=0/
 Эта  подпрограмма читает сиволы с  текущего  устройства  ввода  и
помещает их  в  укзанную  область  памяти.  Во  время ввода символ
УДАЛИТЬ  (ASCII  127)  удаляет последний введенный символ, а УПР+U
(ASCII 21) удаляет из  памяти все считанные до него символы. Выход
из подпрограммы происходит после ввода  символа  ВВОД  (ASCII &0D)
или выполнения условия выхода (ASCII &1B).
─PE13

 Блок парметров состоит из 5-ти байт:

 ---------------------------------------------------------
	00	Адрес буфера вводимой строки
	01

	02	Максимальная длина строки

	03	Минимальное допустимое ASCII значение
	04	Максимальное допустимуе ASCII значение
 ---------------------------------------------------------

 Сиволы вводятся, если они находятся  в диапазоне, заданном XY+3 и
XY+4.

 На выходе C=0 что был  введен  символ  ВВОД (CR; ASCII код 13 или
&0D). Если C=1, это означает наличие состяния выхода.  Y  содержит
длину введенной строки включая CR, если C=0.

/OSWORD с A=9/ чтение пиксела.
 Эта  подпрограмма  позволяет  программисту на  ассемблере  читать
состояние  любой  точки  графического  экрана.  На  входе  X  и  Y
указывают на блок из 5-ти байт:
─PE7

	XY	X координата (младший байт)
	XY+1	X координата (старший байт)
	XY+2	Y координата (младший байт)
	XY+3	Y координата (старший байт)

 На выходе XY+4 содержит цвет  указанной точки или &FF, если точка
находится за пределами экрана. X и Y неопределены.

/OSWORD с A=&0A/ чтение матрицы символа.

 В графических режимах 3 и  4  символы  имеют  размеры  6х8 точек.
Матрица  каждого  символа  занимает в памяти компьютера 8 байт, по
одному байту на каждый  ряд.  Эта  подпрогамма позволяет поместить
матрицу символа в память начиная с адреса, заданного в X и Y.
─PE11
 На выходе блок параметров имеет следующую структуру:

	XY	Код символа
	XY+1	Верхний ряд матрицы
	XY+2	Второй ряд матрицы
	 .
	 .
	 .
	XY+8	Нижний ряд матрицы

[an error occurred while processing this directive]