"Орион-М" - очередное воплощение.

В 1990 году в журнале "Радио" вышел цикл статей о любительском компьютере "Орион-128". В отличии от "Радио-86РК" "Орион" содержал 128КБ (в минимуме 64 кБ) оперативной памяти в стандартной комплектации и поддерживал графический цветной (2, 4 или 16 цветов) экран с разрешением 384х256 пикселей.

Существует множество вариантов, но все они достаточно сложные, содержат кучу мелкой логики. Есть идея засунуть её в ПЛИС. В продаже ещё встречаются CPLD в корпусах PLCC, удобные для пайки через панельку DIP-84: Altera EPM7128, EPM7160. Или EPM3256 под TQFP144 через плату-переходник.
Нашёлся, правда, готовый вариант и плата у Чипкина. Но своё интересней воплотить, мозги расшевелить!

Кто помнит? Кто знает? Кто может помощь оказать? Тряхнуть, так сказать, стариной!

Задумка оформилась в 2022 году, изначально придумал индекс 128.22, но, т.к. ОЗУ стало 1 МБ, то и название пусть будет "Орион-М" - Мегабайт или Модернизированный (Modification).
Обсуждение в Telegram

В итоге должна получиться полная совместимость с классическим Орионом, а при желании и с Орионом-про, и ещё немного плюшек:

Примерно так будет.

О RAM-дисках: при объёме памяти 1024 (512) КБ, как-то коряво будет иметь 15 (7) дисков по 60 КБ. Логичнее создать один непрерывный из всех страниц начиная с последней доступной, ибо снизить вероятность заползания на 1-ю страницу, где лежат атрибуты цвета. Программно это сделать нетрудно, было-бы желание автора или исходники и толковый программист!

CPU Module. I/O Module. CPLD Module. ROM Disk. PS/2 Adapter. Extender.

Для работы с ПЛИС используется "Quartus II" 10.0 (в следующих нет поддержки 3000/7000 серии). Для программирования заказан китайский "USB Blaster".
Можно использовать более простой - ByteBlaster. Что-бы установить его драйвер, в папке bin Квартуса запускаем bblpt /i
Визуально строить схему, конечно, можно. Но до определённой сложности и размера. Нырнуть более глубоко нам поможет язык описания аппаратуры - VHDL

Начнём:

Первая примерка. Прикидка компановки. Адаптер для PS/2 клавы.

Возникла ещё такая идея: использовать огромный ассортимент переферии от Ардуино на шине SPI, через последовательный интерфейс процессора Z180. Это модуль часов реального времени DS3231, модуль карты MicroSD, сетевой модуль ENC28J60/W5500, WIFI модуль ESP8266 ESP-07, Bluetooth HC-05/06, RFID, ИК приёмник...
А прикрутив драйверы внешних устройств можно управлять более мощными железяками! Электроприводы, замки, освещение!

Micro SD Module. Real Time Clock Module. Ethernet Module. RFID Module.


Источники вдохновения:
Справочно:

Подпрограммы ОРДОС
0A800HГотовность принтера
0A803HПечатьВыдача кода в регистре C на принтер.
0A806H

Служебные ячейки ОРДОС
0A800H - 0A87FHДрайвер принтера LPT
0A800H - 0AFFFHДрайверы
0BFFDHгорячий выход в ОРДОС
0BFB8H

Подпрограммы "Монитора"
0F803HВвод символа с клавиатурыA - введенный символ
0F806HВвод байта с магнитофона
0F809HВывод символа на экранC - выводимый символ
0F80CHЗапись байта на магнитофон
0F80FHВывод символа на дисплейКод символа в А, регистры сохраняются.
0F812HОпрос состаяния клавиатурыA=00 - клавиши не нажаты, A=0FFH - нажата любая клавиша
0F815HВывод байта на экран в HEXA - выводимый символ
0F818HВывод на экран сообщенияHL - адрес начала сообщения, 0 - конец.
0F81BHВвод кода нажатой клавишиA=0FFH - не нажата, 0FEH - рус.лат, или код клавиши.
0F81EHЗапрос положения курсораH - номер строки, L - номер позиции
0F821HДрайвер печатающего устройства
0F824HЧтение файла с магнитной ленты
0F827HЗапись файла на магнитофонОтключено в Монитор-2
0F82AH
0F82DHраспаковка и размещение внутреннего знакогенератора в области служебного ОЗУ. Обращение к этой подпрограмме (без входных параметров) позволяет восстановить знакогенератор.
0F830H
0F833H
0F836HЧтение байта из доп. страницы.HL - адрес ячейки, A - номер страницы, C - считанный байт
0F839HЗапись байта в доп. страницу.HL - адрес ячейки, A - номер страницы, C - записываемый байт
0F83CHустановка курсора в заданное знакоместо на экране дисплея. В регистр «Н» заносится значение номера строки (0—18Н), регистр «L» — номер позиции (0—3FH).
0F83FHГенерация звукового сигнала

