Переименовал «кодовое название»…
Дo сих пор описываемый и разрабатываемый здесь процессор не имел никакого названия.
Если x80 формально задумывался как тот же x86, но 8-битный и с более нормальной (с моей точки зрения) таблицей команд. То в качестве возможного ядра для RISC-сердцевины CISC-оболочки x80 данный процессор получился безымянным как черновой вариант первой схемы в Logisim просто как прикол…
Однако, неделю назад всё-таки задумался о «кодовом названии», так как архитектура в целом получилась:- уникальной: до сих пор не было процессора с машинным кодом «а поговорить?»
- самодостаточной: концептуально процессор очень гибок в самых неожиданных местах
- независимой: никакого copy-paste не было и любое схематическое решение я могу обосновать
Тем самым, получилась совершенно самостоятельная ветка, которую можно развивать, усложняя систему команд (я про странные сочетания, типа «03 AE» или «03 C3»)…
И вот неделю назад, просмотрев один фильм 1982 года, решил вдруг этому фильму представить тёску…:v2_dizzy_indy:
P.S.: Судя по первой реакции социальных сетей, Verilog-проект всё же придётся разворачивать…:v2_dizzy_fire:
Вложений: 1
Эмулятор моего виртуального процессора
Эмулятор
Написал и более-менее отладил эмулятор (Вложение 74808):- 3700…37C6: Оболочка («РАДИО-86РК¹» / «СПЕЦИАЛИСТ²» / «ОРИОН-128³»)
- 3838…3863: Сам псевдо-код для эмулятора
- 3870…38FF: Поддержка совместимости между разными ПК (¹-²-³ и ZX-Spectrum 48Kb) для печати символа и ввода с клавиатуры
- 3900…3A99: Собственно, код самой эмуляции (поддерживаются практически все инструкции)
- 3ADA…3C7F: Дизассемблер (декодирует практически все команды)
- 3C80…3CFF: Заглушка портов УВВ (вывод сообщений о попытках доступа к портам)
Оболочка в первую очередь разрабатывалась под РАДИО-86РК, где и отлаживалось всё.
Адрес эмулятора 3870…3CFF выбран не случайно, так как ZX-Spectrum 48 Kb в ROM#2 по этим адресам имеются FF.
То есть, всё разрабатывалось, чтобы код прошить прямо в ПЗУ и не требовалось что-либо грузить с ленты.:v2_dizzy_sleep2:
Итого
Таким образом, свою идею персонального процессора я реализовал:- Рабочим эскизом в Logisim
- Эмулятором на JavaScript
- Моделью на Verilog с перспективой реализации в ПЛИС/FPGA
- Эмулятором под процессор i8080/z80
В ходе разработки данного эмулятора решил некоторые концептуальные проблемы и белые пятна архитектуры: Теперь нужно доработать эскизы Logisim/Verilog.- Инструкция ARG D,D теперь запрещена и работает как DBG. Тем самым, из-за её упразднения уже никак нельзя выполнить инструкцию, типа «MOV D1,D2» (непосредственная пересылка из порта #2 в порт #1), так как появилась инструкция DBG
- Инструкции JNS/JPO/JNC/JNZ упразднены и на их месте теперь CMS/CMO/CMC/CMZ - инверсия соответствующих флажков. Теперь «JNC» - это «CMC+JC»
- Наконец-то в адресации появился авто инкремент/декремент для организации стека: Так как в качестве индексного регистра неразумно указывать регистр порта УВВ, теперь в рамках индексной адресации они и работают в качестве счётчиков (считает только D₉, остальные D₀…₈ лишь определяют направление счёта и смещение)
- Некоторые комбинации так и не определены. Условно они обозначаются как инструкции EXA/EXB/EXC/EXD/EXE
Теперь предстоит данный код эмулятора/дизассемблера вписать в ZX-ROM и аккуратненько прогнать в EmuZWin…:v2_dizzy_snowball2: