; *********************************************************
; *                                                       *
; *           тест проверки оперативной памяти            *
; *                                                       *
; * тест включает следующие части:                        *
; *  1.проверка информационной части накопителя           *
; *   1.1.проверка на кодах 'все 0' и 'все 1'             *
; *   1.2.проверка тестом 'марш'                          *
; *   1.3.проверка тестом 'диагональ'                     *
; *  2.проверка разрядов хэмминга                         *
; *   2.1.проверка прямым и обратным кодом                *
; *   2.2.проверка тестом 'марш'                          *
; *   2.3.проверка тестом 'диагональ'                     *
; *                                                       *
; * описание алгоритма:                                   *
; *  описания алгоритмов приведены в каждой части теста   *
; *                                                       *
; * входные параметры:                                    *
; *  фпар = число входных параметров теста/0 - не заданы/ *
; *  фнпр = флаг задания номера примера/0 - 'марш'/       *
; *  нпрм = номер примера при фнпр=1                      *
; *  фблк = флаг задания номера блока/0 - проверка всех/  *
; *  нблк = номер проверяемого блока при фблк = 1         *
; *  фгру = флаг задания номера группы/0 - проверка всех/ *
; *  нгру = номер проверяемой группы при фгру=1           *
; *  фмкс = флаг задания номера мксх/0 - проверка всех/   *
; *  нмкс = номер проверяемой микросхемы при фмкс=1       *
; *                                                       *
; * остановы при работе теста                             *
; *  стоп 0 - тест выполнен                               *
; *  стоп 1 - не совпала контрольная сумма теста          *
; *  стоп 2-37(8) - ловушки прерываний и экстракодов      *
; *  стоп 40(8) - не сохранились регистры приписки        *
; * остановы в случае ошибочных ситуаций описаны в каждом *
; * примере теста.                                        *
; * здесь и далее в комментариях номера индексных регист- *
; * ров и специальных регистров указываются в 8-м виде.   *
; *********************************************************

	.обл    оп(1)
топ     зр      020             ;пкл=0,пкп=0
	пб      начт

; *******************************************************
; *                                                     *
; *          ловушки прерываний и экстракодов           *
; * индикация:                                          *
; *  48-33рр. см - грвп при ост 2                       *
; *  31-01рр. см - рр при ост 4,5,6,7                   *
; *******************************************************

пвне    чр      047
	ост     02              ;внешнее прерывание
пэр3    ост     03              ;экстракод в режиме 3

пв12    чр      037
	ост     04              ;внутреннее прерывание в режиме 1-2
пз12    чр      037
	ост     05              ;запрещенная команда в режиме 1-2
пвр3    чр      037
	ост     06              ;внутреннее прерывание в режиме 3
пзк3    чр      037
	ост     07              ;запрещенная команда в режиме 3
пэ50    ост     010             ;экстракод 50(8) режима 1-2

пэ51    ост     011             ;экстракод 51(8) режима 1-2

пэ52    ост     012             ;экстракод 52(8) режима 1-2

пэ53    ост     013             ;экстракод 53(8) режима 1-2

пэ54    ост     014             ;экстракод 54(8) режима 1-2

пэ55    ост     015             ;экстракод 55(8) режима 1-2

пэ56    ост     016             ;экстракод 56(8) режима 1-2

пэ57    ост     017             ;экстракод 57(8) режима 1-2

пэ60    ост     020             ;экстракод 60(8) режима 1-2

пэ61    ост     021             ;экстракод 61(8) режима 1-2

пэ62    ост     022             ;экстракод 62(8) режима 1-2

пэ63    ост     023             ;экстракод 63(8) режима 1-2

пэ64    ост     024             ;экстракод 64(8) режима 1-2

пэ65    ост     025             ;экстракод 65(8) режима 1-2

пэ66    ост     026             ;экстракод 66(8) режима 1-2

пэ67    ост     027             ;экстракод 67(8) режима 1-2

пэ70    ост     030             ;экстракод 70(8) режима 1-2

пэ71    ост     031             ;экстракод 71(8) режима 1-2

пэ72    ост     032             ;экстракод 72(8) режима 1-2

пэ73    ост     033             ;экстракод 73(8) режима 1-2

пэ74    ост     034             ;экстракод 74(8) режима 1-2

пэ75    ост     035             ;экстракод 75(8) режима 1-2

пэ76    ост     036             ;экстракод 76(8) режима 1-2

пэ77    ост     037             ;экстракод 77(8) режима 1-2


стп     па      3,15
	ост     040,15          ;хороший останов

начт    сч      0
	иу      011             ;ис1:=0
	па      ,8              ;сч-к проходов := 0

; *******************************************************
; *             контрольное суммирование                *
; *******************************************************

	зн      рая
	па      топ-ксумт+1,10  ;и12:=длина теста - 1

ксум    ст      ксумт-1,10
	цс      рая
	зч      рая             ;суммируем очередное слов
	кц      ксум,10         ;кц контрольного суммирования
	ср      ксумт
	пб      начт1           ;ур начт1