Служебные ячейки "Монитора"
0F3C4H-0F3C5Hадрес подпрограммы звукового сигнала 0F83FH
0F3C7H-0F3C8Hадрес подпрограммы ввода символа с клавиатуры 0F803H
0F3CAH-0F3CBHадрес подпрограммы принтера 0F821H
0F3CDH-0F3CEHадрес подпрограммы вывода символа на экран 0F809H
0F3D1Hячейка, в которой хранится начальный адрес знакогенератора. При инициализации МОНИТОР записывает в эту ячейку значение - 0F000H. При необходимости пользователь может указать свой адрес, по которому размещен другой знакогенератор. При этом, однако, следует помнить, что драйвер дисплея символы с кодом 00-1FH на экран не выводит и в знакогенераторе для них место не выделяется. Таким образом, знакогенератор всегда начинается с кода 20Н, т. е. "пробела".
0F3D3Hячейка, хранящая признак прямого (00Н) вывода (светлые символы на темном фоне) или инверсного (0FFH) вывода (темные символы на светлом фоне). В цветном режиме цвета изображения и фона меняются местами.
0F3D6H-0F3D7HТёплый старт Монитора
0F3D8Hячейка, содержащая адрес возврата из подпрограммы чтения байта (OF806H) при "зависании" или выпадании сигнала. МОНИТОР заносит в эту ячейку адрес "теплого старта". Программа пользователя должна заносить в эту ячейку свой адрес возврата, в противном случае при невозможности чтения байта программа осуществит возврат в МОНИТОР.
0F3DAHячейка, в которой хранится константа записи на магнитную ленту. Для скорости 1200 бод. Она имеет значение 40Н.
0F3DBHячейка, хранящая константу чтения с магнитной ленты. Для стандартной скорости - 60Н.
0F3E7HТон звука подпрограммы F83FH
0F3DH
0F3DH
0F3DH

Порты "Орион-128" (Радио 1993 №4) [ Info ]
0F400H-0F403Hпорты программной клавиатуры (РК86, МС7007)
0F500H-0F503Hпорты внешнего ROM-диска
0F600H-0F603Hпорты для проведения экспериментов, временного использования. Определенного назначения не имеют
0F700H-0F70FHРезерв (системные регистры "ORION-Рго")
0F710H-0F71FHКонтроллер НГМД и НТМД
0F720H-0F72FHПорт принтера, джойстики, дополнительные параллельные порты
0F730H-0F73FHПоследовательный интерфейс, таймеры обслуживания
0F740H-0F74FHТаймер звукового сигнала КР580ВИ53
0F750H-0F75FHЧасы, календарь 512ВИ1 (DS12885)
0F752H-0F753HSD карта - введено 28/06/2022
0F760H-0F76FHКонтроллер прерываний КР580ВН59
0F770H-0F77FHРезерв или подключен мегапорт
0F780H-0F78FHКР580ВВ55
0F790H-0F797HАппаратная клавиатура PS/2 HT6542B
0F798H-0F79FHПоследовательный интерфейс КР580ВВ51
0F7A0H-0F7AFHВнешний квазидиск большой ёмкости
0F7B0H-0F7BFHCF карта (IDE)
0F7C0H-0F7CFНРезерв
0F7D0H-0F7DFHРезерв
0F7E0H-0F7EFHПорт RS232
0F7F0H-0F7FFHМузыкальный процессор AY8910/12
Только для записи, при чтении будет доступно ПЗУ с Монитором:
0F800H-0F8FFHColor Mode
0F900H-0F9FFHRAM Page
0FA00H-0FAFFHVideo Address
0FB00H-0FBFFHDisplay Type: Graphics/Text


Разъём расширения (Радио 1993 №4) [ Info ]
Контакт ЦепьКонтактЦепь КонтактЦепь
Орион-128 классика Восточный Экспресс 512 Орион-М Орион-128 классикаВосточный Экспресс 512Орион-МОрион-128 классикаВосточный Экспресс 512Орион-М
A1 /F70x B1 C1 /RES /RES
A2 /F71x B2 -5V -5V -5V C2 +12V +12V+12V
A3 /F72x B3 D0 D0 D0 C3 D1 D1 D1
A4 /F73x B4 D2 D2 D2 C4 D3 D3 D3
A5 /F74x B5 D4 D4 D4 C5 D5 D5 D5
A6 /F75x B6 D6 D6 D6 C6 D7 D7 D7
A7 /F76x B7 /SYNC C7 A10 A10 A10
A8 /F77x B8 C8 A11 A11 A11
A9 /F78x B9 C9 A14 A14 A14
A10 /F79x B10 A19 C10A13 A13 A13
A11 /F7Ax B11 A18 C11A12 A12 A12
A12 /F7Bx B12 A17 C12A15 A15 A15
A13 /F7Cx B13 A16 C13A9 A9 A9
A14 /F7Dx B14A8 A8 A8 C14/WR /WR /WR
A15GND GND GND B15GND GND GND C15GND GND GND
A16 /F7Fx B16BEEP BEEP C16/INT /INT/INT-/INT0
A17 SPI MISO B17 /INT1 C17A7 A7 A7
A18 SPI MOSI B18 /NMI C18A6 A6 A6
A19 SPI SCK B19 /M1 C19A5 A5 A5
A20 I2C SDA B20RESET RESET C20A4 A4 A4
A21 I2C SCL B21 C21A3 A3 A3
A22 B22/BACS /IORQ C22A2 A2 A2
A23 B23CLKF1 PHI C23A1 A1 A1
A24 B24CLK1,25 C24A0 A0 A0
A25 B25IKS /INT2 C25/RD /RD /RD
A26 B26/SELROM /F8xx C26
A27 +5V B27+5V +5V +5V C27+5V +5V +5V
A28 B28 C28/INTE
A29 B29/SELP4 /FBxx C29READY /WAIT
A30 /F7E0H B30/SELPR /F7xx C30/RESKEY /RESKEY/RESKEY
A31 CLK B31/CLK10 /OSC C31/блок. RAM
A32 B32/DSYN 50/60Hz/MREQ C32DSYN DSYN

Дополнительно:
Mirror Orion site
Eugene's site
Old Lazy Cats Group
Mirror efu site

reliablecounter.com
reliablecounter blog
Посещений - счетчик посещений