|   |   |   |   | 
В 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
В итоге должна получиться полная совместимость с классическим Орионом, а при желании и с Орионом-про, и ещё немного плюшек:
 О конструкции.
 О конструкции.
 Логику работы видеоадаптера на ПЛИС с процессором Z180 вижу так: по пиксельклоку или удвоенному пиксельклоку видеомодуль запрашивает у процессора доступ к шине,
	посредством сигнала /BUSREQ и, получив разрешение выставляет нужный адрес и читает байт в промежуточный буфер. Так от 1-й до 6-х "плоскостей" в зависимости от видеорежима.
	Второй вариант аналогичен орионовскому прозрачному доступу к памяти. Синхронизация осуществляется через сигнал PHI процессора.
	Из промежуточного буфера байты данных с частотой пиксельклока переписываются в регистр вывода и через ЦАП на VGA-монитор.
 Логику работы видеоадаптера на ПЛИС с процессором Z180 вижу так: по пиксельклоку или удвоенному пиксельклоку видеомодуль запрашивает у процессора доступ к шине,
	посредством сигнала /BUSREQ и, получив разрешение выставляет нужный адрес и читает байт в промежуточный буфер. Так от 1-й до 6-х "плоскостей" в зависимости от видеорежима.
	Второй вариант аналогичен орионовскому прозрачному доступу к памяти. Синхронизация осуществляется через сигнал PHI процессора.
	Из промежуточного буфера байты данных с частотой пиксельклока переписываются в регистр вывода и через ЦАП на VGA-монитор. 
	 
О RAM-дисках: при объёме памяти 1024 (512) КБ, как-то коряво будет иметь 15 (7) дисков по 60 КБ. Логичнее создать один непрерывный из всех страниц начиная с последней доступной, ибо снизить вероятность заползания на 1-ю страницу, где лежат атрибуты цвета. Программно это сделать нетрудно, было-бы желание автора или исходники и толковый программист!
Для работы с ПЛИС используется "Quartus II" 10.0 (в следующих нет поддержки 3000/7000 серии). Для программирования заказан китайский "USB Blaster".
Можно использовать более простой - ByteBlaster. Что-бы установить его драйвер, в папке bin Квартуса запускаем bblpt /i
Визуально строить схему, конечно, можно. Но до определённой сложности и размера. 
Нырнуть более глубоко нам поможет язык описания аппаратуры -  VHDL
	Возникла ещё такая идея: использовать огромный ассортимент переферии от Ардуино на шине SPI, через последовательный интерфейс процессора Z180. Это модуль часов реального времени DS3231,
	модуль карты MicroSD, сетевой модуль ENC28J60/W5500, WIFI модуль ESP8266 ESP-07, Bluetooth HC-05/06, RFID, ИК приёмник...
	А прикрутив драйверы внешних устройств можно управлять более мощными железяками! Электроприводы, замки, освещение!
	
| SPI Interface | ||||
|---|---|---|---|---|
|   |   |   |   |   | 
| Micro SD Module | Ethernet Module | RFID Module | LoRa radio Module | WiFi/BT radio Module | 
| I2C Interface | ||
|---|---|---|
|   |   |   | 
| Real Time Clock Module | Flash memory | VGA Videocamera Module | 
| Serial Interface | ||||
|---|---|---|---|---|
|   |   |   |   |   | 
| USB Keyboard&Mouse Module | BlueTooth Module | RS-232 Radio Module | RS-232 GSM Module | MP3 TF Module | 
Всё течёт, все меняется. Вот, и у меня изменилось видение конструкции.
В орионовском сообществе витала идея модульного Ориона. Почему-бы и нет? Оставив фишку с прозрачным доступом видеоформирователя к ОЗУ, сделаем остальные  модули сменными!
А что-бы не изобретать велосипед, используем готовые модули для шины RC2014. Для начала возьмём процессорный модуль на Z80 и модуль памяти на статике.
Плата остаётся под ATX корпус с слотами DIN, но добавлены разъёмы под модули RC2014. Так-же остаются схема видеовывода, дешифраторы.
Заложена возможность использования процессорных модулей Z80, Z180, Z280, i8085, MOS6502
Модуль памяти может быть один для нулевой стриницы или два для нулевой и первой страниц. Или сдвоенные для четырёх страниц общим объёмом до 4 мб или 64 мб при 24-битной ША.
Синхрогенератор выполнен в виде сменной платы в разъёме шины RC2014 и позволяет менять частоты процессора и строяною и кадровую частоты для монитора.
 
