
                clr     GM
                bit     #100, @#177716      ; клавиша нажата?
                beq     1$                  ; да
                inc     GM                  ; нет

1$:             emt     14                  ; для монитора БК10, инициализируем драйвер
                                            ; экрана
                mov     #122000, @#0
                cmpb    #300, @#177717      ; это БК11?
                bne     0$                  ; нет
                bis     #7, @#0             ; да
0$:             mov     #40000, R0          ; очищаем экран
3$:             clr     (R0)+
                tst     R0
                bpl     3$

                mov     #54000, @#160       ; вот с этого адреса
                mov     #Message, R1        ; выведем это сообщение
                bic     #1000, @#177664     ; эффект с экраном
                call    OUTS
                mov     #1014, R1
                mov     #1, R2
4$:             bic     #1000, @#177664
                mov     R1, R0
                sob     R0, .
                bis     #1000, @#177664
                mov     R2, R0
                sob     R0, .
                inc     R2
                sob     R1, 4$

                tst     (PC)+               ; а была клавиша нажата при старте?
GM:             .word   0
                beq     5$                  ; 0 - да
                sob     R1, .               ; небольшая пауза
                sob     R1, .
                mov     #76000, @#177716    ; подключаем экран 1, или ничего не подключаем на БК10
                mov     #MVB, R2            ; копируем загрузчик заставки
                mov     #MVE-MVB, R0
                mov     #320, R1
                mov     R1, R3
2$:             movb    (R2)+, (R3)+
                sob     R0, 2$
                jmp     @#372               ; запускаем заставку

5$:             call    CheckHW             ; мы на БК11?
                bne     6$                  ; нет
                mov     #76000, @#177716    ; да - подключаем экран 1
6$:             mov     #MVBG, R2           ; копируем загрузчик игры
                mov     #MVEG-MVBG, R0
                mov     #320, R1
                mov     R1, R3
7$:             movb    (R2)+, (R3)+
                sob     R0, 7$
                jmp     @#372

;вход:  R1 - адрес строки
;       @#160 - адрес вывода
OUTS:           movb    (R1)+, R2            ; количество выводимых строк
1$:             movb    (R1)+, R0
                beq     0$
                call    PUTCH
                br      1$

0$:             mov     @#160, R0
                bic     #77, R0
                add     #1200, R0
                mov     R0, @#160
                sob     R2, 1$
                return
;выводим в режиме 32
;вход: R0 - код символа
;по адресу 160 - адрес вывода на экран
PUTCH:          jsr     R4, @#110346
                bic     #177400, R0
                bit     #140, R0
                beq     01$
                tstb    R0
                bpl     02$
                sub     #40, R0
02$:            asl     R0
                mov     R0, R1
                asl     R0
                asl     R0
                add     R0, R1
                add     #111576, R1
                mov     @#160, R3
                mov     R5, -(SP)
                mov     #12, R2
0$:             clr     R0
                bisb    (R1), R0
                mov     #10, R5
                bic     #252, R0
                mov     R0, R4
                asr     R0
                asl     R4
                bis     R0, R4
                bicb    R5, R4
                bisb    (R1)+, R4
1$:             asr     R4
                ror     R0
                asr     R0
                sob     R5, 1$
                mov     R0, (R3)
                add     #100, R3
                sob     R2, 0$
                mov     (SP)+, R5
                add     #2, @#160
01$:            jsr     R4, @#110362
                return



Message:        .byte   6
                .asciz  " Любая нажатая клавиша во время"
                .asciz  " загрузки - пропустить заставку"
                .asciz  ""
                .asciz  "    Во время работы заставки:"
                .asciz  "     КТ - отменить заставку"
                .asciz  "     ПОВТ - смотреть дальше"
                .even


;загрузчик заставки
ScreenLoadAddr = 1000
MVB:            .word   3, ScreenLoadAddr, 0
                .ascii  "SCRNPLAY.OVL"
                .word   20040, 20040
                .word   0, 0
                .word   20040, 20040, 20040, 20040
                .word   20040, 20040, 20040, 20040
                emt     36
                tstb    1(R1)               ; загрузилось нормально?
                beq     0$                  ; да
                halt                        ; нет
0$:             mov     #1014, R1           ; опять экранный эффект
                mov     #1, R2
1$:             bis     #1000, @#177664
                mov     R1, R0
                sob     R0, .
                bic     #1000, @#177664
                mov     R2, R0
                sob     R0, .
                inc     R2
                sob     R1, 1$
                mov     #16000, @#177716    ; подключаем экран 0, или ничего не подключаем на БК10
                mov     #40000, R0          ; очищаем экран
3$:             clr     (R0)+
                tst     R0
                bpl     3$
                mov     #76000, @#177716    ; подключаем экран 1, или ничего не подключаем на БК10
                jmp     @#ScreenLoadAddr    ; запускаем
MVE:

;загрузчик игры
GameLoadAddr = 1000
MVBG:           .word   3, GameLoadAddr, 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$                  ; да
                halt                        ; нет
0$:             mov     #1014, R1           ; опять экранный эффект
                mov     #1, R2
1$:             bis     #1000, @#177664
                mov     R1, R0
                sob     R0, .
                bic     #1000, @#177664
                mov     R2, R0
                sob     R0, .
                inc     R2
                sob     R1, 1$
                mov     #16000, @#177716    ; подключаем экран 0, или ничего не подключаем на БК10
                call    CheckHW             ; мы на БК11?
                bne     4$                  ; нет
                mov     #40000, R0          ; да - очищаем экран
3$:             clr     (R0)+
                tst     R0
                bpl     3$
                mov     #76000, @#177716    ; подключаем экран 1
4$:             mov     #1330, @#177664     ; инициализируем скроллинг
                jmp     @#GameLoadAddr      ; запускаем
CheckHW:        cmp     @#0, #122007        ; мы на БК11?
                return
MVEG:

                .end