; *******************************************************
; *                                                     *
; *             не совпала контрольная сумма            *
; *                                                     *
; *  вр  - эталонная контрольная сумма                  *
; *  см  - код несравнения                              *
; *  рмр - подсчитанная сумма                           *
; *******************************************************

	ост     01
	пб      начт            ;повтор суммирования
начт1

; *******************************************************
; *             начальная настройка теста               *
; *******************************************************

	сч      всеед
	зр      042             ;размер листа = 256к
	зр      051             ;обращение ко всем листам оп
	сч      0
	зр      052             ;нет защиты записи

роспп

; *******************************************************
; *                 роспись приписки                    *
; *******************************************************

	па      -31,10          ;цикл на 32-а регистра
	сч      прип

росп    зр      0137,10         ;запись в очередной регистр
	цс      е41е9
	кц      росп,10         ;кц росписи приписки

; *******************************************************
; *             контроль установки приписки             *
; *******************************************************

	па      -31,10          ;цикл на 32-а регистра
	сч      прип


кприп   зч      рая
	чр      0137,10         ;очередной регистр(должна быть правой)
	уи      0               ;выдержка
	ср      рая
	ур      кцприп          ;регистр сохранился

; *******************************************************
; *                                                     *
; *             приписка не сохранилась                 *
; *                                                     *
; * индикация:                                          *
; *  вр  - эталонный код                                *
; *  см  - код несравнения                              *
; *  рмр - считанный код                                *
; *  и   - номер несохранившегося регистра/и12/         *
; *******************************************************

	са      32,10           ;для индикации
	ик      рая
	ост     040,10
	пб      роспп           ;повтор росписи и контроля


кцприп  сч      рая
	цс      е41е9
	кц      кприп,10        ;кц контроля установки

; *******************************************************
; *             разбор входных параметров теста         *
; *******************************************************

	па      ,2              ;блок не фиксирован
	па      ,3              ;группа не фиксирована
	па      ,4              ;мксх не фиксирована
	па      ,5              ;проверка на 'марше'
	сч      фпар
	уи      10
	си      10,10
	па      фпар-1,11
	ми      11,10           ;адрес 1-го не заданного пар-ра
нулпар  уг      10
	знк     -1,10           ;обнуление не заданных пар-ров
	сч      фпар
	ун      епар            ;есть параметры
	счл     1
	зч      чпвт            ;по умолчанию 1 проход
	пб      всегру

епар    уи      11              ;число пар-ров
	сч      фпвт
	ун      номпри
	счл     1
	зч      чпвт            ;по умолчанию 1 проход

номпри  са      -1,11
	ир      всегру,11
	сч      фнпр
	ур      начт2           ;номер примера не задан
	сч      нпрм
	лул     7
	уи      5               ;номер выбранного примера

начт2   са      -1,11
	ир      всегру,11
	сч      фблк
	уи      2               ;признак фиксации блока
	сч      нблк
	лул     3
	зч      нблк            ;номер блока
	са      -1,11
	ир      всегру,11
	сч      фмкс
	уи      4               ;признак фиксации мксх
	сч      нмкс
	лул     7
	зч      нмкс
	са      -1,11
	ир      всегру,11
	сч      фгру
	уи      3               ;признак фиксации группы
	ур      всегру          ;группа не задана
	сч      нгру
	лул     3
	зч      нгру
	ур      нулгру          ;проверка 0-й группы

; * проверка заданной ненулевой группы --------

	па      ,7              ;база теста = 0-й группе
	па      выхт,15         ;возврат из примера
	ир      марш,5          ;0 - только "марш"/инф.рр. и рр. хэм./
	пб      выбпр-1,5       ;на выбор примера

нулгру                          ;проверка 0-й группы
	пф      ,7
	пв      из0в1,14        ;тест в 1-ю группу
	пф      ,7
	па      внулг,15        ;возврат из примера
	пф      ,7
	ир      марш,5          ;0 - только "марш"/инф. рр. и рр. хэм./
	пф      ,7
	пб      выбпр-1,5       ;на выбор примера
внулг                           ;перепись теста в начало и стоп
	пф      ,7
	пв      из1в0,14        ;тест в 0-ю группу
	пф      ,7
	пб      выхт

всегру                          ;проверка по всем группам
	па      пнулг,15        ;возврат для проверки 0-й группы
	па      ,7              ;база теста = 0-й группе
	ир      марш,5          ;0 - только "марш"/инф. рр. и рр. хэм./
	пб      выбпр-1,5       ;на выбор примера
пнулг                           ;а теперь проверим 0-ю группу
	па      1,3             ;фиксируем группу
	сч      0
	зч      нгру,7          ;0-я группа
	пб      нулгру
