
LOADAD = 1000

                mov     #77000, r2
                jsr     r1, mover
                .addr   r1,iblk
                emt     36
                tstb    1(r1)
                beq     1$
                halt
1$:             ;патчим
                mov     #LOADAD, r1
                .addr   r4, PATCH   ;начало хвоста
                mov     r1, r3
                add     @#266, r3   ;конечный адрес
                inc     r3
                bic     #1, r3
                mov     (r1), -(r4)
                mov     #4537, (r1)+
                mov     (r1), -(r4)
                mov     r3, (r1)
                add     #4, (r1)
                ;цепляем хвост
                mov     #PATCHE-DATAP, r0
                asr     r0
2$:             mov     (r4)+, (r3)+
                sob     r0, 2$
                sub     #LOADAD, r3 ;новая длина
                mov     r3, oblk+4
                mov     iblk+26, @#120152
                .addr   r1, oblk
                emt     36
                halt

iblk:           .word   3
                .word   LOADAD
                .word   0
                .ascii  "rm3.bkp             "
                .blkb   30

oblk:           .word   202
                .word   LOADAD
                .word   0
                .ascii  "rm3.tst             "
                .blkb   30

;вход сюда делается по jsr r5,@#PATCH
DATAP:          .word   0,0 ;второе слово, первое слово
PATCH:          .addr   R4, DATAP
                mov     (R4)+, -(R5)    ;восстановим данные под jsr r5,@#PATCH
                mov     (R4)+, -(R5)
                mtps    #340
                mov     #177777, @#177660   ; Запретим прерывания от клавиатуры
                mov     #42000, @#177662    ; Выкл таймер, экран 0, палитра 10
                ;опознаём ксидос, как умеем.
                ;а мы никак не умеем, т.к. в документации этого не сказано
                cmp     @#114,#54400
                bne     4$
                cmp     @#112,@#114
                beq     2$
                ;если в окне1 не стр.4, то тут может быть всё, что угодно.
4$:             cmp     @#120004,#100000+315.   ;это мкдос?
                bhis    3$          ;обнаружен мкдос
                cmp     @#120170,#100000+310.   ;это андос?
                blo     2$                      ;нет. или версия не та
                ;обнаружен андос
3$:             .addr   R1,PCOPYR
                clr     R2
                emt     20
                br      1$
                ;будем считать, что если не андос/мкдос, то ксидос,
                ;остальные идут лесом - зажопили подробную документацию, сами виноваты.
2$:             emt     62 ;очистка экрана
                .addr   R0,PCOPYR
                emt     65 ;вывод строки
1$:             mov     #4000, @#177716     ; стр.1->окно0, стр.1->окно1
                jmp     (R5)        ;запускаем распаковку и затем сам рокмонитор.


PCOPYR:         .ascii  "Rock Monitor 3 by (c) Caroline Sofrware."<15><12>
                .ascii  "Adapted to ANDOS/MKDOS by RDC"<15><12>
                .asciz  "Fully remake by (c) gid productions."
                .even
PATCHE:

mover:          mov     r2, r5
1$:             mov     (r1)+, (r2)+
                cmp     r1, pc
                blo     1$
                jmp     (r5)


                .end


