В 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-ю страницу, где лежат атрибуты цвета. Программно это сделать нетрудно, было-бы желание автора или исходники и толковый программист!
Для работы с ПЛИС используется "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
I2C Interface
Serial Interface
Подпрограммы ОРДОС | ||
---|---|---|
0A800H | Готовность принтера | |
0A803H | Печать | Выдача кода в регистре C на принтер. |
0A806H |
Служебные ячейки ОРДОС | ||
---|---|---|
0A800H - 0A87FH | Драйвер принтера LPT | |
0A800H - 0AFFFH | Драйверы | |
0BFFDH | горячий выход в ОРДОС | |
0BFB8H |
Подпрограммы "Монитора" | |||||
---|---|---|---|---|---|
0F803H | Ввод символа с клавиатуры | A - введенный символ | |||
0F806H | Ввод байта с магнитофона | ||||
0F809H | Вывод символа на экран | C - выводимый символ | |||
0F80CH | Запись байта на магнитофон | ||||
0F80FH | Вывод символа на дисплей | Код символа в А, регистры сохраняются. | |||
0F812H | Опрос состаяния клавиатуры | A=00 - клавиши не нажаты, A=0FFH - нажата любая клавиша | |||
0F815H | Вывод байта на экран в HEX | A - выводимый символ | |||
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 | Генерация звукового сигнала | ||||
0F84EH | опрос порта мыши
0F854H | чтение сектора с диска
| 0F857H | запись сектора на диск
| |
Служебные ячейки "Монитора" | ||
---|---|---|
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-Рго") | КНГМД выбирается по адресам F700/F720 (SP-Comp. Club) | ||||||||||||||||||||||||||||||||||||||
0F710H-0F71FH | Контроллер НГМД и НТМД | |||||||||||||||||||||||||||||||||||||||
0F720H-0F72FH | Порт принтера, джойстики, дополнительные параллельные порты | КНГМД выбирается по адресам F700/F720 (SP-Comp. Club) | ||||||||||||||||||||||||||||||||||||||
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 | |||||||||||||||||||||||||||||||||||||||
0F748H-0F74FH | Музыкальный процессор AY8910/12 | |||||||||||||||||||||||||||||||||||||||
0F750H-0F75FH | Часы, календарь 512ВИ1 (DS12885)/IDE адаптер ПРО
0F752H-0F753H | SD карта - введено 28/06/2022
| 0F760H-0F76FH | Контроллер прерываний КР580ВН59 | RTC (часы) на ИМС 512ВИ1 схема Акимова, рег-ры данных и адреса поменяны местами
| 0F770H-0F77FH | Мегапорт КР580ВВ55 4 шт. | Ethernet RTL8019AS/DM9000
| 0F780H-0F78FH | КР580ВВ55 | Ethernet RTL8019AS/DM9000
| 0F790H-0F797H | Аппаратная клавиатура PS/2 HT6542B
| 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
| |
Разъём расширения (Радио 1993 №4) | [ Info ]
Контакт | Цепь | Контакт | Цепь | Контакт | Цепь
| | Орион-128 классика | Восточный Экспресс 512 | Орион-М | Орион-128 классика | Восточный Экспресс 512 | Орион-М | Орион-128 классика | Восточный Экспресс 512 | Орион-М
| A1 | | | /F70x | B1 | | | | 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 | /DREQ1 | C7 | A10 | A10 | A10
| A8 | | | /F77x | B8 | | | /TEND1 | C8 | A11 | A11 | A11
| A9 | | | /F78x | B9 | | | | C9 | A14 | A14 | A14
| A10 | | | /F79x | B10 | | | A19 | C10 | A13 | A13 | A13
| A11 | | | /F7Ax | B11 | | | A18 | C11 | A12 | A12 | A12
| A12 | | | /F7Bx | B12 | | | A17 | C12 | A15 | A15 | A15
| A13 | | | /F7Cx | B13 | | | A16 | 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 | | | /INT1 | C17 | A7 | A7 | A7
| A18 | | | SPI MOSI | B18 | | | /NMI | C18 | A6 | A6 | A6
| A19 | | | SPI SCK | B19 | | | /M1 | C19 | A5 | A5 | A5
| A20 | | | /M1 | B20 | RESET | RESET | RESET | C20 | A4 | A4 | A4
| A21 | | | I2C SCL | B21 | | | | C21 | A3 | A3 | A3
| A22 | | | I2C SDA | B22 | /BACS | | /IORQ | C22 | A2 | A2 | A2
| A23 | | | | B23 | CLKF1 | | PHI | C23 | A1 | A1 | A1
| A24 | | | | B24 | CLK1,25 | | | C24 | A0 | A0 | A0
| A25 | | | CLK | B25 | IKS | | /INT2 | C25 | /RD | /RD | /RD
| A26 | | | | B26 | /SELROM | | /F8xx | C26 | | |
| A27 | | | +5V | B27 | +5V | +5V | +5V | C27 | +5V | +5V | +5V
| A28 | | | /RFSH | B28 | | | | C28 | /INTE (BEEP) | /INTE (BEEP) | BEEP
| A29 | | | +3,3V | B29 | /SELP4 | /SELP4 | /FBxx | C29 | READY | READY | /WAIT
| A30 | | | /F7E0H | B30 | /SELPR | /SELPR | /F7xx | C30 | /RESKEY | /RESKEY | /RESKEY
| A31 | | | /BUSAK | B31 | /CLK10 | | /OSC | C31 | /BRAM | /BRAM | /BRAM
| A32 | | | /BUSREQ | B32 | /DSYN | 50/60Hz | /MREQ | C32 | DSYN | DSYN |
| |
---|