Диспетчер программы DISP3
IF REGIM=1 THEN DISP3 ELSE END ; переход к программе DISP3
CICL:=1
Begin;
D:= 1
IF D = 1 THEN GO TO P1 ELSE IF D = 2 THEN GO TO P2 ELSE
IF D= 3 THEN GO TO P3 ELSE IF D = 4 THEN GO TO P4 ELSE
IF D = 5 THEN GO TO P5 ELSE
END
Программы:
P1 – формирование очереди из N1 свободных блоков;
P2 – формирование N2 пакетов данных;
P3 – перенос N2 пакетов данных из очереди Освоб в очередь пакетов Оп32;
P4 – формирование массивов MСICL информационных кадров с входящими в него пакетами в очереди пакетов Оп32 пакетов данных;
P5 – перенос информационных кадров MСICL, сформированных программой P4, в очередь повтора Оповт и в регистр на передачу в канал.
3.1. Программа P1
а) Выделение памяти под N1 свободных блоков (3<= N1=< 20). Каждый свободный блок занимает 138 байт:
- 2 байта под адрес предыдущего блока в списке блоков (первое адресное поле связки очереди);
- 2 байта под адрес следующего блока в списке блоков (второе адресное поле связки очереди);
- 3 байта под заголовок пакета;
- 1 байт под заголовок кадра;
- 128 байт под информационную часть пакета данных;
- 2 байта под контрольно-проверочную комбинацию КПК.
Очистить память, занятую свободными блоками.
б) Установление адресов связки в N1 свободных блоках:
- выделить память под характеристику очереди свободных блоков Нсвоб с начальным адресом АНсвоб. Установить поля характеристики Нсвоб (рис. 1).
АНсвоб
А(1) | А(N1) | N1 |
Рис. 1. Характеристика Нсвоб
Здесь
А(1) – адрес начала массива первого свободного блока в очереди Освоб;
А(N1) – адрес начала массива последнего свободного блока в очереди Освоб.
Под массивом блока будем понимать блок (пакет, кадр, ячейка и др.) с адресными полями связки очереди.
Установить адресные поля связки первого (рис. 2а) и N1 – го (рис. 2.б) свободного блока в очереди Освоб.
А(1)
А(N1) |
а)
А(N1)
А(N1)-1 |
б)
Рис.2. Формат первого (а) и последнего (б) свободного блока в списке очереди Освоб
Установить адреса связки всех свободных блоков, кроме первого и последнего
FOR i=2, 3 …. (N1-1) DO
Запись в первое адресное поле i-го блока адрес начала i-1 блока списка очереди;
Запись во второе адресное поле i-го блока адрес начала i+1 блока списка очереди.
i=i+1
D:=D+1
GO TO DISP3
3.2. Программа P2
Записать данные в информационную часть первых N2 свободных блоков очереди Освоб, т.е. сформировать пакет данных в этих свободных блоках. Для упрощения примем заголовок пакета равным нулю.
На рис. 3 показан формат размещенного пакета в свободном блоке с начальным адресом A(i).
байты | ||||||
Начальный адрес A(i) | Первое адресное поле | Второе адресное поле | Заголовок пакета | Информационная часть пакета |
Рис. 3. Формат размещения пакета данных в свободном блоке с начальным адресом A(i).
n:=m
FOR i= 1,2…..N2 DO
Записать n в поле информационной части пакета с начальным адресом массива A(i).
n:=n+1
END
В результате в первых N2 свободных блоках установлены пакеты данных, образуя очередь пакетов Оп32.
D:=D+1
GO TO DISP3
3.3. Программа P3
Освободить Освоб от пакетов очереди пакетов Оп32 (перенос их из . Освоб в Оп32). Сформировать характеристику очереди пакетов Оп32.
Выделить память под характеристику Hп32 очереди пакетов Оп32 с начальным адресом АHп32. Установить поля характеристики Hп32 (рис. 5.4).
IF CICL=1 THEN
АHп32
А(1) | А(N2) | N2 |
Рис. 5.4. Характеристика Hп32
- установить значение ноль во втором адресном поле пакета N2, т.е. адрес следующего блока в списке очереди.
ELSE
Откорректировать поля характеристики очереди Нсвоб (очереди свободных блоков Освоб), рис. 5.
АНсвоб
А(N2+1) | А(N1) | N1- N2 |
Рис. 5. Характеристика Нсвоб
Установить значение ноль в первом адресном поле массива свободных блоков с адресом А(N2+1) т.е. адрес предыдущего блока в списке очереди.
D:=D+1
GO TO DISP3
3.4. Программа P4
Сформировать массивы MСICL кадров с входящими в него пакетами в очереди пакетов Оп32 пакетов данных. На рис. 6 показаны форматы полей.
байты | ||||||
Начальный адрес массива A(CICL) | Первое адресное поле | Второе адресное поле | Заголо-вок кадра | Заголо-вок пакета | Информационная часть пакета | КПК |
........................... адресная часть ..... ............... кадр …… ..……........
………. пакет …………………….
Рис. 6. Формат полей массива MCICL информационных кадров “I”
Установить исходные состояния: V(S):= Z1. (0<= V(S)=< 7),
V(R):= Z2
FOR CICL = 1, 2... MCICL DO
- установить параметры информационного кадра: N(S):=V(S);
V(S):=V(S)+1
Формирование полей заголовка (длиной 8 бит) информационного кадра “I” с начальным адресом массива A(CICL) - биты заголовка <2-4>:= N(S), биты N(R) заголовка <6-8>:= V(R), бит заголовка <1>:= 0 (тип кадра – информационный).
Сформировать контрольно-проверочную комбинацию КПК кадра: произвести сложение по модулю 2 всех байт кадра и занести результат в поле КПК (см. рис.5)
END
D:=D+1
GO TO DISP3
5.5. Программа P5
Перенос массивов первых MCICL информационных кадров “I” из очереди Оп32 в очередь Оповт:
- выделить память под характеристику Hповт очереди пакетов Оповт с начальным адресом АHповт. Установить поля характеристики Hповт (рис.7);
АHповт
А(1) | А(MCICL) | MCICL |
Рис.7. Характеристика Hповт
- установить в ноль второе поле массива очереди пакетов Оповт по адресу А(MCICL).
- откорректировать характеристику очереди пакетов Оп32, т.е. Hп32 (рис. 8). Сравните с рис. 4.
АHп32
А(MCICL+1) | А(N2) | N2-MCICL |
Рис. 8. Характеристика Hп32
- установить первое адресное поле А(MCICL+1) массива очереди пакетов данных Оп32 в ноль
Перенести кадры “I” в выходной регистр передачи RGвых в канал связи. Передать в канал этот кадр из регистра RGвых. Очистить регистр RGвых.
D:=D+1
GO TO DISP3