выбпр                           ;переключатель примеров
	пф      ,7
	пб      зппчтп          ;'запись-чтение'
	пф      ,7
	пб      марш            ;'марш'
	пф      ,7
	пб      диаг            ;'диагональ'
	пф      ,7
	пб      зпхчтх          ;'запись-чтение'/разряды хэмминга/
	пф      ,7
	пб      маршх           ;'марш'/разряды хэмминга/
	пф      ,7
	пб      диагх           ;'диагональ'/разряды хэмминга/

	ост     07777           ;здесь не должны бывать

зппчтп

; *******************************************************
; *          проверка информационных разрядов           *
; *******************************************************

; *******************************************************
; *                                                     *
; *         проверка тестом 'запись-считывание'         *
; *                                                     *
; * алгоритм проверки:                                  *
; *  код 'все 0' записывается по всем адресам проверяе- *
; *  мой области. после этого выполняется чтение с кон- *
; *  тролем. при несовпадении программа выйдет на оста- *
; *  нов с адресом 50(8). та же последовательность дей- *
; *  ствий выполняется для кода 'все 1'.                *
; *  порядок перебора адресов следующий:                *
; *   блок =>группа =>микросхема =>колонка =>строка     *
; *                                                     *
; * распределение регистров:                            *
; *  и1  - адрес записи/чтения                          *
; *  и2  - признак фиксации блока                       *
; *  и3  - признак фиксации группы                      *
; *  и4  - признак фиксации микросхемы                  *
; *  и11 - параметр цикла по блокам                     *
; *  и12 - параметр цикла по группам                    *
; *  и13 - параметр цикла по микросхемам                *
; *  и14 - параметр цикла по колонкам                   *
; *  и15 - параметр цикла по строкам                    *
; *  и16 - параметр цикла по кодам проверки             *
; *******************************************************

	пф      ,7
	пв      начадр,14       ;и1:=нач.адрес проверки
	па      -1,14           ;два кода проверки('все 0' и 'все 1')
	сч      0
цзп

; *******************************************************
; *                     роспись оп                      *
; *******************************************************

	зч      эталон,7        ;эталонный код
	па      -3,9            ;счетчик блоков
	па      -2,10           ;счетчик групп/в одной из групп тест/
	па      -7,11           ;счетчик мксх
	па      -255,12         ;счетчик колонок
	па      -255,13         ;счетчик строк

цз
	сч      эталон,7        ;эталонный код
	зч      ,1
	пф      ,7
	ин      цз1,2           ;1 - блок фиксирован
	пф      ,7
	кц      кзб,9           ;кц зп по блокам
	ви      1
	срл     3
	уи      1               ;убрали разряды номера блока
	па      -3,9            ;счетчик блоков
цз1
	пф      ,7
	ин      цз2,3           ;1 - группа фиксирована
	пф      ,7
	кц      кзг,10          ;кц зп по группам
	ви      1
	пф      02000
	срл
	уи      1               ;убрали разряды номера группы
	па      -2,10           ;счетчик групп

цз2
	пф      ,7
	ин      цз3,4           ;1 - мксх фиксирована
	пф      ,7
	кц      кзм,11          ;кц зп по мксх
	ви      1
	срл     034
	уи      1               ;убрали разряды номера мксх
	па      -7,11           ;счетчик мксх
цз3
	пф      ,7
	кц      кзк,12          ;кц зп по колонкам
	ви      1
	пф      0776
	срл
	уи      1               ;убрали разряды номера колонки
	па      -255,12         ;счетчик колонок
	пф      ,7
	кц      кзс,13          ;кц зп по строкам
	вт                      ;вытолкнем в оп
	ви      1
	срл     017740
	уи      1               ;убрали разряды номера колонки
	па      -255,13         ;счетчик строк
	пб      цчт,7           ;на контрольное чтение

кзб
	са      1,1             ;новый блок
	пб      цз,7
кзг
	пф      01000
	са      ,1              ;новая группа
	пб      цз,7

кзм
	са      4,1             ;новая мксх
	пб      цз,7
кзк
	са      020000,1        ;новая колонка
	пб      цз,7
кзс
	са      040,1           ;новая строка
	пб      цз,7

цчт

; *******************************************************
; *                  чтение и сравнение                 *
; *        /параметры циклов уже установлены/           *
; *******************************************************

цч
	пф      ,7
	ир      цч2,1           ;0 - ю не контролируем
	сч      ,1
	ср      эталон,7        ;сравним с эталоном
	ур      цч2,7

; *******************************************************
; *                                                     *
; *               ошибка несравнения                    *
; *                                                     *
; * индикация:                                          *
; *  вр  - эталонный код                                *
; *  см  - код несравнения                              *
; *  рмр - считанное значение                           *
; *  и   - адрес считывания/и1/                         *
; *******************************************************

	ик      эталон,7
	ост     050,1
	пб      цч2,7           ;здесь будет диагностика
цч2
	пф      ,7
	ин      цч3,2           ;1 - блок фиксирован
	пф      ,7
	кц      кчб,9           ;кц чт по блокам
	ви      1
	срл     3
	уи      1               ;убрали разряды номера блока
	па      -3,9            ;счетчик блоков
