; #######################################################
; # ПРОГРАММА PRINTPZ. РАЗРАБОТАЛ 16.12.90 ПЗ           #
; # ДЛЯ ПЕЧАТИ ТЕКСТОВЫХ ФАЙЛОВ НА ПРИНТЕРЕ МС-6312     #
; # РЕДАКТОР МИКРО10.                                   #
; #######################################################
MEN:    MOV     C214,R0         ;ОЧИСКА ЭКРАНА
        EMT     16
        EMT     16
        MOV     #232,R0         ;ОТКЛЮЧИТЬ КУРСОР
        EMT     16
        MOV     #40000,@#160    ;АДРЕС ЭКРАНА В ЯЧЕЙКУ 160.
        ADD     #14,@#160
        MOV     #T00,R4
        JSR     PC,@#163270     ;ЗАПИСЬ В СЛУЖЕБН. СТРОКУ
        MOV     #232,R0         ;ВКЛЮЧИТЬ КУРСОР
        EMT     16
        MOV     #22,R1          ;ЗАГОЛОВОК МЕНЮ
        MOV     #5,R2           ;КООРД ВЫВОДА НА ЭКРАН Т0
        EMT     24
        MOV     #T0,R1          ;АДРЕС ТЕКСТА Т0
        JSR     PC,TXT          ;ВЫВОД НА ЭКРАН ТЕКСТА Т0
        MOV     #10,R3          ;ТЕКСТ МЕНЮ: КОЛИЧ ТЕКСТОВ
        MOV     #7,R4           ;КООРД Y ТЕКСТА Т1
        MOV     #TAB,R5         ;АДРЕС ТАБЛИЦЫ АДРЕСОВ ТЕКСТОВ
1:      MOV     #26,R1          ;КООРД X ТЕКСТОВ Т1...Т10
        MOV     R4,R2           ;КООРД Y ОЧЕРЕДНОГО ТЕКСТА
        EMT     24              ;УСТАНОВКА КУРСОРА
        MOV     (R5)+,R1        ;АДРЕС ТЕКСТА
        JSR     PC,TXT          ;ВЫВОД НА ЭКРАН ОЧЕРЕДНОГО ТЕКСТА
        INC     R4              ;КООРД Y ОЧЕРЕДНОГО ТЕКСТА
        SOB     R3,1            ;ЦИКЛ ПО КОЛИЧ ТЕКСТОВ

        JSR     PC,KUR          ;ПП УПРАВЛЕНИЕ КУРСОРОМ
        JSR     PC,PRA          ;ПП ПРИРАЩЕНИЕ АДРЕСА DA
        CMP     #120,DA         ;Р=120 - ПЕЧАТЬ КОПИИ
        BEQ     PRN
        CMP     #113,DA         ;К=113 - КОНЕЦ РАБОТЫ
        BNE     ZAG
        MOV     #214,R0
        EMT     16
        EMT     16
        JMP     @#100274        ;ВЫХОД ИЗ ПРОГРАММЫ

ZAG:    MOV     #T11,R1         ;ЗАГРУЗКА ФАЙЛА: АДРЕС ТЕКСТА Т11
        JSR     PC,TXT          ;ВЫВОД НА ЭКРАН ТЕКСТА Т11
        MOV     AE,R5           ;АДРЕС ЗАГРУЗКИ
        JSR     PC,@#100536     ;ПП ЗАГРУЗЧИКА MONIT
        TSTB    @#321           ;ПРОВЕРКА ОШИБКИ СЧИТЫВАНИЯ.
        BNE     ZAG

;КОПИРОВАНИЕ ФАЙЛА В РАБОЧУЮ ОБЛАСТЬ ПАМЯТИ

        MOV     AE,AK           ;ВЫЧИСЛЕНИЕ АДРЕСА
        ADD     @#350,AK        ;КОНЦА ФАЙЛА.
        MOV     AE,AN           ;ВЫЧИСЛЕНИЕ АДРЕСА
        ADD     DA,AN           ;НАЧАЛА ФАЙЛА.
        MOV     AK,DF           ;ВЫЧИСЛЕНИЕ ДЛИНЫ
        SUB     AN,DF           ;ФАЙЛА.
        MOV     A,R1            ;КОПИРОВАТЬ
        MOV     AN,R2           ;ФАЙЛ
        MOV     DF,R0           ;С ЭКРАНА
