;FILE - SCRNPLAY.OVL
;подлинковать файлы - с меткой:
;rally.snd - MUSIC
;tm.pck - TM
;fon.pck - FON
;mobil.pck - MOBIL
SCRAD   =104000
HEIGHT  =24000
HIGH    =240

                mov     #1000, SP
                mtps    SP
                mov     #10200, @#177716        ; запрещаем кнопку СТОП
                call    CheckHW                 ; мы на БК11?
                bne     0$                      ; нет - переход
                mov     #74000, @#177716        ; стр.6 в окно.0  стр.1 в окно.1
                mov     #MOBIL, R1              ; картинку с машинкой в стр.1
                mov     #100000, R2             ; скопируем
                mov     #17472, R0
3$:             movb    (R1)+, (R2)+
                sob     R0, 3$
                mov     #45400, @#177662
                br      1$

0$:             mov     #MOBIL, R1              ; убираем музыку и всякие картинки
                mov     #EOF, R2                ; а вместо них - машинку
                mov     #17472, R0
2$:             movb    (R1)+, (R2)+
                sob     R0,  2$

1$:             mov     #16000, @#177716        ; стр.5 в окно.0  стр.4 в окно.1
                clr     @#177660                ; разрешаем прерывания от клавиатуры
                mov     #1330, @#177664
                call    CheckHW                 ; мы на БК11?
                beq     74$                     ; да - переход
                call    EOF                     ; распаковываем картинку с машинкой
KEX:            jmp     GOON

KEYTRP:         cmp     @#177662, #3
                beq     KEX
                cmp     @#177662, #1
                bne     0$
                mov     (PC)+, -(SP)
APEK:           .word   0
                bne     1$
                clr     (SP)+
                br      0$

1$:             mov     (SP)+, (SP)
                clr     APEK
0$:             rti

74$:            mov     #60, R0                 ; задаём вектор обработки клавиатуры
                mov     #KEYTRP, (R0)+
                mov     #200, (R0)
                mov     (R0), @#276
                mov     -(R0), @#274
                mov     #76000, @#177716        ; стр.6 в окно.0  стр.4 в окно.1
                mov     #13000, @#177706

                mov     #34, @#177712
                call    TM                      ; распаковываем логотип
                mov     #AP1, APEK              ; следующая заставка
                call    NAPYL
                mov     #10, R1
81$:            sob     R3, .
                sob     R1, 81$

AP1:            mov     #34, @#177712
                call    MUSIC                   ; запускаем музыку
;рисуем картинку в стр. 3
                mov     #76000, @#177716        ; стр.6 в окно.0  стр.4 в окно.1
                call    FON
                mov     #AP2, APEK              ; следующая заставка
                call    NAPYL
                sob     R3, .
;рисуем картинку в стр. 3
AP2:            mov     #74000, @#177716        ; стр.6 в окно.0  стр.1 в окно.1
                mov     #AP4, APEK              ; следующая заставка
                call    @#100000
                mov     #75400, @#177716        ; стр.6 в окно.0  стр.3 в окно.1
                mov     #40000, R0              ; эта картинка должна быть ещё в стр.3
2$:             mov     (R0)+, 37776(R0)
                tst     R0
                bpl     2$
                call    NAPYL
                mov     #34, @#177712
                mov     #24000, @#177716        ; стр.2 в окно.0  стр.1 в окно.1
                mov     #40000, R0              ; очищаем стр. 1 и 2
                mov     R0, R1
1$:             clr     (R0)+
                sob     R1, 1$
                mov     #TEXT, AT
                mov     #37., STRCNT
                mov     #1, LCNT
                mov     #40000, UP
                mov     #40000, DN
                mov     #HIGH, H1
                clr     H2
                call    SCRPLY
78$:            tstb    @MUSIC+234
                bpl     78$
                br      GOON

AP4:            mov     #5400, @#177662
                call    SDMPF
                mov     #100, @#177660
                mov     #76000, @#177716
                mov     #40000, R0
75$:            clr     (R0)+
                tst     R0
                bpl     75$
                call    NAPYL
76$:            tst     READY
                beq     76$

