Форум программистов, компьютерный форум, киберфорум
Микроконтроллеры ARM, Cortex, STM32
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.80/1311: Рейтинг темы: голосов - 1311, средняя оценка - 4.80
1 / 1 / 0
Регистрация: 18.10.2013
Сообщений: 92

Эмулятор ZX Spectrum на STM32f4

21.10.2013, 20:38. Показов 253571. Ответов 340
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Написал эмулятор процессора Z80. Использовал отладочную плату STM32f4-discovery, к ней подключен LCD по FSMC. К PA[0-4](входы) и PC[0-7](выходы) подключается стандартная спектрумовская клавиатура (у меня ее правда нет, поэтому пока просто замыкаю пины проводком :)). Пока не реализован тайминг выполнения команд и нормальные прерывания от дисплея (возможно на нормальный вывод на LCD не хватит ресурсов). Но заветная надпись....


вот она!!!
Т.к. это мой первый проект на ARM буду рад услышать критику или предложения, ну и вопросы.


[34.63 Кб]
1
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
21.10.2013, 20:38
Ответы с готовыми решениями:

Нужно настроить эмулятор мобильного телефона MEMU чтобы приложения не видели что это эмулятор
Нужно чтобы сторонние приложения воспринимали эмулятор как реальное устройство без root прав

Qt spectrum
Доброго времени суток. Возникли сложности с пониманием готового кода в Qt примерах. Буду очень благодарен кто сможет объяснить реализацию...

Audio Spectrum
Всем привет, пишу аудио плеер (WinForm). Встал вопрос как сделать Spectrum, кто знает скажите пожалуйста. Нашёл подходящий пример, но...

340
0 / 0 / 0
Регистрация: 23.08.2013
Сообщений: 206
16.01.2014, 13:45
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от Koryim
Цитата Сообщение от iukimi_i_m
Всем привет! Поскольку не подключен к проекту стартуп и сыстеминит у ТС не работает ПЛЛ и подсистема прерываний и прерывания он опрашивает ручками в режиме опроса бита состояний... И вообще процик работает у него на 16ти мегагерцах вместо 180. Безумству храбрых поем мы песню...
Выложил весь проект, архив нужно распаковать на D:. Да и не стесняемся выдаем свои соображения сюда, берите пример iukimi_i_m!

https://dryve.google.com/file/d/0B0C_FY ... sp=sharing

Перевыложите проект нормально. У вас иероглифы вместо русских букв в комментариях, например в файле ssreen.c . Поменяйте кодировку на UTF8 перед тем как выкладывать, ну или перепешите комментарии на английском.

Спасибо.
0
0 / 0 / 0
Регистрация: 18.03.2010
Сообщений: 2,230
16.01.2014, 16:31
а вы знали, что z80 - 4-битный процессор? :)
http://www.righto.com/2013/09/the-z-80- ... ow-it.html
0
1 / 1 / 0
Регистрация: 11.01.2013
Сообщений: 5,479
16.01.2014, 17:01
Цитата Сообщение от Ymk
а вы знали, что z80 - 4-битный процессор? :)
http://www.righto.com/2013/09/the-z-80- ... ow-it.html
Интересно, что даже двоюродный брат Z80 - i8085 - всё-таки восьмибитный.
А вот про их общего предка i8080 в статье не сказано. Надеюсь, он тоже был правильным восьмибитником. Потому что тяжело переживать крушение идеалов :-)
0
1 / 1 / 0
Регистрация: 18.10.2013
Сообщений: 92
17.01.2014, 09:45
Цитата Сообщение от tyvydos
Спасибо,
пересмотрю,хотя в первом source была на lcd ssd1289,неподумал о этом.
Да в первом было на SSD, возьмите оттуда инициализацию. Заработает, дайте знать. Я добавлю в проект вашу инициализацию дисплея.
0
0 / 0 / 0
Регистрация: 06.12.2016
Сообщений: 54
17.01.2014, 20:43
Там только заголовка на 1289,а внутри от LG 4532.
капаюсь в датах обоих и стараюсь переделать,но как особово опыта нету -так пока медлено и радоваться нечем.
Перекоьпилировал с иниц. с других проектов,но пока...
Получиться - порадуюсь,сообщю.
0
1 / 1 / 0
Регистрация: 11.01.2013
Сообщений: 5,479
17.01.2014, 22:56
tyvydos, чтобы быстро завести любой TFT LCD со встроенным контроллером (к таким отосится и SSD1289), реализуйте два шага:
1) после сброса LCD-контроллера (с правильными задержками) прочитайте его ID из соответствующего регистра; правильное значение ID подтверждает, что интерфейс со стороны МК функционирует правильно.
2) после инициализации самая эффективная (и она же, как ни странно, простая) проверка вывода изображения - закраска прямоугольного окна.

