Jump to content

    
Sign in to follow this  
Lisitsin

ZX Spectrum: аппаратная реализация на микроконтроллерах AVR

Recommended Posts

На атмеге это будет извращение, а на АРМе- была попытка такое сделать. Зачем это было нужно- восстановление одного древнего измерительного комплекса, у которого изначально процессор был на Z80. Нужен был аппаратный эмулятор с возможностью снятия лога в риалтайме, иначе алгоритм обработки и взаимодействия с аппаратурой был непонятен. Учитывая то, что прошивка было полудохлая (от давности протерлись УФПЗУ) и приходилось работать с кусками кода, возня была еще та. Больше всего достало отсутствие 5 вольтовых FPGA- приходилось городить огород, чтобы правильно сэмулировать шину.

Share this post


Link to post
Share on other sites

Ну а мне непонятен вообще такой подход. SPECTRUM легко реализуется всего на трех корпусах. Любой современный клон Z80, CPLD для обвязки и контроллера дисков, и памяти. И никакой програмной эмуляции. Или в конце концов одна FPGA достаточного объема.

А так как у автора топика можно и на транзисторах собирать.

Share this post


Link to post
Share on other sites
Ну а мне непонятен вообще такой подход. SPECTRUM легко реализуется всего на трех корпусах. Любой современный клон Z80, CPLD для обвязки и контроллера дисков, и памяти. И никакой програмной эмуляции. Или в конце концов одна FPGA достаточного объема.

А так как у автора топика можно и на транзисторах собирать.

Если на CPLD - прибавим ещё ROM, стабилизатор питания, на чём-то надо собирать орбитр памяти. Реальные конструкции на CPLD на самом деле имеют около 10 корпусов. У меня 8 - и без CPLD. Планирую сократить до 7.

Share this post


Link to post
Share on other sites
Если на CPLD - прибавим ещё ROM, стабилизатор питания, на чём-то надо собирать орбитр памяти. Реальные конструкции на CPLD на самом деле имеют около 10 корпусов. У меня 8 - и без CPLD. Планирую сократить до 7.

ROM не нужен. Одну FRAM на ОЗУ и ПЗУ, существуют корпуса 512X8.

Кроме того вспомните ZX81 (предшественник оригинального SPEKTRUM) был на четырех микросхемах CPU, ROM, RAM и ULA и все. (держал в руках такой в начале 80-х).

Share this post


Link to post
Share on other sites

[\quote]

Кроме того вспомните ZX81 (предшественник оригинального SPEKTRUM) был на четырех микросхемах CPU, ROM, RAM и ULA и все. (держал в руках такой в начале 80-х).

Ой !!! А ссылочку можно ?

Edited by Lisitsin

Share this post


Link to post
Share on other sites

Тема из молодости.

Автору:

ИМХО, для реальных программ (игрушек) завязанных на клавиатуру и всякие "фишки" реальной схемотехники Синклерной той эпохи, наверняка будут "вилы".

Например, как правильно строить реализацию, если кем то писанная программа захочет прочитать код команды не из памяти, а например с шины данных по адресу устройства, которого в настоящем клоне каком нибудь просто нет физически?

Как в первоисточнике или как в КЛОНЕ?

 

Share this post


Link to post
Share on other sites
Тема из молодости.

Автору:

ИМХО, для реальных программ (игрушек) завязанных на клавиатуру и всякие "фишки" реальной схемотехники Синклерной той эпохи, наверняка будут "вилы".

Например, как правильно строить реализацию, если кем то писанная программа захочет прочитать код команды не из памяти, а например с шины данных по адресу устройства, которого в настоящем клоне каком нибудь просто нет физически?

Как в первоисточнике или как в КЛОНЕ?

 

Прошу прощения: а про модель то я и забыл!!! 48, он родной! У него на борту всего один порт ввода-вывода - номер 254. Эмулируется влёт. И каким это программам будет нужно читать данные из несуществующего адреса? А для клавиатурного контроллера программу пол часа назад откомпелировал. Прогоняю в AVRStudio- работает !!!

Share this post


Link to post
Share on other sites
Прошу прощения: а про модель то я и забыл!!! 48, он родной! У него на борту всего один порт ввода-вывода - номер 254. Эмулируется влёт. И каким это программам будет нужно читать данные из несуществующего адреса? А для клавиатурного контроллера программу пол часа назад откомпелировал. Прогоняю в AVRStudio- работает !!!

Ну к примеру, кто нить в Питере "подправил" "ломаную" игрушку. Прочитал FF с ШД, подтянутой резисторами к плюсу и "поехал" в прерывание... .

Когда слепите идею, то "обкатайте" ее в реальном времени реальными программами типа "Пинг Понга"

http://zxspec.ru/screens/p/ping_pong.0.gif

и сравните с реальным 48.

Интересно, что получится.

Share this post


Link to post
Share on other sites
[\quote]

Кроме того вспомните ZX81 (предшественник оригинального SPEKTRUM) был на четырех микросхемах CPU, ROM, RAM и ULA и все. (держал в руках такой в начале 80-х).

 

Ой !!! А ссылочку можно ?

Увы Интернета да и PC тогда еще не существовало. В начале 90-х встречал клон спектрума с логикой реализованой на БМК (это нечто масочное предшественник CPLD) минимум корпусов.

 

Да в игрушках и в защите программ использовалось много специфических особеностей, недокументированные команды Z80,

значение регистра REFRESH, чтение отсутствующих портов (состояние шины данных, следы от выода на экран) и многое другое. На эту тему можно книги писать.

 

Share this post


Link to post
Share on other sites
Ну к примеру, кто нить в Питере "подправил" "ломаную" игрушку. Прочитал FF с ШД, подтянутой резисторами к плюсу и "поехал" в прерывание... .

Когда слепите идею, то "обкатайте" ее в реальном времени реальными программами типа "Пинг Понга"

http://zxspec.ru/screens/p/ping_pong.0.gif

и сравните с реальным 48.

Интересно, что получится.

Прерывание в 48 только INT, и то только для клавиатуры. А программы для другого типа ZX запускать не планирую. Может быть, только в перспективе.

 

Увы Интернета да и PC тогда еще не существовало. В начале 90-х встречал клон спектрума с логикой реализованой на БМК (это нечто масочное предшественник CPLD) минимум корпусов.

 

Да в игрушках и в защите программ использовалось много специфических особеностей, недокументированные команды Z80,

значение регистра REFRESH, чтение отсутствующих портов (состояние шины данных, следы от выода на экран) и многое другое. На эту тему можно книги писать.

 

Если в НЭТЕ до сих пор нет ничего касательно такого проекта - моя тема актуальна. Недокументированные команды эмулирую. Насчёт чтения несуществующих портов: хотелось бы иметь игрушку или программу, которая это делает - чтобы потом погонять. Спасибо.

 

Share this post


Link to post
Share on other sites
Прерывание в 48 только INT, и то только для клавиатуры. А программы для другого типа ZX запускать не планирую. Может быть, только в перспективе.

Через BASIC и чтение клавиатуры по стандартным подпрограммам работали толбко первые простые игрушки.

На смену им пришли игры в бинарных кодах. Работающие совсем автономно, после загрузки ПЗУ вообще не использовалось.

Прерывание устанавливалось NMI и клавиатура опрашивалась любым способом на выбор автора, вплоть до сканирования избранных клавиш. Применение внешней IBM совместимой клавиатуры в таких случаях чрезвычайно сложно эмулировать.

И главное Не вижу практического смысла. Комерческого будущего у этого изделия нет. Разве поучится программировать.

Тогда уж сделать какой нибудь Роутер, аудио проигрыватель, JPS навигатор.

Share this post


Link to post
Share on other sites
Через BASIC и чтение клавиатуры по стандартным подпрограммам работали толбко первые простые игрушки.

На смену им пришли игры в бинарных кодах. Работающие совсем автономно, после загрузки ПЗУ вообще не использовалось.

Прерывание устанавливалось NMI и клавиатура опрашивалась любым способом на выбор автора, вплоть до сканирования избранных клавиш. Применение внешней IBM совместимой клавиатуры в таких случаях чрезвычайно сложно эмулировать.

И главное Не вижу практического смысла. Комерческого будущего у этого изделия нет. Разве поучится программировать.

Тогда уж сделать какой нибудь Роутер, аудио проигрыватель, JPS навигатор.

 

Прерывание от IBM совместимой клавиатуры уже обрабатывается. Опрашивать можно командой IN с любым параметром опроса (0-255). Тип прерывания устанавливается программно любой. Коммерческие цели приследую не в первую очередь. А вообще коммерческая сторона дела мне интересна: что такое сегодня можно разработать, что пользовалось бы хорошим спросом?

Edited by Lisitsin

Share this post


Link to post
Share on other sites
Всем привет. Разрабатываю ZX Spectrum на микроконтроллерах ATMEL (ATMega128 - 2 шт, ATtiny2313 - 1 шт.) Всего в схеме 8 микросхем: центральный процессор (ATMega128), видео процессор (ATMega128), контроллер клавиатуры (ATtiny2313) (планируется применение стандартной клавиатуры PC/2), стабилизатор питания (MC78M05CDT), порт ввода-вывода (SN74S04), формирователь цветного изображения (SN74S257), ОЗУ (IS62C1024) с защёлкой адреса (74AC373). В настоящее время сформировал цветной видеосигнал и написал около 80% эмулятора команд (произво-дительности вполне хватает.)

 

Вы однако выбрали самый тяжелый и неэффективный путь.

 

Вот например на такой платформе вы могли бы свою идею реализовать ну за неделю не больше.

http://www.alylab.eu/OpenProjects/ARMGeoSpyder2/ARMGS2.htm

Наличие акселерометра могло бы заменить джойстик, тачскрин заменил бы мышь. Микрофон и float poin сопроцессор помогли бы сделать управление голосом.

И все это не меняя основной бинарный код старых игрушек.

 

В качестве эмулятора Z80 очень неплохой вот это проект: http://sourceforge.net/projects/cingb/

Здесь в конфе год или больше назад один любитель даже анализ разных эмуляторов Z80 проводил (вернее их расширенных аналогов для игровых приставок)

и демонстрировал их работу на макетной платформе на ARM9.

Так cingb вообщем самый удобный для портирования оказался.

Share this post


Link to post
Share on other sites
А вообще коммерческая сторона дела мне интересна: что такое сегодня можно разработать, что пользовалось бы хорошим спросом?

 

Ну уж явно не эмулятор Спектрума на AVR с минимумом использованных корпусов. :laughing:

Разработать сейчас можно всё что угодно, сложно только продать в достаточном количестве, чтобы окупить затраты на разработку. Те, кто нащупали свои ниши - с вами точно делиться ими не будут.

Share this post


Link to post
Share on other sites
Вы однако выбрали самый тяжелый и неэффективный путь.

 

Вот например на такой платформе вы могли бы свою идею реализовать ну за неделю не больше.

http://www.alylab.eu/OpenProjects/ARMGeoSpyder2/ARMGS2.htm

Наличие акселерометра могло бы заменить джойстик, тачскрин заменил бы мышь. Микрофон и float poin сопроцессор помогли бы сделать управление голосом.

И все это не меняя основной бинарный код старых игрушек.

 

А ради интереса, сколько такая игрушка стоит? Ну а о вышесказанных наворотах я и не думал: это уже не синклер получится.

 

Ну уж явно не эмулятор Спектрума на AVR с минимумом использованных корпусов. :laughing:

Разработать сейчас можно всё что угодно, сложно только продать в достаточном количестве, чтобы окупить затраты на разработку. Те, кто нащупали свои ниши - с вами точно делиться ими не будут.

А то ... Кто станет делиться - пусть сразу наличкой даст, чтобы я глупые вопросы не задавал.

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this