цч3
	пф      ,7
	ин      цч4,3           ;1 - если группа фиксирована
	пф      ,7
	кц      кчг,10          ;кц чт по группам
	ви      1
	пф      02000
	срл
	уи      1               ;убрали разряды номера группы
	па      -2,10           ;счетчик групп

цч4
	пф      ,7
	ин      цч5,4           ;1 - мксх фиксирована
	пф      ,7
	кц      кчм,11          ;кц чт по мксх
	ви      1
	срл     034
	уи      1               ;убрали разряды номера мксх
	па      -7,11           ;счетчик мксх
цч5
	пф      ,7
	кц      кчк,12          ;кц чт по колонкам
	ви      1
	пф      0776
	срл
	уи      1               ;убрали разряды номера колонки
	па      -255,12         ;счетчик колонок
	пф      ,7
	кц      кчс,13          ;кц чт по строкам
	ви      1
	срл     017740
	уи      1               ;убрали разряды номера строки
	па      -255,13         ;счетчик строк
	пб      кзпчт,7
кчб
	са      1,1             ;новый блок
	пб      цч,7
кчг
	пф      01000
	са      ,1              ;новая группа
	пб      цч,7

кчм
	са      4,1             ;новая мксх
	пб      цч,7
кчк
	са      020000,1        ;новая колонка
	пб      цч,7
кчс
	са      040,1           ;новая колонка
	пб      цч,7
кзпчт
	сч      всеед,7         ;новый эталонный код
	пф      ,7
	кц      цзп,14          ;кц зп/чт по кодам проверки
	пф      ,7
	ир      марш,5          ;на следующий пример
	пб      ,15             ;выполняется только один пример

марш

; *******************************************************
; *                                                     *
; *               проверка тестом 'марш'                *
; *                                                     *
; * алгоритм проверки:                                  *
; *  аналогичен алгоритму теста 'запись-считывание', но *
; *  сразу же после считывания по адресу считывания за- *
; *  писывается обратный код.                           *
; *  порядок перебора адресов:                          *
; *  1)блок =>группа =>микросхема =>колонка =>строка    *
; *    (по возрастанию адресов)                         *
; *  2)блок =>группа  =>микросхема =>колонка =>строка   *
; *    (по убыванию адресов)                            *
; *  если несравнение с кодом росписи зафиксировано при *
; *  переборе адресов по возрастанию, то программа вый- *
; *  дет на останов с адресом 51(8), а если при перебо- *
; *  ре по убыванию, то на останов с адресом 52(8).     *
; *                                                     *
; * используемые регистры:                              *
; *  и1  - адрес записи/чтения                          *
; *  и2  - признак фиксации блока                       *
; *  и3  - признак фиксации группы                      *
; *  и4  - признак фиксации колонки                     *
; *  и11 - параметр цикла по блокам                     *
; *  и12 - параметр цикла по группам                    *
; *  и13 - параметр цикла по микросхемам                *
; *  и14 - параметр цикла по колонкам                   *
; *  и15 - параметр цикла по строкам                    *
; *  и16 - параметр цикла по кодам проверки             *
; *******************************************************

; *******************************************************
; *         перебор адресов от младших к старшим        *
; *******************************************************

; *******************************************************
; *                     роспись оп                      *
; *******************************************************

	пф      ,7
	пв      начадр,14       ;и1:=нач.адрес проверки
	сч      0
	зч      эталон,7        ;эталонный код
	па      -3,9            ;счетчик блоков
	па      -2,10           ;счетчик групп
	па      -7,11           ;счетчик мксх
	па      -255,12         ;счетчик колонок
	па      -255,13         ;счетчик строк

цзм1
	сч      эталон,7        ;эталонный код
	зч      ,1
	пф      ,7
	ин      цзмг1,2         ;1 - блок фиксирован
	пф      ,7
	кц      кзбм1,9         ;кц записи по блокам
	па      -3,9            ;счетчик блоков
	ви      1
	срл     3
	уи      1               ;убрали разряды номера блока
цзмг1
	пф      ,7
	ин      цзмм1,3         ;1 - группа фиксирована
	пф      ,7
	кц      кзгм1,10        ;кц зп по группам
	па      -2,10           ;счетчик групп
	ви      1
	пф      02000
	срл
	уи      1               ;убрали разряды номера группы

цзмм1
	пф      ,7
	ин      цзкм1,4         ;1 - мксх фиксирована
	пф      ,7
	кц      кзмм1,11        ;кц зп по мксх
	па      -7,11           ;счетчик мксх
	ви      1
	срл     034
	уи      1               ;убрали разряды номера мксх
цзкм1
	пф      ,7
	кц      кзкм1,12        ;кц зп по колонкам
	па      -255,12         ;счетчик колонок
	ви      1
	пф      0776
	срл
	уи      1               ;убрали разряды номера колонки
	пф      ,7
	кц      кзсм1,13        ;кц зп по строкам
	вт                      ;вытолкнем в оп
	ви      1
	срл     017740
	уи      1               ;убрали разряды номера строки
	па      -255,13         ;счетчик строк
	пб      чтм1,7          ;на чтение с инвертированием

кзбм1
	са      1,1             ;новый блок
	зр      024             ;гашу скп
	пб      цзм1,7

кзгм1
	пф      01000
	са      ,1              ;новая группа
	пб      цзм1,7

кзмм1
	са      4,1             ;новая мксх
	пб      цзм1,7
кзкм1
	са      020000,1        ;новая колонка
	пб      цзм1,7
кзсм1
	са      040,1           ;новая строка
	пб      цзм1,7
чтм1
	ра      02760           ;тег='37'
	сч      всеед,7
	зт      обрко,7
	вт

; *******************************************************
; *             чтение с инвертированием                *
; *         /параметры циклов уже установлены/          *
; *******************************************************

чм1
	пф      ,7
	ир      цчм1,1          ;0 -ю ячейку не проверяем
	ст      ,1
	ср      эталон,7        ;сравним с эталоном
	ур      инверс1,7

; *******************************************************
; *                                                     *
; *           ошибка несравнения в тесте 'марш'         *
; *        (перебор адресов от младших к старшим)       *
; *                                                     *
; * индикация:                                          *
; *  вр  - эталонный код                                *
; *  см  - код несравнения                              *
; *  рмр - считанный код                                *
; *  и   - адрес считывания/и1/                         *
; *******************************************************

	ик      эталон,7
	ост     051,1
	пб      инверс1,7       ;здесь будет диагностика

инверс1 ст      обрко,7
	зт      ,1              ;запишем обратный код
	вт                      ;вытолкнем в оп

цчм1    пф      ,7
	ин      цчгм1,2         ;1 - блок фиксирован
	пф      ,7
	кц      кчбм1,9         ;кц чт по блокам
	па      -3,9            ;счетчик блоков
	ви      1
	срл     3
	уи      1               ;убрали разряды номера блока
цчгм1
	пф      ,7
	ин      цчмм1,3         ;1 - группа фиксирована
	пф      ,7
	кц      кчгм1,10        ;кц чт по группам
	па      -2,10           ;счетчик групп
	ви      1
	пф      02000
	срл
	уи      1               ;убрали разряды номера группы

цчмм1
	пф      ,7
	ин      цчкм1,4         ;1 - мксх фиксирована
	пф      ,7
	кц      кчмм1,11        ;кц чт по мксх
	па      -7,11           ;счетчик мксх
	ви      1
	срл     034
	уи      1               ;убрали разряды номера мксх
цчкм1
	пф      ,7
	кц      кчкм1,12        ;кц чт по колонкам
	па      -255,12         ;счетчик колонок
	ви      1
	пф      0776
	срл
	уи      1               ;убрали разряды номера колонки
	пф      ,7
	кц      кчсм1,13        ;кц чт по строкам
	ви      1
	срл     017740
	уи      1               ;убрали разряды номера строки
	па      -255,13         ;счетчик строк
	пб      зм2чм2,7
кчбм1
	са      1,1             ;новый блок
	зр      024             ;гашу скп
	пб      чм1,7

кчгм1
	пф      01000
	са      ,1              ;новая группа
	пб      чм1,7

кчмм1
	са      4,1             ;новая мксх
	пб      чм1,7
кчкм1
	са      020000,1        ;новая колонка
	пб      чм1,7
кчсм1
	са      040,1           ;новая строка
	пб      чм1,7
зм2чм2

; *******************************************************
; *         перебор адресов от старших к младшим        *
; *******************************************************

	пф      ,7
	пв      конадр,14       ;формируем нач.адрес проверки
	сч      всеед,7
	зч      эталон,7
чтм2

; *******************************************************
; *             чтение с инвертированием                *
; *          /параметры циклов уже установлены/         *
; *******************************************************

чм2
	пф      ,7
	ир      цчм2,1          ;0-ю ячейку не проверяем
	ст      ,1
	ср      эталон,7        ;сравним с эталоном
	ур      инверс2,7

; *******************************************************
; *                                                     *
; *           ошибка несравнения в тесте 'марш'         *
; *        (перебор адресов от старших к младшим)       *
; *                                                     *
; * индикация:                                          *
; *  вр  - эталонный код                                *
; *  см  - код несравнения                              *
; *  рмр - считанный код                                *
; *  и   - адрес считывания/и1/                         *
; *******************************************************

	ик      эталон,7
	ост     052,1
	пб      инверс2,7       ;здесь будет диагностика

инверс2 сч      0
	зч      ,1              ;запишем обратный код
	вт                      ;вытолкнем в оп