Только потом - всё остальное.
0
0 / 0 / 0
Регистрация: 23.08.2013
Сообщений: 206
18.01.2014, 00:49
Вот рабочая инициализация на SSD1289 для этого проекта.

Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
else if (DeviceIdCode == 0x8989)
{
LCD_WriteReg(0x0000, 0x0001);
Delay(50); /* Enable LCD Oscillator */
LCD_WriteReg(0x0003, 0xA8A4);
Delay(50);
LCD_WriteReg(0x000C, 0x0000);
Delay(50);
LCD_WriteReg(0x000D, 0x080C);
Delay(50);
LCD_WriteReg(0x000E, 0x2B00);
Delay(50);
LCD_WriteReg(0x001E, 0x00B0);
Delay(50);
LCD_WriteReg(0x0001, 0x2B3F);
Delay(50); /* 320*240 0x2B3F */
LCD_WriteReg(0x0002, 0x0600);
Delay(50);
LCD_WriteReg(0x0010, 0x0000);
Delay(50);
LCD_WriteReg(0x0011, 0x6058); //AM регистр 0x6070
Delay(50);
LCD_WriteReg(0x0005, 0x0000);
Delay(50);
LCD_WriteReg(0x0006, 0x0000);
Delay(50);
LCD_WriteReg(0x0016, 0xEF1C);
Delay(50);
LCD_WriteReg(0x0017, 0x0003);
Delay(50);
LCD_WriteReg(0x0007, 0x0233); //0x0133
Delay(50);
LCD_WriteReg(0x000B, 0x0000);
Delay(50);
LCD_WriteReg(0x000F, 0x0000);
Delay(50);
LCD_WriteReg(0x0041, 0x0000);
Delay(50);
LCD_WriteReg(0x0042, 0x0000);
Delay(50);
LCD_WriteReg(0x0048, 0x0000);
Delay(50);
LCD_WriteReg(0x0049, 0x013F);
Delay(50);
LCD_WriteReg(0x004A, 0x0000);
Delay(50);
LCD_WriteReg(0x004B, 0x0000);
Delay(50);
LCD_WriteReg(0x0044, 0xEF00);
Delay(50);
LCD_WriteReg(0x0045, 0x0000);
Delay(50);
LCD_WriteReg(0x0046, 0x013F);
Delay(50);
LCD_WriteReg(0x0030, 0x0707);
Delay(50);
LCD_WriteReg(0x0031, 0x0204);
Delay(50);
LCD_WriteReg(0x0032, 0x0204);
Delay(50);
LCD_WriteReg(0x0033, 0x0502);
Delay(50);
LCD_WriteReg(0x0034, 0x0507);
Delay(50);
LCD_WriteReg(0x0035, 0x0204);
Delay(50);
LCD_WriteReg(0x0036, 0x0204);
Delay(50);
LCD_WriteReg(0x0037, 0x0502);
Delay(50);
LCD_WriteReg(0x003A, 0x0302);
Delay(50);
LCD_WriteReg(0x003B, 0x0302);
Delay(50);
LCD_WriteReg(0x0023, 0x0000);
Delay(50);
LCD_WriteReg(0x0024, 0x0000);
Delay(50);
LCD_WriteReg(0x0025, 0x8000);
Delay(50);
LCD_WriteReg(0x004e, 0);
LCD_WriteReg(0x004f, 0);
}
0
1 / 1 / 0
Регистрация: 11.01.2013
Сообщений: 5,479
18.01.2014, 00:56
Цитата Сообщение от Ftopyx
Вот рабочая инициализация на SSD1289 для этого проекта.Код:
... ...Код-то рабочий, но... неоптимально/некрасиво, фи. :-(

Многочисленные повторяющиеся кусочки {LCD_WriteReg(reg, val); Delay(50);} надо засунуть в функцию или хотя бы в макрос.
Ещё лучше - из таблицы выбирать (в коде при этом остаётся только маленький цикл while или for).
0
0 / 0 / 0
Регистрация: 23.08.2013
Сообщений: 206
18.01.2014, 01:09
Это код вызываемый единожды. Задержки там можно и вообще убрать.
Загонять это в таблицу стоит только если вариантов инициализации будет много, иначе дурная работа.
0
0 / 0 / 0
Регистрация: 06.12.2016
Сообщений: 54
18.01.2014, 02:47
Спасибо,
я сегодня тоже нашол этот код в главной странице без задержок,ну а как уже начал копаться в датах то не нашол рег. 0Х0025 и ещё непонятна опознания.
В этом 0х8989 ,в датах 0х1289,в других 0х9320 или что то иное...
А можно на прямую впихнуть инициацию лцд без этого распознания "else if (DeviceIdCode == 0x8989)"
Я как человек уже в возросте и испорчены бейсиком,асмом и начинающи по Си ,то много глупых вопросов,так что несудите строго...
0
1 / 1 / 0
Регистрация: 11.01.2013
Сообщений: 5,479
18.01.2014, 13:41
Цитата Сообщение от tyvydos
В этом 0х8989 ,в датах 0х1289,в других 0х9320 или что то иное...
Старые версии чипов SSD1289 возвращали ID=0x1289, новые возвращают 0x8989. Другие чипы возвращают другие идентификаторы. Так, 0x9320 - это ID контроллера ILI9320.

Цитата Сообщение от tyvydos
А можно на прямую впихнуть инициацию лцд без этого распознания "else if (DeviceIdCode == 0x8989)"
В принципе - да. Если код драйвера будет использоваться всегда только для одного дисплея, и Вы уже добились его (и дисплея, и драйвера) работоспособности, то можно сэкономить десяток байт ;-) , убрав чтение/проверку ID дисплейного контроллера.
0
0 / 0 / 0
Регистрация: 23.08.2013
Сообщений: 206
18.01.2014, 15:56
Цитата Сообщение от tyvydos
Спасибо,
В этом 0х8989 ,в датах 0х1289,в других 0х9320 или что то иное...
А можно на прямую впихнуть инициацию лцд без этого распознания "else if (DeviceIdCode == 0x8989)"
Запустите код под отладкой. Поставьте бреакпоинт на строку проверки " if (DeviceIdCode ==" и посмотрите какое значение в DeviceIdCode содержится у вас.
0
0 / 0 / 0
Регистрация: 07.04.2013
Сообщений: 461
18.01.2014, 17:15
Вопрос.
А демки со Specrum демо сцены пробовали запускать? Как воспроизводятся?
0
1 / 1 / 0
Регистрация: 18.10.2013
Сообщений: 92
18.01.2014, 18:36
Цитата Сообщение от KPK
Вопрос.
А демки со Specrum демо сцены пробовали запускать? Как воспроизводятся?
Давайте запустим :), что посоветуете?
0
0 / 0 / 0
Регистрация: 07.04.2013
Сообщений: 461
18.01.2014, 19:21
Цитата Сообщение от Koryim
Цитата Сообщение от KPK
Вопрос.
А демки со Specrum демо сцены пробовали запускать? Как воспроизводятся?
Давайте запустим :), что посоветуете?