1:      MOVB    (R2)+,(R1)+     ;НА
        SOB     R0,1            ;АДРЕС A.
        MOV     R1,AK           ;АДР КОНЦА ФАЙЛА
        DEC     AK              ;ДЛЯ ПЕЧАТИ.

PRN:    MOV     #214,R0         ;ОЧИСТКА ЭКРАНА
        EMT     16
        EMT     16
        MOV     #16,R1          ;ПЕЧАТЬ ФАЙЛА: КООРД
        MOV     #12,R2          ;ТЕКСТА Т12.
        EMT     24
        MOV     #23,@#256       ;ПЕРЕДАЧА НА ПРИНТЕР УПРАВЛЯЮЩЕГО
        JSR     PC,@#PCH        ;КОДА ДЛЯ НАСТРОЙКИ НА КОИ-8.
        MOV     #T12,R1         ;АДРЕС ТЕКСТА Т12
        JSR     PC,TXT          ;ВВОД НА ЭКРАН ТЕКСТА Т12
        MOV     #352,R1         ;ИМЯ ФАЙЛА
        JSR     PC,TXT          ;ВЫВОД НА ЭКРАН ИМЕНИ ФАЙЛА
CHT:    MOV     A,R0            ;АДРЕС НАЧАЛА ФАИЛА ДЛЯ ПЕЧАТИ
M12:    MOVB    (R0)+,@#256     ;ПЕРЕДАЧА КОДА НА ПРИНТЕР.
        TSTB    @#256           ;ПРОВЕРКА КОНЦА СТРОКИ.
        BEQ     1
        CMP     @#256,#10
        BLE     2
        CMP     @#256,#40
        BLT     1
2:      JSR     PC,PRB          ;ПЕЧАТЬ ПРОБЕЛОВ
        TSTB    R1              ;ПРОВЕРКА ПЕЧАТИ
        BEQ     M12             ;ПРОБЕЛОВ.
        CLR     DA              ;ОЧИСТКА ПАМЯТИ ПРОБЕЛОВ
        JSR     PC,@#PCH        ;ПЕЧАТЬ СИМВОЛА НА ПРИНТЕРЕ.
        CMP     R0,AK           ;ЦИКЛ ДО
        BLT     M12             ;КОНЦА ФАЙЛА.
        MOV     #14,@#256       ;ПЕРЕВОД .
        JSR     PC,@#PCH        ;ФОРМАТА.
        JMP     MEN             ;ВОЗВРАТ В МЕНЮ
1:      MOV     #12,@#256       ;ЕСЛИ КОНЕЦ СТРОКИ.
        JSR     PC,@#PCH        ;ТО ПЕРЕВОД CTPCK.M.
        MOV     #15,@#256       ;ТАБУЛЯЦИЯ СТРОКИ
        JSR     PC,@#PCH
        BR      M12

;ПП ПЕРЕДАЧА КОДОВ ИЗ БК К ПРИНТЕРУ.

PCH:    MOV     @#256,@#177714  ;ПЕ-ЧА КОДА СИМ-ЛА В ВЫХОД РЕГ ПОРТА
1:      CMP     #600,@#177714   ;ПРОВЕРКА ГОТОВНОСТИ ПРИНТЕРА.
        BNE     1
        ADD     #400,@#256      ;ЕСЛИ ДА. ТО ДОБАВИТЬ СТРОБ-И. А
        MOV     @#256,@#177714  ;ПОЛУЧЕННЫЙ КОД ПЕРЕДАТЬ В ВЫХ РЕГ.
2:      BIT     #400,@#177714   ;ПРОВЕРКА ИСЧЕЗНОВЕНИЯ СИГНАЛА
        BNE     2               ;ЗП-П ЗАПРОС ПРИЕМНИКА.
        CLR     @#256           ;ЕСЛИ ДА. ТО ОЧИСТИТЬ ЯЧЕЙКУ 256.
        RTS     PC
        HALT
PRB:    MOVB    @#256,21        ;ПП ВЫЯВЛЕНИЕ ПРОБЕЛОВ
        MOVB    #10,R2
