Октябрь 2019
ПнВтСрЧтПтСбВс
 123456
78910111213
14151617181920
21222324252627
28293031   

Календарь Календарь

Последние темы
» Новинки. Книги. Часть 1.
автор Viktor2312 Сегодня в 09:55

» Упрощаем схему Микро-80 и исправляем косяки. И собираем по технологиям 80-х годов.
автор Microsha Вчера в 23:02

» AVR AY плеер
автор Microsha Вчера в 17:55

» Микроконтроллеры STM32G0
автор Viktor2312 Вчера в 14:38

» SINOVATE (SIN). Криптовалюта Синовэйт.
автор Viktor2312 Вчера в 12:10

» Новости криптовалют: статьи, заметки, разное...
автор Viktor2312 Вчера в 09:11

» Усилитель на 6ф5п
автор freddy Ср Окт 16 2019, 16:07

» "Python". Статьи, заметки, очерки, разное...
автор Viktor2312 Вт Окт 15 2019, 21:18

» Анти Радио-86РК
автор freddy Вт Окт 15 2019, 16:38

» Конверсия atx бп
автор freddy Вт Окт 15 2019, 15:48

» Источники питания. Статьи, заметки, очерки, разное...
автор Viktor2312 Вт Окт 15 2019, 04:08

» Радио-86РК: внешние видео-адаптеры
автор freddy Вс Окт 13 2019, 19:28

» Изучаем основы VHDL, ISE, ПЛИС Xilinx.
автор Viktor2312 Сб Окт 12 2019, 11:20

» Электроника. Статьи, заметки, очерки, разное...
автор Viktor2312 Пт Окт 11 2019, 13:00

» Радио-86РК: Разное
автор barsik Чт Окт 10 2019, 15:36

» Общие вопросы по ПЭВМ Ириша
автор barsik Вс Окт 06 2019, 07:01

» ПО. ПЭВМ "Ириша". Текстовый редактор "WORDSTAR".
автор barsik Сб Окт 05 2019, 18:28

» Расширение ОЗУ в ИРИШЕ
автор Viktor2312 Пт Окт 04 2019, 17:27

» Радио РК-86: ПЭВМ с процессором 1821ВМ85
автор Viktor2312 Пт Окт 04 2019, 12:28

» Другой микропроцессор в ИРИШЕ
автор barsik Чт Окт 03 2019, 18:16

» Флейм касающийся ПЭВМ "Ириша".
автор barsik Чт Окт 03 2019, 07:31

» Модуль контроллера графического дисплея (МКГД).
автор Viktor2312 Ср Окт 02 2019, 00:50

» Новости. Xilinx.
автор Viktor2312 Вт Окт 01 2019, 12:07

» ПО. ПЭВМ "Ириша". Текстовый редактор "ИРИТЕКСТ".
автор Viktor2312 Сб Сен 28 2019, 00:34

» Криптовалюта — словарь терминов и определений.
автор Viktor2312 Пт Сен 27 2019, 23:00

Самые активные пользователи за месяц
Viktor2312
Download для ОРИОНА Vote_lcapDownload для ОРИОНА Voting_barDownload для ОРИОНА Vote_rcap 
barsik
Download для ОРИОНА Vote_lcapDownload для ОРИОНА Voting_barDownload для ОРИОНА Vote_rcap 
freddy
Download для ОРИОНА Vote_lcapDownload для ОРИОНА Voting_barDownload для ОРИОНА Vote_rcap 
Microsha
Download для ОРИОНА Vote_lcapDownload для ОРИОНА Voting_barDownload для ОРИОНА Vote_rcap 
leoperetz
Download для ОРИОНА Vote_lcapDownload для ОРИОНА Voting_barDownload для ОРИОНА Vote_rcap 

Поиск
 
 

Результаты :
 


Rechercher Расширенный поиск


Download для ОРИОНА

Перейти вниз

Download для ОРИОНА Empty Download для ОРИОНА

Сообщение  barsik в Пт Июн 07 2019, 20:04

1
Исходник NC 1.32 М.Бриджиди, адаптированный в 1995 году А.Грачёвым для ОРИОНСОФТ (работает в OSDOS 3.62, ACP/M и в любой CP/M ОРИОНА в банке 1).

ORDOS отладчик MON2$ адаптированный для ОРИОНА от ZX-Spectrum (только при Z80 и ORDOS V4.03, с версией 2.40 не работает). Это сама программа, а не её исходник ! Других орионовских отладчиков для Z80 работающих не из CP/M, а из ORDOS не существует.

- - - Добавлено - - -

Исходники журнальных ROM-BIOS-ов ОРИОНА версий М1 и М2 для ОРИОНА на КР580: https://yadi.sk/d/y_hHvhxvdGjlaQ и модифицированный М2 https://yadi.sk/d/em_TukDEsXCKRw.

Исходник ROM-BIOS ОРИОНА для КР580 версии М3.1 для КР580: https://yadi.sk/d/q7CLFfyeAgaOtA

Исходник ROM-BIOS ОРИОНА для КР580 версии М3.136/MS для КР580 и матрицы клавиатуры MS7007 по совместимой для игр схеме из ж.Радио 12.1991: https://yadi.sk/d/F-T9sOjFNsuCqQ.

Последняя версия М3 для КР580: https://yadi.sk/d/FUVefu-l0X8LhQ.

- - - Добавлено - - -

Я периодически заглядываю в один форум, когда-то популярный, а сейчас ставший совсем неинтересным из-за того, что правила форума там лишь для красоты, а действует правило ничем (даже порядочностью) неограниченного самодурства модераторов.

