1 Отредактировано AlexBel (31-12-2017 17:20)

Тема: 6502 - эмуляция эмуляции эмуляции

Привет всем.

Решил посмотреть, как микроконтроллер ATmega128 справится с эмуляцией 8-битных процессоров. Паять пока что лень, поэтому воспользовался схемным симулятором Proteus. Модель контроллера работает на 16МГц, скорость виртуального порта терминала 19200, память используется внешняя, обращение к ней организовано программно. Использовано софтядро процессора M6502, взятое отсюда: https://fms.komkon.org/EMUL8/ Компилятор - GCC в составе WinAVR. Бейсик - Enhanced 6502 BASIC (https://github.com/Klaus2m5/6502_EhBASIC_V2.22), очень удобно сделан в плане исходников, легко адаптируется. Код Бейсика загружается в память с SD-карты. Конструкция получилась довольно тяжеловесной для используемого контроллера, однако, всё это как-то ворочается и функционирует.

Видео работы симулятора: https://yadi.sk/i/j9b0CaOo3R8WHG

Схемный симулятор Proteus симулирует работу контроллера ATmega128, который в свою очередь симулирует процессор 6502, в котором работает Бейсик, в котором выполняется программа... так и хочется добавить: "...в доме, который построил Джек" :)

В дальнейших планах запустить это дело на реальном железе. Возможно, опробую на контроллерах PIC32 и STM32. Также планирую запустить софтядро Z80 (взятое с того же ресурса, что и М6502) и на нём завести CP/M. Если, конечно, позволит время и не пропадёт интерес к таким экспериментам.

Возможно, это будет кому-нибудь интересно.

Алексей.

http://forum.agatcomp.ru//misc.php?action=pun_attachment&item=319&download=1

Post's attachments

Attachment icon 6502_emu_128.png 62.23 kb, 578 downloads since 2017-12-31 

2 Отредактировано Daniil Chislov 86 (07-07-2018 16:55)

Re: 6502 - эмуляция эмуляции эмуляции

То-есть он аппвратно совместим и его можно в агат поставить ?

3 Отредактировано AlexBel (07-07-2018 18:11)

Re: 6502 - эмуляция эмуляции эмуляции

Daniil Chislov 86 пишет:

То-есть он аппвратно совместим и его можно в агат поставить ?

Кто аппаратно совместим?

4

Re: 6502 - эмуляция эмуляции эмуляции

Я почему-то подумал что эта штука эмулирует 6502 и может использоваться в заместо 6502. То-есть на плату впаять вместо 6502 плату переходник с контроллером ATmega128 и его обвязкой.

5 Отредактировано AlexBel (07-07-2018 18:10)

Re: 6502 - эмуляция эмуляции эмуляции

Эта штука действительно программно эмулирует 6502 и, теоретически, контроллер можно поставить на место реального 6502 в тот же "Агат", если соблюсти времянки сигналов. Практически я в этом не вижу никакого смысла - раздобыть железный 6502 очень несложно.
А этот проект - просто шутка, развлечение, разработанный во время отдыха. Хотя, он абсолютно работоспособен и может быть использован в качестве базы для чего-нибудь посерьёзнее.

6

Re: 6502 - эмуляция эмуляции эмуляции

Вот я это и проверю потом

7

Re: 6502 - эмуляция эмуляции эмуляции

"Вот это" - что?
Пожалуйста, излагайте Ваши мысли так, чтобы не приходилось всё время уточнять.

8

Re: 6502 - эмуляция эмуляции эмуляции

AlexBel пишет:

"Вот это" - что?
Пожалуйста, излагайте Ваши мысли так, чтобы не приходилось всё время уточнять.

Вродеинаписано по русски "вот я это и проверю потом"
Вот я и проверю потом на реальном железе.

9

Re: 6502 - эмуляция эмуляции эмуляции

Не думал, что придётся объяснять.
Итак, моё сообщение:

Эта штука действительно программно эмулирует 6502 и, теоретически, контроллер можно поставить на место реального 6502 в тот же "Агат", если соблюсти времянки сигналов. Практически я в этом не вижу никакого смысла - раздобыть железный 6502 очень несложно.
А этот проект - просто шутка, развлечение, разработанный во время отдыха. Хотя, он абсолютно работоспособен и может быть использован в качестве базы для чего-нибудь посерьёзнее.

Из ответа на него "Вот я и проверю потом на реальном железе" можно обоснованно предположить:

Вот я и проверю потом на реальном железе - что можно программно эмулировать 6502
Вот я и проверю потом на реальном железе - что контроллер можно поставить вместо реального 6502
Вот я и проверю потом на реальном железе - что нужно при этом соблюдать времянки сигналов
Вот я и проверю потом на реальном железе - есть или нет смысла ставить контроллер вместо реального 6502

И какой смысл ответа должен выбрать я или кто-нибудь другой, кто прочитает тему? Вы дважды дали ответ, из которого непонятно, что именно Вы ответили. Пожалуйста, пишите так, чтобы смысл был понятен не только Вам, но и другим.

10

Re: 6502 - эмуляция эмуляции эмуляции

Вот я и проверю потом на реальном железе - что контроллер можно поставить вместо реального 6502.

11

Re: 6502 - эмуляция эмуляции эмуляции

какая скорость при этом будет ?...

12 Отредактировано AlexBel (08-07-2018 09:51)

Re: 6502 - эмуляция эмуляции эмуляции

Заранее трудно сказать - слишком от многих факторов зависит. Используемый компилятор и режим оптимизации (если он есть), используемое софтядро, алгоритмы эмуляции сигналов...
Есть проект - ZX-Spectrum на двух ATmega128. Одна используется в качестве видеоконтроллера, вторая эмулирует Z80. Вроде бы, это работает. На zx.pk есть тема, можно посмотреть инфо или спросить про скорость - Z80 всё же потяжелее 6502 будет. Хотя, это не самый лучший пример - ведь, если контроллер с внутри 6502 ставить в реальную машину, то, опять-таки, жёсткие тайминги, на которых "Агат" сильно завязан.
По мне, так лучше уж использовать софтядро в FPGA. А если контроллер, то что-нибудь пошустрее. Я вот, например, на STM32 перешёл - очень вкусно...

13 Отредактировано Voldemar0 (08-07-2018 19:56)

Re: 6502 - эмуляция эмуляции эмуляции

Ты хоть порядок скажи. Эквивалент 500 кгц 6502, ... 10 кгц 6502 .... ?
Сколько команд атмеги у тебя примерно приходится на одну команду 6502 ?

У avr примерно 2-3 такта/команда, у 6502 - 3-5. Частота у avr до 16 мгц, у 6502 - 1 мгц. Т.е. можно максимум команд 30 avr допустить для каждой 6502, и тут должно быть всё: счётчик команд, расчёт флагов, расчёт результатов, вытаскивание их из озу и сохранение....

14

Re: 6502 - эмуляция эмуляции эмуляции

С чужих слов: эмуляция на ATmega128 при её 16МГц софтядром на Си (которое использовал я) - примерно 1МГц. В проекте на ATmega32, где ядро 6502 написано на ассемблере, частота 2МГц. Но от этих чисел толку мало, поскольку эмуляция внутри контроллера (ну, ещё общение с внешней памятью) требует значительно меньше действий, чем работа в качестве реального процессора. Например, вопрос тактовой частоты - требуется жёсткая синхронизация с внешним тактовым сигналом, на что тоже нельзя выделить много команд.
Ещё один вопрос - софтядра написаны из расчёта использования в софтэмуляторах, поэтому совсем необязательно они будут эмулировать работу реального процессора такт в такт. А для работы в качестве реального процессора это нужно.
Сам я всё это не проверял по причине полного отсутствия к этим данным интереса :)

15 Отредактировано AlexBel (22-05-2019 07:16)

Re: 6502 - эмуляция эмуляции эмуляции

Эмуляция 6502 на AVR - указана приблизительная производительность: "The achievable 6502 equivalent clock speed is approximately 2 MHz at 16 MHz ATMega clock"

https://github.com/Klaus2m5/AVR_emulated_6502_4SBC