1:      CMPB    R1,R2           ;ПРОВЕРКА НАЛИЧИЯ ПРОБЕЛОВ.
        BEQ     3
        SOB     R2,1
        BR      6
3:      CMPB    #1,DA           ;ПРОВЕРКА ПОВТОРЕНИЯ ПРОБЕЛОВ.
        BEQ     2
        MOVB    #1,DA
        BR      4
2:      ASL     R1
        ASL     R1
        ASL     R1
4:      BIC     #177400,21      ;ОЧИСТКА СТ. БАЙТА R1
5:      MOV     #40,@#256       ;ПЕЧАТЬ
        JSR     PC,@#PCH        ;ПРОБЕЛОВ.
        SOB     R1,5
6:      RTS     PC

; ПП УПРАВЛЕНИЕ КУРСОРОМ

KUR:    MOV     #25,R1          ;КООРДИНАТА  X
        MOV     #7,R2           ;КООРДИНАТА  Y
        EMT     24
5L:     EMT     6               ;ПЕРЕМЕЩЕНИЕ КУГСОРА
        CMP     #32,R0          ;ВВЕРХ
        BEQ     2L
        CMP     #33,R0          ;ВНИЗ
        BEQ     3L
        CMP     #12,R0          ;ВВОД: ВЫХОД ИЗ ПП
        BEQ     1L              ;ВЫХОД ИЗ ПЛ
        BR      5L
2L:     CMP     #7,R2           ;ОГРАНИЧЕНИЕ ВЫШЕ СТРОКИ 7
        BHIS    5L
        SUB     #1,R2
        EMT     24
3L:     CMP     #16,R2          ;ОГРАНИЧЕНИЕ НИЖЕ СТРОКИ 16
        BLOS    5L
        ADD     #1,R2
        EMT     24
        BR      5L
1L:     RTS PC

;ПП ПРИРАЩЕНИЕ АДРЕСА DA

PRA:    MOV     #7,R3           ;КООРД Y ДАННЫХ
        MOV     #DAN,R4         ;АДРЕС ДАННЫХ
2:      MOV     (R4)+,DA        ;ПРИРАЩЕНИЕ АДРЕСА DA
        CMP     R3,R2           ;СРАВНЕНИЕ КООРДИНАТ
        BEQ     3
        INC     R3              ;УВЕЛИЧЕНИЕ КООРДИНАТЫ Y
        BR      2
3:      RTS     PC

TXT:    CLR     R2              ;ПП ЧТЕНИЕ ТЕКСТА
        EMT     20
        RTS     PC              ;ВЫХОД ИЗ ПП ТЕКСТ

DAN:    .#0 .#376 .#250 .#166 .#2452 .#2124 .#120 .#113 .E
TAB:    .#T1 .#T2 .#T3 .#T4 .#T5 .#T6 .#T7 .#T10 .E .E

A:      .#3000                  ;РАБОЧИЙ АДРЕС ФАЙЛА
AE:     .#40000                 ;АДРЕС ЗАГРУЗКИ ФАЙЛА
AN:     .+2
AK:     .+2
DA:     .+2
DF:     .+2 .E .E
T00:    .A: PRINTPZ $ П.И.ЗАХАРОВ $ МОСКВА $ 1991.
        .B:0
T0:     .A: ФОРМАТ ФАЙЛА ДЛЯ ПЕЧАТИ:
        .B:0
T1:     .A: EDASP10, МИКРО11
        .B:0
T2:     .A: READER.2
        .B:0
T3:     .A: DOCUM
        .B:0
T4:     .A: СТРЕЛКИ ВВЕРХ-ВНИЗ
        .B:0
T5:     .A: "ФОРМАТ"
        .B:0
T6:     .A: МОНСТР
 .      .B:0
T7:     .A: -$- ПЕЧАТЬ СЛЕДУЮЩЕЙ КОПИИ
        .B:0
T10:    .A: -$- КОНЕЦ РАБОТЫ
        .B:0
T11:    .B:14 .B:12 .A: ЧТЕНИЕ ФАЙЛА С МАГНИТОФОНА :
        .B:40 .B:0
T12:    .A: ПЕЧАТАЕТСЯ ФАЙЛ :
        .B:40 .B:0 .E .E
EN:      END