Вот в этой теме https://zx-pk.ru/threads/9679-orion-128-sborka-i-nastrojka-kompyutera.html?p=1023805&viewfull=1#post1023805 обнаружили "новый" монитор ОРИОНА. Что означает, что на форуме вообще не осталось тех, кто был пользователем ОРИОНА в начале 90-тых.

Удивляет, что имея дампы ПЗУ, чтобы найти какое ПЗУ выдаёт искомый титр, если нет ROM-диска, никто не удосужился поискать текстовым редактором UltraEdit в файлах ПЗУ текст этого титра "MC12". А вообще какой это файл, если подумать головой, сразу очевидно, т.к в исходном архиве только единственный файл ПЗУ для MS7007 и КР580 и называется MS7007.DAT.

Вот, что было написано в сопроводительном файле этого ПЗУ:

описание М3.12:
MON 3.12-MS (полный оригинал)

Этот МОНИТОР для процессора КР580 сделан в январе 1992 года студентом ЛЭИС А.Мостовым. Он получен из МОН-3.1 с РК-клавиатурой путем замены  драйвера РК-клавиатуры на драйвер MS-7007 из ПЗУ для РК86 из журнала РАДИО 12.1991 (других доработок в коде нет). При применённой для такого ПЗУ схеме  включения сохраняется совместимость по режиму портов клавиатуры, благодаря чему можно использовать игры для РК-клавиатуры с прямым чтением порта клавиатуры. До того этим же автором был сделан вариант М2 с включением MS-7007 по этой же схеме.

Драйвер для MS-7007 имеет в 1.5 раза больший размер, чем драйвер РК-клавиатуры. В М2 есть достаточно свободного места для переделки, но в  М3 нет ни одного свободного байта. Потому в этой версии М3.12 из-за нехватки места в ПЗУ, распакованный фонт на F000 содержит только символы  20H...5FH. То есть после сброса нет русских букв.

Однако благодаря так называемому EXT-механизму ORDOS это не создало  проблему. Т.к к этому ПЗУ для MS-7007 прилагался маленький файлик с именем EXT$, который по сбросу (или рестарту ORDOS) автоматически подгружал  отсутствующий остаток фонта. Так как файл с именем EXT$, ORDOS 2.40  автоматически грузит и запускает при своём старте (это своеобразная замена  файла AUTOEXEC.BAT в MSDOS).

Код файла EXT$ состоит из всего 10-ти команд КР580 - процедуры перекидывающей 256 байт на адреса F200...F2FF. Такой  EXT$ прошивается в ROM-диск и тогда фонт F000 по сбросу - полный. Как следствие терялась возможность стартовать NC$ автоматически по сбросу (хотя  при желании нетрудно сделать соответствующий EXT$). Кстати, при ORDOS 4.03 автостарт EXT$ из ROM-диска не работает, - надо или изменить один байт в коде ORDOS или стартовать файл с доп.фонтом из ROM-диска вручную.

Буквально вскоре, используя тот же драйвер из ж.Радио А.Новгородов сделал  версию M3.2/MS, содержащую уже полный фонт. Но требуемый выигрыш байтов кода ПЗУ был сделан за счёт Z80-команд, что стало доп.стимулом для  установки Z80.

Появление полноценного ПЗУ M3/MS для Z80 сделало дальнейшее улучшение этого  ПЗУ ненужным, т.к предполагалось, что вскоре у всех будет стоять процессор  Z80. Тем не менее данный монитор для MS-7007 нашёл широкое применение среди  пользователей ОРИОНА на КР580. Позднее для работы только с дисководом применялась версия М3.131/MS-7007, где русский фонт был почти полный, но  вообще не было магнитофонных подпрограмм.

Монитор-3 для КР580, к сожалению лишь в середине 90-тых, был оптимизирован  с целью сокращения кода, благодаря чему удалось встроить в ПЗУ М3 для  MS-7007 весь запакованный фонт (это версия M3.136). После этого все более  ранние несовершенные версии стали бессмысленными.


А вот исходник этого ПЗУ:

M3.12 source:

; М3.12/MS

; фонт здесь не полный (только 20-5F), т.е нет
; русских букв (они загружаются файлом EXT$).
; Нет Z80 команд

; ----------------------------------------------

        .Z80
        aseg
        ORG     100H

BUFCOM  EQU     0F300H ; БУФЕР ВВОДА
BUFEND  EQU     0F31FH
PAR_1   EQU     0F320H
PAR_2   EQU     0F322H
PAR_3   EQU     0F324H
PAR_4   EQU     0F326H

