А почему цвета не будет? Вот товарищ на ESP демки с 3d-графоном лабает:
Скрытый текст
Вид для печати
А почему цвета не будет? Вот товарищ на ESP демки с 3d-графоном лабает:
Скрытый текст
Из этого ясно, что программа пишется на Си и компилируется для целевой платформы, т.е системы команд данного низкопотребляющего скоростного 32-х разрядного микропроцессора, что встроен внутрь этого микроконтроллера EPS8266. Но мне как полному чайнику хотелось бы выяснить следующие моменты.Цитата:
Сообщение от heavy
Во-первых, написан ли свой блок эмуляции КР580 или использован чей-то чужой проверенный блок эмуляции 8080? Эмуляция на ассемблере только системы команд 8-ми разрядного процессора (в зависимости от близости процессоров) без учёта конвейера тормозит скорость прогона в 25-40 раз. Из-за конвейера эта величина в несколько раз ниже. При использовании оптимизирующего Си для процессора с кэшем (где операции с ОЗУ не тормознее, чем с регистрами) торможение лишь немного выше, чем на ассемблере. Потому в 8 МГЦ эмулируемого КР580 вполне верится. Но это только для эмуляции лишь процессора. А как же с экраном?
Здесь видео делает сам процессор. При такте CPU в 80 МГЦ это возможно, но тогда для прогона программы КР580 остаётся только время долгого гашения луча во время обратного хода кадровой развёртки, что для РК составляет лишь 20% времени, отчего эффективное быстродействие падает в 5 раз. Т.е это принцип ZX80/ZX81.
При этом возникает вопрос, а с какой реально скоростью прогоняется эмулируемая программа КР580 (или Z80)? Дотягивает ли до 3.5 МГЦ, чтобы хватило на ZX-Spectrum? Возможно хватит, т.к у ZX кадровый бланк длится дольше (38.5% периода кадра). Но даже если хватит, то есть сомнения, что получится качественно его эмулировать, ведь там всё основано на времянках и движения спрайтов делаются по прерываниям во время гашения луча.
Просьба прокомментировать, почему эти рассуждения полного чайника в корне ошибочны.
И ещё такой вопрос. Раз этот микроконтроллер дёшев и эмулирует КР580 быстрее, чем 2.5 МГЦ, то нельзя ли из него сделать скоростной микропроцессор КР580 работающий с тактом 8 МГЦ? Т.к есть 15 программируемых входов-выходов, то нельзя ли, добавив регистры для защёлок шины адреса, сделать дешёвый, но скоростной эквивалент КР580. Например, для турбирования Специалиста нужен КР580 на 4 МГЦ, т.е 8080-D, но он редкий и потому винтажный и очень дорогой.
- - - Добавлено - - -
Проблемы со звуком, видимо, объясняют мои предположения о прогоне программы КР580 только во время бордюра. Если в РК86 звук хрипастый, лишь оттого, что за время вывода строки в 64 МКСЕК ПДП кратковременно рвёт прогон программы 5 раз, то тут прогон полностью пропадает на долгие 16.4 МСЕК, отчего звуки вообще невозможны (100% модуляция частотой 50 ГЦ со скважностью 5). По тем же причинам без гашения экрана, как и на реальном РК, не получится ввод с магнитофона.
Но цвет-то тут при чём? Т.к входов-выходов всего 15, чего для для формирования RGB хватит, то единственное объяснение этой проблемы - в нехватке скорости.
Кстати, похоже, что на базе этого микроконтроллера можно сделать оцифровыватель ТВ-кадров с телевизора или с видеокамеры.
На сайте проекта на GitHub указана следующая информация:
А звук совсем-совсем не реально прикрутить? Там ведь только один бит-то и нужен всего!Цитата:
Эмулятор i8080
Используется эмулятор https://github.com/begoon/i8080-core
При работе ESP8266 на 160МГц и работающем генераторе видеосигнала, частота эмуляции i8080 7.6 .. 8.2 МГц !
Хмм... А если сразу PAL выдавать? :)
PAL - очень геморройный стандарт, на сколько знаю. Надо четные/нечетные строки фазовращать и прочее. С этой точки зрения, лучше NTSC гнать. И картинка четче, и гимора поменьше. Один фиг, щаз любой телек понимает NTSC. А если вдруг не понимает, то купить любой который понимает в ближайшей аптеке или на заправке за 1000 рублей не проблема.
Или вообще, православный SECAM -)
Я использую эмулятор i8080 от begoon, на гитхабе указано. Современные RISC-процы крайне навороченные и сравнивать их производительность с тактами не совсем правильно. Та же xtensa, на которой работает ESP8266 многоконвеерная, т.е. разные конвееры занимаются выполнением различных операций паралельно. Еще и отдельный конвеер раскладывает задания. Т.ч. в зависимости даже от порядка выполняемого кода, он может выполняться быстрее или медленнее. К примеру, 1-я инструкция может помещать в память какое-то число, а 2-я инструкция может использовать эту же ячейку памяти. Так вот, без специальной команды синхронизации такое работать не будет, т.к. эти команды скорее всего будут выполняться параллельно на разных конвеерах, 1-й будет заниматься записью, второй - чтением, но при этом запись еще не будет завершена и вторая команда будет еще использовать старые данные. В общем там все сложно, просто так по тактам выполнения команды не подсчитаешь :)
Проц работает на 160МГц, остальная переферия на 80МГц. Это разрешенный штатный максимум. Видео генерируется не совсем и программно. Программно генерируются буфера для каждой строки. Я делал профайлинг в реальном времени - генерация строки видео занимает порядка 6мкс процессорного времени. При длительности строки 64мкс - это менее 10% загрузки процессора. А при учете, что есть еще пустые строки и строки кадровой синхронизации, которые лежат готовые в ОЗУ и на их генерацию проц не тратится, то фактически это число уже 7-8%.
Эти буфера выкидываются через DMA на выход I2S, что дает битовый поток на скорости 40 МБит. Сигнал синхронизации выдается по таймеру, для точности смешивается с видеоданными как раз с помощью 74HC00. Т.ч. на вывод графики тратится не так уж много ресурсов.
Многие спрашивают про цветную графику. Дам развернутый ответ.
Текущая аппаратная реализация цвет никаким образом получить не сможет, т.к. вывод графики 1-битный. Аппаратных интерфейсов для вывода цвета на ESP8266 нет (имеется в виду без дополнительной внешней логики).
Что касается работы @cnlohr и вывода цвета через 3-й канал NTSC - я такого делать не буду, т.к. это не более, чем хак для конкретных случаев. К тому же качество графики отвратительное.
У меня есть идея для отдельного цветового процессора, которому буду передавать только данные цветности, а он будет модулировать ЧБ-сигнал от ESP.
Если убрать вывод графики и оптимизировать HAL, то можно получить частоту эмуляции 10-12 МГц, думаю. Ресурсов хватает с запасом.
Его легко можно эмулировать на каком-нибудь STM32 в корпусе LQFP48 там и портов достаточно и флэша для эмуляции того же ПЗУ.
Со звуком как раз проблем нет никаких. Просто на ESP-01 нет свободных пинов. Я сделаю проект на чем-нибудь типа ESP-03 (у него портов побольше), тогда и звук будет.
Адекватного ничего не сделаешь, да и зачем ? USB-видеовход на Али стоит 300р.
Информация для тех, кто хочет повторить этот проект.
Чтобы не ждать, ESP-01 (как и 74HC00, разъемы, платы итд) можно купить на http://chip-nn.ru/
У них они всегда в наличии и всего по 175р (на Али в районе 100р).
Пиксельклок обычно около 8-10МГц, так что если добавить сдвиговый регистр (ага, а потом ещё параллельный регистр и счётчик), то получим 4-5 бит на пиксель. Во время обратного хода можно использовать данные для звука, дискретизация 15КГц это очень даже неплохо. Но нужен ещё один регистр :)
Что-то мне подсказывает, что у данной микросхемы есть QuadSPI или SDIO, который используется для загрузки программы из внешнего Flash в кеш-память, и ни на какие контакты больше не выведен. Если у данного контроллера есть возможность заморозки кеша или выполнения кода из ОЗУ, то в теории через QuadSPI вполне можно гнать 16 цветов на точку, а синхросигналы попробовать изобразить при помощи таймеров.
Сегодня закончил авантюру :) Собрал эмулятор Радио-86РК в корпусе клавиатуры :)
Вечером или завтра выложу все файлы на гитхаб. Плату обрезал до минимума - 14,2 x 24,6 мм (по размеру ESP-01).
Плата и ESP-01 собираются бутербродом, с ESP-01 снимаю пластик с PLD, чтобы платы были вплотную.
Т.к. плата получается внутри клавы, то сделал возможность прошивки по воздуху (через WiFi) без разбора корпуса.
Такая мелкота оказалась необходима. Я вскрыл 3 разные клавы, единственное место, куда можно всунуть свою плату - это место буквой "П" над кнопками управления курсором.
Там места реально очень мало, но больше всего жмет высота - 6-8мм (на разных клавах). В общем такого минимализма и удалось достичь.
Прикладываю фотки сего чуда.
http://klad.me/rk8266/1/1.jpg
http://klad.me/rk8266/1/2.jpg
http://klad.me/rk8266/1/3.jpg
http://klad.me/rk8266/1/4.jpg
http://klad.me/rk8266/1/5.jpg
http://klad.me/rk8266/1/6.jpg
http://klad.me/rk8266/1/7.jpg
Только посмотрел схему. Получается ТТЛ-логика запитывается от 3 вольт?
плану развести "Пэшечкой", выпилить посадку под ЕSP и под логику и небольшое отверстице под 1117 . Во китайцы занадоедаються это випиливать :-)
Пару слов о свободных пинах.... Даная м/с ESP-8266 емсть в PLCC корпусе ( я это заменив копошась на сайте месного радиомагазина, все остальное как говориться есть под ногами/руками многих..
тык
- - - Добавлено - - -
думаю будет рациональнее использовать плцц ибо оно еще дешевлее)
собсна можно даже так как тут
тык
ESP-01 hacked by Dave Allan, как пример. Дополнительно вы получаете 4 GPIO: GPIO14, GPIO12, GPIO13 и GPIO15
https://img.mysku-st.ru/uploads/imag.../05/138304.jpg[свернуть]
- - - Добавлено - - -
кто-то тут говорил про 4 порта для цвета, собсна вооот они, + еще и звук будет
Я - за ч/б Спектрум.
В конце 80х у меня лично был ч/б монитор. Подавляющее число игрущек на нем были вполне играбельны.
Хм, а ведь точно - там были градации серого, тут же, как понимаю, даже это невозможно.
Печаль...
Спектрум нужен! Пусть не за 3$, а за 10-15$, но чтобы встраивался в клавиатуру. Цвет, 48, бипер, и 3.5 мм аудиовход обязателен. Но в идеале бы конечно хотелось и 128 + AY + TRD + корректная работа с пентагон-демами + мышь + чтоб в черного ворона можно было )
Такой уже есть! Это Raspberry Pi Zero:
http://storage9.static.itmages.ru/i/...f432a54bf6.jpg
CityAceE, да, но пока это просто микрокомпьютер. И всего вышеописанного в нём нет.
- - - Добавлено - - -
ну и как-то подороже он 10-15$
Sinclair ZX81 вполне можно было бы эмулировать, у него монохромный экран. Даже библиотека игр есть.
ZX81 намного более массовый компьютер, чем РК86. Их выпустили более 1.5 млн (а ещё сотни тысяч пиратских клонов). Потому для ZX81 написали несколько тысяч игр и они точно играбельнее, чем полсотни примитивных игр РК86. К тому же у него не должно быть звуков с включённым экраном, т.к видео он выводит тоже процессором. И можно будет убедиться, что википедия нагло врёт, что якобы для ZX81 с ОЗУ всего в 1 кб (из которых половина отнимает экран) есть шахматы. Кстати и Галаксия не сложнее ZX81 и имеет лучшие параметры.
А ещё, если как-то добавить эл.диск, можно просто сделать быстрый CP/M-компьютер с монохромным экраном 64*25 или 80*32 с инверсией знакомест.
ну почему же.. полно их по 5 баксов.. просто далековато.. доставка стоит часто сильно дороже.
Вот пара примеров
https://www.adafruit.com/product/2885
https://www.canakit.com/raspberry-pi-zero.html
Кстати везде почти есть ограничение. 1 платка в 1 заказе.
И вот спектрум на этом микрокомпе..
https://www.facebook.com/photo.php?f...&theater&ifg=1
Официальная цена базовой модели Raspberry Pi Zero - $5. Да, оно не сильно доступно нам, но есть и доступные аналоги по цене от $8,5. Компьютер, обсуждаемый в этой ветке, тоже не настоящий Радио-86РК. Это железяка, на которой запущен программный эмулятор. Не вижу разницы между этой железякой и запущенным эмулятором (причём одним из нескольких!) ZX Spectrum на Raspberry Pi Zero. Вот мне лично, этот эмулятор импонирует.
Господа, тема про Радио-86РК, не о Спектруме и не о тем более о Raspberry - не забывайтесь.
Автор темы запилил прямо-таки чудесную по минимализму машинку, которая все же является программным эмулятором, ну да нам не привыкать на этом месте копья ломать.
Как ваше мнение, коллеги, оставляем ее здесь, или все же в "Эмуляторы"?
Народ, нужна помощь по пониманию работы ВГ75.
По псевдографике все понятно.
Вопрос по командам End of row и End of screen. Насколько я понял, если встречается End-of-row, то остальные символы строки я просто не рисую, но они должны быть в памяти. А если встречается End-of-row, stop DMA, то дальше в памяти уже идут данные новой строки (+ пустой символ, если команда не последняя в строке). Верно ?
Теперь по аттрибутам. Байт аттрибута является знакоместом или нет ? Т.е. он генериует какой-то символ на экране, или он просто пропускается контроллером и на вывод идет уже следующий символ после аттрибута ?
Еще хочу встроить в эмулятор вывод текстовой справки, типа команд монитора, адреса точек входа в процедуры монитора, справка по бейсику и т.д. Может кто знает ссылки на готовые документы ?
Новая версия будет с нормальной эмуляцией ВГ75 (кроме highlight), сохранением состояния и другими плюшками.
Уже сделал изменяемый знакогенератор (его можно менять по адресу 0xF800, но только на запись). Обновление прошивки по воздуху тоже уже работает, в следующем релизе вынесу обновление в Web-страничку эмулятора для удобства.
Еще у меня, как у топикстартера, просьба - давайте пока откинем холивары типа у ZX яйца лучше блестят. Очень нужен фидбек - что нужно еще сделать в эмуляторе. Хочется его уже добить до какой-то точки и попробовать сделать Специалист. Читал про него в Моделисте, но, к своему стыду, даже ни разу не видел и не запускал эмулятор. А очень хочется. Да, следующим однозначно будет Специалист.
- - - Добавлено - - -
Ну и вдогонку относительно малинки.
У меня дома на всех телеках стоит т.н. Android TV - это фигня, размером чуть больше флэшки, которая втыкается в HDMI и питается от USB. Внутри нормальный Android, проц 4 ядра, ОЗУ 2 Гб, флэша 8 Гб, microSD, WiFi, Bluetooth ну и т.д. Стоит сие удовольствие всего то 1500 рублей на Али. Оно с легкостью тянет эмуляцию PlayStation One, не говоря уже о РК86 и Спеке.
Так это я вот к чему - в наше время за сравнительно небольшие деньги можно купить ооочень крутые вещи, но хочется чего-то старого, лампового. Сейчас вот, ковыряясь с эмулятором РК86 я испытываю те же чувства, что и тогда, когда отец собрал его сам дома. Даже вспомнил как он выглядел.
Ностальгия странная штука. rk86.ru очень классный сайт, но он обычно закрывался на 2-й минуте игры в КЛАД или Ксоникс. Этот же проект для меня как-то живее. Уже помню наизусть команды монитора, некоторые машинные коды. Думаю, это же чувствуют те, кто собирает "тру" РК86. Но я далеко не электронщик и вряд ли смогу собрать и запустить "тру" РК86. Таких же, как я, думаю, много. Моя железка дает простоту сборки и запуска. Что-то среднее, между "тру" и "rk86.ru" :)
В общем не в деньгах счастье. Проект изначально задумывался не как дешевый, а как собираемый из легкодоступных компонентов. Перед этим проектом, честно хотел сделать настоящий, даже нашел половину микросхем на Элитане, но уткнулся во что-то типа памяти, которую не нашел. А моих познаний в электронике не хватает на то, чтобы найти подходящую замену.
В общем как-то так. Теперь очень хочется заиметь настоящего РК86, хоть Апогея, хоть проект на SRAM :) Как всегда - хочу странного.
Извините за бред, нервы мне сегодня подпортили, надо было выговориться :(
Мне кажется что вы с вашими познаниями можете легко взяться за "железный" Радио РК. А все комплектующие можно быстро найти здесь на Барахолке. В 500 р можно уложиться
Запусти) Это просто.
Бывает и так и этак и это задаётся битом D6 в четвёртом параметре команды 00 (задать формат экрана). В литературе упоминают, что аттрибут выводится пробелом, но предполагаю, что это код 00. Точно ответить может только тот, кто использовал это в своих программах для РК86, но такие люди уже не с нами. Потому сейчас наиболее информированные люди на эту тему это эмуляторо-писатели. Я тоже в 1998 написал эмулятор РК86, но ВГ75 вообще не эмулировал, отчего работает только часть РК-программ.
Встроенная справка никому не требуется. Особенно о командах монитора, что вообще означает считать пользователей за идиотов. Программы на бейсике вряд-ли кто-то будет набивать в этой конструкции. Вся справочная информация есть в ж.РАДИО. И при желании можно встроить весь цикл статей о РК86 из журнала Радио.
Гораздо полезнее сделать встроенный отладчик, типа пультового режима в ПК11/16 (там для этого в процессор специально включили второй набор регистров). В крайнем случае могу предложить отладчик в кодах КР580 (размер 4К), который можно разместить в области C400...F7FF.
Специалист в эмуляции проще, чем РК86 (т.к не требуется эмулировать тысячу режимов ВГ75).