Как стать автором
Обновить

Spectrum-48 против пачки сигарет, каша из топора или что может STM32F103C8T6+video(update)

Время на прочтение 3 мин
Количество просмотров 42K
Всего голосов 82: ↑82 и ↓0 +82
Комментарии 107

Комментарии 107

>пачка моих сигарет стоит… примерно $10
С такими ценами можно было бы легко бросить и без всяких Спектрумов :)
моя жаба опять спит и полностью меня игнорирует :(
Будить мелодиями из спектрумовских демок срочно. AY не эмулирован, значит, биперовскими, они тоже здорово звучат.
Достать спектрофон, сдуть пыль и вперёд в ностальгию!
НЛО прилетело и опубликовало эту надпись здесь

у нас $40 самые дешевые, как-то не особо бросают )))

Это где у Вас по $40 ?

New Zealand

Да ладно, серьезно что ли? Я правда все таки бросил, жена уломала, но у нас самые дешёвые где-то по $5. По $40 я бы в саду табак выращивал. Так сказать DIY

НЛО прилетело и опубликовало эту надпись здесь
Отличный повод начать знакомство с STM32. Спасибо!
Хорошая статья, показывает на что способно современное железо.
Ого!
ОЗУ на бордюре даже интереснее, я бы так оставил.
В БК есть режим, когда часть видеопамяти используется в качестве доп. ОЗУ, полезная картинка занимает небольшую часть экрана, а под ней видно, что в этой области ОЗУ делается, напомнило.
Клавиатура нужна обязательно, возможность программирования — главное преимущество Спектрума перед Денди.
Да, и соблазну сделать своп на карточке не поддаваться ни в коем случае.
Имхо мерцание полей быстро надоест.
Если изготавливать корпус, то можно закрыть эту часть экрана или передней панелью или наклеить рамку.
Я бы заклеил какой-нибудь полупрозрачной пленкой, чтобы видно было 5% светового потока. Такой-то артефакт не хочется глушить.

Ambilight

если на спектруме закрыть бордер толстой рамкой из зеркала, которое отражает в стороны, получится ZX Embligiht

Тут в комментах сказано, что поля не мерцают, они почти статичны.
Не было видно, что там было, эта область затенялась. Видимыми оставались несколько строк текста. Если не затенять, что бы всё было видно, то скорость работы с видео озу была меньше чем с основной памятью.
В оригинальном ZX использовалось два «банка» памяти RAM 8*16Кибит + 8*32Кибит, наши поздние клоны как правило изготавливались уже с единой памятью 8*64Кибит, что уже не давало различия по скорости доступа к разным участкам памяти.
Да и нет такого понятия «не показывать затененный участок» вам по прежнему показывают информацию которую регулярно «видеоадаптер» выбирает из памяти, это как полдня сидеть на ютубе на помегабайтном тарифе, а потом заявлять «я же ничего не качал!».
Этот пост про БК, а не ZX.
На спектруме были такие копировщики (списать игру с одной кассеты, записать на другую), нижняя половина экрана начинала использоваться, если игра ровно 48к размером.
там три блока по 2кб, соответственно экран состоял из трех частей (+ 3х256 байт цвета).
мой любимый копировщик был NEW FORMAT COPY, в нем можно было править коды загруженной игры/программы и он тоже использовал память экрана :)
Бывали игры, блоки данных которых занимали почти всю оставшуюся память после экрана. Чтобы такие блоки копировать (и при этом иметь свой код в памяти) копировщикам на 48 Кб приходилось держать что-то на экране. Но обычно они атрибутами это дело гасили.
вспомнились приколы программирования на Зет80 типа: Push — Return и XOR A.
спекки тогда уж

Вы правы, однако спеки меня и на работе достали. Позвольте небольшую вольность.
Эх, жаль видосика нет, интересно посмотреть, как себя «видимопамять» ведет в динамике.
Она весьма редко переключается и не на каждой игре, только несколько линий по 64 байта за цикл симуляции 20 миллисекунд. Алгоритм кеширования довольно эффективно работает.
А что за записную книжку вы делали 25 лет назад, КМОП-Z80 и ЖКИ однобитный?
Toshiba, не помню номер, со встроенным контроллером матричного ЖКИ 160x64 вроде. Надо посмотреть в исходниках(сначала найти). Телефонная книжка с DTMF (подносишь к трубке-набирает), факс (если поключить модем и только посылыет), словарь Иврит, Русский, Арабский и Английский, калькулятор, часы-календарь, тетрис разумеется…
Самоделка или продакшен? Фото остались, код?
Это продакшен. И продается до сих пор, недавно видел.
Код — частично остался. Но он собственность израильской компании «кравитц». Код эмулятора (BCC+TASM+WIN32) и бинарники вроде есть все и на них никто не претендует.
Эмулятор включает фотку. Там надо свистелку подправить, чтобы работала под современный Windows, она исключение вызывает, так как работала напрямую с динамиком) Если Вам нужно напишите мне на маил(в гитхабе есть), я вышлю
Тогда, думаю, по названию+модели можно найти фотки.
Сейчас под Wine запускал. Еще работает, но без звука:)


