; ****************************************************************
; *                                                              *
; *       'быстрый' тест оперативной памяти вк 'эльбрус-б'       *
; *                                                              *
; *  в тесте организуется 'быстрый' проход по оперативной памяти *
; *  в групповом режиме. размер листа задается равным 256к и ус- *
; *  танавливается приписка на всю оп. вся оп, кроме области те- *
; *  ста расписывается кодом 'все единицы'. после этого выполня- *
; *  ется чтение по проверяемой области с заменой на 'шахматный' *
; *  код/чередование кодов '0101...01' и '1010...10'/. после за- *
; *  мены подсчитывается контрольная сумма проверяемой области и *
; *  сравнивается с эталонной. при несовпадении происходит оста- *
; *  нов. операции выполняются в групповом режиме. перебор адре- *
; *  сов от младших к старшим. затем тот же алгоритм выполняется *
; *  с перебором адресов от старших к младшим.                   *
; *                                                              *
; * входные параметры:                                           *
; *  нет                                                         *
; *                                                              *
; * остановы программы:                                          *
; *  стоп 0 - тест выполнен                                      *
; *  стоп 1 - не совпала контрольная сумма теста                 *
; *  стоп 2-37(8) - ловушки прерываний и экстракодов             *
; *  стоп 100(8) - не сохранились регистры приписки              *
; *  стоп 51(8) - контрольная сумма росписи не совпала с эталон- *
; *               ной при переборе адресов от младших к старшим  *
; *  стоп 52(8) - контрольная сумма росписи не совпала с эталон- *
; *               ной при переборе адресов от старших к младшим  *
; *                                                              *
; * используемые индекс-регистры:                                *
; *  и1  - адрес записи/чтения                                   *
; *  и10 - счетчик проходов теста                                *
; *  и12 - параметр циклов установки приписки, контроля установ- *
; *        ки и цикла контрольного суммирования                  *
; *  и16 - точка входа в тест после контрольного суммирования    *
; * здесь и далее номера специальных регистров и индексных реги- *
; * стров указываются в 8-м виде.                                *
; *                                                              *
; * замечания:                                                   *
; *  1)тест рассчитан на оперативную память об'ема 8 млн. слов и *
; *    количество повторов 10(8). при изменении об'ема оператив- *
; *    ной памяти или количества повторов теста необходимо изме- *
; *    нить значения стадр или чпвт.                             *
; *  2)контрольная сумма теста и сохранность приписки проверяют- *
; *    ся при каждом проходе теста.                              *
; ****************************************************************

	.данн

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

всеед:  .код    -1              ;'все 1'
эсум:   .код    -1              ;эталонная сумма росписи
шахм:   .код    0525252525252525252525
прип:   .код    0377\<32        ;начальная константа приписки
е41е9:  .код    1\<32|1\<8
ксумт:  .код    0               ;контрольная сумма теста

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

рая     .пам    1

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

чпвт    .экв    2               ;число повторов теста
стадр   .экв    03777           ;старшие 12рр. адреса для пф
к       .экв    0x3ffff         ;конец области теста

	.текст

тпэ:    зр      020             ;пкл=0,пкп=0
	пб      начт

; ***********************************************
; *                                             *
; *      ловушки прерываний и экстракодов       *
; *                                             *
; * индикация:                                  *
; *  48-33рр. см - грвп при ост 2               *
; *  32-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

; ***********************************************
; *              хороший останов                *
; ***********************************************

стп:    па      1,15
	ост     040,15
начт:
	па      0,8             ;инициация счетчика повторов
	пб      начт1           ;временно обход ксум/па начт1,14 пб кс/
выхт:
	са      1,8             ;счетчик проходов + 1
	ви      8
	срл     чпвт
	ур      стп             ;исчерпано число проходов
	пб      кпри            ;временно обход ксум

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

	зн      рая
	па      тпэ+1,10
	па      контст,11
	им      10,11           ;и12:=1-длина теста
ксум:   ст      контст-1,10
	цс      рая
	зч      рая             ;суммируем очередное слово
	вр      02760
	сд      1024-57
	цс      рая
	зч      рая             ;добавили его тег
	кц      ксум,10         ;кц контрольного суммирования
	ср      ксумт           ;сравним с эталонной кс
	ур      ,14

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

	ик      ксумт
	ост     1
	пб      начт            ;повтор контрольного суммирования

начт1:

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

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

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

роспп:
	сч      прип
	па      -31,10          ;цикл на 32 регистра
росп:   зр      0137,10
	цс      е41е9           ;очередной код
	кц      росп,10         ;кц росписи приписки

кпри:

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

	па      -31,10          ;цикл на 32 регистра
	сч      прип
кприп:  зч      рая
	чр      0137,10
	уи      0               ;выдержка
	ср      рая
	ур      кцприп

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

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


кцприп: сч      рая
	цс      е41е9           ;очередной код
	кц      кприп,10        ;кц контроля установки приписки
	па      кпри,14         ;вход в тест на следующих проходах

шаг1:

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

; * роспись кодом 'все единицы' -----------

	сч      всеед           ;см:='все 1'
	па      к+1,1           ;область теста пропустим
	пф      стадр
:       уг      07777-к-1       ;пг=1,ис10=об'ем оп - длина теста
	зчк     1,1
	вт                      ;вытолкнем в оп

ршах1:                          ;роспись 'шахматным' кодом

	сч      шахм            ;см:='0101....01'
	па      к+1,1           ;область теста пропустим
:       пф      стадр
	уг      07777-к-1       ;лг=1,ис10=об'ем оп - длина теста
	срк     ,1
	зчк     1,1
	вт                      ;вытолкнем в оп

цс1:                            ; подсчет контрольной суммы росписи

	сч      0
	па      к+1,1
	ра      01000           ;цс "по-старому"
	пф      стадр
:       уг      07777-к-1
	цск     1,1
	ср      эсум            ;сравним с эталонной суммой
	ур      шаг2

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

	ик      эсум
	ост     051
	пб      шаг1            ;повтор

шаг2:

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

	пф      стадр
	па      07777,1         ;и1:=последний адрес проверяемого об'ема

; * роспись кодом 'все единицы' --------------

	сч      всеед           ;см:='все 1'
	пф      стадр
:       уг      07777-к-1       ;пг=1,ис10:=об'ем оп-длина теста
	зчк     -1,1
	вт                      ;вытолкнем в оп

ршах2:                          ;роспись оп 'шахматным' кодом
	пф      стадр
	па      07777,1         ;и1:=последний адрес оп
	сч      шахм            ;см:='0101....01'
:       пф      стадр
	уг      07777-к-1       ;лг=1,ис10=об'ем оп-длина теста
	срк     ,1
	зчк     -1,1
	вт                      ;вытолкнем в оп

цс2:                            ;суммирование оп
	пф      стадр
	па      07777,1         ;и1:=последний адрес оп
	сч      0
	пф      стадр
:       уг      07777-к-1       ;пг=1,ис10:=об'ем оп - длина теста
	цск     -1,1
	ср      эсум            ;сравним с эталонной суммой
	ур      выхт

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

	ик      эсум
	ост     052
	пб      шаг2            ;повтор

контст:
