Обращение в систему осуществляется по экстракодам INT 5, INT 6, INT 7.


Экстракод INT 5 

Сохраняется содержимое следующих регистров - DS,ES,SS,SP,SI,DI,BP,DX,CX.

Номер запрашиваемой функции указывается в регистре BL.

Функции: 

INT5

0

Вывод на устройство

Программа приостанавливается до конца обмена

На входе:
BL =0
DS,DX =адрес буфера
AH =число байт для текста (CL=0), иначе - число слов
AL =номер устройства:
  0 - TT
  1 - CM
  2 - RT
  3 - NO
CL =тип данных:
  =0 - текст для вывода на терминал
  >0 - только для устройств 1-3 (см.ниже типы пакетов для сетевых линий)

INT5

1

Дай память

Это дополнительная память для временного хранения информации на то время, пока она нужна

На входе:   На выходе:
BL =1 AL =0
DX =число параграфов (16 байт) BX =номер первого выделенного параграфа

INT5

3

Введи с терминала текст командой MS

Программа не приостанавливается, а 1-й байт буфера равен 0.

Когда оператор введет команду MS, 1-й байт станет ненулевым и Программа приостанавливается до конца обмена

На входе:
BL =3
DS,DX =адрес буфера
AH =число байт (не более 128), буфер должен быть на 2 байта больше
После ввода команды MS, байты в буфере:
0 =номер устройства 0-2, с которого ввели MS
1 =N (число принятых байт)
2-N =принятая информация

INT5

4

Ждать внешнее событие

На входе:
BL =4
CL =
1 - ждать команду GO или активизацию от другой программы
2 - ждать прерывание от модуля таймерных сообщений
3 - ждать любое из прерываний IT5 или IT6 контроллера 8259
4 - ждать текстовое сообщение MS после команды чтения INT5 BL=3
5 - для задач типа 3 (запускаемых периодически) ждать интервал перезапуска;
для задачи, подключенной к IT4, ждать прерывание.
При использовании драйвера ветви имени Инчагова все входы прерываний от СУММА заведены на IT4
6 -
8,9,10,11 - ждать прерывание с драйвера ветви имени Инчагова с входов на СУММА соответственно 3,2,1,0.
Система использует внутренние ожидания (не вызывать из программ!)
12 - очередь на обмен с СУММА
13 - очередь конца обмена с RT
14 - очередь конца обмена с СМ
15 - очередь конца обмена с ТТ

INT5

5

Дай общую (разделяемую) память

Эту память данный процесс может читать/писать, все другие задачи могут читать ее всю, а писать только первые 16 байт (для организации межзадачных обменов).

Каждая задача может иметь только один буфер разделяемой памяти.

На входе:   На выходе:
BL =5 AL =0 (O.k.)
DX =число параграфов    

INT5

6

Освободить общую память

На входе:
BL =6

INT5

7

Читать блок данных из СМ/RT

Пакет типа 8 по протоколу от ЭВМ к VPV см. далее

На входе:
BL =7
DS,DX =адрес буфера

INT5

8

Подключить процедуру к прерыванию номер 4 контроллера 8259А

Процедура не должна содержать обращений к системе, она инициируется с запрещенными прерываниями - следовательно должна быстро отрабатывать!

Входят в нее по CALL FAR.

После выполнения процедуры содержащая ее задача освобождается от остановки ожидания типа (INT5,BL=4,CL=5).

Используется только уровень 4 контроллера 8259A.

Подключиться может только одна задача.

На входе:   На выходе:
BL =8 AL=0 - O.k.
DI =CS AL<>0 - уже есть процедура на уровне
DS =на сегмент данных, которыми пользуется процедура    

INT5

9

Ждать интервал времени

Используются периодические прерывания с частотой 100 мс с таймера на IT3 контроллера 8259A.

На входе:
BL =9
AX =число прерываний в интервале ожидания

Экстракод INT 6