STACK   EQU     0F3C0H
TMPSP   EQU     0F3C1H
BEEPV   EQU     0F3C3H  ; JMP BEEP
F803V   EQU     0F3C6H  ; JMP CONIN
L11     EQU     0F3C9H  ; JMP STRIN
F809V   EQU     0F3CCH  ; JMP COUT_C
HISCRN  EQU     0F3CFH  ; НАЧ.АДРЕС ЭКРАНА
WDTSCR  EQU     0F3D0H  ; ШИРИНА ЭКРАНА
AFONT   EQU     0F3D1H  ; АДРЕС ЗН-ГЕН
INVERS  EQU     0F3D3H  ; ПРИЗН.ИНВЕРСИИ
FRSTLN  EQU     0F3D4H  ; N ПЕРВОЙ СТРОКИ ЭКРАНА
SCHIGH  EQU     0F3D5H  ; КОЛ-ВО СТРОК
POSX    EQU     0F3D6H  ; N СТОЛБЦА
POSY    EQU     0F3D7H  ; N СТРОКИ
ERRMG   EQU     0F3D8H  ; АДРЕС ВЫЛЕТА ПО LOAD ERR
CSV     EQU     0F3DAH
CLD     EQU     0F3DBH
INVMG   EQU     0F3DCH  ; ФЛАГ ИНВЕРСИИ МГ
OSTAT   EQU     0F3DDH  ; РАБОЧАЯ В COUT_C
ESC     EQU     0F3DEH
AINT    EQU     0F3DFH  ; АДР.П/П ОБР-КИ INTR
AXF809  EQU     0F3E1H  ; АДРЕС П/П COUT_C
ADIRS   EQU     0F3E3H  ; АДРЕС П/П ОБР-КИ ДИРЕКТИВЫ
RUSLAT  EQU     0F3E5H  ; =0-ЛАТ,#0-РУС.
REPEAT  EQU     0F3E6H  ; ДЛЯ АВТОПОВТОРА
CBEEP   EQU     0F3E7H
ALOAD   EQU     0F3E8H  ; АДР.П/П LDBYTE
ASAVE   EQU     0F3EAH  ; АДР.П/П SVBYTE
RAMTOP  EQU     0F3ECH  ; МАКС.СВОБОДНАЯ ПАМЯТЬ
ASTART  EQU     0F3EEH  ; АДР. МАССИВА В П/П LDMAS
       
PPAKBD  EQU     0F400H
DOPPPA  EQU     0F500H

; ----------------------------------------------

LOOP    MACRO   ADDR
        DEC     BC
        LD      A,B
        OR      C
        JP      NZ,ADDR
        ENDM

.msg    MACRO   ADDR
        LD      HL,ADDR
        CALL    MSSG
        ENDM

; ----------------------------------------------

        .phase  0F800H

        JP      COLDST
AF803:  JP      F803V
        JP      LDBV
WRX:    JP      YCOUTC
        JP      SVBV
        JP      XF80F
        JP      XF812
        JP      HEX_A
        JP      MSSG
        JP      XF81B
        JP      RDCURS
        JP      L11
        JP      LDMAS
        JP      @RET            ; SVMAS в РК86
        JP      CHSUM
        JP      RASPAK
        JP      RDTOP
        JP      WRTOP
        JP      RRAM
        JP      WRAM
        JP      WRCURS
BPX:    JP      BEEPV

        defb    'V3.1'          ; номер версии не изменён

; ----------------------------------------------

COLDST: LD      SP,STACK
        XOR     A
        OUT     (0F8H),A
        OUT     (0F9H),A
        OUT     (0FAH),A

        LD      HL,BCONST       ; Загрузка блока констант в ОЗУ
        LD      DE,BC_END-1
        LD      BC,BEEPV
LOOP1:  LD      A,(HL)
        LD      (BC),A
        CALL    @CMPDH
        INC     HL
        INC     BC
        JP      NZ,LOOP1

        CALL    RASPAK

        .msg    TITR

@WARMST:
if      @WARMST ne 0F86CH
        if1
        .printx "    WARMST address shifted !"
        endif
endif

        LD      SP,STACK

        LD      HL,PPAKBD+3
        LD      (HL),8AH

        DEC     HL
        LD      A,(HL)
        AND     60H
        JP      PO,@MNTR

        LD      HL,0B7FFH
        LD      DE,7FFH
        XOR     A
CNTLOO: INC     HL
        XOR     (HL)
        DEC     DE
        DEC     D
        INC     D
        JP      P,CNTLOO
        CP      0E6H
        JP      Z,0BFFDH

        EX      DE,HL
        LD      A,90H
        LD      (DOPPPA+3),A
        LD      HL,7FDH
        CALL    RD_ROM
        CP      0C3H
        JP      NZ,@MNTR

        INC     HL
        INC     HL
L30:    CALL    RD_ROM
        LD      (DE),A
        DEC     DE
        DEC     HL
        LD      A,H
        OR      A
        JP      P,L30
        JP      0BFFDH

; ----------------------------------------------

ERROR:  LD      HL,T_ERR
        CALL    MSSG
@MNTR:
if    @MNTR ne  0F8B6H
     if1
     .printx   *    @MNTR   address shifted ! *
     endif
endif
        LD      SP,STACK

        LD      HL,ERROR
        LD      (ERRMG),HL

        LD      HL,@MNTR
        PUSH    HL
        LD      HL,RUSLAT
        LD      (HL),0
        INC     HL
        INC     HL
        LD      (HL),48H

        CALL    DIRMON
        LD      BC,BUFCOM+1
        INC     DE
        CALL    DC16
        CALL    DC16
        CALL    DC16
        CALL    DC16
        POP     HL
        POP     BC
        POP     DE
        POP     HL
        LD      A,(BUFCOM)

; РЕЗИДЕНТНЫЕ ДИРЕКТИВЫ

        CP      'I'
        JP      Z,DIR_I
        CP      'G'
        JP      Z,DIR_G
        PUSH    HL
        LD      HL,(ADIRS)
        EX      (SP),HL
@RET:   RET

; ----------------------------------------------

RASPAK: LD      DE,PARITY
        LD      HL,(AFONT)
L43:    LD      C,7
        LD      (HL),0
        INC     HL
L42:    INC     DE
        LD      A,D
        OR      E
        RET     Z
        LD      A,(DE)
        RLCA
        RLCA
        RLCA
        AND     7
        LD      B,A
        LD      A,(DE)
        AND     1FH
