First complete version of project
BIN
Export/PCB/PCB_OrionPRO-Original_V3.22_ASSEMBLY.pdf
Normal file
BIN
Export/PCB/PCB_OrionPRO-Original_V3.22_BOTTOM.pdf
Normal file
BIN
Export/PCB/PCB_OrionPRO-Original_V3.22_Gerber.zip
Normal file
BIN
Export/PCB/PCB_OrionPRO-Original_V3.22_TOP.pdf
Normal file
9
Export/README.md
Normal file
@ -0,0 +1,9 @@
|
||||
# Orion-PRO
|
||||
Готовые документы, полученные из исходников проекта.
|
||||
|
||||
В папке Schematics - файлы схем в формате PDF и SVG.
|
||||
|
||||
В папке PCB - мой вариант печатной платы. Отличается от исходного, v.3.21 разработанного участниками форума zx-pk.ru;
|
||||
* Усиленными шинами питания с минимальной шириной 0,6мм (было 0,4мм)
|
||||
* Более широкими и чкастично спрямленными сигнальными проводниками с шириной 0,4мм (было 0,3мм)
|
||||
|
BIN
Export/Schematics/Error404.pdf
Normal file
5
Export/Schematics/Error404.svg
Normal file
After Width: | Height: | Size: 228 KiB |
BIN
Export/Schematics/MainModule.pdf
Normal file
5
Export/Schematics/MainModule.svg
Normal file
After Width: | Height: | Size: 3.4 MiB |
BIN
Export/Schematics/MemoryModule.pdf
Normal file
5
Export/Schematics/MemoryModule.svg
Normal file
After Width: | Height: | Size: 451 KiB |
42840
Export/Schematics/PCB_OrionPRO-Original_V3.22_ASSEMBLY.svg
Normal file
After Width: | Height: | Size: 4.2 MiB |
42023
Export/Schematics/PCB_OrionPRO-Original_V3.22_BOTTOM.svg
Normal file
After Width: | Height: | Size: 3.5 MiB |
40103
Export/Schematics/PCB_OrionPRO-Original_V3.22_TOP.svg
Normal file
After Width: | Height: | Size: 3.2 MiB |
BIN
Export/Schematics/PS2Controller.pdf
Normal file
5
Export/Schematics/PS2Controller.svg
Normal file
After Width: | Height: | Size: 119 KiB |
BIN
Export/Schematics/PowerSource.pdf
Normal file
5
Export/Schematics/PowerSource.svg
Normal file
After Width: | Height: | Size: 257 KiB |
BIN
Export/Schematics/System-BUS.pdf
Normal file
5
Export/Schematics/System-BUS.svg
Normal file
After Width: | Height: | Size: 448 KiB |
13
README.md
@ -1,2 +1,13 @@
|
||||
# Orion-PRO
|
||||
Orion-PRO Russiab Amateur Personal Computer schematics and PCB
|
||||
|
||||
Схема и печатная плата, персонального любительского компьютера Orion-PRO.
|
||||
|
||||
Проект разработан в среде EasyEDA. Схема воссоздана по исходной схеме, представленной в книге "Радиолюбительский компьютер Orion-PRO" изданной OrionSoft.
|
||||
Далее, схема была скорректирована реверсом исходных файлов печатной платы v 3.21, разработанной участиками форума zx-pk.ru в Sprint Layout.
|
||||
Исправлено множество неточностей. Добавлены схемы подключения клавиатуры PS/2 и "выключателя" ATX-блока питания.
|
||||
|
||||
[Исходники](Sources)
|
||||
[Готовые схемы](Export)
|
||||
|
||||
Попутно, отрисована печатная плата. Для себя, увеличил на ней ширину сигнальных дорожек и усилил шины питания. Убрал отверстия для лишних "слепышей". В остальном, плата соответствует плате v. 3.21
|
||||
|
||||
|
1
Sources/1-PCB_PCB_OrionPRO-Original.json
Normal file
1
Sources/1-Schematic_OrionPRO-Original.json
Normal file
1217
Sources/BIOS/ORDOS.asm
Normal file
4
Sources/BIOS/README.md
Normal file
@ -0,0 +1,4 @@
|
||||
# Orion-PRO
|
||||
|
||||
Исходные коды, получены на основе дизасма ПЗУ версии 3.20 от Error404 c помощью ghidra. Комментарии к коду, большей частью из оригинальных исходных текстов от авторов. Частично, коментарии мои.
|
||||
Исходники адаптированы для сборки c помощью SjAsm Plus https://github.com/z00m128/sjasmplus.
|
1460
Sources/BIOS/ROM1-3.20.asm
Normal file
1486
Sources/BIOS/ROM2-B128.asm
Normal file
87
Sources/BIOS/base.inc
Normal file
@ -0,0 +1,87 @@
|
||||
; Физический сегмент для непереключаемого ОЗУ
|
||||
;RAMSEG:EQU 03H ;для плат V2.10
|
||||
RAMSEG EQU 1FH ; для плат V3.10
|
||||
|
||||
;----------------------------------
|
||||
VERS EQU 210H ; номер версии монитора двоично десятичный
|
||||
|
||||
VERS1 EQU '2' ; первая
|
||||
VERS2 EQU '1' ; вторая
|
||||
VERS3 EQU '0' ; третья цифра
|
||||
|
||||
|
||||
;======================= Внимание ====================
|
||||
; Констаны связи с драйвером TV-PRO из ROM2
|
||||
;------------------------------------------------------
|
||||
|
||||
R2SEG EQU 1 ; Номер сегмента ROM2 с драйвером TV-PRO
|
||||
;
|
||||
; номер функции в векторе управления экраном
|
||||
SETWND EQU 16 ; Установить окно
|
||||
GETWND EQU 17 ; Получить окно
|
||||
SETSCR EQU 4 ; Установить номер экрана
|
||||
GETSCR EQU 5 ; Получить номер экрана
|
||||
;
|
||||
; номер функции в векторе вывода символа/курсора TV-PRO
|
||||
NTVC EQU 0 ; Номер фуекции вывода символа TVC-PRO
|
||||
NCURON EQU 2 ; Номер функции отображения курсора
|
||||
NCUROF EQU 3 ; Номер функции ga{eniq kursora
|
||||
NWCUR EQU 5 ; Номер функции ustanowki pozicii kursora
|
||||
NRCUR EQU 6 ; Номер функции ~teniq pozicii kursora
|
||||
NSYMMS EQU 7 ; Номер функции ustanowki revima wyw.simw.
|
||||
NSYMMR EQU 8 ; Номер функции polu~eniq revima wyw.simw.
|
||||
NCURMS EQU 14 ; Номер функции ustanowki revima kursora
|
||||
NCURMR EQU 15 ; Номер функции polu~eniq revima kursora
|
||||
NCURSS EQU 16 ; Номер функции ustanowki razmerow kursora
|
||||
NCURSR EQU 17 ; Номер функции polu~eniq razmerow kursora
|
||||
NCURPS EQU 18 ; Номер функции ustanowki {ablona kursora
|
||||
NCURPR EQU 19 ; Номер функции polu~eniq {ablona kursora
|
||||
NCURBS EQU 20 ; Номер функции ustanowki adresa bufera dlq kursora
|
||||
NCURBR EQU 21 ; Номер функции polu~eniq adresa bufera dlq kursora
|
||||
NCURLN EQU 22 ; Номер функции polu~eniq neobh.dliny bufera
|
||||
;
|
||||
; Номера битов в управляющем байте кусора
|
||||
ENACUR EQU 5 ; Признак разрешения вывода курсора
|
||||
BLINK EQU 4 ; Признак мигания курсора
|
||||
|
||||
; --------------------------------------------
|
||||
; Размещение в памяти основных структур данных
|
||||
; --------------------------------------------
|
||||
STACK EQU 0xF7C0 ; Системный стек
|
||||
SPTUNL EQU 0xFFFD ; Стек туннеля ROM1 <> ROM2
|
||||
CELLS EQU 0xFF50 ; Начало рабочих ячеек
|
||||
RAMTOP EQU 0xFFD0 ; Резерв ячеек для стека туннеля
|
||||
;
|
||||
COLDST EQU 0xFFFF ; Ячейка с флагом холодного старта
|
||||
POS1 EQU 0xFFFE ; Указатель главного меню
|
||||
POS2 EQU 0xFFFD ; Указатель меню тестов
|
||||
|
||||
SCR_C000 EQU 0xC000
|
||||
|
||||
;-------------------
|
||||
; Флаги клавиатуры
|
||||
;-------------------
|
||||
|
||||
; Распределение флагов по битам:
|
||||
; по нажатию соотв. клавиши
|
||||
CTRL EQU 0
|
||||
SHIFT EQU 1
|
||||
FIX EQU 2
|
||||
ALF EQU 3
|
||||
GRF EQU 4
|
||||
; триггерные
|
||||
CPSLCK EQU 5
|
||||
RUSLAT EQU 6
|
||||
GRFALF EQU 7
|
||||
; триггерные для инверсии
|
||||
bolmal EQU 0x20
|
||||
ruslat EQU 0x40
|
||||
grfalf EQU 0x80
|
||||
;
|
||||
KBD_TYPE EQU 0x4
|
||||
|
||||
MON_128_F800 EQU 0xF800
|
||||
|
||||
|
||||
CPM_ROM2 EQU 0x2000 ; Начало ROM 2 - CP/M
|
||||
BUFF EQU 0xB000 ; Буфер для чтения/записи сектора диска
|
1122
Sources/BIOS/ext.asm
Normal file
1014
Sources/BIOS/kbd.asm
Normal file
381
Sources/BIOS/mou.asm
Normal file
@ -0,0 +1,381 @@
|
||||
; =========================================
|
||||
;
|
||||
; Модуль управления мышью для Orion-PRO
|
||||
;
|
||||
; MOU01.AS 14.02.96
|
||||
; MOU02.AS 17.04.96
|
||||
; MOU.AS 25.04.97
|
||||
;
|
||||
; =========================================
|
||||
|
||||
MSCTL LD A,IXL ; DB 0DDh, LD A,L
|
||||
OR A
|
||||
JP NZ,MSC1
|
||||
|
||||
; ---------------------------------------------
|
||||
; Промежуточная функция перемещения курсора в окне
|
||||
; Вход:
|
||||
; (MSX) - координата X мыши
|
||||
; (MSY) - координата Y мыши
|
||||
; (MSMODE) - режим отображения мыши
|
||||
; (MSPADR) - адрес шаблона мыши в сегменте
|
||||
; (MSPSEG) - сегмент шаблона мыши
|
||||
; (MSPH) - высота шаблона мыши
|
||||
; (MSPL) - ширина шаблона мыши
|
||||
; (MSPD) - смещение шаблона мыши в пределах байта
|
||||
; (MSSTY) - шаг мыши по Y
|
||||
; (MSSTX) - шаг мыши по X
|
||||
; (MSBSEG) - 4 номера сегментов буфера сохранения
|
||||
; (MSBADR) - адрес буфера сохранения в сегментах
|
||||
; Выход:
|
||||
; "CY" - указатель вне окна или переполнение буфера сохранения области экрана
|
||||
; иначе:
|
||||
; A - код нажатой кнопки:
|
||||
; 80H - левая кнопка
|
||||
; 40H - правая кнопка
|
||||
; (MSX) - координата X мыши
|
||||
; (MSY) - координата Y мыши
|
||||
; Особенности: используются временные двухбайтовые ячейки (DMX),(DMY),(NDMX),(NDMY),(MSJ1)..(MSJ8)
|
||||
;
|
||||
INMS CALL INM0 ; Переустановить параметры курсора
|
||||
|
||||
; Вычисление шагов приращения координат
|
||||
LD HL,(MSSTY)
|
||||
PUSH HL
|
||||
LD H,0 ; HL - шаг по Y
|
||||
LD (DMY),HL
|
||||
LD A,L
|
||||
DEC H
|
||||
NEG
|
||||
LD L,A
|
||||
LD (NDMY),HL
|
||||
POP HL
|
||||
LD L,H
|
||||
LD H,0 ; HL - шаг по X
|
||||
LD (DMX),HL
|
||||
LD A,L
|
||||
DEC H
|
||||
NEG
|
||||
LD L,A
|
||||
LD (NDMX),HL
|
||||
|
||||
; Отображение указателя мыши
|
||||
LD BC,(MSY)
|
||||
LD DE,(MSX)
|
||||
LD A,NCURON
|
||||
CALL TVOUT
|
||||
JR NC,INM1
|
||||
LD A,NCUROF
|
||||
CALL TVOUT
|
||||
SCF
|
||||
JR INM7
|
||||
|
||||
; Ожидание отпускания кнопки мыши
|
||||
INM1 CALL MOUSE
|
||||
BIT 4,A ; ЛКМ
|
||||
JR Z,INM1
|
||||
BIT 5,A ; ПКМ
|
||||
JR Z,INM1
|
||||
|
||||
; Ожидание отпускания клавиш клавиатуры
|
||||
INM01 CALL STTS
|
||||
JR NZ,INM01
|
||||
|
||||
; Лвижение мыши до нажатия любой кнопки
|
||||
INM2 CALL MSINK ; MOUSE + INKEY
|
||||
JR NC,INM2
|
||||
|
||||
LD (MSY),BC
|
||||
LD (MSX),DE ; Сохранение текущих X,Y
|
||||
LD L,A
|
||||
LD A,NCUROF
|
||||
CALL TVOUT ; Погасить мышь
|
||||
LD A,L
|
||||
AND 0x30
|
||||
CP 0x30 ; Нажаты кнопки?
|
||||
JR NZ,INM4 ; Да
|
||||
LD A,L
|
||||
BIT 0x0,A
|
||||
CALL Z,MLEFT
|
||||
BIT 0x1,A
|
||||
CALL Z,MRIGHT
|
||||
BIT 0x2,A
|
||||
CALL Z,MDOWN
|
||||
BIT 0x3,A
|
||||
CALL Z,MUP
|
||||
LD A,NCURON
|
||||
CALL TVOUT ; Отобразить мышь
|
||||
JR NC,INM2 ; Норма. В окне
|
||||
; Выход за пределы окна
|
||||
LD BC,(MSY)
|
||||
LD DE,(MSX) ; Прежние координаты
|
||||
LD A,NCURON ; Отображение мыши на старом месте
|
||||
CALL TVOUT
|
||||
JR INM2
|
||||
|
||||
INM4 XOR A
|
||||
BIT 4,L
|
||||
JR NZ,INM5
|
||||
SET 7,A
|
||||
INM5 BIT 5,L
|
||||
JR NZ,INM6
|
||||
SET 6,A
|
||||
INM6 OR A
|
||||
|
||||
; Восстановление параметров курсора
|
||||
INM7 PUSH AF
|
||||
LD BC,(MSJ6)
|
||||
LD DE,(MSJ7)
|
||||
LD HL,(MSJ8)
|
||||
LD A,NCURBS ; адрес буфера
|
||||
CALL TVOUT
|
||||
LD BC,(OPER2)
|
||||
LD HL,(MSJ5)
|
||||
LD A,NCURPS ; адрес шаблона
|
||||
CALL TVOUT
|
||||
LD BC,(MSJ1)
|
||||
LD DE,(MSJ2)
|
||||
LD HL,(OPER1)
|
||||
LD A,NCURSS ; размеры
|
||||
CALL TVOUT
|
||||
LD C,H
|
||||
LD A,NCURMS ; режим курсора
|
||||
CALL TVOUT
|
||||
POP AF
|
||||
RET
|
||||
|
||||
; ----------------------------------------------
|
||||
; Мышь влево
|
||||
; ----------------------------------------------
|
||||
MLEFT LD HL,(NDMX)
|
||||
ADD HL,DE
|
||||
EX DE,HL
|
||||
RET
|
||||
|
||||
; ----------------------------------------------
|
||||
; Мышь вправо
|
||||
; ----------------------------------------------
|
||||
MRIGHT LD HL,(DMX)
|
||||
ADD HL,DE
|
||||
EX DE,HL
|
||||
RET
|
||||
|
||||
; ----------------------------------------------
|
||||
; Мышь вниз
|
||||
; ----------------------------------------------
|
||||
MDOWN LD HL,(DMY)
|
||||
ADD HL,BC
|
||||
LD B,H
|
||||
LD C,L
|
||||
RET
|
||||
|
||||
; ----------------------------------------------
|
||||
; Мышь вверх
|
||||
; ----------------------------------------------
|
||||
MUP LD HL,(NDMY)
|
||||
ADD HL,BC
|
||||
LD B,H
|
||||
LD C,L
|
||||
RET
|
||||
|
||||
; ----------------------------------------------
|
||||
; Процедура опроса мыши и клавиатуры
|
||||
; Выход:
|
||||
; "CY" - нажата кнопка или перемещение мыши
|
||||
; A - код мыши
|
||||
; ----------------------------------------------
|
||||
MSINK CALL MOUSE ; Опрос мыши
|
||||
AND 0x3F
|
||||
CP 0x3F
|
||||
SCF
|
||||
RET NZ ; Мышь сработала
|
||||
LD HL,0x200 ; Пауза
|
||||
MSINK0 DEC HL
|
||||
LD A,H
|
||||
OR L
|
||||
JR NZ,MSINK0
|
||||
CALL INFST ; Опрос клавиш курсора
|
||||
AND 0xF0
|
||||
JR NZ,MSINK1
|
||||
|
||||
; Клавиши курсора не нажаты, значит ВК или АР2
|
||||
CALL INKEY
|
||||
LD L,0x1F
|
||||
CP 0x0D ; ВК?
|
||||
JR Z,MSINK5
|
||||
LD L,0x2F
|
||||
CP 0x1B ; AP2?
|
||||
JR Z,MSINK5
|
||||
XOR A
|
||||
RET
|
||||
|
||||
MSINK1 LD L,0x3F
|
||||
BIT 4,A ; Влево?
|
||||
JR Z,MSINK2
|
||||
RES 0,L
|
||||
|
||||
MSINK2 BIT 5,A ; Вверх?
|
||||
JR Z,MSINK3
|
||||
RES 3,L
|
||||
MSINK3 BIT 6,A ; Вправо?
|
||||
JR Z,MSINK4
|
||||
RES 1,L
|
||||
MSINK4 BIT 7,A ; Вниз?
|
||||
JR Z,MSINK5
|
||||
RES 2,L
|
||||
MSINK5 LD A,L
|
||||
SCF
|
||||
RET
|
||||
|
||||
; ----------------------------------------------
|
||||
; Переустановка параметров курсора
|
||||
; ----------------------------------------------
|
||||
INM0 LD A,NCURMR
|
||||
CALL TVOUT ; Режим курсора
|
||||
|
||||
LD H,C
|
||||
LD A,NCURSR
|
||||
CALL TVOUT ; Размеры курсора
|
||||
|
||||
LD (MSJ1),BC
|
||||
LD (MSJ2),DE
|
||||
LD (OPER1),HL
|
||||
LD A,NCURPR
|
||||
CALL TVOUT ; Адрес шаблона
|
||||
|
||||
LD (OPER2),BC
|
||||
LD (MSJ5),HL
|
||||
LD A,NCURBR ; Адрес буфера сохр. инф. под курсором
|
||||
CALL TVOUT
|
||||
|
||||
LD (MSJ6),BC
|
||||
LD (MSJ7),DE
|
||||
LD (MSJ8),HL
|
||||
|
||||
; Установка параметров стрелки мыши
|
||||
CALL GETMMD
|
||||
LD A,NCURMS
|
||||
CALL TVOUT ; Установка размера мыши
|
||||
|
||||
CALL GETMSZ
|
||||
LD BC,0
|
||||
LD A,NCURSS
|
||||
CALL TVOUT ; Размер шаблона мыши
|
||||
|
||||
CALL GETMPA
|
||||
LD A,NCURPS
|
||||
CALL TVOUT ; Адрес шаблона
|
||||
|
||||
CALL GETMBA
|
||||
LD A,NCURBS
|
||||
JP TVOUT ; Буфер для сохранения
|
||||
|
||||
MSC1 DEC A
|
||||
JR NZ,MSC2
|
||||
|
||||
; ----------------------------------------------
|
||||
; Установка режима вывода мыши
|
||||
; ----------------------------------------------
|
||||
SETMMD LD A,C
|
||||
LD (MSMODE),A
|
||||
RET
|
||||
|
||||
MSC2 DEC A
|
||||
JR NZ,MSC3
|
||||
|
||||
; ----------------------------------------------
|
||||
; Получение режима вывода мыши
|
||||
; ----------------------------------------------
|
||||
GETMMD LD A,(MSMODE)
|
||||
LD C,A
|
||||
RET
|
||||
|
||||
MSC3 DEC A
|
||||
JR NZ,MSC4
|
||||
|
||||
; ----------------------------------------------
|
||||
; Установка размеров указателя мыши
|
||||
; ----------------------------------------------
|
||||
SETMSZ LD (MSPH),DE
|
||||
LD (MSSTY),BC
|
||||
LD A,L
|
||||
LD (MSPD),A
|
||||
RET
|
||||
|
||||
MSC4 DEC A
|
||||
JR NZ,MSC5
|
||||
|
||||
; ----------------------------------------------
|
||||
; Получение размеров указателя мыши
|
||||
; ----------------------------------------------
|
||||
GETMSZ LD DE,(MSPH)
|
||||
LD BC,(MSSTY)
|
||||
LD A,(MSPD)
|
||||
LD L,A
|
||||
RET
|
||||
|
||||
MSC5 DEC A
|
||||
JR NZ,MSC6
|
||||
|
||||
; ----------------------------------------------
|
||||
; Установка адреса шаблона мыши
|
||||
; ----------------------------------------------
|
||||
SETMPA LD (MSPADR),HL
|
||||
LD A,C
|
||||
LD (MSPSEG),A
|
||||
RET
|
||||
|
||||
MSC6 DEC A
|
||||
JR NZ,MSC7
|
||||
|
||||
; ----------------------------------------------
|
||||
; Получение адреса шаблона мыши
|
||||
; ----------------------------------------------
|
||||
GETMPA LD HL,(MSPADR)
|
||||
LD A,(MSPSEG)
|
||||
LD C,A
|
||||
RET
|
||||
|
||||
MSC7 DEC A
|
||||
JR NZ,MSC8
|
||||
|
||||
; ----------------------------------------------
|
||||
; Установка адреса буфера сохранения для мыши
|
||||
; ----------------------------------------------
|
||||
SETMBA LD (MSBADR),HL
|
||||
LD (MSBSEG),BC
|
||||
LD (MSBSEG+2),DE
|
||||
RET
|
||||
|
||||
MSC8 DEC A
|
||||
JR NZ,MSC9
|
||||
|
||||
; ----------------------------------------------
|
||||
; Получение адреса буфера сохранения для мыши
|
||||
; ----------------------------------------------
|
||||
GETMBA LD HL,(MSBADR)
|
||||
LD BC,(MSBSEG)
|
||||
LD DE,(MSBSEG+2)
|
||||
RET
|
||||
|
||||
MSC9 DEC A
|
||||
RET NZ
|
||||
|
||||
; ----------------------------------------------
|
||||
; Определение длины буфера для сохранения
|
||||
; ----------------------------------------------
|
||||
GETMLN PUSH BC
|
||||
PUSH HL
|
||||
CALL INM0
|
||||
LD A,NCURLN
|
||||
CALL TVOUT
|
||||
PUSH DE
|
||||
CALL INM7
|
||||
POP DE
|
||||
POP HL
|
||||
POP BC
|
||||
RET
|
||||
|
||||
; ===================
|
||||
; Конец драйвера мыши
|
||||
; ===================
|
175
Sources/BIOS/ports.inc
Normal file
@ -0,0 +1,175 @@
|
||||
;==============================
|
||||
; Порты Ориона-128 и Ориона-ПРО
|
||||
;==============================
|
||||
|
||||
PORT_00_DIPSW EQU 0x00
|
||||
PORT_01_PRNT_DAT EQU 0x01
|
||||
PORT_02_PRNT_CTL EQU 0x02
|
||||
PORT_03_CTL EQU 0x03
|
||||
|
||||
PORT_04_RAM0P EQU 0x04
|
||||
PORT_05_RAM1P EQU 0x05
|
||||
PORT_06_RAM2P EQU 0x06
|
||||
PORT_07_CTL EQU 0x07
|
||||
|
||||
PORT_08_RAM_PG EQU 0x08
|
||||
PORT_09_ROM2_SEG EQU 0x09
|
||||
PORT_0A_MEM_CFG EQU 0x0A
|
||||
PORT_0B_CTL EQU 0x0B
|
||||
|
||||
PORT_10_VG_CMD EQU 0x10
|
||||
PORT_11_VG_TRK EQU 0x11
|
||||
PORT_12_VG_SECT EQU 0x12
|
||||
PORT_13_VG_DATA EQU 0x13
|
||||
PORT_14_VG_CTL EQU 0x14
|
||||
|
||||
|
||||
; Порты клавиатуры
|
||||
PORT_18_KBD EQU 0x18 ; F400 - port KBRD
|
||||
PORT_19_KBD EQU 0x19
|
||||
PORT_1A_KBD EQU 0x1A
|
||||
PORT_1B_CTL EQU 0x1B
|
||||
|
||||
; Мультикарта
|
||||
PORT_1D_MCARD_CTL EQU 0x1d
|
||||
PORT_1E_MOUSE EQU 0x1e
|
||||
|
||||
; ROM-диск
|
||||
PORT_28_ROMD_DATA EQU 0x28 ; данные ROM-диска
|
||||
PORT_29_ROMD_ADRL EQU 0x29 ; мл. адрес в ROM-диске
|
||||
PORT_2A_ROMD_ADRH EQU 0x2A ; ст. адрес в ROM-диске
|
||||
PORT_2B_CTL EQU 0x2B ; управление ВВ55 ROM-диска
|
||||
PORT_2C_ROMD_PAGE EQU 0x2C
|
||||
|
||||
PORT_3B_VI53_CTL EQU 0x3b ; ВИ53 на плате портов COM
|
||||
|
||||
; порты IDE
|
||||
PORT_56_HDD_CTL EQU 0x56
|
||||
PORT_57_HDD_HB EQU 0x57
|
||||
PORT_58_HDD_LB EQU 0x58
|
||||
PORT_59_HDD_ERR EQU 0x59
|
||||
PORT_5F_HDD_STAT_CMD EQU 0x5F
|
||||
|
||||
; порты палитры
|
||||
PORT_E0_PAL_R EQU 0xE0
|
||||
PORT_E1_PAL_G EQU 0xE1
|
||||
PORT_E2_PAL_B EQU 0xE2
|
||||
|
||||
PORT_F8_VMODE EQU 0xF8
|
||||
REG_F9_RAM_PG EQU 0xF9
|
||||
REG_FA_SCRN_CFG EQU 0xFA
|
||||
PORT_FB_TMR_INT EQU 0xFB ; порт вкл прерывания и разблок. ROM
|
||||
REG_FC_COLOR EQU 0xFC
|
||||
PORT_FF_SPEAKER EQU 0xFF
|
||||
|
||||
; Порты через память для Ориона-128
|
||||
PORT_128_F400 EQU 0xF400 ; Клавиатура
|
||||
PORT_128_F500 EQU 0xF500 ; Порт пользователя 1
|
||||
PORT_128_F600 EQU 0xF600 ; Порт пользователя 2
|
||||
PORT_128_F700 EQU 0xF700 ; Порт платы расширения
|
||||
PORT_128_F800 EQU 0xF800 ; WR Цветные режимы
|
||||
PORT_128_F900 EQU 0xF900 ; WR Управление памятью
|
||||
PORT_128_FA00 EQU 0xFA00 ; WR Переключение экранов
|
||||
PORT_128_FB00 EQU 0xFB00 ; WR Переключение типа экрана граф/симв (не импользуется)
|
||||
|
||||
|
||||
;
|
||||
; Биты конфигурации порта 00 (DIP Switch)
|
||||
;
|
||||
SW_O128_MODE EQU 7
|
||||
SW_INT_ROM_DISK EQU 6
|
||||
SW_MENU EQU 5
|
||||
SW_CHR_DISP EQU 4
|
||||
SW_CMP_PG1 EQU 3
|
||||
SW_KBD_RK86 EQU 2
|
||||
SW_HDD EQU 1
|
||||
SW_FDD EQU 0
|
||||
|
||||
;
|
||||
; Биты порта 0A
|
||||
;
|
||||
RAM0_WND EQU 0 ; Окно 0 если 1 - Открыто (0000-3FFFF)
|
||||
RAM1_WND EQU 1 ; Окно 1 если 1 - Открыто (4000-7FFFF)
|
||||
RAM2_WND EQU 2 ; Окно 2 если 1 - Открыто (8000-BFFFF)
|
||||
ROM2_WND EQU 3 ; Если 1 - Включено окно ROM2
|
||||
ROM2_WND_ON EQU 0x08
|
||||
ROM2_WND_OFF EQU 0xF7
|
||||
ROM1_WND EQU 4 ; Если 1 - Включено окно ROM1
|
||||
|
||||
; ПОРТЫ "ОРИОН-ПРО"
|
||||
; =================
|
||||
; 00H - DIP-переключатели (чтение);
|
||||
; 01H - данные принтера, инверсные (запись);
|
||||
; 02H - управляющие сигналы принтера (чтение, запись);
|
||||
; 03H - регистр управления для портов 00H..02H;
|
||||
; 04H - регистр сегментов для окна ОЗУ RAM-0 (чтение, запись);
|
||||
; 05H - регистр сегментов для окна ОЗУ RAM-1 (чтение, запись);
|
||||
; 06H - регистр сегментов для окна ОЗУ RAM-2 (чтение, запись);
|
||||
; 07H - регистр управления для портов 04H..05H;
|
||||
; 08H - регистр страниц ОЗУ для режима "Pro" (чтение, запись);
|
||||
; 09H - регистр сегментов ПЗУ ROM-2 (чтение, запись);
|
||||
; 0AH - диспетчер памяти (чтение, запись);
|
||||
; 0BH - регистр управления для портов 08H..0AH;
|
||||
; 10H - регистр состояния/команд ВГ93 (чтение, запись)
|
||||
; в режиме "128" доступен через адрес 0F710H;
|
||||
; 11H - регистр дорожки ВГ93 (чтение, запись),
|
||||
; в режиме "128" доступен через адрес 0F711H;
|
||||
; 12H - регистр сектора ВГ93 (чтение, запись),
|
||||
; в режиме "128" доступен через адрес 0F712H;
|
||||
; 13H - регистр данных ВГ93 (чтение, запись),
|
||||
; в режиме "128" доступен через адрес 0F713H;
|
||||
; 14H - порт управления НГМД (запись),
|
||||
; в режиме "128" доступен через адрес 0F714H;
|
||||
; 18H..1BH - порты клавиатуры,
|
||||
; в режиме "128" в зависимости от положения перемычки
|
||||
; доступны через адреса 0F4XXH / 0F5XXH / 0F6XXH;
|
||||
; 1CH - свободный порт Мультикарты (чтение, запись);
|
||||
; 1DH - регистр управления портами 1CH,1EH,1FH;
|
||||
; 1EH - порт параллельной мыши на Мультикарте (чтение);
|
||||
; 1FH - порт джойстика на Мультикарте (чтение);
|
||||
; 20H..23H - универсальный порт на Мультикарте, в зависимости
|
||||
; от положения перемычки может быть доступен в режиме
|
||||
; "128" по адресам 0F6XXH;
|
||||
|
||||
; 30H - регистр данных ВВ51 "COM1" (DD7)
|
||||
; 31H - регистр управления ВВ51 "COM1" (DD7)
|
||||
; 34H - регистр данных ВВ51 "COM2" (DD8)
|
||||
; 35H - регистр управления ВВ51 "COM2" (DD8)
|
||||
; 38H - счетчик 1 ВИ53 (DD6)
|
||||
; 39H - счетчик 2 ВИ53 (DD6)
|
||||
; 3AH - счетчик 3 ВИ53 (DD6)
|
||||
; 3BH - регистр управления ВИ53 (DD6)
|
||||
|
||||
; 3EH - запись данных музыкального процессора (DD9)
|
||||
; 3FH - чтение данных музыкального процессора (DD9)
|
||||
; 3FH - запись номера регистра музыкального процессора (DD9)
|
||||
; 50H - регистр данных RTC, CMOS ВИ1 (чтение, запись);
|
||||
; 51H - регистр адреса RTC, CMOS ВИ1 (запись);
|
||||
; 56H - регистр состояния/управления IDE (чтение, запись);
|
||||
; 57H - старший байт регистра данных IDE (чтение, запись);
|
||||
; 58H - младший байт регистра данных IDE (чтение, запись);
|
||||
; 59H - регистр ошибок/свойств IDE;
|
||||
; 5AH - счетчик секторов IDE
|
||||
; 5BH - регистр сектора IDE
|
||||
; 5CH - младший байт номера цилиндра IDE;
|
||||
; 5DH - старший байт номера цилиндра IDE;
|
||||
; 5EH - регистр головки и устройства IDE;
|
||||
; 5FH - регистр состояния (чтение) и команд (запись) IDE;
|
||||
; A0H,A1H,A2H - регистры адреса Квазидиска 1Мб/128К (запись);
|
||||
; A3H - регистр данных Квазидиска 1Мб (чтение, запись);
|
||||
; A4H - регистр данных Квазидиска 128К (чтение, запись);
|
||||
; E0H - порт управления палитрой R на Мультикарте (запись);
|
||||
; E1H - порт управления палитрой G на Мультикарте (запись);
|
||||
; E2H - порт управления палитрой B на Мультикарте (запись);
|
||||
; F8H - порт управления цветовым режимом экрана (запись),
|
||||
; в режиме "128" доступен" через ячейку 0F800H;
|
||||
; F9H - порт выбора страницы ОЗУ для режима "128" (запись),
|
||||
; в режиме "128" доступен" через ячейку 0F900H;
|
||||
; FAH - порт выбора номера экрана и ширины (запись),
|
||||
; в режиме "128" доступен" через ячейку 0FA00H;
|
||||
; FBH - регистр разрешения прерываний IRQ0 - 50Гц (запись);
|
||||
; FCH - регистр псевдоцвета (запись);
|
||||
; FDH - резерв для портов "ZX";
|
||||
; FEH - порт ЦАП /звук (запись);
|
||||
; FFH - динамик (запись).
|
||||
|
967
Sources/BIOS/tst.asm
Normal file
@ -0,0 +1,967 @@
|
||||
; =======================================
|
||||
; Модуль тестирования компьютера
|
||||
; TST02.AS 21.05.96
|
||||
; TST03.AS 05.06.96
|
||||
; TST.AS 01.06.97
|
||||
; V2.10 17.04.00
|
||||
; =======================================
|
||||
|
||||
TSTST EQU TSTR2>=0x8000 ; Признак отладки
|
||||
|
||||
; Ожидание нажатия клавиш
|
||||
WAIT_KEY CALL STTS
|
||||
JR NZ,WAIT_KEY
|
||||
|
||||
WT1 CALL INKEY
|
||||
JR C,WT1
|
||||
PUSH AF
|
||||
CALL BEEP
|
||||
|
||||
WT2 CALL STTS
|
||||
JR NZ,WT2
|
||||
POP AF
|
||||
CP 0x3
|
||||
SCF
|
||||
RET Z
|
||||
CP 0x1b
|
||||
SCF
|
||||
RET Z
|
||||
OR A
|
||||
RET
|
||||
|
||||
; ---------------------------------------------
|
||||
; Вывод большой рамки
|
||||
; ---------------------------------------------
|
||||
BIGFRM
|
||||
LD C,0x1f
|
||||
CALL TVSYM
|
||||
LD BC,0x0
|
||||
LD E,C
|
||||
LD D,C
|
||||
CALL UGOL
|
||||
LD A,0xd
|
||||
LD C,0xff
|
||||
LD DE,0x17f
|
||||
CALL TVGRF
|
||||
LD C,0x2
|
||||
LD DE,0x3
|
||||
PUSH DE
|
||||
CALL UGOL
|
||||
LD A,0xd
|
||||
LD BC,0xfd
|
||||
LD DE,0x17c
|
||||
CALL TVGRF
|
||||
POP DE
|
||||
LD BC,27
|
||||
CALL UGOL
|
||||
LD DE,380
|
||||
LINEX
|
||||
LD A,7
|
||||
LD L,R2SEG
|
||||
JP TVGRF
|
||||
UGOL
|
||||
LD A,0x5
|
||||
JP TVGRF
|
||||
|
||||
; ---------------------------------------------
|
||||
; Очистка средней части экрана
|
||||
; ---------------------------------------------
|
||||
WINCLR
|
||||
LD BC,0xb432
|
||||
LD DE,0x14
|
||||
LD HL,0x154
|
||||
CALL SETWIN ;undefined SETWIN()
|
||||
LD A,0x12
|
||||
CALL TVSCR
|
||||
FULSCR
|
||||
LD BC,0x0
|
||||
LD E,C
|
||||
LD D,C
|
||||
LD HL,0x180
|
||||
|
||||
SETWIN
|
||||
LD A,0x10
|
||||
JP TVSCR
|
||||
INVON DB -1BH,-'6',0
|
||||
INVOF DB -1BH,-'7',0
|
||||
CUROH DB -1BH,-'<',0
|
||||
CUROF DB -1BH,-';',0
|
||||
|
||||
;Вывод пункта меню
|
||||
PUNKT
|
||||
PUSH BC
|
||||
PUSH HL
|
||||
LD L,(IX+R2SEG)
|
||||
LD H,(IX+0x2)
|
||||
LD E,(IX+0x3)
|
||||
LD D,(IX+0x4)
|
||||
INC C
|
||||
PNKT1
|
||||
DEC C
|
||||
JR Z,PNKT3
|
||||
EX DE,HL
|
||||
PNKT2
|
||||
LD B,(HL)
|
||||
INC HL
|
||||
INC B
|
||||
DJNZ PNKT2
|
||||
EX DE,HL
|
||||
INC H
|
||||
JR PNKT1
|
||||
PNKT3
|
||||
PUSH AF
|
||||
CALL SCUR
|
||||
POP AF
|
||||
OR A
|
||||
LD HL,INVON
|
||||
CALL NZ,MSGXX
|
||||
EX DE,HL
|
||||
CALL MSGXX
|
||||
LD HL,INVOF
|
||||
CALL MSGXX
|
||||
POP HL
|
||||
POP BC
|
||||
RET
|
||||
MENU
|
||||
LD B,(IX+0x0)
|
||||
LD C,0x0
|
||||
MNU1 XOR A
|
||||
CALL PUNKT
|
||||
INC C
|
||||
DJNZ MNU1
|
||||
;
|
||||
MNU2 LD C,(HL)
|
||||
LD A,0xff
|
||||
CALL PUNKT
|
||||
PUSH HL
|
||||
LD HL,CUROF
|
||||
CALL MSGXX
|
||||
CALL KBRD
|
||||
PUSH AF
|
||||
LD HL,CUROH
|
||||
CALL MSGXX
|
||||
XOR A
|
||||
CALL PUNKT
|
||||
POP AF
|
||||
POP HL
|
||||
CP 0x1B
|
||||
SCF
|
||||
RET Z
|
||||
;
|
||||
CP 0x3
|
||||
SCF
|
||||
RET Z
|
||||
;
|
||||
CP 0xd
|
||||
JR NZ,MNU3
|
||||
LD A,(HL)
|
||||
ADD A,A
|
||||
LD E,A
|
||||
LD D,0x0
|
||||
LD L,(IX+0x5)
|
||||
LD H,(IX+0x6)
|
||||
ADD HL,DE
|
||||
LD A,(HL)
|
||||
INC HL
|
||||
LD H,(HL)
|
||||
LD L,A
|
||||
CALL PCHL
|
||||
OR A
|
||||
RET
|
||||
|
||||
PCHL JP (HL)
|
||||
;
|
||||
MNU3 LD DE,MNU2
|
||||
PUSH DE
|
||||
;
|
||||
CP 0x19
|
||||
JR NZ,MNU4
|
||||
;
|
||||
DEC (HL)
|
||||
RET P
|
||||
LD A,(IX+0)
|
||||
DEC A
|
||||
LD (HL),A
|
||||
RET
|
||||
;
|
||||
MNU4 CP 0x1A
|
||||
RET NZ
|
||||
INC (HL)
|
||||
LD A,(IX+0)
|
||||
CP (HL)
|
||||
RET NZ
|
||||
LD (HL),0x00
|
||||
RET
|
||||
|
||||
TEST CALL BIGFRM
|
||||
LD HL,TIT2
|
||||
CALL MSGXX
|
||||
LD BC,99
|
||||
LD DE,126
|
||||
CALL UGOL
|
||||
LD A,0xd
|
||||
LD BC,0xa9
|
||||
LD DE,0x107
|
||||
CALL TVGRF
|
||||
LD IX,MENU2
|
||||
LD HL,POS2
|
||||
CALL MENU
|
||||
JR NC,TEST
|
||||
RET
|
||||
|
||||
CONF CALL WINCLR
|
||||
LD C,0x4f
|
||||
LD B,0x6e
|
||||
LD DE,0x72
|
||||
LD HL,0x9e
|
||||
CALL SETWIN
|
||||
DRWFRAM LD BC,0x0
|
||||
LD E,C
|
||||
LD D,C
|
||||
CALL UGOL
|
||||
LD A,0xd
|
||||
LD BC,0x6d
|
||||
LD DE,0x9d
|
||||
PUSH DE
|
||||
CALL TVGRF
|
||||
LD BC,0x14
|
||||
LD E,B
|
||||
LD D,B
|
||||
CALL UGOL
|
||||
POP DE
|
||||
CALL LINEX
|
||||
LD BC,0x6854
|
||||
LD DE,0x85
|
||||
LD HL,0x80
|
||||
CALL SETWIN
|
||||
LD HL,CFGMSG
|
||||
CALL MSGXX
|
||||
CALL OUTCFG
|
||||
CALL WAIT_KEY
|
||||
JP FULSCR
|
||||
OUTCFG IN A,(PORT_00_DIPSW)
|
||||
LD C,0xff
|
||||
CALL OUTDIP
|
||||
BIT 0x0,A
|
||||
LD B,0x0
|
||||
JR Z,CNF1
|
||||
INC B
|
||||
CNF1 CALL OUTPOS
|
||||
CALL OUTDIP
|
||||
BIT 0x1,A
|
||||
LD B,0x0
|
||||
JR Z,CNF2
|
||||
INC B
|
||||
CNF2 CALL OUTPOS
|
||||
CALL OUTDIP
|
||||
BIT 0x2,A
|
||||
LD B,0x3
|
||||
JR Z,CNF3
|
||||
DEC B
|
||||
CNF3 CALL OUTPOS
|
||||
CALL OUTDIP
|
||||
BIT 0x3,A
|
||||
PUSH BC
|
||||
LD C,0x32
|
||||
JR Z,CNF4
|
||||
DEC C
|
||||
CNF4 PUSH AF
|
||||
CALL SPC
|
||||
POP AF
|
||||
CALL TVSYM
|
||||
POP BC
|
||||
CALL OUTDIP
|
||||
BIT 0x4,A
|
||||
LD B,0x0
|
||||
JR Z,CNF5
|
||||
INC B
|
||||
CNF5 CALL OUTPOS
|
||||
CALL OUTDIP
|
||||
BIT 0x5,A
|
||||
LD B,0x0
|
||||
JR Z,CNF6
|
||||
INC B
|
||||
CNF6 CALL OUTPOS
|
||||
CALL OUTDIP
|
||||
BIT 0x6,A
|
||||
LD B,0x4
|
||||
JR Z,CNF7
|
||||
INC B
|
||||
CNF7 CALL OUTPOS
|
||||
CALL OUTDIP
|
||||
BIT 0x7,A
|
||||
LD B,0x7
|
||||
JR Z,OUTPOS
|
||||
DEC B
|
||||
OUTPOS PUSH AF
|
||||
CALL SPC
|
||||
POP AF
|
||||
PUSH BC
|
||||
PUSH AF
|
||||
LD HL,SELMSG
|
||||
LD A,B
|
||||
ADD A,A
|
||||
ADD A,A
|
||||
ADD A,B
|
||||
LD B,0x5
|
||||
JR RSL0
|
||||
OUTDIP PUSH AF
|
||||
CALL HDLN
|
||||
POP AF
|
||||
INC C
|
||||
PUSH BC
|
||||
PUSH AF
|
||||
LD B,0xe
|
||||
LD HL,DIPMSG
|
||||
LD A,C
|
||||
LD E,A
|
||||
ADD A,A
|
||||
ADD A,A
|
||||
ADD A,A
|
||||
ADD A,A
|
||||
RSL0 LD E,A
|
||||
LD D,0x0
|
||||
ADD HL,DE
|
||||
RSL1 LD A,(HL)
|
||||
NEG
|
||||
LD C,A
|
||||
CALL TVSYM
|
||||
INC HL
|
||||
DJNZ RSL1
|
||||
POP AF
|
||||
POP BC
|
||||
RET
|
||||
|
||||
CFGMSG DB -' ',-' ',-' ',-'C',-'O',-'N'
|
||||
DB -'F',-'I',-'G',-'U',-'R',-'A',-'T',-'I',-'O'
|
||||
DB -'N',-0DH,-0AH,0
|
||||
;
|
||||
SELMSG DB -'Y',-'e',-'s',-' ',-' '
|
||||
DB -'N',-'o',-' ',-' ',-' '
|
||||
DB -'P',-'K',-'-',-'8',-'6'
|
||||
DB -'M',-'7',-'0',-'0',-'7'
|
||||
DB -'R',-'O',-'M',-'-',-'2'
|
||||
DB -'R',-'O',-'M',-'-',-'D'
|
||||
DB -'O',-'R',-'D',-'O',-'S'
|
||||
DB -'C',-'P',-'M',-'8',-'0'
|
||||
;
|
||||
DIPMSG DB -'1',-' ',-'F',-'l',-'o',-'p',-'p',-'y',-' '
|
||||
DB -'d',-'r',-'i',-'v',-'e',-' ',-'-' ;14
|
||||
DB -'2',-' ',-'H',-'a',-'r',-'d',-' ',-'d',-'r'
|
||||
DB -'i',-'v',-'e',-' ',-' ',-' ',-'-'
|
||||
DB -'3',-' ',-'K',-'e',-'y',-'b',-'o',-'a',-'r'
|
||||
DB -'d',-' ',-' ',-' ',-' ',-' ',-'-'
|
||||
DB -'4',-' ',-'P',-'a',-'g',-'e',-' ',-'C',-'P',-'/'
|
||||
DB -'M',-'-',-'8',-'0',-' ',-'-'
|
||||
DB -'5',-' ',-'E',-'x',-'t',-'.',-'d',-'i',-'s'
|
||||
DB -'p',-'l',-'a',-'y',-' ',-' ',-'-'
|
||||
DB -'6',-' ',-'S',-'t',-'a',-'r',-'t',-'-',-'M'
|
||||
DB -'e',-'n',-'u',-' ',-' ',-' ',-'-'
|
||||
DB -'7',-' ',-'L',-'o',-'a',-'d',-' ',-'O',-'R'
|
||||
DB -'D',-'O',-'S',-' ',-' ',-' ',-'-'
|
||||
DB -'8',-' ',-'S',-'y',-'s',-'t',-'e',-'m',-' '
|
||||
DB -' ',-' ',-' ',-' ',-' ',-' ',-'-'
|
||||
|
||||
; ---------------------------------------------
|
||||
; Тест ОЗУ
|
||||
; ---------------------------------------------
|
||||
TSTRAM CALL WINCLR
|
||||
LD BC,0x37
|
||||
LD DE,0x46
|
||||
PUSH DE
|
||||
CALL UGOL
|
||||
LD BC,0xd7
|
||||
LD DE,0x13e
|
||||
LD A,0xd
|
||||
CALL TVGRF
|
||||
LD BC,0x4b
|
||||
CALL UGOL
|
||||
POP DE
|
||||
CALL LINEX
|
||||
LD BC,0xc3
|
||||
CALL UGOL
|
||||
LAB_ram_09c4
|
||||
|
||||
LD DE,0x13e
|
||||
CALL LINEX
|
||||
LD HL,RAMMSG
|
||||
CALL MSGXX
|
||||
; отображение на экране DD-номеров ИМС
|
||||
LD BC,0x1000
|
||||
LD DE,IMSCOD
|
||||
RAMT1
|
||||
LD H,8
|
||||
LD A,C
|
||||
CP 8
|
||||
JR C,RAMT2
|
||||
LD H,14
|
||||
SUB 8
|
||||
RAMT2
|
||||
ADD A,A
|
||||
ADD A,A
|
||||
ADD A,0x11
|
||||
LD L,A
|
||||
CALL SCUR
|
||||
LD A,'D'
|
||||
CALL TVA
|
||||
LD A,(DE)
|
||||
CALL HEX_OUT
|
||||
INC DE
|
||||
INC C
|
||||
DJNZ RAMT1
|
||||
LD IX,IMSADR
|
||||
RAMT3
|
||||
LD L,(IX+0x0)
|
||||
LD H,(IX+0x1)
|
||||
INC IX
|
||||
INC IX
|
||||
LD A,L
|
||||
OR H
|
||||
JR Z,RAMT7
|
||||
LD DE,GODIMS
|
||||
LD C,0x20
|
||||
RAMT4
|
||||
LD A,(DE)
|
||||
OR A
|
||||
JR Z,RAMT3
|
||||
LD B,A
|
||||
INC DE
|
||||
LD A,(DE)
|
||||
RAMT5
|
||||
LD (HL),A
|
||||
INC L
|
||||
DEC C
|
||||
JR NZ,RAMT6
|
||||
LD C,0x20
|
||||
INC H
|
||||
LD A,L
|
||||
SUB C
|
||||
LD L,A
|
||||
LD A,(DE)
|
||||
RAMT6
|
||||
DJNZ RAMT5
|
||||
INC DE
|
||||
JR RAMT4
|
||||
RAMT7
|
||||
LD HL,SCLADR
|
||||
LD C,17
|
||||
RAZM1
|
||||
LD B,0x8
|
||||
RAZM2
|
||||
LD (HL),0x0
|
||||
LD A,B
|
||||
CP 0x4
|
||||
JR NZ,RAZM3
|
||||
LD (HL),0xAA
|
||||
RAZM3
|
||||
INC L
|
||||
DJNZ RAZM2
|
||||
LD L,0xC9
|
||||
INC H
|
||||
DEC C
|
||||
JR NZ,RAZM1
|
||||
|
||||
; Начало теста ОЗУ
|
||||
IN A,(PORT_0A_MEM_CFG)
|
||||
SET RAM1_WND,A ; Окно открыть
|
||||
OUT (PORT_0A_MEM_CFG),A
|
||||
db 0FDh
|
||||
LD H,0 ; HY = константа заполнения
|
||||
RAMT8
|
||||
db 0FDh
|
||||
LD L,0 ; LY = номер сегмента
|
||||
RAMT9
|
||||
db 0FDh
|
||||
LD A,L ; A=LY
|
||||
CP 0x20
|
||||
JR NC,RAMT11
|
||||
OUT (PORT_05_RAM1P),A
|
||||
CP 0x3
|
||||
JR Z,RAMT10
|
||||
CP 0x1f
|
||||
JR Z,RAMT10
|
||||
;
|
||||
IF TSTST
|
||||
CP 12
|
||||
JR C,RAMT10
|
||||
ENDIF
|
||||
;
|
||||
LD HL,0x4000
|
||||
LD DE,0x4001
|
||||
db 0FDh
|
||||
LD A,H ; A=HY
|
||||
LD (HL),A
|
||||
;
|
||||
IF TSTST
|
||||
IN A,(PORT_05_RAM1P)
|
||||
CP 13; 20
|
||||
JR NZ,XXX
|
||||
LD A,(HL)
|
||||
OR 12H
|
||||
LD (HL),A
|
||||
XXX
|
||||
ENDIF
|
||||
LD BC,0x3fff
|
||||
LDIR
|
||||
|
||||
; Отображение факта заполнения сегмента
|
||||
RAMT10
|
||||
LD HL,SCLADR
|
||||
SCAL1
|
||||
LD A,(HL)
|
||||
AND 0x1
|
||||
JR Z,SCAL2
|
||||
INC H
|
||||
JR SCAL1
|
||||
SCAL2 LD A,IYL ; db 0FDh, LD A,L
|
||||
AND 0x7
|
||||
INC A
|
||||
LD B,A
|
||||
LD A,0x1
|
||||
SCAL3 RRCA
|
||||
DJNZ SCAL3
|
||||
LD C,A
|
||||
LD B,0x8
|
||||
SCAL4 LD A,(HL)
|
||||
OR C
|
||||
LD (HL),A
|
||||
INC L
|
||||
DJNZ SCAL4
|
||||
IN A,(0x0)
|
||||
AND 0x4
|
||||
JR Z,KSTAT2
|
||||
XOR A
|
||||
OUT (PORT_18_KBD),A
|
||||
IN A,(PORT_19_KBD)
|
||||
XOR 0xff
|
||||
JR Z,KSTAT3
|
||||
KSTAT1 CALL BEEP
|
||||
CALL WAIT_KEY
|
||||
JR NC,KSTAT3
|
||||
RET
|
||||
KSTAT2 XOR A
|
||||
OUT (PORT_1A_KBD),A
|
||||
OUT (PORT_19_KBD),A
|
||||
IN A,(PORT_18_KBD)
|
||||
INC A
|
||||
JR NZ,KSTAT1
|
||||
KSTAT3 INC IYL ; db 0FDh, INC L
|
||||
JR RAMT9
|
||||
RAMT11 LD IYL,0 ; db 0FDh, LD L,0
|
||||
|
||||
; Проверка очередного сегмента
|
||||
RAMT12 LD A,IYL ; db 0FDh, LD A,L
|
||||
CP 0x20
|
||||
JP NC,RAMT22
|
||||
OUT (PORT_05_RAM1P),A
|
||||
CP 0x3
|
||||
JP Z,RAMT21
|
||||
CP 0x1f
|
||||
JP Z,RAMT21
|
||||
;
|
||||
IF TSTST
|
||||
CP 12
|
||||
JP C,RAMT21
|
||||
ENDIF
|
||||
;
|
||||
LD HL,0x4000
|
||||
LD B,H
|
||||
LD C,L
|
||||
LD E,IYH ; db 0FDh, LD E,H
|
||||
RAMT13 LD A,(HL)
|
||||
XOR E
|
||||
JP Z,RAMT20
|
||||
EXX
|
||||
LD C,A
|
||||
LD E,0x0
|
||||
LD B,0x8
|
||||
IN A,(PORT_05_RAM1P)
|
||||
BIT 0x2,A
|
||||
JR Z,RAMT14
|
||||
LD E,0x10
|
||||
RAMT14 RRC C
|
||||
JR NC,RAMT19
|
||||
LD HL,IMSADR
|
||||
LD D,0x0
|
||||
ADD HL,DE
|
||||
LD A,(HL)
|
||||
INC HL
|
||||
LD H,(HL)
|
||||
LD L,A
|
||||
INC L
|
||||
LD A,(HL)
|
||||
DEC L
|
||||
AND 0x7f
|
||||
JR NZ,RAMT19
|
||||
LD IYL,E ; db 0FDh, LD L,E
|
||||
LD IXL,C ; db 0DDh, LD L,C
|
||||
LD IXH,B ; db 0DDh, LD H,B
|
||||
LD DE,BADIMS
|
||||
LD C,0x20
|
||||
RAMT15 LD A,(DE)
|
||||
OR A
|
||||
JR Z,RAMT18
|
||||
LD B,A
|
||||
INC DE
|
||||
LD A,(DE)
|
||||
RAMT16 LD (HL),A
|
||||
INC L
|
||||
DEC C
|
||||
JR NZ,RAMT17
|
||||
LD C,0x20
|
||||
INC H
|
||||
LD A,L
|
||||
SUB C
|
||||
LD L,A
|
||||
LD A,(DE)
|
||||
RAMT17 DJNZ RAMT16
|
||||
INC DE
|
||||
JR RAMT15
|
||||
RAMT18 LD E,IYL ; db 0FDh, LD E,L
|
||||
LD C,IXL ; db 0DDh, LD C,L
|
||||
LD B,IXH ; db 0DDh, LD B,H
|
||||
IN A,(PORT_05_RAM1P)
|
||||
LD IYL,A ; db 0FDh, LD L,A
|
||||
RAMT19 INC E
|
||||
INC E
|
||||
DEC B
|
||||
JP NZ,RAMT14
|
||||
EXX
|
||||
RAMT20 INC HL
|
||||
DEC BC
|
||||
LD A,B
|
||||
OR C
|
||||
JP NZ,RAMT13
|
||||
RAMT21 LD HL,SCLADR
|
||||
SCAL5 LD A,(HL)
|
||||
AND 0x1
|
||||
JR Z,SCAL6
|
||||
INC H
|
||||
JR SCAL5
|
||||
SCAL6 LD A,IYL ; db 0FDh, LD A,L
|
||||
AND 0x7
|
||||
INC A
|
||||
LD B,A
|
||||
LD A,0x1
|
||||
SCAL7 RRCA
|
||||
DJNZ SCAL7
|
||||
LD C,A
|
||||
LD B,0x8
|
||||
SCAL8 LD A,(HL)
|
||||
OR C
|
||||
LD (HL),A
|
||||
INC L
|
||||
DJNZ SCAL8
|
||||
IN A,(0x0)
|
||||
AND 0x4
|
||||
JR Z,KSTAT4
|
||||
XOR A
|
||||
OUT (PORT_18_KBD),A
|
||||
IN A,(PORT_19_KBD)
|
||||
XOR 0xff
|
||||
JR Z,KSTAT5
|
||||
KSTAT6 CALL BEEP
|
||||
CALL WAIT_KEY
|
||||
JR NC,KSTAT5
|
||||
RET
|
||||
KSTAT4 XOR A
|
||||
OUT (PORT_1A_KBD),A
|
||||
OUT (PORT_19_KBD),A
|
||||
IN A,(PORT_18_KBD)
|
||||
INC A
|
||||
JR NZ,KSTAT6
|
||||
KSTAT5 INC IYL ; db 0FDh, INC L
|
||||
JP RAMT12
|
||||
RAMT22 LD A,IYH ; db 0FDh, LD A,H
|
||||
CPL
|
||||
LD IYH,A ; db 0FDh, LD H,A
|
||||
OR A
|
||||
JP NZ,RAMT8
|
||||
LD HL,SCLADR+16*256
|
||||
LD B,0x8
|
||||
LD A,0xFC
|
||||
RAMT23
|
||||
LD (HL),A
|
||||
INC L
|
||||
DJNZ RAMT23
|
||||
LD HL,0xF000
|
||||
RAMT24
|
||||
DEC HL
|
||||
LD A,H
|
||||
OR L
|
||||
JR NZ,RAMT24
|
||||
XOR A
|
||||
OUT (PORT_05_RAM1P),A
|
||||
IN A,(PORT_0A_MEM_CFG)
|
||||
RES 0x1,A
|
||||
OUT (PORT_0A_MEM_CFG),A
|
||||
JP RAMT7 ; продолжить тестирование
|
||||
|
||||
;
|
||||
; Таблица кодов ИМС (DD..) в экранном порядке
|
||||
IMSCOD DB 70H,60H,61H,59H,73H,65H,62H,64H
|
||||
DB 52H,71H,54H,57H,63H,74H,72H,53H
|
||||
;
|
||||
ANI EQU 0xCD5E ; Адрес начала изображений ИМС на экране
|
||||
SCLADR EQU ANI + 0x036B ; Адрес шкалы на экране
|
||||
|
||||
|
||||
; Таблица адресов ИМС на экране по номеру разряда
|
||||
IMSADR DW ANI + 0x063C, ANI + 0x0600, ANI + 0x033C, ANI + 0x0300 ; Банк 1
|
||||
DW ANI + 0x093C, ANI + 0x0900, ANI + 0x0000, ANI + 0x003C
|
||||
DW ANI + 0x153C, ANI + 0x1500, ANI + 0x0F00, ANI + 0x0F3C ; Банк 2
|
||||
DW ANI + 0x0C3C, ANI + 0x0C00, ANI + 0x1200, ANI + 0x123C
|
||||
DW 0
|
||||
;
|
||||
; Изображение хорошей ИМС
|
||||
GODIMS DB 1,0FFH,26,80H,1,83H,3,84H,2,0FFH
|
||||
DB 26,01H,1,0C1H,3,21H,1,0FFH,0
|
||||
;
|
||||
; Изображение неисправной ИМС
|
||||
BADIMS DB 27,0FFH,1,0FCH,2,0FBH,1,0F8H
|
||||
DB 28,0FFH,1,3FH,2,0DFH,1,1FH,1,0FFH,0
|
||||
;
|
||||
RAMMSG DB -1BH,-'Y',-26H,-3CH
|
||||
DB -'R',-'A',-'M',-' ',-'T',-'E',-'S',-'T',0
|
||||
|
||||
; ---------------------------------------------
|
||||
; Тест ROM
|
||||
; ---------------------------------------------
|
||||
TSTROM
|
||||
CALL WINCLR
|
||||
; рисуем окно
|
||||
LD BC,0x73
|
||||
LD DE,0x74
|
||||
PUSH DE
|
||||
CALL UGOL
|
||||
LD A,0xd
|
||||
LD BC,0xa2
|
||||
LD DE,0x0111
|
||||
CALL TVGRF
|
||||
LD BC,0x87
|
||||
CALL UGOL
|
||||
POP DE
|
||||
CALL LINEX
|
||||
TROM1
|
||||
LD HL,ROMMSG
|
||||
CALL MSGXX
|
||||
CALL CSROM2
|
||||
PUSH HL ; Контрольная сумма ROM2
|
||||
CALL HEX_OUT ; Объем ROM2 TODO: это дб вызов HEX
|
||||
CALL CSROM1 ; BC = Контрольная сумма
|
||||
POP DE
|
||||
LD HL,0x0E21
|
||||
PUSH HL
|
||||
CALL SCUR
|
||||
LD A,B
|
||||
CALL HEX_OUT
|
||||
LD A,C
|
||||
CALL HEX_OUT
|
||||
POP HL
|
||||
INC H
|
||||
CALL SCUR
|
||||
LD A,D
|
||||
CALL HEX_OUT
|
||||
LD A,E
|
||||
CALL HEX_OUT
|
||||
LD BC,0x1000
|
||||
TROM2
|
||||
CALL KB_STTS ; Получение статуса клавиатуры
|
||||
JR Z,TROM3
|
||||
CALL BEEP
|
||||
JP WAIT_KEY
|
||||
TROM3
|
||||
DEC BC
|
||||
LD A,B
|
||||
OR C
|
||||
JR NZ,TROM2
|
||||
JR TROM1
|
||||
|
||||
ROMMSG DB -1BH,-'Y',-2CH,-3DH,-'R',-'O',-'M',-' '
|
||||
DB -'T',-'E',-'S',-'T'
|
||||
DB -1BH,-'Y',-2EH,-37H,-'R',-'O',-'M',-'1',-' '
|
||||
DB -'C',-'S',-':',-' ',-' ',-' ',-' ',-' ',-' '
|
||||
DB -' ',-'(',-' ',-'8',-'K',-')'
|
||||
DB -1BH,-'Y',-2FH,-37H,-'R',-'O',-'M',-'2',-' '
|
||||
DB -'C',-'S',-':',-' ',-' ',-' ',-' ',-' ',-' '
|
||||
DB -' ',-'(',-' ',-' ',-'K',-')',-8,-8,-8,-8,0
|
||||
|
||||
; ---------------------------------------------
|
||||
; TV-Тест
|
||||
; ---------------------------------------------
|
||||
TVTEST
|
||||
LD A,0x2
|
||||
OUT (PORT_F8_VMODE),A
|
||||
LD DE,COLTAB
|
||||
LD HL,SCR_C000
|
||||
TVT1 LD B,3
|
||||
TVT2 LD (HL),0xff
|
||||
LD A,(DE)
|
||||
LD C,A
|
||||
LD A,1
|
||||
CALL WRAM ; Запись байта в расширенную страницу
|
||||
INC L
|
||||
JR NZ,TVT2
|
||||
INC H
|
||||
LD A,H
|
||||
CP 0xF0
|
||||
JR Z,TVT3
|
||||
DJNZ TVT2
|
||||
INC DE
|
||||
JR TVT1
|
||||
; Монохромная палитра
|
||||
TVT3 LD BC,0x1000
|
||||
TVT4 LD A,C
|
||||
RLCA
|
||||
RLCA
|
||||
RLCA
|
||||
RLCA
|
||||
OR C
|
||||
OUT (PORT_E0_PAL_R),A
|
||||
OUT (PORT_E1_PAL_G),A
|
||||
OUT (PORT_E2_PAL_B),A
|
||||
INC C
|
||||
DJNZ TVT4
|
||||
LD A,6
|
||||
OUT (PORT_F8_VMODE),A
|
||||
CALL WAIT_KEY
|
||||
JR C,TVT5
|
||||
; цветная палитра
|
||||
CALL INITPAL
|
||||
CALL WAIT_KEY
|
||||
;
|
||||
TVT5 LD A,0x0F
|
||||
OUT (PORT_F8_VMODE),A
|
||||
RET
|
||||
|
||||
COLTAB DB 0,8,1,9,4,12,5,13,2,10,3,11,6,14,7,15
|
||||
|
||||
; ---------------------------------------------
|
||||
; Контрольная сумма ROM
|
||||
; ---------------------------------------------
|
||||
CSROM1
|
||||
LD HL,0x0
|
||||
LD DE,0x1fff
|
||||
CSM
|
||||
EX DE,HL
|
||||
PUSH HL
|
||||
LD A,L
|
||||
LD HL,0x0
|
||||
JR CSM2
|
||||
CSM1
|
||||
EX DE,HL
|
||||
LD B,(HL)
|
||||
LD C,B
|
||||
INC HL
|
||||
EX DE,HL
|
||||
ADD HL,BC
|
||||
CSM2
|
||||
CP E
|
||||
JR NZ,CSM1
|
||||
POP BC
|
||||
PUSH BC
|
||||
LD A,B
|
||||
CP D
|
||||
LD A,C
|
||||
JR NZ,CSM1
|
||||
LD A,(DE)
|
||||
ADD A,L
|
||||
LD C,A
|
||||
LD B,H
|
||||
POP HL
|
||||
RET
|
||||
|
||||
; ---------------------------------------------
|
||||
; Контрольная сумма ROM2
|
||||
; ---------------------------------------------
|
||||
CSROM2
|
||||
LD HL,0x2008
|
||||
LD C,0x4
|
||||
CALL TSTR2
|
||||
LD B,0x8
|
||||
LD A,0x64
|
||||
JR NZ,CSR21
|
||||
LD B,0x4
|
||||
LD A,0x32
|
||||
CSR21
|
||||
PUSH AF
|
||||
LD DE,0x4000
|
||||
XOR A
|
||||
LD (DE),A
|
||||
LD C,A
|
||||
LD L,A
|
||||
LD H,A
|
||||
IN A,(PORT_0A_MEM_CFG)
|
||||
PUSH AF
|
||||
SET 0x3,A
|
||||
OUT (PORT_0A_MEM_CFG),A
|
||||
CSR22
|
||||
LD A,B
|
||||
DEC A
|
||||
JR NZ,CSR23
|
||||
DEC DE
|
||||
CSR23
|
||||
LD A,C
|
||||
OUT (PORT_09_ROM2_SEG),A
|
||||
PUSH BC
|
||||
PUSH DE
|
||||
PUSH HL
|
||||
LD HL,0x2000
|
||||
CALL CSM
|
||||
POP HL
|
||||
ADD HL,BC
|
||||
POP DE
|
||||
POP BC
|
||||
INC C
|
||||
DJNZ CSR22
|
||||
POP AF
|
||||
OUT (PORT_0A_MEM_CFG),A
|
||||
POP AF
|
||||
RET
|
||||
MENU1
|
||||
DB 4h ; Число режимов меню
|
||||
DB 1Bh ; X пунктов меню
|
||||
DB 0Bh ; Y первого пнкта
|
||||
DW MMSG1 ; Адрес сообщения с названием пунктов
|
||||
DW MADR1 ; Таблица адресов обработки
|
||||
;
|
||||
; Названия пунктов главного меню
|
||||
MMSG1 DB -' ',-' ',-'M',-'o',-'n',-'i',-'t',-'o',-'r',-' ',-' ',0
|
||||
DB -' ',-'O',-'r',-'i',-'o',-'n',-'-',-'P',-'R',-'O',-' ',0
|
||||
DB -' ',-'O',-'r',-'i',-'o',-'n',-'-',-'1',-'2',-'8',-' ',0
|
||||
DB -' ',-' ',-'T',-' ',-'E',-' ',-'S',-' ',-'T',-' ',-' ',0
|
||||
;
|
||||
; адреса обработчиков пунктов главного меню
|
||||
MADR1 DW MON_UR,MNT3,MON128,TEST
|
||||
|
||||
;
|
||||
;Описание меню тестов
|
||||
MENU2 DB 5 ; Число режимов меню
|
||||
DB 25 ; X пунктов меню
|
||||
DB 11 ; Y первого пунка
|
||||
DW MMSG2 ; адрес сообщения с названиями пунктов
|
||||
DW MADR2 ; таблица адресов обработки
|
||||
;
|
||||
MMSG2 DB -' ',-'C',-'o',-'n',-'f',-'i',-'g',-'u',-'r',-'a',-'t',-'i',-'o',-'n',-' ',0
|
||||
DB -' ',-'R',-'A',-'M',-' ',-'-',-' ',-'T',-' ',-'e',-' ',-'s',-' ',-'t',-' ',0
|
||||
DB -' ',-'R',-'O',-'M',-' ',-'-',-' ',-'T',-' ',-'e',-' ',-'s',-' ',-'t',-' ',0
|
||||
DB -' ',-'T',-'V',-' ',-' ',-'-',-' ',-'T',-' ',-'e',-' ',-'s',-' ',-'t',-' ',0
|
||||
DB -' ',-' ',-' ',-'M',-'a',-'i',-'n',-' ',-'M',-'e',-'n',-'u',-' ',-' ',-' ',0
|
||||
;
|
||||
; Адреса обработчиков пунктов меню тестов
|
||||
MADR2 DW CONF,TSTRAM,TSTROM,TVTEST,MAIN
|
||||
|
||||
;
|
||||
TIT1 DB -1BH,-59H,-21H,-22H
|
||||
DB -'(',-'C',-')',-' ',-'1',-'9',-'9',-'3',-'-',-'2'
|
||||
DB -'0',-'0',-'0',-' ',-'O',-'r',-'i',-'o',-'n'
|
||||
DB -'s',-'o',-'f',-'t',-' ',-'C',-'o',-'.',-','
|
||||
DB -'L',-'t',-'d',-1BH,-59H,-21H,-4FH
|
||||
DB -'O',-'r',-'i',-'o',-'n',-'-',-'P',-'r',-'o'
|
||||
DB -' ',-'V',-'3',-'.',-'1',-'0',0
|
||||
;
|
||||
TIT2 DB -1BH,-59H,-21H,-35H,-'*',-' ',-'T'
|
||||
DB -'E',-'S',-'T',-' ',-'O',-'R',-'I',-'O',-'N',-'-'
|
||||
DB -'P',-'R',-'O',-' ',-'*',0
|
||||
;
|
||||
|
8
Sources/README.md
Normal file
@ -0,0 +1,8 @@
|
||||
# Orion-PRO
|
||||
|
||||
|
||||
Исходные файлы проекта схемы и печатной платы компьютера Orion-PRO
|
||||
Как использовать:
|
||||
|
||||
В редакторе EasyEDA (https://easyeda.com/editor), через "File" > "Open" > "EasyEDA Source", и выберите json файл и откройте его.
|
||||
|