Последние темы
» Вити больше нет!автор bug19 Пн Фев 20 2023, 19:54
» Собираем оригинальный Орион 128
автор bug19 Пн Фев 20 2023, 19:47
» Проблема плющеного экрана ОРИОНА
автор kanzler Пн Ноя 28 2022, 12:05
» Орион 128 и его клоны возрождение 2019-2022 год
автор kanzler Пн Ноя 28 2022, 12:03
» Электроника КР-04. Информация, документы, фото.
автор kanzler Пн Ноя 28 2022, 12:02
» Новости форума
автор kanzler Пн Ноя 28 2022, 11:52
» Орион-128 НГМД запуск 2021 года
автор matrixplus Сб Сен 10 2022, 17:36
» ПЗУ F800 для РК86
автор ведущий_специалист Сб Сен 10 2022, 10:37
» Микропроцессорная лаборатория "Микролаб К580ИК80", УМК-80, УМПК-80 и др.
автор Электротехник Вт Июл 26 2022, 19:33
» Орион-128 SD карта в Орионе
автор matrixplus Чт Июн 02 2022, 09:00
» 7 Мая. День Радио!
автор Viktor2312 Чт Май 12 2022, 10:58
» Серия: Массовая радио библиотека. МРБ
автор Viktor2312 Ср Май 11 2022, 12:17
» Полезные книги
автор Viktor2312 Пн Май 09 2022, 15:07
» Орион 128 Стандарты портов и системной шины Х2
автор matrixplus Вс Май 08 2022, 23:08
» Орион-128 и Орион ПРО еще раз про блоки питания
автор matrixplus Вс Май 08 2022, 19:09
» Орион-128 Программаторы
автор matrixplus Вс Май 08 2022, 19:02
» Орион ПРО история сборки 2021 до 2022
автор matrixplus Вс Май 08 2022, 18:47
» Анонсы монет (New coin).
автор Viktor2312 Сб Май 07 2022, 23:11
» Хочу свой усилок для квартиры собрать не спеша
автор Viktor2312 Сб Май 07 2022, 19:33
» Амфитон 25у-002С
автор Viktor2312 Сб Май 07 2022, 09:38
» Майнер: T-Rex
автор Viktor2312 Вс Май 01 2022, 09:12
» GoWin. Изучение документации. SUG100-2.6E_Gowin Software User Guide. Среда разработки EDA.
автор Viktor2312 Пн Апр 25 2022, 01:01
» GoWin. Изучение документации. UG286-1.9.1E Gowin Clock User Guide.
автор Viktor2312 Сб Апр 23 2022, 18:22
» GoWin. Documentation Database. Device. GW2A.
автор Viktor2312 Ср Апр 20 2022, 14:08
» GOWIN AEC IP
автор Viktor2312 Ср Апр 20 2022, 12:08
Самые активные пользователи за месяц
Нет пользователей |
Поиск
Download для ОРИОНА
Страница 1 из 1 • Поделиться
Download для ОРИОНА
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.
- - - Добавлено - - -
Я периодически заглядываю в один форум, когда-то популярный, а сейчас ставший совсем неинтересным из-за того, что правила форума там лишь для красоты, а действует правило ничем (даже порядочностью) неограниченного самодурства модераторов.
Вот в этой теме обнаружили "новый" монитор ОРИОНА. Что означает, что на форуме вообще не осталось тех, кто был пользователем ОРИОНА в начале 90-тых.
Удивляет, что имея дампы ПЗУ, чтобы найти какое ПЗУ выдаёт искомый титр, если нет ROM-диска, никто не удосужился поискать текстовым редактором UltraEdit в файлах ПЗУ текст этого титра "MC12". А вообще какой это файл, если подумать головой, сразу очевидно, т.к в исходном архиве только единственный файл ПЗУ для MS7007 и КР580 и называется MS7007.DAT.
Вот, что было написано в сопроводительном файле этого ПЗУ:
А вот исходник этого ПЗУ:
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.
- - - Добавлено - - -
Я периодически заглядываю в один форум, когда-то популярный, а сейчас ставший совсем неинтересным из-за того, что правила форума там лишь для красоты, а действует правило ничем (даже порядочностью) неограниченного самодурства модераторов.
Вот в этой теме обнаружили "новый" монитор ОРИОНА. Что означает, что на форуме вообще не осталось тех, кто был пользователем ОРИОНА в начале 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 (Чт Авг 27 2020, 09:49), всего редактировалось 1 раз(а)
barsik- Ветеран
- Сообщения : 1032
Дата регистрации : 2016-11-10
Откуда : Россия
Похожие темы
» CP/M для Ориона-128
» Игры для Ориона 128
» Новый IDE-контроллер для Ориона
» Формирователь монохромного видеовыхода ОРИОНА
» Цветовая проблема ОРИОНА
» Игры для Ориона 128
» Новый IDE-контроллер для Ориона
» Формирователь монохромного видеовыхода ОРИОНА
» Цветовая проблема ОРИОНА
Страница 1 из 1
Права доступа к этому форуму:
Вы не можете отвечать на сообщения
|
|