L41:    LD      (HL),A
        INC     HL
        DEC     C
        JP      Z,L43
        DEC     B
        JP      P,L41
        JP      L42

; ----------------------------------------------

HEX_A:  PUSH    AF              ; есть более короткий алгоритм
        RRCA
        RRCA
        RRCA
        RRCA
        CALL    NIBBLE
        POP     AF
NIBBLE: AND     0FH
        CP      10
        JP      M,NBL1
        ADD     A,7
NBL1:   ADD     A,30H
COUT_A: PUSH    BC
        LD      C,A
        CALL    WRX
        POP     BC
        RET

; ----------------------------------------------

MSSG:   LD      A,(HL)
        AND     A
        RET     Z
        CALL    COUT_A
        INC     HL
        JP      MSSG

; ----------------------------------------------

CHSUM:  LD      BC,0
@CHSM1:
 if    @CHSM1 ne 0F944H
        if1
        .printx '    CHSM1  address shifted !'
        endif
 endif
        LD      A,C
        ADD     A,(HL)
        LD      C,A
        PUSH    AF
        CALL    @CMPDH
        JP      Z,L4A
        POP     AF
        LD      A,B
        ADC     A,(HL)
        LD      B,A
        INC     HL
        JP      @CHSM1

; ----------------------------------------------

@CMPDH:
if    @CMPDH ne 0F956H
     if1
     .printx   "    @CMPDH  address shifted !"
     endif
endif
        LD      A,H
        CP      D
        RET     NZ
        LD      A,L
        CP      E
        RET

; ----------------------------------------------

WRCURS: LD      A,L
        ADD     A,A
        ADD     A,A
        LD      L,A
        LD      (POSX),HL
RDCURS: LD      HL,(POSX)
        LD      A,L
        RRCA
        RRCA
        LD      L,A
        RET
       
; ----------------------------------------------

WRTOP:  LD      (RAMTOP),HL
RDTOP:  LD      HL,(RAMTOP)
        RET
       
; ----------------------------------------------

WRAM:   OUT     (0F9H),A
        LD      (HL),C
        JP      RRAM1
RRAM:   OUT     (0F9H),A
        LD      C,(HL)
RRAM1:  XOR     A
        OUT     (0F9H),A
        RET
       
; ----------------------------------------------

DIR_G:  INC     H
        JP      Z,ERROR
        DEC     H
        JP      (HL)

; ----------------------------------------------

DIR_I:  PUSH    HL
        CALL    LDMAS
        JP      NZ,ERROR
        POP     AF
        OR      A
        RET     NZ
        JP      (HL)

; ----------------------------------------------

LDMAS:  CALL    @LDHL1
        LD      (ASTART),HL
        EX      DE,HL
        LD      A,8
        CALL    @LD_HL
        EX      DE,HL
@LDHLDE:
if      @LDHLDE ne 0F99DH
   if1
     .printx   "    LDHLDE address shifted !"
   endif
endif
        PUSH    HL
        PUSH    HL
L53:    CALL    LDBS
        LD      (HL),A
        CALL    @CMPDH
        INC     HL
        JP      NZ,L53
        CALL    @LDHL1
        EX      (SP),HL
        CALL    CHSUM
        POP     DE
        LD      H,B
        LD      L,C
        CALL    @CMPDH
        POP     HL
        RET

; ----------------------------------------------

@LDHL1: LD      A,0FFH

if      @LDHL1 ne 0F9B9H
        if1
        .printx '    LDHL1  address shifted !'
        endif
endif
 
@LD_HL: CALL    LDBV
        LD      H,A
        CALL    LDBS
        LD      L,A
        RET

; ----------------------------------------------

TM_SV:  LD      (PPAKBD+2),A
        LD      A,(CSV)
        JP      TMA

; ----------------------------------------------

TM_LD:  LD      A,(CLD)
TMA:    DEC     A
        JP      NZ,TMA
        RET

; ----------------------------------------------

LDBS:   LD      A,8
LDBV:   PUSH    HL
        LD      HL,(ALOAD)
        EX      (SP),HL
        RET

; ----------------------------------------------

LDBYTE: PUSH    BC
        PUSH    DE
        LD      D,A
        LD      C,0
LD1:    CALL    PCIN
        LD      E,A
        LD      B,A
LD2:    INC     B
        JP      Z,TM_OUT
        CALL    PCIN
        CP      E
        JP      Z,LD2
        RRCA
        LD      A,C
        RLA
        LD      C,A
        CALL    TM_LD
        XOR     A
        OR      D
        JP      P,LD3
        LD      A,C
        XOR     0E6H
        LD      (INVMG),A
        INC     A
        CP      2
        JP      NC,LD1
        LD      D,9
LD3:    DEC     D
        JP      NZ,LD1
        LD      A,(INVMG)
        XOR     C
        POP     DE
        POP     BC
        RET

; ----------------------------------------------

PCIN:   LD      A,(PPAKBD+2)
        RLCA
        RLCA
        RLCA
        RLCA
        AND     1
        RET

; ----------------------------------------------

TM_OUT: LD      HL,(ERRMG)
        JP      (HL)

; ----------------------------------------------

SVBV:   PUSH    HL
        LD      HL,(ASAVE)
        EX      (SP),HL
        RET

; ----------------------------------------------

SVBYTE: PUSH    AF
        PUSH    BC
        LD      B,8
L61:    LD      A,C
        RLCA
        LD      C,A
        CPL
        CALL    TM_SV
        LD      A,C
        CALL    TM_SV
        DEC     B
        JP      NZ,L61
        POP     BC
