УКНЦ ROM disasm 5: различия между версиями

Материал из Emuverse
(Новая страница: «{{ДИ}} <pre> ; ****************************************************** ; * * ; * ГРАФИКА ПОЛЬ…»)
 
м (категория)
 
Строка 1958: Строка 1958:
</pre>
</pre>


[[Категория:УКНЦ]]
[[Категория:УКНЦ|R]]

Текущая версия от 17:20, 29 марта 2020

Данный материал защищён авторскими правами!

Использование материала заявлено как добросовестное, исключительно для образовательных некоммерческих целей.


; ******************************************************
; *                                                    *
; *    ГРАФИКА ПОЛЬЗОВАТЕЛЯ, ПРИНТЕР, ПЕЧАТЬ ЭКРАНА    *
; *                                                    *
; *               Адреса 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