цчм2
	пф      ,7
	ин      цчгм2,2         ;1 - блок фиксирован
	пф      ,7
	кц      кчбм2,9         ;кц чт по блокам
	па      -3,9            ;счетчик блоков
	ви      1
	срл     3
	уи      1               ;восстановили разряды номера блока
цчгм2
	пф      ,7
	ин      цчмм2,3         ;1 - группа фиксирована
	пф      ,7
	кц      кчгм2,10        ;кц чт по группам
	па      -2,10           ;счетчик групп
	ви      1
	пф      02000
	срл
	уи      1               ;восстановили разряды номера группы

цчмм2
	пф      ,7
	ин      цчкм2,4         ;1 - мксх фиксирована
	пф      ,7
	кц      кчмм2,11        ;кц чт по мксх
	па      -7,11           ;счетчик мксх
	ви      1
	срл     034
	уи      1               ;восстановили разряды номера мксх
цчкм2
	пф      ,7
	кц      кчкм2,12        ;кц чт по колонкам
	па      -255,12         ;счетчик колонок
	ви      1
	пф      0776
	срл
	уи      1               ;восстановили разряды номера колонки
	пф      ,7
	кц      кчсм2,13        ;кц чт по строкам
	ви      1
	срл     017740
	уи      1               ;восстановили разряды номера строки
	па      -255,13         ;счетчик строк
	пф      ,7
	ир      маршх,5         ;на след.пример
	пб      ,15             ;только один пример
кчбм2
	са      -1,1            ;новый блок
	зр      024             ;гашу скп
	пб      чм2,7

кчгм2
	пф      -01000
	са      ,1              ;новая группа
	пб      чм2,7

кчмм2
	са      -4,1            ;новая мксх
	пб      чм2,7
кчкм2
	са      -020000,1       ;новая колонка
	пб      чм2,7
кчсм2
	са      -040,1          ;новая строка
	пб      чм2,7

диаг

; *******************************************************
; *                                                     *
; *             проверка тестом 'диагональ'             *
; *                                                     *
; * алгоритм проверки:                                  *
; *  в тесте проверяются усилители считывания микросхем *
; *  динамического типа. в выбранной микросхеме(1-5,22, *
; *  23рр. адреса) по всем адресам записывается фоновый *
; *  код. если номер строки в микросхеме(13-6рр.адреса) *
; *  равен номеру колонки(21-14рр.адреса), то записыва- *
; *  ется код, обратный фоновому. затем по всем адресам *
; *  выполняется считывание с контролем. при несовпаде- *
; *  нии тест выходит на останов с адресом 53(8). те же *
; *  действия выполняются с записью кода, обратного фо- *
; *  новому, при условии: номер строки = номеру колонки *
; *  + 1 и т.д.                                         *
; *                                                     *
; * используемые регистры:                              *
; *******************************************************

зпд

; *******************************************************
; *                запись в микросхеме                  *
; *******************************************************

; *******************************************************
; *                                                     *
; *       ошибка несравнения в тесте 'диагональ'        *
; *                                                     *
; * индикация:                                          *
; *******************************************************

	ост     01003           ;не реализовано


тхэм

; *******************************************************
; *                                                     *
; *             проверка разрядов хэмминга              *
; *                                                     *
; * алгоритм проверки:                                  *
; *  разряды хэмминга проверяются на тех же алгоритмах, *
; *  что и информационные разряды, с использованием ко- *
; *  дов 'все 0', 'все 1'(проверка 71-73 и 77-79 рр.) и *
; *  'единица 58 разряда'(проверка 76-74 рр.).          *
; *  критерий исправности - отсутствие исправления оди- *
; *  ночных ошибок. контроль через пультовой процессор. *
; *******************************************************

зпхчтх

; *******************************************************
; *                                                     *
; *       проверка прямым и обратным кодом              *
; *                                                     *
; * используемые регистры:                              *
; *                                                     *
; *******************************************************

	ост     01004           ;не реализовано


маршх

; *******************************************************
; *                                                     *
; *                проверка тестом 'марш'               *
; *                                                     *
; * используемые регистры:                              *
; *                                                     *
; *******************************************************

	пф      ,7
	пв      начадр,14       ;нач.адр.провер;ки -> и1
	па      -3,9            ;сч-к блоков
	па      -2,10           ;сч-к групп
	па      -7,11           ;сч-к мксх
	па      -255,12         ;сч-к колонок
	па      -255,13         ;сч-к строк

цзмх1   сч      0
	зч      ,1
	пф      ,7
	ин      цзмгх1,2        ;блок фиксирован
	пф      ,7
	кц      кзбмх1,9        ;кц зп по блокам
	па      -3,9            ;сч-к блоков
	ви      1
	срл     3
	уи      1               ;убрали рр. номера блока
цзмгх1  пф      ,7
	ин      цзммх1,3        ;группа фиксирована
	пф      ,7
	кц      кзгмх1,10       ;кц зп по группам
	па      -2,10           ;сч-к групп
	ви      1
	пф      02000
	срл
	уи      1               ;убрали рр. номера группы

цзммх1  пф      ,7
	ин      цзкмх1,4        ;мксх фиксирована
	пф      ,7
	кц      кзммх1,11       ;кц зп по мксх
	па      -7,11           ;сч-к мксх
	ви      1
	срл     034
	уи      1               ;убрали рр. номера мксх
цзкмх1  пф      ,7
	кц      кзкмх1,12       ;кц зп по колонкам
	па      -255,12         ;сч-к колонок
	ви      1
	пф      0776
	срл
	уи      1               ;убрали рр. номера колонки
	пф      ,7
	кц      кзсмх1,13       ;кц зп по строкам
	вт                      ;вытолкнем в оп
	ви      1
	срл     017740
	уи      1               ;убрали рр. номера строки
	па      -255,13         ;сч-к строк
	пб      чтмх1,7

кзбмх1  са      1,1
	зр      024             ;гашу скп
	пб      цзмх1,7         ;нов.блок

кзгмх1  пф      01000
	са      ,1
	пб      цзмх1,7         ;нов.группа

кзммх1  са      4,1
	пб      цзмх1,7         ;нов.мксх
кзкмх1  са      020000,1
	пб      цзмх1,7         ;нов.колонка
кзсмх1  са      040,1
	пб      цзмх1,7         ;нов.строка

чтмх1

; *******************************************************
; *             чтение с инвертированием                *
; *******************************************************

чмх1    сч      ,1
	сч      е58,7
	зч      ,1              ;обр. рр. хэмминга
	вт
цчмх1   пф      ,7
	ин      цчгмх1,2        ;блок фиксирован
	пф      ,7
	кц      кчбмх1,9        ;кц чт по блокам
	па      -3,9            ;сч-к блоков
	ви      1
	срл     3
	уи      1               ;убрали рр. номера блока
цчгмх1  пф      ,7
	ин      цчммх1,3        ;группа фиксирована
	пф      ,7
	кц      кчгмх1,10       ;кц чт по группам
	па      -2,10           ;сч-к групп
	ви      1
	пф      02000
	срл
	уи      1               ;убрали рр. номера группы

цчммх1  пф      ,7
	ин      цчкмх1,4        ;мксх фиксирована
	пф      ,7
	кц      кчммх1,11       ;кц чт по мксх
	па      -7,11           ;сч-к мксх
	ви      1
	срл     034
	уи      1               ;убрали рр. номера мксх
цчкмх1  пф      ,7
	кц      кчкмх1,12       ;кц чт по колонкам
	па      -255,12         ;сч-к колонок
	ви      1
	пф      0776
	срл
	уи      1               ;убрали рр. номера колонки
	пф      ,7
	кц      кчсмх1,13       ;кц чт по строкам
	ви      1
	срл     017740
	уи      1               ;убрали рр. номера стр.
	па      -255,13         ;сч-к строк
	пб      зх2чх2,7
кчбмх1  са      1,1
	зр      024             ;гашу скп
	пб      чмх1,7          ;нов.блок

кчгмх1  пф      01000
	са      ,1
	пб      чмх1,7          ;нов. группа

кчммх1  са      4,1
	пб      чмх1,7          ;нов.мксх
кчкмх1  са      020000,1
	пб      чмх1,7          ;нов. колонка
кчсмх1  са      040,1
	пб      чмх1,7          ;нов.стр.

зх2чх2

; *******************************************************
; *       перебор адресов от старших к младшим          *
; *******************************************************

	пф      ,7
	пв      конадр,14       ;нач.адрес проверки -> и1
чмх2    сч      ,1
	сч      0
	зч      ,1              ;обр. рр. хэмминга
	вт
	пф      ,7
	ин      цчгмх2,2        ;блок фиксирован
	пф      ,7
	кц      кчбмх2,9        ;кц чт по блокам
	па      -3,9            ;сч-к блоков
	ви      1
	срл     3
	уи      1               ;восстановили рр. номера блока
цчгмх2  пф      ,7
	ин      цчммх2,3        ;группа фикс.
	пф      ,7
	кц      кчгмх2,10       ;кц чт по группам
	па      -2,10           ;сч-к групп
	ви      1
	пф      02000
	срл
	уи      1               ;восст. рр. номера группы

цчммх2  пф      ,7
	ин      цчкмх2,4        ;мксх фикс.
	пф      ,7
	кц      кчммх2,11       ;кц чт по мксх
	ви      1
	срл     034
	уи      1               ;восст. рр. номера мксх

цчкмх2  пф      ,7
	кц      кчкмх2,12       ;кц чт по колонкам
	па      -255,12         ;сч-к колонок
	ви      1
	пф      0776
	срл
	уи      1               ;восст. рр. номера колонки
	пф      ,7
	кц      кчсмх2,13       ;кц чт по строкам
	ви      1
	срл     017740
	уи      1               ;восст. рр. номера строки
	па      -255,13         ;сч-к строк
	пб      ,15             ;тоько один пример;
кчбмх2  са      -1,1
	зр      024             ;гашу скп
	пб      чмх2,7          ;нов. блок

кчгмх2  пф      -01000
	са      ,1
	пб      чмх2,7          ;нов.группа

кчммх2  са      -4,1
	пб      чмх2,7          ;нов.мксх
кчкмх2  са      -020000,1
	пб      чмх2,7          ;нов. колонка
кчсмх2  са      -040,1
	пб      чмх2,7          ;нов. стр.

диагх

; *******************************************************
; *                                                     *
; *          проверка тестом 'диагональ'                *
; *                                                     *
; * используемые регистры:                              *
; *                                                     *
; *******************************************************

	ост     01006           ;не реализовано


выхт

; завершение работы теста
; =======================

	са      1,8             ;сч-к проходов + 1
	ви      8
	ср      чпвт,7
	ур      стп,7
	пб      начт1,7         ;повтор


перепт

; *******************************************************
; *                                                     *
; *                  перепись теста                     *
; *                                                     *
; * два входа:                                          *
; *  из0в1 - перепись из 0-й группы в 1-ю группу        *
; *  из1в0 - перепись из 1-й группы в 0-ю группу        *
; * возврат по и16                                      *
; *******************************************************

из0в1
	па      ,9              ;адрес чтения = 0-й группе
	пф      01000
	па      ,10             ;адрес записи = 1-й группе
	пб      переп
из1в0
	пф      01000
	па      ,9              ;адрес чтения = 1-й группе
	па      ,10             ;адрес записи = 0-й группе

переп

; * перепись входных параметров ------

	па      -10,11

парам
	пф      ,9
	сч      нмкс+10,11
	пф      ,10
	зч      нмкс+10,11
	пф      ,7
	кц      парам,11

; * перепись теста --------------

	пи      7,10            ;новая база
	уг      к-топ+1         ;лг=1,ис10:=длина теста
	стк     1,9
	зтк     1,10
	вт                      ;вытолкнем в оп

возв
	пб      ,14


форадр

; *******************************************************
; *                                                     *
; *      формирование начального адреса проверки        *
; *                                                     *
; * два входа:                                          *
; *  начадр - проверка начинается с младших адресов оп  *
; *  конадр - проверка начинается со старших адресов оп *
; * возврат по и16                                      *
; * при выходе:                                         *
; *  и1 - начальный адрес проверки                      *
; *******************************************************

начадр
	па      ,1              ;нач.адрес = 0-й группе
	пф      ,7
	ин      форад,7
	пф      01000
	па      ,1              ;нач.адрес = 1-й группе
	пб      форад,7
конадр
	пф      03777
	па      07777,1         ;начнем с конца оп
форад
	пф      ,7
	ир      дайгру,2        ;блок не фиксирован
	ви      1
	лсл     3
	срл     3               ;убрали разряды номера блока
	лс      нблк,7
	уи      1               ;установили разряды номера блока

дайгру
	пф      ,7
	ир      даймкс,3        ;группа не фиксирована
	сч      нгру,7
	сд      1024-21
	зч      рая,7
	ви      1
	пф      0777
	лул     07777           ;убрали разряды группы
	лс      рая,7
	уи      1               ;установили разряды группы
даймкс
	пф      ,14
	ир      ,4              ;мксх фиксирована
	сч      нмкс,7
	лул     7
	сд      1024-2
	зч      рая,7
	ви      1
	лсл     034
	срл     034             ;убрали разряды номера мксх
	лс      рая,7
	уи      1               ;установили разряды номера группы
	пб      ,14             ;возврат

; *******************************************************
; *                     константы                       *
; *******************************************************

пк                              ;коды проверки
	.код    0               ;'все 0'

	.код    -1              ;'все 1'

	.код    1<57            ;'единица 58 разряда'


прип    .код    0377<32         ;нач.константа приписки

е41е9   .код    1<32!1<8

ксумт   .код    0               ;контрольная сумма теста


; *******************************************************
; *                 рабочие ячейки теста                *
; *******************************************************

рая     .пам    1
эталон  .пам    1               ;код росписи
обрко   .пам    1

; *******************************************************
; *                 эквивалентности                     *
; *******************************************************

всеед   .экв    пк+1            ;'все 1'
е58     .экв    пк+2
фпар    .экв    0777777         ;флаг задания параметров
фпвт    .экв    0777776         ;флаг числа проходов
чпвт    .экв    0777775         ;число проходов
фнпр    .экв    0777774         ;флаг номера примера
нпрм    .экв    0777773         ;номер примера
фблк    .экв    0777772         ;флаг номера блока
нблк    .экв    0777771         ;номер блока
фгру    .экв    0777770         ;флаг номера группы
нгру    .экв    0777767         ;номер группы
фмкс    .экв    0777766         ;флаг номера микросхемы
нмкс    .экв    0777765         ;номер микросхемы
к       .экв    ксумт

	.кнц    ;теста оперативной памяти
