;
; ╔═════════════════════════════════════════════════════════════════════════╗
; ║     This file is generated by The Interactive Disassembler (IDA)        ║
; ║     Copyright (c) 2006 by DataRescue sa/nv, <ida@datarescue.com>        ║
; ║ Licensed to: Nikto                                                      ║
; ╚═════════════════════════════════════════════════════════════════════════╝
;
; Input MD5   : 2D735B0F3E60E8F9882D2E67D5EB0E70

; ───────────────────────────────────────────────────────────────────────────
; File Name   : PLANET.PIC.raw_uncr
; Format      : Binary file
; Base Address: 0000h Range: 1000h - 2C40h Loaded length: 1C40h

; Processor:        К1801ВМ1
; Target assembler: BKTurbo8 Cross Assembler


.la 10000
; ═══════════════════════════════════════════════════════════════════════════
; на входе:
; R0 = 104411
; R1 = 15200
; R2 = 0
; R3 = 177716
; R4 = 0
; R5 = 26100
; SP = 716
PICTopStack = 5276

PicBgn:         mov     #20, @#177712
                add     R3, R5          ; R5 = 26016
                clr     R4
                add     R1, R5          ; R5 = 43216
                add     #170022, R5     ; R5 = 33240
                mov     R5, R1          ; R1 = 33240
                mov     R3, R2          ; R2 = 177716
                add     @#177706, R4    ; R4 = 2330
                add     #271, R4        ; R4 = 2621
                call    @#116622        ; R0 = 143470
                                        ; R2 = 0
                                        ; R4 = 0
                                        ; R5 = 36061
                add     @#754, R0       ; R0 = 144470
                bne     0ok$
                return
; ───────────────────────────────────────────────────────────────────────────

0ok$:           sub     #20, SP         ; SP = 676
                sub     #22706, R1      ; R1 = 10332
                add     #4420, R4       ; R4 = 4420

2$:             mov     (R1), R0        ; декодируем
                neg     R0
                swab    R0
                inc     R0
                mov     R0, (R1)+
                sob     R4, 2$
                tst     R5              ; R5!=0
                bne     1ok$
                inc     R5

3$:             mov     (R2), R0
                rol     R0
                mov     R0, (R2)+
                sob     R2, 3$
                return
; ───────────────────────────────────────────────────────────────────────────
.SCRIPT "Pic Crypt"
        ; сперва внутреннее кодирование
        mov #4420, R4
        mov #Cryptp2, R1
1$:     mov (R1), R0
        dec R0
        swab R0
        neg R0
        mov R0, (R1)+
        sob R4, 1$
        ; потом внешнее
        mov #2500, R0
        mov #PicBgn, R1
2$:     mov (R1), R2
        com R2
        swab R2
        mov R2, (R1)+
        sob R0, 2$
.ENDS
1ok$:           mov     @#177710, R1
                bic     #7, R1          ; R1 = 1310
                add     #TLGMCAddr, R4  ; R4 = 400
                mov     #331, R2
TLOffset = TLPICAddr - TLGMCAddr
5$:             mov     TLOffset(R4), (R4)+ ; переносим магнитофонный загрузчик в новое место
                sob     R2, 5$
                ; патчим
                mov     #TrapTo14-TLOffset, @#TLGMCAddr+OffsTL01
                mov     #Retry$-TLOffset, @#TLGMCAddr+OffsTL02
                mov     #Name$-326-TLOffset, @#TLGMCAddr+OffsTL12
                mov     #40422, @#PatchML12 ; новый адрес вывода строки "PLANET"
                mov     #GMCLoad, @#TLGMCAddr+OffsTL06
                mov     #15240, @#TLGMCAddr+OffsTL05
                mov     (PC)+,@(PC)+
                        neg r0
                .word   TLGMCAddr+OffsTL07
                mov     #137, @#TLGMCAddr+OffsTL08-2
                mov     #GMCLoad, @#TLGMCAddr+OffsTL08
                mov     #Retry$-TLOffset, @#TLGMCAddr+OffsTL11
                movb    #'G, @#TLGMCAddr+OffsTL13
                mov     #46500, @#PatchML11 ; новый адрес вывода логотипа
                mov     #PICTopStack, @#PatchML15 ; новая вершина указателя стека
                mov     #WrongFile$-TLOffset, @#26
                mov     #40000, @#PatchML03 ; новое начало экрана
                mov     #1011, @#PatchML05 ; новое значение скроллинга экрана
                mov     #PICTopStack, SP
                mov     #46100, R5      ; адрес экрана
                mov     #PicData, R4    ; данные
                ; выводим заставку
L6$:            mov     #1, R2
                movb    (R4)+, R0
                cmpb    R0, (R4)
Cryptp2:        bne     7$
                inc     R4
                movb    (R4)+, R2
                bic     #177400, R2
                swab    R2
                movb    (R4)+, R3
                bic     #177400, R3
                add     R3, R2
                swab    R2

7$:             movb    R0, (R5)+
                cmp     #100000, R5
                beq     8$
                sob     R2, 7$
                br      L6$
; ───────────────────────────────────────────────────────────────────────────

8$:             mov     #GMCLoad, @#TLGMCAddr+OffsTL04
                mov     #12707, R5
                bic     #7, R5
                mov     R5, @#177706
                clr     @#177712
                mov     #GMCLoad, @#TLGMCAddr+OffsTL03
                mov     #1456, @#PatchML10 ; новое значение счётчика.
                mov     #Digit0$-20, @#PatchML08 ; новое значение 0-го разряда счётчика
                mov     #Digit2$, @#PatchML09 ; новое значение 2-го разряда счётчика
                clr     @#PatchML01  ; сюда переход по неверной КС в магнитофонном загрузчике
                movb    #'M, @#TLGMCAddr+OffsTL13+1
                mov     #40006, @#PatchML14 ; новый адрес вывода цифры 3
                mov     #3040, @#PatchML04 ; новое значение размера экрана для очистки
                mov     #43402, @#PatchML13 ; новый адрес вывода строки "GAME"
                mov     #3, @#TLGMCAddr+OffsTL10
                mov     #44, @#TLGMCAddr+OffsTL09


                .END