GOON:           mov     #100,@#177660           ; запрещаем прерывания от клавиатуры
                call    CheckHW                 ; мы на БК11?
                bne     1$                      ; нет - сразу грузим оверлей
                mov     #45400, @#177662        ; устанавливаем палитру
                reset                           ; типа глушим AY
                mov     #16000, @#177716        ; стр.5 в окно.0  стр.4 в окно.1
                mov     #40000, R0              ; очищаем стр.5
0$:             clr     (R0)+
                tst     R0
                bpl     0$
                mov     #76000, @#177716        ; стр.6 в окно.0  стр.4 в окно.1
1$:             jmp     LODOVL


;в стр. 1 символы,  в стр. 2 маски
SCRPLY:         mov     #105400, PAGES
                mov     #40000, R3
LOOP:           mov     #34, @#177712
                add     #100000, PAGES
                bcc     0$
;отображаем стр. 5 прорисовываем стр. 6
                mov     #7400, (PC)+            ; стр.6 в окно.1
SYSM:           .word   0
                br      1$
;отображаем стр. 6 прорисовываем стр. 5
0$:             mov     #4400, SYSM             ; стр.5 в окно.1
1$:             mov     (PC)+, @(PC)+
PAGES:          .word   0, 177662

                mov     #SCRAD, R1
                mov     UP, R2
                mov     H1, R0
                ble     00$
                swab    R0
                ror     R0
                asr     R0
                add     R0, R1
00$:            mov     H2, R0
                bgt     10$
                jmp     SKIP1

10$:            dec     LCNT
                bne     11$
                mov     #24, LCNT
                mov     R3, -(SP)
                mov     R2, -(SP)
                mov     R1, -(SP)
                mov     R0, -(SP)
                mov     DN, R1
                mov     AT, R2
                call    PUTS
                mov     R2, AT
                mov     (SP)+, R0
                mov     (SP)+, R1
                mov     (SP)+, R2
                mov     (SP)+, R3
                dec     STRCNT
                bne     62$
                jmp     CYC2

62$:            add     #2400, DN
                bpl     11$
                sub     R3, DN
11$:            mov     SYSM, R5
                bis     #34000, R5          ; стр.3 в окно.0
                mov     R5, @#177716
                mov     R0, -(SP)
                mov     R1, R4
                mov     R1, R5
                sub     R3, R5
;нанесём фон
5$:             mov     (R5)+, (R4)+
                mov     (R5)+, (R4)+
                mov     (R5)+, (R4)+
                mov     (R5)+, (R4)+
                mov     (R5)+, (R4)+
                mov     (R5)+, (R4)+
                mov     (R5)+, (R4)+
                mov     (R5)+, (R4)+
                mov     (R5)+, (R4)+
                mov     (R5)+, (R4)+
                mov     (R5)+, (R4)+
                mov     (R5)+, (R4)+
                mov     (R5)+, (R4)+
                mov     (R5)+, (R4)+
                mov     (R5)+, (R4)+
                mov     (R5)+, (R4)+
                mov     (R5)+, (R4)+
                mov     (R5)+, (R4)+
                mov     (R5)+, (R4)+
                mov     (R5)+, (R4)+
                mov     (R5)+, (R4)+
                mov     (R5)+, (R4)+
                mov     (R5)+, (R4)+
                mov     (R5)+, (R4)+
                mov     (R5)+, (R4)+
                mov     (R5)+, (R4)+
                mov     (R5)+, (R4)+
                mov     (R5)+, (R4)+
                mov     (R5)+, (R4)+
                mov     (R5)+, (R4)+
                mov     (R5)+, (R4)+
                mov     (R5)+, (R4)+
                sob     R0, 5$
;нанесём маски
                mov     SYSM, R5
                bis     #24000, R5          ; стр.2 в окно.0
                mov     R5, @#177716
                mov     (SP), R0
                mov     R1, R4
                mov     R2, R5