ПЗУ, конечно, не масочное, чтобы чип не заказывать?
Убейте, не помню.
А ведь там ресурсов хватит, чтобы CP/M запустить.
Возможно, однако нет смысла. Из-за маленького рынка, (Израиль+Иврит) он сильно «overpriced» долларов под сотню. Может сейчас цена и упала, но не думаю что сильно. Да и откровенное барахло по сегодняшним понятиям.
Но можно попробовать на похожей схемотехнике (микропотребляющий нативный, а не эмулируемый Z80, однобитный ЖКИ, ОЗУ и ПЗУ столько же) сделать карманную машину с CP/M примерно с такой же потребляемой мощностью.
Главный жрун все равно дисплей. Процессор уходит в глубокий сон после отработки каждого события(нажатая клавиша, будильник и тд) и это единицы микроампер. Клавиши сканируются на низкой частоте ~32KHz, потом быстренько отрабатывается на полной частоте и опять спать до следующей клавиши.
Дисплей — даже пассивный, уже несколько миллиампер пока не погасишь. То есть батарейки хватит часов на 100-300 работы дисплея.
Не знал, что матричному однобитному ЖКИ такого разрешения нужно несколько миллиампер.

а ведь можно eInk

Он заметно тормозит. Неудобно

а смысл? все равно что карманный кассетный плеер разрабатывать на современной базе, если только для собственного удовольствия (тем более для такой специализированной задачи можно написать код для STM32, а не брать за основу более примитивный Z80, который напрямую не может адресовать более 64кб и тд).
ну и смартфоны заменили почти всё, весь мир уже давно в кармане :)
Плохо видно, что на кнопке с цифрой 6, неужели SPEECH?
Ага. Была и такая фигня в планах.Но что-то не сложилось.
И железку выпустили без этой надписи, чтобы пользователи не искали отсутствующую функцию?
:)
Интересно — чем обусловлен выбор именно этой микросхемы? Просто была в наличии или 20К оперативки максимум для этой серии?
Она у меня была. И она самая дешевая и распространенная из подходящих.
Кроме разгона до 112 MHz, в STM32F103C8T6 можно пробовать использовать вторые 64К flash, если очень нужно.
а где почитать? они получается отбраковка от 128 киловых и флеша там внутри таки есть?
Это не на всех. Есть и 64 и 128. Разные чипы с почти одинаковой маркировкой.Те которые 64 они не разгоняются, сегодня такие получил, впрочем у меня нет статистики 2 на 128 и две на 64 (:
НЛО прилетело и опубликовало эту надпись здесь
Судя по потреблению энергии, это вайфай со спектрумом. :)
Spectrum Next несет на борту вайфай :)
эх, не знаете когда он уже в свободной продаже появится?

только из-за корпуса купил бы, а так и начинка неплохая
Wifi+BT :)
2 Core + 1 Low power core…

привел как пример тк по цене весьма близка к использованной в статье STM32 )
Примерно втрое дороже, правда на нем можно и 128+ попробовать. Хватило-бы и ESP8266, который дешевле чем ESP32, но он плохо задокументирован.
На ESP8266 уже есть эмуляция РК.
RPi Zero ($4.95 на сейле) + 3.5'' LCD ($4.95 Aliexpress) + халявные BT+WiFi adapter (сэмплы с alibaba) + халявный блок питания (от старого, не помню какого телефона — их мириады были у меня) + 8GB sd-card (тоже, как ни странно, халявная — но нужна для Raspbian). То бишь я в $10-ку уложился (хотя сигареты покупаю в Nashua, New Hampshire, там они самые дешевые по Штатам, меньше $10).

Сорри, картинки сейчас лень делать, но все работало, как Вы сами понимаете.
Пруф можно на дисплей?
Соврал, таки $5.95 (но это был какой-то крупный сейл, так они дороже, конечно). Вот он, только подключенный к Rpi2 B, вот скриншот покупки, а ссылку не дам, нет уже того продавца, похоже.
P.S. Но в десятку почти уложился (если не считать «халявное» и то, что было уже дома).
Я когда в GE Medical работал у меня были подарочные сервера Supermicro на 2-4 сокета с последними Xeon-ами от Интеля. Бесплатно.И лично мои. И каждый год новый. В GE они не числились, а Интель их обратно не просил. Так они в GE валяются, думаю что до сих пор. Вопрос стоял не во сколько мне обошлось, а сколько будет стоить если собирать сейчас и не мне.
если собирать сейчас и не мне
Я написал, сколько будет стоить собирать сейчас и мне :D
Ваша разработка забавная, безусловно, но неужели вы думаете, что все сейчас прямо кинутся создавать такие эмуляторы Zx-ов?
Поставьте себе retropie и не нервничайте. Это Geektimes, а не Хабр.
А почему вы решили, что я нервничаю? Это вы нервничаете, похоже.
Для очистки совести, вот прямо сейчас (ну, немного дороже $10) тыц и тыц.
Ага, только распберри туда не входит.И с доставкой беда.
Я когда в GE Medical работал у меня были подарочные сервера Supermicro на 2-4 сокета с последними Xeon-ами от Интеля. Бесплатно.И лично мои.


