Программный калькулятор ВК-6 на разных платформах
С интересом слежу за успехами AtH в процессе создания программного калькулятора ВК-6.
С учетом того, что ВК-6 написан на чистом и переносимом Си, вкралось желание обобщить, под какие платформы удастся собрать калькулятор.
Windows, под MSVC++ 2008:
Собрался. Вот комментарий Ajaja:
Версия v0.22 собралась и с помощью MSVC++ 2008. Пришлось только чуть-чуть os.c подправить. Китайский календарь отработал отлично.
Проблема с кодировкой в винде решается стандартно: chcp 65001 и уникодный шрифт для командного окна (Lucida Console обычно).
Или вставить: SetConsoleCP(CP_UTF8) и SetConsoleOutputCP(CP_UTF8) в main() и перекомпилировать, тогда не надо будет каждый раз перед запуском руками переключать кодировку консоли с помощью chcp.
Linux, под GCC:
Собрался.
Windows, под MinGW:
Собрался, с необходимостью поработать над кодировкой.
Windows, под DevC++:
Собрался, требуется осезависимый os.c для корректной работы gettimeofday().
Windows, эмулятор PC-AT DosBox (MS-DOS), под DJGPP:
После переименования файла mkchargen.c в mkchgen.c (8.3) собрался. Скриншот нескольких команд:
Здесь: собранный в DosBox под DJGPP: компилятор файлов MKL в MKP.
Nokia N810, эмулятор PC-AT DosBox (MS-DOS), под DJGPP:
DJGPP крайне медленный в Досбоксе под N810. Все-таки эмуляция архитектуры Х86 на ARMе.
Так что только в академических целях... Практически же нужен GCC на самой планшетке.
Nokia N810, GCC-3.4.4
После установки GCC оснащения жизнь на интернет-планшетке N810 стала значительно веселей!
~/MyDocs/C $ cd vk6 ~/MyDocs/C/vk6 $ ls vk6-0.22 vk6-0.22.zip ~/MyDocs/C/vk6 $ cd vk6-0.22/ ~/MyDocs/C/vk6/vk6-0.22 $ ls README.TXT chargen.h decomp.c gpl.txt reg.h buffer.c chargen.txt decomp.h makefile supp.c buffer.h clock.c draw.c mkchargen.c supp.h calc.c clock.h draw.h os vk6.c calc.h comment.c exec.c os.h chargen.c comment.h exec.h reg.c ~/MyDocs/C/vk6/vk6-0.22 $ make gcc -c vk6.c -o vk6.o gcc -c reg.c -o reg.o gcc -c calc.c -o calc.o gcc -c exec.c -o exec.o gcc -c draw.c -o draw.o gcc -c decomp.c -o decomp.o gcc -c comment.c -o comment.o gcc -c buffer.c -o buffer.o gcc -c clock.c -o clock.o gcc -c supp.c -o supp.o gcc -c os/gnu/os.c -o os.o gcc mkchargen.c -o mkchargen ./mkchargen Начинаю записывать chargen.c Создан файл chargen.c gcc -c chargen.c -o chargen.o gcc vk6.o calc.o exec.o reg.o draw.o decomp.o comment.o buffer.o supp.o clock.o os.o chargen.o -o vk6 -lm ~/MyDocs/C/vk6/vk6-0.22 $ ./vk6 -i ВК-6 v0.22 Г 0000 ----------------------- T 0 Z 0 Y 0 X 0 :123 Г 0000 ----------------------- T 0 Z 0 Y 0 X 123 3 :П1 Г 0000 ----------------------- T 0 Z 0 Y 0 X 123 П 1 :45 Г 0000 ----------------------- T 0 Z 0 Y 123 X 45 5 :/ Г 0000 ----------------------- T 0 Z 0 Y 0 X 2.7333333333333 ÷ :ИП1 Г 0000 ----------------------- T 0 Z 0 Y 2.7333333333333 X 123 ИП 1 :
Проверка скомпилированного тут же на планшетке mkl2mkp.с посредством Китайского года:
~/MyDocs/C/vk6 $ ./mkl2mkp kitgod.mkl ? �� MKP kitgod.mkl ? � ��� � ��� ��� : 0 ?��� (��� ���): 27 ?��������� � ���襭
Запуск:
~/MyDocs/C/vk6/vk6-0.22 $ ./vk6 kitgod.mkp ВК-6 v0.22 Загружаю файл программы 'kitgod.mkp' длиной 5401 байт. Загружено 2700 шагов. Исполняю... █▄▄███▄█████████████████████████████████████████████████████████ ▀▄▄ ▄▀██████████████████████████████████████████████████████████ ██ ██ █████████████████████████████████████████████████████████ █▄▄███▄█████████████████████████████████████████████████████████ ▀▄▄ ▄▀██████████████████████████████████████████████████████████ ██ ██ █████████████████████████████████████████████████████████ █▄▄███▄█████████████████████████████████████████████████████████ ▀▄▄ ▄▀██████████████████████████████████████████████████████████ ██ ██ █████████████████████████████████████████████████████████ █▄▄███▄█████████████████████████████████████████████████████████ ▀▄▄ ▄▀██████████████████████████████████████████████████████████ ██ ██ █████████████████████████████████████████████████████████ █▄▄███▄████▀▀▀ █████████████████████████████████████████████████ ████▀▀▀███ █▄▀ ███████████████████████████████████▀▀▀███████████ ████▄▄█▄██▀▀▀▀▀█████████████████████████████████▀▄███▄▀█████████ ▀▄▄▀██ ███▄▀█████████████████████████████████████████▀██████████ ██▄▀█ █████▄▄▄█████████████████████████████████████ █ █████████ █▄███▄▄███▄▀█▀▄███████████████████████████████████▄▄▄▄▄█████████ ██████████▀▀ ▀▀███████████████████████████████████▄▄ ▄▄█████████ ██████████▀▀▀▀▀███████████████████████████████████▀▀ ▀▀█████████ ████ ▄▀████▄▀████████████████████████████████████▀▀▀▀▀█████████ █▀▀▀▀▀████▄▄▄▄▄████ ██████ ████████▀▀█████████████▄▀██████████ █▄▀██ ███▀▀▀▀ ▄███ ███ █████ ███████████▄▄▄▄▄█████████ ▄▀▀▀ ▀▄███████ ████ ███ █ █ ████ ████████████▀▄▀▄▀█████████ ██████▀███▄▄▄▄▄████ ███ █ █ ██▀ ▄█████████████ █▄█ █████████ ▀▀▀▀▀▀ ██████████ █ ▀██████████████████▀▀████████ █▄▀███ ███▀▀▀▀▀████ ███ █ █ ██▄ █████████████▄▄▄▄ █████████ █▀████████ ███ ████ ███ █ █ ████▄ ████████████▀▀▀▀ █████████ ██▄▀██████▄▄▄▄▄████ ███▄▄█ █▄▄█████▄ █████████▀█████▀█████████ ████▄▀████ ████████ ▀▀▀▀▀▀ ▀▀▀▀▀▀▀▀█▄██████████▄▀▀▀▄██████████ ▀▀████████ ▀▀▀▀████▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄ ▀█████████████████████████ █▄▀███████▀██████████████████████████▄█████████████████████████ ███▄▄▄████ ████████████████████████████████████▀█▄▄ ▄▄█████████ ███████████ ████████████████████████████████████▄█▀▀▀ ▀█████████ █████████▀▀█▀▀████████████████████████████████████▀▀▀▀▀█████████ ████████ ██ ██ █████████████████████████████████████▄▀██████████ ████████▄▀▀▄▀▀▄███████████████████████████████████▄▄▄▄▄█████████ ████████▀▀████████████████████████████████▀▀▀█████▄▀█▀▄█████████ ████████ █▄▀████████████████████████████▀▄███▄▀███▀▀ ▀▀█████████ ████████ ███▄▄▄███████████████████████████▀▀▀▀▀███▀███▀█████████ ████████████████████████████████████████ ███▄▀████ ███ █████████ ██████████████████████████████████████████▄▄▄▄▄███▄▄▄▄▄█████████ █████▀▀█████▀▀▀████████████████████████████▀▀▀ ███▀▄ █ █████████ █████▄▄█████▄▄█▄██████████████████████████ █▄▀ ███▄▀ ▀▄█████████ ██▀▄ ▄▀█ ▄▀█████████████████████████████▀███▀▀████▀▀▀▀▀██▀▄▄▄▀██ ██ █ █ █ ██▄▀▀▀██████████████████████████ █ ██ █████ ███▄█████▄█ ████████▄███████████████████▀▄▀███████████▄▄▄▄████▄▄▄█████▄▄▄▀██ █████ █▀▄▄▀██ ███████████▀▀ ▀ █████████▄▀███▀▄███▄▄ ▄▄███▀▀▀▄▄▀ ██▀▀▀▀▀█ ██▄▀█ ███████████▀▀▀▀▀███████████▄▄▄█████▀▀▀ ▀███▀███▀█ ████ ████▄███▄▄█████████████ █████████████████████▀▀▀▀▀████▄▀▄██ ██▄▄▄▄▄██ ▄ █ ████████████▄▄▄▄▄███████████▀▀▀▀▀███▄▀██████▀▄█▄▀█ █████████▄▄▄█▄████████████▄▄ ▄▄█████████ ███▄▀██████▄▄▄█▀█████▀█ █▀▀▀▀▀██▄▄▄▄ ▄▄███████████▀▀▀ ▀███████████▄▄▄▄▄███ ▄▄▄▄██▄▀▀▀▄██ █▄▀██ ███▀▄███████████████▀██████████████▄▄▄▄▄████▄▀▀▀█████████ ▄▀▀▀ ▀▄█▄▄▄▄▄▄▄████████████ ████████████████▀▄ ███████▀█████████ ██████▀████████████████████ ██████████████▀▀ ▀ ███▀▄ ▄ ███ ▄▄▀██ ▀▀▀▀▀▀ ███▀▀▀▀████████████▀▀▀▀▀███████████▀▀▀▀▀███▄██▄▄███ ▀▀ ▀▀ █▄▀███ ██ █ ██ █████████████ █████████████▄▀██████ ▀▀▀▀███▀█████ █▀▀▀▀▀███▄██▄▄████████████▄▄▄▄▄█████████████▄▄▄███▄███████ █████ █▄▀██ ███ ▄▄▄ ███████████▀▄ ▄▀███████████▀▄ █ ███▀▄ █ ███▄▄▄▄▄█ ▄▀▀▀ ▀▄███ ▀▀▀ ███████████ █ █ ███████████▄▀ ▀▄███▄▀ ▀▄███▄▄ ▄▄█ █▀▀███▀█▀▀██████████████▀▀██████████████▀███▀▀████▀▀▀▀▀███▀▀▀ ▀█ ██ ██ █ ███████████████ ███████████████ ██ ██ ████▄▀█████▀█████ ▄▀██▄▀ █ ▀▀▀▀▀▀█████████ ▀▀▀▀▀▀█████████ ▀▀ ▀▀ ███▀ ▀▀▀███ ▄▄▄▄█ Исполнение завершено! Г 0065 ----------------------- T 7 Z -239 Y 184 X 0 ~/MyDocs/C/vk6/vk6-0.22 $
- Vitasam's blog
- Log in or register to post comments
- 15369 просмотров
Комментарии
Переименовать или удалить.
Permalink
Переименовать или удалить. Возможно, mkchargen.c не уложился в DOS'овский стандарт 8+3. Поэтому MAKE.EXE его не обнаружил и попытался создать. Файл же mkchargen.c исходный, создавать его не требуется и правил создания быть не может.
На самом деле mkchargen нужен лишь для создания файла chargen.c из chargen.txt, а поскольку chargen.c уже включён в дистрибутив, комплировать mkchargen требуется лишь тому, кто захочет самостоятельно редактировать знакогенератор.
Короче, убираем из makefile правила для chargen.c, mkchargen и оставшееся должно заработать. И не забудьте перевести исходные тексты из кодировки UTF-8 в DOS'овский стандарт 866, иначе опять придётся жаловаться на "проблемы"! ;-)
Да,
Permalink
Да, переименование mkchargen.c в mkchgen.с помогло. Собралось.
Ура!
Permalink
Ура! Поздравляю. Меня тут два вопроса интересуют:
1. Были ли сконвертированы исходные файлы в CP866 (кодировку DOS) перед компиляцией?
2. Если да, работают ли русские команды ИПА, П9, К СЧ и т.д.?
А то здесь паранойю наводят. :-) У меня под Дебианом всё нормально работает. Интересно, как дело под другими операционками.
1). Нет, не были
Permalink
1). Нет, не были сконвертированы
Соответствеено, 2) не проверял. Но собираюсь попробовать
Хотя после успешной компиляции в непосредственно родное приложение N810 мне гораздо интереснее сидеть на планшетке. Глядишь, и до полноценной МК-161 дорастет :)
Дорастёт, куда денется.
Permalink
Дорастёт, куда денется. Вот только обращение ко внешним устройствам, боюсь, придётся энтузиастам N810 разрабатывать. И то, что получится, будут мало похоже на устройства МК-161. :-)
Также жаль, что MK.EXE вряд ли на N810 запустится. Хотя на сайте "СЕМИКО" была MKL2MKP, она может под N810 пойти.
(на правах спойлера) В следующей версии 0.23 уже должен быть работающий F ПРГ. Правда, программы при выходе из ВК-6 пропадают. Совсем как на советском МК-61. :-)
mkl2mkp
Permalink
mkl2mkp скомпилировался на N810 на ура:
~/MyDocs/C/vk6 $ ./mkl2mkp -h
mkl2mkp - EKVM Elektronika MK, compiler MKL to MKP file
mkl2mkp [key] MKLfile [MKPfile]
-h,-H,-? this help;
-v,-V version;
-w,-W warranty and copyright
Russian charset is CP866
~/MyDocs/C/vk6 $
~/MyDocs/C/vk6 $ ./mkl2mkp -v
Version 0.20 (GNU/Linux)
Надо попробовать Лунолет-1 скомпилировать.
Переконвертиро
Permalink
Переконвертировал в CP866. Собралось нормально (с учетом переименования mkchargen.c).
П1 ИП1 ПА ИПА работают
Здорово!
Permalink
Здорово! Это радует. А то тут некоторые (не будем показывать пальцем) на замечательную FindLetter() наезжали. ;-)
Ну, по сути, в
Permalink
Ну, по сути, в том же GCC все и собиралось, только под дос :)
Про 2,99999…
Permalink
Про 2,99999…. Вот же сволочная чужая арифметика! :-)
Кстати, я на эти штучки ещё в МК-152 натыкался. Потом Михаил Борисович сделал какую-то футбольную магию, и хвосты из девяток в ЭКВМ исчезли навсегда. Но вот в math.h, видимо, появились заново.
Поздравляю. Замечательно, если где-нибудь будут выложены исполняемые файлы. Не у всех руки под компилятор заточены.
Версия v0.22
Permalink
Версия v0.22 собралась и с помощью MSVC++ 2008. Пришлось только чуть-чуть os.c подправить. Китайский календарь отработал отлично.
Проблема с кодировкой в винде решается стандартно: chcp 65001 и уникодный шрифт для командного окна (Lucida Console обычно).
Или вставить: SetConsoleCP(CP_UTF8) и SetConsoleOutputCP(CP_UTF8) в main() и перекомпилировать, тогда не надо будет каждый раз перед запуском руками переключать кодировку консоли с помощью chcp.
Спасибо, я
Permalink
Спасибо, я обновил блог.
Похоже я
Permalink
Похоже я немного поторопился, не все там так просто. Ввод русских комманд работает только с SetConsoleCP(866);
Пришлось пересобрать с:
SetConsoleOutputCP(CP_UTF8);
SetConsoleCP(866);
Сейча Лунолет 1 "прохожу" ;)
Переключение консоли Windows в utf-8 (и не только)
Permalink
Переключение консоли Windows в utf-8 (и не только). Вконец озверев от недоразвитости виндовой консоли, сделал глубокое гугление. В результате нашел такой способ переключить консоль в utf-8 для запуска ВК-6:
Даже квадрат пишется...
Квадрат-3
Permalink
Квадрат-3. Квадрат пишется, а вот символа для останова (режима F АВТ) в Виндовой UTF-8 так и не нашёл. Винда отображает странным квадратиком, который сразу бросается в глаза. Принимаю любые предложения.
Кстати, ВК-6 выявил, что в размерности "кг/m^3" буква "м" латинская. Тоже можно поправить.