6$:             bic     (R2)+, (R1)+
                bic     (R2)+, (R1)+
                bic     (R2)+, (R1)+
                bic     (R2)+, (R1)+
                bic     (R2)+, (R1)+
                bic     (R2)+, (R1)+
                bic     (R2)+, (R1)+
                bic     (R2)+, (R1)+
                bic     (R2)+, (R1)+
                bic     (R2)+, (R1)+
                bic     (R2)+, (R1)+
                bic     (R2)+, (R1)+
                bic     (R2)+, (R1)+
                bic     (R2)+, (R1)+
                bic     (R2)+, (R1)+
                bic     (R2)+, (R1)+
                bic     (R2)+, (R1)+
                bic     (R2)+, (R1)+
                bic     (R2)+, (R1)+
                bic     (R2)+, (R1)+
                bic     (R2)+, (R1)+
                bic     (R2)+, (R1)+
                bic     (R2)+, (R1)+
                bic     (R2)+, (R1)+
                bic     (R2)+, (R1)+
                bic     (R2)+, (R1)+
                bic     (R2)+, (R1)+
                bic     (R2)+, (R1)+
                bic     (R2)+, (R1)+
                bic     (R2)+, (R1)+
                bic     (R2)+, (R1)+
                bic     (R2)+, (R1)+
                tst     R2
                bpl     61$
                sub     R3, R2
61$:            sob     R0, 6$
;нанесём символы
                mov     SYSM, @#177716          ; стр.0 в окно.0
                mov     (SP)+, R0
7$:             bis     (R5)+, (R4)+
                bis     (R5)+, (R4)+
                bis     (R5)+, (R4)+
                bis     (R5)+, (R4)+
                bis     (R5)+, (R4)+
                bis     (R5)+, (R4)+
                bis     (R5)+, (R4)+
                bis     (R5)+, (R4)+
                bis     (R5)+, (R4)+
                bis     (R5)+, (R4)+
                bis     (R5)+, (R4)+
                bis     (R5)+, (R4)+
                bis     (R5)+, (R4)+
                bis     (R5)+, (R4)+
                bis     (R5)+, (R4)+
                bis     (R5)+, (R4)+
                bis     (R5)+, (R4)+
                bis     (R5)+, (R4)+
                bis     (R5)+, (R4)+
                bis     (R5)+, (R4)+
                bis     (R5)+, (R4)+
                bis     (R5)+, (R4)+
                bis     (R5)+, (R4)+
                bis     (R5)+, (R4)+
                bis     (R5)+, (R4)+
                bis     (R5)+, (R4)+
                bis     (R5)+, (R4)+
                bis     (R5)+, (R4)+
                bis     (R5)+, (R4)+
                bis     (R5)+, (R4)+
                bis     (R5)+, (R4)+
                bis     (R5)+, (R4)+
                tst     R5
                bpl     71$
                sub     R3, R5
71$:            sob     R0, 7$

SKIP1:          dec     H1
                cmp     H2, #HIGH
                bhis    2$
                inc     H2
                br      21$

2$:             add     #100, UP
                bpl     21$
                sub     R3, UP
21$:            tstb    @#177712
                bpl     21$
                jmp     LOOP

LOOP2:          mov     #34, @#177712
                add     #100000, PAGES
                bcc     0$
;отображаем стр. 5 прорисовываем стр. 6
                mov     #7400, SYSM
                br      1$
;отображаем стр. 6 прорисовываем стр. 5
0$:             mov     #4400, SYSM
1$:             mov     PAGES, @#177662
CYC2:           mov     #SCRAD, R1
                mov     UP, R2
                mov     H2, R0
                bgt     64$
                jmp     SKIP2

64$:            mov     SYSM, R5
                bis     #34000, R5          ; стр.3 в окно.0
                mov     R5, @#177716
                mov     R0, -(SP)
                mov     R1, R4
                mov     R1, R5
                sub     R3, R5
;нанесём фон
5$:             mov     (R5)+, (R4)+
                mov     (R5)+, (R4)+
                mov     (R5)+, (R4)+
                mov     (R5)+, (R4)+
                mov     (R5)+, (R4)+
                mov     (R5)+, (R4)+
                mov     (R5)+, (R4)+
                mov     (R5)+, (R4)+
                mov     (R5)+, (R4)+
                mov     (R5)+, (R4)+
                mov     (R5)+, (R4)+
                mov     (R5)+, (R4)+
                mov     (R5)+, (R4)+
                mov     (R5)+, (R4)+
                mov     (R5)+, (R4)+
                mov     (R5)+, (R4)+
                mov     (R5)+, (R4)+
                mov     (R5)+, (R4)+
                mov     (R5)+, (R4)+
                mov     (R5)+, (R4)+
                mov     (R5)+, (R4)+
                mov     (R5)+, (R4)+
                mov     (R5)+, (R4)+
                mov     (R5)+, (R4)+
                mov     (R5)+, (R4)+
                mov     (R5)+, (R4)+
                mov     (R5)+, (R4)+
                mov     (R5)+, (R4)+
                mov     (R5)+, (R4)+
                mov     (R5)+, (R4)+
                mov     (R5)+, (R4)+
                mov     (R5)+, (R4)+
                sob     R0, 5$