L4A:    POP     AF
        RET
       
; -------------------------------------------------

; НАЧАЛЬНЫЕ КОНСТАНТЫ

BCONST:
        .dephase
        .phase  BEEPV

        JP      BEEP            ; BEEPV
F803V:  JP      CONIN
STRINV: JP      STRIN           ;  по сбросу п/п ввода строки
COUTCV: JP      COUT_C

HISCRN: defb    0C0H            ; F3CF
WDTSCR: defb    30H             ; F3D0
AFONT:  DW      0F000H          ; F3D1
INVERS: defb    0               ; F3D3
FRSTLN: defb    0               ; F3D4
SCHIGH: defb    19H             ; F3D5
POSX:   defb    0               ; F3D6
POSY:   defb    0               ; F3D7
ERRMG:  DW      @WARMST         ; F3D8
CSV:    defb    40H             ; F3DA
CLD:    defb    60H             ; F3DB
INVMG:  defb    0               ; F3DC
OSTAT:  defb    0               ; F3DD
ESC:    defb    0               ; F3DE
AINT:   DW      @RET            ; F3DF
AXF809: DW      COUT_C          ; F3E1
ADIRS:  DW      ERROR           ; F3E3
RUSLAT: defb    0               ; F3E5
REPEAT: defb    0               ; F3E6
CBEEP:  defb    48H             ; F3E7
ALOAD:  DW      LDBYTE          ; F3E8
ASAVE:  DW      SVBYTE          ; F3EA
RAMTOP:
;       DW      0BFFFH          ; F3EC
;ASTART: DW     0000            ; F3EE

CNSLEN  EQU     $-BEEPV

        .dephase
        .phase  BCONST+CNSLEN
BC_END:

; ----------------------------------------------

TITR:   defb    1FH,7,'BIOS MC12',10,7,0

; ----------------------------------------------

XF812:  XOR     A
        LD      (PPAKBD),A
        LD      A,(PPAKBD+1)
        INC     A
        RET     Z
        LD      A,0FFH
        RET
       
; ----------------------------------------------

CONIN:  PUSH    BC
        PUSH    DE
        PUSH    HL
        LD      HL,POPREG
        PUSH    HL
RDK0:   LD      DE,0FFH
RD02:   CALL    FL_KEY
        LD      B,A
        LD      HL,REPEAT
        INC     A
        JP      NZ,RD01
RD06:   LD      (HL),1
        JP      RD02

; ----------------------------------------------

RD01:   LD      C,(HL)
RD04:   XOR     A
RD09:   DEC     A
        JP      NZ,RD09
        CALL    FL_KEY
        CP      B
        JP      NZ,RD06
        DEC     C
        JP      NZ,RD04
        DEC     (HL)
        LD      (HL),3FH
        JP      Z,RD05
        LD      (HL),2
RD05:   PUSH    BC
        LD      A,D
        RRCA
        CALL    C,FLASH
        CALL    BPX
        POP     AF
        CP      0FEH
        RET     NZ

        LD      HL,CBEEP
        LD      A,(HL)
        CPL
        ADD     A,81H
        LD      (HL),A

        LD      L,low RUSLAT
        LD      A,(HL)
        CPL
        LD      (HL),A

        LD      HL,PPAKBD+2
        LD      (HL),A

RD07:   LD      A,(HL)
        OR      A
        JP      P,RD07
        CALL    BPX
        JP      RDK0

; ----------------------------------------------

FL_KEY: INC     DE
        INC     E
        DEC     E
        CALL    Z,FLASH
XF81B:  CALL    INTR
INKC:   PUSH    BC
        PUSH    DE
        PUSH    HL
        LD      HL,PPAKBD
        CALL    MS_1
        LD      (HL),0DFH
POPS:   POP     HL
        POP     DE
        POP     BC
        RET

; ----------------------------------------------

MS_1:   LD      E,0DFH
        LD      (HL),E
        LD      A,(PPAKBD+2)
        RLCA
        LD      D,A
        LD      A,0FEH
        RET     NC
        LD      A,(RUSLAT)
        AND     1
        OR      6
        LD      (PPAKBD+3),A
        LD      BC,0FF07H
MS_2:   LD      A,(PPAKBD+1)
        CP      B
        JP      NZ,MS_3
        LD      A,E
        RRCA
        LD      E,A
        LD      (HL),E
        LD      A,B
        DEC     C
        RET     M
        LD      A,(PPAKBD+2)
        OR      1FH
        CP      B
        JP      Z,MS_2
        LD      B,7
MS_3:   LD      E,17H
MS_4:   LD      A,(PPAKBD+2)
        OR      1FH
        INC     B
        DEC     B
        JP      P,MS_5
        LD      A,(PPAKBD+1)
MS_5:   CP      0FFH
        RET     Z
        DEC     E
        JP      NZ,MS_4
MS_6:   INC     B
        RLCA
        JP      C,MS_6
        LD      A,D
        RLCA
        LD      E,A
        LD      A,B
        RLCA
        RLCA
        RLCA
        ADD     A,C
        LD      C,A
        LD      B,high KEYTAB           ; 0FEH
        LD      A,low KEYTAB            ; 49H
        ADD     A,C
        LD      C,A
        LD      A,(BC)
        RRA
        RET     C
        RRA
        JP      NC,MS_7
        DEC     E
        RET     M
        DEC     A
        CP      2AH
        RET     Z
        LD      A,2FH
        RET
       
