Перейти к содержанию
    

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

[\quote]

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

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

Изменено пользователем Lisitsin

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

Автору:

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

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

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

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

Автору:

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

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

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

 

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

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

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

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

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

[\quote]

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

 

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

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

 

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

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

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

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

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

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

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

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

 

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

 

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

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

 

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

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

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

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

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

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

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

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

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

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

 

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

Изменено пользователем Lisitsin

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Всем привет. Разрабатываю 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 вообщем самый удобный для портирования оказался.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

 

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

 

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

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

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

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

 

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

 

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

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...