Pull to refresh
93
Вячеслав Калошин@kiltum

User

88
Subscribers
Send message

С go на C++ за две недели. Переписываю эмулятор ZX Spectrum

Level of difficultyMedium
Reading time17 min
Reach and readers21K

В общем-то и целом, мой предыдущий эмулятор ZX Spectrum, написанный на go, работал. Показывал нужное (или очень близко к нужному) и давал чувство приближенности к программистам. Однако у него были очень фундаментальные проблемы, связанные исключительно с языком разработки. Ну по крайней мере я сейчас так думаю.

Другим движущим фактором все-таки была бесплатность БЯМок от cloud.ru (не реклама, да и бесплатности больше нет). Ну где еще можно на халяву пожечь сотни миллионов токенов и получить хоть что-то работающее?

В общем, я принял волевое решение переписать все на С++. Под катом дневник "переписчика", в котором я последовательно описываю все боли и страдания начинающего писателя эмуляторов. Желающим сразу посмотреть на конечный результат можно сходить на https://github.com/kiltum/zxcpp

Читать далее

Как я с помощью LLM писал эмулятор ZX Spectrum

Level of difficultyEasy
Reading time4 min
Reach and readers8K

... или может ли ИИ заменить программиста? Сейчас со всех сторон долбят про то, как ИИ помогает в жизни и вообще, если ты не используешь ИИ, то ты в отстающих и лузер. Я к этому отношусь спокойно, ибо мои занятия совершенно не допускают использование ИИ из-за очень большой цены ошибки, но долбежка все-таки делает свое дело. Плюс как-то внезапно обнаружил, что у (не реклама) cloud.ru доступны Foundation Models (они же БЯМ, они же LLM) без оплаты. Понятное дело, тестовый период и прочее, но использовать можно. Но просто мучать модельки вопросами уровня «сколько цифр в слове» смысла мало, поэтому решил попробовать сделать что-то хоть капельку полезного и получить собственный ответ на вопрос пригодности БЯМ. Результат для нетерпеливых тут https://github.com/kiltum/zxgo

Далее несколько абзацев истории, чтобы просто было понятно, каким путем я шел до результата. Скажу честно, выбор места приложения сил БЯМки был сделан довольно быстро: напиши мне много кода. Раз пока все бесплатно, выбрал самый большой Qwen и предложил ему написать эмулятор КР580ВМ80А (он же Intel 8080), причем на питоне. И внезапно, он с первой попытки сгенерил что-то очень похожее на правду. Хмыкнув, я нашел образ ПЗУ от Радио-86 и зарядил еще пару десятков запросов. Вскоре я с глубоким удовлетворением увидел в окошке заветное «РАДИО 86-РК» и следом «-->». 

Немного порадовавшись результату, я преисполнился энтузиазма и решил поднять ставки. Z80 и ZX Spectrum! Культовая машина, все нюансы которой разложены по полочкам и по которой документации на порядки больше, чем для «радио»,«микроши» и «специалиста» вместе взятых. А чтобы было совсем хардкорно, основным языком я выбрал С++.

Читать далее

Программируем микроконтроллеры в QtCreator

Reading time9 min
Reach and readers26K


Почему-то в интернете мало документации про qbs, и я решил немного исправить эту ситуацию. Попробую описать в виде повествования, что необходимо сделать, что бы в QtCreator можно было компилировать (и не только) что угодно под что угодно.
Читать дальше →

PIC16F1503. Тачка на прокачку — 3. Питание

Reading time5 min
Reach and readers49K
Раньше было про звук и свет.

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



Что бы не нарушать традицию, продолжу тему из предыдущего поста: мигание светодиодиков. Что с ними не так?

Читать дальше →

PIC16F1503. Тачка на прокачку — 2. Свет

Reading time10 min
Reach and readers52K
Раньше было про звук.

Прошлый пост я оставил незаконченным. Если вы помните, то мне никак не удавалось подобрать «то самое звучание». Попытки подобрать «циферки по наитию» получались куда хуже обычного «пиу-пиу»… С одной стороны все равно — от китайской пищалки звука не добиться, а с другой стороны — «нечистая работа, низкий класс». Опять же, загонять тактовую частоту на 16МГц ради такого…



В общем, я где-то что-то сделал неправильно. Устроенный очередным вечером ликбез по музыке и ее грамоте породил еще больше вопросов, чем было до этого (вроде почему есть до-диез, но нет ре-диез, а вместо него ми-бемоль?). Но мне не привыкать «сдавать японский по методичке», поэтому продолжал разбираться. Одновременно с заказчиком обсуждали изменение ТЗ (знакомая картина, не правда ли?), заключавшееся в добавлении «подсветки днища». На мои робкие попытки сказать, что это вообще-то полицейская машина был получен ответ, что это полицейская машина в негритянском квартале…
Читать дальше →

PIC16F1503. Тачка на прокачку — 1. Звук

Reading time6 min
Reach and readers87K
Думаю, у каждого родителя бывает такой момент, когда он в магазине на кассе обнаруживает ребенка с нечто, и ребенок утверждает что именно это нечто очень важно для всего мира на земле и для него в частности. Вот и у меня такое случилось в очередной раз. С ходу оценив стоимость этого нечта, родительская жаба махнула рукой и решила, что один раз живем и все равно всех денег не заработать. Разум же оценил скорость умирания этого нечта и тоже дал добро.

В результате детский автопарк пополнился вот таким вот чудом китайской инженерии. Джип, с «люстрой» и лебедкой!



Чудо умело мигать «люстрой» и «фарами» и громко производить три записанных звука. Согласно всем канонам, машинка довольно быстро «умерла» и была принесена в ремонт. Я же машину в ремонт брать отказывался, мотивируя отказ невымытыми руками и недоеденным ужином. Плюс китайцы как-то смогли выжать из этой машинки пару лишних децибел на частоте, резонирующей с моим черепом (аж зубы заныли), поэтому мне совсем не улыбалось повторно испытать те же самые ощущения.

В результате долгих переговоров было решено, что простая смена батареек — это уже не модно. Ведь все настоящие водители тюнят свои машины в специальных студиях, после чего ездят на машинах, которых ни у кого нет. Вот и я взял машину в студию «Всё Моё» для тюнинга…
Читать дальше →

STM32 и FreeRTOS. 5. Приносим пользу и добро!

Reading time5 min
Reach and readers65K
На всякий случай, а то вдруг санкции применят (смаил). Описываемый случай не имеет никакого отношения к реальности и является целиком и полностью выдумкой автора

Раньше было про потоки, семафоры, очереди и HAL

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



Вооружившись осциллографом, я полез внутрь.
Читать дальше →

STM32 и FreeRTOS. 4. Шаг в сторону HAL

Reading time5 min
Reach and readers91K
HAL 9000: I'm completely operational, and all my circuits are functioning perfectly.
или это должно быть первой статьей, но я почему-то всегда пишу подобное ближе к концу

Раньше было про потоки, про семафоры и очереди

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

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

Но не так давно ST поняла, в какую яму она угодила и начала усиленно из нее выбираться, привлекая новые силы. И именно благодаря этому сейчас время старта сократилось до несуразно маленьких величин. Как это выглядит на практике? Добро пожаловать под кат.
Читать дальше →

STM32 и FreeRTOS. 3. Встаем в очередь

Reading time6 min
Reach and readers62K
Раньше: про потоки и про семафоры

«Вас много, а я одна!» — классическая фраза продавщицы, которую затерроризировали покупатели с вопросами «А есть ...?». Вот и в микроконтроллерах случаются полностью аналогичные ситуации, когда несколько потоков требуют внимания от какой-либо медленной штуки, которая просто физически не способна обслужить всех разом.

Возьмем наиболее яркий и богатый проблемами пример, на котором «валятся» большинство неопытных программистов. Есть мощный и достаточно быстрый микроконтроллер. К нему подключен с одной стороны адаптер com-порта, через который пользователь подает команды и получает результаты, а с другой — шаговый двигатель, который согласно этим командам поворачивается на какой-то угол. И конечно же, прикольная кнопочка, которая тоже что-то этакое значит для пользователя. Где можно наловить проблем?
Читать дальше →

STM32 и FreeRTOS. 2. Семафорим по-черному

Reading time7 min
Reach and readers76K
Часть первая, про потоки

В реальной жизни часто случается так, что некоторые события происходят с разной переодичностью (а могут и вообще не происходить). Скажем, заказ сока в «Макдональдсе», нажатие кнопки пользователем или заказ лыж в прокате. А наш могучий микроконтроллер должен все это обрабатывать. Но как это сделать наиболее удобно?

Читать дальше →

STM32 и FreeRTOS. 1. Развлечение с потоками

Reading time7 min
Reach and readers178K
Данный цикл из 5 статей рассчитан на тех, кому стало мало возможностей привычных «тинек» и ардуинок, но все попытки перейти на более мощные контроллеры оканчивались неудачей или не приносили столько удовольствия, сколько могли бы. Все ниженаписанное проговаривалось мной много раз на «ликбезе» программистов нашей студии (которые часто сознавались, что переход с «тинек» на «стмки» открывает столько возможностей, что попадаешь в ступор, не зная за что хвататься), поэтому смею надеяться, что польза будет всем. При прочтении подразумевается, что читающий — человек любопытный и сам смог найти и поставить Keil, STM32Cube и понажимать кнопки «ОК». Для практики я использую оценочную плату STM32F3DISCOVERY, ибо она дешевая, на ней стоит мощный процессор и есть куча светодиодиков.

Каждая статья рассчитана на «повторение» и «осмысление» где-то на один околовечерний час, ибо дом, семья или отдых…



Читать дальше →

Information

Rating
Does not participate
Location
Россия
Registered
Activity