;нанесём маски
                mov     SYSM, R5
                bis     #24000, R5          ; стр.2 в окно.0
                mov     R5, @#177716
                mov     (SP), R0
                mov     R1, R4
                mov     R2, R5
6$:             bic     (R2)+, (R1)+
                bic     (R2)+, (R1)+
                bic     (R2)+, (R1)+
                bic     (R2)+, (R1)+
                bic     (R2)+, (R1)+
                bic     (R2)+, (R1)+
                bic     (R2)+, (R1)+
                bic     (R2)+, (R1)+
                bic     (R2)+, (R1)+
                bic     (R2)+, (R1)+
                bic     (R2)+, (R1)+
                bic     (R2)+, (R1)+
                bic     (R2)+, (R1)+
                bic     (R2)+, (R1)+
                bic     (R2)+, (R1)+
                bic     (R2)+, (R1)+
                bic     (R2)+, (R1)+
                bic     (R2)+, (R1)+
                bic     (R2)+, (R1)+
                bic     (R2)+, (R1)+
                bic     (R2)+, (R1)+
                bic     (R2)+, (R1)+
                bic     (R2)+, (R1)+
                bic     (R2)+, (R1)+
                bic     (R2)+, (R1)+
                bic     (R2)+, (R1)+
                bic     (R2)+, (R1)+
                bic     (R2)+, (R1)+
                bic     (R2)+, (R1)+
                bic     (R2)+, (R1)+
                bic     (R2)+, (R1)+
                bic     (R2)+, (R1)+
                tst     R2
                bpl     61$
                sub     R3, R2
61$:            sob     R0, 6$
;нанесём символы
                mov     SYSM, @#177716      ; стр.1 в окно.0
                mov     (SP)+, R0
7$:             bis     (R5)+, (R4)+
                bis     (R5)+, (R4)+
                bis     (R5)+, (R4)+
                bis     (R5)+, (R4)+
                bis     (R5)+, (R4)+
                bis     (R5)+, (R4)+
                bis     (R5)+, (R4)+
                bis     (R5)+, (R4)+
                bis     (R5)+, (R4)+
                bis     (R5)+, (R4)+
                bis     (R5)+, (R4)+
                bis     (R5)+, (R4)+
                bis     (R5)+, (R4)+
                bis     (R5)+, (R4)+
                bis     (R5)+, (R4)+
                bis     (R5)+, (R4)+
                bis     (R5)+, (R4)+
                bis     (R5)+, (R4)+
                bis     (R5)+, (R4)+
                bis     (R5)+, (R4)+
                bis     (R5)+, (R4)+
                bis     (R5)+, (R4)+
                bis     (R5)+, (R4)+
                bis     (R5)+, (R4)+
                bis     (R5)+, (R4)+
                bis     (R5)+, (R4)+
                bis     (R5)+, (R4)+
                bis     (R5)+, (R4)+
                bis     (R5)+, (R4)+
                bis     (R5)+, (R4)+
                bis     (R5)+, (R4)+
                bis     (R5)+, (R4)+
                tst     R5
                bpl     71$
                sub     R3, R5
71$:            sob     R0, 7$

SKIP2:          dec     H2
                add     #100, UP
                bpl     21$
                sub     R3, UP
21$:            tstb    @#177712
                bpl     21$
                cmp     UP, DN
                beq     63$
                jmp     LOOP2
63$:            return

;вход:  R2 - адрес строки
;       R1 - адрес экрана
PUTS:           mov     #25000, @#177716
                mov     #24, R0             ; сперва очистим место под строку
                mov     R1, R3
                clr     R4
2$:             mov     R4, (R3)+
                mov     R4, (R3)+
                mov     R4, (R3)+
                mov     R4, (R3)+
                mov     R4, (R3)+
                mov     R4, (R3)+
                mov     R4, (R3)+
                mov     R4, (R3)+
                mov     R4, (R3)+
                mov     R4, (R3)+
                mov     R4, (R3)+
                mov     R4, (R3)+
                mov     R4, (R3)+
                mov     R4, (R3)+
                mov     R4, (R3)+
                mov     R4, (R3)+
                mov     R4, (R3)+
                mov     R4, (R3)+
                mov     R4, (R3)+
                mov     R4, (R3)+
                mov     R4, (R3)+
                mov     R4, (R3)+
                mov     R4, (R3)+
                mov     R4, (R3)+
                mov     R4, (R3)+
                mov     R4, (R3)+
                mov     R4, (R3)+
                mov     R4, (R3)+
                mov     R4, (R3)+
                mov     R4, (R3)+
                mov     R4, (R3)+
                mov     R4, (R3)+
                sob     R0, 2$
1$:             clr     R0
                bisb    (R2)+, R0
                beq     0$
                call    PUTCH
                br      1$
0$:             return

;вход:  R0 - код символа
;       R1 - адрес вывода
PUTCH:          mov     R2, -(SP)
                mov     R1, -(SP)
                bitb    #140, R0            ; это печатный символ?
                bne     0$                  ; да - идём выведем
                aslb    R0                  ; нет - это количество пробелов
                add     R0, (SP)
                br      5$

0$:             tstb    R0
                bpl     1$
                sub     #40, R0
1$:             asl     R0
                mov     R0, R2
                asl     R0
                asl     R0
                add     R2, R0
                add     #111576, R0
                mov     #12, R2
4$:             mov     #16000, @#177716    ; стр.5 в окно.0 стр.4 в окно.1
                movb    (R0)+, R3
                mov     #10, R5             ; байт в слово
2$:             asr     R3
                ror     R4
                asr     R4
                sob     R5, 2$
                mov     R4, R3              ; сдвинутое влево
                mov     R4, R5              ; сдвинутое вправо
                asl     R3
                asl     R3
                clc
                ror     R5
                asr     R5
                bis     R4, R3
                bis     R5, R3              ; это маска
                bic     #125252, R4         ; задаём цвет букв
3$:             mov     #25000, @#177716    ; стр.2 в окно.0 стр.2 в окно.1
                bis     R3, 37700(R1)       ; формируем маску
                bis     R3, (R1)
                bis     R3, 100(R1)
                mov     #4000, @#177716     ; стр.1 в окно.0 стр.1 в окно.1
                mov     R4, (R1)            ; формируем буквы
                add     #100, R1
                bpl     6$
                sub     #40000, R1
6$:             inc     PC
                br      3$
                sob     R2, 4$
                add     #2, (SP)
5$:             mov     (SP)+, R1
                mov     (SP)+, R2
                return

; наносим картинку из стр.6 на стр.5
NAPYL:          mov     #17400, @#177716    ; стр.5 в окно.0  стр.6 в окно.1
                mov     #40000, R0
                mov     #14000, R1
                mov     #3, R2
2$:             movb    40000(R0), R3
                com     R2
                bic     R2, R3
                com     R2
                bicb    R2, (R0)
                bisb    R3, (R0)
                add     #2751, R0
                aslb    R2
                aslb    R2
                bne     0$
                mov     #3, R2
0$:             tst     R0
                bpl     2$
                ror     R2
                asrb    R2
                bne     1$
                mov     #300, R2
1$:             sub     #40000, R0
                sob     R1, 2$
                return

H1:             .word   0
H2:             .word   0
UP:             .word   0
DN:             .word   0
LCNT:           .word   0
AT:             .word   0
STRCNT:         .word   0

TEXT:           .asciz  "(c) 1998 GID prod."<16>
                .byte   20, 20, 0
                .asciz  <2>"Автор идеи неизвестен..."<5>
                .asciz  <2>"Заставка................ GID"<1>
                .asciz  <2>"Программа и алгоритмы... GID"<1>
                .asciz  <2>"Графика................. GID"<1>
                .asciz  <6>"Музыка"<23>
                .asciz  <2>"В заставке - Rally..... PFPI"<1>
                .asciz  <2>"ремикс.................. GID"<1>
                .asciz  <1>"В игре - Star Controls 2.. SPC"
                .asciz  <2>"перекодировал для AY.... GID"<1>
                .byte   20, 20, 0
                .byte   20, 20, 0
                .byte   20, 20, 0
                .byte   20, 20, 0
                .asciz  "GID благодарит:"<20>
                .asciz  <2>"А. Надежина за ANDOS v3.1"<4>
                .asciz  <2>"С. Камнева"<2>"за DiskMASTER"<4>
                .asciz  <2>"С. Камнева,  Д. Романова"<6>
                .asciz  <16>"за VorteX v4.0"<3>
                .asciz  <2>"В. Коренкова за основание"<4>
                .asciz  <10>"серии ассемблеров TURBO"
                .asciz  <2>"Д. Крылова"<2>"за Turbo8DK"<6>
                .asciz  <1>"GASP Inc."<4>"за Paradise v1.1d"
                .asciz  <1>"LORD & DRON corp."<15>
                .asciz  <13>"за Turbo Tracer v1.6"
                .asciz  <1>"GRALsoft"<5>"за Vision v2.0"<3>
                .asciz  <1>"Magic Bytes Software"<12>
                .asciz  <15>"за Techno-Art v2.1"
                .asciz  <1>"Caroline Software Inc."<10>
                .asciz  <16>"за Rock-Monitor"<2>
                .asciz  "А так же особо:"<20>
                .asciz  <4>"SPC за пакет COVOX и"<7>
                .asciz  "MAXI GC за пакет Visual Player, "
                .asciz  "в которых много хорошей музыки."
                .byte   20, 20, 0
                .byte   20, 20, 0
                .byte   20, 20, 0
                .even

SDMPF:          clr     (PC)+
READY:          .word   0
                mov     #DMPF, @#100
                return
;плавное затухание последнего звука
DMPF:           dec     (PC)+
DELAYD:         .word   1
                bne     0NORDY
                mov     #10, DELAYD
                mov     R0, -(SP)
                mov     R1, -(SP)
                mov     R2, -(SP)
                mov     #PORTS, R1
                mov     #VALUES, R2
                cmp     (PC)+, (PC)+
LOOPS:          .word   20
                .word   20
                bne     0NEXT
                movb    @#MUSIC+3000, R0
                call    S1
                movb    R0, (R2)+
                movb    @#MUSIC+3001, R0
                call    S1
                movb    R0, (R2)+
                movb    @#MUSIC+3002, R0
                call    S1
                movb    R0, (R2)
                tst     -(R2)
0NEXT:          mov     #177714, R0

                mov     (R1)+, (R0)
                movb    (R2)+, (R0)
                mov     (R1)+, (R0)
                movb    (R2)+, (R0)
                mov     (R1)+, (R0)
                movb    (R2)+, (R0)
                call    S2
                dec     LOOPS
                bgt     3$
                mov     LOOPS+2, LOOPS
                mov     #-1, R2
                mov     -(R1), (R0)
                movb    R2, (R0)
                mov     -(R1), (R0)
                movb    R2, (R0)
                mov     -(R1), (R0)
                movb    R2, (R0)
                mov     #45400, @#177662
                mov     (PC), READY
3$:             mov     (SP)+, R2
                mov     (SP)+, R1
                mov     (SP)+, R0
0NORDY:         rti
PORTS:          .word   367, 366, 365
VALUES:         .byte   0, 0, 0, 0

S1:             bitb    #20, R0
                beq     0$
                bisb    #17, R0
0$:             com     R0
                return

S2:             call    S3
                mov     PC, -(SP)
S3:             incb    -(R2)
                bne     2$
                decb    (R2)
2$:             return

CheckHW:        cmp     @#0, #122007        ; мы на БК11?
                return

GameLoadAddr = 1000
LODOVL:         mov     #LR, R3
                mov     #320, R1
                mov     R1, R2
                mov     #ELR-LR, R0
0$:             movb    (R3)+, (R2)+
                sob     R0, 0$
                jmp     @#372

LR:             .word   3
                .word   GameLoadAddr
                .word   0
                .ascii  "RACEPLAY.OVL"
                .word   20040, 20040
                .word   0, 0
                .word   20040, 20040, 20040, 20040
                .word   20040, 20040, 20040, 20040
                emt     36
                tstb    1(R1)
                beq     0$
                mov     #16000, @#177716
                jmp     @#100000
0$:             jmp     @#GameLoadAddr
ELR:

EOF:            .end


