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

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

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

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

Введение

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

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

HYPERADIO 2021

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



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

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

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

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

Программирование для Famicom/NES/Денди в Nesicide+ca65: маппер MMC3 - HBlank+скроллинг (10) КОНЕЦ

Это будет последний урок в этой серии описывающий на практике последнюю технику которую нужно знать, чтобы написать крутую игру на Famicom/NES/Денди…
Ну хорошо, если призадуматься, то нюансов в программировании на денди есть еще порядком. Как организовать «бесконечный» скроллинг прокручивая две экранных области друг за другом и обновляя вновь появляющиеся с краёв тайлы в VRAM по ходу движения… Как организовать тайлы в метатайлы 2x2, а то и 4x4 для более краткого описания карт и удобного обновления видеопамяти (ведь атрибуты палитр назначаются сразу блоку тайлов 2x2 в экранной области, а один байт атрибутов покрывает 4x4 тайла)… Как воспроизводить оцифрованные DCPM звуки с помощью FamiTone2…
Впрочем, имхо, материалов и примеров изложенных в этих статьях хватит чтобы сообразить как это всё делается самостоятельно. Да и должно же быть какое то пространство и для собственного творчества. Здесь же я поставлю точку в этом цикле и, возможно, займусь какой-нибудь уже полноценной игрой исходники которой выложу, но это будет другая история.

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

Программирование для Famicom/NES/Денди в Nesicide+ca65: маппер MMC3 - перехват HBlank (9)

Итак, кроме собственно управления дополнительными банками памяти маппер MMC3 обладает еще одной важной функцией — генерацией прерываний IRQ по счётчику сканлайнов. В уроке про zero sprite hit мы перехватывали момент когда можно например в середине кадра сменить параметры прокрутки заднего фона этим средством встроенным в консоль. Но этот способ во первых можно использовать только один раз за кадр, а во вторых требует от процессора тратить все вычислительные ресурсы на обнаружение наступления события, что кроме самого этого факта еще и затрудняет планирование времени сколько код должен выполняться.
Счётчик сканлайнов в MMC3 лишён всех этих недостатков.

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

SWEET16 - архитектура мечты Стива Возняка

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

Дешевый и сердитый 8-битный микропроцессор MOS 6502 стал сердцем очень многих компьютеров и консолей.
Так он был центральным процессором в компьютере Apple II — первом массовом компьютере фирмы Apple эпохальной значимости собственноручной разработки Стива Возняка.

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

Как мы сделали ZAVET 66% (апрельские тезисы)

UPD: Спустя 12 часов после публикации на Pouet, после успешного добавления восьми человек в секцию credits для релиза, после десятка коментов от ааа и его свиты и пары конструктивных коментов… ZAVET 66% был УДАЛЕН на pOUET владельцами этого ресурса. Гаргай и его команда теряют берега, о чем дед давно вас предупреждал, но теперь вы точно знаете, что делать…

=RMDA= только что выпустила свою первую большую работу. Это ZAVET 66% — демонстрация для ZX Spectrum от модели 16K до 128К. Да, некоторое количество первых частей работает на ZX Spectrum 16K, а далее все идет по нарастающей. Здесь очень много интересного внутри, разные способы проигрывания цифрового звука, концепция 6912 байт intro, самогенерируемый исполняемый код и все вот это. Ниже мы детально рассмотрим каждый из аспектов этой масштабной работы:

Интервидение

Normal tape loading (recomended), 30 min:


Fast tape loading (not recomended), 5 min:


Итак, как делался ZAVET 66%?

А делался он…
Читать дальше →

Программирование для Famicom/NES/Денди в Nesicide+ca65: маппер MMC3 - страницы (8)

Итак на этот момент нам подвластны 32Кб кода/данных в PRG ROM и 8Кб графики в CHR ROM. Но когда этого перестало хватать в ход пошли мапперы — микросхемы встроенные в картриджи переключающие банки памяти. О них у меня есть отдельная обзорная статья. Одним из крайне популярных мапперов был MMC3 и кроме собственной популярности на его базе было создано огромное число производных чипов. В этой статье мы научимся использовать его для увеличения доступного для игры ROM картриджа.

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

R.M.D.A. = russkie idut..

«Как это трогательно, серп и молот и звезда...» (c)

«Над родною над отчизной бесноватый ДЕД шел...» (cc)

«Левый сектор, правый сектор, но в итоге ВСЕ вы станете членами НАШЕЙ секты!» (ccc)

www.pouet.net/prod.php?which=85001





rmda.su