Space Inviders в 512 байт

Игру Space Inviders запихнули в 512 байт на ПК. Кто повторит на калькуляторе? Места даже на слабых моделях достаточно.

Комментарии

Места и скорости достаточно. Размер индикатора подкачал.

В DM42 достаточно всего, в том числе разрешения экрана, но писать на асме под него - не, не в этом тысячелетии :)

---------------------------
Истина где-то рядом
www.litres.ru/vitaliy-samurov/dozvonitsya-do-devy/

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

Одно из заблуждений, распространяемых скудоумными имитаторами computer hacking — то, что якобы ассемблер «устарел» и «не нужен». Удивительно, сколько умных людей попадают под влияние этих лживых негодяев, со своими низкими «пределами развития», на дореволюционном уровне розг и лучины.

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

Да, программисты на Питонах и плюсах — более многочисленная категория. Но если всех программистов на асме истреблять и подвергать общественному осуждению, к чему стремится в России продавшееся ламерьё в погонах, некому было бы писать, например, прошивки DM42 и МК-161, а также компиляторы под них.

Если брать тот же eForth 5.2 под Windows, то даже там есть 71 слово, написанное на ассемблере. Без знания ассемблера невозможно написать востребованный компилятор Си — или бэкэнд коллекции компиляторов. Задачки, вроде той, про которую рассказал Арбинада, помогают совершенствовать своё искусство хэкерам 5 уровня, которые нужны человеческой культуре не менее, чем более распространённые (и более дешёвые по з/п) ЯВУшники.

О чем это вообще? Я где-то сказал, что ассемблер устарел?

---------------------------
Истина где-то рядом
www.litres.ru/vitaliy-samurov/dozvonitsya-do-devy/

Такое читается в пассаже про «это тысячелетие». Если не имели этого в виду, прошу прощения.

В этом веке и, возможно, в последующих, ассемблер людям пригодится.

"Тысячелетие" было только в контексте того, что я вряд ли найду время на такой челлендж с DM42. Против ASM-а не имею ничего, хотя за последние 20 лет зарабатывания на жизнь 99.9999% времени провел под ЯВУ.

---------------------------
Истина где-то рядом
www.litres.ru/vitaliy-samurov/dozvonitsya-do-devy/

Ну, 512 байт-то я бы написал, если "на борту" или на компе без хитрых операций заливки. Вопрос именно в удобстве использования ассемблера на устройстве. На ПК это удобно, например, на написание тестовой программки для "Счастливых билетов" ушло пару-тройку часов вместе с гуглением нужных функций.

Согласен - на ПК это удобно, на том же DM42 придется ставить на компьютер SDK (который только на Си) и разбираться с почти недокументированным железом.

---------------------------
Истина где-то рядом
www.litres.ru/vitaliy-samurov/dozvonitsya-do-devy/

Если SDK основан на GCC, в этой коллекции компиляторов есть ассемблер. Разбираться с железом или функциями SDK, конечно, придётся.

Да, SDK на базе ARM-GCC. На Гитхабе швейцарцев есть SDK, демо и Free42 фронтэнд для DM Calculator Platform (DMCP), которая есть ОС калькулятора.
Собственно, вся доступная документация о доступе к железу калькулятора - файл dmcp.h. Как именно использовать железо низкоуровнево - скрыто от пользователя.

---------------------------
Истина где-то рядом
www.litres.ru/vitaliy-samurov/dozvonitsya-do-devy/

Compiler                              Average time (for 10 runs), msec
NASM 2.10.09 64 bits                  240
…
gcc version 4.8.4                     116
(Ubuntu 4.8.4-2ubuntu1~14.04)

Хороший пример того, что современные компиляторы зачастую эффективнее "ассемблинга вручную"

---------------------------
Истина где-то рядом
www.litres.ru/vitaliy-samurov/dozvonitsya-do-devy/

Смотря кто программирует. Можно же за основу взять ассемблерный код, в который скомпилирован код на ЯВУ. Но задачки на 512 байт это не про скорость. Асм не предназначен для решения всех задач. Просто у него есть своя, важная ниша.

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

Например, eForth 5.2 компилируется MASM’ом, который раскопали внутри Visual Studio 2015 Community Visual C++. Из консольного приложения C++ ассемблерный код вызывает API Windows, используя библиотеку третьей стороны для программирования на ассемблере под Windows.

Согласен - для задач типа "втиснуть что-то в 512 байт" только ASM

---------------------------
Истина где-то рядом
www.litres.ru/vitaliy-samurov/dozvonitsya-do-devy/

Вполне возможно, что входного языка ПМК может хватить. Он часто выразительней ассемблера и достаточно быстр, если есть возможность не выводить спрайты по точкам.

Увы, на моих МК-161 индикатор 128×64 слишком мал для таких извращений.

В примерах программы Proteus (симулятор электронных схем с микроконтроллерами) - он есть :)
Space Invaders in Proteus simulationhttps://ibb.co/Njt6xzR

P.S. https://www.youtube.com/watch?v=TOVJA7Op8Ac

Да, так может получиться на монохроме 128×64. Три ряда по 6 врагов.

В таком случае можно даже спрайты в 11px из поста заимствовать. Разумеется, убрав цвет.

вероятно можно и просимулировать.

Если это поможет написать свою прошивку — отличная идея! Тот же 161eForth очень легко должен лечь в ПЗУ контроллера. Для этого даже не придётся делать плавучку.

в конструктиве совместимости электрически и конструктивно (PLCC44)
например Atmega162 (но они, сейчас посмотрел, в TQFP44)

P.S. Под данный контроллер у меня есть и собранный AmForth :)
а также под Atmega8515, но для ядра amForth это уже достаточно мало (Atmega64 уже наверное за глаза)

и, например, в рамках такого решения сделать поддержку команд ПМК.

Более Флэш ёмких контроллеров с поддержкой внешней памяти и в формате PLC44 вроде нет в номенклатуре Atmega (может через какой то переходник есть решение)
У меня в программаторе Mini-pro TL866 нет поддержки 51-х контроллеров от Nuvoton, но они должны программироваться Софтом по последовательному каналу (вроде ного P4.3 к земле), но ещё не проверил это.
В качестве 51-го можно посмотреть использование At89C51, но там памяти только 8Kб (имеющиеся в Чип и Дип)

Можно. Но пока никто не документировал, как происходит чтение нажатой клавиши и отображение информации на индикаторе МЭЛТ. Замена камня на другую архитектуру эту главную проблему не решит — к УВВ обращаться из нового камня придётся. И наоборот, документирование аппаратного уровня решит проблему с написанием прошивки для того камня, который есть.