| Подпрограммы "Монитора" | |||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| 0F803H | Ввод символа с клавиатуры | A - введенный символ | |||||||||
| 0F806H | Ввод байта через последовательный интерфейс (Было Ввод байта с магнитофона) | ||||||||||
| 0F809H | Вывод символа на экран | C - выводимый символ | |||||||||
| 0F80CH | Вывод байта через последовательный интерфейс (Было Запись байта на магнитофон) | ||||||||||
| 0F80FH | Вывод символа на дисплей | Код символа в А, регистры сохраняются. | |||||||||
| 0F812H | Опрос состаяния клавиатуры | A=00 - клавиши не нажаты, A=0FFH - нажата любая клавиша | |||||||||
| 0F815H | Вывод байта на экран в HEX | A - выводимый символ | |||||||||
| 0F818H | Вывод на экран сообщения | HL - адрес начала сообщения, 00 - конец. | |||||||||
| 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 | Генерация звукового сигнала | ||||||||||
| 0F84EH | опрос порта мыши | 0F854H | чтение сектора с диска | 0F857H | запись сектора на диск | 0F85AH | A=2 - получить системное время | A=3 - установить системное время A=4 - прочитать дату из часов реального времени A=5 - установить дату в часах реального времени 0F85DH | Работа с последовательными портами | 0F85DH | Опрос джойстика |  | 
| Служебные ячейки "Монитора" | ||
|---|---|---|
| 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Н (для процессора КР580ВМ80 с частотой 2,5 МГц). | |
| 0F3DBH | ячейка, хранящая константу чтения с магнитной ленты. Для стандартной скорости - 60Н (для процессора КР580ВМ80 с частотой 2,5 МГц). | |
| 0F3E7H | Тон звука подпрограммы F83FH | |
| 0F3DH | ||
| 0F3DH | ||
| 0F3DH | 
| Подпрограммы ОРДОС | ||
|---|---|---|
| 0A800H | Готовность принтера | |
| 0A803H | Печать | Выдача кода в регистре C на принтер. | 
| 0A806H | ||
| 0A8?? | Работа с последовательными портами | |
| 0A8?? | 
| Служебные ячейки ОРДОС | ||
|---|---|---|
| 0A800H - 0A87FH | Драйвер принтера LPT | |
| 0A800H - 0AFFFH | Драйверы | |
| 0BFFDH | горячий выход в ОРДОС | |
| 0BFB8H | ||
| 0BF?? | 
| Порты "Орион-128" | Радио 1993 №4 | [ Info ] | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0F400H-0F403H | порты программной клавиатуры (РК86, МС7007) | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 0F500H-0F503H | порты внешнего ROM-диска | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 0F600H-0F603H | порты для проведения экспериментов, временного использования. Определенного назначения не имеют | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Платы расширения | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 0F700H-0F70FH | Резерв (системные регистры "ORION-Рго") | КНГМД выбирается по адресам F700/F720 (SP-Comp. Club) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 0F710H-0F71FH | Контроллер НГМД и НТМД | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 0F720H-0F72FH | Порт принтера, джойстики, дополнительные параллельные порты | КНГМД выбирается по адресам F700/F720 (SP-Comp. Club)/ВИ53 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 0F730H | регистр данных КР580ВВ51 (COM1) | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 0F731H | регистр управления КР580ВВ51 (СОМ1) | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 0F734H | регистр данных КР580ВВ51 (COM2) | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 0F735H | регистр управления КР580ВВ51 (СОМ2) | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 0F738H | счетчик канала 0 КР580ВИ53 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 0F739H | счетчик канала 1 КР580ВИ53 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 0F73AH | счетчик канала 2 КР580ВИ53 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 0F739H | регистр управления КР580ВИ53 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 0F740H-0F747H | Таймер звукового сигнала КР580ВИ53 | ВН59 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 0F748H-0F74FH | Музыкальный процессор AY8910/12 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 0F750H-0F75FH | Часы, календарь 512ВИ1 (DS12885)/IDE адаптер ПРО | 0F752H-0F753H | SD карта - введено 28/06/2022 | 0F760H-0F76FH | Контроллер прерываний КР580ВН59 | RTC (часы) на ИМС 512ВИ1 схема Акимова, рег-ры данных и адреса поменяны местами | ВВ51 | 0F770H-0F77FH | Мегапорт КР580ВВ55 4 шт. | Ethernet RTL8019AS/DM9000 | 0F780H-0F78FH | КР580ВВ55 | Ethernet RTL8019AS/DM9000 | 0F790H-0F797H | Аппаратная клавиатура PS/2 HT6542B | Накопитель ЖД IDE | 0F798H-0F79FH | Последовательный интерфейс КР580ВВ51 | 0F7A0H-0F7AFH | Внешний квазидиск большой ёмкости | Музыкальный процессор AY8910/12 | 0F7B0H-0F7BFH | CF карта (IDE) | RTC (часы) на ИМС 512ВИ1 (авторская схема) | 0F7C0H-0F7CFН | Часы DS1307 | 0F7D0H-0F7DFH | Мегапорт КР580ВВ55 4 шт. | 0F7E0H-0F7EFH | Порт RS232 СОМ2 (и COM3) 16С550 | 0F7F0H-0F7FFH | Музыкальный процессор AY8910/12 | Только для записи, при чтении будет доступно ПЗУ с Монитором: | 0F800H-0F8FFH | Color Mode | 0F900H-0F9FFH | RAM Page | 0FA00H-0FAFFH | Video Address | 0FB00H-0FBFFH | Display Type: Graphics/Text | Только для записи с Z80 Card-II Чистякова: | 0F8H |  | 0F9H |  | 0FAH |  | 0FAH |  | 0FCH |  | 0FDH | AY8910/12 по схеме, совместимой со Спектрумом | 0FEH | D4 - звук Спектрума. Выбор старших адресов ROM | 0FFH | Звук |  | ||
| Разъём расширения (Радио 1993 №4) | [ Info ] | Контакт | Цепь | Контакт | Цепь | Контакт | Цепь |  | Орион-128 классика | Восточный Экспресс 512 | Орион-М | Орион-128 классика | Восточный Экспресс 512 | Орион-М | Орион-128 классика | Восточный Экспресс 512 | Орион-М/S | A1 |  |  | /F70x | B1 |  |  | +3.3V | C1 | /RES | /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 | /SYNC | /SYNC | C7 | A10 | A10 | A10 | A8 |  |  | /F77x | B8 |  |  | /BUSAK | C8 | A11 | A11 | A11 | A9 |  |  | /F78x | B9 |  |  | /BUSREQ | C9 | A14 | A14 | A14 | A10 |  |  | /F79x | B10 |  |  | A16 | C10 | A13 | A13 | A13 | A11 |  |  | /F7Ax | B11 |  |  | A17 | C11 | A12 | A12 | A12 | A12 |  |  | /F7Bx | B12 |  |  | A18 | C12 | A15 | A15 | A15 | A13 |  |  | /F7Cx | B13 |  |  | A19 | C13 | A9 | A9 | A9 | A14 |  |  | /F7Dx | B14 | A8 | A8 | A8 | C14 | /WR | /WR | /WR | A15 | GND | GND | GND | B15 | GND | GND | GND | C15 | GND | GND | GND | A16 |  |  | /F7Fx | B16 | SOUND |  | SOUND | C16 | /INT | /INT | /INT0 | A17 |  |  | SPI MISO | B17 |  |  |  | C17 | A7 | A7 | A7 | A18 |  |  | SPI MOSI | B18 |  |  |  | C18 | A6 | A6 | A6 | A19 |  |  | SPI SCK | B19 |  |  |  | C19 | A5 | A5 | A5 | A20 |  |  |  | B20 | RESET | RESET | RESET | C20 | A4 | A4 | A4 | A21 |  |  | I2C SCL | B21 |  |  | /NMI | C21 | A3 | A3 | A3 | A22 |  |  | I2C SDA | B22 | /BACS |  | /IORQ | C22 | A2 | A2 | A2 | A23 |  |  | /DREQ1 | B23 | CLKF1 |  | PHI | C23 | A1 | A1 | A1 | A24 |  |  | /TEND1 | B24 | CLK1,25 |  | /INT1 | C24 | A0 | A0 | A0 | A25 |  |  | CLK | B25 | IKS |  | /INT2 | C25 | /RD | /RD | /RD | A26 |  |  |  | B26 | /SELROM |  | /F8xx | C26 |  |  | /WAIT | A27 |  |  | +5V | B27 | +5V | +5V | +5V | C27 | +5V | +5V | +5V | A28 |  |  | /RFSH | B28 |  |  | /M1 | C28 | /INTE	(BEEP) | /INTE (BEEP) | BEEP | A29 |  |  |  | B29 | /SELP4 | /SELP4 | /FBxx | C29 | READY | READY | /RDY | A30 |  |  | /F7E0H | B30 | /SELPR | /SELPR | /F7xx | C30 | /RESKEY | /RESKEY | /RESKEY | A31 |  |  |  | B31 | /CLK10 |  | /OSC | C31 | /BlocRAM | /BlocRAM | /BlocRAM | A32 |  |  |  | B32 | /DSYN | 50/60Hz | /MREQ | C32 | DSYN | DSYN |  |  | ||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|