Может указания на демки в обсуждении этого топика посмотреть ЗD-движки для ZX Spectrum
и в ресурсах форума zx.pk.ru поискать.

P.S. Не оценивали ли какая максимальная "скорость" эмулируемого CPU Z-80 может быть достигнута в вашем проекте?
Интересно какой нибудь 3D вариант движка кто нибудь пробовал реализовывать в рамках STM32 контроллера?
0
1 / 1 / 0
Регистрация: 18.10.2013
Сообщений: 92
18.01.2014, 20:17
Цитата Сообщение от KPK
Может указания на демки в обсуждении этого топика посмотреть ЗD-движки для ZX Spectrum
и в ресурсах форума zx.pk.ru поискать.

P.S. Не оценивали ли какая максимальная "скорость" эмулируемого CPU Z-80 может быть достигнута в вашем проекте?
Интересно какой нибудь 3D вариант движка кто нибудь пробовал реализовывать в рамках STM32 контроллера?
Почитал 5 страниц, закрыл. Может просто сюда ссылку скинуть на файл *.tap? По скорости думаю х2 точно можно.
0
0 / 0 / 0
Регистрация: 18.03.2010
Сообщений: 2,230
18.01.2014, 20:21
http://www.worldofspistrum.org/infoseek ... id=0007726
0
0 / 0 / 0
Регистрация: 07.04.2013
Сообщений: 461
18.01.2014, 20:32
Цитата Сообщение от Koryim
Почитал 5 страниц, закрыл. Может просто сюда ссылку скинуть на файл *.tap? По скорости думаю х2 точно можно.
Читать длинные темы можно и с последних страниц:)
Например эти skrju демо группа

P.S. X2 - существует потенциальная возможность и реализации других моделей компьютеров линейки ZX Spectrum.:)
0
1 / 1 / 0
Регистрация: 18.10.2013
Сообщений: 92
18.01.2014, 21:37
Цитата Сообщение от KPK
Цитата Сообщение от Koryim
Например эти skrju демо группа

P.S. X2 - существует потенциальная возможность и реализации других моделей компьютеров линейки ZX Spectrum.:)
http://www.worldofspistrum.org/infoseek ... id=0007726 Загрузил эту, работает, но с эффектами на бордюре лажа, как и в Unreal. демки 128 не идут.
0
0 / 0 / 0
Регистрация: 18.03.2010
Сообщений: 2,230
18.01.2014, 23:50
Цитата Сообщение от KPK
Например эти skrju демо группа
лучше эти http://zxaaa.untergrund.net/vi... Triebkraft
Цитата Сообщение от KPK
P.S. X2 - существует потенциальная возможность и реализации других моделей компьютеров линейки ZX Spectrum.:)
главно чтоб не на форте.
Цитата Сообщение от Koryim
работает, но с эффектами на бордюре лажа, как и в Unreal.
ну правильно, потому что сделано под оригинальный спек. есть фиксы под "наши" клоны, но они не в tap.

вот еще классика: http://www.worldofspistrum.org/infoseek ... id=0007538
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
18.01.2014, 23:50

Игры на ZX-Spectrum
У кого было это чудо? :) И любимые игры на нем?

bass spectrum
Зашкаливает спектрум, смена высоты не помогает, какая команда отвечает за "чувствительность" спектрума?

Кассеты / ZX Spectrum
Доброго времени суток! Простите за дебильный вопрос, но всё же: можно ли подружить вот такой КПК HP 95LX ...

Spectrum bass.dll
Доброе утро всем. Подскажите кто знает. "использую фоновую картинку на форме" вот и хотелось бы его сделать прозрачным. Как сделать...

ZX Spectrum на AVR, V2_0
Здравствуйте! Представляю свою новую разраюотку - AVR ZX Spectrum V2_0 Видео: http://www.youtube.com/watch?v=y4JQdIvJunI Схема,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
260
Закрытая тема Создать тему
Новые блоги и статьи
Запустил конкурс "тем и промптов для текстовых квестов созданных почти чисто ИИ"
Adler 06.10.2026
Всем привет! За последние три-четыре дня я создал более 16 текстовых квестовых игр используя преимущественно по одному запросу к ИИ на игру. Мне так понравилось смотреть все ветки/ сцены во всех. . .
ИИ не может найти нужный язык в списке
Supersumestria 05.10.2026
Я ему даю вот такое изображение и прошу найти и подчеркнуть немецкий язык. Возвращает он вот это: https:/ / i. **********/ vqBWLe2. png Нужную строчку в 3й колонке просто выдумал. . Это. . .
Новая последняя моя музыка в SUNO
zorxor 05.10.2026
Здравствуйте, дорогие мои друзья! С большой радостью я хотел бы представить вам свою новую последнею музыку, которую сгенерировала мне по моей просьбе нейросеть SUNO. С уважением, zorxor. Это. . .
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js. В помощники взял Яндекс-Алису. Было создано три зала на разные интересы. исторические и ретро сериал Хичкок. . .
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#. Название изменил на ColorStep. Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами: - ВидТО (СправочникСсылка. ВидыТО); - ВидГСМ. . .
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр. Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала. Ниже прикреплён. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru