Демка "Hello the БК World!" в раздел Old-School pixel art graphics на фестиваль Демодуляции 2021 на Яндексе.
Демонстрируeтся максимально быстрый вывод пикселов на экран по заданным координатам.

Исполнимый файл для БК0010 или БК0011 в режиме эмуляции БК0010: snakedance.bin
Размер файла: 5918 байта
Запуск из монитора: S1000
Ссылка на видеофрагмент 1: https://photos.app.goo.gl/nPR1xpkPkyns58cY9
Ссылка на видеофрагмент 2: https://photos.app.goo.gl/mCwCtecUZZtSBYdx6
Дополнительные возможности для БК0011: выбор палитры клавишами от 0 до F, переключение режима автоматической смены палитры клавишей Z

Исполнимый файл для БК0011: snakedance11.bin - для ПЗУ БК0011 существует наверное не более 5 программ, включая эту.
Размер файла: 5876 байта
Запуск из монитора: 3000G
Фича: режим автоматической смены палитры включается по умолчанию

Для сборки использовались:
1) среда Linux, но собрать всё можно и в любой другой современной системе;
2) кросс-макроассемблер Macro11 - http://retrocmp.com/10-tools/macro11-cross-assembler ;
3) кросс-компановщик bk-obj2bin - http://litwr2.atspace.eu/bk11.html?item=1 ;
4) транслятор mse - http://litwr2.atspace.eu/mse-entry.html ;
5) транслятор C++ (использовал GCC g++);
6) транслятор gawk (опционально);
7) перекодировщик iconv (опционально).

Информация о процессе создания демки и её сборке.
1. Рисуем картинку (256х256 4 цвета) в редакторе графики (использовал GIMP), у меня нарисовалось path-256x256.png
2. Сохраняем её в формате С - path-256x256.c;
3. Применяем скрипт ok.mse: mse -t ok.mse -o path-256x256x.c path-256x256.c - получаем path-256x256x.c;
4. Вносим необходимые поправки в path-256x256x.c, провeряем правильность компиляцией;
5. Применяем скрипт ok2.mse: mse -t ok2.mse -o path-256x256y.c path-256x256x.c - получаем path-256x256y.c (делаем там правку с кавычками вручную), картинку в котором можно удобно редактировать в текстовом редакторе с маленьким шрифтом;
6. Переносим картинку из path-256x256y.c в hbw.cpp копипастом;
7. Компилируем и запускаем hbw.cpp, что генерирует файлы img.vec (бинарный) и соответствующий ему img.s (текст на ассемблере) и, кроме того, выводит на экран строимую по этим векторным данным картинку;
8. Если построенная картинки не соответствует исходной, редактируем образ в hbw.cpp и повторяем шаг 7;
9. Готовим сопроводительный текст в файле snake-msg.txt (кодировка utf-8);
10. Конвертируем snake.txt в кодировку koi8-r, получаем файл snake-msg.s;
11. Генерируем таблицу расцветки (файл tab1n.s) - там всё просто, он производится одной строкой на awk: gawk 'BEGIN{for(i=0;i<64;i++){k=i%3+1;print"    .BYTE",k","4*k","16*k","64*k}}' ;
12. Компилируем основную программу: macro11 -yus -ysl 16 -o snakedance.obj snakedance.asm ;
13. Создаём dump-файл утилитой dumpobj из состава утилит Мacro11: dumpobj snakedance.obj >snakedance.dump ;
14. Из dump-файла компонуем исполнимый BIN-файл: bk-obj2bin <snakedance.dump >snakedance.bin .

Сборка для БК0011 отличается только использованием исходника snakedance11.asm (вместо snakedance.asm).

При запуске под АнДОС/МкДОС обнаружилось, что шрифт по умолчанию там выглядит не лучшим образом, поэтому желательно при запуске под этими осями на БК0011 сначала установить стандартный системный шрифт. Нужно запустить файл 10.BKF в папке Шрифты под АнДОС. Под МкДОС нужно запустить 11+.BKF из папки UTIL/FONT. На БК0010 лучше запускать на голом железе из монитора.

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