Поиграем в decu эмулятор?

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

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

Как только я освою электронику, то с радостью займусь проектированием этого устройства, напишу эмулятор для микроконтроллера и проведу тестирование, надо посмотреть насколько эта игра понятно возрастам. Мне кажется, что я бы понял как программировать, когда мне было лет 10.

Вот как выглядит эта игра сейчас, она для терминала Linux и BSD. Тестировалась на нескольких Linux и на OpenBSD.

decu эмулятор
decu эмулятор

У нас есть экран сверху, а снизу hex редактор. Перемещаемся с помощью клавиш hjkl как в vim. Когда хотил вписать код, нажимаешь клавишу i и вводим число.

Эту игру я писал два вечера и 6 часов отлаживал код, я запускал игру, а с другого терминала подключался к процессу и начинал каждую команду отлаживать и смотреть на поведение программы. Так получилось пофиксить всё.

Был интересный момент, вот именно в этом дампе до 0xf0, то есть до адреса 0x1f, содержиться программа вывода текста hello. 0xf0 заканчивает работу программы. Так вот, когда я уже делал её, то заметил, что сделал один недочёт в архитектуре, и пришлось быстро подстраиваться и справлять так, чтобы было логично, но первым делом, я думал, что сделаю супер архитектуру. Объясню что хотел. В обычных процессорах, я не имею ввиду те случаи, когда по dma можно в обход процессора передавать данные, данные передаются сначала через регистр. Записали в регистр числа, а потом регистр в адрес. Хотя есть регистр адреса для intel 16-bit адресации.

Я же задумал сделать, чтобы можно было сразу пересылать из памяти в память, например вот так LD [0x14], [0x15], что значит, что мы загрузим число из 0x15 адреса в 0x14 в шестнадцатеричном исполнении. В этом и была проблема, оказалось, что я не могу тогда загружать простое число, так что я решил сделать так, что при установлении определенных бит, можно загружать только так LD A, [0x15], в таком случае загружается в регистр A из адреса 0x15.

Когда исправил это, то было лень переделывать другой код, и я просто решил сделать так, там где мы по адресу загружаем смещение, например по адресу у нас число 0x3, то через код я увеличиваю этот байт и получается 0x4, и когда код доходит до этого места, то он уже считывает следующий символ из слова HELLO.

Игра эта до мелочи простая, есть даже man страница к игре. Она развивает мышление и понимание как работает железо. Вот ссылка на проект.

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

Если интерес не пропадёт, то добавлю отладчик и всё остальное, но разработка останется в машинных кодах. Над отладчиком ещё нужно подумать, так это будет моя первая разработка, где применяется отладчик, но будет увлекательно, я не сомневаюсь, так как мне нравиться не только кодить, но и делать отладку приложения.

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

3
3 комментария

Ты явно башковитый чел, но свои силы ты растрачиваешь на какие-то мега странные проекты.

4

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

3

Было бы неплохо сделать клавиатуру для смартфона, которая подходит для такой игры, было бы классно.