Биперные истории

Уже больше десяти лет я плотно занимаюсь темой биперной однобитной музыки на ZX Spectrum и других платформах — все эти движки, трекеры, треки, альбомы и прочие плагины. Всё это время меня постоянно не спрашивают, как же я докатился до жизни такой в эпоху могучих TS, TSFM, NeoGS, мегабайтов и мегагерцев. Но вам всё равно придётся это узнать, потому что это прошлое, в котором мне интересно покопаться и напомнить о нём самому себе, а знакомство с чужой историей нередко позволяет читателям освежить в памяти и их собственные первые впечатления.

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

Обзор архитектуры бортового компьютера КК Аполлон

Решил копнуть в историческую историю и рассмотреть архитектуру и систему команд бортового компьютера космического корабля Аполлон.
Последний пока компьютер который летал на Луну вместе с людьми. Сокращённо он называется AGC (Apollo Guidance Computer).
Было два поколения его — Block I и Block II. Второе было существенной доработкой первого и именно оно летало на Луну, поэтому рассматривать буду только его.

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

Famicom/NES/Денди: битва за Status Bar

На Famicom/NES/Денди было одно сильно аукнувшееся гейм–девелоперам упрощение/удешевление — вместо четырёх экранных областей объёмом 4Кб выстроенных квадратом между которыми был возможен бесшовный скроллинг (с прокруткой) в консоли оставили только 2Кб VRAM и, таким образом, было только две экранных области с бесшовным скроллингом.
Т.е. виртуальный задний фон мог бы иметь такую раскладку:

(глубже теорию вопроса можно изучить в статье про графическую архитектуру Famicom/NES)
Но в итоге оставались только две эффективных области из этих четырёх. Причём коммутацией линий картриджа их можно было выстроить как вертикально так и горизонтально (оставшиеся области «зеркалились»). Таким образом чисто вертикальные или чисто горизонтальные скроллеры реализовывались легко из коробки, но с произвольным скроллингом возникал целый ряд проблем которые решали кто как.

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

Принципы кодирования инструкций Intel x86(-64) или "ехал префикс через префикс"

Введение

С давних пор меня интересовало то как процессоры Intel x86 кодируют свои инструкции.
Будучи в детстве владельцем клона ZX Spectrum я уже тогда сталкивался с таблицами кодов инструкций его процессора Z80, как например тут: clrhome.org/table/
В таком виде очень хорошо просматривается принцип кодирования этих инструкций — наглядно видно как они упорядочены и по каким битам раскиданы.
Но вот для x86 таких таблиц как то не удавалось найти, а то как эти коды пояснялись в руководствах от самого Intel было несистематизировано и поэтому не воспринималось.
Однако пару месяцев назад я наконец то наткнулся на табличный вид однобайтовых инструкций от i8086 до i386, поразглядывал его и проникся тем что тут и как кодируется.
Более того — в процессе этого обзорного ознакомления я проникся еще тем как эволюционировала система команд x86 с поколениями процессоров и решил вкратце эти вехи законспектировать тут. Это ни в коем случае не полное справочное руководство, но скорее обзорное знакомство вместе с историческим экскурсом которое возможно поможет кому то быстро понять основные принципы кодирования инструкций x86 перед более углубленным изучением по таблицам.

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

Мой виртуальный 16-битный "компьютер мечты" - SimpX

Исходники: github.com/aa-dav/SimpX
Онлайн-версия: aa-dav.github.io/ (первая загрузка будет долгой, но потом закешируется)
В веб-версии рекомендую сразу нажать меню View->Set 400% чтобы выправить соотношение сторон.
Выбираем в левом списке редактора файлы test0x.asm и нажимаем меню Emulator->Compile and run чтобы увидеть результат.
Если активирована не английская раскладка клавиатуры — ввод с кнопок может не работать (это важно для последних тестов).
Так же еще замечу, что в веб-версии в коде могут некорректно отображаться табуляции — это некритично и вызвано разным отношениям к пикселям в среде Qt в stand-alone и wasm вариантах. В stand-alone всё визуально корректно.
Описание процессора — Simpleton (4) и его ассемблера уже было.

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

Бесконечные ZX Spectrum-демо на коленке



Несколько лет назад у меня возникла идея создать некий сервис, где будут круглосуточно крутиться спектрумовские демo. Хотелось, чтобы была возможность в любой момент просто воткнуть канал и там постоянно что-то транслировалось бы. Поднимать сервак дома, конечно же, никакого желания не было, потом вылезли какие-то другие бытовые вопросы, ну и в итоге я благополучно забил на это дело.

Пару месяцев назад я случайно наткнулся на статью одного человека, который запускал круглосуточную трансляцию на YouTube по другой тематике, и меня эта идея снова зацепила. Что в итоге было сделано: взят нужный VPS, развёрнут весь необходимый софт, зарегистрирован канал Speccy247, отобраны первые 50 штук демо, трекмо и иже с ними, а также пару игр с интересными на мой взгляд интрухами. Настроен UnrealSpeccy, который каждые 300 секунд запускает следующую программу в плейлисте. Вот такой был механизм с самого начала :)

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

shuran33 interviews Mikael

Привет, дорогой читатель! Сегодня мы побываем в гостях у известного Commodore 64 художника, занявшего первое место на DiHalt 2021. Мне удалось с ним побеседовать, прошу под кат.




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

HYPERADIO 2021

Наше радио все еще живо! УРА!



Мы плавно перетекли из 2020 в 2021 год и практически не сбивались с верного пути вещания 24/7.

Были небольшие проблемы, когда в период глобального мирового локдауна. В помещении, где физически расположен сервер Hyperadio, неожиданно произошел ремонт. Грубо говоря, в моей квартире, единственная вещь, которая гордо стояла до последнего и цеплялась проводами к розетке питания и сетевому роутеру, когда вокруг был полнейший хаос, был сервер Hyperadio. Но, дольше суток вроде бы, простоя не было. Ах да, еще мой доморощенный сервер пару-тройку раз подвисал по причине перегрева в самые жаркие летние дни, когда температура в помещении переваливала за +35°С.

И вот, несмотря на эти мелкие неудобства и экстремальные условия, радио пиликает и ежесуточно радует, хоть и небольшое (и часто стремящееся к нулю), но стойкое сообщество своих слушателей.

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

Виртуальный процессор Simpleton 4

В позапрошлом уже году я писал тут про выдуманную под впечатлением от Gigatron TTL архитектуру процессора Simpleton 3.
Однако в итоге я пришёл к выводу, что Simpleton 3 как архитектура сложнее того чем оно заслуживает быть.
В ходе обсуждения на другом ресурсе родилась архитектура Simpleton 4 которая, имхо, проще, ёмче и всячески приятственнее для программирования.
Исходники эмулятора и ассемблера можно посмотреть тут: github.com/aa-dav/SimpX (там же можно увидеть описание ISA на английском языке)

Прежде всего — эта ISA точно является субоптимальной по плотности команд.
Главная цель здесь — это сделать формат инструкций как можно более простым и ортогональным сохраняя программирование достаточно гибким и далёким от эзотеричности.
Плотность кода точно можно повысить получив в итоге что-то типа MSP-430, но это не цель и не вариант. :)
Как и в предыдущем поколении всё — и ячейки памяти и регистры 16-битные для простоты.
В отличие от Simpleton 3.x который каждую команду рассматривал как команду Си вида if (cond) Y ?= X, где? — это код операции Simpleton 4 смотрит на вещи еще более просто.
Он рассматривает все инструкции как одну и ту же операцию: R = Y * X, где опять таки * — это код операции. Т.е. безусловная трёхоперандная система.

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