; ----------------------------------------------

MS_7:   CP      20H
        JP      M,MS_8
        DEC     E
        RET     M
        XOR     10H
        RET
       
; ----------------------------------------------

MS_8:   DEC     D
        RET     P
        LD      D,A
        LD      A,(RUSLAT)
        OR      A
        JP      Z,MS_9
        LD      A,20H
MS_9:   ADD     A,40H
        ADD     A,D
        DEC     E
        RET     M
        XOR     20H
        RET

; ----------------------------------------------

PROMPT: defb    13,10,'->',0

        defb    0

; ----------------------------------------------

DIRMON: LD      HL,PROMPT
        CALL    MSSG
        LD      HL,BUFCOM
        LD      DE,BUFEND
STRIN:  LD      B,0
STIN3:  INC     B
STIN1:  CALL    AF803
        CP      8
        JP      Z,STLEFT
        LD      (HL),A
        LD      C,A
        CP      0DH
        RET     Z
        CALL    @CMPDH
        JP      Z,STIN1
        CALL    WRX
        INC     HL
        INC     B
        JP      NZ,STIN1
STLEFT: DEC     B
        JP      Z,STIN3
        PUSH    HL
        LD      HL,TZABOJ
        CALL    MSSG
        POP     HL
        DEC     HL
        JP      STIN1

; ----------------------------------------------

TZABOJ: defb    8,20H,8,0

; ----------------------------------------------

DC16:   LD      HL,0
        CALL    DC161
        EX      DE,HL
        LD      (HL),E
        INC     HL
        LD      (HL),D
        INC     HL
        EX      DE,HL
        EX      (SP),HL
        JP      (HL)

DC163:  LD      H,0FFH
DC161:  LD      A,(BC)
        CP      0DH
        RET     Z
        INC     BC
        CP      2CH
        RET     Z
        CP      20H
        RET     Z
        INC     H
        JP      Z,DC163
        DEC     H
        CALL    @DC8
        JP      C,DC163
        ADD     HL,HL
        ADD     HL,HL
        ADD     HL,HL
        ADD     HL,HL
        ADD     A,L
        LD      L,A
        JP      DC161

; ----------------------------------------------

@DC8:
if    @DC8 ne 0FBF5H
     if1
     .printx   *    DC8   address shifted ! *
     endif
endif
        SUB     30H
        RET     C
        CP      0AH
        CCF
        RET     NC
        CP      11H
        RET     C
        SUB     7
        CP      10H
        CCF
        RET

; ----------------------------------------------

INTR:   PUSH    AF
        CALL    INTA
        POP     AF
        RET

; ----------------------------------------------

INTA:   LD      A,0DFH
        LD      (PPAKBD),A
        LD      A,(PPAKBD+2)
        AND     60H
        RET     NZ
        CALL    INKC
        CP      0FFH
        JP      Z,INTA
        CP      3
        JP      Z,@WARMST
        CP      0
        JP      AFEC1

; ----------------------------------------------

XINTA:  PUSH    HL
        LD      HL,(AINT)
        EX      (SP),HL
        RET

; ----------------------------------------------

YCOUTC: CALL    INTR
        JP      F809V

; ----------------------------------------------

XF80F:  CALL    INTR
        PUSH    BC
        LD      C,A
        defb    6            ; это LD B,nn чтобы не исполнять PUSH BC
COUT_C: PUSH    BC
        PUSH    DE
        PUSH    HL
        PUSH    AF
        LD      HL,ESC
        LD      A,C
        CP      1BH
        LD      A,0F0H
        JP      Z,L7F
        LD      A,(HL)
        AND     A
        JP      NZ,L80
AFC4E:  LD      A,C
        CP      7FH
        JP      NZ,L81
        LD      HL,INVERS
        LD      A,(HL)
        CPL
        LD      (HL),A
        JP      POPALL

L81:    LD      H,20H
        SUB     H
        JP      C,L83
        LD      L,A
        ADD     HL,HL
        ADD     HL,HL
        ADD     HL,HL
        EX      DE,HL
        LD      HL,(AFONT)
        ADD     HL,DE
        EX      DE,HL
        CALL    MASKA
        EX      DE,HL
        LD      A,9
L87:    PUSH    AF
        PUSH    HL
        LD      A,(INVERS)
        XOR     (HL)
        AND     3FH
        LD      L,A
        LD      A,(OSTAT)
        DEC     A
        LD      H,0
L86:    ADD     HL,HL
        ADD     HL,HL
        INC     A
        JP      NZ,L86
        EX      DE,HL
        LD      A,B
        XOR     (HL)
        AND     (HL)
        OR      D
        LD      (HL),A
        INC     H
        LD      A,C
        XOR     (HL)
        AND     (HL)
        OR      E
        LD      (HL),A
        DEC     H
        INC     L
        EX      DE,HL
        POP     HL
        INC     HL
        POP     AF
        CP      2
        CALL    Z,BYTE9
        DEC     A
        JP      NZ,L87
L83:    LD      HL,(POSX)
        CALL    L89
        ADD     HL,BC
        LD      A,H
        CP      19H
        JP      C,L8A
        JP      NZ,L8B
        INC     D
        LD      H,D
        JP      Z,L8A
        PUSH    HL
        LD      HL,0
        ADD     HL,SP
        LD      (TMPSP),HL
        LD      A,(FRSTLN)
        CALL    SUBROL
L91:    LD      A,C
        ADD     A,0AH
        LD      L,A
        LD      SP,HL
        LD      L,C
        LD      A,0F0H
