PDA

Просмотр полной версии : Spectrum on AVR



sammy_jankis
20.11.2012, 15:18
Всем привет :)
Вот на собственно досуге.


Целью проекта была ни сколько юзабельность или точность работы,
сколько желание увидеть на дисплее любимую надпись бэйсика
" с 1982 Sinclair Research Ltd "

В реальности на авр крутиться настоящий эмулятор Z80, прилеплена SRAM 64 килобайта , в качестве пямяти эмулируемого проца.
Эмулируется прерывание после завершения отрисовки кадра как в натуральном спекки. Далее отрисовывается все что находится
в экранной области (из реального SRAM прямо на дисплей), попиксельно (атрибуты пока не работают). Ром бэйсика выполняет все свои дела : начаный тест, опрос клавы, отрисовку , порты ,как на реальной машине.
Сам же ром грузится с microSD в нашу SRAM .
Проект дошел до стадии (появлении изображения :D ) более-менее точной эмуляции в том числе и недокументированных инструкций.
Багов много. Нет времени отлаживать. Да и суть всего этого была - понимание, практика.
Кстати в результате работы очень помогли эмуляторы : z80ex-1.1.19 , EmuZWin , aspectrum-0.1.3.tar ,spiffy.
Размер голого эмуля 16кб , пока это оптимально скорость работы\размер. Принципе можно сжать еще ,но тогда 20 МИПС авр будут еле гонять и без того медленную развалину))
Пытался прикрутить кнопку. Вроде получилось. В прерывании проц захватывает с порта состояние кнопки. Но есть маленький косячек.
Бэйсик не выводит оператор , а просто печатает символ. Флаги... такие флаги.... ;)
Смог и выдержал отладку до мэйна бэйсика. Но баг где-то глубже.
Экран отрисовывает сколько может пикселей. 176х 132. остальное срезает.

В Принципе можно все довести до ума и юзабельного состояния :cool_std: при хорошей мотивации.

В качестве принципа декодирования команд были выбраны таблицы переходов. После выборки и декодирования , производится дополнительное декодирование регистров, условий , прочего... это очень сэкономило место при компиляции дублирующихся команд.

Плохое видео
https://www.youtube.com/watch?v=t4R9-Mc0Lfo


прилагаю исходники и проект в протеусе :)

osa
20.11.2012, 15:40
где то я уже это видел:) человек с ником лисицин вам в поиск, объединяйтесь:)

sammy_jankis
20.11.2012, 18:51
спасибо :)

вообще для себя хотел в будущем, так если не заброшу все это к чертям
сделать портативную консольку. так что-бы 2 микросхемки или вообще одна, залил прошивку, примотал на изоленте дисплей и игралсо :D

давно смотрел проект Лисицина. Ничего против человека не имею, гениально.
НО ооочень расточительно! куча дорогих(да,да сейчас цены взлетели на авр!!!) мк,
толстый проек. новичку не освоить.

да , эмуляция у него почти железная. очень грамотный и красивый код на асме :)
но он так и останется на АВР, так как не переносимый.

вот думаю как нибудь запустить свой на STM32F4 168МГц.
Скорость будет норм. оперативы валом! все залезет.
единственное что останавливает это куда выводить изображение. дисплея нет. телека нет. моник один))

вот и одна дешевая микра и целый спек.

хотя кому как :)

AHTuXPuCT
20.11.2012, 19:12
sammy_jankis, возьми дисп от китайского телефона.
есть с разной диагональю :)
цены на них не большие

newart
20.11.2012, 19:25
AHTuXPuCT, зачем если есть цветной дисплей от NDS с родным разрешением 256х192 за 9$?

AHTuXPuCT
20.11.2012, 19:32
newart, за 9$ дорого :)
у нас диспы 3 дюйма диагональю по 130р в розницу, по опту 115
да и разрешение у них 320х240.
про BORDER не забывай ;)

newart
20.11.2012, 21:18
Ну Ок если так. Тут вопрос скорее в том какой из экранчиков получится прикрутить.

sammy_jankis
20.11.2012, 23:42
в интернетах нашел от нокий парочку, попробую достать.
в моем городе это очень проблематично))

один вопросик.

как кто отлаживает свои эмуляторы? какие тесты гоняете?

вот надумал зексал покрутить, на полгода застряну))))

существуют ли какие нибудь методы отладки , чтобы сразу протестить правильность работы инструкции, и если ошибка - сразу ее заметить.
сам свой отлаживал так: запускал в протеусе контроллер и рядом готовый эмуль с дебагером и пошагово сравнивал результаты. флаги и регистры. так много косяков нашел.

Vitamin
21.11.2012, 07:26
в моем городе это очень проблематично))
ЕПНИП, в том же НеоВи давным-давно еще видел разные экраны. С тех пор что-то поменялось?

sammy_jankis
22.11.2012, 21:56
вот забежал в неови, только настроение испортили.
с клиентами там обходятся очень плохо (мягко сказано)
сказали мы вас не понимаем, можем что-то привезти с ростова.
назвали цену - просто космос.
такие вот дела :(

нашел одну лавочку возле "радуги"
ремонтники. Б\у , новые дисплеи от телефонов валом. от 150 р.
На выходных как нить закуплюсь.

кто нибудь из гуру даст совет как отлаживать? :)
портирую на стм если что :)
пока в наличии плата STM32F4-Discovery

skyther
22.11.2012, 22:11
а что не под stm32F103? есть же дешовые борды с дисплеями типа STM32 HY-MINI

sammy_jankis
22.11.2012, 22:39
да принципе можно под любой , где есть 64кб под память спека + переменных не менее 2-4 кб = ОЗУ, само тело эмуля требет 20кб+ библы дисплея, СД, и прочих наворотов.
ну и соответственно производительность 48МГц , с головой :)

погуглил STM32 HY-MINI
хорошие комплекты, туда только кнопки и софт, вообще круто :D

newart
23.11.2012, 01:13
ну и соответственно производительность 48МГц , с головой
А на видео тормозит...

sammy_jankis
23.11.2012, 01:20
так оно ж на 20МГц работает + память(адрес и данные на 8ми проводках :) пока прочитаешь) , 16 и 32 битные значения вычисляются тонной ассемблерного кода, в то время как 32х разрядный проц делаем это одной инструкцией да и опкоды сразу берет из оперативы за один-два такта. даже 25МГц АРМа может хватить для нормальной скорости эмуляции.

проект протеусовский гляньте :)

newart
23.11.2012, 08:37
Так то да, на Nintendo DS спек эмулится идеально, с 128к/AY/TR-DOS на 67мгц.

sammy_jankis
23.11.2012, 13:50
сейчас сломал все свои стереотипы, вспомнив PALM V , на котором очень очень давно
запускал какой-то из эмуляторов спека :)

там ведь 16Мгц , 2.7 MIPS!!!!!!

полез в сорсы palmspec :)

CityAceE
23.11.2012, 16:53
полез в сорсы palmspec
Толку в том эмуляторе не было. Только факт наличия и не более того. Экран не масштабировался, а скорость эмуляции была удручающе низкой. Собственно, это и подтолкнуло к написанию собственного эмулятора.

newart
24.11.2012, 00:16
там ведь 16Мгц , 2.7 MIPS!!!!!!

На Амиге вообще 7мгц! А эмуль работал шустрее чем на палме.

Titus
24.11.2012, 02:05
На Амиге вообще 7мгц! А эмуль работал шустрее чем на палме.
На A600 вообще почти никак работал эмуль) 50МГц минимум нужно было.