Чтоб я так жил, мама мия :)
IN-STORE ONLY
Угу, в 3-х минутах езды от офиса.
круто, недавно только вертел этот стм32, думал наверно спектрум сможет эмулировать, а тут бац — и готовый проект :)
Ожидал увидеть очередную статью «как я помигал диодом», а тут сюрприз!

btw: для игровой приставки хорошо подойдет что-нибудь типа первой версии MKS-TFT32, там и экран, и sd-карта, и пищалка есть, и даже usb host, чтобы сразу в него геймпад воткнуть…
Диодом по прежнему можно помигать, с бейсика, на спектрум, нужно только порт пробросить.
Или лучше осциллограф на бейсике наваять пробросив ADC? Хорошая тема для статьи… :)
А я бы применил SPI-RAM микросхему, к тому же у STM-контроллеров очень часто встречается аппаратный расширитель памяти именно через SPI, это прибавит плюс к быстродействию.
аппаратный расширитель памяти

конкретно у этого — нет
Спектрум. Теплые воспоминания. А тут еще и любимое современное железо. Спасибо за интересную статью.

Чот я не понял — это как в 20K ram МК можно впихнуть 48К спектрума? Ладно, минус 16К ПЗУ и того экран+рабочая область = 32К, куда девается 12К?

если прочитать статью то можно понять что искомые 12К в «бордере» экрана хранятся, видно на фотках
В «бордере» экрана
хранится все, что выше sinclair видео RAM: 0x10000-0x5b00 = 42240 bytes
ROM sinclair -16K в STM32 rom, остальное код эмулятора и интерфейса пользователя
В RAM stm32 — sinclair видео RAM, линии кеша(около 100 по 64 байта), таблицы адресов областей подкачки, битовая таблица изменений экрана sinclair для минимизации времени отрисовки на реальный экран, всякие переменные и стек эмулятора и куча для malloc FAT32

Спасибо.
Теперь понятно и почему тормозит… всё же через SPI с кучей доп.организации.

То есть когда нужен доступ к области памяти которая загружена в неиспользуемую область дисплея происходит задержка чтобы подгрузить ее в основное озу микроконтроллера?
Как работает кеш? Что если программа будет каждые несколько тактов обращаться к случайным областям памяти из всего пространства 48к байт?
Как работает кеш?

LRU — Если происходит обращение к адресу не в кеше, то самый старый блок на 64 байта или выбрасывается, если в него не было записи, или записывается если запись была. Потом на освобожденное место подчитывается со swap area на ili9341 (рамки дисплея).
Что если программа будет каждые несколько тактов обращаться к случайным областям памяти из всего пространства 48к байт?

Случайное число трудно получить за несколько тактов. :)… Будет работать, но очень медленно и печально.

сложно представить себе такую программу, чтоб постоянно в разные области памяти обращалась. обычно переменные где-то в одном месте свалены, да и сама программа не ходит по каким-то слишком уж длинным алгоритмам. единственное случай в голову приходит — это игры с графикой, где надо постоянно спрайты из памяти на экран тащить, либо смещать изображение на экране
Не плохо бы и схему посмотреть.
Восхищаюсь умельцами! Супер!
На чём только не собирали Spectrum: AVR, PLD (ПЛИС), SMT…
Интересно, на чём ещё можно соорудить этот популярный комп?!
На рассыпухе из SMD-элементов :) Или на той же рассыпухе, только в качестве транзисторов взять коробку с КТ315 и коробку с КТ361.
И маленький грузовичок дла перевозки и питания.
О, да Вы гурман батенька! :-)
Но я думаю, одной коробкой 315-х и 361-х не обойтись.
Нужно будет штук по 5.
НЛО прилетело и опубликовало эту надпись здесь
Конкретно на этой пачке на иврите написано красными буквами: «Предупреждение(опасность, внимание, осторожно)»
потом что то мелко, а потом опять крупно черными:
«курение приводит к импотенции»
Спасибо, очень интересная и шикарная статья! В половину игр играл в детстве, а спектрумовский клон диггера с видео был моей первой и самой любимой компьютерной игрой — она шла с кассетой в комплекте поставки Компаньон-2 (клон от Ижевского Радиозавода).
:)
Зарегистрируйтесь на Хабре , чтобы оставить комментарий

Публикации

Истории