L8F:    POP     DE
        LD      (HL),E
        INC     L
        LD      (HL),D
        INC     L
        POP     DE
        LD      (HL),E
        INC     L
        LD      (HL),D
        INC     L
        CP      L
        JP      NC,L8F
        LD      A,(INVERS)
L90:    LD      (HL),A
        INC     L
        JP      NZ,L90
        INC     H
        DEC     B
        JP      NZ,L91
        LD      HL,(TMPSP)
        LD      SP,HL
        POP     HL
L8B:    LD      H,18H
L8A:    LD      (POSX),HL
POPALL: POP     AF
POPREG: POP     HL
        POP     DE
        POP     BC
        RET

; ----------------------------------------------

BYTE9:  LD      HL,ZERO
        RET

; ----------------------------------------------

SUBROL: LD      L,A
        CALL    MULT10
        LD      C,A
        LD      HL,(HISCRN)
        LD      B,H
        LD      H,L
        RET

; ----------------------------------------------

L89:    defb    1
ZERO:   DW      100H
        LD      D,C
        INC     A
        CALL    Z,L93
        JP      Z,L94
        CP      0EBH
        RET     Z
        DEC     D
        ADD     A,5
        RET     Z
        INC     D
        LD      B,0FFH
        INC     A
        RET     Z
        LD      C,0FCH
        CP      0EFH
        RET     Z
        LD      BC,0
        CP      0F0H
        JP      NZ,L95
        LD      A,L
        AND     0E0H
        ADD     A,20H
        LD      L,A
        RET

; ----------------------------------------------

L95:    LD      C,4
        INC     A
        RET     Z
        CP      0EFH
        JP      Z,BPX
        ADD     A,0BH
        JP      Z,L96
        INC     A
        RET     NZ
L94:    LD      H,D
L96:    LD      L,D
        LD      B,D
        LD      C,D
        RET

; ----------------------------------------------

MASKA:  LD      HL,(POSX)
        LD      A,L
        RRCA
        LD      L,A
        RRCA
        ADD     A,L
        LD      B,A
        LD      L,H
        LD      A,(HISCRN)
        LD      H,A
        LD      A,B
        DEC     H
L97:    INC     H
        SUB     4
        JP      NC,L97
        LD      (OSTAT),A
        PUSH    HL
        LD      HL,0FCH
L99:    ADD     HL,HL
        ADD     HL,HL
        INC     A
        JP      NZ,L99
        LD      B,H
        LD      C,L
        POP     HL
MULT10: LD      A,L
        ADD     A,A
        ADD     A,A
        ADD     A,A
        ADD     A,L
        ADD     A,L
        LD      L,A
        RET

; ----------------------------------------------

FLASH:  PUSH    BC
        PUSH    HL
        CALL    MASKA
        ADD     A,9
        LD      L,A
        LD      A,B
        XOR     (HL)
        LD      (HL),A
        INC     H
        LD      A,C
        XOR     (HL)
        LD      (HL),A
        POP     HL
        POP     BC
        RET

; ----------------------------------------------

L9B:    LD      A,C
        CP      59H
        JP      NZ,L9A
        LD      A,2
        OR      B
L7F:    LD      (HL),A
        JP      POPALL

; ----------------------------------------------

L80:    LD      B,A
        AND     3
        JP      Z,L9B
        DEC     A
        JP      Z,L9C
        DEC     A
        JP      Z,L9D
L9A:    LD      (HL),0
        LD      A,C
        SUB     4AH
        JP      Z,L9E
        DEC     A
        JP      Z,L9F
        LD      HL,AFC4E
        PUSH    HL
        LD      C,1FH
        ADD     A,6
        RET     Z
        LD      C,8
        INC     A
        RET     Z
        LD      C,18H
        INC     A
        RET     Z
        INC     C
        ADD     A,2
        RET     Z
        INC     C
        DEC     A
        RET     Z
        LD      C,0CH
        SUB     6
        RET     Z
        POP     HL
        JP      POPALL

; ----------------------------------------------

L9C:    LD      A,C
        SUB     20H
        ADD     A,A
        ADD     A,A
        LD      (POSX),A
        XOR     A
        JP      L7F

; ----------------------------------------------

L9D:    LD      A,C
        SUB     20H
        LD      (POSY),A
        LD      A,0F1H
        JP      L7F

; ----------------------------------------------

L93:    PUSH    BC
        PUSH    DE
        PUSH    HL
        PUSH    AF
        LD      A,(FRSTLN)
        JP      LA2

; ----------------------------------------------

L9E:    LD      A,(POSY)
        INC     A
LA2:    CP      19H
        JP      NC,POPALL
        CALL    SUBROL
        DEC     H
LA4:    INC     H
        LD      L,C
        LD      A,(INVERS)
LA3:    LD      (HL),A
        INC     L
        JP      NZ,LA3
        DEC     B
        JP      NZ,LA4
        JP      POPALL

L9F:    LD      HL,(POSX)
        PUSH    HL
        LD      B,L
        LD      C,20H
LA5:    CALL    WRX
        LD      A,4
        ADD     A,B
        LD      B,A
        JP      NZ,LA5
        POP     HL
        JP      L8A

; ----------------------------------------------

RD_ROM: LD      (DOPPPA+1),HL
        LD      A,(DOPPPA)
        RET

; ----------------------------------------------

PAUSE:  CALL    INKC
        CP      13
        JP      NZ,PAUSE
        RET

; ----------------------------------------------

BEEP:   LD      C,24
LA8:    LD      A,(CBEEP)
        PUSH    AF
