From Felixl.com
; ******************************************************
; * *
; * ГРАФИКА ПОЛЬЗОВАТЕЛЯ, ПРИНТЕР, ПЕЧАТЬ ЭКРАНА *
; * *
; * Адреса 135436 - 157777 *
; * *
; ******************************************************
; ТОЧКА ВХОДА ПРИ ИСПОЛНЕНИИ ESC-ПОСЛЕДОВАТЕЛЬНОСТИ ESC %!0 (ВХОД В ГРАФИКУ)
135436$:MOV R5,-(SP)
MOV SP,R5
135442$:CALL 136274$
TST R0
BNE 135442$
JMP 136056$
; П/п установки начальных значений для п/п графического режима
135456$:MOV R5,-(SP)
MOV SP,R5
MOV 22664,R0
ASL R0
ASL R0
ADD #2500,R0
ADD #-4,R0
MOV R0,23432
MOV 23432,23434
MOV #1200,23412
CLR 23420
CLR 23422
MOV #1,R0
MOV 23420,R1
BIC #177770,R1
MOV R1,23440
ASH 23440,R0
MOV R0,23436
MOV 23432,R0
MOV 23422,R1
ASL R1
ASL R1
SUB R1,R0
MOV R0,23434
MOV @23434,R0
MOV 23420,R1
ASH #-3,R1
MOV R1,23426
ADD 23426,R0
MOV R0,23430
CLR 23442
CLR 23444
CLR 23446
CLR 23450
CLR 23452
CLR 23454
CLR 23456
CLR 23460
CLR 23462
JMP 136056$
; Точка входа при вызове п/п печати экрана
135704$:MOV R0,-(SP)
MOV R1,-(SP)
CALL 140326$
MOV (SP)+,R1
MOV (SP)+,R0
RETURN
; П/п вывода символа на принтер
135722$:MOV R5,-(SP)
MOV SP,R5
BIT #2,177101 ; Принтер в состоянии ON-LINE ?
BEQ 136000$ ; Нет
135736$:BIT #200,177101 ; Бит подтверждения сброшен ?
BNE 135736$ ; Нет
MOV 4(R5),177100 ; Послать код символа на линию данных
BIC #200,177102 ; Установить сигнал строба
135762$:BIT #200,177101 ; Получен сигнал подтверждения ?
BEQ 135762$ ; Нет
MOV #200,177102 ; Сбросить сигнал строба
136000$:JMP 136056$
; П/п инициализации параллельного порта
136004$:MOV R5,-(SP)
MOV SP,R5
MOV #174,177103
MOV #200,177102
JMP 136056$
136030$:MOV R5,R0
MOV SP,R5
MOV R4,-(SP)
MOV R3,-(SP)
MOV R2,-(SP)
CLR -(SP)
JMP @R0
136046$:MOV R5,R2
MOV -(R2),R4
MOV -(R2),R3
MOV -(R2),R2
136056$:MOV R5,SP
MOV (SP)+,R5
RETURN
; Блок описания Esc-последовательностей графического режима
136064$:.WORD 136414$,111,0,136502$ ; LI
136074$:.WORD 136622$,126,136602$,120 ; MV, MP
.WORD 136562$,115,136542$,114 ; MM, ML
.WORD 0,136642$
136120$:.WORD 137054$,125,136706$,122 ; RU,RR
.WORD 136700$,104,0,137064$ ; RD
136140$:.WORD 137122$,104,0,137164$ ; TD
136150$:.WORD 140140$,111,137722$,110 ; UI, UH
.WORD 137620$,107,137442$,106 ; UG, UF
.WORD 137432$,105,137424$,104 ; UE, UD
.WORD 137412$,103,137334$,102 ; UC, UB
.WORD 137222$,101,0,140174$ ; UA
136220$:.WORD 140232$,41,0,140302$ ; %!
136230$:.WORD 140202$,45,137172$,125 ; %*, U*
.WORD 137072$,124,136650$,122 ; T*, R*
.WORD 136512$,115,136364$,114 ; M*, L*
.WORD 0,140310$
136264$:.WORD 136334$,33,0,140316$ ; Esc
136274$:JSR R5,136030$
ADD #-6,SP
CALL 145564$
MOVB R0,-7(R5)
MOVB -7(R5),R0
BIC #177400,R0
MOV #136264$,R1
JMP 144650$
; П/п обработки символа Esc
136334$:CALL 145564$
MOVB R0,-7(R5)
MOVB -7(R5),R0
BIC #177400,R0
MOV #136230$,R1
JMP 144650$
; П/п обработки Esc L
136364$:CALL 145564$
MOVB R0,-7(R5)
MOVB -7(R5),R0
BIC #177400,R0
MOV #136064$,R1
JMP 144650$
; П/п обработки Esc LI
136414$:CALL 143756$
MOV 23424,23456
CALL 143756$
MOV 23424,23460
CALL 143756$
MOV 23424,23462
MOV 23462,@SP
MOV 23460,-(SP)
MOV 23456,-(SP)
CALL 117026$
CMP (SP)+,(SP)+
MOVB #1,R0
BR 136506$
136502$:MOVB #1,R0
136506$:JMP 136046$
; П/п обработки Esc M
136512$:CALL 145564$
MOVB R0,-7(R5)
MOVB -7(R5),R0
BIC #177400,R0
MOV #136074$,R1
JMP 144650$
; П/п обработки Esc ML
136542$:CALL 143756$
MOV 23424,23442
MOVB #1,R0
BR 136506$
; П/п обработки Esc MM
136562$:CALL 143756$
MOV 23424,23446
MOVB #1,R0
BR 136506$
; П/п обработки Esc MP
136602$:CALL 143756$
MOV 23424,23450
MOVB #1,R0
BR 136506$
; П/п обработки Esc MV
136622$:CALL 143756$
MOV 23424,23444
MOVB #1,R0
BR 136506$
136642$:MOVB #1,R0
BR 136506$
; П/п обработки Esc R
136650$:CALL 145564$
MOVB R0,-7(R5)
MOVB -7(R5),R0
BIC #177400,R0
MOV #136120$,R1
JMP 144650$
; П/п обработки Esc RD
136700$:MOVB #1,R0
BR 136506$
; П/п обработки Esc RR
136706$:CALL 144104$
CMP 23420,23412
BGE 136732$
CMP 23422,22664
BLT 136740$
136732$:MOVB #1,R0
BR 136506$
136740$:MOV 23420,-12(R5)
MOV 23422,-14(R5)
CALL 144104$
CMP 23420,23412
BGE 137000$
CMP 23422,22664
BLT 137006$
137000$:MOVB #1,R0
BR 136506$
137006$:CALL 143756$
MOV 23424,@SP
MOV 23422,-(SP)
MOV 23420,-(SP)
MOV -14(R5),-(SP)
MOV -12(R5),-(SP)
CALL 144666$
ADD #10,SP
MOVB #1,R0
BR 137060$
; П/п обработки Esc RU
137054$:MOVB #1,R0
137060$:JMP 136046$
137064$:MOVB #1,R0
BR 137060$
; П/п обработки Esc T
137072$:CALL 145564$
MOVB R0,-7(R5)
MOVB -7(R5),R0
BIC #177400,R0
MOV #136140$,R1
JMP 144650$
; П/п обработки Esc TD
137122$:CALL 143756$
MOV 23424,23452
CALL 143756$
MOV 23424,23454
MOV 23452,@SP
CALL 117004$
MOVB #1,R0
BR 137060$
137164$:MOVB #1,R0
BR 137060$
; П/п обработки Esc U
137172$:CALL 145564$
MOVB R0,-7(R5)
MOVB -7(R5),R0
BIC #177400,R0
MOV #136150$,R1
JMP 144650$
; П/п обработки Esc UA
137222$:MOV 23430,177010
TST 177024
BNE 137236$
137236$:BIT #4,23440
BEQ 137254$
MOV 177022,R0
BR 137260$
137254$:MOV 177020,R0
137260$:MOV R0,R1
CLR R0
MOV 23440,R4
BIC #177774,R4
ASL R4
ASL R4
NEG R4
ASHC R4,R0
MOV R1,@SP
BIC #177760,@SP
CALL 144304$
MOV #15,@SP
CALL 145612$
MOVB #1,R0
BR 137060$
; П/п обработки Esc UB
137334$:MOV 23414,23420
MOV 23416,23422
MOV 23422,23414
MOV 23420,23416
CALL 151714$
MOV 23420,23414
MOV 23422,23416
MOVB #1,R0
BR 137060$
; П/п обработки Esc UC
137412$:CALL 151650$
MOVB #1,R0
BR 137060$
; П/п обработки Esc UD
137424$:MOVB #1,R0
BR 137436$
; П/п обработки Esc UE
137432$:MOVB #1,R0
137436$:JMP 136046$
; П/п обработки Esc UF
137442$:CALL 144104$
CMP 23420,23412
BGE 137466$
CMP 23422,22664
BLT 137474$
137466$:MOVB #1,R0
BR 137436$
137474$:MOV #1,R0
MOV 23420,R1
BIC #177770,R1
MOV R1,23440
ASH 23440,R0
MOV R0,23436
MOV 23432,R0
MOV 23422,R1
ASL R1
ASL R1
SUB R1,R0
MOV R0,23434
MOV @23434,R0
MOV 23420,R1
ASH #-3,R1
MOV R1,23426
ADD 23426,R0
MOV R0,23430
MOV 23420,23414
MOV 23422,23416
MOVB #1,R0
BR 137436$
; П/п обработки Esc UG
137620$:CALL 144104$
CMP 23420,23412
BGE 137644$
CMP 23422,22664
BLT 137652$
137644$:MOVB #1,R0
BR 137436$
137652$:MOV 23442,177016
MOV 23430,177010
TST 177024
BNE 137674$
137674$:MOV 23430,177010
MOV 23436,177024
CALL 141330$
MOVB #1,R0
BR 137436$
; П/п обработки Esc UH
137722$:CALL 144104$
CMP 23420,23412
BGE 137746$
CMP 23422,22664
BLT 137754$
137746$:MOVB #1,R0
BR 140134$
137754$:MOV #1,R0
MOV 23420,R1
BIC #177770,R1
MOV R1,23440
ASH 23440,R0
MOV R0,23436
MOV 23432,R0
MOV 23422,R1
ASL R1
ASL R1
SUB R1,R0
MOV R0,23434
MOV @23434,R0
MOV 23420,R1
ASH #-3,R1
MOV R1,23426
ADD 23426,R0
MOV R0,23430
MOV 23420,23414
MOV 23422,23416
MOV 23442,177016
MOV 23430,177010
TST 177024
BNE 140114$
140114$:MOV 23430,177010
MOV 23436,177024
MOVB #1,R0
140134$:JMP 136046$
; П/п обработки Esc UI
140140$:MOV 23416,@SP
MOV 23414,-(SP)
CALL 144454$
TST (SP)+
MOV #15,@SP
CALL 145612$
MOVB #1,R0
BR 140134$
140174$:MOVB #1,R0
BR 140134$
; П/п обработки Esc %
140202$:CALL 145564$
MOVB R0,-7(R5)
MOVB -7(R5),R0
BIC #177400,R0
MOV #136220$,R1
JMP 144650$
; П/п обработки Esc %!
140232$:CALL 145564$
MOVB R0,-7(R5)
CMPB -7(R5),#'0
BEQ 140274$
MOVB -7(R5),R0
BIC #177400,R0
MOV R0,@SP
CALL 113574$
CLR R0
BR 140134$
140274$:MOVB #1,R0
BR 140134$
140302$:MOVB #1,R0
BR 140134$
140310$:MOVB #1,R0
BR 140134$
140316$:MOVB #1,R0
BR 140134$
140324$:BR 140134$
; П/п печати экрана
140326$:JSR R5,136030$
ADD #-22,SP
BIT #2,177101
BEQ 140602$
BIC #100,177700
MOV #15,@SP
CALL 135722$
MOV #12,@SP
CALL 135722$
CLR -10(R5)
140400$:CMP -10(R5),#79.
BGT 140552$
MOV #1,-20(R5)
140416$:CMP -20(R5),#2
BGT 140606$
MOV #33,@SP
CALL 135722$
MOV #52,@SP
CALL 135722$
MOV #1,@SP
CALL 135722$
MOV #30,@SP
CALL 135722$
MOV #3,@SP
CALL 135722$
CLR -12(R5)
140502$:CMP -12(R5),#263.
BGT 140622$
MOV 23432,R0
MOV -12(R5),R1
ASL R1
ASL R1
SUB R1,R0
MOV @R0,R0
ADD -10(R5),R0
MOV R0,177010
TST 177024
BEQ 141004$
BR 141004$
140552$:MOV #33,@SP
CALL 135722$
MOV #100,@SP
CALL 135722$
MOV #14,@SP
CALL 135722$
140602$:JMP 136046$
140606$:INC -10(R5)
BR 140400$
140614$:INC -20(R5)
BR 140416$
140622$:MOV #33,@SP
CALL 135722$
MOV #63,@SP
CALL 135722$
MOV -20(R5),R1
MUL #22.,R1
MOV R1,@SP
ADD #-21.,@SP
CALL 135722$
MOV #12,@SP
CALL 135722$
MOV #15,@SP
CALL 135722$
BIT #200,177700
BEQ 140614$
CMP 177702,#4
BNE 140614$
MOV #33,@SP
CALL 135722$
MOV #100,@SP
CALL 135722$
MOV #15,@SP
CALL 135722$
MOV #12,@SP
CALL 135722$
MTPS #340
BIS #100,177700
MTPS #0
BR 140602$
141004$:MOV 177020,-30(R5)
MOV #1,-14(R5)
141020$:CMP -14(R5),#8.
BGT 141246$
MOV -30(R5),R0
BIC #177760,R0
MOV R0,-16(R5)
MOV -22(R5),R0
ASL R0
MOV #153540,R1
MOV #1,R4
MOV -16(R5),R2
ASL R2
SUB R2,R4
SUB -20(R5),R4
ASH R4,R1
BIC #177776,R1
BIS R1,R0
MOV R0,-22(R5)
MOV -24(R5),R0
ASL R0
MOV #177624,R1
MOV #1,R4
MOV -16(R5),R2
ASL R2
SUB R2,R4
SUB -20(R5),R4
ASH R4,R1
BIC #177776,R1
BIS R1,R0
MOV R0,-24(R5)
MOV -26(R5),R0
ASL R0
MOV #172100,R1
MOV #1,R4
MOV -16(R5),R2
ASL R2
SUB R2,R4
SUB -20(R5),R4
ASH R4,R1
BIC #177776,R1
BIS R1,R0
MOV R0,-26(R5)
CMP -14(R5),#4
BNE 141306$
MOV 177022,-30(R5)
BR 141322$
141246$:MOV -22(R5),@SP
CALL 135722$
MOV -24(R5),@SP
CALL 135722$
MOV -26(R5),@SP
CALL 135722$
INC -12(R5)
JMP 140502$
141306$:MOV -30(R5),R0
ASH #-4,R0
MOV R0,-30(R5)
141322$:INC -14(R5)
BR 141020$
; П/п рисования линии
141330$:MOV R5,-(SP)
MOV SP,R5
ADD #-20,SP
MOV 23420,R0
SUB 23414,R0
MOV R0,-12(R5)
MOV 23422,R0
SUB 23416,R0
MOV R0,-14(R5)
TST -14(R5)
BNE 141404$
TST -12(R5)
BEQ 141560$
141404$:MOV 23420,23414
MOV 23422,23416
CLR -16(R5)
TST -14(R5)
BLT 141564$
TST -12(R5)
BLT 141712$
CMP -12(R5),-14(R5)
BGT 141454$
JMP 142106$
141454$:MOV -12(R5),-20(R5)
MOV -20(R5),-10(R5)
141470$:MOV -10(R5),R0
DEC -10(R5)
TST R0
BEQ 141560$
SUB -14(R5),-16(R5)
MOV 23436,R0
ASL R0
BIC #177400,R0
MOV R0,23436
BEQ 141536$
JMP 142260$
141536$:MOV #1,23436
INC 23430
INC 23426
JMP 142260$
141560$:JMP 136056$
141564$:TST -12(R5)
BLT 141576$
JMP 142722$
141576$:CMP -12(R5),-14(R5)
BLT 141612$
JMP 143136$
141612$:MOV -12(R5),R0
NEG R0
MOV R0,-20(R5)
MOV -20(R5),-10(R5)
141632$:MOV -10(R5),R0
DEC -10(R5)
TST R0
BEQ 141560$
ADD -14(R5),-16(R5)
CLC
ROR 23436
BEQ 141670$
JMP 143310$
141670$:MOV #200,23436
DEC 23430
DEC 23426
JMP 143310$
141712$:MOV -12(R5),R0
NEG R0
CMP R0,-14(R5)
BLT 141732$
141726$:JMP 142442$
141732$:MOV -14(R5),-20(R5)
MOV -20(R5),-10(R5)
141746$:MOV -10(R5),R0
DEC -10(R5)
TST R0
BEQ 141560$
ADD -12(R5),-16(R5)
SUB #4,23434
MOV @23434,R0
ADD 23426,R0
MOV R0,23430
TST -16(R5)
BGE 142030$
MOV -16(R5),R0
NEG R0
BR 142034$
142030$:MOV -16(R5),R0
142034$:ASL R0
CMP R0,-20(R5)
BGE 142050$
JMP 142540$
142050$:CLC
ROR 23436
BEQ 142064$
JMP 142556$
142064$:MOV #200,23436
DEC 23430
DEC 23426
JMP 142556$
142106$:MOV -14(R5),-20(R5)
MOV -20(R5),-10(R5)
142122$:MOV -10(R5),R0
DEC -10(R5)
TST R0
BEQ 141560$
ADD -12(R5),-16(R5)
SUB #4,23434
MOV @23434,R0
ADD 23426,R0
MOV R0,23430
TST -16(R5)
BGE 142204$
MOV -16(R5),R0
NEG R0
BR 142210$
142204$:MOV -16(R5),R0
142210$:ASL R0
CMP R0,-20(R5)
BLT 142376$
MOV 23436,R0
ASL R0
BIC #177400,R0
MOV R0,23436
BNE 142414$
MOV #1,23436
INC 23430
INC 23426
BR 142414$
142260$:TST -16(R5)
BGE 142276$
MOV -16(R5),R0
NEG R0
BR 142302$
142276$:MOV -16(R5),R0
142302$:ASL R0
CMP R0,-20(R5)
BLT 142342$
SUB #4,23434
MOV @23434,R0
ADD 23426,R0
MOV R0,23430
ADD -12(R5),-16(R5)
142342$:MOV 23430,177010
TST 177024
BNE 142356$
142356$:MOV 23430,177010
MOV 23436,177024
JMP 141470$
142376$:MOV 23430,177010
TST 177024
BEQ 142424$
BR 142424$
142414$:SUB -14(R5),-16(R5)
BR 142376$
142424$:MOV 23430,177010
MOV 23436,177024
BR 142122$
142442$:MOV -12(R5),R0
NEG R0
MOV R0,-20(R5)
MOV -20(R5),-10(R5)
142462$:MOV -10(R5),R0
DEC -10(R5)
TST R0
BNE 142502$
JMP 141560$
142502$:ADD -14(R5),-16(R5)
CLC
ROR 23436
BNE 142606$
MOV #200,23436
DEC 23430
DEC 23426
BR 142606$
142540$:MOV 23430,177010
TST 177024
BEQ 142566$
BR 142566$
142556$:ADD -14(R5),-16(R5)
BR 142540$
142566$:MOV 23430,177010
MOV 23436,177024
JMP 141746$
142606$:TST -16(R5)
BGE 142624$
MOV -16(R5),R0
NEG R0
BR 142630$
142624$:MOV -16(R5),R0
142630$:ASL R0
CMP R0,-20(R5)
BLT 142670$
SUB #4,23434
MOV @23434,R0
ADD 23426,R0
MOV R0,23430
ADD -12(R5),-16(R5)
142670$:MOV 23430,177010
TST 177024
BNE 142704$
142704$:MOV 23430,177010
MOV 23436,177024
BR 142462$
142722$:MOV -14(R5),R0
NEG R0
CMP -12(R5),R0
BLE 142742$
JMP 143472$
142742$:MOV -14(R5),R0
NEG R0
MOV R0,-20(R5)
MOV -20(R5),-10(R5)
142762$:MOV -10(R5),R0
DEC -10(R5)
TST R0
BNE 143002$
JMP 141560$
143002$:SUB -12(R5),-16(R5)
ADD #4,23434
MOV @23434,R0
ADD 23426,R0
MOV R0,23430
TST -16(R5)
BGE 143050$
MOV -16(R5),R0
NEG R0
BR 143054$
143050$:MOV -16(R5),R0
143054$:ASL R0
CMP R0,-20(R5)
BGE 143070$
JMP 143574$
143070$:MOV 23436,R0
ASL R0
BIC #177400,R0
MOV R0,23436
BEQ 143114$
JMP 143612$
143114$:MOV #1,23436
INC 23430
INC 23426
JMP 143612$
143136$:MOV -14(R5),R0
NEG R0
MOV R0,-20(R5)
MOV -20(R5),-10(R5)
143156$:MOV -10(R5),R0
DEC -10(R5)
TST R0
BNE 143176$
JMP 141560$
143176$:SUB -12(R5),-16(R5)
ADD #4,23434
MOV @23434,R0
ADD 23426,R0
MOV R0,23430
TST -16(R5)
BGE 143244$
MOV -16(R5),R0
NEG R0
BR 143250$
143244$:MOV -16(R5),R0
143250$:ASL R0
CMP R0,-20(R5)
BLT 143426$
CLC
ROR 23436
BNE 143444$
MOV #200,23436
DEC 23430
DEC 23426
BR 143444$
143310$:TST -16(R5)
BGE 143326$
MOV -16(R5),R0
NEG R0
BR 143332$
143326$:MOV -16(R5),R0
143332$:ASL R0
CMP R0,-20(R5)
BLT 143372$
ADD #4,23434
MOV @23434,R0
ADD 23426,R0
MOV R0,23430
SUB -12(R5),-16(R5)
143372$:MOV 23430,177010
TST 177024
BNE 143406$
143406$:MOV 23430,177010
MOV 23436,177024
JMP 141632$
143426$:MOV 23430,177010
TST 177024
BEQ 143454$
BR 143454$
143444$:ADD -14(R5),-16(R5)
BR 143426$
143454$:MOV 23430,177010
MOV 23436,177024
BR 143156$
143472$:MOV -12(R5),-20(R5)
MOV -20(R5),-10(R5)
143506$:MOV -10(R5),R0
DEC -10(R5)
TST R0
BNE 143526$
JMP 141560$
143526$:SUB -14(R5),-16(R5)
MOV 23436,R0
ASL R0
BIC #177400,R0
MOV R0,23436
BNE 143642$
MOV #1,23436
INC 23430
INC 23426
BR 143642$
143574$:MOV 23430,177010
TST 177024
BEQ 143622$
BR 143622$
143612$:SUB -14(R5),-16(R5)
BR 143574$
143622$:MOV 23430,177010
MOV 23436,177024
JMP 142762$
143642$:TST -16(R5)
BGE 143660$
MOV -16(R5),R0
NEG R0
BR 143664$
143660$:MOV -16(R5),R0
143664$:ASL R0
CMP R0,-20(R5)
BLT 143724$
ADD #4,23434
MOV @23434,R0
ADD 23426,R0
MOV R0,23430
SUB -12(R5),-16(R5)
143724$:MOV 23430,177010
TST 177024
BNE 143740$
143740$:MOV 23430,177010
MOV 23436,177024
BR 143506$
; П/п приема трех символов и перевода их в целое число
143756$:MOV R5,-(SP)
MOV SP,R5
ADD #-10,SP
CALL 145564$
ASH #6,R0
MOV R0,23424
CALL 145564$
BIC #177700,R0
BIS 23424,R0
ASH #4,R0
MOV R0,23424
CALL 145564$
MOV R0,-10(R5)
MOV -10(R5),R0
BIC #177760,R0
BIS 23424,R0
MOV R0,23424
BIT #20,-10(R5)
BNE 144100$
MOV 23424,R0
NEG R0
MOV R0,23424
144100$:JMP 136056$
; П/п приема пяти символов и перевода их в два целых числа
144104$:MOV R5,-(SP)
MOV SP,R5
ADD #-10,SP
CALL 145564$
BIC #177740,R0
ASH #5,R0
MOV R0,23422
CALL 145564$
MOV R0,-10(R5)
CALL 145564$
BIC #177740,R0
BIS 23422,R0
ASL R0
ASL R0
MOV R0,23422
CALL 145564$
BIC #177740,R0
ASH #5,R0
MOV R0,23420
CALL 145564$
BIC #177740,R0
BIS 23420,R0
ASL R0
ASL R0
MOV R0,23420
MOV -10(R5),R0
ASR R0
ASR R0
BIC #177774,R0
BIS 23422,R0
MOV R0,23422
MOV -10(R5),R0
BIC #177774,R0
BIS 23420,R0
MOV R0,23420
JMP 136056$
; П/п преобразования целого числа в три символа и их вывод
144304$:MOV R5,-(SP)
MOV SP,R5
ADD #-12,SP
TST 4(R5)
BGE 144342$
MOV 4(R5),R0
NEG R0
MOV R0,4(R5)
CLR -10(R5)
BR 144350$
144342$:MOV #20,-10(R5)
144350$:MOV 4(R5),R0
ASH #-12,R0
MOV R0,@SP
BIC #177700,@SP
BIS #100,@SP
CALL 145612$
MOV 4(R5),R0
ASH #-4,R0
MOV R0,@SP
BIC #177700,@SP
BIS #100,@SP
CALL 145612$
MOV 4(R5),@SP
BIC #177760,@SP
BIS -10(R5),@SP
BIS #40,@SP
CALL 145612$
JMP 136056$
; П/п преобразования двух целых чисел в пять символов и их вывод
144454$:MOV R5,-(SP)
MOV SP,R5
TST -(SP)
MOV 6(R5),R0
ASH #-7,R0
MOV R0,@SP
BIC #177740,@SP
BIS #40,@SP
CALL 145612$
MOV 4(R5),@SP
BIC #177774,@SP
MOV 6(R5),R0
BIC #177774,R0
ASL R0
ASL R0
BIS R0,@SP
BIS #140,@SP
CALL 145612$
MOV 6(R5),@SP
ASR @SP
ASR @SP
BIC #177740,@SP
BIS #140,@SP
CALL 145612$
MOV 4(R5),R0
ASH #-7,R0
MOV R0,@SP
BIC #177740,@SP
BIS #40,@SP
CALL 145612$
MOV 4(R5),@SP
ASR @SP
ASR @SP
BIC #177740,@SP
BIS #100,@SP
CALL 145612$
JMP 136056$
144650$:TST (R1)+
BEQ 144664$
CMP R0,(R1)+
BNE 144650$
JMP @-4(R1)
144664$:JMP @(R1)+
; П/п закраски прямоугольной области
144666$:MOV R5,-(SP)
MOV SP,R5
ADD #-22,SP
MOV #1,R0
MOV 10(R5),R1
BIC #177770,R1
MOV R1,23440
ASH 23440,R0
MOV R0,23436
MOV 23432,R0
MOV 12(R5),R1
ASL R1
ASL R1
SUB R1,R0
MOV R0,23434
MOV @23434,R0
MOV 10(R5),R1
ASH #-3,R1
MOV R1,23426
ADD 23426,R0
MOV R0,23430
MOV 23426,-14(R5)
MOV 23434,-22(R5)
MOV #100000,R0
MOV 23440,R1
ADD #-16,R1
ASH R1,R0
COM R0
MOV R0,-12(R5)
MOV #1,R0
MOV 4(R5),R1
BIC #177770,R1
MOV R1,23440
ASH 23440,R0
MOV R0,23436
MOV 23432,R0
MOV 6(R5),R1
ASL R1
ASL R1
SUB R1,R0
MOV R0,23434
MOV @23434,R0
MOV 4(R5),R1
ASH #-3,R1
MOV R1,23426
ADD 23426,R0
MOV R0,23430
MOV #100000,R0
MOV 23440,R1
ADD #-17,R1
ASH R1,R0
MOV R0,-10(R5)
MOV -14(R5),R0
SUB 23426,R0
MOV R0,-20(R5)
MOV 23430,R0
ADD -20(R5),R0
MOV R0,-16(R5)
TST -20(R5)
BNE 145234$
MOV -12(R5),R0
COM R0
BIC R0,-10(R5)
145234$:MOV 14(R5),177016
145242$:CMP 23434,-22(R5)
BLO 145270$
MOV 23430,177010
TST 177024
BEQ 145376$
BR 145376$
145270$:MOV #1,R0
MOV 23414,R1
BIC #177770,R1
MOV R1,23440
ASH 23440,R0
MOV R0,23436
MOV 23432,R0
MOV 23416,R1
ASL R1
ASL R1
SUB R1,R0
MOV R0,23434
MOV @23434,R0
MOV 23414,R1
ASH #-3,R1
MOV R1,23426
ADD 23426,R0
MOV R0,23430
JMP 136056$
145376$:MOV 23430,177010
MOV -10(R5),177024
TST -20(R5)
BEQ 145452$
145420$:INC 23430
CMP 23430,-16(R5)
BHIS 145512$
MOV 23430,177010
TST 177024
BEQ 145530$
BR 145530$
145452$:SUB #4,23434
MOV @23434,R0
ADD 23426,R0
MOV R0,23430
MOV 23430,R0
ADD -20(R5),R0
MOV R0,-16(R5)
BR 145242$
145512$:MOV 23430,177010
TST 177024
BEQ 145546$
BR 145546$
145530$:MOV 23430,177010
MOV #377,177024
BR 145420$
145546$:MOV 23430,177010
MOV -12(R5),177024
BR 145452$
; П/п приема символа
145564$:MOV R5,-(SP)
MOV R4,-(SP)
MOV R3,-(SP)
MOV R2,-(SP)
CALL 110762$
MOV (SP)+,R2
MOV (SP)+,R3
MOV (SP)+,R4
MOV (SP)+,R5
RETURN
; П/п вывода символа
145612$:MOV 2(SP),R0
CALL 104160$
RETURN
; Все остальные п/п относятся к обработке последовательностей Esc UB и Esc UC
145624$:MOV SP,23602
CALL 152144$
BHIS 145642$
JMP 145716$
145642$:CALL 151000$
BLO 145732$
145650$:MOV #23540,R1
CMP 2(R1),#23546
BEQ 145732$
CALL 145734$
BLO 145676$
CALL 146010$
145676$:MOV #23546,R1
CALL 145762$
BLO 145650$
CALL 146104$
BR 145650$
145716$:MOV 23602,SP
MOV #1,R0
BR 145732$
CLR R0
145732$:RETURN
145734$:MOV 2(R1),R1
TST @R1
BEQ 145756$
MOV 6(R1),23564
BEQ 145734$
BR 145760$
145756$:SEC
145760$:RETURN
145762$:MOV 4(R1),R1
TST @R1
BEQ 146004$
MOV 10(R1),23564
BEQ 145762$
BR 146006$
146004$:SEC
146006$:RETURN
146010$:MOV 0(R1),23560
MOV #1,23572
MOV 23474,23574
INC 23574
MOV #0,23576
MOV #2,23600
MOV #-2,23606
MOV #2,23610
MOV R1,23554
ADD #2,R1
CALL 146200$
RETURN
146104$:MOV 0(R1),23560
MOV #-1,23572
MOV #0,23574
MOV 23474,23576
INC 23576
MOV #-2,23600
MOV #-4,23606
MOV #4,23610
MOV R1,23554
ADD #4,R1
CALL 146200$
RETURN
146200$:MOV 23564,R2
MOV 23566,R3
MOV 23502,R5
146214$:MOV (R2)+,(R3)+
SOB R5,146214$
MOV 20(R1),23616
MOV 10(R1),23620
MOV 14(R1),23562
MOV 23570,R0
MOV 23502,R5
146252$:CLR (R0)+
SOB R5,146252$
MOV 10(R1),R5
MOV 20(R1),R0
SUB R0,R5
ASR R5
INC R5
MOV 23570,R2
ADD R0,R2
ADD 23562,R0
MOV R2,-(SP)
MOV R0,-(SP)
146312$:CALL 147760$
BIS R4,(R2)+
ADD #2,R0
SOB R5,146312$
MOV 10(R1),R5
ADD 23564,R5
MOV @R5,R5
CALL 150136$
BIT #100000,R5
BEQ 146412$
MOV 23476,R5
SUB 10(R1),R5
ASR R5
DEC R5
BEQ 146412$
146370$:CALL 147760$
BIS R4,(R2)+
CMP #-1,R4
BNE 146412$
ADD #2,R0
SOB R5,146370$
146412$:MOV (SP)+,R0
MOV (SP)+,R2
MOV @R2,R4
MOV 20(R1),R5
ADD 23564,R5
MOV @R5,R5
CALL 150136$
BIT #1,R5
BEQ 146476$
MOV 20(R1),R5
BEQ 146476$
ASR R5
146454$:SUB #2,R0
CALL 147760$
BIS R4,-(R2)
CMP #-1,R4
BNE 146476$
SOB R5,146454$
146476$:MOV #23604,R5
CALL 150246$
MOV 23604,R0
MOV 23570,R3
MOV 20(R1),R2
ADD R2,R0
ADD R2,R3
ADD 23564,R2
MOV 10(R1),R5
SUB 20(R1),R5
ASR R5
INC R5
MOV R5,-(SP)
BR 146556$
146552$:BIS #1,@R2
146556$:MOV R5,-(SP)
MOV (R2)+,R5
MOV (R3)+,R4
CALL 150136$
BIS R5,(R0)+
MOV (SP)+,R5
BIT #100000,R4
BNE 146606$
SOB R5,146556$
BR 146674$
146606$:SOB R5,146552$
MOV R0,-(SP)
MOV R2,-(SP)
MOV R3,-(SP)
MOV 23476,R5
SUB 10(R1),R5
ASR R5
DEC R5
BEQ 146666$
146634$:MOV R5,-(SP)
BIS #1,@R2
MOV (R2)+,R5
MOV (R3)+,R4
CALL 150136$
BIS R5,(R0)+
MOV (SP)+,R5
BIT #100000,R4
BEQ 146666$
SOB R5,146634$
146666$:MOV (SP)+,R3
MOV (SP)+,R2
MOV (SP)+,R0
146674$:MOV (SP)+,R5
BR 146706$
146700$:BIS #100000,-2(R2)
146706$:MOV R5,-(SP)
MOV -(R2),R5
MOV -(R3),R4
CALL 150136$
BIS R5,-(R0)
MOV (SP)+,R5
BIT #1,R4
BNE 146736$
SOB R5,146706$
BR 147002$
146736$:SOB R5,146700$
TST 20(R1)
BEQ 147002$
MOV @R0,R4
146750$:BIT #1,R4
BEQ 147002$
BIS #100000,-(R2)
MOV @R2,R5
MOV -(R3),R4
CALL 150136$
BIS R5,-(R0)
CMP R0,23604
BHI 146750$
147002$:MOV 23604,R0
MOV 23570,R3
MOV 23502,R5
147016$:MOV (R0)+,(R3)+
SOB R5,147016$
MOV 23604,R5
CALL 150470$
BHIS 147050$
MOV 23536,@R5
MOV R5,23536
JMP 147644$
147050$:CALL 150716$
MOV 23560,R3
ADD 23572,R3
CMP R3,23574
BEQ 147426$
CALL 147732$
CALL 150576$
MOV R4,23556
ADD 23610,R4
MOV 23636,14(R4)
ADD 23630,14(R4)
MOV 4(R4),R3
BNE 147160$
MOV 23604,4(R4)
MOV 23612,20(R4)
MOV 23614,10(R4)
BR 147240$
147160$:MOV 23502,R5
MOV 23604,R0
147170$:BIS (R0)+,(R3)+
SOB R5,147170$
CMP 23612,20(R4)
BGE 147212$
MOV 23612,20(R4)
147212$:CMP 23614,10(R4)
BLE 147230$
MOV 23614,10(R4)
147230$:MOV 23604,R5
CALL 150300$
147240$:MOV R4,-(SP)
MOV R1,-(SP)
MOV 23612,-(SP)
MOV 23614,-(SP)
MOV R4,R1
ADD 23600,R1
MOV 4(R1),R2
BEQ 147412$
MOV 4(R4),R3
MOV 23502,R5
MOV R2,-(SP)
MOV R3,-(SP)
147304$:MOV @R2,R0
BIC @R3,(R2)+
BIC R0,(R3)+
SOB R5,147304$
MOV (SP)+,R3
MOV (SP)+,R2
MOV 23556,23640
MOV R2,R5
CALL 150470$
BCC 147344$
CALL 150332$
BR 147360$
147344$:MOV 23612,20(R1)
MOV 23614,10(R1)
147360$:MOV R3,R5
CALL 150470$
BCC 147376$
CALL 150332$
BR 147412$
147376$:MOV 23612,20(R4)
MOV 23614,10(R4)
147412$:MOV (SP)+,23614
MOV (SP)+,23612
MOV (SP)+,R1
MOV (SP)+,R4
147426$:SUB 23572,23560
CMP 23560,23576
BEQ 147644$
MOV 23566,R0
MOV 23570,R3
MOV 23502,R5
147460$:BIC (R0)+,(R3)+
SOB R5,147460$
MOV 23570,R5
CALL 150470$
BCS 147644$
MOV 23560,R3
CALL 147732$
CALL 150576$
ADD 23610,R4
ADD 23600,R4
MOV 23636,14(R4)
MOV 4(R4),R3
BNE 147554$
MOV R4,R5
ADD #4,R5
CALL 150246$
MOV 4(R4),R3
147554$:MOV 23614,R5
SUB 23612,R5
ASR R5
INC R5
MOV 23570,R2
ADD 23612,R2
ADD 23612,R3
147604$:BIS (R2)+,(R3)+
SOB R5,147604$
CMP 23612,20(R4)
BGE 147626$
MOV 23612,20(R4)
147626$:CMP 23614,10(R4)
BLE 147644$
MOV 23614,10(R4)
147644$:MOV R1,R5
MOV 23554,23640
CALL 150332$
RETURN
147662$:MOV (SP)+,23642
MOV R1,-(SP)
MOV R2,-(SP)
MOV R3,-(SP)
MOV R4,-(SP)
MOV R5,-(SP)
MOV 23642,-(SP)
RETURN
147706$:MOV (SP)+,23642
MOV (SP)+,R5
MOV (SP)+,R4
MOV (SP)+,R3
MOV (SP)+,R2
MOV (SP)+,R1
MOV 23642,-(SP)
RETURN
147732$:MOV R3,-(SP)
DEC R3
NEG R3
ASL R3
ASL R3
ADD 23504,R3
MOV @R3,23636
MOV (SP)+,R3
RETURN
147760$:MOV R3,-(SP)
MOV R5,-(SP)
CLR R4
DEC R4
MOV R0,177010
MOVB 177012,R5
MOV 23464,R3
XOR R3,R5
BICB R5,R4
MOVB 177014,R5
MOV 23466,R3
XOR R3,R5
BICB R5,R4
MOVB 177015,R5
MOV 23470,R3
XOR R3,R5
BICB R5,R4
INC R0
SWAB R4
MOV R0,177010
MOVB 177012,R5
MOV 23464,R3
XOR R3,R5
BICB R5,R4
MOVB 177014,R5
MOV 23466,R3
XOR R3,R5
BICB R5,R4
MOVB 177015,R5
MOV 23470,R3
XOR R3,R5
BICB R5,R4
SWAB R4
TST 23634
BNE 150126$
COM R4
150126$:DEC R0
MOV (SP)+,R5
MOV (SP)+,R3
RETURN
150136$:TST R5
BEQ 150234$
COM R4
BEQ 150240$
BIC R4,R5
BEQ 150234$
MOV R0,-(SP)
MOV R1,-(SP)
MOV R4,-(SP)
COM R4
CLR R0
150164$:MOV R4,R1
DEC R1
XOR R4,R1
BIS R1,R4
MOV R4,R1
INC R1
XOR R4,R1
BLT 150210$
CLC
ROR R1
150210$:BIC R0,R1
BIS R1,R0
BIT R1,R5
BEQ 150222$
BIS R1,R5
150222$:BIC R0,R4
BNE 150164$
BIC (SP)+,R5
MOV (SP)+,R1
MOV (SP)+,R0
150234$:MOV R5,R4
RETURN
150240$:COM R4
MOV R4,R5
RETURN
150246$:MOV 23536,@R5
BNE 150260$
JMP 145716$
150260$:MOV @23536,23536
MOV R5,-(SP)
MOV @R5,R5
CLR @R5
MOV (SP)+,R5
RETURN
150300$:MOV R3,-(SP)
MOV 23476,R3
ADD R3,R5
ASR R3
150312$:CLR -(R5)
SOB R3,150312$
MOV 23536,@R5
MOV R5,23536
MOV (SP)+,R3
RETURN
150332$:MOV R5,-(SP)
MOV 4(R5),R4
BEQ 150372$
MOV R5,-(SP)
MOV R4,R5
CALL 150300$
MOV (SP)+,R5
CLR 4(R5)
MOV #10000,20(R5)
CLR 10(R5)
150372$:MOV 23640,R5
TST 6(R5)
BNE 150464$
TST 10(R5)
BNE 150464$
MOV R2,-(SP)
MOV R3,-(SP)
MOV 2(R5),R2
MOV 4(R5),R3
MOV R3,4(R2)
MOV R2,2(R3)
CLR 2(R5)
CLR 4(R5)
MOV (SP)+,R3
MOV (SP)+,R2
MOV 23506,0(R5)
MOV R5,23506
150464$:MOV (SP)+,R5
RETURN
150470$:MOV R5,-(SP)
MOV R2,-(SP)
MOV R3,-(SP)
MOV R5,R2
MOV 23502,R3
150504$:TST (R2)+
BNE 150524$
SOB R3,150504$
MOV (SP)+,R3
MOV (SP)+,R2
MOV (SP)+,R5
SEC
RETURN
150524$:SUB #2,R2
MOV R2,23612
MOV 23476,R3
ADD R3,R5
ASR R3
150544$:TST -(R5)
BNE 150552$
SOB R3,150544$
150552$:MOV R5,23614
MOV (SP)+,R3
MOV (SP)+,R2
MOV (SP)+,R5
SUB R5,23612
SUB R5,23614
RETURN
150576$:MOV R2,-(SP)
MOV R3,-(SP)
MOV R5,-(SP)
MOV #23540,R4
150610$:MOV 2(R4),R5
TST @R5
BEQ 150634$
CMP 0(R5),R3
BGT 150634$
BEQ 150704$
MOV R5,R4
BR 150610$
150634$:MOV 23506,R2
BNE 150646$
JMP 145716$
150646$:MOV @R2,23506
MOV R3,0(R2)
MOV 2(R4),2(R2)
MOV R2,2(R4)
MOV 4(R5),4(R2)
MOV R2,4(R5)
MOV R2,R5
150704$:MOV R5,R4
MOV (SP)+,R5
MOV (SP)+,R3
MOV (SP)+,R2
RETURN
150716$:MOV R2,-(SP)
MOV R3,-(SP)
MOV R5,-(SP)
MOV 23612,R2
MOV 23614,R5
SUB R2,R5
ADD #2,R5
MOV R2,R3
ADD 23604,R3
ADD 14(R1),R2
150754$:MOV R2,177010
MOVB (R3)+,177024
INC R2
SOB R5,150754$
MOV (SP)+,R5
MOV (SP)+,R3
MOV (SP)+,R2
RETURN
151000$:MOV 23652,R3
CALL 150576$
MOV R4,23624
MOV #23604,R5
CALL 150246$
MOV 23604,6(R4)
MOV R3,0(R4)
MOV R3,23626
MOV 23654,R0
DEC R0
MOV R0,R1
MOV #3,R3
151056$:CLC
ROR R1
SOB R3,151056$
BIC #1,R1
MOV R1,22(R4)
MOV R1,12(R4)
ADD R1,23604
MOV 0(R4),R3
CALL 147732$
MOV 23636,16(R4)
MOV 23636,23562
MOV #1,R2
BIC #177760,R0
BEQ 151150$
151142$:CLC
ROL R2
SOB R0,151142$
151150$:MOV R2,@23604
MOV R2,23622
CALL 151166$
RETURN
151166$:MOV SP,23656
MOV 23624,R1
MOV 22(R1),R0
MOV R0,23616
MOV R0,23620
MOV 6(R1),R2
ADD R0,R2
ADD 23562,R0
MOV R0,-(SP)
MOV R2,-(SP)
MOV R3,-(SP)
CALL 147760$
TST R4
BNE 151246$
JMP 151640$
151246$:MOV 23622,R5
CALL 150136$
TST R4
BNE 151266$
JMP 151640$
151266$:MOV R4,(R2)+
ADD #2,R0
BIT #100000,R4
BEQ 151374$
MOV 23476,R5
SUB 23616,R5
ASR R5
DEC R5
BEQ 151374$
151320$:CALL 147760$
CMP R4,#-1
BNE 151352$
MOV R4,(R2)+
ADD #2,R0
ADD #2,23620
SOB R5,151320$
BR 151374$
151352$:MOV #1,R5
CALL 150136$
MOV R4,(R2)+
BEQ 151374$
ADD #2,23620
151374$:MOV (SP)+,R3
MOV (SP)+,R2
MOV (SP)+,R0
BIT #1,@R2
BEQ 151474$
MOV 23616,R5
ASR R5
BEQ 151474$
151420$:SUB #2,R0
CALL 147760$
CMP R4,#-1
BNE 151452$
MOV R4,-(R2)
151440$:SUB #2,23616
SOB R5,151420$
BR 151474$
151452$:MOV #100000,R5
CALL 150136$
MOV R4,-(R2)
BEQ 151474$
SUB #2,23616
151474$:MOV 23616,22(R1)
MOV 23620,12(R1)
MOV 0(R1),R3
DEC R3
BLE 151634$
CALL 147732$
CALL 150576$
MOV R3,0(R4)
MOV #23564,R5
CALL 150246$
MOV 12(R1),R5
SUB 22(R1),R5
ASR R5
INC R5
MOV 6(R1),R2
MOV 23564,R3
ADD 22(R1),R2
ADD 22(R1),R3
151600$:MOV (R2)+,(R3)+
SOB R5,151600$
MOV 22(R1),24(R4)
MOV 12(R1),14(R4)
MOV 23564,10(R4)
MOV 23636,20(R4)
151634$:CLC
BR 151646$
151640$:MOV 23656,SP
SEC
151646$:RETURN
151650$:CALL 147662$
CALL 151756$
MOV #-1,23634
CALL 145624$
MOV 23646,R1
MOV 23644,R0
CALL 176300$
CALL 147706$
RETURN
151714$:CALL 147662$
CALL 151756$
CLR 23634
CALL 145624$
MOV 23646,R1
MOV 23644,R0
CALL 176300$
CALL 147706$
RETURN
151756$:MOV 23414,23652
INC 23652
MOV 23416,23654
INC 23654
MOV 23442,R1
CLR 23464
ROR R1
SBC 23464
CLR 23466
ROR R1
SBC 23466
CLR 23470
ROR R1
SBC 23470
MOV 23450,R1
NEG R1
MOVB R1,177016
MOV 23432,23504
MOV 22664,23474
MOV 23412,23500
BIC #17,23500
MOV 23500,23476
ASR 23476
ASR 23476
ASR 23476
MOV 23476,23502
ASR 23502
RETURN
152144$:MOV #5322,R0
CALL 176132$
MOV R0,23644
MOV R1,23646
MOV 23644,R1
ASR R1
SUB 23476,R1
BLE 152456$
MOV 23502,R2
ADD #13,R2
CLR R3
BR 152216$
152214$:INC R3
152216$:SUB R2,R1
BGT 152214$
TST R3
BEQ 152456$
CMP R3,#31
BLE 152240$
MOV #27,R3
152240$:MOV R3,23650
MOV 23646,R1
INC R1
BIC #1,R1
MOV 23502,R2
MOV R1,23566
152266$:CLR (R1)+
SOB R2,152266$
MOV R1,23570
MOV 23502,R2
152302$:CLR (R1)+
SOB R2,152302$
MOV R1,-(SP)
MOV #23510,R2
MOV R2,R1
MOV R2,23506
MOV #11,R3
152326$:CLR (R1)+
SOB R3,152326$
MOV #10000,(R1)+
MOV #10000,(R1)+
MOV (SP)+,R1
MOV 23650,R5
DEC R5
BEQ 152402$
152354$:MOV R1,@R2
MOV R1,R2
MOV #11,R3
152364$:CLR (R1)+
SOB R3,152364$
MOV #10000,(R1)+
MOV #10000,(R1)+
SOB R5,152354$
152402$:MOV #23536,R2
MOV 23650,R5
152412$:MOV R1,@R2
MOV R1,R2
MOV 23502,R3
152422$:CLR (R1)+
SOB R3,152422$
SOB R5,152412$
MOV #23540,R1
CLR (R1)+
MOV #23546,(R1)+
CLR (R1)+
CLR (R1)+
CLR (R1)+
MOV #23540,@R1
BR 152460$
152456$:SEC
152460$:RETURN