1    
2 000000   .ASECT
3     .TITLE 066101
4     .DSABL GBL
5     .ENABL AMA
6     .ENABL LC
7     ;***********************************************************************
8     ;
9     ; В Н У Т Р Е Н Н И Й А В Т О - Т Е С Т
10     ;
11     ;ВНУТРЕННИЙ АВТО-ТЕСТ АВТОМАТИЧЕСКИ ВЫПОЛНЯЕТСЯ КАЖДЫЙ РАЗ ПОСЛЕ
12     ;ВКЛЮЧЕНИЯ ПИТАНИЯ С АДРЕСА 160000. ОН ПРОВЕРЯЕТ ЦЕНТРАЛЬНЫЙ ПРОЦЕССОР
13     ;(ЦП), ДИСПЕТЧЕР ПАМЯТИ (ДП), ОПЕРАТИВНОЕ ЗАПОМИНАЮЩЕЕ УСТРОЙСТВО (ОЗУ),
14     ;КОНТРОЛЛЕР ПРЕРЫВАНИЙ, ИНТЕРФЕЙСЫ КЛАВИАТУРЫ И ПЕЧАТАЮЩЕГО УСТРОЙСТВА
15     ;ТАЙМЕР, А ТАКЖЕ МОДУЛИ, УСТАНОВЛЕННЫЕ В ПОЗИЦИИ СИСТЕМНОЙ МАГИСТРАЛИ.
16     ;ТЕСТ ФОРМИРУЕТ В ОПЕРАТИВНОЙ ПАМЯТИ ТАБЛИЦУ КОНФИГУРАЦИИ ПВК, ПРОИЗВОДИТ
17     ;ЗАГРУЗКУ И ЗАПУСК НУЛЕВОГО БЛОКА ОПЕРАЦИОННОЙ СИСТЕМЫ (ЗАГРУЗЧИКА).
18     ;ПРИ ВЫПОЛНЕНИИ ВНУТРЕННЕГО АВТО-ТЕСТА НА ЭКРАН МОНИТОРА ВЫВОДИТСЯ
19     ;ПРЕДУСМОТРЕННОЕ СООБЩЕНИЕ "Э Л Е К Т Р О Н И К А" ИЛИ СООБЩЕНИЕ ОБ
20     ;ОШИБКАХ И ВКЛЮЧАЕТСЯ СВЕТОВАЯ ИНДИКАЦИЯ ОБ ОШИБКЕ.
21     ;
22     ;***********************************************************************
23 130000   .=130000
24 000100   .REPT 100
25     .-130000+2
26     HALT
27     .ENDR
28 130004   .=130004
29 130004 163134 163134
30 130200   .=130200
31     ;***********************************************************************
32     ;
33     ;ПОДПРОГРАММА ЗАПИСИ В ТАБЛИЦУ КОНФИГУРАЦИИ ПВК ИДЕНТИФИКАЦИОННОГО КОДА
34     ;ТИПА ПРОЦЕССОРА
35     ;
36     ;***********************************************************************
37    
38 130200 012764 000011 177716 MOV #11,177716(R4) ;ЗАПИСАТЬ В ТАБЛИЦУ КОНФИГУРАЦИИ ПВК
39     ;ИДЕНТИФИКАЦИОННЫЙ КОД ТИПА ПРОЦЕССОРА
40 130206 005064 177714 CLR 177714(R4)
41 130212 000207 RTS PC
42    
43     ;***********************************************************************
44     ;
45     ;ПОДПРОГРАММА ЗАПИСИ В ТАБЛИЦУ КОНФИГУРАЦИИ ПВК ИДЕНТИФИКАЦИОННОГО КОДА
46     ;ОСНОВНОГО ОЗУ И ЕМКОСТИ ОСНОВНОГО ОЗУ
47     ;
48     ;***********************************************************************
49    
50 130214 012764 000033 177712 MOV #33,177712(R4) ;ЗАПИСАТЬ В ТАБЛИЦУ КОНФИГУРАЦИИ ПВК
51     ;ИДЕНТИФИКАЦИОННЫЙ КОД ОСНОВНОЙ ПАМЯТИ
52 130222 013764 177640 177710 MOV @#177640,177710(R4) ;ЗАПИСАТЬ ЕМКОСТЬ ОСНОВНОЙ ПАМЯТИ
53 130230 000241 CLC
54 130232 006064 177710 ROR 177710(R4)
55 130236 042764 000377 177710 BIC #377,177710(R4)
56 130244 000207 RTS PC ;ВЫХОД ИЗ ПОДПРОГРАММЫ
57    
58     ;***********************************************************************
59     ;
60     ;ПОДПРОГРАММА ЗАПИСИ В ТАБЛИЦУ КОНФИГУРАЦИИ ПВК НОМЕРА ВЕРСИИ
61     ;ДИАГНОСТИЧЕСКОГО ПЗУ
62     ;
63     ;***********************************************************************
64    
65 130246 012764 000026 177706 MOV #26,177706(R4) ;ЗАПИСАТЬ НОМЕР ВЕРСИИ ДИАГНОСТИЧЕСКОГО ПЗУ
66 130254 005064 177704 CLR 177704(R4)
67 130260 000207 RTS PC
68 130262 005064 177676 CLR 177676(R4)
69 130266 000207 RTS PC
70    
71     ;***********************************************************************
72     ;
73     ;ПОДПРОГРАММА ОПРЕДЕЛЕНИЯ НАЛИЧИЯ МОНИТОРА И ЗАПИСИ ЕГО
74     ;ИДЕНТИФИКАЦИОННОГО КОДА В ТАБЛИЦУ КОНФИГУРАЦИИ ПВК
75     ;
76     ;***********************************************************************
77    
78 130270 005000 CLR R0
79 130272 032737 000020 173700 BIT #20,@#173700 ;МОНИТОР ПОДСОЕДИНЕН?
80 130300 001402 BEQ .+6 ;ПЕРЕЙТИ, ЕСЛИ НЕТ
81 130302 012700 000032 MOV #32,R0 ;ЗАПИСАТЬ В ТАБЛИЦУ КОНФИГУРАЦИИ ПВК ПРИЗНАК НАЛИЧИЯ
82 130306 010064 177702 MOV R0,177702(R4) ;МОНИТОРА
83 130312 000207 RTS PC
84    
85     ;**********************************************************************
86     ;
87     ;ПОДПРОГРАММА ПРОВЕРКИ КОНТРОЛЛЕРА ПРЕРЫВАНИЙ
88     ;
89     ;***********************************************************************
90    
91 130314 012764 000025 177636 MOV #25,177636(R4) ;ЗАПИСАТЬ В ТАБЛИЦУ КОНФИГУРАЦИИ ПВК ИДЕНТИФИКАЦИОННЫЙ
92     ;КОД КОНТРОЛЛЕРА ПРЕРЫВАНИЙ
93 130322 005064 177634 CLR 177634(R4) ;ОЧИСТИТЬ ЯЧЕЙКУ СОСТОЯНИЯ/ОШИБКИ КОНТРОЛЛЕРА
94 130326 012737 000340 177776 MOV #340,@#177776 ;УСТАНОВИТЬ ПРИОРИТЕТ ЦП = 7
95 130334 012737 130652 000004 MOV #130652,@#4 ;СФОРМИРОВАТЬ ВЕКТОР С АДРЕСОМ 000004
96 130342 012737 000340 000006 MOV #340,@#6
97 130350 010446 MOV R4,-(SP)
98 130352 012700 131206 MOV #131206,R0
99 130356 012704 173200 MOV #173200,R4 ;ВЫБРАТЬ АДРЕС КОНТРОЛЛЕРА ПРЕРЫВАНИЙ
100 130362 005710 TST @R0
101 130364 001422 BEQ 130432
102 130366 012001 MOV (R0)+,R1
103 130370 112164 000002 MOVB (R1)+,2(R4) ;ЗАГРУЗИТЬ РЕГИСТР РЕЖИМА РАБОТЫ
104 130374 112164 000002 MOVB (R1)+,2(R4) ;ВЫБРАТЬ РЕГИСТР АВТООЧИСТКИ ДЛЯ ЗАГРУЗКИ ДАННЫМИ
105     ;ИЗ КАНАЛА
106 130400 112114 MOVB (R1)+,@R4 ;РАЗРЕШИТЬ АВТООЧИСТКУ КАЖДОГО РАЗРЯДА В РЕГИСТРЕ
107     ;ЗАПРОСА ПРЕРЫВАНИЙ ПОСЛЕ ОБСЛУЖИВАНИЯ ПРЕРЫВАНИЯ
108     ;ПО ДАННОМУ РАЗРЯДУ
109 130402 105711 TSTB @R1 ;ВСЕ ВЕКТОРЫ УСТАНОВЛЕНЫ?
110 130404 001404 BEQ 130416 ;ПЕРЕЙТИ, ЕСЛИ ДА
111 130406 112164 000002 MOVB (R1)+,2(R4) ;РАЗРЕШИТЬ ВЫДАЧУ ОДНОГО ВЕКТОРА ПРЕРЫВАНИЯ
112     ;ПРИ ЗАПРОСЕ ПРЕРЫВАНИЯ НА УКАЗАННОМ УРОВНЕ
113     ;ЗАПРОСА
114 130412 112114 MOVB (R1)+,@R4 ;УСТАНОВИТЬ АДРЕС ВЕКТОРА ПРЕРЫВАНИЯ
115 130414 000772 BR 130402
116 130416 005724 TST (R4)+ ;ПОЛУЧИТЬ АДРЕС РЕГИСТРА КОМАНД
117 130420 012714 000245 MOV #245,@R4 ;УСТАНОВИТЬ ОСНОВНОЙ РАЗРЯД МАСКИРОВАНИЯ ПРЕРЫВАНИЙ
118 130424 012724 000260 MOV #260,(R4)+ ;И ПРОИЗВЕСТИ ПРЕДВАРИТЕЛЬНЫЙ ВЫБОР РЕГИСТРА
119     ;МАСКИРОВАНИЯ ПРЕРЫВАНИЙ
120 130430 000754 BR 130362
121 130432 012604 MOV (SP)+,R4
122 130434 005000 CLR R0
123 130436 010046 MOV R0,-(SP)
124 130440 006200 ASR R0
125 130442 042700 177760 BIC #177760,R0
126 130446 016001 130666 MOV 130666(R0),R1 ;ВЫБРАТЬ АДРЕС ТАБЛИЦЫ ВЕКТОРОВ ПРЕРЫВАНИЙ
127 130452 012702 000010 MOV #10,R2 ;УСТАНОВИТЬ СЧЕТЧИК ВЕКТОРОВ ПРЕРЫВАНИЙ
128 130456 012703 130674 MOV #130674,R3 ;ВЫБРАТЬ АДРЕС ТАБЛИЦЫ АДРЕСОВ ПОДПРОГРАММ ОБСЛУЖИВАНИЯ
129     ;ПРЕРЫВАНИЙ
130 130462 012137 002000 MOV (R1)+,@#2000 ;СФОРМИРОВАТЬ ВЕКТОРЫ ПРЕРЫВАНИЙ
131 130466 012377 051306 MOV (R3)+,@2000
132 130472 062737 000002 002000 ADD #2,@#2000
133 130500 012777 000340 051272 MOV #340,@2000
134 130506 077213 SOB R2,130462
135 130510 016002 130666 MOV 130666(R0),R2 ;ВЫБРАТЬ АДРЕС ТАБЛИЦЫ ВЕКТОРОВ ПРЕРЫВАНИЙ
136 130514 012600 MOV (SP)+,R0
137 130516 005001 CLR R1
138 130520 012760 000100 173202 MOV #100,173202(R0) ;ОЧИСТИТЬ ВСЕ РАЗРЯДЫ В РЕГИСТРЕ ЗАПРОСА ПРЕРЫВАНИЙ
139 130526 012760 000040 173202 MOV #40,173202(R0) ;РАЗРЕШИТЬ ОБСЛУЖИВАНИЕ ПРЕРЫВАНИЙ
140 130534 012760 000120 173202 MOV #120,173202(R0) ;УСТАНОВИТЬ ВСЕ РАЗРЯДЫ В РЕГИСТРЕ ЗАПРОСА ПРЕРЫВАНИЙ
141 130542 012737 000000 002012 MOV #0,@#2012
142 130550 005037 177776 CLR @#177776 ;УСТАНОВИТЬ ПРИОРИТЕТ ЦП = 0
143     ;ДОЛЖНЫ ПРОИЗОЙТИ ПРЕРЫВАНИЯ
144 130554 022701 000010 CMP #10,R1 ;ПРОИЗВЕСТИ ЗАДЕРЖКУ ДЛЯ ЗАВЕРШЕНИЯ ОБСЛУЖИВАНИЯ
145 130560 001403 BEQ .+10 ;ПРЕРЫВАНИЙ ОТ УСТРОЙСТВ
146 130562 005337 002012 DEC @#2012
147 130566 001772 BEQ 130554
148    
149 130570 012737 000340 177776 MOV #340,@#177776 ;УСТАНОВИТЬ ПРИОРИТЕТ ЦП =7
150 130576 012760 000100 173202 MOV #100,173202(R0) ;ОЧИСТИТЬ ВСЕ РАЗРЯДЫ В РЕГИСТРЕ ЗАПРОСА ПРЕРЫВАНИЙ
151 130604 012760 000060 173202 MOV #60,173202(R0) ;ЗАПРЕТИТЬ ОБСЛУЖИВАНИЕ ПРЕРЫВАНИЙ
152 130612 022701 000010 CMP #10,R1 ;БЫЛО 8 ПРЕРЫВАНИЙ?
153 130616 001403 BEQ .+10 ;ПЕРЕЙТИ, ЕСЛИ ДА
154 130620 012764 000001 177634 MOV #1,177634(R4) ;ОШИБКА 1. НЕТ ПРЕРЫВАНИЯ ХОТЯ БЫ ОТ ОДНОГО УСТРОЙСТВА
155 130626 022700 000010 CMP #10,R0 ;КОНЕЦ ПРОВЕРКИ?
156 130632 001406 BEQ 130650 ;ПЕРЕЙТИ, ЕСЛИ ДА
157 130634 005764 177634 TST 177634(R4) ;БЫЛИ ОШИБКИ?
158 130640 001003 BNE .+10 ;ПЕРЕЙТИ, ЕСЛИ ДА
159 130642 062700 000004 ADD #4,R0
160 130646 000673 BR 130436
161 130650 000207 RTS PC ;ВЫХОД ИЗ ПОДПРОГРАММЫ
162    
163     ;ПОДПРОГРАММЫ ОБСЛУЖИВАНИЯ ПРЕРЫВАНИЯ С АДРЕСОМ ВЕКТОРА 000004
164 130652 012716 130570 MOV #130570,@SP ;СФОРМИРОВАТЬ АДРЕС ВЫХОДА ИЗ ПРЕРЫВАНИЯ
165 130656 012766 000340 000002 MOV #340,2(SP)
166 130664 000002 RTI ;ВЫХОД ИЗ ПРЕРЫВАНИЯ
167    
168 130666 130714 130714
169 130670 130734 130734
170 130672 130754 130754
171    
172     ;ТАБЛИЦА АДРЕСОВ ПОДПРОГРАММ ОБСЛУЖИВАНИЯ ПРЕРЫВАНИЙ
173 130674 130774 130774
174 130676 131012 131012
175 130700 131032 131032
176 130702 131052 131052
177 130704 131072 131072
178 130706 131112 131112
179 130710 131132 131132
180 130712 131152 131152
181    
182     ;ТАБЛИЦА АДРЕСОВ ВЕКТОРОВ ПРЕРЫВАНИЙ УСТРОЙСТВ СИСТЕМНОГО МОДУЛЯ
183 130714 000234 234
184 130716 000200 200
185 130720 000204 204
186 130722 000210 210
187 130724 000214 214
188 130726 000220 220
189 130730 000224 224
190 130732 000230 230
191    
192     ;ТАБЛИЦА АДРЕСОВ ВЕКТОРОВ ПРЕРЫВАНИЙ МОДУЛЕЙ СИСТЕМНОЙ МАГИСТРАЛИ
193    
194 130734 000300 300
195 130736 000310 310
196 130740 000320 320
197 130742 000330 330
198 130744 000340 340
199 130746 000350 350
200 130750 000360 360
201 130752 000370 370
202 130754 000304 304
203 130756 000314 314
204 130760 000324 324
205 130762 000334 334
206 130764 000344 344
207 130766 000354 354
208 130770 000364 364
209 130772 000374 374
210    
211     ;ПОДПРОГРАММЫ ОБСЛУЖИВАНИЯ ПРЕРЫВАНИЙ ОТ УСТРОЙСТВ
212 130774 011237 002000 MOV @R2,@#2000 ;ВЫБРАТЬ АДРЕС ВЕКТОРА ПРЕРЫВАНИЯ ОТ ДАННОГО
213     ;УСТРОЙСТВА
214 131000 012777 131172 050772 MOV #131172,@2000 ;СФОРМИРОВАТЬ ВЕКТОР ПРЕРЫВАНИЯ
215 131006 005201 INC R1 ;УВЕЛИЧИТЬ СЧЕТЧИК ПЕРЫВАНИЙ
216 131010 000002 RTI
217 131012 016237 000002 002000 MOV 2(R2),@#2000 ;ВЫБРАТЬ АДРЕС ВЕКТОРА ПРЕРЫВАНИЯ ОТ ДАННОГО
218     ;УСТРОЙСТВА
219 131020 012777 131172 050752 MOV #131172,@2000 ;СФОРМИРОВАТЬ ВЕКТОР ПРЕРЫВАНИЯ
220 131026 005201 INC R1 ;УВЕЛИЧИТЬ СЧЕТЧИК ПРЕРЫВАНИЙ
221 131030 000002 RTI
222 131032 016237 000004 002000 MOV 4(R2),@#2000 ;ВЫБРАТЬ АДРЕС ВЕКТОРА ПРЕРЫВАНИЯ ОТ ДАННОГО
223     ;УСТРОЙСТВА
224 131040 012777 131172 050732 MOV #131172,@2000 ;СФОРМИРОВАТЬ ВЕКТОР ПРЕРЫВАНИЯ
225 131046 005201 INC R1 ;УВЕЛИЧИТЬ СЧЕТЧИК ПРЕРЫВАНИЙ
226 131050 000002 RTI
227 131052 016237 000006 002000 MOV 6(R2),@#2000 ;ВЫБРАТЬ АДРЕС ВЕКТОРА ПРЕРЫВАНИЯ ОТ ДАННОГО
228     ;УСТРОЙСТВА
229 131060 012777 131172 050712 MOV #131172,@2000 ;СФОРМИРОВАТЬ ВЕКТОР ПРЕРЫВАНИЯ
230 131066 005201 INC R1 ;УВЕЛИЧИТЬ СЧЕТЧИК ПРЕРЫВАНИЙ
231 131070 000002 RTI
232 131072 016237 000010 002000 MOV 10(R2),@#2000 ;ВЫБРАТЬ АДРЕС ВЕКТОРА ПРЕРЫВАНИЯ ОТ ДАННОГО
233     ;УСТРОЙСТВА
234 131100 012777 131172 050672 MOV #131172,@2000 ;СФОРМИРОВАТЬ ВЕКТОР ПРЕРЫВАНИЯ
235 131106 005201 INC R1 ;УВЕЛИЧИТЬ СЧЕТЧИК ПРЕРЫВАНИЙ
236 131110 000002 RTI
237 131112 016237 000012 002000 MOV 12(R2),@#2000 ;ВЫБРАТЬ АДРЕС ВЕКТОРА ПРЕРЫВАНИЯ ОТ ДАННОГО
238     ;УСТРОЙСТВА
239 131120 012777 131172 050652 MOV #131172,@2000 ;СФОРМИРОВАТЬ ВЕКТОР ПРЕРЫВАНИЯ
240 131126 005201 INC R1 ;УВЕЛИЧИТЬ СЧЕТЧИК ПРЕРЫВАНИЙ
241 131130 000002 RTI
242 131132 016237 000014 002000 MOV 14(R2),@#2000 ;ВЫБРАТЬ АДРЕС ВЕКТОРА ПРЕРЫВАНИЯ ОТ ДАННОГО
243     ;УСТРОЙСТВА
244 131140 012777 131172 050632 MOV #131172,@2000 ;СФОРМИРОВАТЬ ВЕКТОР ПРЕРЫВАНИЯ
245 131146 005201 INC R1 ;УВЕЛИЧИТЬ СЧЕТЧИК ПРЕРЫВАНИЙ
246 131150 000002 RTI
247 131152 016237 000016 002000 MOV 16(R2),@#2000 ;ВЫБРАТЬ АДРЕС ВЕКТОРА ПРЕРЫВАНИЯ ОТ ДАННОГО
248     ;УСТРОЙСТВА
249 131160 012777 131172 050612 MOV #131172,@2000 ;СФОРМИРОВАТЬ ВЕКТОР ПРЕРЫВАНИЯ
250 131166 005201 INC R1 ;УВЕЛИЧИТЬ СЧЕТЧИК ПРЕРЫВАНИЙ
251 131170 000002 RTI
252    
253    
254     ;ПОДПРОГРАММА ОБСЛУЖИВАНИЯ ПОВТОРНОГО ПРЕРЫВАНИЯ ОТ УСТРОЙСТВА
255    
256 131172 012764 000002 177634 MOV #2,177634(R4) ;ОШИБКА 2. ПРОИЗОШЛО ПРЕРЫВАНИЕ ПРИ ЗАПРЕЩЕНИИ
257     ;ЗАПРОСА ПРЕРЫВАНИЯ ИЛИ НЕ СНИМАЕТСЯ ФЛАГ
258     ;ЗАПРОСА ПРЕРЫВАНИЯ ПОСЛЕ ОБСЛУЖИВАНИЯ
259     ;ПРЕРЫВАНИЯ
260 131200 012716 130570 MOV #130570,@SP ;СФОРМИРОВАТЬ АДРЕС ВЫХОДА ИЗ ПРЕРЫВАНИЯ
261 131204 000002 RTI
262    
263     ;ТАБЛИЦА АДРЕСОВ
264 131206 131216 131216
265 131210 131242 131242
266 131212 131266 131266
267 131214 000000 000000
268    
269     ;ТАБЛИЦА КОНСТАНТ ДЛЯ ЗАДАНИЯ РЕЖИМА РАБОТЫ КОНТРОЛЛЕРА ПРЕРЫВАНИЙ
270 131216 140200 140200
271 131220 160377 160377
272 131222 160634 160634
273 131224 161200 161200
274 131226 161604 161604
275 131230 162210 162210
276 131232 162614 162614
277 131234 163220 163220
278 131236 163624 163624
279 131240 000230 000230
280    
281 131242 140201 140201
282 131244 160377 160377
283 131246 160700 160700
284 131250 161310 161310
285 131252 161720 161720
286 131254 162330 162330
287 131256 162740 162740
288 131260 163350 163350
289 131262 163760 163760
290 131264 000370 000370
291    
292 131266 140201 140201
293 131270 160377 160377
294 131272 160704 160704
295 131274 161314 161314
296 131276 161724 161724
297 131300 162334 162334
298 131302 162744 162744
299 131304 163354 163354
300 131306 163764 163764
301 131310 000374 000374
302    
303    
304    
305     ;**********************************************************************
306     ;
307     ;ПОДПРОГРАММА ПРОВЕРКИ ИНТЕРФЕЙСА КЛАВИАТУРЫ В РЕЖИМЕ
308     ;"КОРОТКАЯ ПЕТЛЯ"
309     ;
310     ;***********************************************************************
311    
312 131312 012764 000014 177672 MOV #14,177672(R4) ;ЗАПИСАТЬ ИДЕНТИФИКАЦИОННЫЙ КОД ИНТЕРФЕЙСА
313     ;КЛАВИАТУРЫ В ТАБЛИЦУ КОНФИГУРАЦИИ ПВК
314 131320 012737 000340 177776 MOV #340,@#177776 ;УСТАНОВИТЬ ПРИОРИТЕТ ЦП = 7
315 131326 012700 173500 MOV #173500,R0 ;ВЫБРАТЬ АДРЕС ИНТЕРФЕЙСА КЛАВИАТУРЫ
316 131332 012701 000001 MOV #1,R1 ;УСТАНОВИТЬ В R1 ПРИЗНАК ПРОВЕРКИ ИНТЕРФЕЙСА КЛАВИАТУРЫ
317 131336 010546 MOV R5,-(SP)
318 131340 004737 132036 JSR PC,@#132036 ;ПРОВЕРИТЬ ИНТЕРФЕЙС КЛАВИАТУРЫ В РЕЖИМЕ "КОРОТКАЯ ПЕТЛЯ"
319 131344 010564 177670 MOV R5,177670(R4) ;ЗАПИСАТЬ В ТАБЛИЦУ КОНФИГУРАЦИИ ПВК КОД ОШИБКИ ИЛИ
320     ;0, ЕСЛИ ОШИБКИ НЕТ
321 131350 012605 MOV (SP)+,R5
322 131352 005764 177670 TST 177670(R4) ;БЫЛА ОШИБКА?
323 131356 001013 BNE 131406 ;ПЕРЕЙТИ, ЕСЛИ ДА
324 131360 005760 000006 TST 6(R0)
325 131364 012760 000116 000004 MOV #116,4(R0) ;ЗАДАТЬ АССИНХРОННЫЙ РЕЖИМ РАБОТЫ С 8-Ю ИНФОРМАЦИОННЫМИ
326     ;БИТАМИ И 1 СТОПОВЫМ БИТОМ
327 131372 012760 000074 000004 MOV #74,4(R0) ;ЗАДАТЬ СКОРОСТЬ ОБМЕНА - 4800 БИТ/С
328 131400 012760 000047 000006 MOV #47,6(R0) ;РАЗРЕШИТЬ ПРИЕМ И ПЕРЕДАЧУ ИНТЕРФЕЙСА КЛАВИАТУРЫ В
329     ;НОРМАЛЬНОМ РЕЖИМЕ
330 131406 000207 RTS PC ;ВЫХОД ИЗ ПОДПРОГРАММЫ
331    
332     ;***********************************************************************
333     ;
334     ;ПОДПРОГРАММА ВЫБОРКИ ИЗ БУФЕРА КЛАВИАТУРЫ И ЗАПИСИ В ТАБЛИЦУ
335     ;КОНФИГУРАЦИИ ПВК ИДЕНТИФИКАЦИОННЫХ КОДОВ, ГЕНЕРИРУЕМЫХ КЛАВИАТУРОЙ
336     ;
337     ;***********************************************************************
338    
339 131410 005764 177702 TST 177702(R4) ;МОНИТОР ПОДСОЕДИНЕН?
340 131414 001403 BEQ .+10 ;ПЕРЕЙТИ, ЕСЛИ НЕТ
341 131416 105764 177670 TSTB 177670(R4) ;БЫЛИ ОШИБКИ ПРИ ПРОВЕРКЕ ИНТЕРФЕЙСА КЛАВИАТУРЫ В
342     ;РЕЖИМЕ "КОРОТКАЯ ПЕТЛЯ"?
343 131422 001401 BEQ .+4 ;ПЕРЕЙТИ, ЕСЛИ НЕТ
344 131424 000207 RTS PC
345 131426 012737 000340 177776 MOV #340,@#177776 ;УСТАНОВИТЬ ПРИОРИТЕТ ЦП = 7
346 131434 012737 131600 000200 MOV #131600,@#200 ;СФОРМИРОВАТЬ ВЕКТОРЫ ПРЕРЫВАНИЙ С АДРЕСАМИ 000200 И
347 131442 012737 000340 000202 MOV #340,@#202 ;000204
348 131450 012737 131564 000204 MOV #131564,@#204
349 131456 012737 000340 000206 MOV #340,@#206
350 131464 012701 000001 MOV #1,R1
351 131470 005737 173500 TST @#173500 ;СЧИТАТЬ БУФЕР
352 131474 104002 EMT+2 ;РАЗРЕШИТЬ ПРЕРЫВАНИЕ ОТ ВХОДА КЛАВИАТУРЫ
353 131476 005201 INC R1
354 131500 104002 EMT+2 ;РАЗРЕШИТЬ ПРЕРЫВАНИЕ ОТ ВЫХОДА КЛАВИАТУРЫ
355 131502 012737 000375 173500 MOV #375,@#173500 ;ВЫПОЛНИТЬ ТЕСТ, ГЕНЕРИРУЮЩИЙ ИДЕНТИФИКАЦИОННЫЕ КОДЫ
356     ;КЛАВИАТУРЫ
357 131510 005000 CLR R0
358 131512 005001 CLR R1
359 131514 005037 002000 CLR @#2000
360 131520 012737 177777 002002 MOV #-1,@#2002
361 131526 005037 177776 CLR @#177776 ;УСТАНОВИТЬ ПРИОРИТЕТ ЦП = 0
362     ;ДОЛЖНО ПРОИЗОЙТИ ПРЕРЫВАНИЕ
363 131532 077001 SOB R0,.+0 ;ПРОИЗВЕСТИ ЗАДЕРЖКУ ДЛЯ ЗАВЕРШЕНИЯ ВЫБОРКИ КОДОВ
364 131534 012701 000001 MOV #1,R1
365 131540 104003 EMT+3 ;ЗАПРЕТИТЬ ПРЕРЫВАНИЕ ОТ ВХОДА КЛАВИАТУРЫ
366 131542 005201 INC R1
367 131544 104003 EMT+3 ;ЗАПРЕТИТЬ ПРЕРЫВАНИЕ ОТ ВЫХОДА КЛАВИАТУРЫ
368 131546 013764 002000 177722 MOV @#2000,177722(R4) ;ЗАПИСАТЬ ИДЕНТИФИКАЦИОННЫЕ КОДЫ В ТАБЛИЦУ
369 131554 013764 002002 177720 MOV @#2002,177720(R4) ;КОНФИГУРАЦИИ ПВК
370 131562 000207 RTS PC ;ВЫХОД ИЗ ПОДПРОГРАММЫ
371    
372     ;ПОДПРОГРАММА ОБСЛУЖИВАНИЯ ПРЕРЫВАНИЯ ОТ ВЫХОДА КЛАВИАТУРЫ
373     ;(АДРЕС ВЕКТОРА ПРЕРЫВАНИЯ - 000204)
374    
375 131564 010146 MOV R1,-(SP)
376 131566 012701 000002 MOV #2,R1
377 131572 104003 EMT+3 ;ЗАПРЕТИТЬ ПРЕРЫВАНИЕ ОТ ВЫХОДА КЛАВИАТУРЫ
378 131574 012601 MOV (SP)+,R1
379 131576 000002 RTI ;ВЫХОД ИЗ ПРЕРЫВАНИЯ
380    
381     ;ПОДПРОГРАММА ОБСЛУЖИВАНИЯ ПРЕРЫВАНИЯ ОТ ВХОДА КЛАВИАТУРЫ
382     ;(АДРЕС ВЕКТОРА ПРЕРЫВАНИЯ - 000200)
383    
384 131600 113761 173500 002000 MOVB @#173500,2000(R1) ;ВЫБРАТЬ КОД ИЗ БУФЕРА КЛАВИАТУРЫ
385 131606 005201 INC R1 ;УВЕЛИЧИТЬ СЧЕТЧИК КОДОВ
386 131610 022701 000004 CMP #4,R1 ;4 КОДА СЧИТАНЫ?
387 131614 001005 BNE 131630 ;ПЕРЕЙТИ, ЕСЛИ НЕТ
388 131616 010146 MOV R1,-(SP)
389 131620 012701 000001 MOV #1,R1
390 131624 104003 EMT+3 ;ЗАПРЕТИТЬ ПРЕРЫВАНИЕ ОТ ВХОДА КЛАВИАТУРЫ
391 131626 012601 MOV (SP)+,R1
392 131630 000002 RTI ;ВЫХОД ИЗ ПРЕРЫВАНИЯ
393    
394     ;***********************************************************************
395     ;
396     ;ПОДПРОГРАММА ПРОВЕРКИ ИНТЕРФЕЙСА ПЕЧАТАЮЩЕГО УСТРОЙСТВА
397     ;В РЕЖИМЕ "КОРОТКАЯ ПЕТЛЯ"
398     ;
399     ;***********************************************************************
400    
401 131632 012737 000340 177776 MOV #340,@#177776 ;УСТАНОВИТЬ ПРИОРИТЕТ ЦП = 7
402 131640 012764 000017 177666 MOV #17,177666(R4) ;ЗАПИСАТЬ В ТАБЛИЦУ КОНФИГУРАЦИИ ПВК ИДЕНТИФИКАЦИОНЫЙ
403     ;КОД ИНТЕРФЕЙСА ПЕЧАТАЮЩЕГО УСТРОЙСТВА
404 131646 012700 173400 MOV #173400,R0 ;ВЫБРАТЬ АДРЕС ИНТЕРФЕЙСА ПЕЧАТАЮЩЕГО УСТРОЙСТВА
405 131652 012701 000005 MOV #5,R1 ;УСТАНОВИТЬ В R1 ПРИЗНАК ПРОВЕРКИ ИНТЕРФЕЙСА ПЕЧАТАЮЩЕГО
406     ;УСТРОЙСТВА
407 131656 042737 000200 173700 BIC #200,@#173700 ;ЗАПРЕТИТЬ ОСТАНОВ ЭВМ
408 131664 010546 MOV R5,-(SP)
409 131666 004737 132036 JSR PC,@#132036 ;ПРОВЕРИТЬ ИНТЕРФЕЙС ПЕЧАТАЮЩЕГО УСТРОЙСТВА В РЕЖИМЕ
410     ;"КОРОТКАЯ ПЕТЛЯ"
411 131672 010564 177664 MOV R5,177664(R4) ;ЗАПИСАТЬ В ТАБЛИЦУ КОНФИГУРАЦИИ ПВК КОД ОШИБКИ ИЛИ
412     ;0, ЕСЛИ ОШИБОК НЕТ
413 131676 012605 MOV (SP)+,R5
414 131700 005764 177664 TST 177664(R4) ;БЫЛИ ОШИБКИ?
415 131704 001016 BNE 131742 ;ПЕРЕЙТИ, ЕСЛИ ДА
416 131706 005760 000006 TST 6(R0)
417 131712 012760 000116 000004 MOV #116,4(R0) ;ЗАДАТЬ АССИНХРОННЫЙ РЕЖИМ РАБОТЫ С 8-Ю ИНФОРМАЦИОННЫМИ
418     ;И 1 СТОПОВЫМ БИТАМИ
419 131720 012760 000274 000004 MOV #274,4(R0) ;ЗАДАТЬ СКОРОСТЬ ОБМЕНА - 4800 БИТ/С
420 131726 012760 000047 000006 MOV #47,6(R0) ;РАЗРЕШИТЬ ПРИЕМ И ПЕРЕДАЧУ В НОРМАЛЬНОМ РЕЖИМЕ
421 131734 052737 000200 173700 BIS #200,@#173700 ;РАЗРЕШИТЬ ОСТАНОВ ЭВМ
422 131742 000207 RTS PC
423    
424     ;***********************************************************************
425     ;
426     ;ПОДПРОГРАММА ПРОВЕРКИ НАЛИЧИЯ И ГОТОВНОСТИ ПУЛЬТОВОГО ТЕРМИНАЛА
427     ;ПРИ НАЛИЧИИ И ГОТОВНОСТИ ПУЛЬТОВОГО ТЕРМИНАЛА ПЕРЕПРОГРАММИРУЕТСЯ
428     ;СКОРОСТЬ ОБМЕНА ИНТЕРФЕЙСА НА 9600 БИТ/С
429     ;
430     ;***********************************************************************
431    
432 131744 012737 132030 000004 MOV #132030,@#4 ;СФОРМИРОВАТЬ ВЕКТОР С АДРЕСОМ 000004
433 131752 005737 177564 TST @#177564 ;ПУЛЬТОВОЙ ТЕРМИНАЛ ГОТОВ?
434     ;(ПРЕРЫВАНИЕ, ЕСЛИ АДРЕС НЕ ОТВЕЧАЕТ)
435 131756 001423 BEQ 132026 ;ПЕРЕЙТИ, ЕСЛИ НЕТ
436 131760 012700 173400 MOV #173400,R0 ;ВЫБРАТЬ АДРЕС ИНТЕРФЕЙСА ПЕЧАТАЮЩЕГО УСТРОЙСТВА
437 131764 012764 000027 177662 MOV #27,177662(R4) ;ЗАПИСАТЬ ИДЕНТИФИКАЦИОННЫЙ КОД ПУЛЬТОВОГО ТЕРМИНАЛА
438     ;В ТАБЛИЦУ КОНФИГУРАЦИИ ПВК
439 131772 005760 000006 TST 6(R0) ;ПЕРЕПРОГРАММИРОВАТЬ ИНТЕРФЕЙС ДЛЯ РАБОТЫ С ПУЛЬТОВЫМ
440 131776 012760 000116 000004 MOV #116,4(R0) ;ТЕРМИНАЛОМ:ЗАДАТЬ АССИНХРОННЫЙ РЕЖИМ РАБОТЫ С 8-Ю
441     ;ИНФОРМАЦИОННЫМИ И 1 СТОПОВЫМ БИТАМИ
442 132004 012760 000276 000004 MOV #276,4(R0) ;ЗАДАТЬ СКОРОСТЬ ОБМЕНА - 9600 БИТ/С
443 132012 012760 000047 000006 MOV #47,6(R0) ;РАЗРЕШИТЬ ПРИЕМ И ПЕРЕДАЧУ В НОРМАЛЬНОМ РЕЖИМЕ
444 132020 052737 000200 173700 BIS #200,@#173700 ;РАЗРЕШИТЬ ОСТАНОВ ЭВМ
445 132026 000207 RTS PC
446    
447     ;ПОДПРОГРАММА ОБСЛУЖИВАНИЯ ПРЕРЫВАНИЯ С АДРЕСОМ ВЕКТОРА 000004
448 132030 012716 132026 MOV #132026,@SP ;СФОРМИРОВАТЬ АДРЕС ВЫХОДА ИЗ ПРЕРЫВАНИЯ
449 132034 000002 RTI ;ВЫХОД ИЗ ПРЕРЫВАНИЯ
450    
451    
452     ;***********************************************************************
453     ;
454     ;ПОДПРОГРАММА ПЕРЕДАЧИ ДАННЫХ 000-377 В РЕЖИМЕ ПРЕРЫВАНИЙ
455     ;С ИСПОЛЬЗОВАНИЕМ РЕЖИМА "КОРОТКАЯ ПЕТЛЯ"
456     ;
457     ;***********************************************************************
458    
459 132036 012737 132444 000004 MOV #132444,@#4 ;СФОРМИРОВАТЬ ВЕКТОР С АДРЕСОМ 000004
460 132044 012737 000340 000006 MOV #340,@#6
461 132052 010102 MOV R1,R2 ;ВЫБРАТЬ УКАЗАТЕЛЬ ПРОВЕРЯЕМОГО УСТРОЙСТВА
462     ;1 - ИНТЕРФЕЙС КЛАВИАТУРЫ
463     ;5 - ИНТЕРФЕЙС ПЕЧАТАЮЩЕГО УСТРОЙСТВА
464 132054 005710 TST @R0 ;СЧИТАТЬ БУФЕР
465 132056 072227 000002 ASH #2,R2
466 132062 012737 000000 002004 MOV #0,@#2004
467 132070 012762 132332 000174 MOV #132332,174(R2) ;СФОРМИРОВАТЬ ВЕКТОРЫ ПРЕРЫВАНИЙ С АДРЕСАМИ
468 132076 012762 000340 000176 MOV #340,176(R2) ;000200 И 000204 ДЛЯ ИНТЕРФЕЙСА КЛАВИАТУРЫ,
469 132104 012762 132300 000200 MOV #132300,200(R2) ;000220 И 000224 ДЛЯ ИНТЕРФЕЙСА ПЕЧАТАЮЩЕГО
470 132112 012762 000340 000202 MOV #340,202(R2) ;УСТРОЙСТВА
471 132120 005060 000006 CLR 6(R0)
472 132124 005760 000006 TST 6(R0) ;ПЕРЕПРОГРАММИРОВАТЬ РЕЖИМ РАБОТЫ ИНТЕРФЕЙСА:
473 132130 012760 000116 000004 MOV #116,4(R0) ;ЗАДАТЬ АСИНХРОННЫЙ РЕЖИМ С 8-Ю ИНФОРМАЦИОННЫМИ И
474     ;1 СТОПОВЫМ БИТАМИ
475 132136 012760 000057 000004 MOV #57,4(R0) ;ЗАДАТЬ СКОРОСТЬ ОБМЕНА - 19200 БИТ/С
476 132144 012760 000243 000006 MOV #243,6(R0) ;ЗАДАТЬ РЕЖИМ "КОРОТКАЯ ПЕТЛЯ"
477 132152 005037 002002 CLR @#2002
478 132156 005037 002000 CLR @#2000
479 132162 011005 MOV @R0,R5 ;СЧИТАТЬ БУФЕР
480 132164 005005 CLR R5
481 132166 104002 EMT+2 ;РАЗРЕШИТЬ ПРЕРЫВАНИЕ ОТ ВХОДА ИНТЕРФЕЙСА КЛАВИАТУРЫ/
482     ;ПЕЧАТАЮЩЕГО УСТРОЙСТВА
483 132170 005201 INC R1
484 132172 104002 EMT+2 ;РАЗРЕШИТЬ ПРЕРЫВАНИЕ ОТ ВЫХОДА ИНТЕРФЕЙСА КЛАВИАТУРЫ/
485     ;ПЕЧАТАЮЩЕГО УСТРОЙСТВА
486 132174 104004 EMT+4 ;ЗАДАТЬ ТРЕБОВАНИЕ ПРЕРЫВАНИЯ ОТ ВЫХОДА ИНТЕРФЕЙСА
487     ;КЛАВИАТУРЫ/ПЕЧАТАЮЩЕГО УСТРОЙСТВА
488 132176 005301 DEC R1
489 132200 005037 177776 CLR @#177776 ;УСТАНОВИТЬ ПРИОРИТЕТ ЦП = 0
490     ;ДОЛЖНО ПРОИЗОЙТИ ПРЕРЫВАНИЕ
491 132204 022737 000400 002002 CMP #400,@#2002 ;ПРОИЗВЕСТИ ЗАДЕРЖКУ ДЛЯ ЗАВЕРШЕНИЯ ПЕРЕДАЧИ ДАННЫХ
492 132212 001405 BEQ 132226 ;В РЕЖИМЕ ПРЕРЫВАНИЙ
493 132214 005705 TST R5 ;БЫЛИ ОШИБКИ?
494 132216 001003 BNE .+10 ;ПЕРЕЙТИ, ЕСЛИ ДА
495 132220 005337 002004 DEC @#2004
496 132224 001367 BNE 132204
497 132226 012737 000340 177776 MOV #340,@#177776 ;УСТАНОВИТЬ ПРИОРИТЕТ ЦП = 7
498 132234 005060 000006 CLR 6(R0)
499 132240 104003 EMT+3 ;ЗАПРЕТИТЬ ПРЕРЫВАНИЕ ОТ ВХОДА ИНТЕРФЕЙСА КЛАВИАТУРЫ/
500     ;ПЕЧАТАЮЩЕГО УСТРОЙСТВА
501 132242 005201 INC R1
502 132244 104003 EMT+3 ;ЗАПРЕТИТЬ ПРЕРЫВАНИЕ ОТ ВЫХОДА ИНТЕРФЕЙСА КЛАВИАТУРЫ/
503     ;ПЕЧАТАЮЩЕГО УСТРОЙСТВА
504 132246 005301 DEC R1
505 132250 005737 002004 TST @#2004 ;СЧЕТЧИК =0?
506 132254 001010 BNE 132276 ;ПЕРЕЙТИ, ЕСЛИ НЕТ
507 132256 022701 000001 CMP #1,R1 ;ПРОВЕРЯЕТСЯ ИНТЕРФЕЙС КЛАВИАТУРЫ?
508 132262 001003 BNE .+10 ;ПЕРЕЙТИ, ЕСЛИ ПРОВЕРЯЕТСЯ
509     ;ИНТЕРФЕЙС ПЕЧАТАЮЩЕГО УСТРОЙСТВА
510 132264 012705 000004 MOV #4,R5 ;ОШИБКА 4. НЕТ ПРЕРЫВАНИЯ ОТ ИНТЕРФЕЙСА КЛАВИАТУРЫ ИЛИ
511     ;ОШИБКА СКОРОСТИ ОБМЕНА ИНТЕРФЕЙСА КЛАВИАТУРЫ
512 132270 000402 BR .+6
513 132272 012705 000005 MOV #5,R5 ;ОШИБКА 5. НЕТ ПРЕРЫВАНИЯ ОТ ИНТЕРФЕЙСА ПЕЧАТАЮЩЕГО
514     ;УСТРОЙСТВА ИЛИ ОШИБКА СКОРОСТИ ОБМЕНА ИНТЕРФЕЙСА
515     ;ПЕЧАТАЮЩЕГО УСТРОЙСТВА
516 132276 000207 RTS PC
517    
518     ;ПОДПРОГРАММА ОБСЛУЖИВАНИЯ ПРЕРЫВАНИЯ ОТ ВЫХОДА ИНТЕРФЕЙСА КЛАВИАТУРЫ/
519     ;ПЕЧАТАЮЩЕГО УСТРОЙСТВА
520     ;(ВЕКТОР С АДРЕСОМ 000204 - ДЛЯ ИНТЕРФЕЙСА КЛАВИАТУРЫ, 000224 - ДЛЯ
521     ;ИНТЕРФЕЙСА ПЕЧАТАЮЩЕГО УСТРОЙСТВА)
522    
523 132300 022737 000400 002000 CMP #400,@#2000 ;ВСЕ ДАННЫЕ ПЕРЕДАНЫ?
524 132306 001004 BNE 132320 ;ПЕРЕЙТИ, ЕСЛИ НЕТ
525 132310 005201 INC R1
526 132312 104003 EMT+3 ;ЗАПРЕТИТЬ ПРЕРЫВАНИЕ ОТ ВЫХОДА ИНТЕРФЕЙСА
527 132314 005301 DEC R1
528 132316 000404 BR 132330
529 132320 013710 002000 MOV @#2000,@R0 ;ЗАГРУЗИТЬ КОД В ВЫХОДНОЙ БУФЕР ИНТЕРФЕЙСА
530 132324 005237 002000 INC @#2000 ;ПОЛУЧИТЬ СЛЕДУЮЩИЙ КОД
531 132330 000002 RTI ;ВЫХОД ИЗ ПРЕРЫВАНИЯ
532    
533     ;ПОДПРОГРАММА ОБСЛУЖИВАНИЯ ПРЕРЫВАНИЯ ОТ ВХОДА ИНТЕРФЕЙСА КЛАВИАТУРЫ/
534     ;ПЕЧАТАЮЩЕГО УСТРОЙСТВА
535     ;(ВЕКТОР С АДРЕСОМ 000200 - ДЛЯ ИНТЕРФЕЙСА КЛАВИАТУРЫ, 000220 - ДЛЯ
536     ;ИНТЕРФЕЙСА ПЕЧАТАЮЩЕГО УСТРОЙСТВА
537    
538 132332 016003 000002 MOV 2(R0),R3 ;СЧИТАТЬ РС
539 132336 032703 000060 BIT #60,R3 ;ЕСТЬ ОШИБКА ПЕРЕПОЛНЕНИЯ ИЛИ ОШИБКА СТОПОВОГО БИТА?
540 132342 001003 BNE .+10 ;ПЕРЕЙТИ, ЕСЛИ ДА
541 132344 032703 000002 BIT #2,R3 ;ВХОДНОЙ БУФЕР ПУСТ?
542 132350 001011 BNE 132374 ;ПЕРЕЙТИ, ЕСЛИ ЗАГРУЖЕН
543 132352 022701 000001 CMP #1,R1 ;ПРОВЕРЯЕТСЯ ИНТЕРФЕЙС КЛАВИАТУРЫ?
544 132356 001003 BNE .+10 ;ПЕРЕЙТИ, ЕСЛИ ИНТЕРФЕЙС ПЕЧАТАЮЩЕГО УСТРОЙСТВА
545 132360 012705 000006 MOV #6,R5 ;ОШИБКА 6. ОШИБКА ПЕРЕПОЛНЕНИЯ, ОШИБКА СТОПОВОГО БИТА
546     ;ИЛИ НЕТ ГОТОВНОСТИ ВХОДА ИНТЕРФЕЙСА КЛАВИАТУРЫ
547 132364 000417 BR 132424
548 132366 012705 000007 MOV #7,R5 ;ОШИБКА 7. ОШИБКА ПЕРЕПОЛНЕНИЯ, ОШИБКА СТОПОВОГО БИТА
549     ;ИЛИ НЕТ ГОТОВНОСТИ ВХОДА ИНТЕРФЕЙСА ПЕЧАТАЮЩЕГО
550     ;УСТРОЙСТВА
551 132372 000414 BR 132424
552 132374 011003 MOV @R0,R3 ;СЧИТАТЬ ВХОДНОЙ БУФЕР
553 132376 120337 002002 CMPB R3,@#2002 ;ДАННЫЕ СОВПАДАЮТ?
554 132402 001415 BEQ 132436 ;ПЕРЕЙТИ, ЕСЛИ ДА
555 132404 022701 000001 CMP #1,R1 ;ПРОВЕРЯЕТСЯ ИНТЕРФЕЙС КЛАВИАТУРЫ?
556 132410 001003 BNE .+10 ;ПЕРЕЙТИ, ЕСЛИ ИНТЕРФЕЙС ПЕЧАТАЮЩЕГО УСТРОЙСТВА
557 132412 012705 000010 MOV #10,R5 ;ОШИБКА 10. НЕСОВПАДЕНИЕ ПЕРЕДАВАЕМЫХ И ПРИНИМАЕМЫХ
558     ;ДАННЫХ ПРИ ПРОВЕРКЕ ИНТЕРФЕЙСА КЛАВИАТУРЫ
559 132416 000402 BR .+6
560 132420 012705 000011 MOV #11,R5 ;ОШИБКА 11. НЕСОВПАДЕНИЕ ПЕРЕДАВАЕМЫХ И ПРИНИМАЕМЫХ
561     ;ДАННЫХ ПРИ ПРОВЕРКЕ ИНТЕРФЕЙСА ПЕЧАТАЮЩЕГО УСТРОЙСТВА
562 132424 104003 EMT+3 ;ЗАПРЕТИТЬ ПРЕРЫВАНИЕ ОТ ВХОДА ИНТЕРФЕЙСА
563 132426 005201 INC R1
564 132430 104003 EMT+3 ;ЗАПРЕТИТЬ ПРЕРЫВАНИЕ ОТ ВЫХОДА ИНТЕРФЕЙСА
565 132432 005301 DEC R1
566 132434 000402 BR .+6
567 132436 005237 002002 INC @#2002 ;ПОЛУЧИТЬ СЛЕДУЮЩИЙ ОЖИДАЕМЫЙ КОД
568 132442 000002 RTI ;ВЫХОД ИЗ ПРЕРЫВАНИЯ
569    
570     ;ПОДПРОГРАММА ОБРАБОТКИ ПРЕРЫВАНИЯ С АДРЕСОМ ВЕКТОРА 000004
571    
572 132444 012716 132204 MOV #132204,@SP ;СФОРМИРОВАТЬ АДРЕС ВЫХОДА ИЗ ПРЕРЫВАНИЯ
573 132450 022701 000001 CMP #1,R1 ;ПРОВЕРЯЕТСЯ ИНТЕРФЕЙС КЛАВИАТУРЫ?
574 132454 001003 BNE .+10 ;ПЕРЕЙТИ, ЕСЛИ ИНТЕРФЕЙС ПЕЧАТАЮЩЕГО УСТРОЙСТВА
575 132456 012705 000026 MOV #26,R5 ;ОШИБКА 26.
576     ;НЕТ ОТВЕТА ОТ ОДНОГО ИЗ РЕГИСТРОВ ИНТЕРФЕЙСА КЛАВИАТУРЫ
577 132462 000402 BR .+6
578 132464 012705 000003 MOV #3,R5 ;ОШИБКА 3.НЕТ ОТВЕТА ОТ ОДНОГО ИЗ РЕГИСТРОВ ИНТЕРФЕЙСА
579     ;ПЕЧАТАЮЩЕГО УСТРОЙСТВА
580 132470 000002 RTI ;ВЫХОД ИЗ ПРЕРЫВАНИЯ
581    
582     ;***********************************************************************
583     ;
584     ;ПОДПРОГРАММА ПРОВЕРКИ КОММУНИКАЦИОННОГО ИНТЕРФЕЙСА
585     ;РЗN - РЕГИСТР ЗАПИСИ, N - НОМЕР РЕГИСТРА ЗАПИСИ
586     ;РЧN - РЕГИСТР ЧТЕНИЯ, N - НОМЕР РЕГИСТРА ЧТЕНИЯ
587     ;
588     ;***********************************************************************
589    
590 132472 012737 000340 177776 MOV #340,@#177776 ;УСТАНОВИТЬ ПРИОРИТЕТ ЦП =7
591 132500 012764 000021 177656 MOV #21,177656(R4) ;ЗАПИСАТЬ ИДЕНТИФИКАЦИОННЫЙ КОД КОММУНИКАЦИОННОГО
592     ;ИНТЕРФЕЙСА В ТАБЛИЦУ КОНФИГУРАЦИИ ПВК
593 132506 012737 133066 000004 MOV #133066,@#4 ;СФОРМИРОВАТЬ ВЕКТОР С АДРЕСОМ 000004
594 132514 012737 000340 000006 MOV #340,@#6
595 132522 012737 000377 173314 MOV #377,@#173314 ;ЗАДАТЬ СКОРОСТЬ ОБМЕНА - 19200 БИТ/С
596 132530 012737 000340 173310 MOV #340,@#173310 ;УСТАНОВИТЬ РЕЖИМ АВТОНОМНОЙ ПРОВЕРКИ КОММУНИКАЦИОННОГО
597     ;ИНТЕРФЕЙСА
598 132536 012737 133106 000210 MOV #133106,@#210 ;СФОРМИРОВАТЬ ВЕКТОР ПРЕРЫВАНИЯ ОТ КОММУНИКАЦИОННОГО
599 132544 012737 000340 000212 MOV #340,@#212 ;ИНТЕРФЕЙСА
600 132552 005037 002000 CLR @#2000
601 132556 005037 002002 CLR @#2002
602 132562 010546 MOV R5,-(SP)
603 132564 012737 000000 002004 MOV #0,@#2004
604 132572 012737 000030 173302 MOV #30,@#173302 ;ОЧИСТИТЬ ФЛАГИ СОСТОЯНИЯ В РЧ0, ЛОГИКУ
605 132600 012737 000030 173306 MOV #30,@#173306 ;ПРЕРЫВАНИЙ И ВСЕ РЕГИСТРЫ КОНТРОЛЯ ВНУТРЕННЕЙ
606     ;МАГИСТРАЛИ В КАНАЛЕ А И Б
607 132606 012737 000300 173302 MOV #300,@#173302
608 132614 012737 000004 173302 MOV #4,@#173302 ;ВЫБРАТЬ НОМЕР РЗ=4 В КАНАЛЕ А
609 132622 012737 000104 173302 MOV #104,@#173302 ;ЗАПРЕТИТЬ ПАРИТЕТ, РАЗРЕШИТЬ АССИНХРОННЫЙ
610     ;РЕЖИМ С 1 СТОПОВЫМ БИТОМ
611 132630 012737 000003 173302 MOV #3,@#173302 ;ВЫБРАТЬ НОМЕР РЗ=3 В КАНАЛЕ А
612 132636 012737 000341 173302 MOV #341,@#173302 ;РАЗРЕШИТЬ ПРИЕМ 8-БИТНЫХ ДАННЫХ
613 132644 012737 000005 173302 MOV #5,@#173302 ;ВЫБРАТЬ НОМЕР РЗ=5 В КАНАЛЕ А
614 132652 012737 000352 173302 MOV #352,@#173302 ;РАЗРЕШИТЬ ПЕРЕДАЧУ 8-БИТНЫХ ДАННЫХ
615 132660 012737 000002 173302 MOV #2,@#173302 ;ВЫБРАТЬ НОМЕР РЗ=2 В КАНАЛЕ А
616 132666 012737 000000 173302 MOV #0,@#173302 ;РАЗРЕШИТЬ РЕЖИМ ПРЕРЫВАНИЙ В КАНАЛЕ А И Б,
617     ;УСТАНОВИТЬ ПРИОРИТЕТ ПРЕРЫВАНИЙ
618 132674 012737 000020 173302 MOV #20,@#173302 ;ИНИЦИАЛИЗИРОВАТЬ РАЗРЯДЫ СОСТОЯНИЯ В РЧ0,
619     ;РАЗРЕШИТЬ ИХ ЗАПОЛНЕНИЕ
620 132702 012737 000002 173306 MOV #2,@#173306 ;ВЫБРАТЬ НОМЕР РЗ=2 В КАНАЛЕ Б
621 132710 012737 000000 173306 MOV #0,@#173306
622 132716 012737 000001 173306 MOV #1,@#173306 ;ВЫБРАТЬ НОМЕР РЗ=1 В КАНАЛЕ Б
623 132724 012737 000004 173306 MOV #4,@#173306 ;УСТАНОВИТЬ РАЗРЯД 02 В РЗ1
624 132732 012737 000001 173302 MOV #1,@#173302 ;ВЫБРАТЬ НОМЕР РЗ=1 В КАНАЛЕ А
625 132740 012737 000022 173302 MOV #22,@#173302 ;РАЗРЕШИТЬ ПРЕРЫВАНИЕ ОТ ПЕРЕДАТЧИКА И ОТ
626     ;ПРИЕМНИКА (ПО ЗАВЕРШЕНИИ ПРИЕМА КАЖДОГО СИМВОЛА
627 132746 012701 000003 MOV #3,R1 ;ИЛИ ПРИ ВОЗНИКНОВЕНИИ ОШИБКИ)
628 132752 104002 EMT+2 ;РАЗРЕШИТЬ ПРЕРЫВАНИЕ ОТ КОММУНИКАЦИОННОГО ИНТЕРФЕЙСА
629 132754 005037 173300 CLR @#173300 ;ЗАГРУЗИТЬ КОД В БУФЕР КАНАЛА А
630 132760 005237 002000 INC @#2000
631 132764 005005 CLR R5
632 132766 005037 177776 CLR @#177776 ;УСТАНОВИТЬ ПРИОРИТЕТ ЦП= 0
633     ;ДОЛЖНО ПРОИЗОЙТИ ПРЕРЫВАНИЕ С АДРЕСОМ ВЕКТОРА
634     ;000210
635 132772 022737 000400 002002 CMP #400,@#2002 ;ВСЕ ДАННЫЕ ПЕРЕДАНЫ?
636 133000 001405 BEQ 133014 ;ПЕРЕЙТИ, ЕСЛИ ДА
637 133002 005705 TST R5 ;БЫЛА ОШИБКА?
638 133004 001003 BNE .+10 ;ПЕРЕЙТИ, ЕСЛИ ДА
639 133006 005337 002004 DEC @#2004 ;ПРОЗВЕСТИ ЗАДЕРЖКУ ДЛЯ ЗАВЕРШЕНИЯ ПЕРЕДАЧИ ДАННЫХ
640 133012 001367 BNE 132772 ;В РЕЖИМЕ ПРЕРЫВАНИЙ
641 133014 005037 173310 CLR @#173310 ;РАЗРЕШИТЬ НОРМАЛЬНЫЙ РЕЖИМ РАБОТЫ КОММУНИКАЦИОННОГО
642     ;ИНТЕРФЕЙСА
643 133020 012737 000340 177776 MOV #340,@#177776 ;УСТАНОВИТЬ ПРИОРИТЕТ ЦП=7
644 133026 104003 EMT+3 ;ЗАПРЕТИТЬ ПРЕРЫВАНИИЕ ОТ КОММУНИКАЦИОННОГО ИНТЕРФЕЙСА
645 133030 005737 002004 TST @#2004 ;СЧЕТЧИК =0?
646 133034 001002 BNE .+6 ;ПЕРЕЙТИ, ЕСЛИ НЕТ
647 133036 012705 000012 MOV #12,R5 ;ОШИБКА 12.НЕТ ПРЕРЫВАНИЯ ОТ КОММУНИКАЦИОННОГО ИНТЕРФЕЙСА
648     ;ИЛИ ОШИБКА СКОРОСТИ ОБМЕНА
649 133042 012737 000030 173302 MOV #30,@#173302 ;ПРОИЗВЕСТИ ИНИЦИАЛИЗАЦИЮ РЕГИСТРОВ В КАНАЛЕ А
650 133050 012737 000030 173306 MOV #30,@#173306 ;И В КАНАЛЕ Б
651 133056 010564 177654 MOV R5,177654(R4) ;ЗАПИСАТЬ В ТАБЛИЦУ КОНФИГУРАЦИИ ПВК КОД ОШИБКИ ИЛИ 0,
652     ;ЕСЛИ ОШИБОК НЕТ
653 133062 012605 MOV (SP)+,R5
654 133064 000207 RTS PC
655    
656     ;ПОДПРОГРАММА ОБСЛУЖИВАНИЯ ПРЕРЫВАНИЯ С АДРЕСОМ ВЕКТОРА 000004
657    
658 133066 012705 000013 MOV #13,R5 ;ОШИБКА 13. НЕТ ОТВЕТА ОТ ОДНОГО ИЗ РЕГИСТРОВ
659     ;КОММУНИКАЦИОННОГО ИНТЕРФЕЙСА
660 133072 012716 132772 MOV #132772,@SP ;СФОРМИРОВАТЬ АДРЕС ВЫХОДА ИЗ ПРЕРЫВАНИЯ
661 133076 012766 000340 000002 MOV #340,2(SP)
662 133104 000002 RTI ;ВЫХОД ИЗ ПРЕРЫВАНИЯ
663    
664     ;ПОДПРОГРАММА ОБСЛУЖИВАНИЯ ПРЕРЫВАНИЯ С АДРЕСОМ ВЕКТОРА 000210
665    
666 133106 000240 NOP
667 133110 000240 NOP
668 133112 012737 000002 173306 MOV #2,@#173306 ;ВЫБРАТЬ НОМЕР РЧ=2 В КАНАЛЕ Б
669 133120 013700 173306 MOV @#173306,R0 ;ВЫБРАТЬ СОДЕРЖИМОЕ РЧ2
670 133124 006200 ASR R0
671 133126 042700 177761 BIC #177761,R0
672 133132 000170 133136 JMP @133136(R0) ;ПЕРЕЙТИ НА ПОДПРОГРАММУ
673    
674     ;АДРЕСА ПОДПРОГРАММ
675     ;ПОДПРОГРАММЫ С УКАЗАННЫМИ АДРЕСАМИ ВЫПОЛНЯЮТСЯ ПРИ СЛЕДУЮЩЕМ
676     ;СОДЕРЖИМОМ РЧ2 КАНАЛА Б:
677 133136 133272 133272 ;ПРИ РЧ2=0
678 133140 133272 133272 ;ПРИ РЧ2=4
679 133142 133272 133272 ;ПРИ РЧ2=10
680 133144 133272 133272 ;ПРИ РЧ2=14
681 133146 133156 133156 ;ПРИ РЧ2=20
682 133150 133212 133212 ;ПРИ РЧ2=24
683 133152 133220 133220 ;ПРИ РЧ2=30
684 133154 133244 133244 ;ПРИ РЧ2=34
685    
686     ;ПОДПРОГРАММА ЗАГРУЗКИ ДАННЫХ В БУФЕР КАНАЛА А
687 133156 032737 000400 002000 BIT #400,@#2000 ;ВСЕ ДАННЫЕ ПЕРЕДАНЫ?
688 133164 001404 BEQ 133176 ;ПЕРЕЙТИ, ЕСЛИ НЕТ
689 133166 012737 000050 173302 MOV #50,@#173302 ;ЗАПРЕТИТЬ ПРЕРЫВАНИЯ
690 133174 000440 BR 133276
691 133176 113737 002000 173300 MOVB @#2000,@#173300 ;ЗАГРУЗИТЬ КОД В БУФЕР
692 133204 005237 002000 INC @#2000 ;ПОЛУЧИТЬ СЛЕДУЮЩИЙ КОД
693 133210 000432 BR 133276
694    
695    
696 133212 012705 000014 MOV #14,R5 ;ОШИБКА 14. СОДЕРЖИМОЕ РЧ2=24
697 133216 000427 BR 133276
698    
699     ;ПОДПРОГРАММА СЧИТЫВАНИЯ ДАННЫХ ИЗ БУФЕРА КАНАЛА А
700 133220 013700 173300 MOV @#173300,R0 ;СЧИТАТЬ ВХОДНОЙ БУФЕР КАНАЛА А
701 133224 123700 002002 CMPB @#2002,R0 ;ПЕРЕДАВАЕМЫЕ ДАННЫЕ =ПРИНИМАЕМЫМ?
702 133230 001402 BEQ .+6 ;ПЕРЕЙТИ, ЕСЛИ ДА
703 133232 012705 000015 MOV #15,R5 ;ОШИБКА 15. НЕСОВПАДЕНИЕ ДАННЫХ
704 133236 005237 002002 INC @#2002 ;ПОЛУЧИТЬ СЛЕДУЮЩИЙ ОЖИДАЕМЫЙ КОД
705 133242 000415 BR 133276
706    
707    
708 133244 012705 000016 MOV #16,R5 ;ОШИБКА 16. ОШИБКА ПЕРЕПОЛНЕНИЯ ИЛИ ОШИБКА
709     ;СТОПОВОГО БИТА
710 133250 012737 000001 173302 MOV #1,@#173302 ;ВЫБРАТЬ НОМЕР РЧ=1
711 133256 013701 173302 MOV @#173302,R1 ;СЧИТАТЬ РАЗРЯДЫ ОШИБОК
712 133262 012737 000060 173302 MOV #60,@#173302 ;ОЧИСТИТЬ РАЗРЯДЫ ОШИБОК
713 133270 000402 BR .+6
714    
715    
716 133272 012705 000017 MOV #17,R5 ;ОШИБКА 17.СОДЕРЖИМОЕ РЧ2=0, 4, 10 ИЛИ 14
717 133276 012737 000070 173302 MOV #70,@#173302 ;ПРОИЗВЕСТИ СБРОС ПРЕРЫВАНИЯ С НАИВЫСШИМ
718     ;ПРИОРИТЕТОМ
719 133304 000002 RTI ;ВЫХОД ИЗ ПРЕРЫВАНИЯ
720    
721     ;***********************************************************************
722     ;
723     ;ПОДПРОГРАММА ПРОВЕРКИ ТАЙМЕРА 724 ;
725     ;***********************************************************************
726    
727 133306 012764 000023 177652 MOV #23,177652(R4) ;ЗАПИСАТЬ ИДЕНТИФИКАЦИОННЫЙ КОД ТАЙМЕРА В ТАБЛИЦУ
728     ;КОНФИГУРАЦИИ ПВК
729 133314 012737 133606 000004 MOV #133606,@#4 ;СФОРМИРОВАТЬ ВЕКТОР С АДРЕСОМ 000004
730 133322 012737 000340 000006 MOV #340,@#6
731 133330 105737 173032 TSTB @#173032 ;ОЗУ ТАЙМЕРА СОХРАНЯЕТ ИНФОРМАЦИЮ ПОСЛЕ
732     ;ВЫКЛЮЧЕНИЯ ОСНОВНОГО ПИТАНИЯ?
733 133334 100412 BMI 133362 ;ПЕРЕЙТИ, ЕСЛИ ДА
734 133336 012764 000400 177650 MOV #400,177650(R4)
735 133344 012764 000400 177644 MOV #400,177644(R4)
736 133352 052737 000200 173026 BIS #200,@#173026 ;ЗАПРЕТИТЬ ХОД ЧАСОВ
737 133360 000404 BR 133372
738 133362 005064 177644 CLR 177644(R4)
739 133366 005064 177650 CLR 177650(R4)
740 133372 012737 000340 177776 MOV #340,@#177776 ;УСТАНОВИТЬ ПРИОРИТЕТ ЦП=7
741 133400 012737 133510 000230 MOV #133510,@#230 ;СФОРМИРОВАТЬ ВЕКТОР ПРЕРЫВАНИЯ ОТ ТАЙМЕРА
742 133406 012737 000340 000232 MOV #340,@#232
743 133414 012737 000047 173024 MOV #47,@#173024 ;ЗАДАТЬ ЧАСТОТУ ПРЕРЫВАНИЙ - 512 ГЦ
744 133422 012701 000007 MOV #7,R1
745 133426 104002 EMT+2 ;РАЗРЕШИТЬ ПРЕРЫВАНИЕ ОТ ТАЙМЕРА
746 133430 005737 173030 TST @#173030 ;ОЧИСТИТЬ ФЛАГИ ТРЕБОВАНИЯ ПРЕРЫВАНИЙ
747 133434 052737 000100 173026 BIS #100,@#173026 ;РАЗРЕШИТЬ ПЕРИОДИЧЕСКИЕ ПРЕРЫВАНИЯ ОТ ТАЙМЕРА
748 133442 005037 177776 CLR @#177776 ;УСТАНОВИТЬ ПРИОРИТЕТ ЦП =0
749     ;ДОЛЖНО ПРОИЗОЙТИ ПЕРВОЕ ПРЕРЫВАНИЕ ОТ ТАЙМЕРА
750 133446 005000 CLR R0
751 133450 005002 CLR R2
752 133452 077001 SOB R0,.+0
753 133454 012764 000020 177650 MOV #20,177650(R4) ;ОШИБКА 20. НЕТ ПРЕРЫВАНИЯ ОТ ТАЙМЕРА
754 133462 012737 000340 177776 MOV #340,@#177776 ;УСТАНОВИТЬ ПРИОРИТЕТ ЦП =7
755 133470 104003 EMT+3 ;ЗАПРЕТИТЬ ПРЕРЫВАНИЕ ОТ ТАЙМЕРА
756 133472 042737 000017 173024 BIC #17,@#173024
757 133500 042737 000100 173026 BIC #100,@#173026 ;ЗАПРЕТИТЬ ПЕРИОДИЧЕСКИЕ ПРЕРЫВАНИЯ ОТ ТАЙМЕРА
758 133506 000207 RTS PC ;ВЫХОД ИЗ ПОДПРОГРАММЫ ПРОВЕРКИ ТАЙМЕРА
759    
760     ;ПОДПРОГРАММА ОБСЛУЖИВАНИЯ ПЕРВОГО И ВТОРОГО ПЕРИОДИЧЕСКИХ
761     ;ПРЕРЫВАНИЙ ОТ ТАЙМЕРА
762 133510 005737 173030 TST @#173030 ;ОЧИСТИТЬ ФЛАГИ ТРЕБОВАНИЯ ПРЕРЫВАНИЙ
763 133514 005702 TST R2 ;ПЕРВОЕ ПРЕРЫВАНИЕ?
764 133516 001406 BEQ 133534 ;ПЕРЕЙТИ, ЕСЛИ ДА
765 133520 012716 133540 MOV #133540,@SP ;СФОРМИРОВАТЬ АДРЕС ВЫХОДА ИЗ ПРЕРЫВАНИЯ
766 133524 005000 CLR R0 ;ОЧИСТИТЬ СЧЕТЧИК ВЫПОЛНЕНИЙ КОМАНДЫ SOB
767 133526 012737 133544 000230 MOV #133544,@#230 ;СФОРМИРОВАТЬ ВЕКТОР С АДРЕСОМ 000230
768 133534 005202 INC R2 ;УВЕЛИЧИТЬ СЧЕТЧИК ПРЕРЫВАНИЙ
769 133536 000002 RTI ;ВЫХОД ИЗ ПРЕРЫВАНИЯ
770    
771 133540 077001 SOB R0,.+0 ;СОСЧИТАТЬ КОЛИЧЕСТВО ВЫПОЛНЕНИЙ КОМАНДЫ SOB
772     ;МЕЖДУ 2-М И 3-М ПЕРИОДИЧЕСКИМИ ПРЕРЫВАНИЯМИ
773     ;(ДОЛЖНО ПРОИЗОЙТИ ТРЕТЬЕ ПРЕРЫВАНИЕ ОТ ТАЙМЕРА)
774 133542 000744 BR 133454 ;ПЕРЕЙТИ НА ОШИБКУ, ЕСЛИ ПРЕРЫВАНИЕ НЕ ПРОИЗОШЛО
775    
776     ;ПОДПРОГРАММА ОБСЛУЖИВАНИЯ ТРЕТЬЕГО ПРЕРЫВАНИЯ ОТ ТАЙМЕРА
777 133544 005737 173030 TST @#173030 ;ОЧИСТИТЬ ФЛАГИ ТРЕБОВАНИЯ ПРЕРЫВАНИЙ
778 133550 062706 000004 ADD #4,SP
779 133554 022700 176500 CMP #176500,R0 ;КОМАНДА SOB ВЫПОЛНИЛАСЬ МЕНЬШЕ 300 РАЗ?
780 133560 002006 BGE 133576 ;ПЕРЕЙТИ НА ОШИБКУ, ЕСЛИ НЕТ
781 133562 022700 176700 CMP #176700,R0 ;КОМАНДА SOB ВЫПОЛНИЛАСЬ БОЛЬШЕ 100 РАЗ?
782 133566 003403 BLE .+10 ;ПЕРЕЙТИ НА ОШИБКУ, ЕСЛИ НЕТ
783 133570 105064 177650 CLRB 177650(R4) ;ЗАПИСАТЬ В ТАБЛИЦУ КОНФИГУРАЦИИ ПВК ПРИЗНАК ОТСУТСТВИЯ
784     ;ОШИБОК
785 133574 000732 BR 133462
786 133576 012764 000021 177650 MOV #21,177650(R4) ;ОИШБКА 21. ОШИБКА ЧАСТОТЫ ПЕРИОДИЧЕСКИХ ПРЕРЫВАНИЙ
787     ;ОТ ТАЙМЕРА
788 133604 000726 BR 133462
789    
790     ;ПОДПРОГРАММА ОБСЛУЖИВАНИЯ ПРЕРЫВАНИЯ С АДРЕСОМ ВЕКТОРА 000004
791 133606 012764 000025 177650 MOV #25,177650(R4) ;ОШИБКА 25. НЕТ ОТВЕТА ОТ ОДНОГО ИЗ РЕГИСТРОВ
792     ;ТАЙМЕРА
793 133614 012626 MOV (SP)+,(SP)+
794 133616 000207 RTS PC
795    
796     ;***********************************************************************
797     ;
798     ;ПОДПРОГРАММА ПРОВЕРКИ ОЗУ ТАЙМЕРА
799     ;
800     ;***********************************************************************
801    
802 133620 012764 000024 177646 MOV #24,177646(R4) ;ЗАПИСАТЬ В ТАБЛИЦУ КОНФИГУРАЦИИ ПВК ИДЕНТИФИКАЦИОННЫЙ
803     ;КОД ОЗЙ ТАЙМЕРА
804 133626 012737 133704 000004 MOV #133704,@#4 ;СФОРМИРОВАТЬ ВЕКТОР С АДРЕСОМ 000004
805 133634 012737 000340 000006 MOV #340,@#6
806 133642 105064 177644 CLRB 177644(R4)
807 133646 112737 000125 173050 MOVB #125,@#173050 ;ЗАПИСАТЬ КОД В ОЗУ ТАЙМЕРА
808 133654 105137 173050 COMB @#173050 ;ИНВЕРТИРОВАТЬ СОДЕРЖИМОЕ БАЙТА
809 133660 105137 173050 COMB @#173050 ;ИНВЕРТИРОВАТЬ СОДЕРЖИМОЕ БАЙТА
810 133664 122737 000125 173050 CMPB #125,@#173050 ;ДАННЫЕ СОВПАДАЮТ?
811 133672 001403 BEQ .+10 ;ПЕРЕЙТИ, ЕСЛИ ДА
812 133674 012764 000023 177644 MOV #23,177644(R4) ;ОШИБКА 23. НЕСОВПАДЕНИЕ ЗАПИСАННЫХ И СЧИТАННЫХ ДАННЫХ
813 133702 000207 RTS PC
814    
815     ;ПОДПРОГРАММА ОБСЛУЖИВАНИЯ ПРЕРЫВАНИЯ С АДРЕСОМ ВЕКТОРА 000004
816 133704 012764 000022 177644 MOV #22,177644(R4) ;ОШИБКА 22. НЕТ ОТВЕТА ОТ АДРЕСА 173050
817 133712 012626 MOV (SP)+,(SP)+
818 133714 000207 RTS PC
819    
820    
821     ;***********************************************************************
822     ;
823     ; ПРОВЕРКА АДАПТЕРА ПЛАВАЮЩЕЙ ЗАПЯТОЙ (АДАПТЕР ПЗ)
824     ;
825     ; РСП - РЕГИСТР СОСТОЯНИЯ ПРОЦЕССОРА
826     ; РСПЗ - РЕГИСТР СОСТОЯНИЯ АДАПТЕРА ПЗ
827     ;***********************************************************************
828    
829 000000   AC0=R0
830 000001   AC1=R1
831 000002   AC2=R2
832 000003   AC3=R3
833 000004   AC4=R4
834 000005   AC5=R5
835 133716   .=133716
836 133716 012737 134752 000010 MОV #134752,@#10 ;ПРИ ОТСУТСТВИИ АДАПТЕРА ПЗ - ОБРАБОТКА
837 133724 012737 000340 000012 MOV #340,@#12 ;ПРЕРЫВАНИЯ ПО РЕЗЕРВНОЙ КОМАНДЕ
838 133732 170537 134762 TSTF @#134762
839 133736 012764 000012 177642 MOV #12,177642(R4) ;ПРИ НАЛИЧИИ АДАПТЕРА ПЗ ЗАПИСАТЬ В ТАБЛИЦУ
840     ;КОНФИГУРАЦИИ ПВК ЕГО ИДЕНТИФИКАЦТОННЫЙ КОД
841 133744 010446 MOV R4,-(SP)
842 133746 005037 002036 CLR @#2036
843 133752 012737 134744 000244 MOV #134744,@#244
844 133760 012737 000005 000246 MOV #5,@#246
845 133766 170127 007400 LDFPS #7400 ;ЗАПИСАТЬ #7400 В РСПЗ
846     ;РАЗРЕШЕНЫ ПРЕРЫВАНИЯ:
847     ;-ПО НЕОПРЕДЕЛЕННОМУ ОПЕРАНДУ
848     ;-ПО АНТИПЕРЕПОЛНЕНИЮ
849     ;-ПО ПЕРЕПОЛНЕНИЮ
850     ;-ПО ОШИБКЕ ПРЕОБРАЗОВАНИЯ В ЦЕЛОЕ ЧИСЛО
851 133772 170011 SETD ;УСТАНОВИТЬ РЕЖИМ ПЗ С ДВОЙНОЙ ТОЧНОСТЬЮ
852 133774 177027 077777 LDCID #77777,AC0 ;ПРЕОБРАЗОВАТЬ ЦЕЛОЕ ЧИСЛО В ПЛАВАЮЩЕЕ С ДВ. ТОЧНОСТЬЮ
853     ;И ЗАГРУЗИТЬ В АС0
854 134000 177127 002525 LDCID #2525,AC1
855 134004 174401 DIVD AC1,AC0
856 134006 171001 MULD AC1,AC0
857 134010 172001 ADDD AC1,AC0
858 134012 173001 SUBD AC1,AC0
859 134014 175437 002014 STCDI AC0,@#2014 ;ЗАПИСАТЬ В ПАМЯТЬ И ПРЕОБРАЗОВАТЬ В ЦЕЛОЕ ЧИСЛО
860 134020 170200 STFPS R0 ;СЧИТАТЬ В R0 СОДЕРЖИМОЕ РСПЗ
861 134022 022737 077777 002014 CMP #77777,@#2014 ;ДАННЫЕ СОВПАДАЮТ?
862 134030 001403 BEQ .+10 ;ПЕРЕЙТИ, ЕСЛИ ДА
863 134032 004737 134730 JSR PC,@#134730 ;ОШИБКА 27. ОШИБКА ВЫПОЛНЕНИЯ АРИФМЕТИЧЕСКИХ КОМАНД
864 134036 000027 27
865    
866 134040 172437 LDD @(PC)+,AC0 ;ЗАГРУЗИТЬ ЧИСЛО С ДВОЙНОЙ ТОЧНОСТЬЮ В АС0
867 134042 134772 134772
868 134044 012702 002014 MOV #2014,R2
869 134050 174022 STD AC0,(R2)+ ;ЗАПИСАТЬ В ПАМЯТЬ ЧИСЛО С ДВОЙНОЙ ТОЧНОСТЬЮ ИЗ АС0
870 134052 172537 LDD @(PC)+,AC1
871 134054 134772 134772
872 134056 174122 STD AC1,(R2)+
873 134060 172737 LDD @(PC)+,AC3
874 134062 002024 2024
875 134064 170200 STFPS R0 ;СЧИТАТЬ В R0 СОДЕРЖИМОЕ РСПЗ
876 134066 173737 CMPD @(PC)+,AC3 ;ДАННЫЕ СОВПАДАЮТ?
877 134070 002014 2014
878 134072 170000 CFCC ;СКОПИРОВАТЬ ПРИЗНАКИ АДАПТЕРА ПЗ В РСП
879 134074 001403 BEQ .+10 ;ПЕРЕЙТИ, ЕСЛИ ДА
880 134076 004737 134730 JSR PC,@#134730 ;ОШИБКА 30. ОШИБКА ВЫПОЛНЕНИЯ КОМАНДЫ STD
881 134102 000030 30
882    
883 134104 172537 LDD @(PC)+,AC1 ;ЗАГРУЗИТЬ 0 В АС1
884 134106 134774 134774
885 134110 174142 STD AC1,-(R2) ;ЗАПИСАТЬ В ПАМЯТЬ ЧИСЛО С ПЗ ИЗ АС1
886 134112 172012 ADDD @R2,AC0
887 134114 173042 SUBD -(R2),AC0
888 134116 173001 SUBD AC1,AC0
889 134120 175437 002014 STCDI AC0,@#2014 ;ПРЕОБРАЗОВАТЬ ЧИСЛО С ДВ.ТОЧНОСТЬЮ В КОРОТКОЕ ЦЕЛОЕ И ЗАПИСАТЬ В ПАМЯТЬ
890 134124 022737 000000 002014 CMP #0,@#2014 ;ДАННЫЕ СОВПАДАЮТ?
891 134132 170200 STFPS R0 ;СЧИТАТЬ В R0 СОДЕРЖИМОЕ РСПЗ
892 134134 001403 BEQ .+10 ;ПЕРЕЙТИ, ЕСЛИ ДА
893 134136 004737 134730 JSR PC,@#134730 ;ОШИБКА 31. ОШИБКА ВЫПОЛНЕНИЯ КОМАНДЫ STCDI
894 134142 000031 31
895    
896 134144 170001 SETF ;УСТАНОВИТЬ РЕЖИМ ПЗ С ОБЫЧНОЙ ТОЧНОСТЬЮ
897 134146 177027 000525 LDCIF #525,AC0 ;ПРЕОБРАЗОВАТЬ ЦЕЛОЕ ЧИСЛО В ПЛАВАЮЩЕЕ С ОБ. ТОЧНОСТЬЮ
898     ;И ЗАГРУЗИТЬ В АС0
899 134152 177127 000252 LDCIF #252,AC1
900 134156 174104 STD AC1,AC4 ;СОХРАНИТЬ ЧИСЛО С ПЗ В АС4
901 134160 172104 ADDF AC4,AC1
902 134162 172701 LDF AC1,AC3
903 134164 173003 SUBF AC3,AC0
904 134166 175037 002014 STEXP AC0,@#2014 ;СОХРАНИТЬ EXP В ЯЧЕЙКЕ 2014
905 134172 170200 STFPS R0 ;СЧИТАТЬ В R0 СОДЕРЖИМОЕ РСПЗ
906 134174 022737 000001 002014 CMP #1,@#2014 ;ДАННЫЕ СОВПАДАЮТ?
907 134202 001403 BEQ .+10 ;ПЕРЕЙТИ, ЕСЛИ ДА
908 134204 004737 134730 JSR PC,@#134730 ;ОШИБКА 32. ОШИБКА ВЫПОЛНЕНИЯ КОМАНДЫ STEXP ПОСЛЕ
909 134210 000032 32 ;ВЫПОЛНЕНИЯ КОМАНД ADDF, LDF И SUBF
910    
911 134212 177027 000021 LDCIF #21,AC0 ;ПРЕОБРАЗОВАТЬ ЦЕЛОЕ ЧИСЛО В ПЛАВАЮЩЕЕ С ОБ. ТОЧНОСТЬЮ
912     ;И ЗАГРУЗИТЬ В АС0
913 134216 171000 MULF AC0,AC0
914 134220 174427 DIVF (PC)+,AC0
915 134222 040400 40400
916 134224 171427 MODF (PC)+,AC0 ;УМНОЖИТЬ И ВЫДЕЛИТЬ ЦЕЛУЮ ЧАСТЬ
917 134226 040200 40200
918 134230 170200 STFPS R0 ;СЧИТАТЬ В R0 СОДЕРЖИМОЕ РСПЗ
919 134232 175537 002014 STCFI AC1,@#2014 ;ПРЕОБРАЗОВАТЬ ЧИСЛО С ПЗ В ЦЕЛОЕ КОРОТКОЕ
920     ;И ЗАПИСАТЬ В ЯЧЕЙКУ 2014
921 134236 022737 000220 002014 CMP #220,@#2014 ;ДАННЫЕ СОВПАДАЮТ?
922 134244 001403 BEQ .+10 ;ПЕРЕЙТИ, ЕСЛИ ДА
923 134246 004737 134730 JSR PC,@#134730 ;ОШИБКА 33. ОШИБКА ВЫПОЛНЕНИЯ КОМАНДЫ MODF,
924 134252 000033 33 ;КОГДА ОБА ОПЕРАНДА >; 1
925    
926 134254 171427 MODF (PC)+,AC0 ;УМНОЖИТЬ И ВЫДЕЛИТЬ ЦЕЛУЮ ЧАСТЬ
927 134256 041040 41040
928 134260 175537 002014 STCFI AC1,@#2014 ;ПРЕОБРАЗОВАТЬ ЧИСЛО С ПЗ В ЦЕЛОЕ КОРОТКОЕ
929     ;И ЗАПИСАТЬ В ЯЧЕЙКУ 2014
930 134264 022737 000005 002014 CMP #5,@#2014 ;ДАННЫЕ СОВПАДАЮТ?
931 134272 001403 BEQ .+10 ;ПЕРЕЙТИ, ЕСЛИ ДА
932 134274 004737 134730 JSR PC,@#134730 ;ОШИБКА 34. ОШИБКА ВЫПОЛНЕНИЯ КОМАНДЫ MODF,
933 134300 000034 34 ;КОГДА ОПЕРАНД ИСТ. >; 1, 0 <; ОПЕРАНД ПР. <; 1
934    
935 134302 012704 007400 MOV #7400,R4 ;УСТАНОВИТЬ РЕЖИМ ОБ. ТОЧНОСТИ
936 134306 170104 LDFPS R4 ;КОРОТКОГО СЛОВА
937 134310 172537 LDF @(PC)+,AC1 ;ЗАГРУЗИТЬ ЧИСЛО В АС1
938 134312 134756 134756
939 134314 170601 ABSF AC1 ;ПОЛУЧИТЬ АБСОЛЮТНУЮ ВЕЛИЧИНУ ЧИСЛА
940 134316 174137 002000 STF AC1,@#2000 ;В ЯЧЕЙКЕ 002000
941 134322 005737 002000 TST @#2000
942 134326 003003 BGT .+10
943 134330 004737 134730 JSR PC,@#134730 ;ОШИБКА 35. ОШИБКА ВЫПОЛНЕНИЯ КОМАНДЫ ABSF
944 134334 000035 35
945    
946 134336 172537 LDF @(PC)+,AC1 ;ЗАГРУЗИТЬ ЧИСЛО В АС1
947 134340 002000 2000
948 134342 170701 NEGF AC1 ;ИЗМЕНИТЬ ЗНАК ЧИСЛА
949 134344 174137 002000 STF AC1,@#2000
950 134350 005737 002000 TST @#2000
951 134354 002403 BLT .+10
952 134356 004737 134730 JSR PC,@#134730 ;ОШИБКА 36. ОШИБКА ВЫПОЛНЕНИЯ КОМАНДЫ NEGF
953 134362 000036 36
954    
955 134364 012704 007600 MOV #7600,R4 ;УСТАНОВИТЬ РЕЖИМ ДВ. ТОЧНОСТИ
956 134370 170104 LDFPS R4 ;
957 134372 172737 LDF @(PC)+,AC3 ;ЗАГРУЗИТЬ ЧИСЛО В АС3
958 134374 134762 134762
959 134376 170603 ABSD AC3 ;ПОЛУЧИТЬ АБСОЛЮТНУЮ ВЕЛИЧИНУ ЧИСЛА
960 134400 174337 002004 STD AC3,@#2004 ;В ЯЧЕЙКЕ 002004
961 134404 005737 002004 TST @#2004
962 134410 003003 BGT .+10
963 134412 004737 134730 JSR PC,@#134730 ;ОШИБКА 37. ОШИБКА ВЫПОЛНЕНИЯ КОМАНДЫ ABSD
964 134416 000037 37
965    
966 134420 172737 LDD @(PC)+,AC3 ;ЗАГРУЗИТЬ ЧИСЛО В АС3
967 134422 002004 2004
968 134424 170703 NEGD AC3 ;ИЗМЕНИТЬ ЗНАК ЧИСЛА
969 134426 174337 002004 STD AC3,@#2004 ;В ЯЧЕЙКЕ 002004
970 134432 005737 002004 TST @#2004
971 134436 002403 BLT .+10
972 134440 004737 134730 JSR PC,@#134730 ;ОШИБКА 40. ОШИБКА ВЫПОЛНЕНИЯ КОМАНДЫ NEGD
973 134444 000040 40
974    
975 134446 170001 SETF ;УСТАНОВИТЬ РЕЖИМ ОБ. ТОЧНОСТИ
976 134450 170204 STFPS R4 ;СЧИТАТЬ В R4 СОДЕРЖИМОЕ РСПЗ
977 134452 032704 000200 BIT #200,R4 ;ДВОЙНАЯ ТОЧНОСТЬ?
978 134456 001403 BEQ .+10 ;ПЕРЕЙТИ, ЕСЛИ ДА
979 134460 004737 134730 JSR PC,@#134730 ;ОШИБКА 41. ОШИБКА ВЫПОЛНЕНИЯ КОМАНДЫ SETF
980 134464 000041 41
981    
982 134466 170011 SETD ;УСТАНОВИТЬ РЕЖИМ ДВ. ТОЧНОСТИ
983 134470 170012 SETL ;УСТАНОВИТЬ ФОРМАТ ДЛИНОГО ЦЕЛОГО ЧИСЛА
984 134472 170204 STFPS R4 ;СЧИТАТЬ В R4 СОДЕРЖИМОЕ РСПЗ
985 134474 032704 000100 BIT #100,R4 ;ДЛИННЫЙ ФОРМАТ ЦЕЛЫХ ЧИСЕЛ?
986 134500 001003 BNE .+10 ;ПЕРЕЙТИ, ЕСЛИ ДА
987 134502 004737 134730 JSR PC,@#134730 ;ОШИБКА 42. ОШИБКА ВЫПОЛНЕНИЯ КОМАНДЫ SETL
988 134506 000042 42
989    
990 134510 170002 SETI ;УСТАНОВИТЬ ФОРМАТ КОРОТКОГО ЦЕЛОГО ЧИСЛА
991 134512 170204 STFPS R4 ;СЧИТАТЬ В R4 СОДЕРЖИМОЕ РСПЗ
992 134514 032704 000100 BIT #100,R4 ;КОРОТКИЙ ФОРМАТ ЦЕЛЫХ ЧИСЕЛ?
993 134520 001403 BEQ .+10 ;ПЕРЕЙТИ, ЕСЛИ ДА
994 134522 004737 134730 JSR PC,@#134730 ;ОШИБКА 43. ОШИБКА ВЫПОЛНЕНИЯ КОМАНДЫ SETI
995 134526 000043 43
996    
997 134530 170000 CFCC ;СКОПИРОВАТЬ ПРИЗНАКИ АДАПТЕРА ПЗ В РСП
998 134532 170537 TSTD @(PC)+
999 134534 134762 134762
1000 134536 002403 BLT .+10
1001 134540 004737 134730 JSR PC,@#134730 ;ОШИБКА 44. ОШИБКА ВЫПОЛНЕНИЯ КОМАНДЫ CFCC
1002 134544 000044 44
1003    
1004 134546 177737 LDCDF @(PC)+,AC3
1005 134550 134762 134762
1006 134552 005037 002004 CLR @#2004
1007 134556 005037 002006 CLR @#2006
1008 134562 005037 002010 CLR @#2010
1009 134566 005037 002012 CLR @#2012
1010 134572 176337 002004 STCDF AC3,@#2004
1011 134576 023737 002004 134762 CMP @#2004,@#134762
1012 134604 001012 BNE 1$
1013 134606 023737 002006 134764 CMP @#2006,@#134764
1014 134614 001006 BNE 1$
1015 134616 005737 002010 TST @#2010
1016 134622 001003 BNE 1$
1017 134624 005737 002012 TST @#2012
1018 134630 001403 BEQ .+10
1019 134632 004737 134730 1$: JSR PC,@#134730 ;ОШИБКА 45. ОШИБКА ВЫПОЛНЕНИЯ КОМАНД LDCDF И STCDF
1020 134636 000045 45
1021    
1022 134640 170437 002004 CLRD @#2004
1023 134644 005737 002004 TST @#2004
1024 134650 001003 BNE .+10
1025 134652 005737 002006 TST @#2006
1026 134656 001403 BEQ .+10
1027 134660 004737 134730 JSR PC,@#134730 ;ОШИБКА 46. ОШИБКА ВЫПОЛНЕНИЯ КОМАНДЫ CLRD
1028 134664 000046 46
1029    
1030 134666 005737 002036 TST @#2036 ;БЫЛИ НЕПРЕДУСМОТРЕННЫЕ ПРЕРЫВАНИЯ?
1031 134672 001403 BEQ .+10 ;ПЕРЕЙТИ, ЕСЛИ НЕТ
1032 134674 004737 134730 JSR PC,@#134730 ;ОШИБКА 47. ПРОИЗОШЛО ОДНО ИЗ НЕПРЕДУСМОТРЕННЫХ
1033 134700 000047 47 ;ПРЕРЫВАНИЙ С АДРЕСОМ ВЕКТОРА 000244
1034    
1035 134702 170010 170010 ;РЕЗЕРВНАЯ КОМАНДА 170010
1036     ;ДОЛЖНО ПРОИЗОЙТИ ПРЕРЫВАНИЕ С АДРЕСОМ ВЕКТОРА
1037     ;000244
1038 134704 000240 NOP
1039 134706 005737 002036 TST @#2036 ;ПРОИЗОШЛО ПРЕРЫВАНИЕ ПО РЕЗЕРВНОЙ КОМАНДЕ?
1040 134712 001003 BNE .+10 ;ПЕРЕЙТИ, ЕСЛИ ДА
1041 134714 004737 134730 JSR PC,@#134730 ;ОШИБКА 50. НЕТ ПРЕРЫВАНИЯ ПРИ ПОПЫТКЕ ВЫПОЛНИТЬ
1042 134720 000050 50 ;РЕЗЕРВНУЮ КОМАНДУ С КОДОМ 170010
1043    
1044 134722 004737 134730 JSR PC,@#134730 ;ПЕРЕЙТИ НА ПОДПРОГРАММУ ЗАВЕРШЕНИЯ ПРОВЕРКИ АДАПТЕРА ПЗ
1045 134726 000000 HALT ;ВЫХОД ИЗ ПРОГРАММЫ ПРОВЕРКИ АДАПТЕРА ПЗ
1046    
1047    
1048     ;ПОДПРОГРАММА ЗАВЕРШЕНИЯ ПРОВЕРКИ АДАПТЕРА ПЗ
1049    
1050 134730 016604 000002 MOV 2(SP),R4 ;ВЫБРАТЬ ВИРТ. АДР. ТАБЛИЦЫ КОНФИГУРАЦИИ ПВК
1051 134734 013664 177640 MOV @(SP)+,177640(R4) ;ЗАПИСАТЬ НОМЕР ОШИБКИ В ТАБЛИЦУ КОНФИГУРАЦИИ ПВК
1052 134740 005716 TST (SP) ;ОЧИСТИТЬ СТЕК
1053 134742 000207 RTS PC ;ВЫЙТИ ИЗ ПОДПРОГРАММЫ ПРОВЕРКИ АДАПТЕРА ПЗ
1054    
1055    
1056    
1057     ;ПРОДПРОГРАММА ОБРАБОТКИ ПРЕРЫВАНИЯ С АДРЕСОМ ВЕКТОРА 000244
1058    
1059 134744 005237 002036 INC @#2036 ;УВЕЛИЧИТЬ СЧЕТЧИК ПРЕРЫВАНИЙ
1060 134750 000002 RTI
1061    
1062    
1063     ;ПОДПРОГРАММА ОБРАБТКИ ПРЕРЫВАНИЯ С АДРЕСОМ ВЕКТОРА 000004
1064     ;ПО РЕЗЕРВНОЙ КОМАНДЕ ПРИ ОТСУТСТВИИ ППЗ
1065    
1066 134752 022626 CMP (6)+,(6)+ ;ОЧИСТИТЬ СТЕК
1067 134754 000207 RTS PC ;ВЫХОД ИЗ ПОДПРОГРАММЫ
1068    
1069    
1070     ;ДАННЫЕ ДЛЯ ПРОВЕРКИ АДПЗ
1071 134756 141510 141510
1072 134760 000000 000000
1073 134762 140507 140507
1074 134764 157473 157473
1075 134766 062132 062132
1076 134770 016254 016254
1077 134772 177777 177777
1078 134774 000000 000000
1079 134776 177777 177777
1080 135000 000000 000000
1081 135002 177777 177777
1082 135004 000000 000000
1083 135006 000000 000000
1084 135010 177777 177777
1085 135012 000001 000001
1086 135014 000000 000000
1087 135016 177777 177777
1088 135020 134774 134774
1089 135022 135002 135002
1090 135024 135142 135142
1091 135026 077777 077777
1092 135030 000000 000000
1093 135032 177777 177777
1094 135034 000000 000000
1095 135036 100000 100000
1096 135040 000000 000000
1097 135042 000000 000000
1098 135044 000000 000000
1099 135046 002014 002014
1100 135050 040252 040252
1101 135052 125252 125252
1102 135054 125252 125252
1103 135056 125252 125252
1104 135060 040325 040325
1105 135062 052525 052525
1106 135064 052525 052525
1107 135066 052525 052525
1108 135070 040325 040325
1109 135072 052525 052525
1110 135074 052525 052525
1111 135076 052526 052526
1112 135100 040000 040000
1113 135102 000000 000000
1114 135104 000000 000000
1115 135106 000000 000000
1116 135110 037400 037400
1117 135112 000000 000000
1118 135114 000000 000000
1119 135116 000000 000000
1120 135120 040600 040600
1121 135122 000000 000000
1122 135124 000000 000000
1123 135126 000000 000000
1124 135130 020000 020000
1125 135132 000000 000000
1126 135134 000000 000000
1127 135136 000000 000000
1128 135140 000000 000000
1129 135142 177777 177777
1130 135144 000000 000000
1131 135146 000000 000000
1132 135150 000000 000000
1133 135152 000100 000100
1134 135154 000000 000000
1135 135156 000000 000000
1136 135160 000000 000000
1137 135162 177777 177777
1138 135164 177777 177777
1139 135166 177777 177777
1140 135170 000000 000000
1141 135172 054321 054321
1142 135174 135170 135170
1143 135176 043661 043661
1144 135200 121000 121000
1145 135202 000000 000000
1146 135204 000000 000000
1147 135206 177252 177252
1148 135210 177125 177125
1149 135212 177063 177063
1150 135214 177017 177017
1151    
1152    
1153     ;**********************************************************************
1154     ;
1155     ;ПОДПРОГРАММА ПРОВЕРКИ КОНТРОЛЛЕРА НГМД
1156     ;
1157     ;**********************************************************************
1158    
1159 135216 012737 000340 177776 MOV #340,@#177776 ;УСТАНОВИТЬ ПРИОРИТЕТ ЦП =7
1160 135224 010002 MOV R0,R2
1161 135226 072227 000007 ASH #7,R2
1162 135232 062702 174000 ADD #174000,R2 ;ПОЛУЧИТЬ АДРЕС КОНТРОЛЛЕРА НГМД
1163 135236 010003 MOV R0,R3
1164 135240 072327 000002 ASH #2,R3
1165 135244 005403 NEG R3
1166 135246 062703 117756 ADD #117756,R3 ;ПОЛУЧИТЬ АДРЕС ЯЧЕЙКИ В ТАБЛИЦЕ КОНФИГУРАЦИИ ПВК,
1167     ;СООТВЕТСТВУЮЩЕЙ КОНТРОЛЛЕРУ НГМД
1168 135252 010337 002002 MOV R3,@#2002
1169 135256 010446 MOV R4,-(SP)
1170 135260 010237 002000 MOV R2,@#2000 ;ВЫБРАТЬ АДРЕС КОНТРОЛЛЕРА НГМД
1171 135264 013702 002000 MOV @#2000,R2
1172 135270 005037 177650 CLR @#177650
1173 135274 000137 167612 JMP @#167612 ;ВЫПОЛНИТЬ ДОПОЛНИТЕЛЬНЫЙ МИКРО-ТЕСТ ДЛЯ
1174     ;КОНТРОЛЛЕРА И ПРИВОДА НГМД
1175 135300 072127 000003 ASH #3,R1
1176 135304 012761 135566 000300 MOV #135566,300(R1) ;СФОРМИРОВАТЬ ВЕКТОР ПРЕРЫВАНИЯ ПО ЗАВЕРШЕНИИ
1177 135312 012761 000340 000302 MOV #340,302(R1) ;ОПЕРАЦИИ
1178 135320 010001 MOV R0,R1
1179 135322 052701 000400 BIS #400,R1
1180 135326 104002 EMT+2 ;РАЗРЕШИТЬ ПРЕРЫВАНИЕ ПО ЗАВЕРШЕНИИ ОПЕРАЦИИ
1181 135330 005762 000024 TST 24(R2) ;ПРОИЗВЕСТИ ЗАПУСК КОМАНДЫ
1182 135334 005037 177776 CLR @#177776 ;УСТАНОВИТЬ ПРИОРИТЕТ ЦП=0
1183     ;ПО ЗАВЕРШЕНИИ ВЫПОЛНЕНИЯ ДОПОЛНИТЕЛЬНОГО МИКРО-
1184     ;ТЕСТА ДОЛЖНО ПРОИЗОЙТИ ПРЕРЫВАНИЕ
1185 135340 012704 000020 MOV #20,R4 ;ПРОИЗВЕСТИ ЗАДЕРЖКУ ДЛЯ ВЫПОЛНЕНИЯ МИКРО-
1186 135344 005001 CLR R1 ;ТЕСТА И ПРЕРЫВАНИЯ
1187 135346 005301 DEC R1
1188 135350 001376 BNE .-2
1189 135352 077404 SOB R4,.-6
1190 135354 012737 000340 177776 MOV #340,@#177776 ;УСТАНОВИТЬ ПРИОРИТЕТ ЦП=7
1191 135362 010001 MOV R0,R1
1192 135364 052701 000400 BIS #400,R1
1193 135370 104003 EMT+3 ;ЗАПРЕТИТЬ ПРЕРЫВАНИЕ ПО ЗАВЕРШЕНИИ ОПЕРАЦИИ
1194 135372 012777 000001 044402 MOV #1,@2002 ;ОШИБКА 1. НЕТ ПРЕРЫВАНИЯ ОТ КОНТРОЛЛЕРА НГМД
1195 135400 012604 MOV (SP)+,R4 ;ПО ЗАВЕРШЕНИИ ВЫПОЛНЕНИЯ ОПЕРАЦИИ
1196 135402 104000 EMT ;ВЫХОД ИЗ ПОДПРОГРАММЫ ПРОВЕРКИ КОНТРОЛЛЕРА НГМД
1197 135404 012737 000340 177776 MOV #340,@#177776 ;УТАНОВИТЬ ПРИОРИТЕТ ЦП=7
1198 135412 010001 MOV R0,R1
1199 135414 052701 000400 BIS #400,R1
1200 135420 104003 EMT+3 ;ЗАПРЕТИТЬ ПРЕРЫВАНИЕ ПО ЗАВЕРШЕНИИ ОПЕРАЦИИ
1201 135422 013702 002000 MOV @#2000,R2 ;ВЫБРАТЬ АДРЕС КОНТРОЛЛЕРА НГМД
1202 135426 032762 000200 000004 BIT #200,4(R2) ;ЕСТЬ ОШИБКИ?
1203 135434 001717 BEQ 135274 ;ПЕРЕЙТИ, ЕСЛИ НЕТ
1204 135436 022762 000120 000006 CMP #120,6(R2) ;ОШИБКА ГОТОВНОСТИ ПРИВОДА?
1205 135444 001713 BEQ 135274 ;ПЕРЕЙТИ, ЕСЛИ ДА
1206 135446 016277 000006 044326 MOV 6(R2),@2002 ;ЗАПИСАТЬ КОД ОШИБКИ, ГЕНЕРИРУЕМЫЙ МИКРО-ТЕСТОМ,
1207 135454 012604 MOV (SP)+,R4 ;В ТАБЛИЦУ КОНФИГУРАЦИИ ПВК
1208 135456 104000 EMT ;ВЫХОД ИЗ ПОДПРОГРАММЫ ПРОВЕРКИ КОНТРОЛЛЕРА НГМД
1209 135460 012704 000005 MOV #5,R4 ;ВЫБРАТЬ СЧЕТЧИК ОБРАЗЦОВ ДАННЫХ
1210 135464 012701 135206 MOV #135206,R1 ;ВЫБРАТЬ АДРЕС ПЕРВОГО ОБРАЗЦА
1211 135470 012703 001000 MOV #1000,R3 ;ЗАДАТЬ СЧЕТЧИК БАЙТОВ БУФЕРА КОНТРОЛЛЕРА НГМД
1212 135474 005062 000022 CLR 22(R2) ;УСТАНОВИТЬ УКАЗАТЕЛЬ НА НАЧАЛО БУФЕРА
1213 135500 111162 000020 MOVB @R1,20(R2) ;ЗАПИСАТЬ ОБРАЗЕЦ ВО ВСЕ БАЙТЫ БУФЕРА
1214 135504 077303 SOB R3,.-4
1215 135506 012703 001000 MOV #1000,R3 ;ЗАДАТЬ СЧЕТЧИК БАЙТОВ БУФЕРА
1216 135512 005062 000022 CLR 22(R2) ;УСТАНОВИТЬ УКАЗАТЕЛЬ НА НАЧАЛО БУФЕРА
1217 135516 121162 000020 CMPB @R1,20(R2) ;ДАННЫЕ СОВПАДАЮТ?
1218 135522 001014 BNE 135554 ;ПЕРЕЙТИ НА ОШИБКУ, ЕСЛИ НЕТ
1219 135524 077304 SOB R3,.-6 ;ПЕРЕЙТИ К ПРОВЕРКЕ СЛЕДУЮЩЕГО БАЙТА БУФЕРА
1220 135526 005721 TST (R1)+ ;ПОЛУЧИТЬ АДРЕС СЛЕДУЮЩЕГО ОБРАЗЦА ДАННЫХ
1221 135530 077421 SOB R4,135470 ;ПЕРЕЙТИ К ПРОВЕРКЕ, ЕСЛИ БУФЕР ПРОВЕРЕН НЕ НА
1222     ;ВСЕХ ОБРАЗЦАХ
1223 135532 005077 044244 CLR @2002 ;ЗАПИСАТЬ ПРИЗНАК ОТСУТСТВИЯ ОШИБОК В МЛАДШИЙ
1224     ;БАЙТ ЯЧЕЙКИ
1225 135536 005237 002002 INC @#2002 ;ПОЛУЧИТЬ АДРЕС СТАРШЕГО БАЙТА
1226 135542 116277 000014 044232 MOVB 14(R2),@2002 ;ЗАПИСАТЬ ХАРАКТЕРИСТИКИ КОНТРОЛЛЕРА НГМД В
1227     ;СТАРШИЙ БАЙТ ЯЧЕЙКИ В ТАБЛИЦЕ КОНФИГУРАЦИИ ПВК
1228 135550 012604 MOV (SP)+,R4
1229 135552 104000 EMT ;ВЫХОД ИЗ ПОДПРОГРАММЫ ПРОВЕРКИ КОНТРОЛЛЕРА НГМД
1230    
1231 135554 012777 000003 044220 MOV #3,@2002 ;ОШИБКА 3. НЕСОВПАДЕНИЕ ЗАПИСАННЫХ И СЧИТАННЫХ
1232 135562 012604 MOV (SP)+,R4 ;ДАННЫХ ИЗ БУФЕРА КОНТРОЛЛЕРА НГМД
1233 135564 104000 EMT ;ВЫХОД ИЗ ПОДПРОГРАММЫ ПРОВЕРКИ КОНТРОЛЛЕРА НГМД
1234    
1235     ;ПОДПРОГРАММА ОБСЛУЖИВАНИЯ ПРЕРЫВАНИЯ ПО ЗАВЕРШЕНИИ ВЫПОЛНЕНИЯ ОПЕРАЦИИ
1236 135566 012716 135404 MOV #135404,@SP ;СФОРМИРОВАТЬ АДРЕС ВЫХОДА ИЗ ПРЕРЫВАНИЯ
1237 135572 012766 000340 000002 MOV #340,2(SP)
1238 135600 000002 RTI ;ВЫХОД ИЗ ПРЕРЫВАНИЯ
1239    
1240    
1241     ;***********************************************************************
1242     ;
1243     ;ПОДПРОГРАММА ПРОВЕРКИ КОНТРОЛЛЕРА НМД
1244     ;
1245     ;***********************************************************************
1246    
1247 135602 010002 MOV R0,R2
1248 135604 072227 000007 ASH #7,R2
1249 135610 062702 174000 ADD #174000,R2 ;ПОЛУЧИТЬ АДРЕС КОНТРОЛЛЕРА НМД
1250 135614 012737 000340 177776 MOV #340,@#177776 ;УСТАНОВИТЬ ПРИОРИТЕТ ЦП=7
1251 135622 010003 MOV R0,R3
1252 135624 072327 000002 ASH #2,R3
1253 135630 005403 NEG R3
1254 135632 062703 117756 ADD #117756,R3 ;ВЫБРАТЬ АДРЕС ЯЧЕЙКИ В ТАБЛИЦЕ КОНФИГУРАЦИИ ПВК,
1255     ;СООТВЕТСТВУЮЩЕЙ КОНТРОЛЛЕРУ НМД
1256 135636 010337 002002 MOV R3,@#2002
1257 135642 005077 044134 CLR @2002 ;ОЧИСТИТЬ ЯЧЕЙКУ
1258 135646 010446 MOV R4,-(SP)
1259 135650 010003 MOV R0,R3
1260 135652 072327 000003 ASH #3,R3
1261 135656 005001 CLR R1
1262 135660 032762 000001 000020 BIT #1,20(R2) ;РАЗРЯД "ОПЕРАЦИЯ ЗАВЕРШЕНА" В РСНУ УСТАНОВЛЕН?
1263 135666 001006 BNE 135704 ;ПЕРЕЙТИ, ЕСЛИ ДА
1264 135670 077105 SOB R1,135660 ;ОЖИДАНИЕ УСТАНОВКИ РАЗРЯДА "ОПЕРАЦИЯ ЗАВЕРШЕНА"
1265 135672 112777 000001 044102 MOVB #1,@2002 ;ОШИБКА 1. НЕ УСТАНОВИЛСЯ РАЗРЯД "ОПЕРАЦИЯ
1266     ;ЗАВЕРШЕНА" В РСНУ ПОСЛЕ НАЧАЛЬНОЙ УСТАНОВКИ
1267 135700 012604 MOV (SP)+,R4
1268 135702 104000 EMT ;ВЫХОД ИЗ ПОДПРОГРАММЫ ПРОВЕРКИ КОНТРОЛЛЕРА НМД
1269 135704 032762 000400 000016 BIT #400,16(R2) ;УСТАНОВЛЕН РАЗРЯД ОШИБКИ?
1270 135712 001405 BEQ 135726 ;ПЕРЕЙТИ, ЕСЛИ НЕТ
1271 135714 112777 000002 044060 MOVB #2,@2002 ;ОШИБКА 2. НЕ ОЧИСТИЛСЯ РКС2<;08>; ПО НАЧАЛЬНОЙ
1272     ;УСТАНОВКЕ
1273 135722 012604 MOV (SP)+,R4
1274 135724 104000 EMT ;ВЫХОД ИЗ ПОДПРОГРАММЫ ПРОВЕРКИ КОНТРОЛЛЕРА НМД
1275 135726 012704 000005 MOV #5,R4 ;ВЫБРАТЬ СЧЕТЧИК ОБРАЗЦОВ ДАННЫХ
1276 135732 012701 137116 MOV #137116,R1 ;ВЫБРАТЬ АДРЕС ОБРАЗЦОВ ДАННЫХ
1277 135736 011162 000006 MOV @R1,6(R2) ;ЗАПИСАТЬ ДАННЫЕ В РАССЗ
1278 135742 011137 002010 MOV @R1,@#2010
1279 135746 042737 000340 002010 BIC #340,@#2010 ;СФОРМИРОВАТЬ ОЖИДАЕМЫЕ ДАННЫЕ
1280 135754 023762 002010 000006 CMP @#2010,6(R2) ;ДАННЫЕ СОВПАДАЮТ?
1281 135762 001045 BNE 136076 ;ПЕРЕЙТИ НА ОШИБКУ, ЕСЛИ НЕТ
1282 135764 005721 TST (R1)+ ;ПОЛУЧИТЬ АДРЕС СЛЕДУЮЩЕГО ОБРАЗЦА ДАННЫХ
1283 135766 077415 SOB R4,135736
1284 135770 012704 000005 MOV #5,R4 ;ВЫБРАТЬ СЧЕТЧИК ОБРАЗЦОВ ДАННЫХ
1285 135774 012701 137116 MOV #137116,R1 ;ВЫБРАТЬ АДРЕС ОБРАЗЦОВ ДАННЫХ
1286 136000 011162 000012 MOV @R1,12(R2) ;ЗАПИСАТЬ ДАННЫЕ В РАЦ
1287 136004 011137 002010 MOV @R1,@#2010
1288 136010 042737 176000 002010 BIC #176000,@#2010 ;СФОРМИРОВАТЬ ОЖИДАЕМЫЕ ДАННЫЕ
1289 136016 023762 002010 000012 CMP @#2010,12(R2) ;ДАННЫЕ СОВПАДАЮТ?
1290 136024 001024 BNE 136076 ;ПЕРЕЙТИ НА ОШИБКУ, ЕСЛИ НЕТ
1291 136026 005721 TST (R1)+ ;ПОЛУЧИТЬ АДРЕС СЛЕДУЮЩЕГО ОБРАЗЦА ДАННЫХ
1292 136030 077415 SOB R4,136000
1293 136032 012704 000005 MOV #5,R4 ;ВЫБРАТЬ СЧЕТЧИК ОБРАЗЦОВ ДАННЫХ
1294 136036 012701 137116 MOV #137116,R1 ;ВЫБРАТЬ АДРЕС ОБРАЗЦОВ ДАННЫХ
1295 136042 011162 000014 MOV @R1,14(R2) ;ЗАПИСАТЬ ДАННЫЕ В РАП
1296 136046 011137 002010 MOV @R1,@#2010
1297 136052 042737 177770 002010 BIC #177770,@#2010 ;СФОРМИРОВАТЬ ОЖИДАЕМЫЕ ДАННЫЕ
1298 136060 023762 002010 000014 CMP @#2010,14(R2) ;ДАННЫЕ СОВПАДАЮТ?
1299 136066 001003 BNE .+10 ;ПЕРЕЙТИ НА ОШИБКУ, ЕСЛИ НЕТ
1300 136070 005721 TST (R1)+ ;ПОЛУЧИТЬ АДРЕС СЛЕДУЮЩЕГО ОБРАЗЦА
1301 136072 077415 SOB R4,136042
1302 136074 000405 BR 136110
1303 136076 112777 000003 043676 MOVB #3,@2002 ;ОШИБКА 3. НЕСОВПАДЕНИЕ ЗАПИСАННЫХ И СЧИТАННЫХ
1304     ;ДАННЫХ В РАССЗ, РАЦ ИЛИ РАП КОНТРОЛЛЕРА НМД
1305 136104 012604 MOV (SP)+,R4
1306 136106 104000 EMT ;ВЫХОД ИЗ ПОДПРОГРАММЫ ПРОВЕРКИ КОНТРОЛЛЕРА НМД
1307 136110 032762 100000 000020 BIT #100000,20(R2) ;РАЗРЯД "ЗАНЯТ" В РСНУ"=0?
1308 136116 001405 BEQ 136132 ;ПЕРЕЙТИ, ЕСЛИ ДА
1309 136120 112777 000004 043654 MOVB #4,@2002 ;ОШИБКА 4. НЕ ОЧИСТИЛСЯ РАЗРЯД "ЗАНЯТ" В РСНУ
1310 136126 012604 MOV (SP)+,R4 ;ПОСЛЕ НАЧАЛЬНОЙ УСТАНОВКИ
1311 136130 104000 EMT ;ВЫХОД ИЗ ПОДПРОГРАММЫ ПРОВЕРКИ КОНТРОЛЛЕРА НМД
1312 136132 005001 CLR R1
1313 136134 022762 050000 000016 CMP #50000,16(R2)
1314 136142 001406 BEQ 136160
1315 136144 077105 SOB R1,136134
1316 136146 112777 000005 043626 MOVB #5,@2002 ;ОШИБКА 5. СОДЕРЖИМОЕ РКС2 НЕ РАВНО 50000 ПОСЛЕ
1317     ;НАЧАЛЬНОЙ УСТАНОВКИ
1318 136154 012604 MOV (SP)+,R4
1319 136156 104000 EMT ;ВЫХОД ИЗ ПОДПРОГРАММЫ ПРОВЕРКИ КОНТРОЛЛЕРА НМД
1320 136160 012763 136256 000300 MOV #136256,300(R3) ;СФОРМИРОВАТЬ ВЕКТОР ПРЕРЫВАНИЯ ПО ЗАВЕРШЕНИИ
1321     ;ВЫПОЛНЕНИЯ ОПЕРАЦИИ
1322 136166 012763 000340 000302 MOV #340,302(R3)
1323 136174 012737 000100 173206 MOV #100,@#173206 ;ОЧИСТИТЬ РАЗРЯДЫ В РЕГИСТРАХ ТРЕБОВАНИЯ
1324 136202 012737 000100 173212 MOV #100,@#173212 ;ПРЕРЫВАНИЙ
1325 136210 010001 MOV R0,R1
1326 136212 052701 000400 BIS #400,R1
1327 136216 104002 EMT+2 ;РАЗРЕШИТЬ ПРЕРЫВАНИЕ ПО ЗАВЕРШЕНИИ ВЫПОЛНЕНИЯ
1328     ;ОПЕРАЦИИ
1329 136220 012704 000006 MOV #6,R4
1330 136224 005001 CLR R1
1331 136226 012762 000020 000016 MOV #20,16(R2) ;ВЫПОЛНИТЬ ПОЗИЦИОНИРОВАНИЕ НА НУЛЕВУЮ ДОРОЖКУ
1332 136234 005037 177776 CLR @#177776 ;УСТАНОВИТЬ ПРИОРИТЕТ ЦП = 0
1333     ;ПО ЗАВЕРШЕНИИ ВЫПОЛНЕНИЯ ОПЕРАЦИИ
1334     ;"ПОЗИЦИОНИРОВАНИЕ НА НУЛЕВУЮ ДОРОЖКУ" ДОЛЖНО
1335     ;ПРОИЗОЙТИ ПРЕРЫВАНИЕ
1336 136240 077101 SOB R1,.+0 ;ОЖИДАНИЕ ПРЕРЫВАНИЯ
1337 136242 077402 SOB R4,.-2
1338 136244 112777 000006 043530 MOVB #6,@2002 ;ОШИБКА 6. НЕТ ПРЕРЫВАНИЯ ОТ КОНТРОЛЛЕРА НМД
1339 136252 012604 MOV (SP)+,R4 ;ПО ЗАВЕРШЕНИИ ВЫПОЛНЕНИЯ ОПЕРАЦИИ
1340     ;"ПОЗИЦИОНИРОВАНИЕ НА НУЛЕВУЮ ДОРОЖКУ"
1341 136254 104000 EMT ;ВЫХОД ИЗ ПОДПРОГРАММЫ ПРОВЕРКИ КОНТРОЛЛЕРА НМД
1342 136256 022626 CMP (SP)+,(SP)+
1343 136260 010001 MOV R0,R1
1344 136262 052701 000400 BIS #400,R1
1345 136266 104003 EMT+3 ;ЗАПРЕТИТЬ ПРЕРЫВАНИЕ ОТ КОНТРОЛЛЕРА НМД
1346 136270 032762 000001 000020 BIT #1,20(R2) ;РАЗРЯД "ОПЕРАЦИЯ ЗАВЕРШЕНА В РСНУ =1?
1347 136276 001005 BNE 136312 ;ПЕРЕЙТИ, ЕСЛИ ДА
1348 136300 112777 000007 043474 MOVB #7,@2002 ;ОШИБКА 7. НЕ УСТАНОВИЛСЯ РАЗРЯД "ОПЕРАЦИЯ ЗАВЕРШЕНА"
1349 136306 012604 MOV (SP)+,R4 ;В РСНУ ПОСЛЕ ВЫПОЛНЕНИЯ ОПЕРАЦИИ "ПОЗИЦИОНИРОВАНИЕ
1350     ;НА НУЛЕВУЮ ДОРОЖКУ"
1351 136310 104000 EMT ;ВЫХОД ИЗ ПОДПРОГРАММЫ ПРОВЕРКИ КОНТРОЛЛЕРА НМД
1352 136312 032762 000400 000016 BIT #400,16(R2) ;БЫЛИ ОШИБКИ?
1353 136320 001405 BEQ 136334 ;ПЕРЕЙТИ, ЕСЛИ НЕТ
1354 136322 112777 000010 043452 MOVB #10,@2002 ;ОШИБКА 10. УСТАНОВИЛСЯ РКС2<;08>; ПРИ ВЫПОЛНЕНИИ
1355 136330 012604 MOV (SP)+,R4 ;ОПЕРАЦИИ "ПОЗИЦИОНИРОВАНИЕ НА НУЛЕВУЮ ДОРОЖКУ"
1356 136332 104000 EMT ;ВЫХОД ИЗ ПОДПРОГРАММЫ ПРОВЕРКИ КОНТРОЛЛЕРА НМД
1357 136334 032762 000400 000020 BIT #400,20(R2) ;ПОЗИЦИОНИРОВАНИЕ ОСУЩЕСТВЛЯЕТСЯ В РЕЖИМЕ
1358     ;"БЫСТРЫЙ ПОИСК"?
1359 136342 001003 BNE .+10 ;ПЕРЕЙТИ, ЕСЛИ ПОЗИЦИОНИРОВАНИЕ ОСУЩЕСТВЛЯЕТСЯ
1360     ;В РЕЖИМЕ "МЕДЛЕННЫЙ ПОИСК"
1361 136344 052777 000400 043430 BIS #400,@2002 ;ЗАПИСАТЬ В ТАБЛИЦУ КОНФИГУРАЦИИ ПВК ПРИЗНАК
1362     ;НАКОПИТЕЛЯ С ПОЗИЦИОНИРОВАНИЕМ В РЕЖИМЕ
1363     ;"БЫСТРЫЙ ПОИСK"
1364 136352 012737 000230 002004 MOV #230,@#2004 ;ВЫБРАТЬ АДРЕС ЦИЛИНДРА = 230
1365 136360 012737 000002 002006 MOV #2,@#2006
1366 136366 012763 136732 000300 MOV #136732,300(R3) ;СФОРМИРОВАТЬ ВЕКТОРЫ ПРЕРЫВАНИЯ ОТ КОНТРОЛЛЕРА
1367 136374 012763 000340 000302 MOV #340,302(R3) ;НМД
1368 136402 012763 137000 000304 MOV #137000,304(R3)
1369 136410 012763 000340 000306 MOV #340,306(R3)
1370 136416 013704 002006 MOV @#2006,R4
1371 136422 005037 002000 CLR @#2000
1372 136426 005737 002000 TST @#2000
1373 136432 001004 BNE 136444
1374 136434 013762 002004 000012 MOV @#2004,12(R2) ;ЗАДАТЬ АДРЕС ЦИЛИНДРА ( O ИЛИ 230 )
1375 136442 000412 BR 136470
1376 136444 032737 000001 002000 BIT #1,@#2000
1377 136452 001403 BEQ .+10
1378 136454 005062 000012 CLR 12(R2) ;ЗАДАТЬ АДРЕС ЦИЛИНДРА = 000000
1379 136460 000403 BR .+10
1380 136462 013762 002004 000012 MOV @#2004,12(R2) ;ЗАДАТЬ АДРЕС ЦИЛИНДРА ( 0 ИЛИ 230 )
1381 136470 005062 000006 CLR 6(R2) ;ЗАДАТЬ АДРЕС СЕКТОРА = 000000
1382 136474 032737 000001 002000 BIT #1,@#2000
1383 136502 001403 BEQ .+10
1384 136504 013701 002006 MOV @#2006,R1 ;ЗАДАТЬ АДРЕС ПОВЕРХНОСТИ ( O ИЛИ 1 )
1385 136510 000401 BR .+4
1386 136512 010401 MOV R4,R1
1387 136514 005401 NEG R1
1388 136516 063701 002006 ADD @#2006,R1 ;СФОРМИРОВАТЬ АДРЕС ПОВЕРХНОСТИ
1389 136522 010162 000014 MOV R1,14(R2) ;ЗАДАТЬ АДРЕС ПОВЕРХНОСТИ
1390 136526 010001 MOV R0,R1
1391 136530 052701 000400 BIS #400,R1
1392 136534 104002 EMT+2 ;РАЗРЕШИТЬ ПРЕРЫВАНИЕ ОТ КОНТРОЛЛЕРА НМД
1393     ;ПО ЗАВЕРШЕНИИ ВЫПОЛНЕНИЯ ОПЕРАЦИИ
1394 136536 042701 000400 BIC #400,R1
1395 136542 052701 001000 BIS #1000,R1
1396 136546 104002 EMT+2 ;РАЗРЕШИТЬ ПРЕРЫВАНИЕ ОТ КОНТРОЛЛЕРА НМД
1397     ;ПО ЗАВЕРШЕНИИ СЧИТЫВАНИЯ СЕКТОРА В БУФЕР
1398     ;КОНТРОЛЛЕРА
1399 136550 012762 000040 000016 MOV #40,16(R2) ;ВЫПОЛНИТЬ ОПЕРАЦИЮ "ЧТЕНИЕ СЕКТОРА"
1400 136556 005037 002012 CLR @#2012
1401 136562 012737 000003 002014 MOV #3,@#2014
1402 136570 052705 177777 BIS #-1,R5
1403 136574 005037 177776 CLR @#177776 ;УСТАНОВИТЬ ПРИОРИТЕТ ЦП = 0
1404     ;ДОЛЖНО ПРОИЗОЙТИ ПРЕРЫВАНИЕ ОТ КОНТРОЛЛЕРА
1405     ;ПО ЗАВЕРШЕНИИ СЧИТЫВАНИЯ СЕКТОРА В
1406     ;БУФЕР КОНТРОЛЛЕРА
1407 136600 105777 043176 TSTB @2002 ;БЫЛИ ОШИБКИ?
1408 136604 001013 BNE 136634 ;ПЕРЕЙТИ, ЕСЛИ ДА
1409 136606 005705 TST R5 ;БЫЛО ПРЕРЫВАНИЕ ПО ЗАВЕРШЕНИИ ВЫПОЛНЕНИЯ ОПЕРАЦИИ?
1410 136610 001412 BEQ 136636 ;ПЕРЕЙТИ, ЕСЛИ ДА
1411 136612 005337 002012 DEC @#2012 ;ПРОИЗВЕСТИ ЗАДЕРЖКУ ДЛЯ ВЫПОЛНЕНИЯ ОПЕРАЦИИ
1412 136616 001370 BNE 136600 ;"ЧТЕНИЕ СЕКТОРА" И ДЛЯ ОБСЛУЖИВАНИЯ
1413 136620 005337 002014 DEC @#2014 ;ПРЕРЫВАНИЙ
1414 136624 001365 BNE 136600
1415 136626 112777 000011 043146 MOVB #11,@2002 ;ОШИБКА 11. НЕТ ПРЕРЫВАНИЯ ПО ЗАВЕРШЕНИИ
1416     ;СЧИТЫВАНИЯ СЕКТОРА В БУФЕР КОНТРОЛЛЕРА ИЛИ
1417     ;ПО ЗАВЕРШЕНИИ СЧИТЫВАНИЯ ДАННЫХ ИЗ БУФЕРА
1418     ;КОНТРОЛЛЕРА
1419 136634 000411 BR 136660 ;ПРИ НАЛИЧИИ ОШИБКИ ПЕРЕЙТИ НА
1420     ;ПОДПРОГРАММУ ПРОВЕРКИ РАЗРЯДОВ "ЗАНЯТ" И
1421     ;"ОПЕРАЦИЯ ЗАВЕРШЕНА" В РСНУ
1422 136636 032737 000002 002000 BIT #2,@#2000
1423 136644 001003 BNE .+10
1424 136646 005237 002000 INC @#2000
1425 136652 000665 BR 136426
1426 136654 005304 DEC R4
1427 136656 001261 BNE 136422
1428 136660 012737 000340 177776 MOV #340,@#177776 ;УСТАНОВИТЬ ПРИОРИТЕТ ЦП=7
1429 136666 010001 MOV R0,R1
1430 136670 052701 000400 BIS #400,R1
1431 136674 104003 EMT+3 ;ЗАПРЕТИТЬ ПРЕРЫВАНИЕ ОТ КОНТРОЛЛЕРА НМД ПО
1432     ;ЗАВЕРШЕНИИ ВЫПОЛНЕНИЯ ОПЕРАЦИИ
1433 136676 042701 000400 BIC #400,R1
1434 136702 052701 001000 BIS #1000,R1
1435 136706 104003 EMT+3 ;ЗАПРЕТИТЬ ПРЕРЫВАНИЕ ОТ КОНТРОЛЛЕРА НМД ПО
1436     ;ЗАВЕРШЕНИИ СЧИТЫВАНИЯ СЕКТОРА В БУФЕР
1437     ;КОНТРОЛЛЕРА
1438 136710 004737 137036 JSR PC,@#137036 ;ПРОВЕРИТЬ РАЗРЯДЫ "ЗАНЯТ" И "ОПЕРАЦИЯ ЗАВЕРШЕНА"
1439     ;В РСНУ
1440 136714 000401 BR .+4 ;ПЕРЕЙТИ НА ОШИБКУ
1441 136716 000403 BR .+10 ;ОБОЙТИ ОШИБКУ 12
1442 136720 112777 000012 043054 MOVB #12,@2002 ;ОШИБКА 12. НЕ ОЧИСТИЛСЯ РАЗРЯД "ЗАНЯТ" ИЛИ
1443     ;НЕ УСТАНОВИЛСЯ РАЗРЯД "ОПЕРАЦИЯ ЗАВЕРШЕНА"
1444     ;В РСНУ ПО ЗАВЕРШЕНИИ ВЫПОЛНЕНИЯ ОПЕРАЦИИ
1445 136726 012604 MOV (SP)+,R4
1446 136730 104000 EMT ;ВЫХОД ИЗ ПОДПРОГРАММЫ ПРОВЕРКИ КОНТРОЛЛЕРА НМД
1447    
1448     ;ПОДПРОГРАММА ОБСЛУЖИВАНИЯ ПРЕРЫВАНИЯ ПО ЗАВЕРШЕНИИ ВЫПОЛНЕНИЯ ОПЕРАЦИИ
1449    
1450 136732 010001 MOV R0,R1
1451    
1452 136734 052701 000400 BIS #400,R1
1453 136740 104003 EMT+3 ;ЗАПРЕТИТЬ ПРЕРЫВАНИЕ ОТ КОНТРОЛЛЕРА НМД
1454     ;ПО ЗАВЕРШЕНИИ ВЫПОЛНЕНИЯ ОПЕРАЦИИ
1455 136742 042701 000400 BIC #400,R1
1456 136746 052701 001000 BIS #1000,R1
1457 136752 104003 EMT+3 ;ЗАПРЕТИТЬ ПРЕРЫВАНИЕ ОТ КОНТРОЛЛЕРА НМД
1458     ;ПО ЗАВЕРШЕНИИ СЧИТЫВАНИЯ СЕКТОРА В БУФЕР
1459     ;КОНТРОЛЛЕРА
1460 136754 032762 000400 000016 BIT #400,16(R2) ;ПРОИЗОШЛА ОШИБКА?
1461 136762 001002 BNE .+6 ;ПЕРЕЙТИ, ЕСЛИ ДА
1462 136764 005005 CLR R5 ;УСТАНОВИТЬ ПРИЗНАК УСПЕШНОГО ЗАВЕРШЕНИЯ ОПЕРАЦИИ
1463     ;И НАЛИЧИЯ ПРЕРЫВАНИЯ ПО ЗАВЕРШЕНИИ ВЫПОЛНЕНИЯ
1464     ;ОПЕРАЦИИ
1465 136766 000002 RTI ;ВЫХОД ИЗ ПРЕРЫВАНИЯ
1466    
1467 136770 112777 000013 043004 MOVB #13,@2002 ;ОШИБКА 13. УСТАНОВИЛСЯ РКС2<;08>;
1468     ;ПРИ ВЫПОЛНЕНИИ ОПЕРАЦИИ "ЧТЕНИЕ СЕКТОРА"
1469 136776 000002 RTI ;ВЫХОД ИЗ ПРЕРЫВАНИЯ
1470    
1471     ;ПОДПРОГРАММА ОБСЛУЖИВАНИЯ ПРЕРЫВАНИЯ ПО ЗАВЕРШЕНИИ СЧИТЫВАНИЯ
1472     ;СЕКТОРА В БУФЕР КОНТРОЛЛЕРА
1473 137000 005037 177776 CLR @#177776 ;УСТАНОВИТЬ ПРИОРИТЕТ ЦП=0
1474 137004 010001 MOV R0,R1
1475 137006 052701 001000 BIS #1000,R1
1476 137012 104003 EMT+3 ;ЗАПРЕТИТЬ ПРЕРЫВАНИЕ ОТ КОНТРОЛЛЕРА НМД
1477     ;ПО ЗАВЕРШЕНИИ СЧИТЫВАНИЯ СЕКТОРА В
1478     ;БУФЕР КОНТРОЛЛЕРА
1479 137014 012701 000400 MOV #400,R1
1480 137020 005762 000010 TST 10(R2) ;СЧИТАТЬ БУФЕР
1481 137024 077103 SOB R1,.-4
1482     ;ПО ЗАВЕРШЕНИИ СЧИТЫВАНИЯ БУФЕРА ДОЛЖЕН
1483     ;УСТАНОВИТЬСЯ РАЗРЯД "ОПЕРАЦИЯ ЗАВЕРШЕНА"
1484     ;И ПРОИЗОЙТИ ПРЕРЫВАНИЕ ПО ЗАВЕРШЕНИИ
1485     ;ВЫПОЛНЕНИЯ ОПЕРАЦИИ
1486 137026 012737 000100 173212 MOV #100,@#173212 ;ОЧИСТИТЬ ВСЕ РАЗРЯДЫ В РЕГИСТРЕ ТРЕБОВАНИЯ
1487     ;ПРЕРЫВАНИЙ
1488 137034 000002 RTI ;ВЫХОД ИЗ ПРЕРЫВАНИЯ
1489    
1490     ;ПОДПРОГРАММА ПРОВЕРКИ РАЗРЯДОВ "ЗАНЯТ" И "ОПЕРАЦИЯ ЗАВЕРШЕНА"
1491    
1492 137036 005001 CLR R1
1493 137040 032762 100000 000020 BIT #100000,20(R2) ;РАЗРЯД "ЗАНЯТ" ОЧИЩЕН?
1494 137046 001402 BEQ .+6 ;ПЕРЕЙТИ, ЕСЛИ ДА
1495 137050 077105 SOB R1,137040
1496 137052 000207 RTS PC ;ВЫХОД НА ОШИБКУ 12
1497 137054 012762 000020 000016 MOV #20,16(R2) ;ВЫПОЛНИТЬ ПОЗИЦИОНИРОВАНИЕ НА НУЛЕВУЮ ДОРОЖКУ
1498 137062 005001 CLR R1
1499 137064 032762 000001 000020 BIT #1,20(R2) ;РАЗРЯД "ОПЕРАЦИЯ ЗАВЕРШЕНА" В РСНУ =1?
1500 137072 001003 BNE .+10 ;ПЕРЕЙТИ, ЕСЛИ ДА
1501 137074 077105 SOB R1,137064 ;ЗАДЕРЖКА ДЛЯ УСТАНОВКИ РАЗРЯДА "ОПЕРАЦИЯ
1502 137076 077406 SOB R4,137064 ;ЗАВЕРШЕНА" В РСНУ
1503 137100 000402 BR .+6 ;ПЕРЕЙТИ НА ОШИБКУ 12, ЕСЛИ РАЗРЯД "ОПЕРАЦИЯ
1504     ;ЗАВЕРШЕНА" НЕ УСТАНОВИЛСЯ
1505 137102 062716 000002 ADD #2,@SP ;ПЕРЕЙТИ ЧЕРЕЗ ОШИБКУ, ЕСЛИ РАЗРЯД "ОПЕРАЦИЯ
1506     ;ЗАВЕРШЕНА" УСТАНОВИЛСЯ
1507 137106 012737 000100 173206 MOV #100,@#173206 ;ОЧИСТИТЬ ВСЕ РАЗРЯДЫ В РЕГИСТРЕ ТРЕБОВАНИЯ
1508     ;ПРЕРЫВАНИЙ
1509 137114 000207 RTS PC ;ВЫХОД ИЗ ПОДПРОГРАММЫ
1510    
1511     ;ОБРАЗЦЫ ДАННЫХ
1512 137116 125252 125252
1513 137120 052525 052525
1514 137122 031463 031463
1515 137124 004717 004717
1516 137126 000377 000377
1517    
1518     ;***********************************************************************
1519     ;
1520     ;ПОДПРОГРАММА ПРОВЕРКИ ВИДЕОКОНТРОЛЛЕРА
1521     ;
1522     ;***********************************************************************
1523 137130 010001 MOV R0,R1
1524 137132 072127 000007 ASH #7,R1
1525 137136 062701 174000 ADD #174000,R1 ;ПОЛУЧИТЬ АДРЕС ВИДЕОКОНТОЛЛЕРА
1526 137142 012761 000030 000006 MOV #30,6(R1) ;ЗАПРЕТИТЬ ФОРМИРОВАНИЕ ИЗОБРАЖЕНИЯ НА ЭКРАНЕ
1527     ;МОНИТОРА
1528 137150 012761 014030 000010 MOV #14030,10(R1)
1529 137156 010002 MOV R0,R2
1530 137160 072227 000002 ASH #2,R2
1531 137164 005402 NEG R2
1532 137166 062702 117756 ADD #117756,R2 ;ПОЛУЧИТЬ АДРЕС ЯЧЕЙКИ ТАБЛИЦЫ КОНФИГУРАЦИИ ПВК,
1533     ;СООТВЕТСТВУЮЩЕЙ ВИДЕОКОНТРОЛЛЕРУ
1534 137172 010237 002000 MOV R2,@#2000
1535 137176 005077 042576 CLR @2000
1536 137202 012746 000004 MOV #4,-(SP)
1537 137206 012746 000140 MOV #140,-(SP)
1538 137212 011661 000026 MOV @SP,26(R1) ;РАЗМЕСТИТЬ ПАМЯТЬ ВИДЕОКОНТОЛЛЕРА В АДРЕСНОМ
1539     ;ПРОСТРАНСТВЕ ОТ 14000000 ДО 14077777
1540 137216 006316 ASL @SP
1541 137220 006316 ASL @SP
1542 137222 104005 EMT+5 ;СФОРМИРОВАТЬ КОНСТАНТЫ ПЕРЕРАСПРЕДЕЛЕНИЯ ДЛЯ
1543     ;ДОСТУПА К ПАМЯТИ ВИДЕОКОНТРОЛЛЕРА
1544 137224 022626 CMP (SP)+,(SP)+
1545 137226 004737 140052 JSR PC,@#140052 ;ПРОВЕРИТЬ СОДЕРЖИМОЕ РЕГИСТРОВ ВИДЕОКОНТРОЛЛЕРА
1546     ;ПОСЛЕ НАЧАЛЬНОЙ УСТАНОВКИ
1547 137232 103003 BCC .+10 ;ПЕРЕЙТИ , ЕСЛИ ОШИБОК НЕТ
1548 137234 004737 137714 JSR PC,@#137714 ;ОШИБКА 2. НЕВЕРНОЕ СОДЕРЖИМОЕ В ОДНОМ ИЗ
1549 137240 000002 000002 ;РЕГИСТРОВ ПОСЛЕ НАЧАЛЬНОЙ УСТАНОВКИ
1550 137242 052761 000040 000006 BIS #40,6(R1) ;РАЗРЕШИТЬ ДОСТУП ЦП К ПАМЯТИ ВИДЕОКОНТРОЛЛЕРА
1551 137250 004737 140156 JSR PC,@#140156 ;ПРОВЕРИТЬ ПАМЯТЬ ВИДЕОКОНТРОЛЛЕРА ЗАПИСЬЮ,
1552     ;ИНВЕРТИРОВАНИЕМ И СЧИТЫВАНИЕМ ШАХМАТНОГО
1553     ;КОДА
1554 137254 103003 BCC .+10 ;ПЕРЕЙТИ, ЕСЛИ ОШИБОК НЕТ
1555 137256 004737 137714 JSR PC,@#137714 ;ОШИБКА 3. ОШИБКА ЗАПИСИ/СЧИТЫВАНИЯ В ПАМЯТИ
1556 137262 000003 000003 ;ВИДЕОКОНТРОЛЛЕРА
1557 137264 004737 140214 JSR PC,@#140214 ;ПРОВЕРИТЬ ВРЕМЯ ФОРМИРОВАНИЯ ОДНОГО КАДРА И
1558     ;НАЛИЧИЕ ПРЕРЫВАНИЯ ПО ЗАВЕРШЕНИИ ФОРМИРОВАНИЯ
1559     ;КАДРА
1560 137270 103003 BCC .+10 ;ПЕРЕЙТИ, ЕСЛИ ОШИБОК НЕТ
1561 137272 004737 137714 JSR PC,@#137714 ;ОШИБКА 4. ОШИБКА СКОРОСТИ ФОРМИРОВАНИЯ КАДРА ИЛИ
1562 137276 000004 000004 ;НЕ ПРОИЗОШЛО ПРЕРЫВАНИЕ ПО ЗАВЕРШЕНИИ
1563     ;ФОРМИРОВАНИЯ КАДРА
1564 137300 042761 000007 000006 BIC #7,6(R1)
1565 137306 052761 000002 000006 BIS #2,6(R1)
1566 137314 004737 140434 JSR PC,@#140434 ;ПРОВЕРИТЬ ПРАВИЛЬНОСТЬ ПОСТРОЕНИЯ ВЕКТОРА И
1567     ;И НАЛИЧИЕ ПРЕРЫВАНИЯ ПО ЗАВЕРШЕНИИ ПОСТРОЕНИЯ
1568     ;ВЕКТОРА
1569 137320 103003 BCC .+10 ;ПЕРЕЙТИ, ЕСЛИ ОШИБОК НЕТ
1570 137322 004737 137714 JSR PC,@#137714 ;ОШИБКА 5.
1571 137326 000005 000005 ;ОШИБКА ПРИ ПОСТРОЕНИИ ВЕКТОРА ИЛИ НЕ ПРОИЗОШЛО
1572     ;ПРЕРЫВАНИЕ ПО ЗАВЕРШЕНИИ ПОСТРОЕНИЯ ВЕКТОРА
1573 137330 010103 MOV R1,R3
1574 137332 062703 000006 ADD #6,R3
1575 137336 012746 000007 MOV #7,-(SP)
1576 137342 012746 000001 MOV #1,-(SP)
1577 137346 004737 140772 JSR PC,@#140772 ;ПРОВЕРИТЬ ПРАВИЛЬНОСТЬ РЕЖИМОВ МОДИФИКАЦИИ
1578     ;ВИДЕОДАННЫХ
1579 137352 103003 BCC .+10 ;ПЕРЕЙТИ, ЕСЛИ ОШИБОК НЕТ
1580 137354 004737 137714 JSR PC,@#137714 ;ОШИБКА 6.
1581 137360 000006 000006 ;ОШИБКА РЕЖИМА МОДИФИКАЦИИ ВИДЕОДАННЫХ
1582 137362 004737 142250 JSR PC,@#142250 ;ПРОВЕРИТЬ СМЕЩЕНИЕ АДРЕСОВ ПАМЯТИ ОТНОСИТЕЛЬНО
1583     ;КАДРОВЫХ СИНХРОИМПУЛЬСОВ
1584 137366 103003 BCC .+10 ;ПЕРЕЙТИ, ЕСЛИ ОШИБОК НЕТ
1585 137370 004737 137714 JSR PC,@#137714 ;ОШИБКА 7. ОШИБКА СМЕЩЕНИЯ АДРЕСОВ ПАМЯТИ
1586 137374 000007 7 ;ВИДЕОКОНТРОЛЛЕРА ОТНОСИТЕЛЬНО КАДРОВЫХ
1587     ;СИНХРОИМПУЛЬСОВ
1588 137376 104006 EMT+6 ;ВОССТАНОВИТЬ КОНСТАНТЫ ПЕРЕРАСПРЕДЕЛЕНИЯ ОЗУ
1589     ;ПОСЛЕ ПРОВЕРКИ ВИДЕОКОНТРОЛЛЕРА
1590 137400 012700 001403 MOV #1403,R0 ;ВЫБРАТЬ ИДЕНТИФИКАЦИОННЫЙ КОД РАСШИРИТЕЛЯ
1591     ;ПАМЯТИ ВИДЕОДАННЫХ
1592 137404 104001 EMT+1 ;ОПРЕДЕЛИТЬ НОМЕР ПОЗИЦИИ РАСШИРИТЕЛЯ
1593     ;ПАМЯТИ ВИДЕОДАННЫХ
1594     ;В R0 - НОМЕР ПОЗИЦИИ
1595     ;ПРИ ОТСУТСТВИИ РАСШИРИТЕЛЯ ПАМЯТИ ВИДЕОДАННЫХ
1596     ;R0=177777
1597 137406 020027 177777 CMP R0,#-1 ;РАСШИРИТЕЛЬ ПАМЯТИ ВИДЕОДАННЫХ УСТАНОВЛЕН?
1598 137412 001011 BNE 137436 ;ПЕРЕЙТИ, ЕСЛИ ДА
1599 137414 032761 020000 000004 BIT #20000,4(R1) ;РС<;13>;=1?
1600 137422 001003 BNE .+10 ;ПЕРЕЙТИ,ЕСЛИ ДА
1601 137424 004737 137714 JSR PC,@#137714 ;ОШИБКА 10. РС<;13>;=0 ПРИ ОТСУТСТВИИ РАСШИРИТЕЛЯ
1602 137430 000010 10 ;ПАМЯТИ ВИДЕОДАННЫХ
1603 137432 000137 137732 JMP @#137732
1604    
1605     ;***********************************************************************
1606     ;
1607     ;ПОДПРОГРАММА ПРОВЕРКИ РАСШИРИТЕЛЯ ПАМЯТИ ВИДЕОДАННЫХ
1608     ;
1609     ;***********************************************************************
1610    
1611 137436 010002 MOV R0,R2
1612 137440 072227 000002 ASH #2,R2
1613 137444 005402 NEG R2
1614 137446 062702 117756 ADD #117756,R2 ;ПОЛУЧИТЬ АДРЕС ЯЧЕЙКИ ТАБЛИЦЫ КОНФИГУРАЦИИ ПВК,
1615     ;СООТВЕТСТВУЮЩЕЙ РАСШИРИТЕЛЮ ПАМЯТИ ВИДЕОДАННЫХ
1616 137452 010237 002000 MOV R2,@#2000
1617 137456 027727 042316 177777 CMP @2000,#-1
1618 137464 001402 BEQ .+6
1619 137466 000137 137732 JMP @#137732
1620 137472 005077 042302 CLR @2000
1621 137476 012746 000004 MOV #4,-(SP)
1622 137502 012746 000140 MOV #140,-(SP)
1623 137506 011661 000026 MOV @SP,26(R1) ;РАЗМЕСТИТЬ ПАМЯТЬ РАСШИРИТЕЛЯ ВИДЕОДАННЫХ
1624     ;С АДРЕСА 14000000
1625 137512 006316 ASL @SP
1626 137514 006316 ASL @SP
1627 137516 104005 EMT+5 ;СФОРМИРОВАТЬ КОНСТАНТЫ ДЛЯ ДОСТУПА К ПАМЯТИ
1628     ;РАСШИРИТЕЛЯ ВИДЕОДАННЫХ
1629 137520 022626 CMP (SP)+,(SP)+
1630 137522 004737 140120 JSR PC,@#140120 ;РС<;13>; =0?
1631 137526 103003 BCC .+10 ;ПЕРЕЙТИ, ЕСЛИ ДА
1632 137530 004737 137724 JSR PC,@#137724 ;ОШИБКА 1. РС<;13>;=1 ПРИ НАЛИЧИИ РАСШИРИТЕЛЯ
1633 137534 000001 000001 ;ПАМЯТИ ВИДЕОДАННЫХ
1634 137536 004737 140136 JSR PC,@#140136
1635 137542 103003 BCC .+10 ;ПЕРЕЙТИ, ЕСЛИ ОШИБОК НЕТ
1636 137544 004737 137724 JSR PC,@#137724 ;ОШИБКА 2.
1637 137550 000002 000002
1638 137552 012761 000030 000006 MOV #30,6(R1) ;ЗАПРЕТИТЬ ФОРМИРОВАНИЕ ИЗОБРАЖЕНИЯ НА ЭKРАНЕ
1639     ;МОНИТОРА
1640 137560 012761 014070 000010 MOV #14070,10(R1)
1641 137566 004737 140156 JSR PC,@#140156 ;ПРОВЕРИТЬ ПАМЯТЬ РАСШИРИТЕЛЯ ВИДЕОДАННЫХ
1642     ;ПОСЛЕДОВАТЕЛЬНОЙ ЗАПИСЬЮ/СЧИТЫВАНИЕМ ДАННЫХ
1643 137572 103003 BCC .+10 ;ПЕРЕЙТИ, ЕСЛИ ОШИБОК НЕТ
1644 137574 004737 137724 JSR PC,@#137724 ;ОШИБКА 3. ОШИБКА ЗАПИСИ/СЧИТЫВАНИЯ В ПАМЯТИ
1645 137600 000003 000003 ;РАСШИРИТЕЛЯ ВИДЕОДАННЫХ
1646 137602 010103 MOV R1,R3
1647 137604 062703 000010 ADD #10,R3
1648 137610 012746 000007 MOV #7,-(SP)
1649 137614 012746 000001 MOV #1,-(SP)
1650 137620 004737 140772 JSR PC,@#140772 ;ПРОВЕРИТЬ РЕЖИМЫ МОДИФИКАЦИИ ВИДЕОДАННЫХ
1651 137624 103003 BCC .+10 ;ПЕРЕЙТИ, ЕСЛИ ОШИБОК НЕТ
1652 137626 004737 137724 JSR PC,@#137724 ;ОШИБКА 4. ОШИБКА РЕЖИМА МОДИФИКАЦИИ ВИДЕОДАННЫХ
1653 137632 000004 000004
1654 137634 012761 034030 000010 MOV #34030,10(R1)
1655 137642 004737 140156 JSR PC,@#140156
1656 137646 103003 BCC .+10
1657 137650 004737 137724 JSR PC,@#137724
1658 137654 000005 000005
1659 137656 010103 MOV R1,R3
1660 137660 062703 000010 ADD #10,R3
1661 137664 012746 003400 MOV #3400,-(SP)
1662 137670 012746 000400 MOV #400,-(SP)
1663 137674 004737 140772 JSR PC,@#140772
1664 137700 103003 BCC .+10
1665 137702 004737 137724 JSR PC,@#137724
1666 137706 000006 000006
1667 137710 000137 137732 JMP @#137732
1668 137714 104006 EMT+6 ;ВОССТАНОВИТЬ КОНСТАНТЫ ПЕРЕРАСПРЕДЕЛЕНИЯ ОЗУ
1669 137716 013677 042056 MOV @(SP)+,@2000 ;ЗАПИСАТЬ КОД ОШИБКИ В ТАБЛИЦУ КОНФИГУРАЦИИ ПВК
1670 137722 000441 BR 140026
1671 137724 104006 EMT+6 ;ВОССТАНОВИТЬ КОНСТАНТЫ ПЕРЕРАСПРЕДЕЛЕНИЯ ОЗУ
1672 137726 013677 042046 MOV @(SP)+,@2000 ;ЗАПИСАТЬ КОД ОШИБКИ В ТАБЛИЦУ КОНФИГУРАЦИИ ПВК
1673 137732 012761 001000 000004 MOV #1000,4(R1)
1674 137740 012761 000032 000006 MOV #32,6(R1)
1675 137746 012761 015032 000010 MOV #15032,10(R1)
1676    
1677     ;ЗАПИСАТЬ ВО ВСЕ ЯЧЕЙКИ ПАМЯТИ ВИДЕОДАННЫХ 0
1678 137754 005061 000024 CLR 24(R1) ;ЗАДАТЬ ФУНКЦИЮ ЯРКОСТИ
1679 137760 005061 000016 CLR 16(R1) ;ЗАДАТЬ КООРДИНАТУ X=0
1680 137764 005061 000020 CLR 20(R1) ;ЗАДАТЬ КООРДИНАТУ Y=0
1681 137770 012761 177777 000022 MOV #-1,22(R1) ;ЗАДАТЬ ДЛИНУ ВЕКТОРА
1682 137776 012746 012455 MOV #12455,-(SP)
1683 140002 005761 000004 TST 4(1) ;ОПЕРАЦИЯ ЗАВЕРШЕНА?
1684 140006 100406 BMI 140024 ;ПЕРЕЙТИ, ЕСЛИ ДА
1685 140010 005316 DEC @%6 ;ОЖИДАНИЕ ЗАВЕРШЕНИЯ ОПЕРАЦИИ
1686 140012 001373 BNE 140002
1687 140014 005726 TST (6)+ ;ВОССТАНОВИТЬ УС
1688 140016 004737 137714 JSR %7,@#137714 ;ОШИБКА 1. НЕТ ГОТОВНОСТИ ВИДЕОКОНТРОЛЛЕРА ПО
1689 140022 000001 1 ;ЗАВЕРШЕНИИ ПОСТРОЕНИЯ ВЕКТОРА ДЛИНОЙ 177777
1690 140024 005726 TST (6)+
1691 140026 005061 000004 CLR 4(1) ;ОЧИСТИТЬ РЕГИСТР КОМАНД
1692 140032 005061 000006 CLR 6(1) ;ОЧИСТИТЬ РЕГИСТР УПРАВЛЕНИЯ ДАННЫМИ
1693 140036 005061 000010 CLR 10(1)
1694 140042 005061 000014 CLR 14(1) ;ОЧИСТИТЬ РЕГИСТР СДВИГА ИЗОБРАЖЕНИЯ
1695 140046 104006 EMT+6 ;ВОССТАНОВИТЬ КОНСТАНТЫ ПЕРЕРАСПРЕДЕЛЕНИЯ ОЗУ
1696     ;ПОСЛЕ ПРОВЕРКИ ВИДЕОКОНТРОЛЛЕРА
1697 140050 104000 EMT ;ВЫЙТИ ИЗ ПОДПРОГРАММЫ ПРОВЕРКИ ВИДЕОКОНТРОЛЛЕРА
1698    
1699     ;***********************************************************************
1700     ;ПОДПРОГРАММА ПРОВЕРКИ РАЗРЯДОВ РЕГИСТРОВ ПОСЛЕ НАЧАЛЬНОЙ
1701     ;УСТАНОВКИ (КОМАНДА RESET)
1702     ;РАЗРЯДЫ <;15-14>;, <;10-08>;, <;06>;, <;01-00>; В РЕГИСТРЕ СОСТОЯНИЯ
1703     ;РАЗРЯДЫ <;05>;, <;02-00>; В РЕГИСТРЕ УПРАВЛЕНИЯ ДАННЫМИ
1704     ;РАЗРЯДЫ <;07-00>; В РЕГИСТРЕ СДВИГА ИЗОБРАЖЕНИЯ
1705     ;***********************************************************************
1706    
1707 140052 005761 000004 TST 4(1)
1708 140056 100016 BPL 140114
1709 140060 036127 000004 043503 BIT 4(1),#43503
1710 140066 001012 BNE 140114
1711 140070 032761 000047 000006 BIT #47,6(1)
1712 140076 001006 BNE 140114
1713 140100 032761 000377 000014 BIT #377,14(1)
1714 140106 001002 BNE .+6
1715 140110 000241 CLC ;ОЧИСТИТЬ С-РАЗРЯД ПРИ ОТСУТСТВИИ ОШИБОК
1716 140112 000401 BR .+4
1717 140114 000261 SEC ;УСТАНОВИТЬ С-РАЗРЯД ПРИ НАЛИЧИИ ОШИБОК
1718 140116 000207 RTS %7
1719    
1720    
1721     ;***********************************************************************
1722     ;
1723     ;ПОДПРОГРАММА ПРОВЕРКИ РС<;13>; ПОСЛЕ НАЧАЛЬНОЙ УСТАНОВКИ ( КОМАНДА RESET)
1724     ;ПРИ РС<;13>;=1 УСТАНАВЛИВАЕТСЯ С-РАЗРЯД
1725     ;
1726     ;***********************************************************************
1727    
1728    
1729 140120 032761 020000 000004 BIT #20000,4(1) ;РАСШИРИТЕЛЬ ПАМЯТИ ВИДЕОДАННЫХ УСТАНОВЛЕН?
1730 140126 001001 BNE .+4 ;ПЕРЕЙТИ, ЕСЛИ НЕТ
1731 140130 005727 000261 TST #261
1732 140134 000207 RTS %7
1733    
1734 140136 032761 023447 000010 BIT #23447,10(1)
1735 140144 001002 BNE .+6
1736 140146 000241 CLC
1737 140150 000401 BR .+4
1738 140152 000261 SEC
1739 140154 000207 RTS %7
1740    
1741    
1742     ;***********************************************************************
1743     ;
1744     ;ПОДПРОГРАММА ПРОВЕРКИ ПАМЯТИ ВИДЕОДАННЫХ ЗАПИСЬЮ/ СЧИТЫВАНИЕМ
1745     ;ШАХМАТНОГО КОДА. ПРИ ОБНАРУЖЕНИИ ОШИБКИ УСТАНАВЛИВАЕТСЯ С-РАЗРЯД
1746     ;
1747     ;***********************************************************************
1748    
1749 140156 010046 MOV %0,-(6) ;СОХРАНИТЬ В СТЕКЕ R0-R4
1750 140160 010146 MOV %1,-(6)
1751 140162 010246 MOV %2,-(6)
1752 140164 010446 MOV %4,-(6)
1753 140166 013703 172342 MOV @#172342,%3
1754 140172 012705 000001 MOV #1,%5 ;УСТАНОВИТЬ ПРИЗНАК ПРОВЕРКИ ПАМЯТИ ВИДЕОДАННЫХ
1755 140176 004737 162256 JSR %7,@#162256 ;ПРОВЕРИТЬ ПАМЯТЬ ВИДЕОДАННЫХ
1756 140202 012604 MOV (6)+,%4 ;ВОССТАНОВИТЬ R4-R0
1757 140204 012602 MOV (6)+,%2
1758 140206 012601 MOV (6)+,%1
1759 140210 012600 MOV (6)+,%0
1760 140212 000207 RTS %7
1761    
1762     ;***********************************************************************
1763     ;
1764     ;ПОДПРОГРАММА ПРОВЕРКИ ВРЕМЕНИ ФОРМИРОВАНИЯ КАДРА И ПРАВИЛЬНОСТИ
1765     ;ПРЕРЫВАНИЯ ОТ ВИДЕОКОНТРОЛЛЕРА ПО ЗАВЕРШЕНИИ ФОРМИРОВАНИЯ КАДРА
1766     ;
1767     ;***********************************************************************
1768    
1769 140214 010146 MOV %1,-(6) ;СОХРАНИТЬ R1
1770 140216 010001 MOV %0,%1 ;ВЫБРАТЬ НОМЕР ПОЗИЦИИ
1771 140220 072127 000003 ASH #3,%1
1772 140224 012761 140412 000300 MOV #140412,300(1) ;СФОРМИРОВАТЬ ВЕКТОР ПРЕРЫВАНИЯ ОТ
1773     ;ВИДЕОКОНТРОЛЛЕРА С АДРЕСОМ 000320
1774 140232 012761 000340 000302 MOV #340,302(1)
1775 140240 010001 MOV %0,%1
1776 140242 052701 000400 BIS #400,%1
1777 140246 011604 MOV @%6,%4
1778 140250 104002 EMT+2 ;РАЗРЕШИТЬ ПРЕРЫВАНИЕ ОТ ВИДЕОКОНТРОЛЛЕРА
1779     ;ПО ЗАВЕРШЕНИИ ФОРМИРОВАНИЯ КАДРА
1780 140252 012746 140304 MOV #140304,-(6) ;СФОРМИРОВАТЬ АДРЕС ВЫХОДА ИЗ ТРЕТЬЕГО
1781     ;ПРЕРЫВАНИЯ
1782 140256 012702 000003 MOV #3,%2
1783 140262 005003 CLR %3
1784 140264 012764 000101 000004 MOV #101,4(4) ;УСТАНОВИТЬ РК<;06>; И РК<;00>;
1785 140272 005037 177776 CLR @#177776 ;УСТАНОВИТЬ ПРИОРИТЕТ ЦП=0
1786     ;ДОЛЖНЫ ПРОИЗОЙТИ 3 ПРЕРЫВАНИЯ
1787 140276 005203 INC %3 ;СОСЧИТАТЬ КОЛИЧЕСТВО ВЫПОЛНЕНИЙ КОМАНД
1788 140300 001376 BNE .-2 ;INC И BNE МЕЖДУ ВТОРЫМ И ТРЕТЬИМ ПРЕРЫВАНИЕМ,
1789     ;СЧЕТЧИК В R3
1790     ;ПРОВЕРИТЬ ВРЕМЯ ФОРМИРОВАНИЯ КАДРА ( 625 СТРОК )
1791 140302 005726 TST (6)+
1792 140304 020327 010060 CMP %3,#10060 ;R3 МЕНЬШЕ 10060?
1793 140310 002432 BLT 140376 ;ПЕРЕЙТИ НА ОШИБКУ, ЕСЛИ ДА
1794 140312 020327 011711 CMP %3,#11711 ;R3 БОЛЬШЕ 11711?
1795 140316 003027 BGT 140376 ;ПЕРЕЙТИ НА ОШИБКУ, ЕСЛИ ДА
1796 140320 012746 140352 MOV #140352,-(6) ;СФОРМИРОВАТЬ АДРЕС ВЫХОДА ИЗ ТРЕТЬЕГО
1797     ;ПРЕРЫВАНИЯ
1798 140324 012702 000003 MOV #3,%2 ;ВЫБРАТЬ СЧЕТЧИК ПРЕРЫВАНИЙ
1799 140330 005003 CLR %3
1800 140332 012764 000100 000004 MOV #100,4(4) ;УСТАНОВИТЬ РК<;06>;, РК<;00>; ОЧИСТИТЬ
1801 140340 005037 177776 CLR @#177776 ;УСТАНОВИТЬ ПРИОРИТЕТ ЦП=0
1802     ;ДОЛЖНЫ ПРОИЗОЙТИ 3 ПРЕРЫВАНИЯ
1803 140344 005203 INC %3 ;СОСЧИТАТЬ КОЛИЧЕСТВО ВЫПОЛНЕНИЙ КОМАНД
1804 140346 001376 BNE .-2 ;INC И BNE МЕЖДУ ВТОРЫМ И ТРЕТЬИМ ПРЕРЫВАНИЕМ
1805     ;СЧЕТЧИК В R3
1806     ;ПРОВЕРИТЬ ВРЕМЯ ФОРМИРОВАНИЯ КАДРА ( 525 СТРОК )
1807 140350 005726 TST (6)+
1808 140352 020327 006632 CMP %3,#6632 ;R3 МЕНЬШЕ 6632?
1809 140356 002407 BLT 140376 ;ПЕРЕЙТИ НА ОШИБКУ, ЕСЛИ ДА
1810 140360 020327 010237 CMP %3,#10237 ;R3 БОЛЬШЕ 10237?
1811 140364 003004 BGT 140376 ;ПЕРЕЙТИ НА ОШИБКУ, ЕСЛИ ДА
1812 140366 104003 EMT+3 ;ЗАПРЕТИТЬ ПРЕРЫВАНИЕ ОТ ВИДЕОКОНТРОЛЛЕРА
1813 140370 000241 CLC ;ОЧИСТИТЬ С-РАЗРЯД ПРИ ОТСУТСТВИИ ОШИБОК
1814 140372 012601 MOV (6)+,%1
1815 140374 000405 BR 140410
1816 140376 005064 000004 CLR 4(4) ;ОЧИСТИТЬ РК
1817 140402 104003 EMT+3 ;ЗАПРЕТИТЬ ПРЕРЫВАНИЕ ОТ ВИДЕОКОНРОЛЛЕРА
1818 140404 000261 SEC ;УСТАНОВИТЬ С-РАЗРЯД ПРИ НАЛИЧИИ ОШИБОК
1819 140406 012601 MOV (6)+,%1
1820 140410 000207 RTS %7
1821    
1822    
1823     ;ПОДПРОГРАММА ОБРАБОТКИ ПРЕРЫВАНИЯ ОТ ВИДЕОКОНТОЛЛЕРА
1824    
1825 140412 005302 DEC %2 ;ТРЕТЬЕ ПРЕРЫВАНИЕ?
1826 140414 001403 BEQ .+10 ;ПЕРЕЙТИ, ЕСЛИ ДА
1827 140416 012703 000001 MOV #1,%3
1828 140422 000002 RTI
1829 140424 005064 000004 CLR 4(4) ;ОЧИСТИТЬ РК
1830 140430 022626 CMP (6)+,(6)+
1831 140432 000207 RTS %7
1832    
1833    
1834     ;***********************************************************************
1835     ;
1836     ;ПОДПРОГРАММА ПРОВЕРКИ ПРАВИЛЬНОСТИ ПОСТРОЕНИЯ ВЕКТОРА И НАЛИЧИЯ
1837     ;ПРЕРЫВАНИЯ ПО ЗАВЕРШЕНИИ ПОСТРОЕНИЯ ВЕКТОРА
1838     ;
1839     ;***********************************************************************
1840 140434 010146 MOV %1,-(6)
1841 140436 012703 000003 MOV #3,%3 ;ВЫБРАТЬ СЧЕТЧИК ПРЕРЫВАНИЙ
1842 140442 010102 MOV %1,%2
1843 140444 010001 MOV %0,%1 ;ВЫБРАТЬ НОМЕР ПОЗИЦИИ ВИДЕОКОНТРОЛЛЕРА
1844 140446 072127 000003 ASH #3,%1
1845 140452 012761 140766 000304 MOV #140766,304(1) ;СФОРМИРОВАТЬ ВЕКТОР С АДРЕСОМ 000324
1846 140460 012761 000340 000306 MOV #340,306(1)
1847 140466 010001 MOV %0,%1
1848 140470 052701 001000 BIS #1000,%1
1849 140474 104002 EMT+2 ;РАЗРЕШИТЬ ПРЕРЫВАНИЕ ОТ ВИДЕОКОНТРОЛЛЕРА ПО
1850     ;ЗАВЕРШЕНИИ ПОСТРОЕНИЯ ВЕКТОРА
1851 140476 052762 040000 000004 BIS #40000,4(2) ;УСТАНОВИТЬ ТРЕБОВАНИЕ ПРЕРЫВАНИЯ ОТ
1852     ;ВИДЕОКОНТРОЛЛЕРА ПО ЗАВЕРШЕНИИ ПОСТРОЕНИЯ
1853     ;ВЕКТОРА
1854 140504 005037 177776 CLR @#177776 ;УСТАНОВИТЬ ПРИОРИТЕТ ЦП=0
1855     ;ДОЛЖНО ПРОИЗОЙТИ ПРЕРЫВАНИЕ С АДРЕСОМ
1856     ;ВЕКТОРА 000324
1857 140510 005062 000016 CLR 16(2) ;ЗАДАТЬ НАЧ. КООРДИН. ПО Х=0
1858 140514 005062 000020 CLR 20(2) ;ЗАДАТЬ НАЧ. КООРДИН. ПО Y=0
1859 140520 005037 020000 CLR @#20000 ;ЗАПИСАТЬ 0 В ПЕРВУЮ ЯЧЕЙКУ ПАМЯТИ ВИДЕОДАННЫХ
1860 140524 005037 025252 CLR @#25252
1861 140530 012737 000001 025254 MOV #1,@#25254
1862 140536 012762 000037 000024 MOV #37,24(2) ;ЗАДАТЬ ФУНКЦИЮ ЯРКОСТИ
1863 140544 012762 052525 000022 MOV #52525,22(2) ;И ДЛИНУ ВЕКТОРА
1864 140552 012746 012455 MOV #12455,-(6) ;УСТАНОВИТЬ ЗАДЕРЖКУ ДЛЯ ПОСТРОЕНИЯ ВЕКТОРА
1865 140556 005762 000004 TST 4(2) ;ПОСТРОЕНИЕ ВЕКТОРА ЗАКОНЧЕНО?
1866 140562 100405 BMI 140576 ;ПЕРЕЙТИ, ЕСЛИ ДА
1867 140564 005316 DEC @%6 ;ПО ЗАВЕРШЕНИИ ПОСТРОЕНИЯ ВЕКТОРА
1868 140566 001373 BNE 140556 ;ДОЛЖНО ПРОИЗОЙТИ ПРЕРЫВАНИЕ
1869 140570 005726 TST (6)+
1870 140572 000137 140760 JMP @#140760 ;ПЕРЕЙТИ НА ОШИБКУ, ЕСЛИ ПОСТРОЕНИЕ ВЕКТОРА НЕ
1871 140576 005726 TST (6)+ ;ЗАКОНЧЕНО
1872 140600 023727 020000 000037 CMP @#20000,#37 ;ПЕРВАЯ ЯЧЕЙКА = 37?
1873 140606 001064 BNE 140760 ;ПЕРЕЙТИ, ЕСЛИ НЕТ
1874 140610 023727 025252 000037 CMP @#25252,#37 ;ПОСЛЕДНЯЯ ЯЧЕЙКА = 37?
1875 140616 001060 BNE 140760 ;ПЕРЕЙТИ, ЕСЛИ НЕТ
1876 140620 023727 025254 000001 CMP @#25254,#1 ;ДЛИНА ВЕКТОРА ФОРМИРУЕТСЯ ПРАВИЛЬНО?
1877 140626 001054 BNE 140760 ;ПЕРЕЙТИ, ЕСЛИ ДЛИНА ВЕКТОРА ПРЕВЫШАЕТ
1878     ;УКАЗАННУЮ ДЛИНУ
1879 140630 005037 032524 CLR @#32524
1880 140634 012737 000002 032526 MOV #2,@#32526 ;ЗАПИСАТЬ 2 В ЯЧЕЙКУ ПАМЯТИ ВИДЕОДАННЫХ
1881 140642 012762 001777 000024 MOV #1777,24(2) ;ЗАДАТЬ ФУНКЦИЮ ЯРКОСТИ
1882 140650 012762 125252 000022 MOV #125252,22(2) ;ЗАДАТЬ ДЛИНУ ВЕКТОРА
1883 140656 012746 012455 MOV #12455,-(6) ;ЗАДЕРЖКА ДЛЯ ПОСТРОЕНИЯ ВЕКТОРА
1884 140662 005762 000004 TST 4(2) ;ПОСТРОЕНИЕ ВЕКТОРА ЗАКОНЧЕНО?
1885 140666 100405 BMI 140702 ;ПЕРЕЙТИ, ЕСЛИ ДА
1886 140670 005316 DEC @%6 ;ПО ЗАВЕРШЕНИИ ПОСТРОЕНИЯ ВЕКТОРА
1887 140672 001373 BNE 140662 ;ДОЛЖНО ПРОИЗОЙТИ ПРЕРЫВАНИЕ
1888 140674 005726 TST (6)+
1889 140676 000137 140760 JMP @#140760 ;ПЕРЕЙТИ НА ОШИБКУ, ЕСЛИ ПОСТРОЕНИЕ ВЕКТОРА НЕ
1890 140702 005726 TST (6)+ ;ЗАКОНЧЕНО
1891 140704 023727 020000 001777 CMP @#20000,#1777 ;ПЕРВАЯ ЯЧЕЙКА = 377?
1892 140712 001022 BNE 140760 ;ПЕРЕЙТИ НА ОШИБКУ, ЕСЛИ НЕТ
1893 140714 023727 032524 001777 CMP @#32524,#1777 ;ПОСЛЕДНЯЯ ЯЧЕЙКА = 377?
1894 140722 001016 BNE 140760 ;ПЕРЕЙТИ НА ОШИБКУ, ЕСЛИ НЕТ
1895 140724 023727 032526 000002 CMP @#32526,#2 ;ДЛИНА ВЕКТОРА ФОРМИРУЕТСЯ ПРАВИЛЬНО?
1896 140732 001012 BNE 140760 ;ПЕРЕЙТИ НА ОШИБКУ, ЕСЛИ ДЛИНА ВЕКТОРА
1897     ;ПРЕВЫШАЕТ УКАЗАННУЮ ДЛИНУ
1898 140734 012737 000340 177776 MOV #340,@#177776 ;УСТАНОВИТЬ ПРИОРИТЕТ ЦП=7
1899 140742 005062 000004 CLR 4(2)
1900 140746 104003 EMT+3 ;ЗАПРЕТИТЬ ПРЕРЫВАНИЕ ОТ ВИДЕОКОНТРОЛЛЕРА
1901     ;ПО ЗАВЕРШЕНИИ ПОСТРОЕНИЯ ВЕКТОРА
1902 140750 005703 TST %3 ;ПРОИЗОШЛО 3 ПРЕРЫВАНИЯ?
1903 140752 001002 BNE .+6 ;ПЕРЕЙТИ НА ОШИБКУ, ЕСЛИ НЕТ
1904 140754 000241 CLC ;ПРИ ОТСУТСТВИИ ОШИБОК ОЧИСТИТЬ С-РАЗРЯД
1905 140756 000401 BR .+4
1906 140760 000261 SEC ;ПРИ НАЛИЧИИ ОШИБОК УСТАНОВИТЬ С-РАЗРЯД
1907 140762 012601 MOV (6)+,%1
1908 140764 000207 RTS %7
1909    
1910     ;ПОДПРОГРАММА ОБРАБОТКИ ПРЕРЫВАНИЯ С АДРЕСОМ ВЕКТОРА 000324
1911    
1912 140766 005303 DEC %3 ;УМЕНЬШИТЬ СЧЕТЧИК ПРЕРЫВАНИЙ
1913 140770 000002 RTI ;ВЫХОД ИЗ ПРЕРЫВАНИЯ
1914    
1915    
1916     ;***********************************************************
1917     ;ПОДПРОГРАММА ПРОВЕРКИ РЕЖИМОВ МОДИФИКАЦИИ ВИДЕОДАННЫХ
1918     ;************************************************************
1919    
1920     ;ПРОВЕРИТЬ МОДИФИКАЦИЮ ВИДЕОДАННЫХ ПРИ
1921     ;РС<;09-08>;=0
1922     ;РУД<;02-00>;=0,1,2,...,7
1923    
1924 140772 042761 001400 000004 BIC #1400,4(1)
1925 141000 012737 063140 072452 MOV #63140,@#72452
1926 141006 012761 000525 000016 MOV #525,16(1) ;ЗАДАТЬ КООРДИНАТУ ПО X
1927 141014 012761 000252 000020 MOV #252,20(1) ;ЗАДАТЬ КООРДИНАТУ ПО Y
1928 141022 012761 125252 000024 MOV #125252,24(1) ;ЗАДАТЬ ДЛИНУ ВЕКТОРА
1929 141030 046613 000004 BIC 4(6),@%3
1930 141034 012702 142040 MOV #142040,%2 ;ВЫБРАТЬ АДРЕС ДАННЫХ
1931 141040 012761 000014 000022 MOV #14,22(1) ;И ФУНКЦИЮ ЯРКОСТИ
1932 141046 012746 012455 MOV #12455,-(6) ;ЗАДЕРЖКА ДЛЯ ПОСТРОЕНИЯ ВЕКТОРА
1933 141052 005761 000004 TST 4(1) ;ПОСТРОЕНИЕ ВЕКТОРА ЗАКОНЧЕНО?
1934 141056 100405 BMI 141072 ;ПЕРЕЙТИ, ЕСЛИ ДА
1935 141060 005316 DEC @%6
1936 141062 001373 BNE 141052
1937 141064 005726 TST (6)+
1938 141066 000137 142026 JMP @#142026
1939 141072 005726 TST (6)+
1940 141074 022237 072452 CMP (2)+,@#72452 ;ПЕРВ. ЯЧЕЙКА ЗАПОЛНЕНА ПРАВИЛЬНО?
1941 141100 001402 BEQ .+6 ;ПЕРЕЙТИ, ЕСЛИ ДА
1942 141102 000137 142026 JMP @#142026
1943 141106 020227 142060 CMP %2,#142060 ;КОНЕЦ ТАБЛИЦЫ ДАННЫХ?
1944 141112 001403 BEQ .+10 ;ПЕРЕЙТИ, ЕСЛИ ДА
1945 141114 066613 000002 ADD 2(6),@%3 ;УВЕЛИЧИТЬ СОДЕРЖИМОЕ 174406 НА 1
1946 141120 000747 BR 141040 ;ПЕРЕЙТИ НА НАЧАЛО ПРОВЕРКИ
1947    
1948     ;ПРОВЕРИТЬ МОДИФИКАЦИЮ ВИДЕОДАННЫХ
1949     ;ПРИ РС<;09-08>;=01
1950     ;РУД<;02-00>;=0,1,2,...,7
1951    
1952 141122 062761 000400 000004 ADD #400,4(1)
1953 141130 012737 000001 020100 MOV #1,@#20100
1954 141136 012737 000001 020300 MOV #1,@#20300
1955 141144 005037 020500 CLR @#20500
1956 141150 005037 020700 CLR @#20700
1957 141154 012761 001000 000016 MOV #1000,16(1) ;ЗАДАТЬ КООДИНАТУ ПO X
1958 141162 005061 000020 CLR 20(1) ;И ПО Y
1959 141166 012761 052525 000024 MOV #52525,24(1) ;ЗАДАТЬ ДЛИНУ ВЕКТОРА
1960 141174 046613 000004 BIC 4(6),@%3
1961 141200 012761 000004 000022 MOV #4,22(1) ;ЗАДАТЬ ФУНКЦИЮ ЯРКОСТИ
1962 141206 012746 012455 MOV #12455,-(6) ;ЗАДЕРЖКА ДЛЯ ПОСТРОЕНИЯ ВЕКТОРА
1963 141212 005761 000004 TST 4(1) ;ПОСТРОЕНИЕ ВЕКТОРА ЗАКОНЧЕНО?
1964 141216 100405 BMI 141232 ;ПЕРЕЙТИ, ЕСЛИ ДА
1965 141220 005316 DEC @%6
1966 141222 001373 BNE 141212
1967 141224 005726 TST (6)+
1968 141226 000137 142026 JMP @#142026 ;ПЕРЕЙТИ НА ОШИБКУ
1969 141232 005726 TST (6)+
1970 141234 022237 020100 CMP (2)+,@#20100
1971 141240 001402 BEQ .+6
1972 141242 000137 142026 JMP @#142026
1973 141246 022237 020300 CMP (2)+,@#20300
1974 141252 001402 BEQ .+6
1975 141254 000137 142026 JMP @#142026
1976 141260 022237 020500 CMP (2)+,@#20500
1977 141264 001402 BEQ .+6
1978 141266 000137 142026 JMP @#142026
1979 141272 022237 020700 CMP (2)+,@#20700
1980 141276 001402 BEQ .+6
1981 141300 000137 142026 JMP @#142026
1982 141304 020227 142160 CMP %2,#142160 ;КОНЕЦ ТАБЛИЦЫ?
1983 141310 001403 BEQ .+10 ;ПЕРЕЙТИ, ЕСЛИ ДА
1984 141312 066613 000002 ADD 2(6),@%3 ;УВЕЛИЧИТЬ СОДЕРЖИМОЕ РУД НА 1
1985 141316 000730 BR 141200 ;ПЕРЕЙТИ НА НАЧАЛО ПРОВЕРКИ
1986    
1987     ;ПРОВЕРИТЬ МОДИФИКАЦИЮ ВИДЕОДАННЫХ ПРИ
1988     ;РС<;09-08>;=10
1989     ;РУД<;02-00>;=0,1,2,3
1990    
1991 141320 062761 000400 000004 ADD #400,4(1)
1992 141326 005037 020000 CLR @#20000
1993 141332 005037 020176 CLR @#20176
1994 141336 005061 000016 CLR 16(1)
1995 141342 005061 000024 CLR 24(1)
1996 141346 046613 000004 BIC 4(6),@%3
1997 141352 012761 000100 000022 MOV #100,22(1)
1998 141360 012746 012455 MOV #12455,-(6)
1999 141364 005761 000004 TST 4(1)
2000 141370 100405 BMI 141404
2001 141372 005316 DEC @%6
2002 141374 001373 BNE 141364
2003 141376 005726 TST (6)+
2004 141400 000137 142026 JMP @#142026
2005 141404 005726 TST (6)+
2006 141406 022237 020000 CMP (2)+,@#20000
2007 141412 001402 BEQ .+6
2008 141414 000137 142026 JMP @#142026
2009 141420 022237 020176 CMP (2)+,@#20176
2010 141424 001402 BEQ .+6
2011 141426 000137 142026 JMP @#142026
2012 141432 066613 000002 ADD 2(6),@%3
2013 141436 020227 142200 CMP %2,#142200
2014 141442 001343 BNE 141352
2015    
2016     ;ПРОВЕРИТЬ МОДИФИКАЦИЮ ВИДЕОДАННЫХ ПРИ
2017     ;РС<;09-08>;=10
2018     ;РУД<;02-00>;=5,6,7
2019    
2020 141444 066613 000002 ADD 2(6),@%3
2021 141450 005037 020000 CLR @#20000
2022 141454 005037 020174 CLR @#20174
2023 141460 012737 100001 020176 MOV #100001,@#20176
2024 141466 012761 000001 000024 MOV #1,24(1)
2025 141474 012761 000100 000022 MOV #100,22(1)
2026 141502 012746 012455 MOV #12455,-(6)
2027 141506 005761 000004 TST 4(1)
2028 141512 100405 BMI 141526
2029 141514 005316 DEC @%6
2030 141516 001373 BNE 141506
2031 141520 005726 TST (6)+
2032 141522 000137 142026 JMP @#142026
2033 141526 005726 TST (6)+
2034 141530 022237 020000 CMP (2)+,@#20000
2035 141534 001134 BNE 142026
2036 141536 022237 020176 CMP (2)+,@#20176
2037 141542 001131 BNE 142026
2038 141544 020227 142214 CMP %2,#142214
2039 141550 001403 BEQ .+10
2040 141552 066613 000002 ADD 2(6),@%3
2041 141556 000746 BR 141474
2042    
2043     ;ПРОВЕРИТЬ МОДИФИКАЦИЮ ВИДЕОДАННЫХ ПРИ
2044     ;РС<;09-08>;=11
2045     ;РУД<;02-00>;=0,1,2,3
2046    
2047 141560 062761 000400 000004 ADD #400,4(1)
2048 141566 012737 177777 020000 MOV #-1,@#20000
2049 141574 012737 177777 020176 MOV #-1,@#20176
2050 141602 012761 001777 000016 MOV #1777,16(1)
2051 141610 012761 000001 000024 MOV #1,24(1)
2052 141616 046613 000004 BIC 4(6),@%3
2053 141622 012761 000100 000022 MOV #100,22(1)
2054 141630 012746 012455 MOV #12455,-(6)
2055 141634 005761 000004 TST 4(1)
2056 141640 100405 BMI 141654
2057 141642 005316 DEC @%6
2058 141644 001373 BNE 141634
2059 141646 005726 TST (6)+
2060 141650 000137 142026 JMP @#142026
2061 141654 005726 TST (6)+
2062 141656 022237 020000 CMP (2)+,@#20000
2063 141662 001061 BNE 142026
2064 141664 022237 020176 CMP (2)+,@#20176
2065 141670 001056 BNE 142026
2066 141672 066613 000002 ADD 2(6),@%3
2067 141676 020227 142234 CMP %2,#142234
2068 141702 001347 BNE 141622
2069    
2070     ;ПРОВЕРИТЬ МОДИФИКАЦИЮ ВИДЕОДАННЫХ ПРИ
2071     ;РС<;09-08>;=11
2072     ;РУД<;02-00>;=5,6,7
2073    
2074 141704 066613 000002 ADD 2(6),@%3
2075 141710 012737 077776 020000 MOV #77776,@#20000
2076 141716 012737 177777 020002 MOV #-1,@#20002
2077 141724 012737 177777 020176 MOV #-1,@#20176
2078 141732 005061 000024 CLR 24(1)
2079 141736 012761 000100 000022 MOV #100,22(1)
2080 141744 012746 012455 MOV #12455,-(6)
2081 141750 005761 000004 TST 4(1)
2082 141754 100405 BMI 141770
2083 141756 005316 DEC @%6
2084 141760 001373 BNE 141750
2085 141762 005726 TST (6)+
2086 141764 000137 142026 JMP @#142026
2087 141770 005726 TST (6)+
2088 141772 022237 020000 CMP (2)+,@#20000
2089 141776 001013 BNE 142026
2090 142000 022237 020176 CMP (2)+,@#20176
2091 142004 001010 BNE 142026
2092 142006 020227 142250 CMP %2,#142250
2093 142012 001403 BEQ .+10
2094 142014 066613 000002 ADD 2(6),@%3
2095 142020 000746 BR 141736
2096 142022 000241 CLC ;ОЧИСТИТЬ С-РАЗРЯД ПРИ ОТСУТСТВИИ ОШИБОК
2097 142024 000401 BR .+4
2098 142026 000261 SEC ;УСТАНОВИТЬ С-РАЗРЯД ПРИ НАЛИЧИИ ОШИБОК
2099 142030 011666 000004 MOV @%6,4(6)
2100 142034 012626 MOV (6)+,(6)+
2101 142036 000207 RTS %7 ;ВЫХОД ИЗ ПОДПРОГРАММЫ
2102    
2103     ;ТАБЛИЦА ДАННЫХ
2104 142040 063140 063140
2105 142042 031440 031440
2106 142044 052500 052500
2107 142046 125240 125240
2108 142050 177740 177740
2109 142052 125240 125240
2110 142054 000000 000000
2111 142056 177740 177740
2112    
2113 142060 000001 000001
2114 142062 000001 000001
2115 142064 000000 000000
2116 142066 000000 000000
2117    
2118 142070 000000 000000
2119 142072 000001 000001
2120 142074 000001 000001
2121 142076 000000 000000
2122    
2123 142100 000001 000001
2124 142102 000000 000000
2125 142104 000001 000001
2126 142106 000000 000000
2127    
2128 142110 000000 000000
2129 142112 000001 000001
2130 142114 000000 000000
2131 142116 000001 000001
2132    
2133 142120 000001 000001
2134 142122 000001 000001
2135 142124 000001 000001
2136 142126 000001 000001
2137    
2138 142130 000000 000000
2139 142132 000001 000001
2140 142134 000000 000000
2141 142136 000001 000001
2142    
2143 142140 000000 000000
2144 142142 000000 000000
2145 142144 000000 000000
2146 142146 000000 000000
2147    
2148 142150 000001 000001
2149 142152 000001 000001
2150 142154 000001 000001
2151 142156 000001 000001
2152    
2153 142160 000000 000000
2154 142162 000000 000000
2155 142164 177777 177777
2156 142166 177777 177777
2157 142170 000000 000000
2158 142172 000000 000000
2159 142174 177777 177777
2160 142176 177777 177777
2161    
2162 142200 000001 000001
2163 142202 000002 000002
2164 142204 000007 000007
2165 142206 000010 000010
2166 142210 000177 000177
2167 142212 000200 000200
2168    
2169 142214 177777 177777
2170 142216 177777 177777
2171 142220 000000 000000
2172 142222 000000 000000
2173 142224 177777 177777
2174 142226 177777 177777
2175 142230 000000 000000
2176 142232 000000 000000
2177    
2178 142234 137777 137777
2179 142236 077777 077777
2180 142240 167777 167777
2181 142242 017777 017777
2182 142244 177377 177377
2183 142246 000377 000377
2184    
2185 142250   .=142250
2186    
2187     ;***********************************************************************
2188     ;
2189     ;ПОДПРОГРАММА ПРОВЕРКИ СМЕЩЕНИЯ АДРЕСОВ ПАМЯТИ ОТНОСИТЕЛЬНО КАДРОВЫХ
2190     ;СИНХРОИМПУЛЬСОВ
2191     ;
2192     ;***********************************************************************
2193    
2194 142250 012702 020000 MOV #20000,%2 ;ВЫБРАТЬ ВИРТУАЛЬНЫЙ АДРЕС ПАМЯТИ
2195     ;ВИДЕОКОНТРОЛЛЕРА
2196 142254 005012 CLR @%2 ;ЗАПОЛНИТЬ ЯЧЕЙКИ ПАМЯТИ ВИДЕОКОНТРОЛЛЕРА
2197 142256 005062 000176 CLR 176(2)
2198 142262 012762 000001 012600 MOV #1,12600(2)
2199 142270 012762 000002 012776 MOV #2,12776(2)
2200 142276 012762 000003 025200 MOV #3,25200(2)
2201 142304 012762 000004 025376 MOV #4,25376(2)
2202 142312 062761 000125 000014 ADD #125,14(1) ;ЗАДАТЬ ВЕЛИЧИНУ СДВИГА
2203 142320 012746 012455 MOV #12455,-(6) ;ПРОИЗВЕСТИ ЗАДЕРЖКУ ДЛЯ ЗАВЕРШЕНИЯ СМЕЩЕНИЯ
2204 142324 005761 000004 TST 4(1) ;АДРЕСОВ ПАМЯТИ ОТНОСИТЕЛЬНО КАДРОВЫХ
2205 142330 100405 BMI 142344 ;СИНХРОИМПУЛЬСОВ
2206 142332 005316 DEC @%6
2207 142334 001373 BNE 142324
2208 142336 005726 TST (6)+
2209 142340 000137 142442 JMP @#142442
2210 142344 005726 TST (6)+
2211     ;ПРОВЕРИТЬ ЯЧЕЙКИ ПАМЯТИ ПОСЛЕ СМЕЩЕНИЯ
2212 142346 022712 000003 CMP #3,@%2
2213 142352 001033 BNE 142442
2214 142354 022762 000004 000176 CMP #4,176(2)
2215 142362 001027 BNE 142442
2216 142364 162761 000052 000014 SUB #52,14(1) ;ЗАДАТЬ ВЕЛИЧИНУ СДВИГА
2217 142372 012746 012455 MOV #12455,-(6) ;ПРОИЗВЕСТИ ЗАДЕРЖКУ ДЛЯ ЗАВЕРШЕНИЯ СМЕЩЕНИЯ
2218 142376 005761 000004 TST 4(1) ;АДРЕСОВ ПАМЯТИ ОТНОСИТЕЛЬНО КАДРОВЫХ
2219 142402 100405 BMI 142416 ;СИНХРОИМПУЛЬСОВ
2220 142404 005316 DEC @%6
2221 142406 001373 BNE 142376
2222 142410 005726 TST (6)+
2223 142412 000137 142442 JMP @#142442
2224 142416 005726 TST (6)+
2225     ;ПРОВЕРИТЬ ЯЧЕЙКИ ПАМЯТИ ПОСЛЕ СМЕЩЕНИЯ
2226 142420 022712 000001 CMP #1,@%2
2227 142424 001006 BNE 142442
2228 142426 022762 000002 000176 CMP #2,176(2)
2229 142434 001002 BNE .+6
2230 142436 000241 CLC ;ОЧИСТИТЬ С-РАЗРЯД, ПРИ ОТСУТСТВИИ ОШИБОК
2231 142440 000401 BR .+4
2232 142442 000261 SEC ;УСТАНОВИТЬ С-РАЗРЯД, ПРИ НАЛИЧИИ ОШИБОК
2233 142444 000207 RTS %7
2234 142446   .=142446
2235    
2236     ;***********************************************************************
2237     ;
2238     ;ПОДПРОГРАММА АНАЛИЗА РЕЗУЛЬТАТОВ ПРОВЕРКИ МОДУЛЕЙ ВК
2239     ;ПРИ ОТСУТСТВИИ ОШИБОК ВЫВОДИТСЯ " Э Л Е К Т Р О Н И К А "
2240     ;ПРИ НАЛИЧИИ ОШИБОК ВЫВОДИТСЯ ИЗОБРАЖЕНИЕ СИСТЕМНОГО БЛОКА С
2241     ;ЗАШТРИХОВКОЙ НЕИСПРАВНОГО ЭЛЕМЕНТА, КОД ОШИБКИ И ВКЛЮЧАЕТСЯ СВЕТОВАЯ
2242     ;ИНДИКАЦИЯ ОБ ОШИБКЕ
2243     ;
2244     ;***********************************************************************
2245    
2246 142446 004737 155014 JSR PC,@#155014 ;СФОРМИРОВАТЬ В ЯЧЕЙКАХ 002000-002004, 002010
2247     ;АДРЕСА ПОДПРОГРАММ ФОРМИРОВАНИЯ ИЗОБРАЖЕНИЯ
2248     ;НА ЭКРАНЕ МОНИТОРА
2249    
2250     ;АНАЛИЗ РЕЗУЛЬТАТОВ ПРОВЕРКИ УСТРОЙСТВ СИСТЕМНОГО МОДУЛЯ
2251    
2252 142452 012702 117712 MOV #117712,R2 ;ВЫБРАТЬ ВИРТУАЛЬНЫЙ АДРЕС ТАБЛИЦЫ КОНФИГУРАЦИИ ПВК
2253 142456 012703 000015 MOV #15,R3 ;УСТАНОВИТЬ СЧЕТЧИК УСТРОЙСТВ
2254 142462 005037 137556 CLR @#137556 ;ОЧИСТИТЬ ПРИЗНАК ОШИБКИ
2255 142466 105712 TSTB @R2 ;УСТРОЙСТВО ИСПРАВНО?
2256 142470 001410 BEQ 142512 ;ПЕРЕЙТИ, ЕСЛИ ДА
2257 142472 022712 177777 CMP #-1,@R2 ;ЕСТЬ УСТРОЙСТВО?
2258 142476 001405 BEQ 142512 ;ПЕРЕЙТИ, ЕСЛИ НЕТ
2259 142500 005046 CLR -(SP) ;ВЫБРАТЬ КОД СИСТЕМНОГО МОДУЛЯ, РАВНЫЙ 0
2260 142502 004737 142766 JSR PC,@#142766 ;ВЫВЕСТИ ИЗОБРАЖЕНИЕ СИСТЕМНОГО БЛОКА И
2261     ;КЛАВИАТУРЫ С ЗАШТРИХОВКОЙ СИСТЕМНОГО МОДУЛЯ,
2262     ;ВЫВЕСТИ ИДЕНТИФИКАЦИОННЫЙ КОД НЕИСПРАВНОГО
2263     ;УСТРОЙСТВА И НОМЕР ОШИБКИ, ВКЛЮЧИТЬ ВСЕ
2264     ;4 СВЕТОВЫХ ИНДИКАТОРА
2265 142506 005726 TST (SP)+ ;ВОССТАНОВИТЬ УС
2266 142510 000403 BR .+10 ;ПЕРЕЙТИ К АНАЛИЗУ ПРОВЕРКИ МОДУЛЕЙ СИСТЕМНОЙ
2267     ;МАГИСТРАЛИ
2268 142512 162702 000004 SUB #4,R2 ;ПЕРЕЙТИ К СЛЕДУЮЩЕМУ УСТРОЙСТВУ СИСТЕМНОГО
2269     ;МОДУЛЯ
2270 142516 077315 SOB R3,142466
2271    
2272     ;АНАЛИЗ ПРОВЕРКИ МОДУЛЕЙ СИСТЕМНОЙ МАГИСТРАЛИ
2273    
2274 142520 012702 117756 MOV #117756,R2 ;ВЫБРАТЬ ВИРТУАЛЬНЫЙ АДРЕС ТАБЛИЦЫ КОНФИГУРАЦИИ ПВК
2275 142524 012703 000011 MOV #11,R3
2276 142530 026227 000002 177776 CMP 2(R2),#177776 ;ПОЗИЦИЯ ИСПРАВНА?
2277 142536 001405 BEQ 142552 ;ПЕРЕЙТИ, ЕСЛИ НЕТ
2278 142540 105712 TSTB @R2 ;МОДУЛЬ ИСПРАВЕН?
2279 142542 001412 BEQ 142570 ;ПЕРЕЙТИ, ЕСЛИ ДА
2280 142544 022712 177777 CMP #-1,@R2 ;МОДУЛЬ УСТАНОВЛЕН?
2281 142550 001407 BEQ 142570 ;ПЕРЕЙТИ, ЕСЛИ НЕТ
2282 142552 012704 000012 MOV #12,R4
2283 142556 160304 SUB R3,R4
2284 142560 010446 MOV R4,-(SP)
2285 142562 004737 142766 JSR PC,@#142766 ;ВЫВЕСТИ ИЗОБРАЖЕНИЕ СИСТЕМНОГО БЛОКА И
2286     ;КЛАВИАТУРЫ С ЗАШТРИХОВКОЙ НЕИСПРАВНОГО
2287     ;ЭЛЕМЕНТА, НОМЕР ПОЗИЦИИ , НОМЕР ОШИБКИ И
2288     ;ИДЕНТИФИКАЦИОННЫЙ КОД НЕИСПРАВНОГО МОДУЛЯ.
2289     ;ВКЛЮЧИТЬ СВЕТОВУЮ ИНДИКАЦИЮ ОБ ОШИБКЕ
2290 142566 005726 TST (SP)+
2291 142570 162702 000004 SUB #4,R2 ;ПЕРЕЙТИ К СЛЕДУЮЩЕМУ МОДУЛЮ
2292 142574 077323 SOB R3,142530
2293 142576 005737 137556 TST @#137556 ;БЫЛИ ОШИБКИ?
2294 142602 001070 BNE 142764 ;ПЕРЕЙТИ, ЕСЛИ НЕТ
2295    
2296     ;ПРОИЗВЕСТИ РАСПАКОВКУ СООБЩЕНИЯ " Э Л Е К Т Р О Н И К А "
2297 142604 012702 145020 MOV #145020,R2 ;ВЫБРАТЬ АДРЕС ТАБЛИЦЫ КОДИРОВКИ ИЗОБРАЖЕНИЯ
2298     ;" Э Л Е К Т Р О Н И К А "
2299 142610 012746 177777 MOV #-1,-(SP)
2300 142614 012703 060000 MOV #60000,R3
2301 142620 105712 TSTB @R2
2302 142622 001443 BEQ 142732
2303 142624 100022 BPL 142672
2304 142626 005202 INC R2
2305 142630 012723 100312 MOV #100312,(R3)+
2306 142634 016363 177776 000002 MOV 177776(R3),2(R3)
2307 142642 042763 100000 000002 BIC #100000,2(R3)
2308 142650 016363 177776 000006 MOV 177776(R3),6(R3)
2309 142656 005216 INC @SP
2310 142660 011623 MOV @SP,(R3)+
2311 142662 112204 MOVB (R2)+,R4
2312 142664 060423 ADD R4,(R3)+
2313 142666 011623 MOV @SP,(R3)+
2314 142670 000753 BR 142620
2315 142672 112204 MOVB (R2)+,R4
2316 142674 060423 ADD R4,(R3)+
2317 142676 016363 177776 000002 MOV 177776(R3),2(R3)
2318 142704 042763 100000 000002 BIC #100000,2(R3)
2319 142712 016363 177776 000006 MOV 177776(R3),6(R3)
2320 142720 011623 MOV @SP,(R3)+
2321 142722 112204 MOVB (R2)+,R4
2322 142724 060423 ADD R4,(R3)+
2323 142726 011623 MOV @SP,(R3)+
2324 142730 000733 BR 142620
2325 142732 005013 CLR @R3
2326 142734 005726 TST (SP)+
2327 142736 012746 060000 MOV #60000,-(SP)
2328 142742 010337 001022 MOV R3,@#1022
2329 142746 012703 177777 MOV #-1,R3 ;ВЫБРАТЬ ФУНКЦИЮ ЯРКОСТИ
2330 142752 004777 037022 JSR PC,@2000 ;ВЫВЕСТИ СООБЩЕНИЕ " Э Л Е К Т Р О Н И К А "
2331 142756 013703 001022 MOV @#1022,R3
2332 142762 005726 TST (SP)+
2333 142764 000207 RTS PC
2334    
2335    
2336     ;***********************************************************************
2337     ;
2338     ;ПОДПРОГРАММА ВЫВОДА ИЗОБРАЖЕНИЯ СИСТЕМНОГО БЛОКА И КЛАВИАТУРЫ
2339     ;С ЗАШТРИХОВКОЙ НЕИСПРАВНОГО ЭЛЕМЕНТА И КОДОМ ОШИБКИ
2340     ;В 4(SP) - НОМЕР ПОЗИЦИИ, В @R2 - НОМЕР ОШИБКИ, В 2(R2) - ИДЕНТИФИКАЦ.
2341     ;КОД УСТРОЙСТВА
2342     ;
2343     ;***********************************************************************
2344    
2345 142766 005737 137556 TST @#137556 ;ПЕРВАЯ ОШИБКА?
2346 142772 001105 BNE 143206 ;ПЕРЕЙТИ, ЕСЛИ НЕТ
2347 142774 012746 144232 MOV #144232,-(SP) ;ВЫБРАТЬ АДРЕС ТАБЛИЦЫ КООРДИНАТ ДЛЯ ПРОРИСОВКИ
2348     ;ИЗОБРАЖЕНИЯ СИСТЕМНОГО БЛОКА И КЛАВИАТУРЫ
2349 143000 010337 001022 MOV R3,@#1022
2350 143004 012703 177777 MOV #-1,R3
2351 143010 004777 036764 JSR PC,@2000 ;ВЫВЕСТИ НА ЭКРАН МОНИТОРА ИЗОБРАЖЕНИЕ
2352     ;СИТЕМНОГО БЛОКА И КЛАВИАТУРЫ
2353 143014 013703 001022 MOV @#1022,R3
2354 143020 016605 000004 MOV 4(SP),R5 ;ВЫБРАТЬ НОМЕР ПОЗИЦИИ
2355 143024 005705 TST R5 ;НЕИСПРАВНО УСТРОЙСТВО СИСТЕМНОГО МОДУЛЯ?
2356 143026 001401 BEQ .+4 ;ПЕРЕЙТИ, ЕСЛИ ДА
2357 143030 005105 COM R5
2358 143032 010537 173704 MOV R5,@#173704 ;ВКЛЮЧИТЬ СВЕТОВУЮ ИНДИКАЦИЮ ОБ ОШИБКЕ
2359 143036 012705 002172 MOV #2172,R5
2360 143042 016616 000004 MOV 4(SP),@SP ;ВЫБРАТЬ НОМЕР ПОЗИЦИИ
2361 143046 012746 000002 MOV #2,-(SP) ;УСТАНОВИТЬ СЧЕТЧИК ЦИФР
2362 143052 012746 177777 MOV #-1,-(SP)
2363 143056 004737 143244 JSR PC,@#143244 ;ПРОИЗВЕСТИ РАСПАКОВКУ ЧИСЛА (НОМЕРА ПОЗИЦИИ)
2364    
2365 143062 111266 000004 MOVB @R2,4(SP) ;ВЫБРАТЬ НОМЕР ОШИБКИ
2366 143066 012766 000004 000002 MOV #4,2(SP) ;УСТАНОВИТЬ СЧЕТЧИК ЦИФР
2367 143074 005016 CLR @SP
2368 143076 004737 143244 JSR PC,@#143244 ;ПРОИЗВЕСТИ РАСПАКОВКУ ЧИСЛА (НОМЕРА ОШИБКИ)
2369 143102 012766 002172 000004 MOV #2172,4(SP)
2370 143110 012766 001551 000002 MOV #1551,2(SP) ;УСТАНОВИТЬ НАЧАЛЬНУЮ КООРДИНАТУ ПО X
2371 143116 012716 000151 MOV #151,@SP ;УСТАНОВИТЬ НАЧАЛЬНУЮ КООРДИНАТУ ПО Y
2372 143122 004777 036656 JSR PC,@2004 ;ВЫВЕСТИ ПЕРВУЮ СТРОКУ ЦИФР
2373 143126 012705 002172 MOV #2172,R5
2374 143132 016266 000002 000004 MOV 2(R2),4(SP) ;ВЫБРАТЬ ИДЕНТИФИКАЦИОННЫЙ КОД УСТРОЙСТВА
2375 143140 012766 000006 000002 MOV #6,2(SP) ;УСТАНОВИТЬ СЧЕТЧИК ЦИФР
2376 143146 012716 177777 MOV #-1,@SP
2377 143152 004737 143244 JSR PC,@#143244 ;ПРОИЗВЕСТИ РАСПАКОВКУ ЧИСЛА
2378 143156 012766 002172 000004 MOV #2172,4(SP)
2379 143164 012766 001551 000002 MOV #1551,2(SP) ;УСТАНОВИТЬ НАЧАЛЬНУЮ КООРДИНАТУ ПО X
2380 143172 012716 000202 MOV #202,@SP ;УСТАНОВИТЬ НАЧАЛЬНУЮ КООРДТНАТУ ПО Y
2381 143176 004777 036602 JSR PC,@2004 ;ВЫВЕСТИ ВТОРУЮ СТРОКУ ЦИФР
2382 143202 062706 000006 ADD #6,SP
2383 143206 016605 000002 MOV 2(SP),R5
2384 143212 072527 000002 ASH #2,R5
2385 143216 016546 143350 MOV 143350(R5),-(SP) ;ВЫБРАТЬ НАЧАЛЬНУЮ КООРДИНАТУ ПО X ДЛЯ
2386     ;ЗАШТРИХОВКИ НЕИСПРАВНОГО ЭЛЕМЕНТА
2387 143222 016546 143352 MOV 143352(R5),-(SP) ;ВЫБРАТЬ НАЧАЛЬНУЮ КООРДИНАТУ ПО Y
2388     ;ДЛЯ ЗАШТРИХОВКИ НЕИСПРАВНОГО ЭЛЕМЕНТА
2389 143226 004777 036550 JSR PC,@2002 ;ПРОИЗВЕСТИ ЗАШТРИХОВКУ НЕИСПРАВНОГО ЭЛЕМЕНТА
2390 143232 022626 CMP (SP)+,(SP)+
2391 143234 052737 177777 137556 BIS #-1,@#137556 ;УСТАНОВИТЬ ПРИЗНАК ОШИБКИ
2392 143242 000207 RTS PC ;ВЫХОД ИЗ ПОДПРОГРАММЫ
2393    
2394     ;***********************************************************************
2395     ;
2396     ;ПОДПРОГРАММА РАСПАКОВКИ ЧИСЛА В СТРОКУ ЦИФР.
2397     ;ЧИСЛО - В 12(SP), СЧЕТЧИК ЦИФР ЧИСЛА - В 10(SP).
2398     ;ПРИ 6(SP), ОТЛИЧНОМ ОТ 0, УСТАНАВЛИВАЕТСЯ ПРИЗНАК ФОРМИРОВАНИЯ
2399     ;НЕГАТИВНОГО ИЗОБРАЖЕНИЯ
2400     ;
2401     ;***********************************************************************
2402    
2403 143244 010446 MOV R4,-(SP)
2404 143246 010346 MOV R3,-(SP)
2405 143250 016604 000010 MOV 10(SP),R4 ;ВЫБРАТЬ СЧЕТЧИК ЦИФР ЧИСЛА
2406 143254 005304 DEC R4
2407 143256 006304 ASL R4
2408 143260 005003 CLR R3
2409 143262 166466 143334 000012 SUB 143334(R4),12(SP)
2410 143270 100402 BMI .+6
2411 143272 005203 INC R3 ;ПОЛУЧИТЬ ЦИФРУ
2412 143274 000772 BR 143262
2413 143276 066466 143334 000012 ADD 143334(R4),12(SP)
2414 143304 005766 000006 TST 6(SP) ;СФОРМИРОВАТЬ ПРИЗНАК НЕГАТИВНОГО ИЗОБРАЖЕНИЯ?
2415 143310 001402 BEQ .+6 ;ПЕРЕЙТИ, ЕСЛИ НЕТ
2416 143312 052703 000200 BIS #200,R3 ;УСТАНОВИТЬ ПРИЗНАК НЕГАТИВНОГО ИЗОБРАЖЕНИЯ
2417 143316 110325 MOVB R3,(R5)+ ;ЗАПИСАТЬ ЦИФРУ В ТАБЛИЦУ
2418 143320 162704 000002 SUB #2,R4
2419 143324 100355 BPL 143260 ;ПЕРЕЙТИ К РАСПАКОВКЕ СЛЕДУЮЩЕЙ ЦИФРЫ ЧИСЛА
2420 143326 012603 MOV (SP)+,R3
2421 143330 012604 MOV (SP)+,R4
2422 143332 000207 RTS PC ;ВЫХОД ИЗ ПОДПРОГРАММЫ
2423    
2424 143334 000001 000001
2425 143336 000010 000010
2426 143340 000100 000100
2427 143342 001000 001000
2428 143344 010000 010000
2429 143346 100000 100000
2430    
2431    
2432     ;ТАБЛИЦА НАЧАЛЬНЫХ КООРДИНАТ, ИСПОЛЬЗУЕМЫХ ПРИ ЗАШТРИХОВКЕ
2433     ;НЕИСПРАВНЫХ МОДУЛЕЙ
2434 143350 000610 000610 ;НАЧ. КООРДИНАТА ПО X ДЛЯ ЗАШТРИХОВКИ СИСТЕМНОГО
2435     ;МОДУЛЯ
2436 143352 000234 000234 ;НАЧ. КООРДИНАТА ПО Y ДЛЯ ЗАШТРИХОВКИ СИСТЕМНОГО
2437     ;МОДУЛЯ
2438 143354 001362 001362 ;НАЧАЛЬНЫЕ КООРДИНАТЫ ПО X
2439 143356 000261 000261 ;И ПО Y ДЛЯ ЗАШТРИХОВКИ 1-ОЙ ПОЗИЦИИ
2440    
2441 143360 001374 001374 ;НАЧАЛЬНАЯ КООРДИНАТА ПО X
2442 143362 000257 000257 ;И ПО Y ДЛЯ ЗАШТРИХОВКИ 2-ОЙ ПОЗИЦИИ
2443    
2444 143364 001406 001406 ;НАЧАЛЬНЫЕ КООРДИНАТЫ ПО X
2445 143366 000255 000255 ;И ПО Y ДЛЯ ЗАШТРИХОВКИ 3-ЕЙ ПОЗИЦИИ
2446    
2447 143370 001420 001420 ;НАЧАЛЬЧЫЕ КООРДИНАТЫ ПО X
2448 143372 000253 000253 ;И ПО Y ДЛЯ ЗАШТРИХОВКИ 4-ОЙ ПОЗИЦИИ
2449    
2450 143374 001422 001432 ;НАЧАЛЬЧЫЕ КООРДИНАТЫ ПО X
2451 143376 000251 000251 ;И ПО Y ДЛЯ ЗАШТРИХОВКИ 5-ОЙ ПОЗИЦИИ
2452    
2453 143400 001444 001444 ;НАЧАЛЬНЫЕ КООРДИНАТЫ ПО X
2454 143402 000247 000247 ;И ПО Y ДЛЯ ЗАШТРИХОВКИ 6-ОЙ ПОЗИЦИИ
2455 143404 000000 000000
2456 143406 000000 000000
2457 143410 000000 000000
2458 143412 000000 000000
2459 143414 000761 000761 ;НAЧАЛЬНЫЕ КООРДИНАТЫ ПО X
2460 143416 000340 000340 ;И ПО Y ДЛЯ ЗАШТРИХОВКИ КЛАВИАТУРЫ
2461    
2462    
2463     ;***********************************************************************
2464     ;
2465     ;ПОДПРОГРАММА ФОРМИРОВАНИЯ ИЗОБРАЖЕНИЯ ПУТЕМ ПОСЛЕДОВАТЕЛЬНОГО ПОСТРОЕНИЯ
2466     ;ВЕКТОРОВ
2467     ;
2468     ;***********************************************************************
2469 143420 004037 144174 JSR R0,@#144174
2470 143424 013701 002006 MOV @#2006,R1 ;ВЫБРАТЬ АДРЕС ВИДЕОКОНТРОЛЛЕРА
2471 143430 005061 000004 CLR 4(R1)
2472 143434 032761 020000 000004 BIT #20000,4(R1) ;УСТАНОВЛЕН РАСШИРИТЕЛЬ ПАМЯТИ ВИДЕОДАНЫХ?
2473 143442 001004 BNE 143454 ;ПЕРЕЙТИ, ЕСЛИ НЕТ
2474 143444 012761 000002 000010 MOV #2,10(R1)
2475 143452 000403 BR .+10
2476 143454 012761 000002 000006 MOV #2,6(R1)
2477 143462 010361 000024 MOV R3,24(R1) ;ЗАДАТЬ ФУНКЦИЮ ЯРКОСТИ
2478 143466 024646 CMP -(SP),-(SP)
2479 143470 016600 000024 MOV 24(SP),R0 ;ВЫБРАТЬ АДРЕС ТАБЛИЦЫ КООРДИНАТ ДЛЯ ПОСТРОЕНИЯ
2480     ;ИЗОБРАЖЕНИЯ
2481 143474 005710 TST @R0 ;КОНЕЦ ТАБЛИЦЫ?
2482 143476 001412 BEQ 143524 ;ПЕРЕЙТИ, ЕСЛИ ДА
2483 143500 100003 BPL .+10 ;ПЕРЕЙТИ НА ВЫБОРКУ КООРДИНАТ ВТОРОЙ ТОЧКИ
2484    
2485 143502 004737 143530 JSR PC,@#143530 ;ВЫБРАТЬ НАЧАЛЬНЫЕ КООРДИНАТЫ ДЛЯ ПОСТРОЕНИЯ
2486     ;СЛЕДУЮЩЕГО ЭЛЕМЕНТА В ИЗОБРАЖЕНИИ
2487 143506 000772 BR 143474
2488 143510 012066 000002 MOV (R0)+,2(SP) ;ВЫБРАТЬ KООРДИНАТУ ПО X ВТОРОЙ ТОЧКИ
2489 143514 012016 MOV (R0)+,@SP ;ВЫБРАТЬ КООРДИНАТУ ПО Y ВТОРОЙ ТОЧКИ
2490 143516 004737 143550 JSR PC,@#143550 ;ПОСТРОИТЬ ПРЯМУЮ, СОЕДИНЯЮЩУЮ 2 ТОЧКИ ЭКРАНА
2491 143522 000764 BR 143474
2492 143524 022626 CMP (SP)+,(SP)+
2493 143526 000207 RTS PC
2494    
2495     ;ПОДПРОГРАММА ВЫБОРКИ НАЧАЛЬНЫХ КООРДИНАТ ДЛЯ ПОСТРОЕНИЯ
2496     ;ЭЛЕМЕНТА ИЗОБРАЖЕНИЯ
2497    
2498 143530 012037 002010 MOV (R0)+,@#2010 ;ВЫБРАТЬ НАЧАЛЬНУЮ КООРДИНАТУ ПО X
2499 143534 012037 002012 MOV (R0)+,@#2012 ;ВЫБРАТЬ НАЧАЛЬНУЮ КООРДИНАТУ ПО Y
2500 143540 042737 100000 002010 BIC #100000,@#2010
2501 143546 000207 RTS PC
2502    
2503     ;*******************************************************************
2504     ;
2505     ;ПОДПРОГРАММА ПОСТРОЕНИЯ ПРЯМОЙ ЛИНИИ, СОЕДИНЯЮЩЕЙ 2 ТОЧКИ ЭКРАНА,
2506     ;ПУТЕМ ПОСЛЕДОВАТЕЛЬНОГО ПОСТРОЕНИЯ ВЕКТОРОВ ДЛИНОЙ, РАВНОЙ 1
2507     ;В 002010 - КООРДИНАТА ПО X ПЕРВОЙ ТОЧКИ
2508     ;В 002012 - КООРДИНАТА ПО Y ПЕРВОЙ ТОЧКИ
2509     ;В 26(SP) - КООРДИНАТА ПО X ВТОРОЙ ТОЧКИ
2510     ;В 24(SP) - КООРДИНАТА ПО Y ВТОРОЙ ТОЧКИ
2511     ;
2512     ;***********************************************************************
2513    
2514 143550 004037 144174 JSR R0,@#144174 ;СОХРАНИТЬ R1-R5 В СТЕКЕ
2515    
2516 143554 024646 CMP -(SP),-(SP)
2517 143556 005061 000004 CLR 4(R1)
2518 143562 013705 002010 MOV @#2010,R5 ;ВЫБРАТЬ КООРДИНАТУ ПО X ПЕРВОЙ ТОЧКИ
2519 143566 010561 000016 MOV R5,16(R1) ;ЗАДАТЬ КООРДИНАТУ ПО Х ПЕРВОЙ ТОЧКИ (Х1)
2520 143572 013700 002012 MOV @#2012,R0 ;ВЫБРАТЬ КООРДИНАТУ ПО Y ПЕРВОЙ ТОЧКИ
2521 143576 010061 000020 MOV R0,20(R1) ;ЗАДАТЬ КООРДИНАТУ ПО Y ПЕРВОЙ ТОЧКИ (Y1)
2522 143602 016637 000026 002014 MOV 26(SP),@#2014 ;ВЫБРАТЬ КООРДИНАТУ ПО Х ВТОРОЙ ТОЧКИ (Х2)
2523 143610 160537 002014 SUB R5,@#2014 ;ПОЛУЧИТЬ РАЗНОСТЬ КООРДИНАТ ПО Х (X2-X1)
2524 143614 100002 BPL .+6 ;ПЕРЕЙТИ, ЕСЛИ Х2-Х1>;0
2525 143616 005437 002014 NEG @#2014 ;ПОЛУЧИТЬ АБСОЛЮТНУЮ ВЕЛИЧИНУ РАЗНОСТИ ( /Х2-Х1/ )
2526 143622 016637 000024 002016 MOV 24(SP),@#2016 ;ВЫБРАТЬ КООРДИНАТУ ПО Y ВТОРОЙ ТОЧКИ (Y2)
2527 143630 160037 002016 SUB R0,@#2016 ;ПОЛУЧИТЬ РАЗНОСТЬ КООРДИНАТ ПО Y (Y2-Y1)
2528 143634 100002 BPL .+6 ;ПЕРЕЙТИ, ЕСЛИ Y2-Y1>;0
2529 143636 005437 002016 NEG @#2016 ;ПОЛУЧИТЬ АБСОЛЮТНУЮ ВЕЛИЧИНУ РАЗНОСТИ ( /Y2-Y1/ )
2530 143642 026605 000026 CMP 26(SP),R5 ;Х2>;Х1?
2531 143646 003404 BLE 143660 ;ПЕРЕЙТИ, ЕСЛИ НЕТ
2532 143650 012737 000001 002020 MOV #1,@#2020 ;1-->; 2020, ЕСЛИ Х2>;Х1
2533 143656 000403 BR .+10
2534 143660 012737 177777 002020 MOV #-1,@#2020 ;-1-->;2020, ЕСЛИ X2 МЕНЬШЕ ИЛИ РАВНО X1
2535 143666 026600 000024 CMP 24(SP),R0 ;Y2>;Y1?
2536 143672 003404 BLE 143704 ;ПЕРЕЙТИ, ЕСЛИ НЕТ
2537 143674 012737 000001 002022 MOV #1,@#2022 ;1-->; 2022, ЕСЛИ Y2>;Y1
2538 143702 000403 BR .+10
2539 143704 012737 177777 002022 MOV #-1,@#2022 ;-1-->;2022, ЕСЛИ Y2 МЕНЬШЕ ИЛИ РАВНО Y1
2540 143712 010137 002034 MOV R1,@#2034 ;ВЫБРАТЬ АДРЕС ВИДЕОКОНТРОЛЕРА
2541 143716 010137 002036 MOV R1,@#2036 ;ВЫБРАТЬ АДРЕС ВИДЕОКОНТРОЛЕРА
2542 143722 013705 002014 MOV @#2014,R5 ;ВЫБРАТЬ /X2-X1/
2543 143726 013700 002016 MOV @#2016,R0 ;ВЫБРАТЬ /Y2-Y1/
2544 143732 020500 CMP R5,R0 ;/Х2-Х1/ >; /Y2-Y1/ ?
2545 143734 003426 BLE 144012 ;ПЕРЕЙТИ, ЕСЛИ НЕТ
2546 143736 010537 002024 MOV R5,@#2024 ;ВЫБРАТЬ /X2-X1/
2547 143742 010037 002026 MOV R0,@#2026 ;ВЫБРАТЬ /Y2-Y1/
2548 143746 012766 002010 000002 MOV #2010,2(SP) ;ВЫБРАТЬ АДРЕС Х1
2549 143754 012716 002012 MOV #2012,@SP ;ВЫБРАТЬ АДРЕС Y1
2550 143760 062737 000016 002034 ADD #16,@#2034 ;ПОЛУЧИТЬ АДРЕС РЕГИСТРА КООРДИНАТ ПО Х
2551 143766 062737 000020 002036 ADD #20,@#2036 ;ПОЛУЧИТЬ АДРЕС РЕГИСТРА КООРДИНАТ ПО Y
2552 143774 013737 002020 002030 MOV @#2020,@#2030
2553 144002 013737 002022 002032 MOV @#2022,@#2032
2554 144010 000425 BR 144064
2555 144012 010037 002024 MOV R0,@#2024 ;ВЫБРАТЬ /Y2-Y1/
2556 144016 010537 002026 MOV R5,@#2026 ;ВЫБРАТЬ /Х2-Х1/
2557 144022 012766 002012 000002 MOV #2012,2(SP) ;АДРЕС Y1
2558 144030 012716 002010 MOV #2010,@SP ;АДРЕС Х1
2559 144034 062737 000020 002034 ADD #20,@#2034 ;АДРЕС РЕГИСТРА КООРДИНАТ ПО Y
2560 144042 062737 000016 002036 ADD #16,@#2036 ;АДРЕС РЕГИСТРА КООРДИНАТ ПО Х
2561 144050 013737 002022 002030 MOV @#2022,@#2030
2562 144056 013737 002020 002032 MOV @#2020,@#2032
2563 144064 013702 002026 MOV @#2026,R2
2564 144070 163702 002024 SUB @#2024,R2
2565 144074 010205 MOV R2,R5
2566 144076 005003 CLR R3
2567 144100 000427 BR 144160
2568    
2569     ;ПОСТРОИТЬ ЕДИНИЧНЫЙ ВЕКТОР
2570 144102 012761 000001 000022 MOV #1,22(R1) ;ЗАДАТЬ ДЛИНУ ВЕКТОРА = 1
2571 144110 005705 TST R5
2572 144112 003410 BLE 144134
2573 144114 063776 002032 000000 ADD @#2032,@0(SP)
2574 144122 017677 000000 035706 MOV @0(SP),@2036
2575 144130 060205 ADD R2,R5
2576 144132 000404 BR 144144
2577 144134 013700 002026 MOV @#2026,R0
2578 144140 060500 ADD R5,R0
2579 144142 010005 MOV R0,R5
2580 144144 063776 002030 000002 ADD @#2030,@2(SP)
2581 144152 017677 000002 035654 MOV @2(SP),@2034
2582 144160 005203 INC R3
2583 144162 020337 002024 CMP R3,@#2024
2584 144166 003745 BLE 144102
2585 144170 022626 CMP (SP)+,(SP)+
2586 144172 000207 RTS PC
2587    
2588     ;ПОДПРОГРАММА ЗАПИСИ В СТЕК R1-R5
2589    
2590 144174 010146 MOV R1,-(SP)
2591 144176 010246 MOV R2,-(SP)
2592 144200 010346 MOV R3,-(SP)
2593 144202 010446 MOV R4,-(SP)
2594 144204 010546 MOV R5,-(SP)
2595 144206 012746 144214 MOV #144214,-(SP)
2596 144212 000110 JMP @R0
2597    
2598     ;ПОДПРОГРАММА ВЫБОРКИ ИЗ СТЕКА R1-R5
2599    
2600 144214 012605 MOV (SP)+,R5
2601 144216 012604 MOV (SP)+,R4
2602 144220 012603 MOV (SP)+,R3
2603 144222 012602 MOV (SP)+,R2
2604 144224 012601 MOV (SP)+,R1
2605 144226 012600 MOV (SP)+,R0
2606 144230 000207 RTS PC
2607    
2608 144232   .=144232
2609     ;ТАБЛИЦА КООРДИНАТ ДЛЯ ПОСТРОЕНИЯ ИЗОБРАЖЕНИЯ СИСТЕМНОГО БЛОКА
2610     ;И КЛАВИАТУРЫ
2611    
2612 144232 100761 100761
2613 144234 000357 357
2614 144236 000305 305
2615 144240 000250 250
2616 144242 000305 305
2617 144244 000246 246
2618 144246 000761 761
2619 144250 000354 354
2620 144252 001111 1111
2621 144254 000320 320
2622 144256 000435 435
2623 144260 000220 220
2624 144262 000311 311
2625 144264 000246 246
2626 144266 100761 100761
2627 144270 000357 357
2628 144272 001120 1120
2629 144274 000334 334
2630 144276 001111 1111
2631 144300 000322 322
2632 144302 101164 101164
2633 144304 000324 324
2634 144306 000465 465
2635 144310 000220 220
2636 144312 000456 456
2637 144314 000207 207
2638 144316 000465 465
2639 144320 000160 160
2640 144322 000772 772
2641 144324 000122 122
2642 144326 001471 1471
2643 144330 000211 211
2644 144332 001500 1500
2645 144334 000241 241
2646 144336 001471 1471
2647 144340 000253 253
2648 144342 001164 1164
2649 144344 000324 324
2650 144346 101164 101164
2651 144350 000306 306
2652 144352 001164 1164
2653 144354 000255 255
2654 144356 001035 1035
2655 144360 000233 233
2656 144362 101164 101164
2657 144364 000317 317
2658 144366 000601 601
2659 144370 000234 234
2660 144372 000601 601
2661 144374 000231 231
2662 144376 000616 616
2663 144400 000226 226
2664 144402 100601 100601
2665 144404 000231 231
2666 144406 001164 1164
2667 144410 000314 314
2668 144412 001445 1445
2669 144414 000247 247
2670 144416 001445 1445
2671 144420 000253 253
2672 144422 001164 1164
2673 144424 000320 320
2674 144426 101025 101025
2675 144430 000231 231
2676 144432 000705 705
2677 144434 000212 212
2678 144436 100672 100672
2679 144440 000211 211
2680 144442 000505 505
2681 144444 000162 162
2682 144446 000764 764
2683 144450 000130 130
2684 144452 001151 1151
2685 144454 000154 154
2686 144456 001151 1151
2687 144460 000156 156
2688 144462 101151 101151
2689 144464 000154 154
2690 144466 000672 672
2691 144470 000212 212
2692 144472 000672 672
2693 144474 000240 240
2694 144476 000510 510
2695 144500 000210 210
2696 144502 000510 510
2697 144504 000164 164
2698 144506 100705 100705
2699 144510 000240 240
2700 144512 000705 705
2701 144514 000213 213
2702 144516 001033 1033
2703 144520 000174 174
2704 144522 001047 1047
2705 144524 000173 173
2706 144526 001067 1067
2707 144530 000174 174
2708 144532 001067 1067
2709 144534 000167 167
2710 144536 101067 101067
2711 144540 000175 175
2712 144542 001144 1144
2713 144544 000204 204
2714 144546 001151 1151
2715 144550 000210 210
2716 144552 001151 1151
2717 144554 000214 214
2718 144556 101144 101144
2719 144560 000204 204
2720 144562 001137 1137
2721 144564 000212 212
2722 144566 001025 1025
2723 144570 000231 231
2724 144572 001025 1025
2725 144574 000261 261
2726 144576 000705 705
2727 144600 000240 240
2728 144602 101035 101035
2729 144604 000264 264
2730 144606 001035 1035
2731 144610 000234 234
2732 144612 001206 1206
2733 144614 000210 210
2734 144616 001336 1336
2735 144620 000230 230
2736 144622 001336 1336
2737 144624 000261 261
2738 144626 001353 1353
2739 144630 000263 263
2740 144632 101336 101336
2741 144634 000261 261
2742 144636 001164 1164
2743 144640 000306 306
2744 144642 101165 101165
2745 144644 000255 255
2746 144646 001336 1336
2747 144650 000227 227
2748 144652 101164 101164
2749 144654 000306 306
2750 144656 001035 1035
2751 144660 000263 263
2752 144662 001352 1352
2753 144664 000263 263
2754 144666 001352 1352
2755 144670 000226 226
2756 144672 001066 1066
2757 144674 000167 167
2758 144676 101364 101364
2759 144700 000261 261
2760 144702 001364 1364
2761 144704 000224 224
2762 144706 001100 1100
2763 144710 000165 165
2764 144712 101376 101376
2765 144714 000257 257
2766 144716 001376 1376
2767 144720 000222 222
2768 144722 001112 1112
2769 144724 000163 163
2770 144726 101410 101410
2771 144730 000255 255
2772 144732 001410 1410
2773 144734 000220 220
2774 144736 001124 1124
2775 144740 000161 161
2776 144742 101422 101422
2777 144744 000253 253
2778 144746 001422 1422
2779 144750 000216 216
2780 144752 001136 1136
2781 144754 000157 157
2782 144756 101434 101434
2783 144760 000251 251
2784 144762 001434 1434
2785 144764 000214 214
2786 144766 001150 1150
2787 144770 000155 155
2788 144772 101446 101446
2789 144774 000247 247
2790 144776 001446 1446
2791 145000 000212 212
2792 145002 001160 1160
2793 145004 000154 154
2794 145006 101066 101066
2795 145010 000167 167
2796 145012 001164 1164
2797 145014 000154 154
2798 145016 000000 000000
2799    
2800 145020   .=145020
2801     ;КОДИРОВКА ИЗОБРАЖЕНИЯ " Э Л Е К Т Р О Н И К А "
2802    
2803 147510   .=147510
2804     ;ТАБЛИЦА КООРДИНАТ ДЛЯ ПОСТРОЕНИЯ ИЗОБРАЖЕНИЯ ДИСКЕТЫ И ЗНАКА "?"
2805    
2806 151362   .=151362
2807     ;***********************************************************************
2808     ;
2809     ;ПОДПРОГРАММА ЗАШТРИХОВКИ НЕИСПРАВНОГО МОДУЛЯ В ИЗОБРАЖЕНИИ
2810     ;СИСТЕМНОГО БЛОКА И КЛАВИАТУРЫ
2811     ;В 4(SP) - НАЧАЛЬНАЯ КООРДИНАТА ПО X
2812     ;В 2(SP) - НАЧАЛЬНАЯ КООРДИНАТА ПО Y
2813     ;
2814     ;***********************************************************************
2815    
2816 151362 013701 002006 MOV @#2006,R1 ;ВЫБРАТЬ АДРЕС ВИДЕОКОНТРОЛЛЕРА
2817 151366 016637 000004 002040 MOV 4(SP),@#2040 ;ВЫБРАТЬ НАЧАЛЬНУЮ КООРДИНАТУ ПО X
2818 151374 016637 000002 002042 MOV 2(SP),@#2042 ;ВЫБРАТЬ НАЧАЛЬНУЮ КООРДИНАТУ ПО Y
2819 151402 004037 144174 JSR R0,@#144174
2820 151406 012746 000004 MOV #4,-(SP)
2821 151412 012746 000140 MOV #140,-(SP)
2822 151416 011661 000026 MOV @SP,26(R1) ;РАЗМЕСТИТЬ ПАМЯТЬ ВИДЕОДАННЫХ В АДРЕСНОМ
2823     ;ПРОСТРАНСТВЕ 14000000-14077776
2824 151422 032761 020000 000004 BIT #20000,4(R1) ;РАСШИРИТЕЛЬ ПАМЯТИ ВИДЕОДАННЫХ УСТАНОВЛЕН?
2825 151430 001004 BNE 151442 ;ПЕРЕЙТИ, ЕСЛИ НЕТ
2826 151432 012761 000042 000010 MOV #42,10(R1) ;РАЗРЕШИТЬ ДОСТУП К РАСШИРЕННОЙ ПАМЯТИ
2827     ;ВИДЕОДАННЫХ
2828 151440 000403 BR .+10
2829 151442 012761 000042 000006 MOV #42,6(R1) ;РАЗРЕШИТЬ ДОСТУП К ПАМЯТИ ВИДЕОДАННЫХ
2830 151450 006316 ASL @SP
2831 151452 006316 ASL @SP
2832 151454 104005 EMT+5 ;СФОРМИРОВАТЬ КОНСТАНТЫ ПЕРЕРАСПРЕДЕЛЕНИЯ
2833     ;ДЛЯ ДОСТУПА К ПАМЯТИ ВИДЕОДАННЫХ
2834 151456 022626 CMP (SP)+,(SP)+
2835 151460 012704 002144 MOV #2144,R4
2836 151464 012705 002170 MOV #2170,R5
2837 151470 105045 CLRB -(R5)
2838 151472 013746 002040 MOV @#2040,-(SP) ;ВЫБРАТЬ КООРДИНАТУ ПО X
2839 151476 013746 002042 MOV @#2042,-(SP) ;ВЫБРАТЬ КООРДИНАТУ ПО Y
2840 151502 005316 DEC @SP ;УМЕНЬШИТЬ КООРДИНАТУ ПО Y НА 1
2841 151504 004737 153554 JSR PC,@#153554 ;ТОЧКА С ЗАДАННЫМИ КООРДИНАТАМИ НАРИСОВАНА?
2842 151510 103407 BCS 151530 ;ПЕРЕЙТИ, ЕСЛИ ДА
2843 151512 004737 153332 JSR PC,@#153332
2844 151516 016644 000002 MOV 2(SP),-(R4)
2845 151522 011644 MOV @SP,-(R4)
2846 151524 112745 000002 MOVB #2,-(R5)
2847 151530 022626 CMP (SP)+,(SP)+
2848 151532 013746 002040 MOV @#2040,-(SP) ;ВЫБРАТЬ КООРДИНАТУ ПО X
2849 151536 013746 002042 MOV @#2042,-(SP) ;ВЫБРАТЬ КООРДИНАТУ ПО Y
2850 151542 004737 153332 JSR PC,@#153332
2851 151546 012637 002042 MOV (SP)+,@#2042
2852 151552 012637 002040 MOV (SP)+,@#2040
2853 151556 013744 002040 MOV @#2040,-(R4)
2854 151562 013744 002042 MOV @#2042,-(R4)
2855 151566 112745 000001 MOVB #1,-(R5)
2856 151572 105715 TSTB @R5 ;КОНЕЦ ПРОРИСОВКИ?
2857 151574 001002 BNE .+6 ;ПЕРЕЙТИ, ЕСЛИ НЕТ
2858 151576 000137 152442 JMP @#152442 ;ПЕРЕЙТИ НА ВЫХОД ИЗ ПОДПРОГРАММЫ
2859 151602 012437 002046 MOV (R4)+,@#2046
2860 151606 012437 002044 MOV (R4)+,@#2044
2861 151612 112537 002060 MOVB (R5)+,@#2060
2862 151616 012737 000377 002052 MOV #377,@#2052 ;МАКСИМАЛЬНАЯ КООРДИНАТА ПО Y
2863 151624 012737 001777 002050 MOV #1777,@#2050 ;МАКСИМАЛЬНАЯ КООРДИНАТА ПО X
2864 151632 013700 002044 MOV @#2044,R0
2865 151636 053700 002046 BIS @#2046,R0
2866 151642 001002 BNE .+6
2867 151644 000137 152436 JMP @#152436
2868 151650 013746 002044 MOV @#2044,-(SP) ;ВЫБРАТЬ КООРДИНАТУ ПО X
2869 151654 013746 002046 MOV @#2046,-(SP) ;ВЫБРАТЬ КООРДИНАТУ ПО Y
2870 151660 004737 153554 JSR PC,@#153554 ;ТОЧКА С ЗАДАННЫМИ КООРДИНАТАМИ НАРИСОВАНА?
2871 151664 103003 BCC .+10 ;ПЕРЕЙТИ, ЕСЛИ НЕТ
2872 151666 022626 CMP (SP)+,(SP)+
2873 151670 000137 152436 JMP @#152436
2874 151674 022626 CMP (SP)+,(SP)+
2875 151676 013737 002044 002040 MOV @#2044,@#2040
2876 151704 013737 002046 002042 MOV @#2046,@#2042
2877 151712 013746 002040 MOV @#2040,-(SP)
2878 151716 005316 DEC @SP
2879 151720 013746 002042 MOV @#2042,-(SP)
2880 151724 004737 152466 JSR PC,@#152466
2881 151730 022626 CMP (SP)+,(SP)+
2882 151732 023737 002040 002050 CMP @#2040,@#2050
2883 151740 003402 BLE .+6
2884 151742 000137 152436 JMP @#152436
2885 151746 005737 002062 TST @#2062
2886 151752 001425 BEQ 152026
2887 151754 005737 002064 TST @#2064
2888 151760 001422 BEQ 152026
2889 151762 032737 000001 002060 BIT #1,@#2060
2890 151770 001007 BNE 152010
2891 151772 013737 002066 002044 MOV @#2066,@#2044
2892 152000 013737 002070 002046 MOV @#2070,@#2046
2893 152006 000535 BR 152302
2894 152010 013737 002072 002044 MOV @#2072,@#2044
2895 152016 013737 002074 002046 MOV @#2074,@#2046
2896 152024 000526 BR 152302
2897 152026 013746 002040 MOV @#2040,-(SP)
2898 152032 013746 002042 MOV @#2042,-(SP)
2899 152036 004737 153506 JSR PC,@#153506
2900 152042 004737 153332 JSR PC,@#153332
2901 152046 016644 000002 MOV 2(SP),-(R4)
2902 152052 011644 MOV @SP,-(R4)
2903 152054 022626 CMP (SP)+,(SP)+
2904 152056 032737 000001 002060 BIT #1,@#2060
2905 152064 001403 BEQ .+10
2906 152066 112745 000002 MOVB #2,-(R5)
2907 152072 000402 BR .+6
2908 152074 112745 000001 MOVB #1,-(R5)
2909 152100 005737 002062 TST @#2062
2910 152104 001010 BNE 152126
2911 152106 005737 002064 TST @#2064
2912 152112 001405 BEQ 152126
2913 152114 032737 000001 002060 BIT #1,@#2060
2914 152122 001401 BEQ .+4
2915 152124 000412 BR 152152
2916 152126 005737 002064 TST @#2064
2917 152132 001031 BNE 152216
2918 152134 005737 002062 TST @#2062
2919 152140 001426 BEQ 152216
2920 152142 032737 000002 002060 BIT #2,@#2060
2921 152150 001422 BEQ 152216
2922 152152 032737 000001 002060 BIT #1,@#2060
2923 152160 001007 BNE 152200
2924 152162 013737 002066 002044 MOV @#2066,@#2044
2925 152170 013737 002070 002046 MOV @#2070,@#2046
2926 152176 000441 BR 152302
2927 152200 013737 002072 002044 MOV @#2072,@#2044
2928 152206 013737 002074 002046 MOV @#2074,@#2046
2929 152214 000432 BR 152302
2930 152216 013746 002040 MOV @#2040,-(SP)
2931 152222 013746 002042 MOV @#2042,-(SP)
2932 152226 032737 000001 002060 BIT #1,@#2060
2933 152234 001402 BEQ .+6
2934 152236 005316 DEC @SP
2935 152240 000401 BR .+4
2936 152242 005216 INC @SP
2937 152244 004737 153554 JSR PC,@#153554
2938 152250 103407 BCS 152270
2939 152252 004737 153332 JSR PC,@#153332
2940 152256 012637 002046 MOV (SP)+,@#2046
2941 152262 012637 002044 MOV (SP)+,@#2044
2942 152266 000405 BR 152302
2943 152270 022626 CMP (SP)+,(SP)+
2944 152272 005037 002044 CLR @#2044
2945 152276 005037 002046 CLR @#2046
2946 152302 013746 002040 MOV @#2040,-(SP)
2947 152306 013746 002042 MOV @#2042,-(SP)
2948 152312 004737 153420 JSR PC,@#153420
2949 152316 005266 000002 INC 2(SP)
2950 152322 004737 152466 JSR PC,@#152466
2951 152326 004737 153634 JSR PC,@#153634 ;НАРИСОВАТЬ ГОРИЗОНТАЛЬНЫЙ ОТРЕЗОК
2952 152332 013737 002040 002050 MOV @#2040,@#2050
2953 152340 013737 002042 002052 MOV @#2042,@#2052
2954 152346 005737 002062 TST @#2062
2955 152352 001403 BEQ .+10
2956 152354 005737 002064 TST @#2064
2957 152360 001023 BNE 152430
2958 152362 013766 002054 000002 MOV @#2054,2(SP) ;ВЫБРАТЬ КООРДИНАТУ ПО X
2959 152370 013716 002056 MOV @#2056,@SP ;ВЫБРАТЬ КООРДИНАТУ ПО Y
2960 152374 004737 153554 JSR PC,@#153554 ;ТОЧКА С ЗАДАННЫМИ КООРДИНАТАМИ НАРИСОВАНА?
2961 152400 103413 BCS 152430 ;ПЕРЕЙТИ, ЕСЛИ ДА
2962 152402 016644 000002 MOV 2(SP),-(R4)
2963 152406 011644 MOV @SP,-(R4)
2964 152410 005737 002062 TST @#2062
2965 152414 001003 BNE .+10
2966 152416 112745 000001 MOVB #1,-(R5)
2967 152422 000402 BR .+6
2968 152424 112745 000002 MOVB #2,-(R5)
2969 152430 022626 CMP (SP)+,(SP)+
2970 152432 000137 151632 JMP @#151632
2971 152436 000137 151572 JMP @#151572
2972 152442 005061 000006 CLR 6(R1) ;ОЧИСТИТЬ РЕГИСТР УПРАВЛЕНИЯ ДАННЫМИ
2973 152446 005061 000010 CLR 10(R1)
2974 152452 005061 000014 CLR 14(R1) ;ОЧИСТИТЬ РЕГИСТР СДВИГА ИЗОБРАЖЕНИЯ
2975 152456 005061 000004 CLR 4(R1) ;ОЧИСТИТЬ РЕГИСТР КОМАНД
2976 152462 104006 EMT+6 ;ВОССТАНОВИТЬ КОНСТАНТЫ ПЕРЕРАСПРЕДЕЛЕНИЯ ОЗУ
2977 152464 000207 RTS PC ;ВЫХОД ИЗ ПОДПРОГРАММЫ
2978 152466 005037 002062 CLR @#2062
2979 152472 005037 002064 CLR @#2064
2980 152476 005037 002066 CLR @#2066
2981 152502 005037 002070 CLR @#2070
2982 152506 005037 002072 CLR @#2072
2983 152512 005037 002074 CLR @#2074
2984 152516 016646 000004 MOV 4(SP),-(SP)
2985 152522 016646 000004 MOV 4(SP),-(SP)
2986 152526 004737 153332 JSR PC,@#153332
2987 152532 005316 DEC @SP
2988 152534 005366 000002 DEC 2(SP)
2989 152540 004737 153554 JSR PC,@#153554
2990 152544 103002 BCC .+6
2991 152546 005237 002062 INC @#2062
2992 152552 062716 000002 ADD #2,@SP
2993 152556 004737 153554 JSR PC,@#153554
2994 152562 103002 BCC .+6
2995 152564 005237 002064 INC @#2064
2996 152570 005316 DEC @SP
2997 152572 005266 000002 INC 2(SP)
2998 152576 004737 153554 JSR PC,@#153554
2999 152602 103107 BCC 153022
3000 152604 005316 DEC @SP
3001 152606 004737 153554 JSR PC,@#153554
3002 152612 103010 BCC 152634
3003 152614 005366 000002 DEC 2(SP)
3004 152620 004737 153554 JSR PC,@#153554
3005 152624 103405 BCS 152640
3006 152626 005237 002062 INC @#2062
3007 152632 000402 BR .+6
3008 152634 005366 000002 DEC 2(SP)
3009 152640 062716 000002 ADD #2,@SP
3010 152644 004737 153554 JSR PC,@#153554
3011 152650 103410 BCS 152672
3012 152652 005266 000002 INC 2(SP)
3013 152656 004737 153554 JSR PC,@#153554
3014 152662 103005 BCC 152676
3015 152664 005237 002064 INC @#2064
3016 152670 000402 BR .+6
3017 152672 005266 000002 INC 2(SP)
3018 152676 162716 000002 SUB #2,@SP
3019 152702 004737 153554 JSR PC,@#153554
3020 152706 103415 BCS 152742
3021 152710 005366 000002 DEC 2(SP)
3022 152714 004737 153554 JSR PC,@#153554
3023 152720 103012 BCC 152746
3024 152722 016637 000002 002066 MOV 2(SP),@#2066
3025 152730 011637 002070 MOV @SP,@#2070
3026 152734 005237 002066 INC @#2066
3027 152740 000402 BR .+6
3028 152742 005366 000002 DEC 2(SP)
3029 152746 062716 000002 ADD #2,@SP
3030 152752 004737 153554 JSR PC,@#153554
3031 152756 103013 BCC 153006
3032 152760 005266 000002 INC 2(SP)
3033 152764 004737 153554 JSR PC,@#153554
3034 152770 103410 BCS 153012
3035 152772 016637 000002 002072 MOV 2(SP),@#2072
3036 153000 011637 002074 MOV @SP,@#2074
3037 153004 000402 BR .+6
3038 153006 005266 000002 INC 2(SP)
3039 153012 005316 DEC @SP
3040 153014 005266 000002 INC 2(SP)
3041 153020 000666 BR 152576
3042 153022 005316 DEC @SP
3043 153024 004737 153554 JSR PC,@#153554
3044 153030 103010 BCC 153052
3045 153032 005366 000002 DEC 2(SP)
3046 153036 004737 153554 JSR PC,@#153554
3047 153042 103405 BCS 153056
3048 153044 005237 002062 INC @#2062
3049 153050 000402 BR .+6
3050 153052 005366 000002 DEC 2(SP)
3051 153056 062716 000002 ADD #2,@SP
3052 153062 004737 153554 JSR PC,@#153554
3053 153066 103410 BCS 153110
3054 153070 005266 000002 INC 2(SP)
3055 153074 004737 153554 JSR PC,@#153554
3056 153100 103005 BCC 153114
3057 153102 005237 002064 INC @#2064
3058 153106 000402 BR .+6
3059 153110 005266 000002 INC 2(SP)
3060 153114 004737 153554 JSR PC,@#153554
3061 153120 103015 BCC 153154
3062 153122 016646 000002 MOV 2(SP),-(SP)
3063 153126 016646 000002 MOV 2(SP),-(SP)
3064 153132 004737 153420 JSR PC,@#153420
3065 153136 012637 002074 MOV (SP)+,@#2074
3066 153142 012637 002072 MOV (SP)+,@#2072
3067 153146 005237 002072 INC @#2072
3068 153152 000417 BR 153212
3069 153154 005366 000002 DEC 2(SP)
3070 153160 004737 153554 JSR PC,@#153554
3071 153164 103010 BCC 153206
3072 153166 005266 000002 INC 2(SP)
3073 153172 016637 000002 002072 MOV 2(SP),@#2072
3074 153200 011637 002074 MOV @SP,@#2074
3075 153204 000402 BR .+6
3076 153206 005266 000002 INC 2(SP)
3077 153212 162716 000002 SUB #2,@SP
3078 153216 004737 153554 JSR PC,@#153554
3079 153222 103016 BCC 153260
3080 153224 016646 000002 MOV 2(SP),-(SP)
3081 153230 016646 000002 MOV 2(SP),-(SP)
3082 153234 004737 153420 JSR PC,@#153420
3083 153240 012637 002070 MOV (SP)+,@#2070
3084 153244 012637 002066 MOV (SP)+,@#2066
3085 153250 005216 INC @SP
3086 153252 005237 002066 INC @#2066
3087 153256 000420 BR 153320
3088 153260 005366 000002 DEC 2(SP)
3089 153264 004737 153554 JSR PC,@#153554
3090 153270 103010 BCC 153312
3091 153272 005266 000002 INC 2(SP)
3092 153276 016637 000002 002066 MOV 2(SP),@#2066
3093 153304 011637 002070 MOV @SP,@#2070
3094 153310 000402 BR .+6
3095 153312 005266 000002 INC 2(SP)
3096 153316 005216 INC @SP
3097 153320 012637 002056 MOV (SP)+,@#2056
3098 153324 012637 002054 MOV (SP)+,@#2054
3099 153330 000207 RTS PC
3100 153332 016646 000004 MOV 4(SP),-(SP) ;ВЫБРАТЬ КООРДИНАТУ ПО X
3101 153336 016646 000004 MOV 4(SP),-(SP) ;ВЫБРАТЬ КООРДИНАТУ ПО Y
3102 153342 012702 177777 MOV #-1,R2
3103 153346 004737 153554 JSR PC,@#153554 ;ТОЧКА С ЗАДАННЫМИ КООРДИНАТАМИ НАРИСОВАНА?
3104 153352 103401 BCS .+4 ;ПЕРЕЙТИ, ЕСЛИ ДА
3105 153354 005002 CLR R2 ;ОЧИСТИТЬ R2, ЕСЛИ ТОЧКА С КООРДИНАТАМИ X, Y
3106     ;НЕ НАРИСОВАНА
3107 153356 005366 000002 DEC 2(SP) ;УМЕНЬШИТЬ КООРДИНАТУ ПО X
3108 153362 004737 153554 JSR PC,@#153554 ;ТОЧКА С ЗАДАННЫМИ КООРДИНАТАМИ НАРИСОВАНА?
3109 153366 103403 BCS .+10 ;ПЕРЕЙТИ, ЕСЛИ ДА
3110 153370 005702 TST R2
3111 153372 001771 BEQ 153356
3112 153374 000402 BR .+6
3113 153376 005702 TST R2
3114 153400 001366 BNE 153356
3115 153402 005266 000002 INC 2(SP)
3116 153406 012666 000004 MOV (SP)+,4(SP) ;ВЫБРАТЬ КООРДИНАТУ ПО Y
3117 153412 012666 000004 MOV (SP)+,4(SP) ;ВЫБРАТЬ КООРДИНАТУ ПО X
3118 153416 000207 RTS PC
3119 153420 016646 000004 MOV 4(SP),-(SP) ;ВЫБРАТЬ КООРДИНАТУ ПО X
3120 153424 016646 000004 MOV 4(SP),-(SP) ;ВЫБРАТЬ КООРДИНАТУ ПО Y
3121 153430 012702 177777 MOV #-1,R2
3122 153434 004737 153554 JSR PC,@#153554 ;ТОЧКА С ЗАДАННЫМИ КООРДИНАТАМИ НАРИСОВАНА?
3123 153440 103401 BCS .+4 ;ПЕРЕЙТИ, ЕСЛИ ДА
3124 153442 005002 CLR R2 ;ОЧИСТИТЬ R2, ЕСЛИ ТОЧКА С КООРДИНАТАМИ X,Y
3125     ;НЕ НАРИСОВАНА
3126 153444 005266 000002 INC 2(SP) ;УВЕЛИЧИТЬ КООРДИНАТУ ПО X
3127 153450 004737 153554 JSR PC,@#153554 ;ТОЧКА С ЗАДАННЫМИ КООРДИНАТАМИ НАРИСОВАНА?
3128 153454 103403 BCS .+10 ;ПЕРЕЙТИ, ЕСЛИ ДА
3129 153456 005702 TST R2
3130 153460 001771 BEQ 153444
3131 153462 000402 BR .+6
3132 153464 005702 TST R2
3133 153466 001366 BNE 153444
3134 153470 005366 000002 DEC 2(SP)
3135 153474 012666 000004 MOV (SP)+,4(SP) ;ВЫБРАТЬ КООРДИНАТУ ПО Y
3136 153500 012666 000004 MOV (SP)+,4(SP) ;ВЫБРАТЬ КООРДИНАТУ ПО X
3137 153504 000207 RTS PC
3138 153506 016646 000004 MOV 4(SP),-(SP)
3139 153512 016646 000004 MOV 4(SP),-(SP)
3140 153516 005366 000002 DEC 2(SP)
3141 153522 004737 153332 JSR PC,@#153332
3142 153526 005366 000002 DEC 2(SP)
3143 153532 004737 153332 JSR PC,@#153332
3144 153536 005266 000002 INC 2(SP)
3145 153542 012666 000004 MOV (SP)+,4(SP)
3146 153546 012666 000004 MOV (SP)+,4(SP)
3147 153552 000207 RTS PC
3148    
3149     ;ПОДПРОГРАММА ПРОВЕРКИ СОДЕРЖИМОГО РАЗРЯДА ЯЧЕЙКИ ПАМЯТИ
3150     ;ВИДЕОКОНТРОЛЛЕРА
3151     ;АДРЕС ЯЧЕЙКИ И НОМЕР РАЗРЯДА ОПРЕДЕЛЯЮТСЯ ЧЕРЕЗ КООРДИНАТЫ X И Y.
3152     ;ЕСЛИ ТОЧКА (РАЗРЯД) С ЗАДАННЫМИ КООРДИНАТАМИ X И Y НАРИСОВАНА
3153     ;(СОДЕРЖИТ 1), УСТАНАВЛИВАЕТСЯ С-РАЗРЯД. ЕСЛИ ТОЧКА (РАЗРЯД) НЕ
3154     ;НАРИСОВАНА (СОДЕРЖИТ 0), С-РАЗРЯД ОЧИЩАЕТСЯ.
3155    
3156 153554 016600 000002 MOV 2(SP),R0 ;ВЫБРАТЬ КООРДИНЯТУ ПО Y
3157 153560 072027 000007 ASH #7,R0 ;СДВИНУТЬ НА 7 ПОЗИЦИЙ ВЛЕВО
3158 153564 016601 000004 MOV 4(SP),R1 ;ВЫБРАТЬ КООРДИНАТУ ПО X
3159 153570 072127 177775 ASH #177775,R1 ;СДВИНУТЬ НА 3 ПОЗИЦИИ ВПРАВО
3160 153574 060100 ADD R1,R0
3161 153576 062700 020000 ADD #20000,R0 ;ПОЛУЧИТЬ ВИРТУАЛЬНЫЙ АДРЕС ЯЧЕЙКИ ПАМЯТИ
3162     ;ВИДЕОКОНТРОЛЛЕРА
3163 153602 016601 000004 MOV 4(SP),R1 ;ВЫБРАТЬ КООРДИНАТУ ПО X
3164 153606 042701 177760 BIC #177760,R1 ;ПОЛУЧИТЬ НОМЕР РАЗРЯДА В ЯЧЕЙКЕ
3165 153612 010146 MOV R1,-(SP)
3166 153614 012701 000001 MOV #1,R1
3167 153620 072126 ASH (SP)+,R1
3168 153622 030110 BIT R1,@R0 ;ТОЧКА НАРИСОВАНА?
3169 153624 000261 SEC ;УСТАНОВИТЬ С-РАЗРЯД ЕСЛИ ДА
3170 153626 001001 BNE .+4 ;ПЕРЕЙТИ, ЕСЛИ ТОЧКА НАРИСОВАНА
3171 153630 000241 CLC ;ОЧИСТИТЬ С-РАЗРЯД, ЕСЛИ ТОЧКА НЕ НАРИСОВАНА
3172 153632 000207 RTS PC ;ВЫХОД ИЗ ПОДПРОГРАММЫ
3173    
3174     ;ПОДПРОГРАММА ПРОРИСОВКИ ГОРИЗОНТАЛЬНОГО ОТРЕЗКА
3175    
3176 153634 062737 000002 002040 ADD #2,@#2040
3177 153642 013700 002042 MOV @#2042,R0 ;ВЫБРАТЬ КООРДИНАТУ ПО Y
3178 153646 072027 000007 ASH #7,R0 ;СДВИНУТЬ НА 7 ПОЗИЦИЙ ВЛЕВО
3179 153652 013701 002040 MOV @#2040,R1 ;ВЫБРАТЬ КООРДИНАТУ ПО X
3180 153656 072127 177775 ASH #177775,R1 ;СДВИНУТЬ НА 3 ПОЗИЦИИ ВПРАВО
3181 153662 060100 ADD R1,R0
3182 153664 062700 020000 ADD #20000,R0 ;ПОЛУЧИТЬ ВИРТУАЛЬНЫЙ АДРЕС ЯЧЕЙКИ ПАМЯТИ
3183     ;ВИДЕОКОНТРОЛЛЕРА
3184 153670 013701 002040 MOV @#2040,R1 ;ВЫБРАТЬ КООРДИНАТУ ПО X
3185 153674 042701 177760 BIC #177760,R1 ;ПОЛУЧИТЬ НОМЕР РАЗРЯДА В ЯЧЕЙКЕ
3186 153700 010146 MOV R1,-(SP)
3187 153702 012701 000001 MOV #1,R1
3188 153706 072126 ASH (SP)+,R1
3189 153710 030110 BIT R1,@R0 ;ТОЧКА НАРИСОВАНА?
3190 153712 001004 BNE 153724 ;ПЕРЕЙТИ, ЕСЛИ ДА
3191 153714 050110 BIS R1,@R0 ;НАРИСОВАТЬ ТОЧКУ С ЗАДАННЫМИ КООРДИНАТАМИ
3192     ;X И Y
3193 153716 005237 002040 INC @#2040 ;УВЕЛИЧИТЬ КООРДИНАТУ ПО X
3194 153722 000747 BR 153642
3195 153724 005337 002040 DEC @#2040
3196 153730 000207 RTS PC ;ВЫХОД ИЗ ПОДПРОГРАММЫ
3197    
3198     ;***********************************************************************
3199     ;
3200     ;ПОДПРОГРАММА ВЫВОДА ИЗОБРАЖЕНИЯ ЦИФР НА ЭКРАН МОНИТОРА
3201     ;
3202     ;***********************************************************************
3203    
3204 153732 004037 144174 JSR R0,@#144174 ;СОХРАНИТЬ R1-R5 В СТЕКЕ
3205 153736 013701 002006 MOV @#2006,R1 ;ВЫБРАТЬ АДРЕС ВИДЕОКОНРОЛЛЕРА
3206 153742 016604 000024 MOV 24(SP),R4
3207 153746 016661 000022 000016 MOV 22(SP),16(R1) ;ЗАДАТЬ НАЧАЛЬНУЮ КООРДИНАТУ ПО X
3208 153754 012705 000006 MOV #6,R5
3209 153760 016661 000020 000020 MOV 20(SP),20(R1) ;ЗАДАТЬ НАЧАЛЬНУЮ КООРДИНАТУ ПО Y
3210 153766 112400 MOVB (R4)+,R0 ;ВЫБРАТЬ ЦИФРУ
3211 153770 010446 MOV R4,-(SP)
3212 153772 010546 MOV R5,-(SP)
3213 153774 032700 000200 BIT #200,R0 ;ФОРМИРОВАТЬ НЕГАТИВНОЕ ИЗОБРАЖЕНИЕ?
3214 154000 001414 BEQ 154032 ;ПЕРЕЙТИ, ЕСЛИ НЕТ
3215 154002 032761 020000 000004 BIT #20000,4(R1) ;РАСШИРИТЕЛЬ ПАМЯТИ ВИДЕОДАННЫХ УСТАНОВЛЕН?
3216 154010 001004 BNE 154022 ;ПЕРЕЙТИ, ЕСЛИ НЕТ
3217 154012 052761 000001 000010 BIS #1,10(R1) ;РАЗРЕШИТЬ ФОРМИРОВАНИЕ НЕГАТИВНОГО ИЗОБРАЖЕНИЯ
3218     ;В РАСШИРЕННОЙ ПАМЯТИ ВИДЕОДАННЫХ
3219 154020 000412 BR 154046
3220 154022 052761 000001 000006 BIS #1,6(R1) ;РАЗРЕШИТЬ ФОРМИРОВАНИЕ НЕГАТИВНОГО ИЗОБРАЖЕНИЯ
3221     ;В ПАМЯТИ ДАННЫХ
3222    
3223 154030 000406 BR 154046
3224 154032 042761 000001 000006 BIC #1,6(R1) ;ЗАПРЕТИТЬ ФОРМИРОВАНИЕ НЕГАТИВНОГО ИЗОБРАЖЕНИЯ
3225 154040 042761 000001 000010 BIC #1,10(R1)
3226 154046 042700 177600 BIC #177600,R0
3227 154052 010002 MOV R0,R2
3228 154054 072027 000002 ASH #2,R0
3229 154060 060200 ADD R2,R0
3230 154062 006300 ASL R0
3231 154064 062700 154242 ADD #154242,R0 ;ПОЛУЧИТЬ АДРЕС ТАБЛИЦЫ ИЗОБРАЖЕНИЯ ЦИФРЫ
3232 154070 012704 000012 MOV #12,R4 ;УСТАНОВИТЬ ВЫСОТУ МАТРИЦЫ ИЗОБРАЖЕНИЯ ЦИФРЫ
3233 154074 112005 MOVB (R0)+,R5
3234 154076 010146 MOV R1,-(SP)
3235 154100 012701 000010 MOV #10,R1 ;УСТАНОВИТЬ ШИРИНУ МАТРИЦЫ ИЗОБРАЖЕНИЯ ЦИФРЫ
3236 154104 005002 CLR R2
3237 154106 005003 CLR R3
3238 154110 072327 000002 ASH #2,R3
3239 154114 106105 ROLB R5
3240 154116 103403 BCS .+10
3241 154120 042703 000003 BIC #3,R3
3242 154124 000402 BR .+6
3243 154126 052703 000003 BIS #3,R3
3244 154132 077112 SOB R1,154110
3245 154134 073227 000010 ASHC #10,R2
3246 154140 072327 177774 ASH #177774,R3
3247 154144 012705 000002 MOV #2,R5
3248 154150 012601 MOV (SP)+,R1
3249 154152 010361 000024 MOV R3,24(R1)
3250 154156 012761 000014 000022 MOV #14,22(R1)
3251 154164 062761 000014 000016 ADD #14,16(R1)
3252 154172 010261 000024 MOV R2,24(R1)
3253 154176 012761 000014 000022 MOV #14,22(R1)
3254 154204 162761 000014 000016 SUB #14,16(R1)
3255 154212 005261 000020 INC 20(R1)
3256 154216 077523 SOB R5,154152
3257 154220 077453 SOB R4,154074
3258 154222 012605 MOV (SP)+,R5
3259 154224 012604 MOV (SP)+,R4
3260 154226 062761 000030 000016 ADD #30,16(R1)
3261 154234 005305 DEC R5 ;ВСЕ ЦИФРЫ ВЫВЕДЕНЫ?
3262 154236 001250 BNE 153760 ;ПЕРЕЙТИ, ЕСЛИ НЕТ
3263 154240 000207 RTS PC ;ВЫХОД ИЗ ПОДПРОГРАММЫ
3264    
3265     ;ТАБЛИЦА ИЗОБРАЖЕНИЯ ЦИФР
3266    
3267     ;ИЗОБРАЖЕНИЕ ЦИФРЫ 0
3268 154242 056000 056000
3269 154244 050443 050443
3270 154246 042511 042511
3271 154250 016442 016442
3272 154252 000000 000000
3273    
3274     ;ИЗОБРАЖЕНИЕ ЦИФРЫ 1
3275 154254 004000 004000
3276 154256 005014 005014
3277 154260 004010 004010
3278 154262 037010 037010
3279 154264 000000 000000
3280    
3281     ;ИЗОБРАЖЕНИЕ ЦИФРЫ 2
3282 154266 017000 017000
3283 154270 040041 040041
3284 154272 003070 003070
3285 154274 077401 077401
3286 154276 000000 000000
3287    
3288     ;ИЗОБРАЖЕНИЕ ЦИФРЫ 3
3289 154300 077400 077400
3290 154302 010040 010040
3291 154304 040070 040070
3292 154306 037101 037101
3293 154310 000000 000000
3294    
3295     ;ИЗОБРАЖЕНИЕ ЦИФРЫ 4
3296 154312 010000 010000
3297 154314 012030 012030
3298 154316 077422 077422
3299 154320 010020 010020
3300 154322 000000 000000
3301    
3302     ;ИЗОБРАЖЕНИЕ ЦИФРЫ 5
3303 154324 077400 077400
3304 154326 036401 036401
3305 154330 040103 040103
3306 154332 037101 037101
3307 154334 000000 000000
3308    
3309     ;ИЗОБРАЖЕНИЕ ЦИФРЫ 6
3310 154336 036000 036000
3311 154340 000502 000502
3312 154342 041475 041475
3313 154344 036102 036102
3314 154346 000000 000000
3315    
3316     ;ИЗОБРАЖЕНИЕ ЦИФРЫ 7
3317 154350 077400 077400
3318 154352 020100 020100
3319 154354 004020 004020
3320 154356 001004 001004
3321 154360 000000 000000
3322    
3323     ;ИЗОБРАЖЕНИЕ ЦИФРЫ 8
3324 154362 037000 037000
3325 154364 040501 040501
3326 154366 040476 040476
3327 154370 037101 037101
3328 154372 000000 000000
3329    
3330     ;ИЗОБРАЖЕНИЕ ЦИФРЫ 9
3331 154374 017000 017000
3332 154376 060441 060441
3333 154400 040136 040136
3334 154402 017041 017041
3335 154404 000000 000000
3336    
3337     ;ИЗОБРАЖЕНИЕ ЗНАКА " ? "
3338 154406 037000 037000
3339 154410 030101 030101
3340 154412 004010 004010
3341 154414 004000 004000
3342 154416 000000 000000
3343    
3344    
3345     ;*********************************************************************
3346     ;
3347     ;ПОДПРОГРАММА ОЧИСТКИ ЭКРАНА МОНИТОРА
3348     ;
3349     ;**********************************************************************
3350 154420   .=154420
3351 154420 004037 144174 JSR R0,@#144174
3352 154424 013701 002006 MOV @#2006,R1
3353 154430 012761 001000 000004 MOV #1000,4(R1)
3354 154436 012761 000002 000006 MOV #2,6(R1)
3355 154444 012761 001002 000010 MOV #1002,10(R1)
3356 154452 005061 000016 CLR 16(R1)
3357 154456 005061 000020 CLR 20(R1)
3358 154462 005061 000024 CLR 24(R1)
3359 154466 012761 177777 000022 MOV #-1,22(R1)
3360 154474 005761 000004 TST 4(R1)
3361 154500 100375 BPL .-4
3362 154502 005061 000006 CLR 6(R1)
3363 154506 005061 000010 CLR 10(R1)
3364 154512 000207 RTS PC
3365    
3366     ;***********************************************************************
3367     ;
3368     ;ПОДПРОГРАММА ВЫБОРКИ И КОНТРОЛЬНОГО СУММИРОВАНИЯ КОДОВ
3369     ;МИКРО-ПРОГРАММЫ ИЗ ПЗУ МОДУЛЯ. КОДЫ ЗАПИСЫВАЮТСЯ В ЯЧЕЙКИ ОЗУ,
3370     ;НАЧИНАЯ С АДРЕСА 002000
3371     ;
3372     ;***********************************************************************
3373    
3374 154514 113701 001005 MOVB @#1005,R1
3375 154520 042701 177600 BIC #177600,R1
3376 154524 005065 000002 CLR 2(R5) ;УСТАНОВИТЬ УКАЗАТЕЛЬ НА НАЧАЛО ПЗУ МОДУЛЯ
3377 154530 012700 000012 MOV #12,R0
3378 154534 005715 TST @R5 ;ПЕРЕМЕСТИТЬ УКАЗАТЕЛЬ НА БАЙТ 13 ПЗУ МОДУЛЯ
3379 154536 077002 SOB R0,.-2
3380 154540 010246 MOV R2,-(SP)
3381 154542 012700 001000 MOV #1000,R0
3382 154546 012704 000020 MOV #20,R4
3383 154552 111520 MOVB @R5,(R0)+ ;ПЕРЕПИСАТЬ СОДЕРЖИМОЕ БАЙТОВ 13-32 ИЗ ПЗУ
3384 154554 077402 SOB R4,.-2 ;МОДУЛЯ В ОЗУ, НАЧИНАЯ С АДРЕСА 001000
3385 154556 012704 001000 MOV #1000,R4
3386 154562 011602 MOV @SP,R2 ;ВЫБРАТЬ АДРЕС ОЖИДАЕМЫХ ДАННЫХ
3387    
3388     ;ПРОВЕРИТЬ СОДЕРЖИМОЕ БАЙТОВ 13-24 ИЗ ПЗУ МОДУЛЯ НА СОВПАДЕНИЕ С
3389     ;КОНТРОЛЬНОЙ ИНФОРМАЦИЕЙ, ВЫБИРАЕМОЙ ИЗ ЯЧЕЕК 164732-164742
3390     ;ДИАГНОСТИЧЕСКОГО ПЗУ
3391 154564 012700 000012 MOV #12,R0
3392 154570 122224 CMPB (R2)+,(R4)+ ;ДАННЫЕ СОВПАДАЮТ?
3393 154572 001403 BEQ .+10 ;ПЕРЕЙТИ, ЕСЛИ ДА
3394 154574 011602 MOV @SP,R2 ;ВЫБРАТЬ АДРЕС ОЖИДАЕМЫХ ДАННЫХ
3395 154576 000137 154774 JMP @#154774
3396 154602 077006 SOB R0,154570
3397 154604 105737 001017 TSTB @#1017 ;БАЙТ 32 ИЗ ПЗУ МОДУЛЯ = 0?
3398 154610 001012 BNE 154636 ;ПЕРЕЙТИ, ЕСЛИ НЕТ
3399 154612 113737 001015 001022 MOVB @#1015,@#1022 ;ПОЛУЧИТЬ В 001022 СЧЕТЧИК БАЙТОВ МИКРО-ПРОГРАММЫ
3400 154620 113737 001016 001023 MOVB @#1016,@#1023
3401 154626 023727 001022 060000 CMP @#1022,#60000 ;СЧЕТЧИК МЕНЬШЕ 60000?
3402 154634 101403 BLOS .+10 ;ПЕРЕЙТИ , ЕСЛИ ДА
3403 154636 012702 177777 MOV #-1,R2 ;УСТАНОВИТЬ ПРИЗНАК ОШИБКИ
3404 154642 000454 BR 154774
3405 154644 005065 000002 CLR 2(R5) ;УСТАНОВИТЬ УКАЗАТЕЛЬ НА НАЧАЛО ПЗУ МОДУЛЯ
3406 154650 005715 TST @R5 ;ПЕРЕМЕСТИТЬ УКАЗАТЕЛЬ НА НАЧАЛО МИКРО-ПРОГРАММЫ
3407 154652 005337 001012 DEC @#1012
3408 154656 001374 BNE .-6
3409 154660 105737 001014 TSTB @#1014
3410 154664 001403 BEQ .+10
3411 154666 105337 001014 DECB @#1014
3412 154672 000766 BR 154650
3413 154674 012700 002000 MOV #2000,R0 ;ВЫБРАТЬ АДРЕС ОЗУ
3414 154700 013704 001022 MOV @#1022,R4 ;ВЫБРАТЬ СЧЕТЧИК БАЙТОВ МИКРО-ПРОГРАММЫ
3415 154704 006204 ASR R4 ;ПОЛУЧИТЬ СЧЕТЧИК ЯЧЕЕК МИКРО-ПРОГРАММЫ
3416    
3417     ;ПРОИЗВЕСТИ СЧИТЫВАНИЕ МИКРО-ПРОГРАММЫ ИЗ ПЗУ МОДУЛЯ В ОЗУ
3418     ;С ОДНОВРЕМЕННЫМ КОНТРОЛЬНЫМ СУММИРОВАНИЕМ
3419    
3420 154706 012737 177777 001020 MOV #-1,@#1020
3421 154714 010146 MOV R1,-(SP)
3422 154716 111537 001022 MOVB @R5,@#1022 ;СЧИТАТЬ БАЙТ МИКРО-ПРОГРАММЫ
3423 154722 111537 001023 MOVB @R5,@#1023 ;СЧИТАТЬ СЛЕДУЮЩИЙ БАЙТ МИКРО-ПРОГРАММЫ
3424 154726 013701 001022 MOV @#1022,R1 ;ПРОИЗВЕСТИ КОНТРОЛЬНОЕ СУММИРОВАНИЕ
3425 154732 074137 001020 XOR R1,@#1020
3426 154736 000241 CLC
3427 154740 006137 001020 ROL @#1020
3428 154744 005537 001020 ADC @#1020
3429 154750 010120 MOV R1,(R0)+ ;ЗАПИСАТЬ 2 БАЙТА МИКРО-ПРОГРАММЫ В ОЗУ
3430 154752 077417 SOB R4,154716 ;ПЕРЕЙТИ К СЧИТЫВАНИЮ СЛЕДУЮЩИХ КОДОВ
3431     ;МИКРО-ПРОГРАММЫ
3432 154754 012601 MOV (SP)+,R1
3433 154756 005737 001020 TST @#1020 ;КС=0?
3434 154762 001403 BEQ .+10 ;ПЕРЕЙТИ, ЕСЛИ ДА
3435 154764 012702 177776 MOV #177776,R2 ;ОШИБКА КС КОДОВ МИКРО-ПРОГРАММЫ
3436     ;ВЫБРАТЬ КОД 177776 ДЛЯ ЗАПИСИ В ТАБЛИЦУ
3437     ;КОНФИГУРАЦИИ ПВК
3438 154770 000401 BR .+4
3439 154772 005002 CLR R2 ;УСТАНОВИТЬ ПРИЗНАК ОТСУТСТВИЯ ОШИБОК
3440 154774 020216 CMP R2,@SP
3441 154776 001004 BNE 155010
3442 155000 005301 DEC R1
3443 155002 001257 BNE 154542
3444 155004 012702 177777 MOV #-1,R2
3445 155010 005726 TST (SP)+
3446 155012 000207 RTS PC
3447    
3448     ;**********************************************************************
3449     ;
3450     ;ПОДПРОГРАММА ЗАПИСИ АДРЕСОВ ПОДПРОГРАММ ФOРМИРОВАНИЯ ИЗОБРАЖЕНИЯ
3451     ;НА ЭКРАНЕ МОНИТОРА В ЯЧЕЙКИ 002000-0002004,002010
3452     ;
3453     ;***********************************************************************
3454 155014 005037 137556 CLR @#137556 ;ОЧИСТИТЬ ПРИЗНАК ОШИБОК
3455 155020 032737 000020 173700 BIT #20,@#173700 ;МОНИТОР ПОДСОЕДИНЕН?
3456 155026 001003 BNE .+10 ;ПЕРЕЙТИ, ЕСЛИ ДА
3457 155030 012737 000004 173704 MOV #4,@#173704 ;МОНИТОР НЕ ПРИСОЕДИНЕН
3458     ;ВКЛЮЧИТЬ СВЕТОВЫЕ ИНДИКАТОРЫ 1,2,4
3459    
3460     ;ОПРЕДЕЛИТЬ НОМЕР ПОЗИЦИИ ВИДЕОКОНТРОЛЛЕРА, ИСПОЛЬЗУЯ ИДЕНТИФИКАЦИОННЫЙ
3461     ;КОД ВИДЕОКОНТРОЛЛЕРА И СОДЕРЖИМОЕ ТАБЛИЦЫ КОНФИГУРАЦИИ ПВК
3462 155036 005002 CLR R2
3463 155040 010246 MOV R2,-(SP)
3464 155042 011602 MOV @SP,R2
3465 155044 010201 MOV R2,R1
3466 155046 072127 000002 ASH #2,R1
3467 155052 005401 NEG R1
3468 155054 105761 137756 TSTB 137756(R1) ;ИСПРАВНЫЙ МОДУЛЬ?
3469 155060 001047 BNE 155200 ;ПЕРЕЙТИ, ЕСЛИ НЕТ
3470 155062 022761 001002 137760 CMP #1002,137760(R1) ;В ДАННУЮ ПОЗИЦИЮ УСТАНОВЛЕН ВИДЕОКОНТРОЛЛЕР?
3471 155070 001024 BNE 155142 ;ПЕРЕЙТИ, ЕСЛИ НЕТ
3472 155072 012737 143420 002000 MOV #143420,@#2000 ;ВЫБРАТЬ В ЯЧЕЙКИ 002000-002004, 002010
3473 155100 012737 151362 002002 MOV #151362,@#2002 ;АДРЕСА ПОДПРОГРАММ ФОРМИРОВАНИЯ ИЗОБРАЖЕНИЯ
3474 155106 012737 153732 002004 MOV #153732,@#2004
3475 155114 012737 154420 002010 MOV #154420,@#2010
3476 155122 012602 MOV (SP)+,R2
3477 155124 072227 000007 ASH #7,R2
3478 155130 062702 174000 ADD #174000,R2 ;ПОЛУЧИТЬ АДРЕС ВИДЕОКОНТРОЛЛЕРА
3479 155134 010237 002006 MOV R2,@#2006 ;ЗАПИСАТЬ АДРЕС ВИДЕОКОНТРОЛЛЕРА
3480 155140 000207 RTS PC ;ВЫХОД ИЗ ПОДПРОГРАММЫ
3481 155142 010205 MOV R2,R5
3482 155144 012746 000010 MOV #10,-(SP)
3483 155150 004737 167340 JSR PC,@#167340
3484 155154 103410 BCS 155176
3485 155156 013702 164756 MOV @#164756,R2
3486 155162 004737 154514 JSR PC,@#154514
3487 155166 005702 TST R2
3488 155170 001402 BEQ .+6
3489 155172 005726 TST (SP)+
3490 155174 000752 BR 155122
3491 155176 005726 TST (SP)+
3492 155200 005216 INC @SP
3493 155202 021627 000010 CMP @SP,#10
3494 155206 001315 BNE 155042
3495 155210 012737 155242 002000 MOV #155242,@#2000
3496 155216 012737 155242 002002 MOV #155242,@#2002
3497 155224 012737 155242 002004 MOV #155242,@#2004
3498 155232 012737 155242 002010 MOV #155242,@#2010
3499 155240 000730 BR 155122
3500 155242 000207 RTS PC
3501    
3502    
3503     ;***********************************************************************
3504     ;
3505     ;ПОДПРОГРАММА "НАЧАЛЬНЫЙ ЗАГРУЗЧИК" С НГМД
3506     ;ПОДПРОГРАММА ЗАГРУЖАЕТ НУЛЕВОЙ БЛОК ОПЕРАЦИОННОЙ СИСТЕМЫ ( ЗАГРУЗЧИК )
3507     ;
3508     ;*********************************************************************
3509    
3510 155244 005002 CLR R2
3511 155246 020027 000003 CMP R0,#3
3512 155252 003043 BGT 155362
3513 155254 010002 MOV R0,R2
3514 155256 006302 ASL R2
3515 155260 152702 000100 BISB #100,R2
3516 155264 110261 000004 MOVB R2,4(R1) ;ЗАДАТЬ КОМАНДУ " ЧТЕНИЕ СЕКТОРА"
3517 155270 112761 000001 000006 MOVB #1,6(R1) ;ЗАДАТЬ АДРЕС ДОРОЖКИ
3518 155276 112761 000001 000010 MOVB #1,10(R1) ;ЗАДАТЬ АДРЕС СЕКТОРА
3519 155304 112761 000000 000024 MOVB #0,24(R1) ;ЗАПУСТИТЬ КОМАНДУ
3520 155312 132761 000010 000004 BITB #10,4(R1) ;ОЖИДАНИЕ ЗАВЕРШЕНИЯ ОПЕРАЦИИ
3521 155320 001774 BEQ .-6
3522 155322 105761 000004 TSTB 4(R1) ;ПРОИЗОШЛА ОШИБКА?
3523 155326 100415 BMI 155362 ;ПЕРЕЙТИ, ЕСЛИ ДА
3524 155330 005002 CLR R2 ;ВЫБРАТЬ АДРЕС ОЗУ
3525 155332 105761 000022 TSTB 22(R1) ;УСТАНОВИТЬ УКАЗАТЕЛЬ НА НАЧАЛО БУФЕРА
3526 155336 012703 001000 MOV #1000,R3 ;УСТАНОВИТЬ СЧЕТЧИК БАЙТОВ БУФЕРА
3527 155342 005303 DEC R3
3528 155344 002403 BLT .+10
3529 155346 116122 000020 MOVB 20(R1),(R2)+ ;СЧИТАТЬ БУФЕР В ОЗУ
3530 155352 000773 BR 155342
3531 155354 012702 055104 MOV #55104,R2 ;ВЫБРАТЬ ЛОГИЧЕСКОЕ ИМЯ НГМД (DZ)
3532 155360 005727 000261 TST #261
3533 155364 000207 RTS PC
3534    
3535     ;***********************************************************************
3536     ;
3537     ;ПОДПРОГРАММА "НАЧАЛЬНЫЙ ЗАГРУЗЧИК" С НМД
3538     ;ПОДПРОГРАММА ЗАГРУЖАЕТ НУЛЕВОЙ БЛОК ОПЕРАЦИОННОЙ СИСТЕМЫ (ЗАГРУЗЧИК)
3539     ;С НМД
3540     ;
3541     ;**********************************************************************
3542 155366 005002 CLR R2
3543 155370 005700 TST R0
3544 155372 001051 BNE 155516
3545 155374 132761 100000 000020 BITB #100000,20(R1) ;ОЖИДАНИЕ ГОТОВНОСТИ КОНТРОЛЛЕРА
3546 155402 001374 BNE .-6
3547 155404 012761 000000 000014 MOV #0,14(R1) ;ЗАДАТЬ НОМЕР ПОВЕРХНОСТИ
3548 155412 012761 000001 000006 MOV #1,6(R1) ;ЗАДАТЬ АДРЕС СЕКТОРА
3549 155420 012761 000000 000012 MOV #0,12(R1) ;ЗАДАТЬ АДРЕС ЦИЛИНДРА
3550 155426 012761 000040 000016 MOV #40,16(R1) ;ВЫПОЛНИТЬ КОМАНДУ "ЧТЕНИЕ СЕКТОРА"
3551 155434 132761 100000 000020 BITB #100000,20(R1) ;ОЖИДАНИЕ ГОТОВНОСТИ КОНТРОЛЛЕРА
3552 155442 001374 BNE .-6
3553 155444 132761 000200 000020 BITB #200,20(R1)
3554 155452 001774 BEQ .-6
3555 155454 132761 000001 000017 BITB #1,17(R1) ;ПРОИЗОШЛА ОШИБКА?
3556 155462 001015 BNE 155516 ;ПЕРЕЙТИ, ЕСЛИ ДА
3557 155464 005002 CLR R2 ;ВЫБРАТЬ АДРЕС ОЗУ, РАВНЫЙ 000000
3558 155466 012703 000400 MOV #400,R3 ;УСТАНОВИТЬ СЧЕТЧИК СЛОВ БУФЕРА
3559 155472 032761 000200 000020 BIT #200,20(R1)
3560 155500 001774 BEQ .-6
3561 155502 016122 000010 MOV 10(R1),(R2)+ ;СЧИТАТЬ БУФЕР В ОЗУ, НАЧИНАЯ С АДРЕСА 000000
3562 155506 077307 SOB R3,155472
3563 155510 012702 053504 MOV #53504,R2 ;ВЫБРАТЬ ЛОГИЧЕСКОЕ ИМЯ НМД (DW)
3564 155514 005727 000261 TST #261 ;ВЫХОД ИЗ ПОДПРОГРАММЫ
3565 155520 000207 RTS PC
3566    
3567 160000   .=160000
3568 160000 000005 RESET ;ВЫПОЛНИТЬ КОМАНДУ RESET
3569 160002 005737 173406 TST @#173406 ;ЗАДАТЬ РЕЖИМ РАБОТЫ ИНТЕРФЕЙСА ПЕЧАТАЮЩЕГО
3570     ;УСТРОЙСТВА:
3571 160006 012737 000116 173404 MOV #116,@#173404 ;ЗАДАТЬ АСИНХРОННЫЙ РЕЖИМ РАБОТЫ С 8-Ю
3572     ;ИНФОРМАЦИОННЫМИ И 1-СТОПОВЫМ БИТОМ
3573 160014 012737 000276 173404 MOV #276,@#173404 ;ЗАДАТЬ СКОРОСТЬ ОБМЕНА - 9600 БИТ/С
3574 160022 012737 000047 173406 MOV #47,@#173406 ;РАЗРЕШИТЬ ПРИЕМ И ПЕРЕДАЧУ В НОРМАЛЬНОМ РЕЖИМЕ
3575 160030 052737 000200 173700 BIS #200,@#173700 ;РАЗРЕШИТЬ ОСТАНОВ ЭВМ
3576    
3577     ;***********************************************************************
3578     ;
3579     ; ПОДПРОГРАММА ПРОВЕРКИ ЦЕНТРАЛЬНОГО ПРОЦЕССОРА
3580     ;
3581     ;ПРИ ОБНАРУЖЕНИИ ОШИБКИ ПРИ ПРОВЕРКЕ ЦП СВЕТЯТСЯ ВСЕ 4 СВЕТОВЫХ
3582     ;ИНДИКАТОРА, НА ДИСПЛЕЙ ИНФОРМАЦИЯ НЕ ВЫВОДИТСЯ, УПРАВЛЕНИЕ ПО КОМАНДЕ
3583     ;JSR R0,XXXXXX ПЕРЕДАЕТСЯ ЯЧЕЙКЕ XXXXXX, В КОТОРОЙ ЗАПИСАНА КОМАНДА
3584     ;BR .+0 (000777).
3585     ;ПРИ НАЛИЧИИ ПУЛЬТОВОГО ТЕРМИНАЛА ДЛЯ ОПРЕДЕЛЕНИЯ ПРИЧИНЫ ОШИБКИ
3586     ;НЕОБХОДИМО ПРОИЗВЕСТИ ОСТАНОВ И, ИСПОЛЬЗУЯ АДРЕС ОСТАНОВА И СОДЕРЖИМОЕ
3587     ;ВСПОМОГАТЕЛЬНЫХ РЕГИСТРОВ/ЯЧЕЕК, ОПРЕДЕЛИТЬ ПРИЧИНУ ОШИБКИ.
3588     ;***********************************************************************
3589    
3590 160036 012700 000340 MOV #340,R0 ;УСТАНОВИТЬ ПРИОРИТЕТ ЦП = 7
3591 160042 106400 MTPS R0
3592 160044 012706 001002 MOV #1002,SP ;УСТАНОВИТЬ СТЕК
3593 160050 005001 CLR R1 ;ОЧИСТИТЬ РЕГИСТРЫ R1-R5
3594 160052 005002 CLR R2
3595 160054 005003 CLR R3
3596 160056 005004 CLR R4
3597 160060 005005 CLR R5
3598 160062 004037 160070 JSR R0,@#160070 ;ВЫПОЛНИТЬ КОМАНДУ JSR
3599 160066 000777 BR .+0 ;ОШИБКА. ПРЕКРАТИТЬ ВЫПОЛНЕНИЕ ВНУТРЕННЕГО
3600     ;АВТО-ТЕСТА
3601    
3602     ;**********************************************************************
3603     ;ПРОВЕРКА ВЫПОЛНЕНИЯ КОМАНД ВЕТВЛЕНИЯ
3604     ;ПРИ ОЧИСТКЕ ВСЕХ ПРИЗНАКОВ,
3605     ;ПРИ УСТАНОВКЕ ВСЕХ ПРИЗНАКОВ,
3606     ;ПО ПРИЗНАКУ N
3607     ;ОСТАНОВ 160066, R0=160066
3608    
3609 160070 000257 CCC ;ОЧИСТИТЬ ПРИЗНАКИ N,Z,V,C
3610    
3611     ;ПРОВЕРИТЬ КОМАНДЫ ВЕТВЛЕНИЯ
3612 160072 001775 BEQ .-4 ;ПЕРЕЙТИ, ЕСЛИ Z=1
3613 160074 100774 BMI .-6 ;ПЕРЕЙТИ, ЕСЛИ N=1
3614 160076 102773 BVS 160066 ;ПЕРЕЙТИ, ЕСЛИ V=1
3615 160100 103772 BCS 160066 ;ПЕРЕЙТИ, ЕСЛИ C=1
3616 160102 002771 BLT 160066 ;ПЕРЕЙТИ, ЕСЛИ NVV=1
3617 160104 003770 BLE 160066 ;ПЕРЕЙТИ, ЕСЛИ ZV(NVV)=1
3618 160106 101767 BLOS 160066 ;ПЕРЕЙТИ, ЕСЛИ CVZ=1
3619 160110 101015 BHI 160144 ;ПЕРЕЙТИ, ЕСЛИ CVZ=0
3620 160112 100365 BPL 160066 ;ПЕРЕЙТИ, ЕСЛИ N=0
3621 160114 002364 BGE 160066 ;ПЕРЕЙТИ, ЕСЛИ NVV=0
3622 160116 003363 BGT 160066 ;ПЕРЕЙТИ, ЕСЛИ ZV(NVV)=0
3623 160120 002400 BLT .+2 ;ПЕРЕЙТИ, ЕСЛИ NVV=1
3624 160122 000277 SCC ;УСТАНОВИТЬ ПРИЗНАКИ N,Z,V,C
3625    
3626     ;ПРОВЕРИТЬ КОМАНДЫ ВЕТВЛЕНИЯ
3627 160124 001360 BNE 160066 ;ПЕРЕЙТИ, ЕСЛИ Z=0
3628 160126 100357 BPL 160066 ;ПЕРЕЙТИ, ЕСЛИ N=0
3629 160130 102356 BVC 160066 ;ПЕРЕЙТИ, ЕСЛИ V=0
3630 160132 103355 BCC 160066 ;ПЕРЕЙТИ, ЕСЛИ C=0
3631 160134 003354 BGT 160066 ;ПЕРЕЙТИ, ЕСЛИ ZV(NVV)=0
3632 160136 101353 BHI 160066 ;ПЕРЕЙТИ, ЕСЛИ CVZ=0
3633 160140 002752 BLT 160066 ;ПЕРЕЙТИ, ЕСЛИ NVV=1
3634 160142 002002 BGE .+6 ;ПЕРЕЙТИ, ЕСЛИ NVV=0
3635 160144 000270 SEN ;УСТАНОВИТЬ N-РАЗРЯД
3636 160146 000761 BR 160112 ;ПЕРЕЙТИ НА ПРОВЕРКУ КОМАНД ВЕТВЛЕНИЯ
3637    
3638     ;***********************************************************************
3639     ;ПРОВЕРКА ПРАВИЛЬНОСТИ ВЫПОЛНЕНИЯ КОМАНДЫ JSR
3640    
3641 160150 022700 160066 CMP #160066,R0 ;R0 СОДЕРЖИТ АДРЕС КОМАНДЫ, СЛЕДУЮЩЕЙ ЗА JSR?
3642 160154 001344 BNE 160066 ;ПЕРЕЙТИ НА ОШИБКУ, ЕСЛИ НЕТ
3643 160156 022706 001000 CMP #1000,SP ;УС УМЕНЬШИЛСЯ НА 2 ПОСЛЕ ВЫПОЛНЕНИЯ КОМАНДЫ JSR?
3644 160162 001341 BNE 160066 ;ПЕРЕЙТИ НА ОШИБКУ, ЕСЛИ НЕТ
3645 160164 022737 000340 001000 CMP #340,@#1000 ;СОДЕРЖИМОЕ R0 ПРАВИЛЬНО ЗАПИСАНО В СТЕК?
3646 160172 001335 BNE 160066 ;ПЕРЕЙТИ НА ОШИБКУ, ЕСЛИ НЕТ
3647 160174 005726 TST (SP)+ ;УВЕЛИЧИТЬ УС
3648 160176 022706 001002 CMP #1002,SP ;УС = 1002?
3649 160202 001331 BNE 160066 ;ПЕРЕЙТИ НА ОШИБКУ, ЕСЛИ НЕТ
3650     ;***************************************************************
3651     ;ПРОВЕРКА ВЫПОЛНЕНИЯ ОДНОАДРЕСНЫХ КОМАНД С РЕГИСТРОВЫМ
3652     ;МЕТОДОМ АДРЕСАЦИИ (ОПЕРАНД В R1)
3653     ;АДРЕС ОСТАНОВА 160066, R0=160320
3654    
3655 160204 000277 SCC ;УСТАНОВИТЬ ВСЕ ПРИЗНАКИ
3656 160206 005001 CLR R1
3657 160210 001041 BNE 160314
3658 160212 101040 BHI 160314
3659 160214 003037 BGT 160314
3660 160216 005101 COM R1
3661 160220 103035 BCC 160314
3662 160222 003034 BGT 160314
3663 160224 005401 NEG R1
3664 160226 101032 BHI 160314
3665 160230 002431 BLT 160314
3666 160232 006001 ROR R1
3667 160234 103027 BCC 160314
3668 160236 100026 BPL 160314
3669 160240 005501 ADC R1
3670 160242 103424 BCS 160314
3671 160244 000261 SEC
3672 160246 100022 BPL 160314
3673 160250 002021 BGE 160314
3674 160252 006101 ROL R1
3675 160254 103017 BCC 160314
3676 160256 102016 BVC 160314
3677 160260 006201 ASR R1
3678 160262 103014 BCC 160314
3679 160264 102013 BVC 160314
3680 160266 005601 SBC R1
3681 160270 003011 BGT 160314
3682 160272 006301 ASL R1
3683 160274 002407 BLT 160314
3684 160276 005201 INC R1
3685 160300 001405 BEQ 160314
3686 160302 005301 DEC R1
3687 160304 001003 BNE .+10
3688 160306 005701 TST R1
3689 160310 003001 BGT .+4
3690 160312 001402 BEQ .+6
3691 160314 004037 160066 JSR R0,@#160066
3692    
3693     ;***********************************************************************
3694     ;ПРОВЕРКА ВЫПОЛНЕНИЯ ОДНОАДРЕСНЫХ БАЙТОВЫХ
3695     ;КОМАНД И КОМАНДЫ MOVB С РЕГИСТРОВЫМ МЕТОДОМ АДРЕСАЦИИ ОПЕРАНДА
3696     ;(ОПЕРАНД В МЛ. БАЙТЕ R2)
3697     ;АДРЕС ОСТАНОВА 160066, R0=160434
3698    
3699 160320 112702 000377 MOVB #377,R2
3700 160324 001405 BEQ 160340
3701 160326 105002 CLRB R2
3702 160330 101037 BHI 160430
3703 160332 105102 COMB R2
3704 160334 103035 BCC 160430
3705 160336 100034 BPL 160430
3706 160340 105602 SBCB R2
3707 160342 103432 BCS 160430
3708 160344 105202 INCB R2
3709 160346 100030 BPL 160430
3710 160350 105402 NEGB R2
3711 160352 101026 BHI 160430
3712 160354 105302 DECB R2
3713 160356 103024 BCC 160430
3714 160360 003023 BGT 160430
3715 160362 000302 SWAB R2
3716 160364 001421 BEQ 160430
3717 160366 106302 ASLB R2
3718 160370 002017 BGE 160430
3719 160372 106002 RORB R2
3720 160374 103415 BCS 160430
3721 160376 003414 BLE 160430
3722 160400 106202 ASRB R2
3723 160402 103012 BCC 160430
3724 160404 102411 BVS 160430
3725 160406 106102 ROLB R2
3726 160410 100007 BPL 160430
3727 160412 001406 BEQ 160430
3728 160414 105502 ADCB R2
3729 160416 100404 BMI 160430
3730 160420 001003 BNE .+10
3731 160422 105702 TSTB R2
3732 160424 103401 BCS .+4
3733 160426 001402 BEQ .+6
3734 160430 004037 160066 JSR R0,@#160066
3735    
3736     ;***********************************************************************
3737     ;ПРОВЕРКА ВЫПОЛНЕНИЯ КОМАНДЫ MOV С МЕТОДАМИ АДРЕСАЦИИ 27, 37, И 77
3738     ;ОПЕРАНДА ИСТОЧНИКА
3739     ;АДРЕС ОСТАНОВА 160650, R0=160502
3740    
3741 160434 012701 160636 MOV #160636,R1 ;ПРОВЕРИТЬ МЕТОД АДРЕСАЦИИ 27
3742 160440 022701 160636 CMP #160636,R1
3743 160444 001014 BNE 160476
3744 160446 013702 160636 MOV @#160636,R2 ;ПРОВЕРИТЬ МЕТОД АДРЕСАЦИИ 37
3745 160452 013703 160636 MOV @#160636,R3 ;ПРОВЕРИТЬ МЕТОД АДРЕСАЦИИ 37
3746 160456 021102 CMP @R1,R2
3747 160460 001006 BNE 160476
3748 160462 021103 CMP @R1,R3
3749 160464 001004 BNE 160476
3750 160466 017704 000144 MOV @160636,R4 ;ПРОВЕРИТЬ МЕТОД АДРЕСАЦИИ 77
3751 160472 021204 CMP @R2,R4
3752 160474 001402 BEQ .+6
3753 160476 004037 160650 JSR R0,@#160650
3754    
3755    
3756     ;***********************************************************************
3757     ;ПРОВЕРКА ПРЯМОЙ И КОСВЕННОЙ АДРЕСАЦИИ ОПЕРАНДА ИСТОЧНИКА
3758     ;ПО КОМАНДЕ MOV
3759     ;АДРЕС ОСТАНОВА 160650, R0=160636
3760    
3761 160502 012700 160636 MOV #160636,R0
3762 160506 012001 MOV (R0)+,R1
3763 160510 012002 MOV (R0)+,R2 ;АВТОИНКРЕМЕНТНЫЙ МЕТОД
3764 160512 022700 160642 CMP #160642,R0
3765 160516 001045 BNE 160632
3766 160520 011203 MOV @R2,R3 ;КОСВЕННО-РЕГИСТРОВЫЙ МЕТОД
3767 160522 022703 052525 CMP #52525,R3
3768 160526 001041 BNE 160632
3769 160530 012204 MOV (R2)+,R4 ;АВТОИНКРЕМЕНТНЫЙ МЕТОД
3770 160532 020403 CMP R4,R3
3771 160534 001036 BNE 160632
3772 160536 012204 MOV (R2)+,R4 ;АВТОИНКРЕМЕНТНЫЙ МЕТОД
3773 160540 022704 125252 CMP #125252,R4
3774 160544 001032 BNE 160632
3775 160546 014205 MOV -(R2),R5 ;АВТОДЕКРЕМЕНТНЫЙ МЕТОД
3776 160550 020405 CMP R4,R5
3777 160552 001027 BNE 160632
3778 160554 014205 MOV -(R2),R5 ;АВТОДЕКРЕМЕНТНЫЙ МЕТОД
3779 160556 020503 CMP R5,R3
3780 160560 001024 BNE 160632
3781 160562 015001 MOV @-(R0),R1 ;КОСВЕННО-АВТОДЕКРЕМЕНТНЫЙ МЕТОД
3782 160564 020103 CMP R1,R3
3783 160566 001021 BNE 160632
3784 160570 015001 MOV @-(R0),R1 ;КОСВЕННО-АВТОДЕКРЕМЕНТНЫЙ МЕТОД
3785 160572 020401 CMP R4,R1
3786 160574 001016 BNE 160632
3787 160576 013002 MOV @(R0)+,R2 ;КОСВЕННО-АВТОИНКРЕМЕНТНЫЙ МЕТОД
3788 160600 020204 CMP R2,R4
3789 160602 001013 BNE 160632
3790 160604 013002 MOV @(R0)+,R2
3791 160606 020302 CMP R3,R2
3792 160610 001010 BNE 160632
3793 160612 016002 000004 MOV 4(R0),R2 ;ИНДЕКСНЫЙ МЕТОД
3794 160616 020102 CMP R1,R2
3795 160620 001004 BNE 160632
3796 160622 017002 177776 MOV @177776(R0),R2 ;КОСВЕННО-ИНДЕКСНЫЙ МЕТОД
3797 160626 020302 CMP R3,R2
3798 160630 001410 BEQ 160652
3799 160632 004037 160650 JSR R0,@#160650
3800    
3801     ;ДАННЫЕ
3802    
3803 160636 160642 160642
3804 160640 160644 160644
3805 160642 125252 125252
3806 160644 052525 052525
3807 160646 125252 125252
3808    
3809 160650 000777 BR .+0 ;ОШИБКА. ПРЕКРАТИТЬ ВЫПОЛНЕНИЕ ВНУТРЕННЕГО
3810     ;АВТО-ТЕСТА
3811    
3812     ;***********************************************************************
3813     ;ПРОВЕРКА ПРЯМОЙ И КОСВЕННОЙ АДРЕСАЦИИ ОПЕРАНДА ПРИЕМНИКА
3814     ;ПО КОМАНДЕ MOV
3815     ;АДРЕС ОСТАНОВА 161470, R0=161006
3816    
3817 160652 012700 161436 MOV #161436,R0
3818 160656 012001 MOV (R0)+,R1
3819 160660 012002 MOV (R0)+,R2
3820 160662 012003 MOV (R0)+,R3
3821 160664 011304 MOV @R3,R4
3822 160666 010305 MOV R3,R5
3823 160670 011172 000010 MOV @R1,@10(R2) ;КОСВЕННО-ИНДЕКСНЫЙ МЕТОД
3824 160674 022170 000020 CMP (R1)+,@20(R0)
3825 160700 001040 BNE 161002
3826 160702 011166 177776 MOV @R1,177776(SP) ;ИНДЕКСНЫЙ МЕТОД
3827 160706 022166 177776 CMP (R1)+,177776(SP)
3828 160712 001033 BNE 161002
3829 160714 011133 MOV @R1,@(R3)+ ;КОСВЕННО-АВТОИНКРЕМЕНТНЫЙ МЕТОД
3830 160716 022135 CMP (R1)+,@(R5)+
3831 160720 001030 BNE 161002
3832 160722 020305 CMP R3,R5
3833 160724 001026 BNE 161002
3834 160726 022705 161466 CMP #161466,R5
3835 160732 001023 BNE 161002
3836 160734 011153 MOV @R1,@-(R3) ;КОСВЕННО-АВТОДЕКРЕМЕНТНЫЙ МЕТОД
3837 160736 022155 CMP (R1)+,@-(R5)
3838 160740 001020 BNE 161002
3839 160742 020102 CMP R1,R2
3840 160744 001016 BNE 161002
3841 160746 010405 MOV R4,R5 ;РЕГИСТРОВЫЙ МЕТОД
3842 160750 011114 MOV @R1,@R4 ;КОСВЕННО-РЕГИСТРОВЫЙ МЕТОД
3843 160752 022115 CMP (R1)+,@R5
3844 160754 001012 BNE 161002
3845 160756 011124 MOV @R1,(R4)+ ;АВТОИНКРЕМЕНТНЫЙ МЕТОД
3846 160760 022125 CMP (R1)+,(R5)+
3847 160762 001007 BNE 161002
3848 160764 020405 CMP R4,R5
3849 160766 001005 BNE 161002
3850 160770 020604 CMP SP,R4
3851 160772 001003 BNE .+10
3852 160774 011145 MOV @R1,-(R5) ;АВТОДЕКРЕМЕНТНЫЙ МЕТОД
3853 160776 022144 CMP (R1)+,-(R4)
3854 161000 001402 BEQ .+6
3855 161002 004037 161470 JSR R0,@#161470
3856    
3857     ;***********************************************************************
3858     ;ПРОВЕРКА ПРАВИЛЬНОСТИ ВЫПОЛНЕНИЯ КОМАНДЫ MOV С МЕТОДАМИ АДРЕСАЦИИ
3859     ;37 И 77 ОПЕРАНДА ПРИЕМНИКА
3860     ;АДРЕС ОСТАНОВА 161470 R0=161056
3861    
3862 161006 012702 161440 MOV #161440,R2
3863 161012 012203 MOV (R2)+,R3
3864 161014 012204 MOV (R2)+,R4
3865 161016 011405 MOV @R4,R5
3866 161020 010637 001000 MOV SP,@#1000 ;МЕТОД АДРЕСАЦИИ 37
3867 161024 020615 CMP SP,@R5
3868 161026 001011 BNE 161052
3869 161030 011237 001000 MOV @R2,@#1000 ;МЕТОД АДРЕСАЦИИ 37
3870 161034 021215 CMP @R2,@R5
3871 161036 001005 BNE 161052
3872 161040 012777 052525 000416 MOV #52525,@161464 ;МЕТОД АДРЕСАЦИИ 77
3873 161046 021315 CMP @R3,@R5
3874 161050 001402 BEQ .+6
3875 161052 004037 161470 JSR R0,@#161470
3876    
3877     ;**********************************************************************
3878     ;ПРОВЕРКА ВЫПОЛНЕНИЯ ОДНОАДРЕСНЫХ КОМАНД СО
3879     ;ВСЕМИ МЕТОДАМИ ПРЯМОЙ И КОСВЕННОЙ АДРЕСАЦИИ
3880     ;АДРЕС ОСТАНОВА 161470, R0=161132
3881    
3882 161056 012702 161442 MOV #161442,R2
3883 161062 011203 MOV @R2,R3
3884 161064 011304 MOV @R3,R4
3885 161066 005014 CLR @R4
3886 161070 005124 COM (R4)+
3887 161072 005444 NEG -(R4)
3888 161074 006033 ROR @(R3)+
3889 161076 005553 ADC @-(R3)
3890 161100 000261 SEC
3891 161102 006172 000022 ROL @22(R2)
3892 161106 006266 177776 ASR 177776(SP)
3893 161112 005614 SBC @R4
3894 161114 006324 ASL (R4)+
3895 161116 005244 INC -(R4)
3896 161120 005333 DEC @(R3)+
3897 161122 005753 TST @-(R3)
3898 161124 001402 BEQ .+6
3899 161126 004037 161470 JSR R0,@#161470
3900    
3901     ;***********************************************************************
3902     ;ПРОВЕРКА ВЫПОЛНЕНИЯ ОДНОАДРЕСНЫХ БАЙТОВЫХ
3903     ;КОМАНД СО ВСЕМИ МЕТОДАМИ ПРЯМОЙ И КОСВЕННОЙ АДРЕСАЦИИ
3904     ;АДРЕС ОСТАНОВА 161470, R0=161206
3905    
3906 161132 012714 177777 MOV #-1,@R4
3907 161136 105014 CLRB @R4
3908 161140 105124 COMB (R4)+
3909 161142 105644 SBCB -(R4)
3910 161144 105233 INCB @(R3)+
3911 161146 105453 NEGB @-(R3)
3912 161150 105372 000022 DECB @22(R2)
3913 161154 000366 177776 SWAB 177776(SP)
3914 161160 106314 ASLB @R4
3915 161162 006024 ROR (R4)+
3916 161164 106244 ASRB -(R4)
3917 161166 106133 ROLB @(R3)+
3918 161170 105553 ADCB @-(R3)
3919 161172 105724 TSTB (R4)+
3920 161174 001002 BNE .+6
3921 161176 105724 TSTB (R4)+
3922 161200 001402 BEQ .+6
3923 161202 004037 161470 JSR R0,@#161470
3924    
3925     ;***********************************************************************
3926     ;ПРОВЕРКА ВЫПОЛНЕНИЯ КОМАНДЫ MOVB С ИСПОЛЬЗОВАНИЕМ МЕТОДОВ АДРЕСАЦИИ
3927     ;1,2,3 ОПЕРАНДА ИСТОЧНИКА
3928     ;АДРЕС ОСТАНОВА 161470, R0=161300
3929    
3930 161206 012701 161442 MOV #161442,R1
3931 161212 011104 MOV @R1,R4
3932 161214 011403 MOV @R4,R3
3933 161216 014102 MOV -(R1),R2
3934 161220 014105 MOV -(R1),R5
3935 161222 005013 CLR @R3 ;ОЧИСТИТЬ R3
3936 161224 113134 MOVB @(R1)+,@(R4)+ ;КОСВЕННО-АВТОИНКРЕМЕНТНЫЙ МЕТОД
3937 161226 121513 CMPB @R5,@R3
3938 161230 001021 BNE 161274
3939 161232 111305 MOVB @R3,R5 ;КОСВЕННО-РЕГИСТРОВЫЙ МЕТОД
3940 161234 113113 MOVB @(R1)+,@R3 ;КОСВЕННО-АВТОИНКРЕМЕНТНЫЙ МЕТОД
3941 161236 121254 CMPB @R2,@-(R4)
3942 161240 001015 BNE 161274
3943 161242 011302 MOV @R3,R2
3944 161244 022705 177652 CMP #177652,R5
3945 161250 001011 BNE 161274
3946 161252 022702 000125 CMP #125,R2
3947 161256 001006 BNE 161274
3948 161260 113104 MOVB @(R1)+,R4 ;КОСВЕННО-АВТОИНКРЕМЕНТНЫЙ МЕТОД
3949 161262 120304 CMPB R3,R4
3950 161264 001003 BNE .+10
3951 161266 112103 MOVB (R1)+,R3 ;АВТОИНКРЕМЕНТНЫЙ МЕТОД
3952 161270 120503 CMPB R5,R3
3953 161272 001402 BEQ .+6
3954 161274 004037 161470 JSR R0,@#161470
3955    
3956     ;***********************************************************************
3957     ;ПРОВЕРКА ВЫПОЛНЕНИЯ КОМАНД BIS, BIT, BIC, BISB, BITB, BICB
3958     ;АДРЕС ОСТАНОВА 161470, R0=161436
3959    
3960    
3961 161300 012700 161436 MOV #161436,R0 ;ЗАГРУЗИТЬ РЕГИСТРЫ
3962 161304 012001 MOV (R0)+,R1 ;161444 -->; R1
3963 161306 012002 MOV (R0)+,R2 ;161454 -->; R2
3964 161310 012003 MOV (R0)+,R3 ;161464 -->; R3
3965 161312 011304 MOV @R3,R4 ;001000 -->; R4
3966 161314 012700 177777 MOV #-1,R0 ;177777 -->; R0
3967 161320 000277 SCC ;УСТАНОВИТЬ ПРИЗНАКИ N,Z,V,C
3968 161322 050005 BIS R0,R5 ;ПРОВЕРИТЬ КОМАНДУ BIS
3969 161324 100042 BPL 161432 ;ПЕРЕЙТИ, ЕСЛИ НЕ УСТАНОВЛЕН ПРИЗНАК N
3970 161326 041205 BIC @R2,R5 ;ПРОВЕРИТЬ КОМАНДУ BIC
3971 161330 032205 BIT (R2)+,R5 ;ПРОВЕРИТЬ КОМАНДУ BIT
3972 161332 001037 BNE 161432 ;ПЕРЕЙТИ, ЕСЛИ НЕ УСТАНОВЛЕН ПРИЗНАК Z
3973 161334 050033 BIS R0,@(R3)+ ;ПРОВЕРИТЬ КОМАНДУ BIS
3974 161336 100035 BPL 161432 ;ПЕРЕЙТИ, ЕСЛИ НЕ УСТАНОВЛЕН ПРИЗНАК N
3975 161340 042153 BIC (R1)+,@-(R3) ;ПРОВЕРИТЬ КОМАНДУ BIC
3976 161342 100433 BMI 161432 ;ПЕРЕЙТИ, ЕСЛИ НЕ ОЧИЩЕН ПРИЗНАК N
3977 161344 031214 BIT @R2,@R4 ;ПРОВЕРИТЬ КОМАНДУ BIT
3978 161346 001031 BNE 161432 ;ПЕРЕЙТИ, ЕСЛИ НЕ УСТАНОВЛЕН ПРИЗНАК Z
3979 161350 022137 001000 CMP (R1)+,@#1000 ;ПРОВЕРИТЬ КОМАНДУ BIC
3980     ;(1000)=052525?
3981 161354 001026 BNE 161432 ;ПЕРЕЙТИ, ЕСЛИ НЕТ
3982 161356 022205 CMP (R2)+,R5 ;ПРОВЕРИТЬ КОМАНДУ BIC
3983     ;(R5)=125252?
3984 161360 001024 BNE 161432 ;ПЕРЕЙТИ, ЕСЛИ НЕТ
3985 161362 150005 BISB R0,R5 ;ПРОВЕРИТЬ КОМАНДУ BISB
3986 161364 100022 BPL 161432 ;ПЕРЕЙТИ, ЕСЛИ НЕ УСТАНОВЛЕН ПРИЗНАК N
3987 161366 144205 BICB -(R2),R5 ;ПРОВЕРИТЬ КОМАНДУ BICB
3988 161370 100420 BMI 161432 ;ПЕРЕЙТИ, ЕСЛИ НЕ ОЧИЩЕН ПРИЗНАК N
3989 161372 131205 BITB @R2,R5 ;ПРОВЕРИТЬ КОМАНДУ BITB
3990 161374 001016 BNE 161432 ;ПЕРЕЙТИ, ЕСЛИ НЕ УСТАНОВЛЕН ПРИЗНАК Z
3991 161376 000305 SWAB R5 ;ПЕРЕСТАВИТЬ БАЙТЫ В R5 (R5=52652)
3992 161400 100014 BPL 161432 ;ПЕРЕЙТИ, ЕСЛИ НЕ УСТАНОВЛЕН ПРИЗНАК N
3993 161402 130514 BITB R5,@R4 ;ПРОВЕРИТЬ КОМАНДУ BITB
3994 161404 001012 BNE 161432 ;ПЕРЕЙТИ, ЕСЛИ НЕ УСТАНОВЛЕН ПРИЗНАК Z
3995 161406 150514 BISB R5,@R4 ;ПРОВЕРИТЬ КОМАНДУ BISB
3996 161410 100010 BPL 161432 ;ПЕРЕЙТИ, ЕСЛИ НЕ УСТАНОВЛЕН ПРИЗНАК N
3997 161412 000314 SWAB @R4
3998 161414 100406 BMI 161432 ;ПЕРЕЙТИ, ЕСЛИ НЕ УСТАНОВЛЕН ПРИЗНАК N
3999 161416 131233 BITB @R2,@(R3)+ ;ПРОВЕРИТЬ КОМАНДУ BITB
4000 161420 001004 BNE 161432 ;ПЕРЕЙТИ, ЕСЛИ НЕ ОЧИЩЕН ПРИЗНАК Z
4001 161422 144153 BICB -(R1),@-(R3) ;ПРОВЕРИТЬ КОМАНДУ BICB
4002 161424 001002 BNE .+6 ;ПЕРЕЙТИ, ЕСЛИ НЕ ОЧИЩЕН ПРИЗНАК Z
4003 161426 021214 CMP @R2,@R4 ;ПРОВЕРИТЬ КОМАНДУ BISB
4004 161430 001020 BNE 161472
4005 161432 004037 161470 JSR R0,@#161470
4006    
4007     ;ДАННЫЕ
4008    
4009 161436 161444 161444
4010 161440 161454 161454
4011 161442 161464 161464
4012 161444 125252 125252
4013 161446 052525 052525
4014 161450 177400 177400
4015 161452 000377 000377
4016 161454 052525 052525
4017 161456 125252 125252
4018 161460 000377 000377
4019 161462 177400 177400
4020 161464 001000 001000
4021 161466 161464 161464
4022    
4023 161470 000777 BR .+0 ;ОШИБКА. ПРЕКРАТИТЬ ВЫПОЛНЕНИЕ ВНУТРЕННЕГО
4024     ;АВТО-ТЕСТА 4025
4026     ;***********************************************************************
4027     ;ПРОВЕРКА ВЫПОЛНЕНИЯ КОМАНДЫ ADD
4028     ;АДРЕС ОСТАНОВА 161730, R0=161564
4029    
4030 161472 012701 161726 MOV #161726,R1
4031 161476 011104 MOV @R1,R4 ;025252-->;R4
4032 161500 014103 MOV -(R1),R3 ;052525-->;R3
4033 161502 061104 ADD @R1,R4 ;СЛОЖИТЬ КОДЫ 052525 И 025252
4034 161504 101425 BLOS 161560 ;ПЕРЕЙТИ, ЕСЛИ CVZ=1
4035 161506 003424 BLE 161560 ;ПЕРЕЙТИ, ЕСЛИ ZV(NVV)=1
4036 161510 061104 ADD @R1,R4 ;СЛОЖИТЬ КОДЫ 052525 И 077777
4037 161512 101422 BLOS 161560 ;ПЕРЕЙТИ, ЕСЛИ CVZ=1
4038 161514 002421 BLT 161560 ;ПЕРЕЙТИ, ЕСЛИ NVV=1
4039 161516 061104 ADD @R1,R4 ;СЛОЖИТЬ КОДЫ 052525 И 152524
4040 161520 003417 BLE 161560 ;ПЕРЕЙТИ, ЕСЛИ ZV(NVV)=1
4041 161522 010451 MOV R4,@-(R1)
4042 161524 011104 MOV @R1,R4
4043 161526 064114 ADD -(R1),@R4 ;СЛОЖИТЬ КОДЫ 125252 И 025251
4044 161530 101413 BLOS 161560 ;ПЕРЕЙТИ, ЕСЛИ CVZ=1
4045 161532 002012 BGE 161560 ;ПЕРЕЙТИ, ЕСЛИ NVV=0
4046 161534 064114 ADD -(R1),@R4 ;СЛОЖИТЬ КОДЫ 152525 И 152523
4047 161536 101010 BHI 161560 ;ПЕРЕЙТИ, ЕСЛИ CVZ=0
4048 161540 002007 BGE 161560 ;ПЕРЕЙТИ, ЕСЛИ NVV=0
4049 161542 061114 ADD @R1,@R4 ;СЛОЖИТЬ КОДЫ 152525 И 125250
4050 161544 101005 BHI 161560 ;ПЕРЕЙТИ, ЕСЛИ CVZ=0
4051 161546 002004 BGE 161560 ;ПЕРЕЙТИ, ЕСЛИ NVV=00
4052 161550 064114 ADD -(R1),@R4 ;СЛОЖИТЬ КОДЫ 100003 И 077775
4053 161552 002402 BLT .+6 ;ПЕРЕЙТИ, ЕСЛИ NVV=1
4054 161554 003001 BGT .+4 ;ПЕРЕЙТИ, ЕСЛИ ZV(NVV)=0
4055 161556 001402 BEQ .+6 ;ПЕРЕЙТИ, ЕСЛИ Z=1
4056 161560 004037 161730 JSR R0,@#161730
4057    
4058     ;***********************************************************************
4059     ;ПРОВЕРКА ВЫПОЛНЕНИЯ КОМАНДЫ SUB
4060     ;АДРЕС ОСТАНОВА 161730, R0=161660
4061    
4062 161564 012701 161726 MOV #161726,R1
4063 161570 014104 MOV -(R1),R4 ;052525-->;R4
4064 161572 161104 SUB @R1,R4 ;ВЫЧЕСТЬ КОД 052525 ИЗ КОДА 052525
4065 161574 002427 BLT 161654 ;ПЕРЕЙТИ, ЕСЛИ NVV=1
4066 161576 003026 BGT 161654 ;ПЕРЕЙТИ, ЕСЛИ ZV(NVV)=0
4067 161600 103425 BCS 161654 ;ПЕРЕЙТИ, ЕСЛИ C=1
4068 161602 161104 SUB @R1,R4 ;ВЫЧЕСТЬ КОД 052525 ИЗ КОДА 000000
4069 161604 003023 BGT 161654 ;ПЕРЕЙТИ, ЕСЛИ ZV(NVV)=0
4070 161606 101022 BHI 161654 ;ПЕРЕЙТИ, ЕСЛИ CVZ=0
4071 161610 161104 SUB @R1,R4 ;ВЫЧЕСТЬ КОД 052525 ИЗ КОДА 125253
4072 161612 101420 BLOS 161654 ;ПЕРЕЙТИ, ЕСЛИ CVZ=1
4073 161614 002017 BGE 161654 ;ПЕРЕЙТИ, ЕСЛИ NVV=0
4074 161616 010451 MOV R4,@-(R1)
4075 161620 011104 MOV @R1,R4
4076 161622 164114 SUB -(R1),@R4 ;ВЫЧЕСТЬ КОД 125252 ИЗ КОДА 052526
4077 161624 003413 BLE 161654 ;ПЕРЕЙТИ, ЕСЛИ ZV(NVV)=1
4078 161626 101012 BHI 161654 ;ПЕРЕЙТИ, ЕСЛИ CVZ=0
4079 161630 161114 SUB @R1,@R4 ;ВЫЧЕСТЬ КОД 125252 ИЗ КОДА 125254
4080 161632 103410 BCS 161654 ;ПЕРЕЙТИ, ЕСЛИ C=1
4081 161634 102407 BVS 161654 ;ПЕРЕЙТИ, ЕСЛИ V=1
4082 161636 005741 TST -(R1) ;УМЕНЬШИТЬ R1 НА 2
4083 161640 164114 SUB -(R1),@R4 ;ВЫЧЕСТЬ КОД 100003 ИЗ КОДА 2
4084 161642 103004 BCC 161654 ;ПЕРЕЙТИ, ЕСЛИ C=0
4085 161644 003403 BLE .+10 ;ПЕРЕЙТИ, ЕСЛИ ZV(NVV)=1
4086 161646 022714 077777 CMP #77777,@R4 ;ДАННЫЕ СОБПАДАЮТ?
4087 161652 001402 BEQ .+6 ;ПЕРЕЙТИ, ЕСЛИ ДА
4088 161654 004037 161730 JSR R0,@#161730
4089    
4090     ;***********************************************************************
4091     ;ПРОВЕРКА ВЫПОЛНЕНИЯ КОМАНД DEC, SOB
4092     ;АДРЕС ОСТАНОВА 161730, R0=161714
4093    
4094 161660 012701 000002 MOV #2,R1 ;ЗАДАТЬ СЧЕТЧИК ВЫПОЛНЕНИЯ КОМАНДЫ SOB
4095 161664 010102 MOV R1,R2 ;2-->;R2
4096 161666 005302 DEC R2 ;УМЕНЬШИТЬ R2 НА 1
4097 161670 002407 BLT 161710 ;ПЕРЕЙТИ, ЕСЛИ R2<;0
4098 161672 005701 TST R1
4100 161676 077105 SOB R1,161666 ;ВЫЧЕСТЬ 1 ИЗ R1 И ПЕРЕЙТИ, ЕСЛИ R1 НЕ РАВНО 0
4101 161700 005701 TST R1 ;ПРОВЕРИТЬ R1 ПОСЛЕ ВЫПОЛНЕНИЯ КОМАНДЫ SOB
4102 161702 001002 BNE .+6 ;ПЕРЕЙТИ, ЕСЛИ R1 НЕ РАВНО 0
4103 161704 000137 161732 JMP @#161732 ;ПЕРЕЙТИ НА ПОДПРОГРАММУ ПРОВЕРКИ ОЗУ
4104 161710 004037 161730 JSR R0,@#161730 ;ПЕРЕЙТИ НА ОШИБКУ
4105    
4106     ;ДАННЫЕ ДЛЯ ПРОВЕРКИ ЦП
4107    
4108 161714 100003 100003
4109 161716 152525 152525
4110 161720 125252 125252
4111 161722 001000 001000
4112 161724 052525 052525
4113 161726 025252 025252
4114    
4115 161730 000777 BR .+0 ;ОШИБКА. ПРЕКРАТИТЬ ВЫПОЛНЕНИЕ ВНУТРЕННЕГО
4116     ;АВТО-ТЕСТА
4117    
4118    
4119     ;***********************************************************************
4120     ;
4121     ; ПОДПРОГРАММА ПРОВЕРКИ ОЗУ
4122     ;
4123     ;***********************************************************************
4124    
4125 161732 012700 000006 MOV #6,R0
4126 161736 012710 000340 MOV #340,@R0
4127 161742 012740 162126 MOV #162126,-(R0) ;СФОРМИРОВАТЬ ВЕКТОР С АДРЕСОМ 000004
4128 161746 012737 000020 172516 MOV #20,@#172516 ;РАЗРЕШИТЬ 22-РАЗРЯДНОЕ ПРЕОБРАЗОВАНИЕ
4129 161754 004737 162136 JSR PC,@#162136 ;ПОДГОТОВИТЬ РЕГИСТРЫ ДП
4130 161760 005003 CLR R3 ;ОЧИСТИТЬ СЧЕТЧИК СТРАНИЦ ПАМЯТИ ЕМКОСТЬЮ 2 КБАЙТ
4131 161762 012701 020000 MOV #20000,R1
4132 161766 012737 000001 177572 MOV #1,@#177572 ;РАЗРЕШИТЬ ДП
4133 161774 012710 162012 MOV #162012,@R0 ;СФОРМИРОВАТЬ ВЕКТОР С АДРЕСОМ 000004
4134    
4135     ;***********************************************************************
4136     ;ОПРЕДЕЛЕНИЕ ЕМКОСТИ ОСНОВНОГО ОЗУ
4137     ;
4138     ;ЕМКОСТЬ ОСНОВНОГО ОЗУ ОПРЕДЕЛЯЕТСЯ ЗАПИСЬЮ В ПЕРВУЮ ЯЧЕЙКУ
4139     ;КАЖДОЙ СТРАНИЦЫ ЕМКОСТЬЮ 2 КБАЙТ ЕЕ СОДЕРЖИМОГО.
4140     ;R3 СОДЕРЖИТ СЧЕТЧИК СУЩ. СТРАНИЦ ОСНОВНОГО ОЗУ ЕМКОСТЬЮ 2 КБАЙТ
4141    
4142 162000 011111 MOV @R1,@R1 ;ПРОИЗВЕСТИ ЧТЕНИЕ И ЗАПИСЬ ЯЧЕЙКИ
4143     ;ПРОИЗОЙДЕТ ПРЕРЫВАНИЕ, ЕСЛИ АДРЕС НЕ ОТВЕЧАЕТ
4144 162002 005203 INC R3 ;УВЕЛИЧИТЬ СЧЕТЧИК СУЩЕСТВУЮЩИХ СТРАНИЦ ОЗУ
4145     ;ЕМКОСТЬЮ 2 КБАЙТ
4146 162004 062712 000040 ADD #40,@R2 ;УВЕЛИЧИТЬ КОНСТАНТУ ПЕРЕРАСПРЕДЕЛЕНИЯ
4147 162010 000773 BR 162000 ;ПЕРЕЙТИ К ПРОВЕРКЕ СЛЕДУЮЩЕЙ СТРАНИЦЫ
4148    
4149 162012 005037 172516 CLR @#172516 ;ЗАПРЕТИТЬ 22-РАЗРЯДНОЕ ПРЕОБРАЗОВАНИЕ
4150 162016 005037 177572 CLR @#177572 ;ЗАПРЕТИТЬ ДП
4151 162022 005001 CLR R1
4152 162024 013700 173700 MOV @#173700,R0
4153 162030 032700 000001 BIT #1,R0 ;ПЕРВОЕ ОЗУ УСТАНОВЛЕНО?
4154 162034 001001 BNE .+4 ;ПЕРЕЙТИ, ЕСЛИ ДА
4155 162036 000407 BR 162056 ;ПЕРЕЙТИ, ЕСЛИ НЕТ
4156 162040 032700 000002 BIT #2,R0 ;ПЕРВОЕ ОЗУ ЕМКОСТЬЮ 128 КБАЙТ?
4157 162044 001402 BEQ .+6 ;ПЕРЕЙТИ, ЕСЛИ ДА
4158 162046 012701 000300 MOV #300,R1 ;СФОРМИРОВАТЬ КОНСТАНТУ ПЕРЕРАСПРЕДЕЛЕНИЯ
4159 162052 062701 000100 ADD #100,R1 ;ДЛЯ 512 КБАЙТ
4160 162056 032700 000004 BIT #4,R0 ;ВТОРОЕ ОЗУ УСТАНОВЛЕНО?
4161 162062 001407 BEQ 162102 ;ПЕРЕЙТИ, ЕСЛИ НЕТ
4162 162064 032700 000010 BIT #10,R0 ;ВТОРОЕ ОЗУ ЕМКОСТЬЮ 128 КБАЙТ?
4163 162070 001402 BEQ .+6 ;ПЕРЕЙТИ, ЕСЛИ ДА
4164 162072 062701 000300 ADD #300,R1 ;СФОРМИРОВАТЬ КОНСТАНТУ ПЕРЕРАСПРЕДЕЛЕНИЯ
4165 162076 062701 000100 ADD #100,R1 ;ДЛЯ 512 КБАЙТ
4166 162102 005701 TST R1 ;ОБА ОЗУ НЕ УСТАНОВЛЕНЫ?
4167 162104 001407 BEQ 162124 ;ПЕРЕЙТИ НА ОШИБКУ, ЕСЛИ ДА
4168 162106 020103 CMP R1,R3 ;ОБНАРУЖЕНЫ НЕСУЩЕСТВУЮЩИЕ СТРАНИЦЫ В
4169     ;В УСТАНОВЛЕННЫХ ОЗУ?
4170 162110 101005 BHI 162124 ;ПЕРЕЙТИ НА ОШИБКУ, ЕСЛИ ДА
4171 162112 070127 000040 MUL #40,R1 ;ПОЛУЧИТЬ КОНСТАНТУ ПЕРЕРАСПРЕДЕЛЕНИЯ ПЕРВОЙ
4172 162116 010137 177640 MOV R1,@#177640 ;НЕСУЩЕСТВУЮЩЕЙ СТРАНИЦЫ
4173 162122 000426 BR 162200
4174 162124 000240 NOP
4175 162126 012737 000003 173704 MOV #3,@#173704 ;ВКЛЮЧИТЬ СВЕТОВЫЕ ИНДИКАТОРЫ 3 И 4
4176     ;ОШИБКА. НЕИСПРАВНО ОЗУ ИЛИ ДП
4177 162134 000777 BR .+0 ;ПРЕКРАТИТЬ ВЫПОЛНЕНИЕ ВНУТРЕННЕГО АВТО-ТЕСТА
4178    
4179     ;***********************************************************************
4180     ;ПОДПРОГРАММА ПОДГОТОВКИ РЕГИСТРОВ ДП
4181    
4182 162136 005037 172340 CLR @#172340
4183 162142 012702 172342 MOV #172342,R2
4184 162146 005012 CLR @R2
4185 162150 012737 177600 172356 MOV #177600,@#172356 ;РАЗРЕШИТЬ ДОСТУП К ПОСЛЕДНЕЙ СТРАНИЦЕ ПАМЯТИ
4186 162156 012701 077406 MOV #77406,R1 ;РАЗРЕШИТЬ ЧТ/ЗАП СТРАНИЦЫ ПАМЯТИ
4187 162162 010137 172300 MOV R1,@#172300
4188 162166 010137 172302 MOV R1,@#172302
4189 162172 010137 172316 MOV R1,@#172316
4190 162176 000207 RTS PC
4191    
4192 162200 005003 CLR R3
4193 162202 005037 177642 CLR @#177642 ;ОЧИСТИТЬ РЕГИСТР ОШИБКИ
4194 162206 005005 CLR R5 ;ОЧИСТИТЬ СЧЕТЧИК ОБЛАСТЕЙ ПО 32 КБАЙТ
4195 162210 032737 000001 173700 BIT #1,@#173700 ;1-Е ОЗУ УСТАНОВЛЕНО?
4196 162216 001402 BEQ .+6 ;ПЕРЕЙТИ, ЕСЛИ НЕТ
4197 162220 005703 TST R3 ;ПРОВЕРЕНО 1-Е ОЗУ?
4198 162222 001405 BEQ 162236 ;ПЕРЕЙТИ, ЕСЛИ НЕТ
4199 162224 032737 000010 173700 BIT #10,@#173700 ;ЕМКОСТЬ 2-ГО ОЗУ 512 КБАЙТ?
4200 162232 001005 BNE 162246 ;ПЕРЕЙТИ, ЕСЛИ ДА
4201 162234 000406 BR 162252 ;ПЕРЕЙТИ, ЕСЛИ ЕМКОСТЬ 2-ГО ОЗУ 128 КБАЙТ
4202 162236 032737 000002 173700 BIT #2,@#173700 ;ЕМКОСТЬ 1-ГО ОЗУ 512 КБАЙТ?
4203 162244 001402 BEQ .+6 ;ПЕРЕЙТИ, ЕСЛИ ЕМКОСТЬ 1-ГО ОЗУ 128 КБАЙТ
4204 162246 012705 000012 MOV #12,R5 ;СФОРМИРОВАТЬ В R4
4205 162252 062705 000004 ADD #4,R5 ;СЧЕТЧИК ОБЛАСТЕЙ
4206 162256 010504 MOV R5,R4 ;ДЛЯ ПРОВЕРКИ ПО 32 КБАЙТ
4207 162260 012737 000020 172516 MOV #20,@#172516 ;РАЗРЕШИТЬ 22-РАЗРЯДНОЕ ПРЕОБРАЗОВАНИЕ
4208 162266 010301 MOV R3,R1 ;ЗАГРУЗИТЬ В R1 КОНСТАНТУ ПЕРЕРАСПРЕДЕЛЕНИЯ
4209    
4210     ;***********************************************************************
4211     ;ПОДГОТОВКА РЕГИСТРОВ ДП
4212    
4213 162270 012737 177300 172340 MOV #177300,@#172340 ;СФОРМИРОВАТЬ КОНСТАНТЫ ПЕРЕРАСПРЕДЕЛЕНИЯ
4214 162276 010137 172342 MOV R1,@#172342
4215 162302 062701 000200 ADD #200,R1
4216 162306 010137 172344 MOV R1,@#172344
4217 162312 062701 000200 ADD #200,R1
4218 162316 010137 172346 MOV R1,@#172346
4219 162322 062701 000200 ADD #200,R1
4220 162326 010137 172350 MOV R1,@#172350
4221 162332 012737 177200 172352 MOV #177200,@#172352
4222 162340 012737 177400 172354 MOV #177400,@#172354
4223 162346 012737 177600 172356 MOV #177600,@#172356
4224 162354 012701 077406 MOV #77406,R1 ;РАЗРЕШИТЬ ДОСТУП К ПАМЯТИ
4225 162360 012737 004006 172300 MOV #4006,@#172300
4226 162366 010137 172302 MOV R1,@#172302
4227 162372 010137 172304 MOV R1,@#172304
4228 162376 010137 172306 MOV R1,@#172306
4229 162402 010137 172310 MOV R1,@#172310
4230 162406 010137 172312 MOV R1,@#172312
4231 162412 010137 172314 MOV R1,@#172314
4232 162416 010137 172316 MOV R1,@#172316
4233 162422 012737 000001 177572 MOV #1,@#177572 ;ВКЛЮЧИТЬ ДП
4234    
4235     ;***********************************************************************
4236     ;ЗАПИСАТЬ КОД 052525 ВО ВСЕ ЯЧЕЙКИ ПАМЯТИ, НАЧИНАЯ С МЛАДШЕГО АДРЕСА
4237    
4238 162430 012700 020000 MOV #20000,R0 ;ЗАНЕСТИ В R0 ПЕРВЫЙ АДРЕС
4239 162434 012710 052525 MOV #52525,@R0 ;ЗАПИСАТЬ КОД 052525 КОСВЕННО ПО R0
4240 162440 000421 BR 162504 ;ПЕРЕЙТИ НА ЗАПИСЬ АДРЕСА
4241    
4242 162442 062737 001000 172342 ADD #1000,@#172342 ;ПЕРЕУСТАНОВИТЬ КОНСТАНТЫ
4243 162450 012701 020000 MOV #20000,R1 ;ПЕРЕРАСПРЕДЕЛЕНИЯ
4244 162454 011011 MOV @R0,@R1 ;ДЛЯ ЗАПИСИ
4245 162456 062737 001000 172344 ADD #1000,@#172344 ;СЛЕДУЮЩИХ 32 КБАЙТ
4246 162464 062737 001000 172346 ADD #1000,@#172346
4247 162472 062737 001000 172350 ADD #1000,@#172350
4248 162500 012700 020000 MOV #20000,R0
4249 162504 010001 MOV R0,R1 ;ЗАПИСАТЬ АДРЕС
4250 162506 005721 TST (R1)+ ;УВЕЛИЧИТЬ АДРЕС НА 2
4251 162510 012702 037777 MOV #37777,R2 ;УСТАНОВИТЬ СЧЕТЧИК ЯЧЕЕК ДЛЯ ЗАПИСИ ПО 32 КБАЙТ
4252 162514 012021 MOV (R0)+,(R1)+ ;ЗАПИСАТЬ КОД ПО СЛЕДУЮЩЕМУ АДРЕСУ
4253 162516 077202 SOB R2,.-2 ;КОНЕЦ ЗАПИСИ В 32 КБАЙТ?
4254     ;ПЕРЕЙТИ, ЕСЛИ НЕТ
4255 162520 077430 SOB R4,162442 ;КОНЕЦ ЗАПИСИ В 512/128 КБАЙТ?
4256     ;ПЕРЕЙТИ, ЕСЛИ НЕТ
4257    
4258     ;***********************************************************************
4259     ;ИНВЕРТИРОВАТЬ ДАННЫЕ ПАМЯТИ, НАЧИНАЯ С МЛАДШЕГО АДРЕСА
4260    
4261 162522 010504 MOV R5,R4 ;ЗАНЕСТИ В R4 СЧЕТЧИК ОБЛАСТЕЙ ЕМКОСТЬЮ ПО 32 КБАЙТ
4262 162524 010301 MOV R3,R1 ;СФОРМИРОВАТЬ
4263 162526 010137 172342 MOV R1,@#172342 ;КОНСТАНТЫ
4264 162532 062701 000200 ADD #200,R1 ;ПЕРЕРАСПРЕДЕЛЕНИЯ
4265 162536 010137 172344 MOV R1,@#172344 ;ДЛЯ ПЕРВЫХ 32 КБАЙТ
4266 162542 062701 000200 ADD #200,R1
4267 162546 010137 172346 MOV R1,@#172346
4268 162552 062701 000200 ADD #200,R1
4269 162556 010137 172350 MOV R1,@#172350
4270 162562 000414 BR 162614
4271    
4272 162564 062737 001000 172342 ADD #1000,@#172342 ;ПЕРЕУСТАНОВИТЬ КОНСТАНТЫ
4273 162572 062737 001000 172344 ADD #1000,@#172344 ;ПЕРЕРАСПРЕДЕЛЕНИЯ
4274 162600 062737 001000 172346 ADD #1000,@#172346 ;ДЛЯ СЛЕДУЮЩИХ 32 КБАЙТ
4275 162606 062737 001000 172350 ADD #1000,@#172350
4276 162614 012702 040000 MOV #40000,R2 ;УСТАНОВИТЬ СЧЕТЧИК ЯЧЕЕК ДЛЯ ЗАПИСИ ПО 32 КБАЙТ
4277 162620 012700 020000 MOV #20000,R0 ;ВЫБРАТЬ ВИРТУАЛЬНЫЙ АДРЕС
4278 162624 005120 COM (R0)+ ;ИНВЕРТИРОВАТЬ ДАННЫЕ
4279 162626 077202 SOB R2,.-2 ;КОНЕЦ ОБЛАСТИ В 32 КБАЙТ?
4280     ;ПЕРЕЙТИ, ЕСЛИ НЕТ
4281 162630 077423 SOB R4,162564 ;КОНЕЦ ПАМЯТИ?
4282     ;ПЕРЕЙТИ, ЕСЛИ НЕТ
4283    
4284     ;***********************************************************************
4285     ;ПРОВЕРИТЬ ДАННЫЕ ПАМЯТИ, НАЧИНАЯ СО СТАРШЕГО АДРЕСА
4286     ;И ИНВЕРТИРОВАТЬ, ЕСЛИ ДАННЫЕ СОВПАДАЮТ
4287    
4288 162632 010504 MOV R5,R4 ;ЗАНЕСТИ В R4 СЧЕТЧИК ОБЛАСТЕЙ ЕМКОСТЬЮ 32 КБАЙТ
4289 162634 005001 CLR R1
4290 162636 000414 BR 162670
4291 162640 162737 001000 172342 SUB #1000,@#172342 ;ПЕРЕУСТАНОВИТЬ
4292 162646 162737 001000 172344 SUB #1000,@#172344 ;КОНСТАНТЫ ПЕРЕРАСПРЕДЕЛЕНИЯ
4293 162654 162737 001000 172346 SUB #1000,@#172346 ;ДЛЯ ПРОВЕРКИ
4294 162662 162737 001000 172350 SUB #1000,@#172350 ;ПРЕДЫДУЩИХ 32 КБАЙТ
4295 162670 012702 040000 MOV #40000,R2 ;УСТАНОВИТЬ СЧЕТЧИК ЯЧЕЕК ДЛЯ ПРОВЕРКИ ПО 32 КБАЙТ
4296 162674 012700 120000 MOV #120000,R0 ;ВЫБРАТЬ ВИРТУАЛЬНЫЙ АДРЕС В R0
4297 162700 024027 125252 CMP -(R0),#125252 ;ДАННЫЕ СОВПАДАЮТ?
4298 162704 001034 BNE 162776 ;ПЕРЕЙТИ, ЕСЛИ НЕТ
4299 162706 005110 COM @R0 ;ИНВЕРТИРОВАТЬ ДАННЫЕ
4300 162710 077205 SOB R2,162700 ;КОНЕЦ ПРОВЕРКИ В 32 КБАЙТ?
4301     ;ПЕРЕЙТИ, ЕСЛИ НЕТ
4302 162712 077426 SOB R4,162640 ;КОНЕЦ ПАМЯТИ?
4303     ;ПЕРЕЙТИ, ЕСЛИ НЕТ
4304    
4305     ;***********************************************************************
4306     ;ПРОВЕРКА ПАМЯТИ, НАЧИНАЯ С МЛАДШЕГО АДРЕСА
4307    
4308 162714 010504 MOV R5,R4 ;ВОССТАНОВИТЬ СЧЕТЧИК ОБЛАСТЕЙ ЕМКОСТЬЮ 32 КБАЙТ
4309 162716 005001 CLR R1
4310 162720 000414 BR 162752
4311 162722 062737 001000 172342 ADD #1000,@#172342
4312 162730 062737 001000 172344 ADD #1000,@#172344
4313 162736 062737 001000 172346 ADD #1000,@#172346
4314 162744 062737 001000 172350 ADD #1000,@#172350
4315 162752 012702 040000 MOV #40000,R2 ;УСТАНОВИТЬ СЧЕТЧИК ЯЧЕЕК
4316 162756 012700 020000 MOV #20000,R0 ;ВИРТУАЛЬНЫЙ АДРЕС-->;R0
4317 162762 022027 052525 CMP (R0)+,#52525 ;ДАННЫЕ СОВПАДАЮТ?
4318 162766 001003 BNE .+10 ;ПЕРЕЙТИ, ЕСЛИ НЕТ
4319 162770 077204 SOB R2,.-6 ;КОНЕЦ ОБЛАСТИ? ПЕРЕЙТИ, ЕСЛИ НЕТ
4320 162772 077425 SOB R4,162722 ;КОНЕЦ ПАМЯТИ? ПЕРЕЙТИ, ЕСЛИ НЕТ
4321 162774 000402 BR .+6 ;ПЕРЕЙТИ, ЕСЛИ НЕ БЫЛО ОШИБОК
4322 162776 000261 SEC ;УСТАНОВИТЬ С-РАЗРЯД,
4323 163000 000401 BR .+4 ;ЕСЛИ ДАННЫЕ НЕ СОВПАДАЮТ
4324 163002 000241 CLC ;ОЧИСТИТЬ С-РАЗРЯД
4325 163004 012737 000000 172340 MOV #0,@#172340 ;РАЗРЕШИТЬ ДОСТУП
4326 163012 012737 077406 172300 MOV #77406,@#172300 ;К 0-Й СТРАНИЦЕ ПАМЯТИ
4327 163020 032705 000001 BIT #1,R5 ;ПРОВЕРЯЕТСЯ ПАМЯТЬ ВИДЕОКОНТРОЛЛЕРА?
4328 163024 001401 BEQ .+4 ;ПЕРЕЙТИ, ЕСЛИ НЕТ
4329 163026 000207 RTS PC ;ВЫХОД ИЗ ПОДПРОГРАММЫ ПРОВЕРКИ ПАМЯТИ
4330     ;ВИДЕОКОНТРОЛЛЕРА
4331 163030 103015 BCC 163064 ;ПЕРЕЙТИ, ЕСЛИ НЕ БЫЛО ОШИБОК
4332 163032 032737 000001 173700 BIT #1,@#173700 ;1-Е ОЗУ УСТАНОВЛЕНО?
4333 163040 001406 BEQ 163056 ;ПЕРЕЙТИ, ЕСЛИ НЕТ
4334 163042 005703 TST R3 ;ОШИБКА ВО 2-М ОЗУ?
4335 163044 001004 BNE 163056 ;ПЕРЕЙТИ, ЕСЛИ ДА
4336 163046 052737 000001 177642 BIS #1,@#177642 ;УСТАНОВИТЬ ПРИЗНАК ОШИБКИ В 1-М ОЗУ
4337 163054 000403 BR .+10 ;
4338 163056 052737 000002 177642 BIS #2,@#177642 ;УСТАНОВИТЬ ПРИЗНАК ОШИБКИ ВО 2-М ОЗУ
4339 163064 032737 000001 173700 BIT #1,@#173700 ;1-Е ОЗУ УСТАНОВЛЕНО?
4340 163072 001421 BEQ 163136 ;ПЕРЕЙТИ, ЕСЛИ НЕТ
4341 163074 005703 TST R3 ;2-Е ОЗУ ПРОВЕРЕНО?
4342 163076 001017 BNE 163136 ;ПЕРЕЙТИ, ЕСЛИ ДА
4343 163100 032737 000004 173700 BIT #4,@#173700 ;2-Е ОЗУ УСТАНОВЛЕНО?
4344 163106 001413 BEQ 163136 ;ПЕРЕЙТИ, ЕСЛИ НЕТ
4345 163110 012703 004000 MOV #4000,R3 ;ВЫБРАТЬ КОНСТАНТУ ПЕРЕРАСПРЕДЕЛЕНИЯ ДЛЯ
4346     ;2-ГО ОЗУ
4347 163114 032737 000002 173700 BIT #2,@#173700 ;1-Е ОЗУ ЕМКОСТЬЮ 512 КБАЙТ?
4348 163122 001402 BEQ .+6 ;ПЕРЕЙТИ, ЕСЛИ ЕМКОСТЬ 1-ГО ОЗУ 128 КБАЙТ
4349 163124 006303 ASL R3 ;СФОРМИРОВАТЬ КОНСТАНТУ ПЕРЕРАСПРЕДЕЛЕНИЯ
4350 163126 006303 ASL R3 ;ДЛЯ 2-ГО ОЗУ
4351 163130 000137 162206 JMP @#162206 ;ПЕРЕЙТИ НА ПРОВЕРКУ 2-ГО ОЗУ
4352 163134 000777 BR .+0 ;ОШИБКА. ПРИ ПРОВЕРКЕ ОЗУ ЗАПИСЬЮ/СЧИТЫВАНИЕМ
4353     ;ПРОИЗОШЛО ПРЕРЫВАНИЕ С АДРЕСОМ ВЕКТОРА 000004
4354 163136 005737 177642 TST @#177642 ;БЫЛИ ОШИБКИ?
4355 163142 001404 BEQ 163154 ;ПЕРЕЙТИ НА ПРОВЕРКУ ОБРАБОТКИ ПРЕРЫВАНИЙ,
4356     ;ЕСЛИ НЕ БЫЛО ОШИБОК
4357    
4358 163144 013737 177642 173704 MOV @#177642,@#173704 ;ОШИБКА ЧТЕНИЯ/ЗАПИСИ ОЗУ
4359     ;ВКЛЮЧИТЬ СВЕТОВЫЕ ИНДИКАТОРЫ 2,3 И 4, ЕСЛИ
4360     ;ОШИБКА В 1-ОМ ОЗУ.
4361     ;ВКЛЮЧИТЬ СВЕТОВЫЕ ИНДИКАТОРЫ 1,3 И 4, ЕСЛИ
4362     ;ОШИБКА ВО 2-ОМ ОЗУ
4363     ;ВКЛЮЧИТЬ СВЕТОВЫЕ ИНДИКАТОРЫ 3 И 4, ЕСЛИ
4364     ;ОШИБКА В 1-ОМ И ВО 2-ОМ ОЗУ
4365 163152 000777 BR .+0 ;ПРЕКРАТИТЬ ВЫПОЛНЕНИЕ ВНУТРЕННЕГО
4366     ;АВТО-ТЕСТА
4367    
4368     ;***********************************************************************
4369     ;
4370     ; ПОДПРОГРАММА ПРОВЕРКИ ПРАВИЛЬНОСТИ ВЫПОЛНЕНИЯ ПРЕРЫВАНИЙ
4371     ; ПО КОМАНДАМ TRAP (34,36), EMT (30,32), IOT (20,22), BPT (14,16), ПО
4372     ; РЕЗЕРВНОЙ КОМАНДЕ 107777 (10,12), ПО ЗАПРЕЩЕННОЙ КОМАНДЕ JMP R1 (4,6)
4373     ;
4374     ;***********************************************************************
4375    
4376 163154 012701 163432 MOV #163432,R1
4377 163160 010046 MOV R0,-(SP) ;СОХРАНИТЬ R0
4378 163162 012100 MOV (R1)+,R0
4379 163164 005040 CLR -(R0) ;СФОРМИРОВАТЬ
4380 163166 010002 MOV R0,R2 ;ЛОВУШКУ
4381 163170 005740 TST -(R0) ;ПРЕРЫВАНИЙ
4382 163172 010210 MOV R2,@R0 ;ПО АДРЕСАМ 000000-000366
4383 163174 005700 TST R0
4384 163176 003372 BGT 163164
4385 163200 012600 MOV (SP)+,R0 ;ВОССТАНОВИТЬ R0
4386 163202 012106 MOV (R1)+,SP ;УСТАНОВИТЬ УКАЗАТЕЛЬ СТЕКА
4387 163204 012104 MOV (R1)+,R4
4388 163206 012102 MOV (R1)+,R2 ;163452-->;R2
4389 163210 012103 MOV (R1)+,R3 ;163454-->;R3
4390 163212 004737 163416 JSR PC,@#163416 ;163312-->;34
4391 163216 104777 TRAP+377 ;ПРОВЕРИТЬ ПРАВИЛЬНОСТЬ ВЫПОЛНЕНИЯ ПРЕРЫВАНИЯ ПО
4392     ;TRAP С АДРЕСОМ ВЕКТОРА ПРЕРЫВАНИЯ 34
4393 163220 004737 163356 JSR PC,@#163356 ;ВОССТАНОВИТЬ ЛОВУШКУ ПРЕРЫВАНИЯ ПО АДРЕСУ 000034
4394 163224 004737 163416 JSR PC,@#163416 ;163312-->;30
4395 163230 104377 EMT+377 ;ПРОВЕРИТЬ ПРАВИЛЬНОСТЬ ВЫПОЛНЕНИЯ ПРЕРЫВАНИЯ
4396     ;ПО ЕМТ С АДРЕСОМ ВЕКТОРА ПРЕРЫВАНИЯ 30
4397 163232 004737 163356 JSR PC,@#163356 ;ВОССТАНОВИТЬ ЛОВУШКУ ПРЕРЫВАНИЯ ПО АДРЕСУ
4398     ;000030
4399 163236 024444 CMP -(R4),-(R4)
4400 163240 004737 163416 JSR PC,@#163416 ;163312-->;20
4401 163244 000004 IOT ;ПРОВЕРИТЬ ПРАВИЛЬНОСТЬ ВЫПОЛНЕНИЯ ПРЕРЫВАНИЯ
4402     ;ПО IOT С АДРЕСОМ ВЕКТОРА ПРЕРЫВАНИЯ 20
4403 163246 004737 163356 JSR PC,@#163356 ;ВОССТАНОВИТЬ ЛОВУШКУ ПРЕРЫВАНИЯ ПО
4404     ;АДРЕСУ 000020
4405 163252 004737 163416 JSR PC,@#163416 ;163312-->;14
4406 163256 000003 BPT ;ПРОВЕРИТЬ ПРАВИЛЬНОСТЬ ВЫПОЛНЕНИЯ ПРЕРЫВАНИЯ
4407     ;ПО BPT С АДРЕСОМ ВЕКТОРА ПРЕРЫВАНИЯ 14
4408 163260 004737 163356 JSR PC,@#163356 ;ВОССТАНОВИТЬ ЛОВУШКУ ПРЕРЫВАНИЯ ПО
4409     ;АДРЕСУ 000014
4410 163264 004737 163416 JSR PC,@#163416 ;163312-->;10
4411 163270 107777 107777 ;ПРОВЕРИТЬ ПРАВИЛЬНОСТЬ ВЫПОЛНЕНИЯ ПРЕРЫВАНИЯ
4412     ;ПО РЕЗЕРВНОЙ КОМАНДЕ
4413 163272 004737 163356 JSR PC,@#163356 ;ВОССТАНОВИТЬ ЛОВУШКУ ПРЕРЫВАНИЯ ПО
4414     ;АДРЕСУ 000010
4415 163276 004737 163416 JSR PC,@#163416 ;163312-->;4
4416 163302 000101 JMP R1 ;ПРОВЕРИТЬ ПРАВИЛЬНОСТЬ ВЫПОЛНЕНИЯ ПРЕРЫВАНИЯ
4417     ;ПО КОМАНДЕ С ЗАПРЕЩЕННЫМ МЕТОДОМ АДРЕСАЦИИ
4418 163304 004737 163356 JSR PC,@#163356 ;ВОССТАНОВИТЬ ЛОВУШКУ ПРЕРЫВАНИЯ ПО
4419     ;АДРЕСУ 000004
4420 163310 000467 BR 163470 ;ПЕРЕЙТИ К ПРОВЕРКЕ ПРАВИЛЬПОСТИ ИДЕНТИФИКАЦИИ
4421     ;ЭВМ 4422
4423     ;***********************************************************************
4424     ;ПОДПРОГРАММА ОБРАБОТКИ ПРЕРЫВАНИЯ
4425    
4426 163312 106705 MFPS R5 ;СЧИТАТЬ НОВОЕ ССП
4427 163314 020627 001074 CMP SP,#1074 ;СТЕК УМЕНЬШИЛСЯ ПРАВИЛЬНО?
4428 163320 001014 BNE 163352 ;ПЕРЕЙТИ НА ОШИБКУ, ЕСЛИ НЕТ
4429 163322 022316 CMP (R3)+,@SP ;ТЕКУЩИЙ СК ЗАПОМНИЛСЯ ПРАВИЛЬНО?
4430 163324 001012 BNE 163352 ;ПЕРЕЙТИ НА ОШИБКУ, ЕСЛИ НЕТ
4431 163326 022766 000340 000002 CMP #340,2(SP) ;ТЕКУЩЕЕ ССП ЗАПОМНИЛОСЬ ПРАВИЛЬНО?
4432 163334 001006 BNE 163352 ;ПЕРЕЙТИ НА ОШИБКУ, ЕСЛИ НЕТ
4433 163336 120521 CMPB R5,(R1)+ ;НОВОЕ ССП ВЫБРАНО ПРАВИЛЬНО?
4434 163340 001004 BNE 163352 ;ПЕРЕЙТИ НА ОШИБКУ, ЕСЛИ НЕТ
4435 163342 005705 TST R5
4436 163344 103401 BCS .+4 ;ПЕРЕЙТИ, ЕСЛИ С-РАЗРЯД=1
4437 163346 000006 RTT
4438 163350 000002 RTI
4439    
4440 163352 004037 160650 JSR R0,@#160650 ;ПЕРЕЙТИ НА ОШИБКУ
4441    
4442     ;***********************************************************************
4443     ;ПОДПРОГРАММА ПРОВЕРКИ ССП И СТЕКА ПОСЛЕ ПРЕРЫВАНИЯ И
4444     ;ВОССТАНОВЛЕНИЯ ЛОВУШКИ ПРЕРЫВАНИЙ
4445    
4446 163356 106705 MFPS R5 ;СЧИТАТЬ ССП
4447 163360 120527 000340 CMPB R5,#340 ;ССП=340?
4448 163364 001012 BNE 163412 ;ПЕРЕЙТИ НА ОШИБКУ, НЕСЛИ НЕТ
4449 163366 020627 001076 CMP SP,#1076 ;УС=1076?
4450 163372 001007 BNE 163412 ;ПЕРЕЙТИ НА ОШИБКУ, ЕСЛИ НЕТ
4451 163374 005044 CLR -(R4) ;ВОССТАНОВИТЬ ЛОВУШКУ ПРЕРЫВАНИЙ
4452 163376 010046 MOV R0,-(SP) ;ПОСЛЕ ПРОВЕРКИ ПРЕРЫВАНИЯ
4453 163400 010400 MOV R4,R0 ;С АДРЕСОМ ВЕКТОРА ПРЕРЫВАНИЯ,
4454 163402 005744 TST -(R4) ;ХРАНЯЩИМСЯ В R0
4455 163404 010014 MOV R0,@R4
4456 163406 012600 MOV (SP)+,R0
4457 163410 000207 RTS PC
4458    
4459 163412 004037 160650 JSR R0,@#160650 ;ПЕРЕЙТИ НА ОШИБКУ
4460    
4461     ;***********************************************************************
4462     ;ПОДПРОГРАММА ФОРМИРОВАНИЯ ВЕКТОРОВ ПРЕРЫВАНИЙ
4463    
4464 163416 111164 177776 MOVB @R1,177776(R4)
4465 163422 011264 177774 MOV @R2,177774(R4)
4466 163426 000257 CCC
4467 163430 000207 RTS PC
4468    
4469     ;ДАННЫЕ
4470    
4471 163432 000400 000400
4472 163434 001100 001100
4473 163436 000040 000040
4474 163440 163452 163452
4475 163442 163454 163454
4476 163444 100601 100601
4477 163446 102210 102210
4478 163450 100602 100602
4479 163452 163312 163312
4480 163454 163220 163220 ;СК ПРИ ПРЕРЫВАНИИ ПО TRAP
4481 163456 163232 163232 ;СК ПРИ ПРЕРЫВАНИИ ПО EMT
4482 163460 163246 163246 ;СК ПРИ ПРЕРЫВАНИИ ПО IOT
4483 163462 163260 163260 ;СК ПРИ ПРЕРЫВАНИИ ПО BPT
4484 163464 163272 163272 ;СК ПРИ ПРЕРЫВАНИИ ПО РЕЗЕРВНОЙ КОМАНДЕ
4485 163466 163304 163304 ;СК ПРИ ПРЕРЫВАНИИ ПО ЗАПРЕЩЕННОЙ КОМАНДЕ
4486    
4487    
4488 163470 012737 000017 173704 MOV #17,@#173704 ;ПОГАСИТЬ СВЕТОВУЮ ИНДИКАЦИЮ
4489 163476 005000 CLR R0
4490 163500 012701 172340 MOV #172340,R1 ;СФОРМИРОВАТЬ КОНСТАНТЫ ПЕРЕРАСПРЕДЕЛЕНИЯ
4491 163504 012702 000004 MOV #4,R2
4492 163510 010021 MOV R0,(R1)+
4493 163512 062700 000200 ADD #200,R0
4494 163516 077204 SOB R2,.-6
4495 163520 012737 001400 172350 MOV #1400,@#172350
4496 163526 012706 001000 MOV #1000,SP ;УСТАНОВИТЬ УКАЗАТЕЛЬ СТЕКА
4497 163532 012737 000020 172516 MOV #20,@#172516 ;РАЗРЕШИТЬ 22-РАЗРЯДНОЕ ПРЕОБРАЗОВАНИЕ
4498 163540 012737 000001 177572 MOV #1,@#177572 ;ВКЛЮЧИТЬ ДИСПЕТЧЕР ПАМЯТИ
4499    
4500    
4501     ;ПРОВЕРКА ПРАВИЛЬНОСТИ ИДЕНТИФИКАЦИИ ЭВМ
4502     ;ПРИ НЕПРАВИЛЬНОЙ ИДЕНТИФИКАЦИИ ЭВМ ЯЧЕЙКИ 157766-157772 ЗАПОЛНЯЮТСЯ "0"
4503    
4504 163546 012703 117776 MOV #117776,R3
4505 163552 012763 000014 000000 MOV #14,0(R3)
4506 163560 012700 173600 MOV #173600,R0 ;ВЫБРАТЬ СОДЕРЖИМОЕ РЕГИСТРОВ 173600-173616
4507 163564 012701 177770 MOV #177770,R1 ;В ЯЧЕЙКИ 157766-157774
4508 163570 012702 000010 MOV #10,R2
4509 163574 111061 117776 MOVB @R0,117776(R1)
4510 163600 005201 INC R1
4511 163602 005720 TST (R0)+
4512 163604 077205 SOB R2,163574
4513    
4514     ;ПРОВЕРИТЬ МЕТОДОМ КОНТРОЛЬНОГО СУММИРОВАНИЯ ПРАВИЛЬНОСТЬ ИДЕНТИФИКАЦИИ
4515 163606 012737 177777 001020 MOV #-1,@#1020
4516 163614 012702 000004 MOV #4,R2
4517 163620 010300 MOV R3,R0
4518 163622 016001 177770 MOV 177770(R0),R1 ;ПРОВЕРИТЬ МЕТОДОМ КОНТРОЛЬНОГО СУММИРОВАНИЯ
4519 163626 074137 001020 XOR R1,@#1020 ;ПРАВИЛЬНОСТЬ ИДЕНТИФИКАЦИИ ЭВМ
4520 163632 000241 CLC
4521 163634 006137 001020 ROL @#1020
4522 163640 005537 001020 ADC @#1020
4523 163644 062700 000002 ADD #2,R0
4524 163650 077214 SOB R2,163622
4525 163652 005737 001020 TST @#1020 ;ПРАВИЛЬНАЯ ИДЕНТИФИКАЦИЯ ЭВМ?
4526 163656 001406 BEQ 163674 ;ПЕРЕЙТИ, ЕСЛИ ДА
4527 163660 005063 177770 CLR 177770(R3) ;ОЧИСТИТЬ ЯЧЕЙКИ 157766-157772
4528 163664 005063 177772 CLR 177772(R3)
4529 163670 005063 177774 CLR 177774(R3)
4530    
4531    
4532    
4533 163674 012763 000006 177766 MOV #6,177766(R3) ;ЗАПИСАТЬ ЧИСЛО ПОЗИЦИЙ В ТАБЛИЦУ КОНФИГУРАЦИИ ПВК
4534 163702 012763 000031 177776 MOV #31,177776(R3) ;ЗАПИСАТЬ ИДЕНТИФИКАЦИОННЫЙ КОД ПЗУ В ТАБЛИЦУ
4535     ;КОНФИГУРАЦИИ ПВК
4536     ;ЗАПОЛНИТЬ ТАБЛИЦУ КОНФИГУРАЦИИ ПВК 0 И 177777, НАЧИНАЯ СО СТАРШЕГО
4537     ;АДРЕСА 157760
4538 163710 005063 177764 CLR 177764(R3)
4539 163714 012700 117760 MOV #117760,R0
4540 163720 012701 000036 MOV #36,R1
4541 163724 005010 CLR @R0 ;ЗАПИСАТЬ 0
4542 163726 052760 177777 177776 BIS #-1,177776(R0) ;ЗАПИСАТЬ 177777
4543 163734 162700 000004 SUB #4,R0
4544 163740 062763 000004 000000 ADD #4,0(R3)
4545 163746 062763 000004 177764 ADD #4,177764(R3)
4546 163754 077115 SOB R1,163724
4547 163756 012763 165746 177572 MOV #165746,177572(R3) ;ЗАПИСАТЬ АДРЕС ПОВТОРНОГО ЗАПУСКА
4548     ;ПОДПРОГРАММЫ ЗАГРУЗКИ В ТАБЛИЦУ КОНФИГУРАЦИИ ПВК
4549 163764 005063 177570 CLR 177570(R3)
4550 163770 005063 177566 CLR 177566(R3)
4551 163774 005063 177564 CLR 177564(R3)
4552 164000 005063 177562 CLR 177562(R3)
4553 164004 005063 177560 CLR 177560(R3)
4554 164010 005063 177556 CLR 177556(R3)
4555 164014 062763 000016 000000 ADD #16,0(R3) ;ПОЛУЧИТЬ ДЛИНУ ТАБЛИЦЫ КОНФИГУРАЦИИ ПВК В БАЙТАХ
4556    
4557     ;ВЫПОЛНИТЬ ПОДПРОГРАММЫ ПРОВЕРКИ УСТРОЙСТВ СИСТЕМНОГО МОДУЛЯ
4558    
4559 164022 012737 165036 000030 MOV #165036,@#30 ;СФОРМИРОВАТЬ ВЕКТОР С АДРЕСОМ 000030
4560 164030 012737 000340 000032 MOV #340,@#32
4561 164036 005005 CLR R5 ;ОЧИСТИТЬ R5
4562 164040 012704 117776 MOV #117776,R4
4563 164044 005765 164064 TST 164064(R5) ;ВСЕ УСТРОЙСТВА ПРОВЕРЕНЫ?
4564 164050 001404 BEQ 164062 ;ПЕРЕЙТИ, ЕСЛИ ДА
4565 164052 004775 164064 JSR PC,@164064(R5) ;ВЫПОЛНИТЬ ПОДПРОГРАММУ ПРОВЕРКИ УСТРОЙСТВА
4566 164056 005725 TST (R5)+ ;ПОЛУЧИТЬ АДРЕС СЛЕДУЮЩЕЙ ПОДПРОГРАММЫ
4567 164060 000771 BR 164044 ;ПЕРЕЙТИ К ПРОВЕРКЕ СЛЕДУЮЩЕГО УСТРОЙСТВА
4568     ;СИСТЕМНОГО МОДУЛЯ
4569 164062 000417 BR 164122 ;ПЕРЕЙТИ К ПРОВЕРКЕ ПОЗИЦИЙ СИСТЕМНОЙ МАГИСТРАЛИ
4570    
4571     ;ТАБЛИЦА АДРЕСОВ ПОДПРОГРАММ ПРОВЕРКИ УСТРОЙСТВ
4572    
4573 164064 130200 130200 ;АДРЕС ПОДПРОГРАММЫ ЗАПИСИ В ТАБЛИЦУ КОНФИГУРАЦИИ ПВК
4574     ;ИДЕНТИФИКАЦИОННОГО КОДА ТИПА ПРОЦЕССОРА
4575 164066 130214 130214 ;АДРЕС ПОДПРОГРАММЫ ЗАПИСИ В ТАБЛИЦУ КОНФИГУРАЦИИ ПВК
4576     ;ИДЕНТИФИКАЦИОННОГО КОДА И ЕМКОСТИ ОСНОВНОГО ОЗУ
4577 164070 130246 130246 ;АДРЕС ПОДПРОГРАММЫ ЗАПИСИ В ТАБЛИЦУ КОНФИГУРАЦИИ ПВК
4578     ;НОМЕРА ВЕРСИИ ДИАГНОСТИЧЕСКОГО ПЗУ
4579 164072 130314 130314 ;АДРЕС ПОДПРОГРАММЫ ПРОВЕРКИ КОНТРОЛЛЕРА ПРЕРЫВАНИЙ
4580 164074 130270 130270 ;АДРЕС ПОДПРОГРАММЫ ОПРЕДЕЛЕНИЯ НАЛИЧИЯ МОНИТОРА
4581 164076 130262 130262
4582 164100 131312 131312 ;АДРЕС ПОДПРОГРАММЫ ПРОВЕРКИ ИНТЕРФЕЙСА КЛАВИАТУРЫ
4583     ;В РЕЖИМЕ "КОРОТКАЯ ПЕТЛЯ"
4584 164102 131410 131410 ;АДРЕС ПОДПРОГРАММЫ ВЫБОРКИ ИЗ БУФЕРА КЛАВИАТУРЫ
4585     ;ИДЕНТИФИКАЦИОННЫХ КОДОВ, ГЕНЕРИРУЕМЫХ КЛАВИАТУРОЙ
4586 164104 131632 131632 ;АДРЕС ПОДПРОГРАММЫ ПРОВЕРКИ ИНТЕРФЕЙСА ПЕЧАТАЮЩЕГО
4587     ;УСТРОЙСТВА В РЕЖИМЕ "КОРОТКАЯ ПЕТЛЯ"
4588 164106 131744 131744 ;АДРЕС ПОДПРОГРАММЫ ПРОВЕРКИ НАЛИЧИЯ И ГОТОВНОСТИ
4589     ;ПУЛЬТОВОГО ТЕРМИНАЛА
4590 164110 132472 132472 ;АДРЕС ПОДПРОГРАММЫ ПРОВЕРКИ КОММУНИКАЦИОННОГО
4591     ;ИНТЕРФЕЙСА
4592 164112 133306 133306 ;АДРЕС ПОДПРОГРАММЫ ПРОВЕРКИ ТАЙМЕРА
4593 164114 133620 133620 ;АДРЕС ПОДПРОГРАММЫ ПРОВЕРКИ ОЗУ ТАЙМЕРА
4594 164116 133716 133716 ;АДРЕС ПОДПРОГРАММЫ ПРОВЕРКИ АДАПТЕРА ПЛАВАЮЩЕЙ ЗАПЯТОЙ
4595 164120 000000 000000
4596    
4597    
4598     ;***********************************************************************
4599     ;
4600     ;ПРОВЕРКА ИСПРАВНОСТИ ПОЗИЦИИ СИСТЕМНОЙ МАГИСТРАЛИ
4601     ;ПРИ НАЛИЧИИ МОДУЛЯ В ПОЗИЦИИ СИСТЕМНОЙ МАГИСТРАЛИ ЕГО ИДЕНТИФИКАЦИОННЫЙ
4602     ;КОД ЗАПИСЫВАЕТСЯ В СООТВЕТСТВУЮЩУЮ ЯЧЕЙКУ ТАБЛИЦЫ КОНФИГУРАЦИИ ПВК.
4603     ;ЕСЛИ ПОЗИЦИЯ СВОБОДНА И РЕГИСТР ИДЕНТИФИКАЦИИ ЛИБО НЕ ОТВЕЧАЕТ, ЛИБО
4604     ;ЕГО СОДЕРЖИМОЕ РАВНО 0, СОДЕРЖИМОЕ ЯЧЕЕК НЕ ИЗМЕНЯЕТСЯ (177777 И 0).
4605     ;
4606     ;***********************************************************************
4607    
4608    
4609 164122 012700 177762 MOV #177762,R0
4610 164126 012701 000010 MOV #10,R1
4611 164132 012737 164402 000004 MOV #164402,@#4 ;СФОРМИРОВАТЬ ВЕКТОР С АДРЕСОМ 000004
4612 164140 012737 000340 000006 MOV #340,@#6
4613 164146 012702 174000 MOV #174000,R2 ;ВЫБРАТЬ АДРЕС 1-Й ПОЗИЦИИ
4614 164152 012746 000005 MOV #5,-(SP) ;ВЫБРАТЬ СЧЕТЧИК ОБРАЩЕНИЙ К РЕГИСТРУ
4615     ;ИДЕНТИФИКАЦИИ МОДУЛЯ ПРИ ОШИБОЧНОЙ
4616     ;СИТУАЦИИ
4617 164156 005004 CLR R4
4618 164160 005746 TST -(SP) ;ОЧИСТИТЬ ЯЧЕЙКУ СТЕКА ДЛЯ ЗАПИСИ
4619     ;ИДЕНТИФИКАЦИОННОГО КОДА МОДУЛЯ ИЛИ ОШИБКИ
4620 164162 005062 000002 CLR 2(R2) ;ОЧИСТИТЬ РС02
4621     ;ПРОИЗОЙДЕТ ПРЕРЫВАНИЕ С АДРЕСОМ ВЕКТОРА 000004,
4622     ;ЕСЛИ РЕГИСТР НЕ ОТВЕЧАЕТ
4623 164166 111237 001022 MOVB @R2,@#1022 ;ПОЛУЧИТЬ В 001022 ИДЕНТИФИКАЦИОННЫЙ КОД МОДУЛЯ
4624 164172 111237 001023 MOVB @R2,@#1023
4625 164176 013716 001022 MOV @#1022,@SP ;ВЫБРАТЬ ИДЕНТИФИКАЦИОННЫЙ КОД МОДУЛЯ
4626 164202 005716 TST @SP ;ИДЕНТИФИКАЦИОННЫЙ КОД РАВЕН 0?
4627 164204 001030 BNE 164266 ;ПЕРЕЙТИ К ПРОВЕРКЕ СЛЕДУЮЩЕЙ ПОЗИЦИИ, ЕСЛИ НЕТ
4628 164206 012705 000010 MOV #10,R5
4629 164212 160105 SUB R1,R5
4630 164214 012703 000001 MOV #1,R3 ;СФОРМИРОВАТЬ 1 В РАЗРЯДЕ, СООТВЕТСТВУЮЩЕМУ
4631 164220 072305 ASH R5,R3 ;ДАННОМУ МОДУЛЮ
4632 164222 030337 173702 BIT R3,@#173702 ;ПОЗИЦИЯ ЗАНЯТА?
4633 164226 001421 BEQ 164272 ;ПЕРЕЙТИ К ПРОВЕРКЕ СЛЕДУЮЩЕЙ ПОЗИЦИИ, ЕСЛИ
4634     ;СВОБОДНА
4635 164230 005766 000002 TST 2(SP) ;КОНЕЦ ОБРАЩЕНИЙ К РЕГИСТРУ ИДЕНТИФИКАЦИИ?
4636 164234 001405 BEQ 164250 ;ПЕРЕЙТИ, ЕСЛИ ДА
4637 164236 005304 DEC R4
4638 164240 001350 BNE 164162 ;ПЕРЕЙТИ НА ПОВТОРНУЮ ПРОВЕРКУ СОДЕРЖИМОГО
4639 164242 005366 000002 DEC 2(SP) ;РЕГИСТРА ИДЕНТИФИКАЦИИ МОДУЛЯ
4640 164246 001345 BNE 164162
4641 164250 005716 TST @SP ;ПРОИЗШЛО ПРЕРЫВАНИЕ С АДРЕСОМ ВЕКТОРА 000004?
4642 164252 001003 BNE .+10 ;ПЕРЕЙТИ, ЕСЛИ ДА
4643 164254 012760 177775 117774 MOV #177775,117774(R0) ;ЗАПИСАТЬ В ТАБЛИЦУ КОНФИГУРАЦИИ ПВК
4644     ;КОД ОШИБКИ 177775:
4645     ;ПОЗИЦИЯ ЗАНЯТА, А
4646     ;ИДЕНТИФИКАЦИОННЫЙ КОД МОДУЛЯ = 0
4647 164262 012716 177776 MOV #177776,@SP ;ЗАПИСАТЬ В ТАБЛИЦУ КОНФИГУРАЦИИ ПВК
4648     ;КОД ОШИБКИ 177776:
4649     ;ПОЗИЦИЯ ЗАНЯТА, НО ПРИ ОБРАЩЕНИИ К РЕГИСТРАМ
4650     ;МОДУЛЯ ПРОИЗОШЛО ПРЕРЫВАНИЕ С АДРЕСОМ
4651     ;ВЕКТОРА 000004 ИЛИ ИДЕНТИФИКАЦИОННЫЙ КОД
4652     ;МОДУЛЯ = 0
4653    
4654 164266 011660 117776 MOV @SP,117776(R0) ;ЗАПИСАТЬ КОД ОШИБКИ В ТАБЛИЦУ КОНФИГУРАЦИИ ПВК
4655 164272 062702 000200 ADD #200,R2 ;ПОЛУЧИТЬ АДРЕС СЛЕДУЮЩЕЙ ПОЗИЦИИ
4656 164276 162700 000004 SUB #4,R0 ;ПОЛУЧИТЬ АДРЕС В ТАБЛИЦЕ КОНФИГУРАЦИИ ПВК
4657     ;ДЛЯ СЛЕДУЮЩЕЙ ПОЗИЦИИ
4658 164302 077151 SOB R1,164162
4659 164304 013700 173702 MOV @#173702,R0 ;СЧИТАТЬ СОДЕРЖИМОЕ РЕГИСТРА ЗАНЯТОСТИ ПОЗИЦИИ
4660 164310 012701 177762 MOV #177762,R1
4661 164314 012702 000010 MOV #10,R2
4662 164320 032700 000001 BIT #1,R0 ;ПОЗИЦИЯ ЗАНЯТА?
4663 164324 001407 BEQ 164344 ;ПЕРЕЙТИ, ЕСЛИ СВОБОДНА
4664 164326 005761 117776 TST 117776(R1) ;СОДЕРЖИМОЕ ЯЧЕЙКИ =0?
4665 164332 001015 BNE 164366 ;ПЕРЕЙТИ, ЕСЛИ НЕТ
4666 164334 012761 177776 117776 MOV #177776,117776(R1) ;ЗАПИСАТЬ КОД ОШИБКИ В ТАБЛИЦУ КОНФИГУРАЦИИ ПВК
4667 164342 000411 BR 164366 ;ПЕРЕЙТИ К ПРОВЕРКЕ СЛЕДУЮЩЕЙ ПОЗИЦИИ
4668 164344 032700 000001 BIT #1,R0 ;ПОЗИЦИЯ СВОБОДНА?
4669 164350 001006 BNE 164366 ;ПЕРЕЙТИ, ЕСЛИ ЗАНЯТА
4670 164352 005761 117776 TST 117776(R1) ;СОДЕРЖИМОЕ РЕГИСТРА ИДЕНТИФИКАЦИИ РАВНО 0?
4671 164356 001403 BEQ .+10 ;ПЕРЕЙТИ, ЕСЛИ ДА
4672 164360 012761 177774 117774 MOV #177774,117774(R1) ;ЗАПИСАТЬ В ТАБЛИЦУ КОНФИГУРАЦИИ ПВК
4673     ;КОД ОШИБКИ 177774:
4674     ;ПОЗИЦИЯ СВОБОДНА, А СОДЕРЖИМОЕ РЕГИСТРА
4675     ;ИДЕНТИФИКАЦИИ НЕ РАВНО 0
4676 164366 162701 000004 SUB #4,R1
4677 164372 006000 ROR R0
4678 164374 077227 SOB R2,164320 ;ПЕРЕЙТИ К ПРОВЕРКЕ СЛЕДУЮЩЕЙ ПОЗИЦИИ
4679 164376 022626 CMP (SP)+,(SP)+ ;ВОССТАНОВИТЬ УС
4680 164400 000406 BR 164416 ;ПЕРЕЙТИ К ПРОВЕРКЕ МОДУЛЕЙ СИСТЕМНОЙ
4681     ;МАГИСТРАЛИ
4682     ;ПОДПРОГРАММА ОБСЛУЖИВАНИЯ ПРЕРЫВАНИЯ С АДРЕСОМ ВЕКТОРА 000004
4683    
4684 164402 012766 177777 000004 MOV #-1,4(SP) ;ЗАПИСЬ 177777 В СТЕК
4685 164410 012716 164206 MOV #164206,@SP ;СФОРМИРОВАТЬ АДРЕС ВОЗВРАТА ИЗ ПОДПРОГРАММЫ
4686 164414 000002 RTI
4687    
4688     ;*********************************************************************
4689     ;
4690     ;ПРОВЕРИТЬ МОДУЛИ, УСТАНОВЛЕННЫЕ В ПОЗИЦИИ СИСТЕМНОЙ МАГИСТРАЛИ
4691     ;
4692     ;*********************************************************************
4693    
4694 164416 005005 CLR R5 ;УСТАНОВИТЬ ИДЕНТИФИКАТОР ПОЗИЦИИ
4695 164420 010546 MOV R5,-(SP)
4696 164422 005765 117760 TST 117760(R5) ;ПОЗИЦИЯ ЗАНЯТА?
4697 164426 001527 BEQ 164706 ;ПЕРЕЙТИ, ЕСЛИ СВОБОДНА
4698 164430 022765 177776 117760 CMP #177776,117760(R5) ;ПОЗИЦИЯ ИСПРАВНА?
4699 164436 001523 BEQ 164706 ;ПЕРЕЙТИ, ЕСЛИ НЕТ
4700 164440 010500 MOV R5,R0
4701 164442 005400 NEG R0
4702 164444 072027 177776 ASH #177776,R0
4703 164450 022765 002004 117760 CMP #2004,117760(R5) ;В ПОЗИЦИИ УСТАНОВЛЕН КОНТРОЛЛЕР НГМД?
4704 164456 001002 BNE .+6 ;ПЕРЕЙТИ, ЕСЛИ НЕТ
4705 164460 000137 135216 JMP @#135216 ;ВЫПОЛНИТЬ ПОДПРОГРАММУ ПРОВЕРКИ КОНТРОЛЛЕРА
4706     ;НГМД
4707 164464 022765 000401 117760 CMP #401,117760(R5) ;В ПОЗИЦИИ УСТАНОВЛЕН КОНТРОЛЛЕР НМД?
4708 164472 001002 BNE .+6 ;ПЕРЕЙТИ, ЕСЛИ НЕТ
4709 164474 000137 135602 JMP @#135602 ;ВЫПОЛНИТЬ ПОДПРОГРАММУ ПРОВЕРКИ КОНТРОЛЛЕРА НМД
4710 164500 022765 001002 117760 CMP #1002,117760(R5) ;В ПОЗИЦИИ УСТАНОВЛЕН ВИДЕОКОНТРОЛЛЕР?
4711 164506 001002 BNE .+6 ;ПЕРЕЙТИ, ЕСЛИ ДА
4712 164510 000137 137130 JMP @#137130 ;ВЫПОНИТЬ ПОДПРОГРАММУ ПРОВЕРКИ ВИДЕОКОНТРОЛЛЕРА
4713 164514 026527 117756 177777 CMP 117756(R5),#-1 ;ПОЗИЦИЯ ЗАНЯТА И СОДЕРЖИМОЕ РЕГИСТРА
4714     ;ИДЕНТИФИКАЦИИ ОТЛИЧНО ОТ 0?
4715 164522 001071 BNE 164706 ;ПЕРЕЙТИ, ЕСЛИ НЕТ
4716 164524 012737 164730 000004 MOV #164730,@#4 ;СФОРМИРОВАТЬ ВЕКТОР С АДРЕСОМ 000004
4717 164532 005405 NEG R5
4718 164534 072527 177776 ASH #177776,R5
4719 164540 004737 164770 JSR PC,@#164770 ;СЧИТАТЬ БАЙТЫ 1-12 ПЗУ МОДУЛЯ В ЯЧЕЙКИ С
4720     ;АДРЕСАМИ 001000-001010
4721 164544 103003 BCC .+10 ;ПЕРЕЙТИ, ЕСЛИ БАЙТ 3 ПЗУ МОДУЛЯ РАВЕН 377
4722 164546 052702 177777 BIS #-1,R2
4723 164552 000442 BR 164660 ;ПЕРЕЙТИ К ПРОВЕРКЕ СЛЕДУЮЩЕГО МОДУЛЯ
4724 164554 013700 001006 MOV @#1006,R0 ;ВЫБРАТЬ БАЙТ 7 ПЗУ МОДУЛЯ
4725 164560 005065 000002 CLR 2(R5) ;УСТАНОВИТЬ УКАЗАТЕЛЬ НА НАЧАЛО ПЗУ МОДУЛЯ
4726    
4727     ;ПРОИЗВЕСТИ КОНТРОЛЬНОЕ СУММИРОВАНИЕ СОДЕРЖИМОГО ПЗУ МОДУЛЯ
4728     ;КОЛИЧЕСТВО СУММИРУЕМЫХ ЯЧЕЕК РАВНО СОДЕРЖИМОМУ БАЙТА 7,
4729     ;УМНОЖЕННОМУ НА 200
4730 164564 052737 177777 001020 BIS #-1,@#1020
4731 164572 012701 000200 MOV #200,R1
4732 164576 111537 001022 MOVB @R5,@#1022
4733 164602 111537 001023 MOVB @R5,@#1023
4734 164606 013702 001022 MOV @#1022,R2
4735 164612 074237 001020 XOR R2,@#1020
4736 164616 000241 CLC
4737 164620 006137 001020 ROL @#1020
4738 164624 005537 001020 ADC @#1020
4739 164630 077116 SOB R1,164576
4740 164632 077021 SOB R0,164572
4741 164634 005737 001020 TST @#1020 ;КС=0?
4742 164640 001403 BEQ .+10 ;ПЕРЕЙТИ, ЕСЛИ ДА
4743 164642 012702 177776 MOV #177776,R2 ;ОШИБКА КС СОДЕРЖИМОГО ПЗУ МОДУЛЯ
4744 164646 000404 BR 164660 ;ПЕРЕЙТИ К ЗАПИСИ КОДА ОШИБКИ В ТАБЛИЦУ
4745     ;КОНФИГУРАЦИИ ПВК
4746 164650 012702 164732 MOV #164732,R2
4747 164654 004737 154514 JSR PC,@#154514 ;ПРОИЗВЕСТИ КОНТРОЛЬНОЕ СУММИРОВАНИЕ КОДОВ
4748     ;МИКРО-ПРОГРАММЫ И ЗАГРУЗИТЬ МИКРО-ПРОГРАММУ
4749     ;ИЗ ПЗУ МОДУЛЯ В ОЗУ, НАЧИНАЯ С АДРЕСА 002000
4750 164660 005702 TST R2 ;БЫЛИ ОШИБКИ?
4751 164662 001006 BNE 164700 ;ПЕРЕЙТИ, ЕСЛИ ДА
4752 164664 011600 MOV @SP,R0 ;ВЫБРАТЬ НОМЕР ПОЗИЦИИ
4753 164666 005400 NEG R0
4754 164670 072027 177776 ASH #177776,R0
4755 164674 012707 002000 MOV #2000,PC ;ВЫПОЛНИТЬ ЗАГРУЖЕННУЮ ПРОГРАММУ ПРОВЕРКИ МОДУЛЯ
4756 164700 011605 MOV @SP,R5
4757 164702 010265 117756 MOV R2,117756(R5) ;ЗАПИСАТЬ КОД ОШИБКИ/СОСТОЯНИЯ В ТАБЛИЦУ
4758     ;КОНФИГУРАЦИИ ПВК
4759 164706 012605 MOV (SP)+,R5
4760 164710 022705 177744 CMP #177744,R5 ;ВСЕ ПОЗИЦИИ ПРОВЕРЕНЫ?
4761 164714 001002 BNE .+6 ;ПЕРЕЙТИ, ЕСЛИ НЕТ
4762 164716 000137 165470 JMP @#165470 ;ПЕРЕЙТИ К АНАЛИЗУ СОДЕРЖИМОГО ТАБЛИЦЫ
4763     ;КОНФИГУРАЦИИ ПВК
4764 164722 162705 000004 SUB #4,R5
4765 164726 000634 BR 164420
4766 164730 000777 BR .+0
4767 164732 042046 042046
4768 164734 000000 0
4769 164736 000000 0
4770 164740 000000 0
4771 164742 000000 0
4772 164744 041046 041046
4773 164746 000000 0
4774 164750 000000 0
4775 164752 000000 0
4776 164754 000000 0
4777 164756 053046 053046
4778 164760 000000 0
4779 164762 000000 0
4780 164764 000000 0
4781 164766 000000 0
4782    
4783    
4784     ;***********************************************************************
4785     ;
4786     ;ПОДПРОГРАММА СЧИТЫВАНИЯ БАЙТОВ 1-12 ПЗУ МОДУЛЯ В ЯЧЕЙКИ ОЗУ С
4787     ;АДРЕСАМИ 001000-001010
4788     ;ПРИ СОДЕРЖИМОМ БАЙТА 3 ПЗУ МОДУЛЯ , РАВНОМ 377, ОЧИЩАЕТСЯ "С"-РАЗРЯД
4789     ;В ПРОТИВНОМ СЛУЧАЕ - УСТАНАВЛИВАЕТСЯ
4790     ;
4791     ;***********************************************************************
4792    
4793 164770 072527 000007 ASH #7,R5
4794 164774 062705 174000 ADD #174000,R5 ;ПОЛУЧИТЬ АДРЕС МОДУЛЯ
4795 165000 005065 000002 CLR 2(R5) ;УСТАНОВИТЬ УКАЗАТЕЛЬ НА НАЧАЛО ПЗУ МОДУЛЯ
4796 165004 012700 001000 MOV #1000,R0 ;ВЫБРАТЬ АДРЕС ОЗУ
4797 165010 012701 000012 MOV #12,R1 ;ВЫБРАТЬ СЧЕТЧИК БАЙТОВ
4798 165014 111520 MOVB @R5,(R0)+ ;СЧИТАТЬ БАЙТЫ 1-12 В ОЗУ
4799 165016 077102 SOB R1,.-2
4800 165020 122737 000377 001002 CMPB #377,@#1002 ;БАЙТ 3 =377?
4801 165026 001001 BNE .+4 ;ПЕРЕЙТИ НА УСТАНОВКУ "С"-РАЗРЯДА, ЕСЛИ НЕТ
4802 165030 005727 000261 TST #261
4803 165034 000207 RTS PC ;ВЫХОД ИЗ ПОДПРОГРАММЫ
4804    
4805     ;***********************************************************************
4806     ;
4807     ;ПОДПРОГРАММА ОБСЛУЖИВАНИЯ ПРЕРЫВАНИЯ С АДРЕСОМ ВЕКТОРА
4808     ;ПРЕРЫВАНИЯ 000030
4809     ;
4810     ;***********************************************************************
4811    
4812 165036 010346 MOV R3,-(SP) ;СОХРАНИТЬ R3
4813 165040 012746 165070 MOV #165070,-(SP)
4814 165044 016603 000004 MOV 4(SP),R3 ;ВЫБРАТЬ АДРЕС СЛЕДУЮЩЕЙ НЕВЫПОЛНЕННОЙ КОМАНДЫ
4815 165050 005743 TST -(R3) ;ПОЛУЧИТЬ АДРЕС ЕМТ
4816 165052 011303 MOV @R3,R3 ;ВЫБРАТЬ КОД ЕМТ
4817 165054 042703 177000 BIC #177000,R3 ;ПОЛУЧИТЬ НОМЕР EMT
4818 165060 020327 000006 CMP R3,#6 ;НОМЕР БОЛЬШЕ 6 ?
4819 165064 003403 BLE .+10 ;ПЕРЕЙТИ, ЕСЛИ НЕТ
4820 165066 000207 RTS PC
4821 165070 012603 MOV (SP)+,R3 ;ВОССТАНОВИТЬ R3
4822 165072 000002 RTI ;ВЫХОД ИЗ ПРЕРЫВАНИЯ
4823 165074 006303 ASL R3
4824 165076 016307 165104 MOV 165104(R3),PC ;ПЕРЕЙТИ НА ОБРАБОТКУ ЕМТ С ЗАДАННЫМ НОМЕРОМ
4825 165102 000777 BR .+0
4826    
4827    
4828     ;ТАБЛИЦА АДРЕСОВ ПОДПРОГРАММ ОБСЛУЖИВАНИЯ КОМАНД ЕМТ
4829     ;С ЗАДАННЫМ НОМЕРОМ
4830    
4831 165104 165326 165326 ;ЕМТ+0
4832 165106 165254 165254 ;ЕМТ+1
4833 165110 165160 165160 ;ЕМТ+2
4834 165112 165122 165122 ;ЕМТ+3
4835 165114 165216 165216 ;ЕМТ+4
4836 165116 165336 165336 ;ЕМТ+5
4837 165120 165412 165412 ;ЕМТ+6 4838
4839     ;**********************************************************************
4840     ;
4841     ;ПОДПРОГРАММА ОБСЛУЖИВАНИЯ ЕМТ+3.
4842     ;ПОДПРОГРАММА ЗАПРЕЩЕНИЯ ПРЕРЫВАНИЯ ОТ УКАЗАННОГО УСТРОЙСТВА
4843     ;
4844     ;***********************************************************************
4845    
4846 165122 010146 MOV R1,-(SP)
4847 165124 011603 MOV @SP,R3 ;ВЫБРАТЬ ПРИЗНАК УСТРОЙСТВА
4848 165126 000303 SWAB R3
4849 165130 006303 ASL R3
4850 165132 006303 ASL R3
4851 165134 042703 177400 BIC #177400,R3
4852 165140 042716 177400 BIC #177400,@SP
4853 165144 062716 000070 ADD #70,@SP
4854 165150 011663 173202 MOV @SP,173202(R3) ;ЗАПРЕТИТЬ ПРЕРЫВАНИЕ ОТ УКАЗАННОГО УСТРОЙСТВА
4855 165154 005726 TST (SP)+
4856 165156 000207 RTS PC
4857    
4858     ;***********************************************************************
4859     ;
4860     ;ПОДПРОГРАММА ОБСЛУЖИВАНИЯ ЕМТ+2
4861     ;ПОДПРОГРАММА РАЗРЕШЕНИЯ ПРЕРЫВАНИЯ ОТ УКАЗАННОГО УСТРОЙСТВА
4862     ;
4863     ;***********************************************************************
4864    
4865 165160 010146 MOV R1,-(SP)
4866 165162 011603 MOV @SP,R3 ;ВЫБРАТЬ ПРИЗНАК УСТРОЙСТВА
4867 165164 000303 SWAB R3
4868 165166 006303 ASL R3
4869 165170 006303 ASL R3
4870 165172 042703 177400 BIC #177400,R3
4871 165176 042716 177400 BIC #177400,@SP
4872 165202 062716 000030 ADD #30,@SP
4873 165206 011663 173202 MOV @SP,173202(R3) ;РАЗРЕШИТЬ ПРЕРЫВАНИЕ ОТ УКАЗАННОГО УСТРОЙСТВА
4874 165212 005726 TST (SP)+
4875 165214 000207 RTS PC
4876    
4877     ;***********************************************************************
4878     ;
4879     ;ПОДПРОГРАММА ОБСЛУЖИВАНИЯ ЕМТ+4
4880     ;ПОДПРОГРАММА УСТАНОВКИ ТРЕБОВАНИЯ ПРЕРЫВАНИЯ ОТ УКАЗАННОГО УСТРОЙСТВА
4881     ;
4882     ;***********************************************************************
4883    
4884 165216 010146 MOV R1,-(SP)
4885 165220 011603 MOV @SP,R3 ;ВЫБРАТЬ ПРИЗНАК УСТРОЙСТВА
4886 165222 000303 SWAB R3
4887 165224 006303 ASL R3
4888 165226 006303 ASL R3
4889 165230 042703 177400 BIC #177400,R3
4890 165234 042716 177400 BIC #177400,@SP
4891 165240 062716 000130 ADD #130,@SP
4892 165244 011663 173202 MOV @SP,173202(R3) ;УСТАНОВИТЬ ТРЕБОВАНИЕ ПРЕРЫВАНИЯ ОТ УСТРОЙСТВА
4893 165250 005726 TST (SP)+
4894 165252 000207 RTS PC
4895    
4896     ;***********************************************************************
4897     ;
4898     ;ПОДПРОГРАММА ОБСЛУЖИВАНИЯ ЕМТ+1
4899     ;ОПРЕДЕЛЕНИЕ ПОЗИЦИИ МОДУЛЯ ПО ЗАДАННОМУ В R0 ИДЕНТИФИКАЦИОННОМУ КОДУ
4900     ;
4901     ;***********************************************************************
4902    
4903 165254 010146 MOV R1,-(SP) ;СОХРАНИТЬ R1
4904 165256 010246 MOV R2,-(SP) ;СОХРАНИТЬ R2
4905 165260 012701 177762 MOV #177762,R1 ;ВЫБРАТЬ ВИРТУАЛЬНЫЙ АДРЕС ТАБЛИЦЫ КОНФ. ПВК
4906 165264 005002 CLR R2 ;ОЧИСТИТЬ R2
4907 165266 020061 117776 CMP R0,117776(R1) ;СОДЕРЖИМОЕ ЯЧЕЙКИ РАВНО ИДЕНТИФИКАЦИОННОМУ КОДУ?
4908 165272 001411 BEQ 165316 ;ПЕРЕЙТИ, ЕСЛИ ДА
4909 165274 022702 000007 CMP #7,R2 ;ПОСЛЕДНЯЯ ПОЗИЦИЯ?
4910 165300 001404 BEQ 165312 ;ПЕРЕЙТИ, ЕСЛИ ДА
4911 165302 162701 000004 SUB #4,R1 ;ПОЛУЧИТЬ АДРЕС СЛЕДУЮЩЕЙ ЯЧЕЙКИ ТАБЛИЦЫ КОНФ.
4912 165306 005202 INC R2 ;ПОЛУЧИТЬ НОМЕР СЛЕДУЮЩЕЙ ПОЗИЦИИ
4913 165310 000766 BR 165266
4914 165312 052702 177777 BIS #-1,R2 ;УСТАНОВИТЬ ПРИЗНАК ОТСУТСТВИЯ ЗАДАННОГО МОДУЛЯ
4915 165316 010200 MOV R2,R0 ;ВЫБРАТЬ НОМЕР ПОЗИЦИИ
4916 165320 012602 MOV (SP)+,R2 ;ВОССТАНОВИТЬ R2
4917 165322 012601 MOV (SP)+,R1 ;ВОССТАНОВИТЬ R1
4918 165324 000207 RTS PC ;ВЫХОД ИЗ ПОДПРОГРАММЫ
4919    
4920    
4921     ;***********************************************************************
4922     ;
4923     ;ПОДПРОГРАММА ОБСЛУЖИВАНИЯ ЕМТ+0
4924     ;ПОДПРОГРАММА ЗАВЕРШЕНИЯ ПРОВЕРКИ МОДУЛЕЙ, УСТАНОВЛЕННЫХ В ПОЗИЦИИ
4925     ;СИСТЕМНОЙ МАГИСТРАЛИ
4926     ;
4927     ;*********************************************************************
4928    
4929 165326 012766 164706 000004 MOV #164706,4(SP) ;СФОРМИРОВАТЬ АДРЕС ВЫХОДА ИЗ ПОДПРОГРАММЫ
4930     ;ПРОВЕРКИ МОДУЛЯ
4931 165334 000207 RTS PC
4932    
4933    
4934     ;***********************************************************************
4935     ;
4936     ;ПОДПРОГРАММА ОБСЛУЖИВАНИЯ ЕМТ+5
4937     ;ПОДПРОГРАММА ФОРМИРОВАНИЯ В РАС 172342-172350 КОНСТАНТ
4938     ;ПЕРЕРАСПРЕДЕЛЕНИЯ ОЗУ ВИДЕОКОНТРОЛЛЕРА.
4939     ;СОДЕРЖИМОЕ РЕГ. 172342-172350 СОХРАНЯЕТСЯ В ЯЧ. ОЗУ 1766-1774
4940     ;
4941     ;***********************************************************************
4942    
4943 165336 010146 MOV R1,-(SP)
4944 165340 012701 002000 MOV #2000,R1 ;ВЫБРАТЬ АДРЕС ДЛЯ СОХРАНЕНИЯ КОНСТАНТ
4945 165344 010046 MOV R0,-(SP) ;СОХРАНИТЬ R0
4946 165346 012700 172342 MOV #172342,R0 ;ВЫБРАТЬ АДРЕС РАС
4947 165352 016641 000016 MOV 16(SP),-(R1) ;ВЫБРАТЬ СЧЕТЧИК РАС
4948 165356 016603 000014 MOV 14(SP),R3
4949 165362 072327 000007 ASH #7,R3 ;ПОЛУЧИТЬ КОНСТ. ПЕРЕРАСПРЕДЕЛЕНИЯ ДЛЯ ДОСТУПА
4950     ;К ПАМЯТИ ВИДЕОДАННЫХ
4951 165366 011041 MOV @R0,-(R1) ;СОХРАНИТЬ РАС
4952 165370 010320 MOV R3,(R0)+ ;СФОРМИРОВАТЬ КОНСТАНТУ ПЕРЕРАСПРЕДЕЛЕНИЯ
4953 165372 062703 000200 ADD #200,R3 ;ПОЛУЧИТЬ СЛЕДУЮЩУЮ КОНСТАНТУ
4954 165376 005366 000016 DEC 16(SP)
4955 165402 001371 BNE 165366
4956 165404 012600 MOV (SP)+,R0 ;ВОССТАНОВИТЬ R0
4957 165406 012601 MOV (SP)+,R1 ;ВОССТАНОВИТЬ R1
4958 165410 000207 RTS PC
4959    
4960    
4961     ;***********************************************************************
4962     ;
4963     ;ПОДПРОГРАММА ОБСЛУЖИВАНИЯ ЕМТ+6
4964     ;ПОДПРОГРАММА ВОССТАНОВЛЕНИЯ СОДЕРЖИМОГО РЕГИСТРОВ 172342-172350
4965     ;ИЗ ЯЧЕЕК 1766-1774 ПОСЛЕ ПРОВЕРКИ ВИДЕОКОНТРОЛЛЕРА
4966     ;
4967     ;***********************************************************************
4968    
4969 165412 010046 MOV R0,-(SP) ;СОХРАНИТЬ R0
4970 165414 010146 MOV R1,-(SP) ;СОХРАНИТЬ R1
4971 165416 012701 002000 MOV #2000,R1 ;ВЫБРАТЬ АДРЕС В R1
4972 165422 014146 MOV -(R1),-(SP) ;ВЫБРАТЬ СЧЕТЧИК РАС
4973 165424 005716 TST @SP ;СОДЕРЖИМОЕ ВСЕХ РАС ВОССТАНОВЛЕНО?
4974 165426 001405 BEQ 165442 ;ПЕРЕЙТИ, ЕСЛИ ДА
4975 165430 012700 172342 MOV #172342,R0 ;ВЫБРАТЬ АДРЕС РАС
4976 165434 014120 MOV -(R1),(R0)+ ;ВОССТАНОВИТЬ СОДЕРЖИМОЕ РАС
4977 165436 005316 DEC @SP ;ВСЕ РАС ВОССТАНОВЛЕНЫ?
4978 165440 001375 BNE .-4 ;ПЕРЕЙТИ, ЕСЛИ НЕТ
4979 165442 005037 001776 CLR @#1776
4980 165446 005726 TST (SP)+ ;ОЧИСТИТЬ СТЕК
4981 165450 012601 MOV (SP)+,R1 ;ВОССТАНОВИТЬ R1
4982 165452 012600 MOV (SP)+,R0 ;ВОССТАНОВИТЬ R0
4983 165454 000207 RTS PC ;ВЫХОД ИЗ ПОДПРОГРАММЫ
4984    
4985     ;***********************************************************************
4986     ;
4987     ;ПОДПРОГРАММА ПЕРЕМЕЩЕНИЯ СОДЕРЖИМОГО 111 ЯЧЕЕК АВТОДЕКРЕМЕНТНО
4988     ;ИЗ R0 В R1 (ТАБЛИЦА КОНФИГУРАЦИИ ПВК)
4989     ;
4990     ;***********************************************************************
4991    
4992 165456 012703 000111 MOV #111,R3 ;УСТАНОВИТЬ СЧЕТЧИК ЯЧЕЕК ТАБЛИЦЫ КОНФИГУРАЦИИ ПВК
4993 165462 014041 MOV -(R0),-(R1) ;ПЕРЕМЕСТИТЬ АВТОДЕКРЕМЕНТНО ИЗ R0 В R1
4994     ;ТАБЛИЦУ КОНФИГУРАЦИИ ПВК
4995 165464 077302 SOB R3,.-2 ;ПЕРЕЙТИ, ЕСЛИ СЧЕТЧИК НЕ ИСЧЕРПАН
4996 165466 000207 RTS PC
4997    
4998     ;***********************************************************************
4999     ;
5000     ;ПОДПРОГРАММА ФОРМИРОВАНИЯ КОНСТАНТ ПЕРЕРАСПРЕДЕЛЕНИЯ ПАМЯТИ
5001     ;
5002     ;*********************************************************************
5003    
5004 165470 012737 165744 000004 MOV #165744,@#4 ;СФОРМИРОВАТЬ ВЕКТОР С АДРЕСОМ 000004
5005 165476 012737 000245 173202 MOV #245,@#173202
5006 165504 012737 000260 173202 MOV #260,@#173202
5007 165512 012737 000245 173206 MOV #245,@#173206
5008 165520 012737 000260 173206 MOV #260,@#173206
5009 165526 012737 000245 173212 MOV #245,@#173212
5010 165534 012737 000260 173212 MOV #260,@#173212
5011 165542 005037 177572 CLR @#177572 ;ЗАПРЕТИТЬ ДП
5012 165546 005037 172516 CLR @#172516 ;ЗАПРЕТИТЬ 22-РАЗРЯДНОЕ ПРЕОБРАЗОВАНИЕ
5013 165552 005037 172340 CLR @#172340 ;СФОРМИРОВАТЬ КОНСТАНТЫ ПЕРЕРАСПРЕДЕЛЕНИЯ ДЛЯ
5014 165556 012737 000200 172342 MOV #200,@#172342 ;ДОСТУПА К ОЗУ
5015 165564 012737 000400 172344 MOV #400,@#172344
5016 165572 012737 000600 172346 MOV #600,@#172346
5017 165600 012737 001400 172350 MOV #1400,@#172350
5018 165606 012737 177400 172354 MOV #177400,@#172354 ;СФОРМИРОВАТЬ КОНСТАНТЫ ПЕРЕРАСПРЕДЕЛЕНИЯ ДЛЯ
5019     ;ДОСТУПА К ПЗУ И
5020 165614 012737 177600 172356 MOV #177600,@#172356 ;К СТРАНИЦЕ ВВОДА/ВЫВОДА
5021 165622 012700 000010 MOV #10,R0
5022 165626 012701 077406 MOV #77406,R1 ;РАЗРЕШИТЬ ДОСТУП КО ВСЕМ СТРАНИЦАМ
5023 165632 012702 172300 MOV #172300,R2
5024 165636 010122 MOV R1,(R2)+
5025 165640 077002 SOB R0,.-2
5026 165642 012737 000020 172516 MOV #20,@#172516 ;РАЗРЕШИТЬ 22-РАЗРЯДНОЕ ПРЕОБРАЗОВАНИЕ
5027 165650 012737 000001 177572 MOV #1,@#177572 ;РАЗРЕШИТЬ ДП
5028 165656 013737 117706 172352 MOV @#117706,@#172352
5029 165664 006337 172352 ASL @#172352
5030 165670 162737 000200 172352 SUB #200,@#172352 ;ПОЛУЧИТЬ КОНСТАНТУ ПЕРЕРАСПРЕДЕЛЕНИЯ
5031     ;ФИЗИЧЕСКОЙ СТРАНИЦЫ ОЗУ
5032    
5033    
5034 165676 012700 120000 MOV #120000,R0
5035 165702 012701 140000 MOV #140000,R1
5036 165706 004737 165456 JSR PC,@#165456 ;ПЕРЕМЕСТИТЬ ТАБЛИЦУ КОНФИГУРАЦИИ ПВК ИЗ ЯЧЕЕК
5037     ;С АДРЕСАМИ 00157554-00157776 В КОНЕЦ ОЗУ
5038 165712 004737 142446 JSR PC,@#142446 ;ВЫВЕСТИ СООБЩЕНИЕ ОБ ОШИБКЕ ИЛИ СООБЩЕНИЕ
5039     ;"Э Л Е К Т Р О Н И К А"
5040    
5041 165716 113737 117707 173050 MOVB @#117707,@#173050 ;ЗАПИСАТЬ ЕМКОСТЬ ПАМЯТИ
5042 165724 123737 117707 173050 CMPB @#117707,@#173050 ;ДАННЫЕ СОВПАДАЮТ?
5043 165732 001004 BNE 165744 ;ПЕРЕЙТИ, ЕСЛИ НЕТ
5044 165734 005000 CLR R0
5045 165736 005001 CLR R1
5046 165740 000137 167730 JMP @#167730
5047 165744 000777 BR .+0
5048    
5049     ;***********************************************************************
5050     ;
5051     ;ПОДПРОГРАММА ЗАПУСКА ПРОГРАММ ЗАГРУЗКИ
5052     ;ПОДПРОГРАММА ЗАПУСКАЕТ ПРОГРАММЫ ЗАГРУЗКИ, НАЧИНАЯ С ПЕРВОГО ЭТАПА,
5053     ;ЕСЛИ (177640)=0 И (177642)=0.
5054     ;ПРИ (177640)=0 ИЛИ (177642)=0 ВЫВОДИТСЯ СООБЩЕНИЕ О ПРОГРАММНОЙ ОШИБКЕ
5055    
5056 165746 005737 177640 TST @#177640 ;ПРОГРАММНАЯ ОШИБКА?
5057 165752 001003 BNE .+10 ;ПЕРЕЙТИ, ЕСЛИ ДА
5058 165754 005737 177642 TST @#177642
5059 165760 001471 BEQ 166144
5060 165762 004737 155036 JSR PC,@#155036 ;СФОРМИРОВАТЬ В ЯЧЕЙКАХ 002000-002004 И 002010
5061     ;АДРЕСА ПОДПРОГРАММ ФОРМИРОВАНИЯ ИЗОБРАЖЕНИЯ
5062 165766 004777 014016 JSR PC,@2010 ;ОЧИСТИТЬ ЭКРАН МОНИТОРА
5063 165772 012746 144232 MOV #144232,-(SP)
5064 165776 010337 001022 MOV R3,@#1022
5065 166002 012703 177777 MOV #-1,R3
5066 166006 004777 013766 JSR PC,@2000 ;ВЫВЕСТИ НА ЭКРАН МОНИТОРА ИЗОБРАЖЕНИЕ СИСТЕМНОГО
5067     ;БЛОКА И КЛАВИАТУРЫ
5068 166012 013703 001022 MOV @#1022,R3
5069 166016 013716 177640 MOV @#177640,@SP ;ВЫБРАТЬ ПЕРВОЕ ЧИСЛО
5070 166022 012746 000006 MOV #6,-(SP) ;ВЫБРАТЬ СЧЕТЧИК ЦИФР ЧИСЛА
5071 166026 005046 CLR -(SP)
5072 166030 012705 001100 MOV #1100,R5
5073 166034 004737 143244 JSR PC,@#143244 ;РАСПАКОВАТЬ ЧИСЛО
5074 166040 012766 001100 000004 MOV #1100,4(SP)
5075 166046 012766 001551 000002 MOV #1551,2(SP) ;НАЧАЛЬНАЯ КООРДИНАТА ПО X
5076 166054 012716 000151 MOV #151,@SP ;НАЧАЛЬНАЯ КООРДИНАТА ПО Y
5077 166060 004777 013720 JSR PC,@2004 ;ВЫВЕСТИ НА ЭКРАН ПЕРВУЮ СТРОКУ ЦИФР
5078 166064 013766 177642 000004 MOV @#177642,4(SP) ;ВЫБРАТЬ ВТОРОЕ ЧИСЛО
5079 166072 012766 000006 000002 MOV #6,2(SP) ;ВЫБРАТЬ СЧИТЧИК ЦИФР ЧИСЛА
5080 166100 005016 CLR @SP
5081 166102 012705 001100 MOV #1100,R5
5082 166106 004737 143244 JSR PC,@#143244 ;РАСПАКОВАТЬ ЧИСЛО
5083 166112 012766 001100 000004 MOV #1100,4(SP)
5084 166120 012766 001551 000002 MOV #1551,2(SP) ;НАЧАЛЬНАЯ КООРДИНАТА ПО X
5085 166126 012716 000202 MOV #202,@SP ;НАЧАЛЬНАЯ КООРДИНАТА ПО Y
5086 166132 004777 013646 JSR PC,@2004 ;ВЫВЕСТИ НА ЭКРАН ВТОРУЮ СТРОКУ ЦИФР
5087 166136 062706 000006 ADD #6,SP
5088 166142 000777 BR .+0
5089    
5090     ;*********************************************************************
5091     ;ПРОИЗВЕСТИ ЗАГРУЗКУ НУЛЕВОГО БЛОКА ОПЕРАЦИОННОЙ СИСТЕМЫ ( ЗАГРУЗЧИКА )
5092     ;ЗАГРУЗКА ПРОИЗВОДИТСЯ В 3 ЭТАПА.
5093     ;**********************************************************************
5094    
5095     ;**********************************************************************
5096     ; 1-Й Э Т А П З А Г Р У З К И
5097     ;
5098     ;НА ПЕРВОМ ЭТАПЕ ЗАГРУЗКИ ОПРЕДЕЛЯЕТСЯ НАЛИЧИЕ В ПОЗИЦИЯХ СИСТЕМНОЙ
5099     ;МАГИСТРАЛИ УСТРОЙСТВ СО СМЕННЫМИ НОСИТЕЛЯМИ И ПРОИЗВОДИТСЯ ПОПЫТКА
5100     ;ЗАГРУКИ С КАЖДОГО УСТРОЙСТВА. ПРИ ОТСУТСТВИИ УСТРОЙСТВ СО СМЕННЫМИ
5101     ;НОСИТЕЛЯМИ ИЛИ ПРИ ОТСУТСТВИИ ЗАГРУЗЧИКОВ НА НОСИТЕЛЕ ВЫПОЛНЯЕТСЯ
5102     ;ВТОРОЙ ЭТАП ЗАГРУЗКИ.
5103     ;**********************************************************************
5104    
5105 166144 005037 137564 CLR @#137564 ;ОЧИСТИТЬ ЯЧЕЙКУ ДЛЯ ЗАПИСИ ИДЕНТИФИКАЦИОННОГО
5106     ;КОДА УСТРОЙСТВА ЗАГРУЗКИ
5107 166150 112737 000377 137562 MOVB #377,@#137562
5108 166156 105037 137563 CLRB @#137563 ;ОЧИСТИТЬ СЧЕТЧИК ПОЗИЦИЙ (РАЗРЯДЫ 03-00)
5109     ;РАЗРЯД <;07>; БАЙТА 137563 - ПРИЗНАК ЭТАПА ЗАГРУЗКИ
5110     ;РАЗРЯД<;07>;=0 - ПРИЗНАК ПЕРВОГО ЭТАПА ЗАГРУЗКИ
5111 166162 012737 166170 137560 MOV #166170,@#137560 ;СФОРМИРОВАТЬ АДРЕС ВОЗВРАТА К 1-МУ ЭТАПУ
5112     ;ЗАГРУЗКИ
5113 166170 012737 000340 177776 MOV #340,@#177776 ;УСТАНОВИТЬ ПРИОРИТЕТ ЦП=7
5114 166176 012706 001100 MOV #1100,SP ;УСТАНОВИТЬ УКАЗАТЕЛЬ СТЕКА
5115 166202 004737 167450 JSR PC,@#167450 ;СФОРМИРОВАТЬ КОНСТАНТЫ ПЕРЕРАСПРЕДЕЛЕНИЯ
5116 166206 123727 137563 000010 CMPB @#137563,#10 ;УСТРОЙСТВА ВСЕХ ПОЗИЦИЙ ПРОВЕРЕНЫ?
5117 166214 001403 BEQ .+10 ;ПЕРЕЙТИ НА 2-Й ЭТАП ЗАГРУЗКИ, ЕСЛИ ДА
5118 166216 004737 166712 JSR PC,@#166712 ;ОПРЕДЕЛИТЬ, ИМЕЕТСЯ ЛИ В ДАННОЙ ПОЗИЦИИ
5119     ;УСТРОЙСТВО СО СМЕННЫМ НОСИТЕЛЕМ, ЗАГРУЗИТЬ
5120     ;И ЗАПУСТИТЬ ЗАГРУЗЧИК
5121 166222 000762 BR 166170 ;ПЕРЕЙТИ, ЕСЛИ ЗАГРУЗЧИК НЕ ЗАГРУЖЕН
5122    
5123    
5124     ;**********************************************************************
5125     ;
5126     ; 2-ОЙ Э Т А П З А Г Р У З К И
5127     ;
5128     ;НА ВТОРОМ ЭТАПЕ ПРОИЗВОДИТСЯ ЗАГРУЗКА С УСТРОЙСТВ, ЗАДАННЫХ В ОЗУ
5129     ;ТАЙМЕРА. ИДЕНТИФИКАЦИОННЫЙ КОД ПЕРВОГО УСТРОЙСТВА - В 173034 И 173036
5130     ;ИДЕНТИФИКАЦИОННЫЙ КОД ВТОРОГО - В 173040 И 173042
5131     ;***********************************************************************
5132    
5133 166224 112737 000377 137562 MOVB #377,@#137562
5134 166232 005037 137564 CLR @#137564 ;ОЧИСТИТЬ ЯЧЕЙКУ ДЛЯ ЗАПИСИ ИДЕНТИФИКАЦИОННОГО
5135     ;КОДА УСТРОЙСТВА
5136 166236 112737 000200 137563 MOVB #200,@#137563 ;ОЧИСТИТЬ СЧЕТЧИК ПОЗИЦИЙ (РАЗРЯДЫ 03-00)
5137     ;УСТАНОВИТЬ ПРИЗНАК 2-ГО ЭТАПА ПРОВЕРКИ (РАЗРЯД 07)
5138 166244 005737 137642 TST @#137642 ;ОЗУ ТАЙМЕРА СОХРАНЯЕТ ИНФОРМАЦИЮ ПОСЛЕ
5139     ;ВЫКЛЮЧЕНИЯ ПИТАНИЯ?
5140 166250 001131 BNE 166534 ;ПЕРЕЙТИ К 3-МУ ЭТАПУ ЗАГРУЗКИ, ЕСЛИ НЕТ
5141    
5142     ;ПРОИЗВЕСТИ КОНТРОЛЬНОЕ СУММИРОВАНИЕ СОДЕРЖИМОГО 173034-173046
5143 166252 012737 177777 001020 MOV #-1,@#1020
5144 166260 012702 000003 MOV #3,R2
5145 166264 012701 173034 MOV #173034,R1
5146 166270 012137 001022 MOV (R1)+,@#1022
5147 166274 111137 001023 MOVB @R1,@#1023
5148 166300 005721 TST (R1)+
5149 166302 013703 001022 MOV @#1022,R3
5150 166306 074337 001020 XOR R3,@#1020
5151 166312 000241 CLC
5152 166314 006137 001020 ROL @#1020
5153 166320 005537 001020 ADC @#1020
5154 166324 077217 SOB R2,166270
5155 166326 005737 001020 TST @#1020 ;КС=0?
5156 166332 001100 BNE 166534 ;ПЕРЕЙТИ К 3-МУ ЭТАПУ ЗАГРУЗКИ, ЕСЛИ НЕТ
5157 166334 012737 166422 137560 MOV #166422,@#137560 ;СФОРМИРОВАТЬ АДРЕС ВОЗВРАТА К ТЕКУЩЕМЫ ЭТАПУ
5158     ;ЗАГРУЗКИ
5159 166342 113737 173036 001022 MOVB @#173036,@#1022
5160 166350 000337 001022 SWAB @#1022
5161 166354 113737 173034 001022 MOVB @#173034,@#1022
5162 166362 013700 001022 MOV @#1022,R0 ;ВЫБРАТЬ ИДЕНТИФИКАЦИОННЫЙ КОД ЗАДАННОГО
5163     ;МОДУЛЯ ЗАГРУЗКИ
5164 166366 012737 165036 000030 MOV #165036,@#30
5165 166374 012737 000340 000032 MOV #340,@#32
5166 166402 104001 EMT+1 ;ОПРЕДЕЛИТЬ НОМЕР ПОЗИЦИИ ЗАДАННОГО МОДУЛЯ
5167     ;НОМЕР ПОЗИЦИИ ЗАПИСАТЬ В R0
5168     ;ПРИ ОТСУТСТВИИ ДАННОГО МОДУЛЯ В R0 ЗАПИСЫВАЕТСЯ
5169     ;КОД 177777
5170 166404 022700 177777 CMP #-1,R0 ;ЗАДАННЫЙ МОДУЛЬ УСТАНОВЛЕН?
5171 166410 001404 BEQ 166422 ;ПЕРЕЙТИ, ЕСЛИ НЕТ
5172 166412 150037 137563 BISB R0,@#137563 ;ЗАПИСАТЬ НОМЕР ДАННОГО МОДУЛЯ
5173 166416 004737 166712 JSR PC,@#166712 ;ПРОИЗВЕСТИ ЗАГРУЗКУ И ЗАПУСК ЗАГРУЗЧИКА
5174     ;С ЗАДАННОГО МОДУЛЯ
5175     ;ЕСЛИ ЗАГРУЗЧИК НЕ ЗАГРУЖЕН, ВЫБРАТЬ ВТОРОЙ
5176     ;МОДУЛЬ, ЗАДАННЫЙ В 173040 И 173042
5177    
5178 166422 012737 000340 177776 MOV #340,@#177776 ;УСТАНОВИТЬ ПРИОРИТЕТ ЦП=7
5179 166430 012706 001100 MOV #1100,SP
5180 166434 004737 167450 JSR PC,@#167450 ;СФОРМИРОВАТЬ КОНСТАНТЫ ПЕРЕРАСПРЕДЕЛЕНИЯ
5181 166440 113737 173042 001022 MOVB @#173042,@#1022
5182 166446 000337 001022 SWAB @#1022
5183 166452 113737 173040 001022 MOVB @#173040,@#1022
5184 166460 013700 001022 MOV @#1022,R0 ;ВЫБРАТЬ ИДЕНТИФИКАЦИОННЫЙ КОД МОДУЛЯ
5185 166464 012737 165036 000030 MOV #165036,@#30
5186 166472 012737 000340 000032 MOV #340,@#32
5187 166500 104001 EMT+1 ;ОПРЕДЕЛИТЬ НОМЕР ПОЗИЦИИ МОДУЛЯ
5188 166502 022700 177777 CMP #-1,R0 ;МОДУЛЬ УСТАНОВЛЕН?
5189 166506 001412 BEQ 166534 ;ПЕРЕЙТИ, ЕСЛИ НЕТ
5190 166510 112737 000200 137563 MOVB #200,@#137563 ;УСТАНОВИТЬ В РАЗРЯДЕ 07 ПРИЗНАК 2-ГО ЭТАПА
5191     ;ЗАГРУЗКИ
5192 166516 150037 137563 BISB R0,@#137563 ;ЗАПИСАТЬ НОМЕР ПОЗИЦИИ МОДУЛЯ
5193 166522 012737 166534 137560 MOV #166534,@#137560 ;СФОРМИРОВАТЬ АДРЕС ВОЗВРАТА К ДАННОМУ ЭТАПУ
5194     ;ЗАГРУЗКИ
5195 166530 004737 166712 JSR PC,@#166712 ;ЗАГРУЗИТЬ И ЗАПУСТИТЬ ЗАГРУЗЧИК
5196     ;ПЕРЕЙТИ К 3-МУ ЭТАПУ ЗАГРУЗКИ, ЕСЛИ ЗАГРУЗЧИК
5197     ;НЕ ЗАГРУЖЕН
5198    
5199     ;***********************************************************************
5200     ;
5201     ; 3-Й Э Т А П З А Г Р У З К И
5202     ;
5203     ;НА 3-ЕМ ЭТАПЕ ЗАГРУЗКА ПРОИЗВОДИТСЯ СОГЛАСНО ПРИОРИТЕТУ МОДУЛЕЙ
5204     ;МОДУЛЬ, УСТАНОВЛЕННЫЙ 1-Ю ПОЗИЦИЮ ИМЕЕТ НАИВЫСШИЙ ПРИОРИТЕТ,
5205     ;МОДУЛЬ, УСТАНОВЛЕННЫЙ В ПОСЛЕДНЮЮ ПОЗИЦИЮ - НИЗШИЙ ПРИОРИТЕТ
5206     ;**********************************************************************
5207    
5208 166534 012737 000340 177776 MOV #340,@#177776 ;УСТАНОВИТЬ ПРИОРИТЕТ ЦП=7
5209 166542 012706 001100 MOV #1100,SP ;УСТАНОВИТЬ УКАЗАТЕЛЬ СТЕКА
5210 166546 004737 167450 JSR PC,@#167450 ;СФОРМИРОВАТЬ КОНСТАНТЫ ПЕРЕРАСПРЕДЕЛЕНИЯ
5211 166552 005037 137564 CLR @#137564 ;ОЧИСТИТЬ ЯЧЕЙКУ ДЛЯ ЗАПИСИ ИДЕНТИФИКАЦИОННОГО
5212     ;КОДА МОДУЛЯ
5213 166556 112737 000377 137562 MOVB #377,@#137562
5214 166564 112737 000200 137563 MOVB #200,@#137563 ;УСТАНОВИТЬ В РАЗРЯДЕ 07 ПРИЗНАК 3-ГО ЭТАПА
5215     ;ЗАГРУЗКИ
5216 166572 012737 166600 137560 MOV #166600,@#137560 ;СФОРМИРОВАТЬ АДРЕС ВОЗВРАТА К ДАННОМУ ЭТАПУ
5217     ;ЗАГРУЗКИ
5218 166600 012737 000340 177776 MOV #340,@#177776 ;УСТАНОВИТЬ ПРИОРИТЕТ ЦП=7
5219 166606 012706 001100 MOV #1100,SP
5220 166612 004737 167450 JSR PC,@#167450 ;СФОРМИРОВАТЬ КОНСТАНТЫ ПЕРЕРАСПРЕДЕЛЕНИЯ
5221 166616 123727 137563 000210 CMPB @#137563,#210 ;МОДУЛИ ВСЕХ ПОЗИЦИЙ ПРОВЕРЕНЫ?
5222 166624 001403 BEQ .+10 ;ПЕРЕЙТИ, ЕСЛИ ДА
5223 166626 004737 166712 JSR PC,@#166712 ;ЗАГРУЗИТЬ И ЗАПУСТИТЬ ЗАГРУЗЧИК
5224 166632 000762 BR 166600 ;ПЕРЕЙТИ, ЕСЛИ ЗАГРУЗЧИК НЕ ЗАГРУЖЕН
5225    
5226    
5227    
5228 166634 004737 155036 JSR PC,@#155036 ;СФОРМИРОВАТЬ В ЯЧЕЙКАХ 002000-002004,002010
5229     ;АДРЕСА ПОДПРОГРАММ ФОРМИРОВАНИЯ ИЗОБРАЖЕНИЯ
5230     ;НА ЭКРАНЕ МОНИТОРА
5231 166640 010337 001022 MOV R3,@#1022
5232 166644 012703 177777 MOV #-1,R3
5233 166650 012746 147510 MOV #147510,-(SP)
5234 166654 004777 013120 JSR PC,@2000 ;ВЫВЕСТИ ИЗОБРАЖЕНИЕ ДИСКЕТЫ СО ЗНАКОМ ВОПРОСА
5235     ;( ОПЕРАЦИОННАЯ СИСТЕМА НЕ ЗАГРУЖАЕТСЯ )
5236 166660 013703 001022 MOV @#1022,R3
5237 166664 005726 TST (SP)+
5238 166666 005737 137556 TST @#137556 ;БЫЛИ ОШИБКИ ПРИ ПРОВЕРКЕ УСТРОЙСТВ?
5239 166672 001003 BNE .+10 ;ПЕРЕЙТИ, ЕСЛИ ДА
5240 166674 012737 000005 173704 MOV #5,@#173704 ;ВКЛЮЧИТЬ СВЕТОВЫЕ ИНДИКАТОРЫ 2, 4
5241     ;( ОПЕРАЦИОННАЯ СИСТЕМА НЕ ЗАГРУЖАЕТСЯ )
5242 166702 005000 CLR R0
5243 166704 005001 CLR R1
5244 166706 000137 167730 JMP @#167730 ;ПЕРЕЙТИ К ПЕРВОМУ ЭТАПУ ЗАГРУЗКИ
5245    
5246 166712 113705 137563 MOVB @#137563,R5 ;ВЫБРАТЬ НОМЕР ПОЗИЦИИ И ПРИЗНАК ЭТАПА ЗАГРУЗКИ
5247 166716 005003 CLR R3
5248 166720 005705 TST R5 ;1-Й ЭТАП ЗАГРУЗКИ?
5249 166722 100002 BPL .+6 ;ПЕРЕЙТИ, ЕСЛИ ДА
5250 166724 052703 000007 BIS #7,R3 ;УСТАНОВИТЬ ПРИЗНАК 2-ГО И 3-ГО ЭТАПОВ ЗАГРУЗКИ
5251 166730 052703 000001 BIS #1,R3 ;УСТАНОВИТЬ ПРИЗНАК 1-ГО ЭТАПА ЗАГРУЗКИ
5252 166734 042705 177760 BIC #177760,R5 ;ПОЛУЧИТЬ НОМЕР ПОЗИЦИИ ПРОВЕРЯЕМОГО МОДУЛЯ
5253 166740 010546 MOV R5,-(SP) ;СОХРАНИТЬ НОМЕР ПОЗИЦИИ
5254 166742 072527 000002 ASH #2,R5
5255 166746 005405 NEG R5
5256 166750 132765 000177 137756 BITB #177,137756(R5) ;МОДУЛЬ, УСТАНОВЛЕННЫЙ В ДАННУЮ ПОЗИЦИЮ, ИСПРАВЕН?
5257 166756 001164 BNE 167330 ;ПЕРЕЙТИ, ЕСЛИ НЕТ
5258 166760 022765 002004 137760 CMP #2004,137760(R5) ;В ПОЗИЦИИ КОНТРОЛЛЕР НГМД?
5259 166766 001412 BEQ 167014 ;ПЕРЕЙТИ, ЕСЛИ ДА
5260 166770 022765 000401 137760 CMP #401,137760(R5) ;В ПОЗИЦИИ КОНТРОЛЛЕР НМД?
5261 166776 001406 BEQ 167014 ;ПЕРЕЙТИ, ЕСЛИ ДА
5262 167000 011605 MOV @SP,R5 ;ВЫБРАТЬ НОМЕР ПОЗИЦИИ
5263 167002 010346 MOV R3,-(SP)
5264 167004 004737 167340 JSR PC,@#167340 ;ПРОВЕРИТЬ БАЙТЫ 3 И 5 ПЗУ МОДУЛЯ
5265 167010 012603 MOV (SP)+,R3
5266 167012 103546 BCS 167330 ;ПЕРЕЙТИ К СЛЕДУЮЩЕЙ ПОЗИЦИИ, ЕСЛИ СОДЕРЖИМОЕ
5267     ;НЕВЕРНОЕ
5268 167014 016537 137760 137564 MOV 137760(R5),@#137564 ;ЗАПИСАТЬ ИДЕНТИФИКАЦИОННЫЙ КОД МОДУЛЯ
5269     ;В ТАБЛИЦУ КОНФИГУРАЦИИ ПВК
5270 167022 011605 MOV @SP,R5 ;ВЫБРАТЬ НОМЕР ПОЗИЦИИ
5271 167024 072527 000007 ASH #7,R5
5272 167030 062705 174000 ADD #174000,R5 ;ПОЛУЧИТЬ АДРЕС РЕГИСТРА ИДЕНТИФИКАЦИИ МОДУЛЯ
5273 167034 022737 002004 137564 CMP #2004,@#137564 ;ЗАГРУЗКА С НГМД?
5274 167042 001011 BNE 167066 ;ПЕРЕЙТИ, ЕСЛИ НЕТ
5275    
5276     ;ЗАПИСАТЬ НАЧАЛЬНЫЙ ЗАГРУЗЧИК НГМД В ОЗУ
5277     ;ИЗ ДИАГНОСТИЧЕСКОГО ПЗУ
5278 167044 012700 155244 MOV #155244,R0 ;ВЫБРАТЬ АДРЕС ПОДПРОГРАММЫ "НАЧАЛЬНЫЙ ЗАГРУЗЧИК"
5279 167050 012701 000122 MOV #122,R1 ;УСТАНОВИТЬ СЧЕТЧИК БАЙТОВ ПОДПРОГРАММЫ
5280 167054 012702 002000 MOV #2000,R2 ;ВЫБРАТЬ ПЕРВЫЙ АДРЕС ОЗУ
5281 167060 112022 MOVB (R0)+,(R2)+ ;ПЕРЕПИСАТЬ ПРОГРАММУ ИЗ ПЗУ В ОЗУ
5282 167062 077102 SOB R1,.-2
5283 167064 000422 BR 167132 ;ПЕРЕЙТИ НА ЗАПУСК НАЧАЛЬНОГО ЗАГРУЗЧИКА
5284 167066 022737 000401 137564 CMP #401,@#137564 ;ЗАГРУЗКА С НМД?
5285 167074 001010 BNE 167116 ;ПЕРЕЙТИ, ЕСЛИ НЕТ
5286    
5287     ;ЗАПИСАТЬ НАЧАЛЬНЫЙ ЗАГРУЗЧИК НМД В ОЗУ
5288     ;ИЗ ДИАГНОСТИЧЕСКОГО ПЗУ
5289 167076 032703 000002 BIT #2,R3 ;ПЕРВЫЙ ЭТАП ЗАГРУЗКИ?
5290 167102 001512 BEQ 167330 ;ПЕРЕЙТИ, ЕСЛИ ДА
5291 167104 012700 155366 MOV #155366,R0 ;ВЫБРАТЬ АДРЕС ПОДПРОГРАММЫ "НАЧАЛЬНЫЙ ЗАГРУЗЧИК"
5292 167110 012701 000134 MOV #134,R1 ;УСТАНОВИТЬ СЧЕТЧИК БАЙТОВ
5293 167114 000757 BR 167054
5294 167116 012702 164744 MOV #164744,R2
5295 167122 004737 154514 JSR PC,@#154514 ;ПРОВЕРИТЬ ПЗУ МОДУЛЯ КОНТРОЛЬНЫМ СУММИРОВАНИЕМ,
5296     ;ПЕРЕПИСАТЬ НАЧАЛЬНЫЙ ЗАГРУЗЧИК ИЗ ПЗУ МОДУЛЯ
5297     ;В ОЗУ, НАЧИНАЯ С АДРЕСА 002000
5298 167126 005702 TST R2 ;БЫЛА ОШИБКА ИДЕНТИФИКАЦИИ ПЗУ МОДУЛЯ ИЛИ
5299     ;ОШИБКА КС?
5300 167130 001077 BNE 167330 ;ПЕРЕЙТИ, ЕСЛИ ДА
5301 167132 105237 137562 INCB @#137562
5302 167136 113700 137562 MOVB @#137562,R0
5303 167142 010501 MOV R5,R1
5304 167144 004737 002000 JSR PC,@#2000 ;ЗАПУСТИТЬ НАЧАЛЬНЫЙ ЗАГРУЗЧИК
5305     ;НАЧАЛЬНЫЙ ЗАГРУЗЧИК ЗАГРУЖАЕТ НУЛЕВОЙ БЛОК
5306     ;ОПЕРАЦИОННОЙ СИСТЕМЫ ( ЗАГРУЗЧИК ) С НОСИТЕЛЯ
5307     ;В ОЗУ, НАЧИНАЯ С АДРЕСА 000000
5308    
5309 167150 103006 BCC 167166 ;ПЕРЕЙТИ, ЕСЛИ ПРИ ЗАГРУЗКЕ ОШИБКА НЕ ПРОИЗОШЛА
5310 167152 005702 TST R2 ;МАКСИМУМ ПОПЫТОК ДЛЯ ДАННОГО МОДУЛЯ?
5311 167154 001067 BNE 167334 ;ПЕРЕЙТИ, ЕСЛИ НЕТ
5312 167156 112737 000377 137562 MOVB #377,@#137562
5313 167164 000461 BR 167330 ;ПЕРЕЙТИ К СЛЕДУЮЩЕЙ ПОЗИЦИИ
5314 167166 010046 MOV R0,-(SP)
5315 167170 004737 167364 JSR PC,@#167364 ;ПРОВЕРИТЬ ЗАГРУЖЕННУЮ ПРОГРАММУ НА ЗАГРУЗЧИК
5316     ;ПО ИДЕНТИФИКАЦИОННЫМ ПРИЗНАКАМ
5317 167174 012600 MOV (SP)+,R0
5318 167176 103456 BCS 167334 ;ПЕРЕЙТИ, ЕСЛИ ЗАГРУЖЕН НЕ ЗАГРУЗЧИК
5319 167200 010046 MOV R0,-(SP) ;СОХРАНИТЬ R0
5320 167202 010146 MOV R1,-(SP) ;СОХРАНИТЬ R1
5321 167204 012701 120000 MOV #120000,R1
5322 167210 012700 140000 MOV #140000,R0
5323 167214 004737 165456 JSR PC,@#165456 ;ПЕРЕМЕСТИТЬ ТАБЛИЦУ КОНФИГУРАЦИИ ПВК ИЗ ПОСЛЕДНЕГО
5324     ;БАНКА ОЗУ В ЯЧЕЙКИ 157554- 157776
5325 167220 005737 137556 TST @#137556 ;БЫЛИ ОШИБКИ ПРИ ПРОВЕРКЕ МОДУЛЕЙ?
5326 167224 001013 BNE 167254 ;ПЕРЕЙТИ, ЕСЛИ ДА
5327 167226 032737 000020 173700 BIT #20,@#173700 ;МОНИТОР ПРИСОЕДИНЕН?
5328 167234 001004 BNE 167246 ;ПЕРЕЙТИ, ЕСЛИ ДА
5329 167236 012737 000004 173704 MOV #4,@#173704 ;ВКЛЮЧИТЬ СВЕТОВЫЕ ИНДИКАТОРЫ 1,2,4
5330     ;МОНИТОР НЕ ПРИСОЕДИНЕН
5331 167244 000403 BR .+10
5332 167246 012737 000017 173704 MOV #17,@#173704 ;ПОГАСИТЬ ВСЕ ИНДИКАТОРЫ
5333 167254 004737 155036 JSR PC,@#155036 ;СФОРМИРОВАТЬ В ЯЧЕЙКАХ 002000-002004,002010
5334     ;АДРЕСА ПОДПРОГРАММ ФОРМИРОВАНИЯ ИЗОБРАЖЕНИЯ
5335     ;НА ЭКРАНЕ МОНИТОРА
5336 167260 010337 001022 MOV R3,@#1022
5337 167264 005003 CLR R3
5338 167266 012746 147510 MOV #147510,-(SP)
5339 167272 004777 012502 JSR PC,@2000 ;СТЕРЕТЬ ИЗОБРАЖЕНИЕ ДИСКЕТЫ И ЗНАКА "?"
5340 167276 013703 001022 MOV @#1022,R3
5341 167302 005726 TST (SP)+ ;ОЧИСТИТЬ СТЕК
5342 167304 012601 MOV (SP)+,R1 ;ВОССТАНОВИТЬ R1
5343 167306 012600 MOV (SP)+,R0 ;ВОССТАНОВИТЬ R0
5344 167310 013705 117566 MOV @#117566,R5
5345 167314 005037 177572 CLR @#177572 ;ЗАПРЕТИТЬ ДП
5346 167320 005037 172516 CLR @#172516 ;ЗАПРЕТИТЬ 22-РАЗРЯДНОЕ ПРЕОБРАЗОВАНИЕ
5347 167324 000165 000002 JMP 2(R5) ;ЗАПУСТИТЬ ЗАГРУЗЧИК
5348    
5349    
5350 167330 105237 137563 INCB @#137563 ;УВЕЛИЧИТЬ НОМЕР ПОЗИЦИИ
5351 167334 005726 TST (SP)+
5352 167336 000207 RTS PC ;ВЫХОД ИЗ ПОДПРОГРАММЫ
5353    
5354     ;ПОДПРОГРАММА ПРОВЕРКИ БАЙТОВ 3 И 5 ПЗУ МОДУЛЯ
5355 167340 004737 164770 JSR PC,@#164770
5356 167344 103405 BCS 167360 ;ПЕРЕЙТИ, ЕСЛИ БАЙТ 3 ПЗУ МОДУЛЯ ОТЛИЧЕН ОТ 377
5357 167346 136637 000002 001004 BITB 2(SP),@#1004
5358 167354 001401 BEQ .+4
5359 167356 005727 000261 TST #261
5360 167362 000207 RTS PC ;ВЫХОД ИЗ ПОДПРОГРАММЫ
5361    
5362     ;***********************************************************************
5363     ;
5364     ;ПОДПРОГРАММA ПРОВЕРКИ ЗАГРУЖЕННОЙ ПРОГРАММЫ ПО ИДЕНТИФИКАЦИОННЫМ
5365     ;ПРИЗНАКАМ. ЕСЛИ ПРОГРАММОЙ "НАЧАЛЬНЫЙ ЗАГРУЗЧИК" ЗАГРУЖЕН НЕ ЗАГРУЗЧИК,
5366     ;УСТАНАВЛИВАЕТСЯ "С"-РАЗРЯД 5367 ;
5368     ;***********************************************************************
5369    
5370 167364 005000 CLR R0 ;ВЫБРАТЬ ПЕРВЫЙ АДРЕС ЗАГРУЖЕННОЙ ПРОГРАММЫ
5371 167366 022710 000260 CMP #260,@R0 ;СОДЕРЖИМОЕ ПЕРВОЙ ЯЧЕЙКИ = 260?
5372 167372 001405 BEQ 167406 ;ПЕРЕЙТИ, ЕСЛИ ДА
5373 167374 022710 000240 CMP #240,@R0 ;СОДЕРЖИМОЕ ПЕРВОЙ ЯЧЕЙКИ = 240?
5374 167400 001402 BEQ .+6 ;ПЕРЕЙТИ, ЕСЛИ ДА
5375 167402 005710 TST @R0 ;СОДЕРЖИМОЕ ПЕРВОЙ ЯЧЕЙКИ =0?
5376 167404 001017 BNE 167444 ;ПЕРЕЙТИ НА УСТАНОВКУ С-РАЗРЯДА, ЕСЛИ НЕТ
5377 167406 005720 TST (R0)+
5378 167410 005200 INC R0 ;ПОЛУЧИТЬ АДРЕС СТАРШЕГО БАЙТА ВТОРОЙ ЯЧЕЙКИ
5379 167412 122710 000001 CMPB #1,@R0 ;БАЙТ=1? (Т.Е. В ЯЧЕЙКЕ 000002 КОД BR? )
5380 167416 001012 BNE 167444 ;ПЕРЕЙТИ НА УСТАНОВКУ С-РАЗРЯДА, ЕСЛИ НЕТ
5381 167420 005300 DEC R0 ;ПОЛУЧИТЬ АДРЕС ВТОРОЙ ЯЧЕЙКИ
5382 167422 111003 MOVB @R0,R3 ;ВЫБРАТЬ СОДЕРЖИМОЕ МЛАДШЕГО БАЙТА (СМЕЩЕНИЕ)
5383 167424 006303 ASL R3 ;ПОЛУЧИТЬ АДРЕС ЯЧЕЙКИ
5384 167426 122713 000020 CMPB #20,@R3 ;СОДЕРЖИМОЕ МЛАДШЕГО БАЙТА =20?
5385 167432 001004 BNE 167444 ;ПЕРЕЙТИ НА УСТАНОВКУ С-РАЗРЯДА, ЕСЛИ НЕТ
5386 167434 032713 002000 BIT #2000,@R3 ;РАЗРЯД 10 = 1?
5387 167440 001401 BEQ .+4 ;ПЕРЕЙТИ НА УСТАНОВКУ С-РАЗРЯДА, ЕСЛИ НЕТ
5388    
5389     ;#261 - КОД КОМАНДЫ "УСТАНОВИТЬ С-РАЗРЯД"
5390     ;С-РАЗРЯД УСТАНАВЛИВАЕТСЯ, ЕСЛИ НЕТ
5391     ;ИДЕНТИФИКАЦИОННЫХ ПРИЗНАКОВ ЗАГРУЗЧИКА
5392 167442 005727 000261 TST #261
5393 167446 000207 RTS PC ;ВЫХОД ИЗ ПОДПРОГРАММЫ
5394    
5395    
5396     ;ПОДПРОГРАММА ПОДГОТОВКИ РЕГИСТРОВ ДП
5397 167450 005037 177572 CLR @#177572
5398 167454 005037 172516 CLR @#172516
5399 167460 005037 172340 CLR @#172340
5400 167464 012737 000200 172342 MOV #200,@#172342
5401 167472 012737 000400 172344 MOV #400,@#172344
5402 167500 012737 000600 172346 MOV #600,@#172346
5403 167506 012737 001400 172350 MOV #1400,@#172350 ;СФОРМИРОВАТЬ КОНСТАНТУ ПЕРЕРАСПРЕДЕЛЕНИЯ
5404     ;ДЛЯ ДОСТУПА К ТАБЛИЦЕ КОНФИГУРАЦИИ ПВК, РАЗМЕЩЕННОЙ
5405     ;В КОНЦЕ 28 КБАЙТ
5406 167514 013737 173050 172352 MOV @#173050,@#172352 ;СФОРМИРОВАТЬ КОНСТАНТУ ПЕРЕРАСПРЕДЕЛЕНИЯ
5407 167522 000337 172352 SWAB @#172352 ;ДЛЯ ДОСТУПА К ПОСЛЕДНЕЙ ФИЗИЧЕСКОЙ СТРАНИЦЕ
5408 167526 006337 172352 ASL @#172352 ;ПАМЯТИ
5409 167532 162737 000200 172352 SUB #200,@#172352
5410 167540 012737 177400 172354 MOV #177400,@#172354
5411 167546 012737 177600 172356 MOV #177600,@#172356
5412 167554 012700 000010 MOV #10,R0
5413 167560 012701 077406 MOV #77406,R1
5414 167564 012702 172300 MOV #172300,R2
5415 167570 010122 MOV R1,(R2)+
5416 167572 077002 SOB R0,.-2
5417 167574 012737 000020 172516 MOV #20,@#172516 ;РАЗРЕШИТЬ 22-РАЗРЯДНОЕ ПРЕОБРАЗОВАНИЕ
5418 167602 012737 000001 177572 MOV #1,@#177572 ;РАЗРЕШИТЬ ДП
5419 167610 000207 RTS PC ;ВЫХОД ИЗ ПОДПРОГРАММЫ
5420    
5421     ;*******************************************************************
5422     ;
5423     ;ПОДПРОГРАММА ВКЛЮЧЕНИЯ ДОПОЛНИТЕЛЬНОГО МИКРО-ТЕСТА ДЛЯ
5424     ;ПРИВОДОВ 1 И 2 НГМД
5425     ;
5426     ;********************************************************************
5427    
5428 167612 005737 177650 TST @#177650 ;МИКРО-ТЕСТ ДЛЯ ПРИВОДА 1 ВЫПОЛНЕН?
5429 167616 001010 BNE 167640 ;ПЕРЕЙТИ, ЕСЛИ ДА
5430 167620 012762 000020 000004 MOV #20,4(R2) ;ВЫПОЛНИТЬ ДОПОЛНИТЕЬНЫЙ МИКРО-ТЕСТ ДЛЯ
5431     ;КОНТРОЛЛЕРА И ПРИВОДА 1 НГМД
5432 167626 010001 MOV R0,R1
5433 167630 005237 177650 INC @#177650 ;УСТАНОВИТЬ ПРИЗНАК ПРОВЕРКИ 1-ГО ПРИВОДА
5434 167634 000137 135300 JMP @#135300
5435 167640 022737 000001 177650 CMP #1,@#177650 ;МИКРО-ТЕСТ ДЛЯ ПРИВОДА 2 ВЫПОЛНЕН?
5436 167646 001007 BNE 167666 ;ПЕРЕЙТИ, ЕСЛИ ДА
5437 167650 005237 177650 INC @#177650 ;УСТАНОВИТЬ ПРИЗНАК ПРОВЕРКИ 2-ГО ПРИВОДА
5438 167654 012762 000022 000004 MOV #22,4(R2) ;ВЫПОЛНИТЬ ДОПОЛНИТЕЛЬНЫЙ МИКРО-ТЕСТ ДЛЯ
5439     ;КОНТРОЛЛЕРА И ПРИВОДА 2 НГМД
5440 167662 000137 135320 JMP @#135320
5441 167666 005037 177650 CLR @#177650
5442 167672 000137 135460 JMP @#135460
5443    
5444     ;********************************************************************
5445     ;
5446     ;ПОДПРОГРАММА ВОЗВРАТА К ТЕКУЩЕМУ ЭТАПУ ЗАГРУЗКИ
5447     ;
5448     ;*********************************************************************
5449    
5450 167700 012737 000340 177776 MOV #340,@#177776 ;УСТАНОВИТЬ ПРИОРИТЕТ ЦП=7
5451 167706 012706 001100 MOV #1100,SP ;УСТАНОВИТЬ УКАЗАТЕЛЬ СТЕКА
5452 167712 004737 167450 JSR PC,@#167450 ;СФОРМИРОВАТЬ КОНСТАНТЫ ПЕРЕРАСПРЕДЕЛЕНИЯ
5453 167716 000177 147636 JMP @137560 ;ПЕРЕЙТИ К ТЕКУЩЕМУ ЭТАПУ ЗАГРУЗКИ
5454 167722 000000 0
5455 167724 000000 0
5456 167726 000000 0
5457    
5458     ;********************************************************************
5459     ;
5460     ;ПОДПРОГРАММА ПЕРЕХОДА К ПЕРВОМУ ЭТАПУ ЗАГРУЗКИ ИЛИ К ВЫВОДУ
5461     ;ПРОГРАММНОЙ ОШИБКИ
5462     ;
5463     ;*********************************************************************
5464    
5465 167730 012737 000340 177776 MOV #340,@#177776 ;УСТАНОВИТЬ ПРИОРИТЕТ ЦП =7
5466 167736 010037 177640 MOV R0,@#177640
5467 167742 010137 177642 MOV R1,@#177642
5468 167746 012706 001100 MOV #1100,SP
5469 167752 004737 167450 JSR PC,@#167450 ;СФОРМИРОВАТЬ КОНСТАНТЫ ПЕРЕРАСПРЕДЕЛЕНИЯ
5470 167756 000177 147606 JMP @137570 ;ПЕРЕЙТИ К ПЕРВОМУ ЭТАПУ ЗАГРУЗКИ ИЛИ
5471     ;ВЫВЕСТИ СООБЩЕНИЕ О ПРОГРАММНОЙ ОШИБКЕ,
5472     ;ЕСЛИ R0 ИЛИ R1 ОТЛИЧЕН ОТ 0
5473 167762   .BLKW 7
5474 000001   .END