LA6:    EI
        DEC     A
        JP      NZ,LA6
        POP     AF
LA7:    DI
        DEC     A
        JP      NZ,LA7
        DEC     C
        JP      NZ,LA8
        RET

; ----------------------------------------------

KEYTAB: defb    31H,1BH,0E8H,90H,14H,40H,24H,41H
        defb    0F8H, 7CH,0F4H,9,98H,1CH,3CH,60H
        defb    35H, 33H, 0BCH, 794H,38H,48H,50H
        defb    0FFH, 19H, 15H, 5, 8CH,2CH,4,34H
        defb    0AEH, 17H, 3FH,3,88H,54H,5CH,4CH
        defb    69H, 6BH, 6DH, 184H, 0CH,64H,78H
        defb    58H,68H,0A4H,0A0H,74H,10H,0,0F0H
        defb    70H, 20H, 80H, 9CH,6CH,30H,8,11H
        defb    63H, 65H, 67H,0ECH,28H,18H,44H,0
        defb    61H, 5DH, 1BH, 37H,13H,1DH,1FH,0
        defb    6FH, 71H, 73H, 59H, 0B6H

if      (high $) ne (high KEYTAB)
        if1
          .printx *      KEYTAB place wrong ! *
        endif
endif

; ----------------------------------------------

T_ERR:  defb    13,10,7,'ERROR !',0

; ----------------------------------------------

AFEA9:  PUSH    BC
        PUSH    DE
        PUSH    HL
        LD      HL,0F100H
        LD      (AFONT),HL
        CALL    RASPAK
        LD      HL,0F000H
        LD      (AFONT),HL
        CALL    RASPAK
        JP      POPS
AFEC1:  JP      Z,PAUSE
        CP      1
        JP      Z,@MNTR
        CP      2
        JP      Z,AFEA9
        JP      XINTA

; ----------------------------------------------

        defb    0
        defb    0

PARITY: defb    14H

PFONT:  defb    0C0H, 84H, 0, 4,4AH,60H,2AH,1FH
        defb    0AH,1FH,2AH,11H,0EH,51H,0EH,11H
        defb    18H, 19H, 2, 4, 8, 13H, 3, 4
        defb    2AH, 0CH, 15H, 12H, 0DH,26H,2,4
        defb    40H, 2, 4, 48H, 4, 2, 8, 4
        defb    42H, 4, 8, 0, 4, 15H, 0EH, 15H
        defb    4, 0, 0, 24H, 1FH, 24H, 0, 40H
        defb    2CH, 4, 8, 40H, 1FH,40H,80H,2CH
        defb    0, 1, 2, 4, 8, 10H, 0, 0EH
        defb    11H, 13H, 15H,19H,11H,0EH,4,0CH
        defb    64H, 0EH, 0EH, 11H, 1, 6, 8,10H
        defb    1FH, 1FH, 1, 2, 6, 1, 11H, 0EH
        defb    2, 6, 0AH, 12H, 1FH,22H,1FH,10H
        defb    1EH, 21H, 11H, 0EH, 7,8,10H,1EH
        defb    31H, 0EH, 1FH, 1, 2, 4, 48H,0EH
        defb    31H, 0EH, 31H,0EH,0EH,31H,0FH,1
        defb    2, 1CH, 0, 2CH, 20H, 2CH, 2CH,0
        defb    2CH, 4, 8, 2, 4, 8, 10H, 8
        defb    4, 2, 20H, 1FH, 0, 1FH, 20H, 8
        defb    4, 2, 1, 2, 4, 8, 0EH, 11H
        defb    1, 2, 4, 0, 4, 0EH, 11H, 13H
        defb    15H,17H,10H,0EH,4,0AH,31H,1FH
        defb    31H,1EH,31H,1EH,31H,1EH,0EH,11H
        defb    50H,11H,0EH,1EH,89H,1EH,1FH,30H
        defb    1EH,30H,1FH,1FH,30H,1EH,50H,0EH
        defb    11H,30H,13H,11H,0FH,51H,1FH,51H
        defb    0EH,84H,0EH,61H,31H,0EH,11H,12H
        defb    14H,18H,14H,12H,11H,90H,11H,1FH
        defb    11H,1BH,35H,51H,31H,19H,15H,13H
        defb    31H,0EH,91H,0EH,1EH,31H,1EH,50H
        defb    0EH,51H,15H,12H,0DH,1EH,31H,1EH
        defb    14H, 12H, 11H,0EH,11H,10H,0EH,1
        defb    11H,0EH,1FH,0A4H,0B1H,0EH,51H,2AH
        defb    24H, 51H, 55H,0AH,31H,0AH,4,0AH
        defb    31H, 31H, 0AH, 64H, 1FH,1,2,0EH
        defb    8, 10H, 1FH, 0EH, 88H,0EH,0,10H
        defb    8, 4, 2, 1, 0, 0EH, 82H, 0EH
        defb    0EH, 11H, 80H, 0A0H

        .dephase

        END


_________________
***
barsik
barsik
Мастер++

Сообщения : 573
Дата регистрации : 2016-11-10

Вернуться к началу Перейти вниз

Download для ОРИОНА Empty .

Сообщение  barsik в Ср Авг 21 2019, 18:19

2
.

_________________
***
barsik
barsik
Мастер++

Сообщения : 573
Дата регистрации : 2016-11-10

Вернуться к началу Перейти вниз

Вернуться к началу


 
Права доступа к этому форуму:
Вы не можете отвечать на сообщения