Сохраняется содержимое регистра DS.

Номер запрашиваемой функции указывается в регистре BL.

Функции: 

INT6

0

Байт --> Шестнадцатиричное

На входе:   На выходе:
BL =0 ES,DI =указатель за символы
ES,DI =куда поместить символы    
AL =байт данных    

INT6

1

слово --> Шестнадцатиричное

На входе:   На выходе:
BL =1 ES,DI =указатель за символы
ES,DI =куда поместить символы    
AX =слово данных    

INT6

2

Шестнадцатиричное --> Слово

На входе:   На выходе:
BL =2 AX =число
DS,SI =указывает на символы DS,SI =указывает на разделитель

INT6

3

Двоичное --> Десятичное со знаком

На входе:   На выходе:
BL =3 ES,DI =указывает за символы
ES,DI =куда поместить символы    

INT6

4

Десятичное --> Двоичное

На входе:   На выходе:
BL =4 AX =число
DS,SI =указывает на число со знаком DS,SI =указывает на разделитель

INT6

5

Двоичное --> Десятичное без знака

На входе:   На выходе:
BL =5 ES,DI =указывает за символы
ES,DI =куда поместить символы    
AX =число    

INT6

6

Активизировать задачу

На входе:   На выходе:
BL =6 AX=0 - O.k.
ES,DI =указывает на имя задачи    

INT6

7

Писать в общую память

На входе:   На выходе:
BL =7 AL=0 - O.k.
DS,SI =адрес буфера в задаче    
DI =номер начального байта в общей памяти с 0    
CX =число байт
если DX=0, то своя общая память
иначе DS,DX указывают на имя задачи
   

INT6

8

Читать общую память

На входе:   На выходе:
BL =8 AL=0 - O.k.
DS,SI =адрес буфера куда читать    
DI =номер начального байта в общей памяти с 0    
CX =число байт
если DX=0, то своя общая память
иначе DS,DX указывают на имя задачи
   

INT6

9

Дай номер устройства, с которого инициировали задачу

На входе:   На выходе:
BL =9 AL =номер устройства (0-2)

INT6

10

Закончить выполнение задачи

На входе:
BL =10

INT6

11

Получить имя, под которым задача загружена в память

На входе:
BL =11
ES:DI =адрес, куда поместить 4 символа имени

INT6

12

Получить адрес описания таблицы

На входе:   На выходе:
BL =12 AX=0 - нет таблицы
DS:SI =имя таблицы до нуля AX =параграф структуры
DS =0, тогда дай первую    

INT6

13

Читать информацию, полученную с приемника таймерных сообщений

На входе:   На выходе:
BL =13 первое слово =циклический счетчик прерываний
ES:DI =адрес буфера из 6 слов следующие 5 слов =считано с модуля

Экстракод INT 7

Выполняются обращения к СУММА/КАМАК.

C, N - номер корзины и номер места, значения устанавливаются в одном байте соответственно в битах 5-7 и в битах 0-4.

A - номер адреса, значение устанавливается в одном байте.

F - номер функции, значение устанавливается в одном байте.

Сохраняется содержимое регистра DS.

Номер запрашиваемой функции указывается в регистре BL.

Функции: 

INT7

0

Читать слово

На входе:   На выходе:
BL =0 BH=0 - O.k.
DL =C,N AX =данные
DI =A,F    

INT7

1

Писать слово

На входе:   На выходе:
BL =1 BH=0 - O.k.
DL =C,N    
DI =A,F    
AX =данные    

INT7

2

Читать блок

На входе:   На выходе:
BL =2 BH=0 - O.k.
DL =C,N    
DI =A,F    
CX =число слов    
DS,SI =адрес буфера    

INT7

3

Писать блок

На входе:   На выходе:
BL =3 BH=0 - O.k.
DL =C,N    
DI =A,F    
CX =число слов    
DS,SI =адрес буфера