Конвертер монохромных BMP файлов в формат файлов MKL

Программа Китайский год замотивировала меня посидеть пару вечеров с интернет-планшеткой.

В результате получился такой скрипт на языке Python, преобразующий монохромный BMP файл в некое подобие исходного текста программы MKL программируемых калькуляторов МК-152/161.

Увеличенный в 4 x 4 раза исходный BMP файл bw_32x32_face.bmp:
>BMP файл
Для упрощения скрипта (а также из-за отсутствия времени) присутствует ряд ограничений:
- Ширина монохромного файла должна быть кратна 4;
- Минимальная ширина файла должна быть не меньше 16 пиксел (может, и при 16 будут глюки, не проверял)

Запускаем в консоли питоновский скрипт:

....>python bmp2mkl.py bw_32x32_face.bmp
--------------------------
File to open:  bw_32x32_face.bmp
File to write:  bw_32x32_face.bmp.txt
BMP file size:  190  bytes
Data start offset:  62  0x3E
DIB header size:  40  bytes
BMP width:  32 pixels
BMP height:  32 pixels
Num of color planes:  1
Num of bits per pixel:  1
Type of compression:  0
Raw bitmap size:  128 bytes
Colors in the palette:  0
Colors used:  0
-----
File converted
Ok

Скрипт создает текстовый файл bw_32x32_face.bmp.txt

;
; BEGIN bitmap file: bw_32x32_face.bmp
;
 .DB FFh,FFh,FFh,FFh
 .DB 80h,0h,0h,1h
 .DB 80h,3Fh,E0h,1h
 .DB 80h,FFh,FCh,1h
 .DB 83h,E0h,Fh,1h
 .DB 87h,80h,7h,81h
 .DB 8Eh,0h,1h,C1h
 .DB 8Ch,0h,0h,C1h
 .DB 98h,Ch,0h,61h
 .DB B8h,33h,0h,71h
 .DB B0h,40h,80h,31h
 .DB 60h,40h,80h,19h
 .DB 60h,80h,40h,19h
 .DB 60h,80h,42h,19h
 .DB 60h,40h,8Dh,99h
 .DB 60h,40h,88h,99h
 .DB 60h,33h,8h,99h
 .DB 60h,Ch,Dh,99h
 .DB 60h,0h,2h,19h
 .DB 60h,0h,0h,19h
 .DB 60h,3h,C0h,19h
 .DB B0h,7Ch,38h,31h
 .DB B9h,80h,0h,71h
 .DB 98h,0h,0h,61h
 .DB 8Ch,0h,0h,C1h
 .DB 8Eh,0h,1h,C1h
 .DB 87h,80h,7h,81h
 .DB 83h,E0h,Fh,1h
 .DB 80h,FFh,FCh,1h
 .DB 80h,3Fh,E0h,1h
 .DB 80h,0h,0h,1h
 .DB FFh,FFh,FFh,FFh
;
; END bitmap file: bw_32x32_face.bmp
;

Путем замены символов в notepad-е и преобразования из шестнадцатеричных чисел в двоичные получаем такой битмап:

11111111111111111111111111111111
1                              1
1         111111111            1
1       11111111111111         1
1     11111         1111       1
1    1111            1111      1
1   111                111     1
1   11                  11     1
1  11       11           11    1
1 111     11  11         111   1
1 11     1      1         11   1
 11      1      1          11  1
 11     1        1         11  1
 11     1        1    1    11  1
 11      1      1   11 11  11  1
 11      1      1   1   1  11  1
 11       11  11    1   1  11  1
 11         11      11 11  11  1
 11                   1    11  1
 11                        11  1
 11           1111         11  1
1 11     11111    111     11   1
1 111  11                111   1
1  11                    11    1
1   11                  11     1
1   111                111     1
1    1111            1111      1
1     11111         1111       1
1       11111111111111         1
1         111111111            1
1                              1
11111111111111111111111111111111

В архиве лежат собственно скрипт и бат-файл для добавления пути к Питону в виндусовой консоли. Для совместимости с интернет-планшеткой я пользовался версией 2.6.4, взятой с питонского сайта

Комментарии, замечания и пожелания приветствуются горячо :)

File attachments: 
Прикрепленный файлРазмер
Package icon bmp2mkl.zip1.6 KB
Undefined

Комментарии

Гимп. А можно ли этот питоновский скрипт адаптировать под плагин Гимпа? Если будут проблемы со спариванием Гимпа и Питона, помогу.

Тогда .MKL файлы можно будет сохранять прямо из Гимпа, как JPG/BMP/PNG/итд!

Мысль интересная. но опыта с плагинами Гимпа ноль. Можно для начала сделать исполняемый ехе файл.
И еще доработать бы надо скрипт, чтобы конвертил файлы произвольного размера

---------------------------
Истина где-то рядом
aldebaran.ru/author/samurov_vitaliyi/kniga_dozvonitsya_do_devyi/

Гимп. В Гугле находится туториал (да и в бумажной книжке Дениса Колиснеченко тоже про это есть).

В туториале (да и стандартной поставке) есть пример. Фактически там дана вся обвязка кода, куда только надо вставить начинку. Конечно, хотелось бы, чтобы она работала не с файлами, а с тем изображением, которое в Гимпе редактируется.

Главное, это последовательность установки. Вначале Питон, потом питоновские либы для питоновской версии (их список есть в туториале). В конце устанавливается сам Гимп и ставится галочка «поддержка Питона».

.exe'шники для плагина никакие не нужны. Сама питоновская программа грузится и занимает положенное место в меню. В Гимпе даже можно получить приглашение командной строчки Питона.

А ведь заинтересовал! Я сейчас как раз начал Гимп осваивать. Питон прикручивается к обоим Гимпам - линуксовому и виндовому?

---------------------------
Истина где-то рядом
aldebaran.ru/author/samurov_vitaliyi/kniga_dozvonitsya_do_devyi/

Да. Причём к линуксовому Питон прикручивается проще. Там что-то вроде пакета gimp-python .

.

---------------------------
Истина где-то рядом
aldebaran.ru/author/samurov_vitaliyi/kniga_dozvonitsya_do_devyi/

Гимп 2.8. На днях вышел Гимп 2.8

Еще не пробовал? У меня руки не дошли пока

---------------------------
Истина где-то рядом
aldebaran.ru/author/samurov_vitaliyi/kniga_dozvonitsya_do_devyi/

Да. Его только что выложили под MacOS X, аккурат 9 мая. Забавный режим с одним окошком. Немного в нём поработал, вроде удобней.

Качаю под винду

---------------------------
Истина где-то рядом
aldebaran.ru/author/samurov_vitaliyi/kniga_dozvonitsya_do_devyi/

Установился. Запустился россыпью окон, я не сразу нашел, где там режим в одном окне.
Но да, стало удобнее

---------------------------
Истина где-то рядом
aldebaran.ru/author/samurov_vitaliyi/kniga_dozvonitsya_do_devyi/

Питон. Удалось прикрутить к нему Питон?

Нет, даже не пробовал. Некогда - паяю железяку

---------------------------
Истина где-то рядом
aldebaran.ru/author/samurov_vitaliyi/kniga_dozvonitsya_do_devyi/

Кстати, полученный mkl-подобный файл имеет смысл-то, в смысле синтаксиса? Долго вставить в программу для "пруф-оф-концепта"?

---------------------------
Истина где-то рядом
aldebaran.ru/author/samurov_vitaliyi/kniga_dozvonitsya_do_devyi/

Проверю. Пиши программу, проверю.

Обычно изображение начинается с двух байт, содержащих его размеры по обоим осям. Вряд ли они равны FF. Подробности есть в РЭ Д1.

А, нашел: 2.3.12. Вывод графического образа из памяти программ (R9015)

Функция предназначена для вывода на экран графического образа из памяти программ ЭВМ. Начальная координата задается в регистрах X0 и Y0, размер образа в точках по координатам X и Y задается в двух первых байтах изображения.

Операция производится при выполнении команды записи в регистр памяти с адресом 9015. В регистре X стека задается начальный адрес графического образа в памяти программ.

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

... Почитал документацию МК-1хх по поводу вывода графического образа. Я так понимаю, что вывод байтов по столбцам "сверху-вниз слева-направо" связан с особенностями контроллера экрана? Придется переделывать скрипт, в монохромном BMP файле байт кодирует 8 горизонтальных пикселей. И заодно добавить в первые два байта размер изображения.

---------------------------
Истина где-то рядом
aldebaran.ru/author/samurov_vitaliyi/kniga_dozvonitsya_do_devyi/

Да. В ЭКВМ действительно не виндовый BMP. Программа преобразования должна перекодировать изображение побитно.

Пример кодировки изображения в руководстве есть. И в моей программе, кстати, тоже.

"замотивировала меня" = стимулировала меня :) Про мотивацию и стимуляцию подробнее по ссылке

Жаль, нет питона для HP-50g. Сколько можно было бы скриптов запустить... SysRPL - весьма мрачная "вещь в себе", ассемблер x86 или, тем более, PDP-шных машин, покажется веселее.

Открывая пост, я думал, что (+) будет про "стимул" - в древне(й Греции?) - палка с заостренным концом для погоняния скота :)

Да, питон в калькулятуре было бы здорово. Удобный язык, что ни говори.
А точно нет?

---------------------------
Истина где-то рядом
aldebaran.ru/author/samurov_vitaliyi/kniga_dozvonitsya_do_devyi/

Паскаль. Комментарий был перемещен и теперь находится здесь.

LuaКомментарий был перемещен и теперь находится здесь.

Доброе Утро !

_________________
Dima Masalov
FIDO-NET - 2:461/43.9
E-MAIL - mds at ire dot kharkov dot ua




---------------------------
Истина где-то рядом
aldebaran.ru/author/samurov_vitaliyi/kniga_dozvonitsya_do_devyi/