                .Z80
                EXTRN   DATA,ALEST
;DATA  - заставка
;ALEST - знакогенератор
                .PHASE  0C000H
;
;       Header
;
HEADER:         DB      01              ; EXECUTABLE ROM
                DW      0101H           ; VERSION NUMBER
                DB      0               ; MODIFICATOR
                DW      COMMANDS
;
                JP      INIT
;
COMMANDS:       DB      'MS','X'+80H,0
;
INIT:           PUSH    DE
                PUSH    BC
                PUSH    AF
                LD      D,2
                CALL    SNSMAT
                BIT     5,E
                JR      NZ,STAR
;Включаем экран и выходим в AMSTRAD
                LD      A,8
                LD      BC,0FABFH
                OUT     (C),A
                POP     AF
                POP     BC
                POP     DE
                RET
;Здесь входим в ALESTE
STAR:           DI
;Включаем ALESTE
                LD      A,4
                LD      BC,0FABFH
                OUT     (C),A
;Страница 7 с 4000
                LD      BC,7DC7H
                OUT     (C),C
;Переписываем себя на 4000
                LD      HL,HEADER
                LD      DE,4000H
                LD      BC,4000H
                LDIR
;Страница 4 с 0000
                LD      BC,7CC4H
                OUT     (C),C
;Страница 5 с 4000
                INC     B
                INC     C
                OUT     (C),C
;Страница 6 с 8000
                INC     B
                INC     C
                OUT     (C),C
;Страница 7 с С000
                INC     B
                INC     C
                OUT     (C),C
;Режим 320х200, ROM выкл, экран вкл
                LD      BC,7CBDH
                OUT     (C),C
                LD      SP,3FFFH
                LD      A,4
                LD      (EXTPORT),A
;инициализация Вм53
                LD      DE,03B6H
                CALL    WR_TIMER
;Проверка батареи часов
                LD      D,0DH
                CALL    RD_CLOCK
                BIT     7,E
                CALL    Z,CLOCK_INIT
;Читаем клавиатуру
                LD      D,8
                CALL    SNSMAT
;ESC
                BIT     2,E
                JP      Z,RE_BOOT
                LD      D,2
                CALL    SNSMAT
;DEL
                BIT     0,E
                CALL    Z,RSETUP
;Читаем загрузочнный диск из часов
                LD      D,0EH
                CALL    RD_CLOCK
                AND     7
;Зачем ??? надо разобраться !!!
                CP      1
                JR      NZ,STAR1
;      ???
                LD      (BIOSFCB),A
                LD      (BDOSFCB),A
STAR1:
;Страница 8 (BIOS) с 4000
                LD      BC,7DC8H
                OUT     (C),C
                CALL    CTRL_SUMM
                LD      D,3CH
                CALL    RD_CLOCK
                LD      L,A
                INC     D
                CALL    RD_CLOCK
                LD      H,A
                CALL    CPHLBC
;Если контрольная сумма не совпадает идем на перезагрузку
                JP      NZ,RE_BOOT
;Страница 9 (BDOS) с 4000
                LD      BC,7DC9H
                OUT     (C),C
                CALL    CTRL_SUMM
                LD      D,3EH
                CALL    RD_CLOCK
                LD      L,A
                INC     D
                CALL    RD_CLOCK
                LD      H,A
                CALL    CPHLBC
;Если контрольная сумма не совпадает идем на перезагрузку
                JP      NZ,RE_BOOT
;Страница 8 (BIOS) с 0000
                LD      BC,7CC8H
                OUT     (C),C
;Выходим на BIOS
                JP      0000H
;=======================================================================
SET_VRAM:       LD      BC,7DC0H
                OUT     (C),C
                INC     B
                INC     C
                OUT     (C),C
                RET
;
SETSCR:         CALL    DISSCR
                CALL    SET_VRAM
                LD      HL,MC6845H
                CALL    INITI1
                LD      A,(EXTPORT)
                OR      3
                LD      (EXTPORT),A
                LD      BC,0FABFH
                OUT     (C),A
                LD      BC,7FBFH
                OUT     (C),C
                XOR     A
                LD      (PAPER),A
                CALL    SET_BORDER
                LD      HL,4000H
                LD      DE,4001H
                LD      BC,7FFFH
                LD      (HL),0
                LDIR
                RET
;
DISSCR:         LD      A,(EXTPORT)
                RES     3,A
                LD      (EXTPORT),A
                LD      BC,0FABFH
                OUT     (C),A
                RET
;
ENASCR:         LD      A,(EXTPORT)
                SET     3,A
                LD      (EXTPORT),A
                LD      BC,0FABFH
                OUT     (C),A
                RET
;
CLOCK_TAB:      DB      0       ; BOOT DISC, RAM DISC
                DS      8,0     ; RAM DISC MAP
                DB      1       ; MOUSE
                DB      0       ; SCREEN, PRINTER
                DB      3       ; COLORS
                DB      28H     ; KEYBOARD
                DB      88H     ; SOUNDS
                DB      4CH     ; RS-232
                DB      2       ; RS RATE
;
CLOCK_INIT:     LD      DE,0A26H
                CALL    WR_CLOCK
                LD      DE,0B8EH
                CALL    WR_CLOCK
                LD      DE,0
                LD      B,6
CLOCK_INIT1:    CALL    WR_CLOCK
                INC     D
                DJNZ    CLOCK_INIT1
                LD      E,1
                CALL    WR_CLOCK
                LD      DE,070EH
                CALL    WR_CLOCK
                LD      DE,080AH
                CALL    WR_CLOCK
                LD      DE,0900H+13
                CALL    WR_CLOCK
                LD      DE,0B0EH
                CALL    WR_CLOCK
                LD      HL,CLOCK_TAB
                LD      B,0FH
                LD      D,0EH
CLOCK_INIT2:    LD      E,(HL)
                CALL    WR_CLOCK
                INC     HL
                INC     D
                DJNZ    CLOCK_INIT2
                RET
;================== Холодная перезагрузка ========================
RE_BOOT:
;Вывод заставки
                CALL    SETSCR
                LD      HL,4000H+4*0A0H+22H
                EXX
                LD      BC,7DC0H
                EXX
                LD      IX,DATA
                LD      DE,00A0H
                LD      B,36H
M0:             PUSH    HL
                PUSH    HL
                LD      C,5DH
M2:             CALL    WWOD
                LD      (HL),A
                INC     HL
                DEC     C
                JR      NZ,M2
                POP     HL
                EXX
                LD      A,0C1H
                OUT     (C),A
                EXX
                LD      C,5DH
M3:             CALL    WWOD
                LD      (HL),A
                INC     HL
                DEC     C
                JR      NZ,M3
                POP     HL
                EXX
                OUT     (C),C
                EXX
                CALL    NEXT_LINE
                DJNZ    M0
                LD      HL,PALTAB
                CALL    PAL_SET
                CALL    ENASCR
;Собственно загрузка
BOOT:
;Включаем страницу 9 (BDOS) c 4000
                LD      BC,7DC9H
                OUT     (C),C
                LD      HL,4000H
                LD      (FILEST),HL
                LD      HL,BDOSFCB
                LD      DE,FCBBUF
                LD      BC,20
                LDIR
;Загрузка BDOS.SYS
                CALL    INPFILE
                JP      C,ERROR
;Подсчет контрольной суммы BDOS и запись в часы
                CALL    CTRL_SUMM
                LD      D,3EH
                LD      E,C
                CALL    WR_CLOCK
                INC     D
                LD      E,B
                CALL    WR_CLOCK
;Включаем страницу 8 (BIOS) c 4000
                LD      BC,7DC8H
                OUT     (C),C
                LD      HL,4000H
                LD      (FILEST),HL
                LD      HL,BIOSFCB
                LD      DE,FCBBUF
                LD      BC,20
                LDIR
;Загрузка BIOS.SYS
                CALL    INPFILE
                JP      C,ERROR
;Подсчет контрольной суммы BIOS и запись в часы
                CALL    CTRL_SUMM
                LD      D,3CH
                LD      E,C
                CALL    WR_CLOCK
                INC     D
                LD      E,B
                CALL    WR_CLOCK
;Включаем страницу 8 (BIOS) с 0000
                LD      BC,7CC8H
                OUT     (C),C
                JP      0000
;=== Обработка дисковых ошибок ===
ERROR:          LD      A,7
                CALL    SET_INK
                CALL    SET_VRAM
;Вывод сообщения об ошибке
                LD      HL,0718H
                LD      DE,ERR_MESS
                CALL    MESSAGE
;Ожидание нажатия любой клавиши
                CALL    KEY
;Очистка сообщения об ошибке
                LD      HL,0718H
                LD      B,32
                XOR     A
ERROR1:         CALL    SYMBOL
                INC     H
                DJNZ    ERROR1
;Повторяем перезагрузку
                JP      BOOT
;================ Конец холодной перезагрузки =========================
;**********************************************************************
PAL_SET:        LD      BC,1000H
M4:             LD      A,C
                LD      E,(HL)
                CALL    SET_PAL
                INC     C
                INC     HL
                DJNZ    M4
                RET
;
PALINITB1:      DB      00H,15H,2AH,3FH,10H,20H,30H,22H ; Палитра 16 цветов
                DB      04H,08H,0CH,3EH,01H,02H,03H,0BH
;
SET_PAL:        PUSH    BC
                AND     0FH
                LD      B,7FH
                OUT     (C),A
                LD      A,E
                AND     3FH
                OR      40H
                OUT     (C),A
                POP     BC
                RET
;
PALTAB:         DB      00H,01H,02H,03H,17H,10H,20H,30H
                DB      35H,04H,08H,0CH,1DH,2AH,0BH,00H
;
WWOD:           LD      A,(FLAG)
                AND     A
                JR      NZ,WWOD1
                LD      A,(IX+00)
                INC     IX
                CP      0FFH
                RET     NZ
                LD      A,(IX+00)
                INC     IX
                LD      (KOD),A
                LD      A,(IX+00)
                INC     IX
                LD      (COUNT),A
                LD      A,0FFH
                LD      (FLAG),A
WWOD1:          LD      A,(COUNT)
                DEC     A
                LD      (COUNT),A
                JR      Z,WWOD2
                LD      A,(KOD)
                RET
;
WWOD2:          XOR     A
                LD      (FLAG),A
                LD      A,(KOD)
                RET
;
NEXT_LINE:      LD      A,H
                ADD     A,10H
                CP      80H
                JR      NC,NEXT1
                LD      H,A
                RET
;
NEXT1:          SUB     40H
                LD      H,A
                ADD     HL,DE
                RET
;=============================================================
;Подсчет контрольной суммы
CTRL_SUMM:      LD      HL,4000H
                LD      BC,0
                LD      D,H
                LD      E,L
C_SUMM:         LD      A,C
                ADD     A,(HL)
                LD      C,A
                LD      A,B
                ADC     A,0
                LD      B,A
                RL      C
                RL      B
                JR      NC,C_SUMM1
                LD      A,C
                XOR     2
                LD      C,A
C_SUMM1:        LD      B,A
                INC     HL
                DEC     DE
                LD      A,D
                OR      E
                JR      NZ,C_SUMM
                RET
;Сравнение HL и DE
CPHLDE:         LD      A,H
                CP      D
                RET     NZ
                LD      A,L
                CP      E
                RET
;Сравнение HL и BC
CPHLBC:         LD      A,H
                CP      B
                RET     NZ
                LD      A,L
                CP      C
                RET
;============= Работа с регистрами =================================
;Запись блока в 16 регистров MC6845
INITI1:         LD      B,10H
                LD      D,0
INITI2:         LD      E,(HL)
                CALL    WR_CRT
                INC     HL
                INC     D
                DJNZ    INITI2
                RET
;Данные для MC6845
MC6845H:        DEFB    6BH,50H,51H,8EH,26H,00H,19H,1EH
                DEFB    00H,07H,00H,00H,00H,00H,00H,00H
;Запись в регистр MC6845
WR_CRT:         PUSH    BC
                LD      B,0BCH
                OUT     (C),D
                INC     B
                OUT     (C),E
                POP     BC
                RET
;Запись в таймер
WR_TIMER:       DI
                PUSH    BC
                LD      B,0F6H
                IN      C,(C)
                PUSH    BC
                LD      B,0F4H
                OUT     (C),E
                LD      A,D
                AND     3
                LD      BC,0FABCH
                OR      C
                LD      C,A
                LD      A,(EXTPORT)
                SET     4,A
                OUT     (C),A
                RES     4,A
                OUT     (C),A
                POP     BC
                OUT     (C),C
                POP     BC
                RET
;Запись в часы
WR_CLOCK:       DI
                PUSH    BC
                LD      A,(EXTPORT)
                SET     5,A
                LD      BC,0FABFH
                OUT     (C),A
                LD      B,0F4H
                OUT     (C),D
                LD      BC,0F602H
                OUT     (C),C
                LD      C,0
                OUT     (C),C
                LD      B,0F4H
                OUT     (C),E
                LD      BC,0F604H
                OUT     (C),C
                LD      C,0
                OUT     (C),C
                RES     5,A
                LD      BC,0FABFH
                OUT     (C),A
                POP     BC
                RET
;Чтение из часов
RD_CLOCK:       DI
                PUSH    BC
                LD      A,(EXTPORT)
                SET     5,A
                LD      BC,0FABFH
                OUT     (C),A
                LD      B,0F4H
                OUT     (C),D
                LD      BC,0F602H
                OUT     (C),C
                LD      C,0
                OUT     (C),C
                LD      BC,0F792H
                OUT     (C),C
                LD      BC,0F605H
                OUT     (C),C
                LD      B,0F4H
                IN      E,(C)
                LD      BC,0F600H
                OUT     (C),C
                LD      BC,0F782H
                OUT     (C),C
                RES     5,A
                LD      BC,0FABFH
                OUT     (C),A
                LD      A,E
                POP     BC
                RET
;============== Вывод на экран текста ==============================
MESSAGE:        LD      A,(DE)
                AND     A
                RET     Z
                CALL    SYMBOL
                INC     H
                INC     DE
                JR      MESSAGE
;
SYMBOL:         PUSH    HL
                PUSH    DE
                PUSH    BC
                PUSH    AF
                CALL    SYMBOL2
                POP     AF
                POP     BC
                POP     DE
                POP     HL
                RET
;
;================ Выводит символ в текущую позицию из [A] ======================
;
SYMBOL2:        PUSH    HL
                LD      L,A
                LD      H,00
                ADD     HL,HL
                ADD     HL,HL
                ADD     HL,HL
                LD      DE,ALEST
                ADD     HL,DE
                LD      DE,BUFSYM1      ; Буфер для раскрутки из PGT (8 байт)
                LD      BC,8
                LDIR
                LD      DE,BUFSYM2      ; Буфер раскрутки для вывода (32 байта)
                CALL    SYM0H
                CALL    SYM0H
                CALL    SYM0H
                CALL    SYM0H
                POP     HL
                CALL    VRAMADR
                LD      DE,BUFSYM2
                CALL    WYWOD
                INC     HL
                CALL    WYWOD
                INC     HL
                CALL    WYWOD
                INC     HL
WYWOD:          LD      B,4
                PUSH    HL
WYWOD5:         LD      A,(DE)
                LD      (HL),A
                INC     DE
                SET     7,H
                RES     6,H
                LD      A,(DE)
                LD      (HL),A
                INC     DE
                RES     7,H
                SET     6,H
                LD      A,H
                ADD     A,10H
                LD      H,A
                DJNZ    WYWOD5
                POP     HL
                RET
;
; Раскрутка для вывода на экран 16 цветов
;
SYM0H:          LD      HL,BUFSYM1
                LD      B,8
SYM0H1:         PUSH    BC
                CALL    SYM1H
                POP     BC
                DJNZ    SYM0H1
                RET
;
SYM1H:          LD      A,(PAPER)
                LD      B,A
                LD      A,(INK)
                XOR     B
                AND     0AAH
                LD      C,A
                LD      A,B
                RL      (HL)
                JR      NC,SYM2H
                XOR     C
SYM2H:          RRC     C
                RL      (HL)
                JR      NC,SYM3H
                XOR     C
SYM3H:          RRC     C
                LD      (DE),A
                INC     DE
                INC     HL
                RET
;
;================ Преобразует координаты курсора в адрес VRAM ==================
;
;Вход:  [HL]= позиция курсора
;Выход: [HL]= адрес VRAM
;
VRAMADR:        PUSH    DE
                LD      E,H
                LD      D,0
                LD      H,D
                PUSH    DE
                LD      E,L
                ADD     HL,HL
                ADD     HL,HL
                ADD     HL,DE
                ADD     HL,HL
                ADD     HL,HL
                ADD     HL,HL
                ADD     HL,HL
                ADD     HL,HL
                POP     DE
                EX      DE,HL
                ADD     HL,HL
                ADD     HL,HL
                ADD     HL,DE
                LD      A,H
                AND     0FH
                OR      40H
                LD      H,A
                POP     DE
                RET
;
SET_PAPER:      LD      HL,PAPER
                JR      INK0
;
SET_INK:        LD      HL,INK
INK0:           LD      E,A
INK1:           XOR     A
                BIT     0,E
                JR      Z,INK4
                OR      0C0H
INK4:           BIT     1,E
                JR      Z,INK5
                OR      0CH
INK5:           BIT     2,E
                JR      Z,INK6
                OR      30H
INK6:           BIT     3,E
                JR      Z,INK7
                OR      3
INK7:           LD      (HL),A
                RET
;
;================== Установка цвета бордюра ====================================
;
SET_BORDER:     PUSH    BC
                LD      BC,7F10H
                OUT     (C),C
                AND     3FH
                OR      40H
                OUT     (C),A
                POP     BC
                RET
;==============================================================
;Ждем нажатия на клавишу
KEY:            LD      D,0
KEY1:           CALL    SNSMAT
                LD      A,E
                CP      0FFH
                RET     NZ
                INC     D
                LD      A,D
                CP      10
                JR      NZ,KEY1
                JR      KEY
;Чтение строки клавиатурной матрицы
SNSMAT:         LD      BC,0F40EH
                OUT     (C),C
                LD      B,0F6H
                IN      A,(C)
                AND     30H
                LD      C,A
                OR      0C0H
                OUT     (C),A
                OUT     (C),C
                INC     B
                LD      A,92H
                OUT     (C),A
                LD      B,0F6H
                LD      A,C
                OR      D
                OR      40H
                OUT     (C),A
                LD      B,0F4H
                IN      E,(C)
                LD      B,0F7H
                LD      A,82H
                OUT     (C),A
                DEC     B
                OUT     (C),C
                RET
;***************************************************************
;============ Здесь начинается работа с файлами ================
INPFILE:        LD      HL,FCBBUF+12
                LD      DE,FCBBUF+13
                LD      (HL),00
                LD      BC,30
                LDIR
                CALL    OPENFILE
                AND     A
                SCF
                RET     NZ
                LD      IX,FCBBUF
                LD      E,(IX+1DH)
                LD      D,(IX+1EH)
                LD      HL,(FILEST)
                ADD     HL,DE
                DEC     HL
                LD      (FILEEND),HL
                CALL    READFAT
                RET     C
                LD      HL,(FILEST)
FILEINP4:       LD      DE,(FCBBUF+1BH)
                LD      A,E
                CP      0FFH
                JR      NZ,FILEINP1
                LD      A,D
                CP      0FH
                RET     Z
FILEINP1:       PUSH    HL
                CALL    CLUSTER
                LD      A,(FCBBUF)
                AND     A
                LD      BC,02F9H
                LD      HL,DISKBUF+600H
                CALL    DSKIO
                POP     HL
                RET     C
                LD      BC,400H
                LD      DE,DISKBUF+600H
FILEINP3:       LD      A,(DE)
                LD      (HL),A
                PUSH    DE
                LD      DE,(FILEEND)
                CALL    CPHLDE
                POP     DE
                RET     Z
                INC     HL
                INC     DE
                DEC     BC
                LD      A,B
                OR      C
                JR      NZ,FILEINP3
                PUSH    HL
                LD      DE,(FCBBUF+1BH)
                CALL    FATADR
                LD      (FCBBUF+1BH),DE
                POP     HL
                JR      FILEINP4
;
OPENERR:        POP     HL
                POP     DE
                LD      A,1
                RET
;
;OPEN   Возвращает      [A]=00 O.K. ,[A] ERROR ,[A] Not found
;
OPENFILE:       LD      DE,7
OPEN4:          PUSH    DE
                AND     A
                LD      A,(FCBBUF)
                LD      BC,01F9H
                LD      HL,DISKBUF
                PUSH    HL
                CALL    DSKIO
                JR      C,OPENERR
                POP     HL
                LD      DE,FCBBUF+1
                LD      C,16
OPEN3:          LD      B,11
                PUSH    DE
                PUSH    HL
OPEN2:          LD      A,(DE)
                CP      (HL)
                JR      NZ,OPEN1
                INC     HL
                INC     DE
                DJNZ    OPEN2
                POP     HL
                POP     DE
                LD      BC,32
                LDIR
                POP     DE
                XOR     A
                RET
;
OPEN1:          POP     HL
                LD      DE,32
                ADD     HL,DE
                POP     DE
                DEC     C
                JR      NZ,OPEN3
                POP     DE
                INC     E
                LD      A,E
                CP      14
                JR      NZ,OPEN4
                LD      A,2
                RET
;
READFAT:        LD      A,(FCBBUF)
                AND     A
                LD      BC,03F9H
                LD      DE,1
                LD      HL,DISKBUF
                JP      DSKIO
;
;FATADR:        [DE]=номер кластера ,в [DE] выдает адрес след. кластера
;
FATADR:         LD      H,D
                LD      L,E
                LD      A,L
                SRL     H
                RR      L
                LD      B,H
                LD      C,L
                ADD     HL,HL
                ADD     HL,BC
                LD      DE,DISKBUF
                ADD     HL,DE
                AND     01
                JR      NZ,FATADR1
                LD      E,(HL)
                INC     HL
                LD      A,(HL)
                AND     0FH
                LD      D,A
                RET
;
FATADR1:        INC     HL
                LD      E,(HL)
                INC     HL
                LD      D,(HL)
                SRL     D
                RR      E
                SRL     D
                RR      E
                SRL     D
                RR      E
                SRL     D
                RR      E
                RET
;
;CLUSTER:       Выдает в [DE] номер сектора кластера [DE]
;
CLUSTER:        EX      DE,HL
                ADD     HL,HL
                LD      BC,10
                ADD     HL,BC
                EX      DE,HL
                RET
;
;======================================================================
;Low Level Disk Operations
DSKIO:          PUSH    AF
                CALL    FDCRD
MOTOFF:         POP     DE
MOTFOF:         PUSH    AF
                LD      C,03CH
                JR      NC,READOPR
                LD      C,000H
READOPR:        LD      (IX+000H),078H
                LD      A,D
                AND     A
                JR      NZ,CHGDB
                LD      (IX+001H),C
                POP     AF
                RET
;
CHGDB:          LD      (IX+002H),C
                POP     AF
                RET
;===========================================================================
;Low level READ operation    A=#DRIVE, B=N, C=MEDIA, DE=SECTOR, HL=DTA
;
FDCRD:          CALL    DRVON                   ;Motor on, sector count, head seek
                RET     C
;
READ1:          CALL    RD1SEC                  ;Read sector on FDC level
                RET     C
READ2:          DEC     B
                RET     Z
                CALL    NXTSEC                  ;count next sector, track
                JP      READ1
;
RD1SEC:         LD      E,015H                  ;Number of repeats
RPTSEC:         PUSH    HL
                PUSH    DE
                PUSH    BC
                LD      BC,0FB7EH                       ;Status Reg
                LD      A,66H                   ;Command READ DATA MFM
                CALL    RWCMD
                DI
                CALL    CMDOUT                  ;Out DTL
                LD      DE,0                    ;Timeout delay
TWAIT:          IN      A,(C)
                JP      M,NTWAIT
                DEC     E
                JR      NZ,TWAIT
                DEC     D
                JR      NZ,TWAIT
                DEC     B
                XOR     A
                OUT     (C),A                   ;Motor bit flip
                EX      (SP),HL                 ;Terminate FDC command
                EX      (SP),HL
                INC     A
                OUT     (C),A
                INC     B
                JR      RDEXIT
;
DATAIN:         INC     C                       ;Data read loop
                IN      A,(C)
                LD      (HL),A
                DEC     C
                INC     HL
RDENT:          IN      A,(C)
                JP      P,RDENT                 ;No RQM
NTWAIT:         AND     20H
                JR      NZ,DATAIN               ;NDM
;
RDEXIT:         POP     BC
                POP     DE
                POP     HL
                CALL    RESGET
                LD      A,(RES_ST0)
                AND     8
                JR      NZ,NREADY               ;Not ready
                LD      A,(RES_ST1)
                AND     35H
                RET     Z                       ;Normal termination
                PUSH    AF
                CALL    SEEKR
                POP     AF
                DEC     E
                JR      NZ,RPTSEC
                SCF
                LD      E,A
                BIT     2,E
                LD      A,8                     ;Sector not found
                RET     NZ
                BIT     5,E
                LD      A,4                     ;CRC Error
                RET     NZ
                BIT     0,E
                LD      A,2                     ;Disk not formatted
                RET     NZ
                LD      A,0CH                   ;Data overflow
                RET
;
NREADY:         LD      A,2                     ;Not ready
                SCF
                RET
;===========================================================================
;Select & motor on  A=#DRIVE, B=N, C=MEDIA, DE=SECTOR, HL=DTA
;Return: D=|8/9|1/2|***|***|***|Sid|***|Drv|, E=Sect/Trk HL=DTA, B=N, C=Track
;External subroutines:  GETWRK,INSERT,DIVREM
;Work area:  RSECTOR - Sector register value
;            RTRACK  - Track register value
;            RDRIVE  - Drive & Side select value
;
DRVON:          PUSH    AF
                PUSH    BC
                PUSH    HL
                CALL    GETWRK  ;IX=WRK
                POP     HL
                POP     BC
                POP     AF
                CP      002H
                JR      C,GODRV
EREXIT:         LD      A,00CH  ;Error: Bad drive name
                SCF
                RET
;
GODRV:          PUSH    AF
                LD      A,C
                CP      0F8H
                JR      NC,GOMEDIA
                POP     AF
                JR      EREXIT  ;Error: Unsupported media type
;
GOMEDIA:        POP     AF
                PUSH    IX
                PUSH    BC
                PUSH    DE
                PUSH    AF
                LD      A,(IX+009H)     ;1/2 Hard drive
                DEC     A
                JR      NZ,HARD2
                POP     AF              ;1 Hard drive
                LD      B,000H
                PUSH    BC
                CP      (IX+006H)       ;Current log drive
                JR      Z,HARD2
                LD      (IX+006H),A
                XOR     A
                LD      BC,0FA7EH       ;Motor port
                OUT     (C),A           ;Motor off
                LD      (IX+000H),A     ;Timer off
                PUSH    HL
                CALL    INSERT
                POP     HL
HARD2:          POP     AF
                POP     DE
                POP     BC
                POP     IX
                PUSH    HL
                PUSH    AF
                PUSH    BC
                BIT     1,C
                LD      C,E
                LD      B,D
                LD      DE,00008H
                JR      NZ,TRACK8
                INC     DE              ;BC=N log sect DE=rect/trk
TRACK8:         CALL    DIVREM          ;HL=N on track  BC=N track
                LD      A,L
                INC     A
                LD      (RSECTOR),A
                LD      L,C             ;L=track
                POP     BC
                POP     AF
                LD      H,A             ;A=H=drive 0/1
                BIT     0,C
                JR      Z,SINGLE        ;single sided
                SRL     L               ;track/2
                JR      NC,SINGLE
                OR      004H            ;side bit
SINGLE:         LD      D,A             ;D=Drive control data
                LD      (RDRIVE),A
                LD      A,C             ;A=Media ID
                RRCA
                RRCA
                AND     0C0H
                OR      D               ;   sec sid
                LD      D,A             ;D=|8/9|1/2|***|***|***|Sid|***|Drv|
                DI
                PUSH    BC
                LD      BC,0FA7EH       ;Motor port
                LD      A,1
                OUT     (C),A           ;Motor on
                POP     BC
                LD      A,(IX+000H)
                AND     A
                LD      (IX+000H),0FFH  ;Timer stop
                JR      NZ,NOSTOP
                PUSH    HL
                LD      HL,00000H       ;Motor acceleration delay
ACCEL:          DEC     HL
                LD      A,L
                OR      H
                JR      NZ,ACCEL
                POP     HL
NOSTOP:         PUSH    BC
                LD      BC,0FB7EH
                LD      A,3
                CALL    CMDOUT          ;Command SET PARAMETERS
                XOR     A
                CALL    PARMOUT         ;SRT,HUT
                LD      A,1
                CALL    PARMOUT         ;HLT,ND
                POP     BC
                LD      C,L             ;C=Track
                LD      A,(IX+003H)     ;L`st active drive
                CP      H
                JR      Z,LASTDRV
                XOR     001H
                LD      (IX+003H),A     ;Active another drive
                LD      A,(RTRACK)      ;Track register value
                JR      Z,DRV_A
                LD      (IX+004H),A     ;Track on drive A
                LD      A,(IX+005H)     ;Track on drive B
                JR      DRV_B
;
DRV_A:          LD      (IX+005H),A     ;Track on drive B
                LD      A,(IX+004H)     ;Track on drive A
DRV_B:          LD      (RTRACK),A

LASTDRV:        LD      A,(RTRACK)
                CP      C               ;Head on the current track ?
                CALL    NZ,SEEKC        ;If not then seek
                POP     HL
                RET
;=================================================================
NXTSEC:         INC     H
                INC     H
                LD      A,(RSECTOR)
                INC     A
                LD      (RSECTOR),A
                BIT     7,D
                JR      NZ,MEDIAF8
                CP      00AH
                RET     C
MEDIAF8:        CP      009H
                RET     C
                LD      A,001H
                LD      (RSECTOR),A
                BIT     6,D
                JR      Z,NOCHSID
                BIT     2,D
                JR      NZ,NOCHSID
                SET     2,D
                LD      A,D
                AND     5
                LD      (RDRIVE),A
                RET
;
NOCHSID:        RES     2,D
                LD      A,D
                AND     5
                LD      (RDRIVE),A
                INC     C
                JR      SEEKC
;===========================================================
;SEEKR   - Restore head & seek to track C
;SEEKC   - Seek head to track C
;RESTORE - Restore head to track 0
;
RESTORE:        XOR     A
                LD      (RTRACK),A
                CALL    REST77
REST77:         PUSH    BC
                LD      BC,0FB7EH
                LD      A,7                     ;RESTORE command
                CALL    CMDOUT
                LD      A,(RDRIVE)              ;Drive selector
                CALL    CMDOUT
                POP     BC
;Wait for SEEK END
WSTOP:          PUSH    BC
                LD      BC,0F5FFH               ;8255 PORT B
WSTP1:          IN      A,(C)
                BIT     1,A                     ;DISKINT
                JR      Z,WSTP1         ;Wait for seek end
                LD      BC,0FB7EH
                LD      A,8
                CALL    CMDOUT
                CALL    CMDOUT
                CALL    CMDOUT
                LD      (RTRACK),A
                POP     BC
                OR      A                       ;Clear C flag
                RET

SEEKR:          BIT     0,E
                RET     NZ
                CALL    RESTORE
SEEKC:          PUSH    BC
                LD      A,C
                LD      (RTRACK),A
                PUSH    AF
                LD      BC,0FB7EH
                LD      A,0FH                   ;SEEK command
                CALL    CMDOUT
                LD      A,(RDRIVE)              ;Drive selector
                CALL    CMDOUT
                POP     AF                      ;Destination track
                CALL    CMDOUT
                POP     BC
                JR      WSTOP
;===========================================================
;Special subroutines for I8272
;Not in original MSX DISK BIOS
;Work Area: PARMTAB,RES_ST0
;
PARMOUT:        CALL    PARMGET
CMDOUT:         PUSH    AF
                PUSH    AF
NORQM:          IN      A,(C)
                ADD     A,A
                JR      NC,NORQM
                ADD     A,A
                JR      NC,CMDOUT1
                POP     AF
                POP     AF
                INC     C
                IN      A,(C)
                DEC     C
                RET
;
CMDOUT1:        POP     AF
                INC     C
                OUT     (C),A
                DEC     C
                EX      (SP),HL
                EX      (SP),HL
                POP     AF
                RET
;
PARMGET:        PUSH    HL
                PUSH    DE
                LD      HL,PARM_A
                LD      D,0
                LD      E,A
                ADD     HL,DE
                POP     DE
                LD      A,(HL)
                POP     HL
                RET
;
RWCMD:          CALL    CMDOUT
                LD      A,(RDRIVE)              ;Drive & Side selector
                PUSH    AF
                CALL    CMDOUT
                LD      A,(RTRACK)              ;Track ID
                CALL    CMDOUT
                POP     AF
                RRCA
                RRCA
                AND     1                       ;Head ID
                CALL    CMDOUT
                LD      A,(RSECTOR)             ;Sector ID
                PUSH    AF
                CALL    CMDOUT
                LD      A,3                     ;N
                CALL    PARMOUT
                POP     AF                      ;EOT
                CALL    CMDOUT
                LD      A,5                     ;GPL
                CALL    PARMOUT
                LD      A,6                     ;DTL
                JR      PARMGET
;
RESGET:         PUSH    BC
                PUSH    DE
                PUSH    HL
                LD      E,7
                LD      HL,RES_ST0
                LD      BC,0FB7EH
RESLOOP:        CALL    CMDOUT
                LD      (HL),A
                INC     HL
                DEC     E
                JR      NZ,RESLOOP
                POP     HL
                POP     DE
                POP     BC
                RET

FREST:          CALL    RESTORE
                PUSH    BC
                LD      BC,0FB7EH
                LD      A,4
                CALL    CMDOUT
                LD      A,(RDRIVE)
                CALL    CMDOUT
                CALL    CMDOUT
                POP     BC
                AND     10H
                RET
;
;=====================================================================
;
GETWRK:         LD      IX,FDDWRK
INSERT:         RET
;
DIVREM:         LD      HL,00H
A4932:          LD      A,B
                LD      B,010H
                RL      C
                RLA
A493B:          RL      L
                RL      H
                JR      C,A494E
                SBC     HL,DE
                JR      NC,A4946
                ADD     HL,DE
A4946:          CCF
A4947:          RL      C
                RLA
                DJNZ    A493B
                LD      B,A
                RET
;
A494E:          OR      A
                SBC     HL,DE
                JR      A4947
;****************************************************************
;===============================================================
;       Aleste 520 EX setup
;       ROM version
;       (c) Patisonic, 1993
;       Last change 27/09/93
;****************************************************************
FLDCOL  EQU     0
WRDCOL  EQU     15
TITCOL  EQU     11
KEYCOL  EQU     10
MAICOL  EQU     3
;
NORCOL  MACRO
        LD      A,FLDCOL
        CALL    SET_PAPER
        LD      A,WRDCOL
        CALL    SET_INK
        ENDM
;
SELCOL  MACRO
        LD      A,3
        CALL    SET_PAPER
        LD      A,0
        CALL    SET_INK
        ENDM
;
RSETUP:
        LD      DE,0A20H        ;Запустим часы
        CALL    WR_CLOCK
        LD      DE,0B06H
        CALL    WR_CLOCK
;
        LD      D,0             ;Читаем 60 байт из часов
        LD      B,60
        LD      HL,SETUP
CLKLOOP:CALL    RD_CLOCK
        LD      (HL),A
        INC     D
        INC     HL
        DJNZ    CLKLOOP
;
        LD      BC,7DC0H        ;Сколько памяти
        IN      A,(C)
        PUSH    AF
        OUT     (C),C
        IN      A,(C)
        AND     0F0H
        CPL
        SUB     8
        LD      (LIMIT),A
        POP     AF
        OUT     (C),A
;
RESTART:CALL    SETSCR          ;Чистим экран
        LD      A,TITCOL
        CALL    SET_INK
        LD      HL,0800H        ;X=8, Y=0
        LD      DE,TITLE        ;заголовок
        CALL    MESSAGE
;
        LD      A,MAICOL
        CALL    SET_INK
        LD      IX,MOVTAB1
        LD      HL,SETUP+17H
        BIT     4,(HL)          ;Язык
        LD      DE,PICT2        ;Русское окно
        LD      (IX+0),LOW LANG_R
        LD      (IX+1),HIGH LANG_R
        JR      NZ,RUSSN
        LD      DE,PICT1        ;Английское окно
        LD      (IX+0),LOW LANG_E
        LD      (IX+1),HIGH LANG_E
RUSSN:  CALL    OUTSCR          ;ВЫВОДмМ КАРТмНКУ
        LD      A,KEYCOL
        CALL    SET_INK
        LD      DE,T_ESC
        LD      HL,0213H
        CALL    MESSAGE
        LD      DE,T_F1
        LD      HL,0214H
        CALL    MESSAGE
        LD      DE,T_F5
        LD      HL,0215H
        CALL    MESSAGE
        LD      DE,T_MOVE
        LD      HL,0216H
        CALL    MESSAGE
        LD      DE,T_CHG
        LD      HL,0217H
        CALL    MESSAGE
        LD      A,(SETUP+17H)
        BIT     4,A
        LD      DE,T_SPC
        LD      HL,0E17H
        JR      Z,ENGSPC
        LD      DE,T_PRB
        INC     H
ENGSPC: CALL    MESSAGE
        NORCOL
        CALL    UPDATE
        LD      HL,PALINITB1
        CALL    PAL_SET
        CALL    ENASCR
;
START:  SELCOL
        LD      E,(IX+0)
        LD      D,(IX+1)
        LD      L,(IX+2)
        LD      H,(IX+3)
        CALL    MESSAGE
        NORCOL
START1: CALL    CLOCK
        CALL    REFCOL
        LD      C,060H
DELAY1: LD      B,0FFH
DELAY:  DJNZ    DELAY
        DEC     C
        JR      NZ,DELAY1
STARTC: LD      D,8
        CALL    SNSMAT
        BIT     2,E             ;ESC
        RET     Z               ;Выход без записи
        LD      D,10
        CALL    SNSMAT
        BIT     0,E             ;F1
        JR      Z,SAVEXT
        LD      D,1
        CALL    SNSMAT
        BIT     0,E             ;LEFT
        JP      Z,MOVELF
        LD      D,0
        CALL    SNSMAT
        BIT     1,E             ;RIGHT
        JR      Z,MOVERT
        BIT     0,E             ;UP
        JR      Z,MOVEUP
        BIT     2,E             ;DOWN
        JR      Z,MOVEDN
        LD      D,5
        CALL    SNSMAT
        BIT     7,E             ;SPACE
        JP      Z,CHANGE
        JR      START1
;
SAVEXT: LD      HL,SETUP+0EH    ;Пишем в часы
        LD      B,60-0EH
        LD      D,0EH
SVLOOP: LD      E,(HL)
        CALL    WR_CLOCK
        INC     HL
        INC     D
        DJNZ    SVLOOP
        RET                     ;Выход с записью

MOVEUP: LD      D,2
        CALL    SNSMAT
        BIT     5,E
        JR      Z,CHANGE
        CALL    ERASE
        LD      L,(IX+0CH)
        LD      H,(IX+0DH)
        PUSH    HL
        POP     IX
        JP      START
;
MOVEDN: LD      D,2
        CALL    SNSMAT
        BIT     5,E
        JR      Z,CHGDWN
        CALL    ERASE
        LD      L,(IX+0AH)
        LD      H,(IX+0BH)
        PUSH    HL
        POP     IX
        JP      START
;
MOVERT: CALL    ERASE
        LD      L,(IX+06H)
        LD      H,(IX+07H)
        PUSH    HL
        POP     IX
        JP      START
;
MOVELF: CALL    ERASE
        LD      L,(IX+08H)
        LD      H,(IX+09H)
        PUSH    HL
        POP     IX
        JP      START
;
CHANGE: LD      L,(IX+4)
        LD      H,(IX+5)
        JP      (HL)
;
CHGDWN: LD      L,(IX+4)
        LD      H,(IX+5)
        INC     HL
        INC     HL
        JP      (HL)
;
LNG_SET:NOP
        NOP
        LD      A,(SETUP+17H)
        XOR     10H
        LD      (SETUP+17H),A
        JP      RESTART
;
DAY_SET:JR      DAYSU
        LD      A,(SETUP+7)
        DEC     A
        JR      NZ,DAY_C
        LD      A,31
        JR      DAY_C
DAYSU:  LD      A,(SETUP+7)
        INC     A
        CP      32
        JR      C,DAY_C
        LD      A,1
DAY_C:  LD      (SETUP+7),A
DAY_WR: LD      D,7
CLK_WR: LD      E,A
        CALL    WR_CLOCK
        CALL    CLKOUT
        JP      START
;
MON_SET:JR      MON_SU
        LD      A,(SETUP+8)
        DEC     A
        JR      NZ,MON_C
        LD      A,12
        JR      MON_C
MON_SU: LD      A,(SETUP+8)
        INC     A
        CP      13
        JR      C,MON_C
        LD      A,1
MON_C:  LD      (SETUP+8),A
MON_WR: LD      D,8
        JR      CLK_WR
;
YER_SET:JR      YER_SU
        LD      A,(SETUP+9)
        DEC     A
        JR      YER_SD
YER_SU: LD      A,(SETUP+9)
        INC     A
YER_SD: LD      (SETUP+9),A
        LD      D,9
        JR      CLK_WR
;
HRS_SET:JR      HRS_SU
        LD      A,(SETUP+4)
        DEC     A
        JP      P,HRS_C
        LD      A,23
        JR      HRS_C
HRS_SU: LD      A,(SETUP+4)
        INC     A
        CP      24
        JR      C,HRS_C
        XOR     A
HRS_C:  LD      (SETUP+4),A
        LD      D,4
        JR      CLK_WR
;
MIN_SET:JR      MIN_SU
        LD      A,(SETUP+2)
        DEC     A
        JP      P,MIN_C
        LD      A,59
        JR      MIN_C
MIN_SU: LD      A,(SETUP+2)
        INC     A
        CP      60
        JR      C,MIN_C
        XOR     A
MIN_C:  LD      (SETUP+2),A
        LD      D,2
        JR      CLK_WR
;
SEC_SET:NOP
        NOP
        XOR     A
        LD      (SETUP),A
        LD      D,A
        JP      CLK_WR
;
DRV_SET:JR      DRV_SU
        LD      A,(SETUP+0EH)
        LD      C,A
        AND     8
        LD      B,A
        LD      A,C
        DEC     A
        JR      DRV_SD
DRV_SU: LD      A,(SETUP+0EH)
        LD      C,A
        AND     8
        LD      B,A
        LD      A,C
        INC     A
DRV_SD: AND     7
        OR      B
        LD      (SETUP+0EH),A
        AND     7
        ADD     A,"A"
        LD      (DRV+1),A
        JP      START
;
RMD_SET:JR      RMD_SU
        LD      A,(RMDPAG)
        DEC     A
        JP      P,RMD_C
        LD      A,(LIMIT)
        DEC     A
        JR      RMD_C
RMD_SU: LD      A,(RMDPAG)
        INC     A
        LD      HL,LIMIT
        CP      (HL)
        JR      C,RMD_C
        XOR     A
RMD_C:  LD      (RMDPAG),A
        LD      HL,SETUP+0EH
        SET     3,(HL)
        JR      NZ,RMD_ON
        RES     3,(HL)
        JR      ENDFIL
RMD_ON: LD      HL,SETUP+16H
        LD      A,(LIMIT)
        LD      C,8
        ADD     A,C
        CP      3FH     ;1024K
        JR      Z,RAM1024
        LD      C,4
        LD      E,C
        CP      1FH
        JR      Z,RAM512        ;512K
        LD      C,2
        LD      E,6             ;256K
RAM512: LD      (HL),0
        DEC     HL
        DEC     E
        JR      NZ,RAM512
RAM1024:LD      A,(RMDPAG)
        PUSH    AF
        RRCA
        RRCA
        RRCA
        AND     7
        JR      Z,FILZR1
        LD      B,A
LPFIL1: LD      (HL),0FFH
        DEC     HL
        DEC     C
        DJNZ    LPFIL1
FILZR1: POP     AF
        AND     7
        JR      Z,FILZR
        LD      B,A
        XOR     A
LPFIL2: SCF
        RRA
        DJNZ    LPFIL2
FILZR:  LD      (HL),A
        DEC     HL
        DEC     C
        JR      Z,ENDFIL
LPFIL3: LD      (HL),0
        DEC     HL
        DEC     C
        JR      NZ,LPFIL3
ENDFIL: CALL    REFRMD
        JP      START
;
DIS_SET:NOP
        NOP
        LD      A,(SETUP+17H)
        XOR     20H
        LD      (SETUP+17H),A
        CALL    REFDSP
SETIX:  LD      (IX+0),L
        LD      (IX+1),H
        JP      START
;
MOD_SET:JR      MOD_SU
        LD      A,(SETUP+18H)
        PUSH    AF
        AND     0FCH
        LD      C,A
        POP     AF
        DEC     A
        JR      MOD_SD
MOD_SU: LD      A,(SETUP+18H)
        PUSH    AF
        AND     0FCH
        LD      C,A
        POP     AF
        INC     A
MOD_SD: AND     3
        OR      C
        LD      (SETUP+18H),A
        CALL    REFMOD
        JR      SETIX
;
TXT_SET:JR      TXT_SU
        LD      A,(SETUP+19H)
        PUSH    AF
        AND     0F0H
        LD      C,A
        POP     AF
        DEC     A
        JR      TXT_SD
TXT_SU: LD      A,(SETUP+19H)
        PUSH    AF
        AND     0F0H
        LD      C,A
        POP     AF
        INC     A
TXT_SD: AND     0FH
TXT_ST: OR      C
        LD      (SETUP+19H),A
        CALL    REFCOL
WAITSPC:LD      D,5
        CALL    SNSMAT
        BIT     7,E
        JR      Z,WAITSPC
WAITUD: LD      D,0
        CALL    SNSMAT
        LD      A,E
        CPL
        AND     5
        JR      NZ,WAITUD
        JP      STARTC
;
BCK_SET:JR      BCK_SU
        LD      A,(SETUP+19H)
        PUSH    AF
        AND     0FH
        LD      C,A
        POP     AF
        SUB     10H
        JR      BCK_SD
BCK_SU: LD      A,(SETUP+19H)
        PUSH    AF
        AND     0FH
        LD      C,A
        POP     AF
        ADD     A,10H
BCK_SD: AND     0F0H
        JR      TXT_ST
;
KBD_SET:JR      KBD_SU
        LD      A,(SETUP+1AH)
        PUSH    AF
        AND     0F0H
        LD      C,A
        POP     AF
        DEC     A
        JR      KBD_SD
KBD_SU: LD      A,(SETUP+1AH)
        PUSH    AF
        AND     0F0H
        LD      C,A
        POP     AF
        INC     A
KBD_SD: AND     0FH
KBR_ST: OR      C
        LD      (SETUP+1AH),A
        CALL    REFKBD
        JP      START
;
KBR_SET:JR      KBR_SU
        LD      A,(SETUP+1AH)
        PUSH    AF
        AND     0FH
        LD      C,A
        POP     AF
        SUB     10H
        JR      KBR_SD
KBR_SU: LD      A,(SETUP+1AH)
        PUSH    AF
        AND     0FH
        LD      C,A
        POP     AF
        ADD     A,10H
KBR_SD: AND     0F0H
        JR      KBR_ST
;
KCL_SET:NOP
        NOP
        LD      A,(SETUP+1BH)
        XOR     80H
        LD      (SETUP+1BH),A
        CALL    REFKCL
        LD      (IX+0),L
        LD      (IX+1),H
        JP      START
;
BPT_SET:JR      BPT_SU
        LD      A,(SETUP+1BH)
        PUSH    AF
        AND     0CFH
        LD      C,A
        POP     AF
        SUB     10H
        JR      BPT_SD
BPT_SU: LD      A,(SETUP+1BH)
        PUSH    AF
        AND     0CFH
        LD      C,A
        POP     AF
        ADD     A,10H
BPT_SD: AND     30H
BPV_ST: OR      C
        LD      (SETUP+1BH),A
        CALL    REFBP
        JP      START
;
BPV_SET:JR      BPV_SU
        LD      A,(SETUP+1BH)
        PUSH    AF
        AND     0F0H
        LD      C,A
        POP     AF
        DEC     A
        JR      BPV_SD
BPV_SU: LD      A,(SETUP+1BH)
        PUSH    AF
        AND     0F0H
        LD      C,A
        POP     AF
        INC     A
BPV_SD: AND     0FH
        JR      BPV_ST
;
MOU_SET:JR      MOU_SU
        LD      A,(SETUP+17H)
        PUSH    AF
        AND     0FCH
        LD      C,A
        POP     AF
        AND     3
        DEC     A
        JP      P,MOU_SD
        LD      A,2
        JR      MOU_SD
MOU_SU: LD      A,(SETUP+17H)
        PUSH    AF
        AND     0FCH
        LD      C,A
        POP     AF
        AND     3
        INC     A
        CP      3
        JR      C,MOU_SD
        XOR     A
MOU_SD: OR      C
        LD      (SETUP+17H),A
        CALL    REFMOU
        LD      (IX+0),L
        LD      (IX+1),H
        JP      START
;
PI_SET: NOP
        NOP
        LD      A,(SETUP+18H)
        XOR     10H
        LD      (SETUP+18H),A
        CALL    REFPRI
        LD      (IX+0),L
        LD      (IX+1),H
        JP      START
;
PC_SET: NOP
        NOP
        LD      A,(SETUP+18H)
        XOR     20H
        LD      (SETUP+18H),A
        CALL    REFPRC
        LD      (IX+0),L
        LD      (IX+1),H
        JP      START
;
SP_SET: NOP
        NOP
        LD      A,(SETUP+1CH)
        XOR     1
        LD      (SETUP+1CH),A
        CALL    REFSPR
        LD      (IX+0),L
        LD      (IX+1),H
        JP      START
;
BR_SET: JR      BR_SU
        LD      A,(SETUP+1DH)
        DEC     A
        JP      P,BR_SD
        LD      A,6
        JR      BR_SD
BR_SU:  LD      A,(SETUP+1DH)
        INC     A
        CP      7
        JR      C,BR_SD
        XOR     A
BR_SD:  LD      (SETUP+1DH),A
        CALL    REFBDR
        LD      (IX+0),L
        LD      (IX+1),H
        JP      START
;
BIT_SET:JR      BIT_SU
        LD      A,(SETUP+1CH)
        PUSH    AF
        AND     0F3H
        LD      C,A
        POP     AF
        SUB     4
        JR      BIT_SD
BIT_SU: LD      A,(SETUP+1CH)
        PUSH    AF
        AND     0F3H
        LD      C,A
        POP     AF
        ADD     A,4
BIT_SD: AND     0CH
BIT_ST: OR      C
        LD      (SETUP+1CH),A
        CALL    REFBIT
        JP      START
;
PA_SET: JR      PA_SU
        LD      A,(SETUP+1CH)
        PUSH    AF
        AND     0CFH
        LD      C,A
        POP     AF
        SUB     10H
        JR      PA_SD
PA_SU:  LD      A,(SETUP+1CH)
        PUSH    AF
        AND     0CFH
        LD      C,A
        POP     AF
        ADD     A,10H
PA_SD:  AND     30H
        BIT     5,A
        JR      Z,PA_NO
        SET     4,A
PA_NO:  OR      C
        LD      (SETUP+1CH),A
        CALL    REFPAR
        LD      (IX+0),L
        LD      (IX+1),H
        JP      START
;
SB_SET: JR      SB_SU
        LD      A,(SETUP+1CH)
        PUSH    AF
        AND     03FH
        LD      C,A
        POP     AF
        SUB     40H
        JR      SB_SD
SB_SU:  LD      A,(SETUP+1CH)
        PUSH    AF
        AND     03FH
        LD      C,A
        POP     AF
        ADD     A,40H
SB_SD:  AND     0C0H
        JR      NZ,SB_NO
        ADD     A,40H
SB_NO:  OR      C
        LD      (SETUP+1CH),A
        CALL    REFSBT
        LD      (IX+0),L
        LD      (IX+1),H
        JP      START
;
ERASE:  LD      E,(IX+0)
        LD      D,(IX+1)
        LD      L,(IX+2)
        LD      H,(IX+3)
        CALL    MESSAGE
        RET
;
UPDATE: LD      A,(SETUP+0EH)   ;BOOT DRIVE
        AND     7
        ADD     A,"A"
        LD      (DRV+1),A
        LD      DE,DRV
        LD      HL,2305H
        CALL    MESSAGE
;
        LD      HL,SETUP+0FH    ;RAMDISK
        XOR     A
        LD      B,8
CNLOOP2:LD      C,8
        LD      E,(HL)
CNLOOP1:RRC     E
        ADC     A,0
        DEC     C
        JR      NZ,CNLOOP1
        INC     HL
        DJNZ    CNLOOP2
        LD      (RMDPAG),A
        CALL    REFRMD
;
        LD      A,(SETUP+17H)   ;DISPLAY
        PUSH    AF
        CALL    REFDSP
        EX      DE,HL
        LD      HL,MT1DT
        LD      (HL),E
        INC     HL
        LD      (HL),D
        LD      HL,2007H
        CALL    MESSAGE
;
        POP     AF              ;MOUSE
        CALL    REFMOU
        EX      DE,HL
        LD      HL,MT1MS
        LD      (HL),E
        INC     HL
        LD      (HL),D
        LD      HL,1F0DH
        CALL    MESSAGE
;
        LD      A,(SETUP+18H)   ;MODE
        CALL    REFMOD
        EX      DE,HL
        LD      HL,MT1SM
        LD      (HL),E
        INC     HL
        LD      (HL),D
        LD      HL,1B08H
        CALL    MESSAGE
;
        LD      A,(SETUP+1AH)   ;KEYBOARD
        CALL    REFKBD
        LD      DE,KEYD
        LD      HL,180AH
        CALL    MESSAGE
;       CALL    OUTSXY
        LD      DE,KEYR
        LD      HL,230AH
        CALL    MESSAGE
;
        LD      A,(SETUP+1BH)   ;CLICK
        PUSH    AF
        CALL    REFKCL
        EX      DE,HL
        LD      HL,MT1CL
        LD      (HL),E
        INC     HL
        LD      (HL),D
        LD      HL,210BH
        CALL    MESSAGE
;
        POP     AF              ;BEEP
        CALL    REFBP
        LD      DE,BEEPT
        LD      HL,180CH
        CALL    MESSAGE
        LD      DE,BEEPV
        LD      HL,230CH
        CALL    MESSAGE
;
        LD      A,(SETUP+18H)   ;PRINTER INTERFACE
        CALL    REFPRI
        EX      DE,HL
        LD      HL,MT1PI
        LD      (HL),E
        INC     HL
        LD      (HL),D
        LD      HL,1C0EH
        CALL    MESSAGE
;
        LD      A,(SETUP+18H)   ;PRINTER CODING
        CALL    REFPRC
        EX      DE,HL
        LD      HL,MT1PC
        LD      (HL),E
        INC     HL
        LD      (HL),D
        LD      HL,1D0FH
        CALL    MESSAGE
;
        LD      A,(SETUP+1CH)   ;SERIAL PROTOCOL
        CALL    REFSPR
        EX      DE,HL
        LD      HL,MT1SP
        LD      (HL),E
        INC     HL
        LD      (HL),D
        LD      HL,0D10H
        CALL    MESSAGE
;
        LD      A,(SETUP+1DH)   ;BAUD RATE
        CALL    REFBDR
        EX      DE,HL
        LD      HL,MT1BR
        LD      (HL),E
        INC     HL
        LD      (HL),D
        LD      HL,2010H
        CALL    MESSAGE
;
        LD      A,(SETUP+1CH)   ;SERIAL BITS
        PUSH    AF
        CALL    REFBIT
        LD      DE,BITS
        LD      HL,0611H
        CALL    MESSAGE
;
        POP     AF              ;PARITY
        PUSH    AF
        CALL    REFPAR
        EX      DE,HL
        LD      HL,MT1PA
        LD      (HL),E
        INC     HL
        LD      (HL),D
        LD      HL,1211H
        CALL    MESSAGE
;
        POP     AF              ;STOP BITS
        CALL    REFSBT
        EX      DE,HL
        LD      HL,MT1SB
        LD      (HL),E
        INC     HL
        LD      (HL),D
        LD      HL,2211H
        CALL    MESSAGE
;
        JP      REFCOL
;
REFRMD: LD      A,(SETUP+0EH)
        BIT     3,A
        JR      Z,NORAMD
        LD      A,(RMDPAG)
        LD      L,A
        LD      H,0
        ADD     HL,HL
        ADD     HL,HL
        ADD     HL,HL
        ADD     HL,HL
        CALL    DECWRD
        LD      B,H
        LD      E,"K"
        JR      YRAMD
NORAMD: LD      BC," O"
        LD      A,"f"
        LD      E,A
        LD      HL,SETUP+17H
        BIT     4,(HL)
        JR      Z,YRAMD
        LD      BC,"Вы"
        LD      A,"к"
        LD      E,"л"
YRAMD:  LD      HL,RMD+1
        LD      (HL),B
        INC     HL
        LD      (HL),C
        INC     HL
        LD      (HL),A
        INC     HL
        LD      (HL),E
        LD      HL,2106H
        LD      DE,RMD
        CALL    MESSAGE
        RET

REFDSP: LD      HL,DISP_EM
        BIT     5,A
        JR      NZ,DISPM
        LD      HL,DISP_EC
DISPM:  BIT     4,A
        RET     Z
        LD      DE,16
        ADD     HL,DE
        RET
;
REFMOD: LD      HL,SMOD_0
        AND     3
        RET     Z
        LD      B,A
        LD      DE,13
MODLP0: ADD     HL,DE
        DJNZ    MODLP0
        RET
;
REFKBD: PUSH    AF
        LD      HL,KEYD+1
        CALL    REFKB1
        POP     AF
        RRCA
        RRCA
        RRCA
        RRCA
        LD      HL,KEYR+1
REFKB1: AND     0FH
        CALL    DECBYT
        LD      (HL),C
        INC     HL
        LD      (HL),A
        RET
;
REFKCL: LD      HL,SETONE
        BIT     7,A
        JR      NZ,KCLON
        LD      HL,SETOFE
KCLON:  LD      A,(SETUP+17H)
        BIT     4,A
        RET     Z
        LD      DE,14
        ADD     HL,DE
        RET
;
REFBP:  PUSH    AF
        AND     0FH
        CALL    DECBYT
        LD      HL,BEEPV+1
        LD      (HL),C
        INC     HL
        LD      (HL),A
        POP     AF
        RRCA
        RRCA
        RRCA
        RRCA
        AND     3
        ADD     A,"0"
        LD      (BEEPT+1),A
        RET
;
REFMOU: LD      HL,MOUSE
        AND     3
        JR      Z,MOUSE_R
        LD      B,A
        LD      DE,9
MOUSE_L:ADD     HL,DE
        DJNZ    MOUSE_L
MOUSE_R:LD      A,(SETUP+17H)
        BIT     4,A
        RET     Z
        LD      DE,27
        ADD     HL,DE
        RET
;
REFPRI: BIT     4,A
        LD      HL,PINT_P
        JR      Z,PRNP
        LD      HL,PINT_S
PRNP:   LD      A,(SETUP+17H)
        BIT     4,A
        RET     Z
        LD      DE,24
        ADD     HL,DE
        RET
;
REFPRC: BIT     5,A
        LD      HL,PCOD_K
        JR      Z,PRNK
        LD      HL,PCOD_A
PRNK:   LD      A,(SETUP+17H)
        BIT     4,A
        RET     Z
        LD      DE,22
        ADD     HL,DE
        RET
;
REFSPR: BIT     0,A
        LD      HL,SPRT_X
        RET     NZ
        LD      HL,SPRT_R
        RET
;
REFBDR: LD      HL,BAUD
        OR      A
        RET     Z
        LD      B,A
        LD      DE,8
BDRLP:  ADD     HL,DE
        DJNZ    BDRLP
        RET
;
REFBIT: AND     0CH
        RRCA
        RRCA
        ADD     A,"5"
        LD      (BITS+1),A
        RET
;
REFPAR: LD      HL,PARIT
        RRCA
        RRCA
        RRCA
        RRCA
        AND     3
        JR      Z,PAR_R
        LD      B,A
        LD      DE,6
PAR_L:  ADD     HL,DE
        DJNZ    PAR_L
PAR_R:  LD      A,(SETUP+17H)
        BIT     4,A
        RET     Z
        LD      DE,24
        ADD     HL,DE
        RET
;
REFSBT: LD      HL,STOP
        RLCA
        RLCA
        DEC     A
        AND     3
        RET     Z
        LD      B,A
        LD      DE,6
SBTLP:  ADD     HL,DE
        DJNZ    SBTLP
        RET
;
REFCOL: LD      A,(SETUP+19H)
        PUSH    AF
        LD      HL,1A09H
        CALL    REFSQR
        POP     AF
        LD      HL,2509H
        RRCA
        RRCA
        RRCA
        RRCA
REFSQR: PUSH    HL
        AND     0FH
        LD      E,A
        LD      A,(SETUP+18H)
        AND     3
        LD      A,E
        JP      PE,SCOL16
        AND     3
        LD      E,A
        LD      D,0
        LD      HL,SETUP+19H
        LD      A,(HL)
        AND     33H
        LD      (HL),A
        LD      HL,COLTAB
        ADD     HL,DE
        LD      A,(HL)
SCOL16: CALL    SET_PAPER
        POP     HL
        LD      A,10
        CALL    SYMBOL
        LD      A,FLDCOL
        JP      SET_PAPER
;
;Чтение даты и времени
CLOCK:  LD      D,0CH   ;Было обновление?
        CALL    RD_CLOCK
        BIT     4,A
        RET     Z
        LD      D,0BH   ;Запрет обновления
        CALL    RD_CLOCK
        OR      80H
        LD      E,A
        CALL    WR_CLOCK
;
REFRSH: LD      D,0
        LD      B,3
        LD      HL,SETUP
RCLK1:  CALL    RD_CLOCK
        LD      (HL),A
        INC     HL
        INC     HL
        INC     D
        INC     D
        DJNZ    RCLK1
        LD      D,7
        LD      B,3
        LD      HL,SETUP+7
RCLK2:  CALL    RD_CLOCK
        LD      (HL),A
        INC     HL
        INC     D
        DJNZ    RCLK2
;
        LD      D,0BH   ;Разрешение обновления
        CALL    RD_CLOCK
        AND     7FH
        LD      E,A
        CALL    WR_CLOCK
;
;Преобразование в десятичный вид
CLKOUT: LD      HL,HRS
        LD      A,(SETUP+4)     ;Часы
        CALL    DECBYT
        LD      (HL),C
        INC     HL
        LD      (HL),A
        INC     HL
        INC     HL
        LD      A,(SETUP+2)     ;Минуты
        CALL    DECBYT
        LD      (HL),C
        INC     HL
        LD      (HL),A
        INC     HL
        INC     HL
        LD      A,(SETUP+0)     ;Секунды
        CALL    DECBYT
        LD      (HL),C
        INC     HL
        LD      (HL),A
        INC     HL
        INC     HL
        LD      A,(SETUP+7)     ;Число
        CALL    DECBYT
        LD      (HL),C
        INC     HL
        LD      (HL),A
        INC     HL
        INC     HL
        LD      A,(SETUP+8)     ;Месяц
        CALL    DECBYT
        LD      (HL),C
        INC     HL
        LD      (HL),A
        INC     HL
        INC     HL
        LD      A,(SETUP+9)     ;Год
        PUSH    HL
        LD      L,A
        LD      H,0
        LD      DE,1980
        ADD     HL,DE
        CALL    DECWRD
        LD      E,H
        POP     HL
        LD      (HL),B
        INC     HL
        LD      (HL),E
        INC     HL
        LD      (HL),C
        INC     HL
        LD      (HL),A
;Вывод на экран
        LD      DE,DAY
        LD      L,(IX+0)
        LD      H,(IX+1)
        CALL    CPHLDE
        JR      NZ,NO_DAY
        PUSH    DE
        SELCOL
        POP     DE
NO_DAY: LD      HL,1C03H
        CALL    MESSAGE
        NORCOL
        LD      A,"/"
        LD      HL,1E03H
        CALL    SYMBOL
        LD      DE,MONT
        LD      L,(IX+0)
        LD      H,(IX+1)
        CALL    CPHLDE
        JR      NZ,NO_MON
        PUSH    DE
        SELCOL
        POP     DE
NO_MON: LD      HL,1F03H
        CALL    MESSAGE
        NORCOL
        LD      A,"/"
        LD      HL,2103H
        CALL    SYMBOL
        LD      DE,YEAR
        LD      L,(IX+0)
        LD      H,(IX+1)
        CALL    CPHLDE
        JR      NZ,NO_YER
        PUSH    DE
        SELCOL
        POP     DE
NO_YER: LD      HL,2203H
        CALL    MESSAGE
        NORCOL
        LD      DE,HRS
        LD      L,(IX+0)
        LD      H,(IX+1)
        CALL    CPHLDE
        JR      NZ,NO_HRS
        PUSH    DE
        SELCOL
        POP     DE
NO_HRS: LD      HL,1E04H
        CALL    MESSAGE
        NORCOL
        LD      A,":"
        LD      HL,2004H
        CALL    SYMBOL
        LD      DE,MIN
        LD      L,(IX+0)
        LD      H,(IX+1)
        CALL    CPHLDE
        JR      NZ,NO_MIN
        PUSH    DE
        SELCOL
        POP     DE
NO_MIN: LD      HL,2104H
        CALL    MESSAGE
        NORCOL
        LD      A,":"
        LD      HL,2304H
        CALL    SYMBOL
        LD      DE,SEC
        LD      L,(IX+0)
        LD      H,(IX+1)
        CALL    CPHLDE
        JR      NZ,NO_SEC
        PUSH    DE
        SELCOL
        POP     DE
NO_SEC: LD      HL,2404H
        CALL    MESSAGE
        NORCOL
        RET
;
;Преобразование слова HL=>B-Тысячи, H-Сотни, C-Десятки, A-Единицы
DECWRD: LD      DE,1000
        CALL    DECCMP
        LD      B,C
        LD      DE,100
        CALL    DECCMP
        LD      H,C
        LD      A,L
        JR      DECBYT
;
;Вычисление разряда
DECCMP: LD      C,30H
NEXTD2: CALL    CPHLDE
        RET     C
        SBC     HL,DE
        INC     C
        JR      NEXTD2
;
;Преобразование байта A=>C-Десятки, A-Единицы
DECBYT: LD      C,30H
NEXTD:  CP      10
        JR      C,ENDDEC
        SUB     10
        INC     C
        JR      NEXTD
ENDDEC: ADD     A,"0"
        RET
;
OUTSCR: LD      HL,0001H
        LD      B,24
SCROLP: PUSH    HL
        PUSH    BC
        CALL    MESSAGE
        INC     DE
        POP     BC
        POP     HL
        INC     L
        DJNZ    SCROLP
        LD      HL,2702H
        LD      DE,VERTLN
SCRLP1: LD      A,(DE)
        OR      A
        RET     Z
        CALL    SYMBOL
        INC     L
        INC     DE
        JR      SCRLP1
;
TITLE:  DB      14,15," ALESTE 520 EX SETUP",0
PICT1:  DB      170
        DS      38,148
        DB      143,0
        DB      131," Language",0
        DB      131," Current date",0
        DB      131," Current time",0
        DB      131," Boot drive",0
        DB      131," RAM disk",0
        DB      131," Display type",0
        DB      131," Screen mode",0
        DB      131," Screen colors     Text       Back",0
        DB      131," Keyboard rate    Delay     Repeat",0
        DB      131," Keyboard click",0
        DB      131," Beep              Tone     Volume",0
        DB      131," Mouse",0
        DB      131," Printer interface",0
        DB      131," Printer coding",0
        DB      131," Serial port          Baud rate",0
        DB      131," Bits      Parity      Stop bits",0
        DB      147
        DS      38,148
        DB      132,0
        DB      131," ESC  - Quit",0
        DB      131," F1   - Save settings and quit",0
        DB      131," F5   - Run diagnostics",0
        DB      131," ",1,2,3,4," - Move cursor",0
        DB      131," SHIFT+",3,4," or SPACE - Change field",0
        DB      144
        DS      38,148
        DB      169,0
VERTLN: DS      16,131
        DB      132
        DS      5,131
        DB      0
PICT2:  DB      170
        DS      38,148
        DB      143,0
        DB      131," Язык",0
        DB      131," Текущая дата",0
        DB      131," Текущее время",0
        DB      131," Загрузочный дисковод",0
        DB      131," Электронный диск",0
        DB      131," Дисплей",0
        DB      131," Режим экрана",0
        DB      131," Цвета экрана     Текст        Фон",0
        DB      131," Клавиатура    Задержка     Повтор",0
        DB      131," Отзвук клавиш",0
        DB      131," Звуковой сигнал    Тон     Громк.",0
        DB      131," Мышь",0
        DB      131," мнтерфейс принтера",0
        DB      131," Кодировка принтера",0
        DB      131," Посл. порт            Скорость",0
        DB      131," Биты    Четность      Стоп-биты",0
        DB      147
        DS      38,148
        DB      132,0
        DB      131," ESC  - Выход",0
        DB      131," F1   - Выход с сохранением установок ",0
        DB      131," F5   - Диагностика",0
        DB      131," ",1,2,3,4," - Перемещение курсора",0
        DB      131," SHIFT+",3,4," или ПРОБЕЛ - мзменение поля",0
        DB      144
        DS      38,148
        DB      169,0
T_ESC:  DB      "ESC",0
T_F1:   DB      "F1",0
T_F5:   DB      "F5",0
T_MOVE: DB      1,2,3,4,0
T_CHG:  DB      "SHIFT+",3,4,0
T_SPC:  DB      "SPACE",0
T_PRB:  DB      "ПРОБЕЛ",0
;
MOVTAB1:DW      LANG_E          ;ТЕКСТ              1 0
        DW      30*256+2        ;X,Y                3 2
        DW      LNG_SET         ;ФУНКЦмЯ мЗМЕНЕНмЯ  5 4
        DW      MOVTAB1         ;ВПРАВО             7 6
        DW      MOVTAB1         ;ВЛЕВО              9 8
        DW      MT1YR           ;ВНмЗ               B A
        DW      MT1SB           ;ВВЕРХ              D C
;
MT1DY:  DW      DAY
        DW      1C03H
        DW      DAY_SET
        DW      MT1MN
        DW      MT1DY
        DW      MT1SC
        DW      MOVTAB1
;
MT1MN:  DW      MONT
        DW      1F03H
        DW      MON_SET
        DW      MT1YR
        DW      MT1DY
        DW      MT1MI
        DW      MOVTAB1
;
MT1YR:  DW      YEAR
        DW      2203H
        DW      YER_SET
        DW      MT1YR
        DW      MT1MN
        DW      MT1SC
        DW      MOVTAB1
;
MT1HR:  DW      HRS
        DW      1E04H
        DW      HRS_SET
        DW      MT1MI
        DW      MT1HR
        DW      MT1DR
        DW      MT1DY
;
MT1MI:  DW      MIN
        DW      2104H
        DW      MIN_SET
        DW      MT1SC
        DW      MT1HR
        DW      MT1DR
        DW      MT1MN
;
MT1SC:  DW      SEC
        DW      2404H
        DW      SEC_SET
        DW      MT1SC
        DW      MT1MI
        DW      MT1DR
        DW      MT1YR
;
MT1DR:  DW      DRV
        DW      2305H
        DW      DRV_SET
        DW      MT1DR
        DW      MT1DR
        DW      MT1RM
        DW      MT1SC
;
MT1RM:  DW      RMD
        DW      2106H
        DW      RMD_SET
        DW      MT1RM
        DW      MT1RM
        DW      MT1DT
        DW      MT1DR
;
MT1DT:  DW      DISP_EC
        DW      2007H
        DW      DIS_SET
        DW      MT1DT
        DW      MT1DT
        DW      MT1SM
        DW      MT1RM
;
MT1SM:  DW      SMOD_0
        DW      1B08H
        DW      MOD_SET
        DW      MT1SM
        DW      MT1SM
        DW      MT1BC
        DW      MT1DT
;
MT1TC:  DW      TEXTC
        DW      1909H
        DW      TXT_SET
        DW      MT1BC
        DW      MT1TC
        DW      MT1KD
        DW      MT1SM
;
MT1BC:  DW      BACKC
        DW      2409H
        DW      BCK_SET
        DW      MT1BC
        DW      MT1TC
        DW      MT1KR
        DW      MT1SM
;
MT1KD:  DW      KEYD
        DW      180AH
        DW      KBD_SET
        DW      MT1KR
        DW      MT1KD
        DW      MT1CL
        DW      MT1TC
;
MT1KR:  DW      KEYR
        DW      230AH
        DW      KBR_SET
        DW      MT1KR
        DW      MT1KD
        DW      MT1CL
        DW      MT1BC
;
MT1CL:  DW      SETONE
        DW      210BH
        DW      KCL_SET
        DW      MT1CL
        DW      MT1CL
        DW      MT1BV
        DW      MT1KR
;
MT1BT:  DW      BEEPT
        DW      180CH
        DW      BPT_SET
        DW      MT1BV
        DW      MT1BT
        DW      MT1MS
        DW      MT1CL
;
MT1BV:  DW      BEEPV
        DW      230CH
        DW      BPV_SET
        DW      MT1BV
        DW      MT1BT
        DW      MT1MS
        DW      MT1CL
;
MT1MS:  DW      MOUSE
        DW      1F0DH
        DW      MOU_SET
        DW      MT1MS
        DW      MT1MS
        DW      MT1PI
        DW      MT1BV
;
MT1PI:  DW      PINT_P
        DW      1C0EH
        DW      PI_SET
        DW      MT1PI
        DW      MT1PI
        DW      MT1PC
        DW      MT1MS
;
MT1PC:  DW      PCOD_K
        DW      1D0FH
        DW      PC_SET
        DW      MT1PC
        DW      MT1PC
        DW      MT1BR
        DW      MT1PI
;
MT1SP:  DW      SPRT_X
        DW      0D10H
        DW      SP_SET
        DW      MT1BR
        DW      MT1SP
        DW      MT1PA
        DW      MT1PC
;
MT1BR:  DW      BAUD
        DW      2010H
        DW      BR_SET
        DW      MT1BR
        DW      MT1SP
        DW      MT1SB
        DW      MT1PC
;
MT1BI:  DW      BITS
        DW      0611H
        DW      BIT_SET
        DW      MT1PA
        DW      MT1BI
        DW      MOVTAB1
        DW      MT1SP
;
MT1PA:  DW      PARIT
        DW      1211H
        DW      PA_SET
        DW      MT1SB
        DW      MT1BI
        DW      MOVTAB1
        DW      MT1SP
;
MT1SB:  DW      STOP
        DW      2211H
        DW      SB_SET
        DW      MT1SB
        DW      MT1PA
        DW      MOVTAB1
        DW      MT1BR
;
LANG_E: DB      " English ",0
LANG_R: DB      " Русский ",0
DISP_EC:DB      " Color ",0
DISP_EM:DB      "  Mono ",0
        DB      "  Цвет ",0
        DB      "  Моно ",0
SMOD_0: DB      "  640x200x2 ",0
        DB      "  320x200x4 ",0
        DB      "  640x200x4 ",0
        DB      " 320x200x16 ",0
SETONE: DB      "   On ",0
SETOFE: DB      "  Off ",0
        DB      "  Вкл ",0
        DB      " Выкл ",0
MOUSE:  DB      "    Off ",0
        DB      "  3-Key ",0
        DB      "  2-Key ",0
        DB      "   Выкл ",0
        DB      " 3-Кноп ",0
        DB      " 2-Кноп ",0
PINT_P: DB      "  Parallel ",0
PINT_S: DB      "    Serial ",0
        DB      " Параллел. ",0
        DB      " Последов. ",0
PCOD_K: DB      "    KOI-8 ",0
PCOD_A: DB      "   PC Alt ",0
        DB      "    КОм-8 ",0
        DB      " Альтерн. ",0
SPRT_X: DB      " Xon/off ",0
SPRT_R: DB      " RTS/CTS ",0
BAUD:   DB      "   300 ",0
        DB      "   600 ",0
        DB      "  1200 ",0
        DB      "  2400 ",0
        DB      "  4800 ",0
        DB      "  9600 ",0
        DB      " 19200 ",0
PARIT:  DB      " Off ",0
        DB      " Odd ",0
        DB      "     ",0
        DB      " Evn ",0
        DB      " Нет ",0
        DB      " Неч ",0
        DB      "     ",0
        DB      " Чет ",0
STOP:   DB      "   1 ",0
        DB      " 1.5 ",0
        DB      "   2 ",0
;
COLTAB: DB      0,6,12,3
RMDPAG: DB      0
LIMIT:  DB      0

HRS:    DB      "XX",0
MIN:    DB      "XX",0
SEC:    DB      "XX",0
DAY:    DB      "XX",0
MONT:   DB      "XX",0
YEAR:   DB      "XXXX",0
DRV:    DB      " X: ",0
RMD:    DB      " XXXK ",0
TEXTC:  DB      " ",10," ",0
BACKC:  DB      " ",10," ",0
KEYD:   DB      " XX ",0
KEYR:   DB      " XX ",0
BEEPT:  DB      " X ",0
BEEPV:  DB      " XX ",0
BITS:   DB      " X ",0
SETUP:  DS      60,0
;
RSECTOR:DB      0
RTRACK: DB      0
RDRIVE: DB      0
;
RES_ST0:DB      0
RES_ST1:DB      0
RES_ST2:DB      0
RES_C:  DB      0
RES_H:  DB      0
RES_R:  DB      0
RES_N:  DB      0
;============= КОНЕЦ SETUP ================================
;***********************************************************
PARM_A:         DB      0DFH    ;SRT,HUT
                DB      3       ;HLT,ND
                DB      25H     ;MTOFF
                DB      2       ;NQ2 bytes
                DB      9       ;EOT
                DB      2AH     ;R/W GPL
                DB      0FFH    ;DTL
                DB      50H     ;FORMAT GPL
                DB      0E5H    ;FORMAT DATA
;
FDDWRK:         DS      10,0
ERR_MESS:       DB      'BOOT ERROR. PRESS ANY KEY.',0
;
FILEST:         DW      0
FILEEND:        DW      0
;
KOD:            DB      0
COUNT:          DB      0
FLAG:           DB      0
;
MODES:          DB      0
INK:            DB      0
PAPER:          DB      0
;
BUFSYM1:        DS      8,0
BUFSYM2:        DS      32,0
;
EXTPORT:        DB      4
;
BIOSFCB:        DB      0,'BIOS    SYS'
                DS      16,0
;
BDOSFCB:        DB      0,'BDOS    SYS'
                DS      16,0
;
FCBBUF:         DS      30H,0
DISKBUF         EQU     0
;
                END
;
