Калькулятор ВК-6


Главная / ЭКВМ / ПО

Калькулятор ВК-6 поддерживает систему команд, набор функций и формат файлов ЭКВМ. Может использоваться в качестве эмулятора ЭКВМ для отладки программ пользователя.

Информация о калькуляторе ВК-6 размещена в коммуне mk-152 ЖЖ:  29700.html,  30164.html,  30285.html,  30620.html,  31178.html и далее.




Копия файла README.TXT из пакета ВК-6 v0.32

  ВК-6 представляет из себя свободный калькулятор, написанный на языке Си.
Калькулятор ВК-6 совместим с ПМК серии "Электроника Б3-34", ЭКВМ серии
"Электроника МК-161" и может использоваться для интерпретации и отладки
на компьютере программ, написанных для этих ЭВМ.

   В качестве референс-модели использовалась ЭКВМ МК-161, заводской № 77.
На сайте НПП "СЕМИКО" можно найти неплохие средства программирования,
пригодные для разработки программ для калькулятора ВК-6.  Тем не менее
в ВК-6 нет электронного блокнота, редактора текста, файловой системы и работы
с внешними устройствами.  Для этого придётся приобрести железную ЭКВМ.

   Я не поставляю откомпилированные файлы ВК-6, но заинтересован в
добровольцах, которые смогут собирать и поддерживать бинарники, а также
пакеты под разные платформы.

   ВК-6 версии 0.29 и выше содержит шрифты МК-161, предоставленные НПП "СЕМИКО"
по лицензии BSD и предоставлен вам по лицензии GNU GPL v3.  Авторские и
исключительные права на ВК-6 (за исключением упомянутого знакогенератора
МК-161) принадлежат мне, Васильеву И.В., г. Москва.
Мой электронный адрес: softkey@rambler.ru


ПРЕДУПРЕЖДЕНИЕ!
---------------

   ВК-6 версии 0.32 представляет собой рабочую (незавершённую, предварительную)
версию калькулятора.  Её работоспособность и безошибочность не гарантируется.
Даже наоборот, данная версия ВК-6 распространяется в надежде на ваши сообщения
об ошибках, которые помогают совершенствовать калькулятор.

   Ваше активное участие в обнаружении ошибок поможет мне быстрее выпустить
первую версию калькулятора ВК-6.  Помните, только отдельная железная ЭКВМ,
выпущенная НПП "СЕМИКО" (http://mk.semico.ru/) гарантирует вам надёжные
вычисления, не зависящие от эпидемий компьютерных вирусов и прочих "закладок"!


Запуск ВК-6
-----------

   При запуске ВК-6 из командной строки операционной системы калькулятору
можно передать ряд параметров.  Во-первых, можно перечислить MKP, MKD, MKB,
MKT и MKI файлы для загрузки программ, регистров данных (десятичных, байтовых
и текстовых), а также картинки графического экрана.  Распознавание файла
производится по расширению файла, проверка правильности распознавания -- по
его длине.

   Если в командной строке не указана опция -i, загруженная программа
начинает выполняться автоматически.

   Также ВК-6 поддерживает ряд опций, задаваемых в командной строке
операционной системы:

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

 -c  Калькулятор будет очищать экран перед каждым отображением экрана ВК-6.

 -r  Вывод графического экрана в естественном, горизонтальном виде.  Чтобы
     эта опция работала правильно, терминал компьютера должен быть способен
     отображать более 128 символов в строке.

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

 -x  При отображении стека на экран выводится содержимое регистра X1.

 -h
 -?  Выдаёт краткую подсказку по этим опциям ВК-6.


Команды ВК-6
------------

   Стандартная поставка ВК-6 не включает графического интерфейса и работа с
калькулятором происходит через команды, набранные пользователем с
клавиатуры в ответ на приглашение ВК-6 (знак двоеточия).

   Калькулятор ВК-6 исполняет команды МК-152, МК-161, МК-52, МК-61 и т.д.,
поэтому вы можете использовать справочники и руководства по этим
калькуляторам.  В одной строчке можно ввести сразу несколько команд.  Чтобы
избегать двусмысленности, допускается разделять команды и клавиши префикса
(F, K, P) символом пробела.

   ВК-6 полностью поддерживает латинскую транскрипцию команд, используемую
программой MK.EXE и описанную в Руководствах МК-152 и МК-161.  Также вы можете
использовать значительную часть русской транскрипции, если в ней не
содержатся специальные символы, отсутствующие в кодировке ASCII.

   Например, ВК-6 исполнит команды ИПА, КБП9, +, К{x}, С/П -- но ввод команд
ENT, /, FR, KD->M возможен лишь в латинской транскрипции.  При вводе чисел в
в калькулятор ВК-6 используются правила ввода чисел в МК-161 и другие ПМК.
В отличии от MK.EXE пользователь свободен в выборе русской или латинской
транскрипции клавиш /-/ и ВП:

 : 2600
 : 36,6
 : 0,03 /-/
 : 9,91 ВП 9
 : 3,1415 +/- EE 12 +/-

   Ниже перечислены некоторые команды ВК-6, для которых пришлось вводить
свою мнемонику:

   Q    Завершение работы ВК-6.  Набранная программа и данные будут потеряны.
   >    "ШГ вправо", клавиша с кодом 23.
   <    "ШГ влево", клавиша с кодом 24.
   GRAD Переключение градусной меры, клавиша с кодом 31.
   RUS, LAT, РУС, ЛАТ
        Переключение латинской и русской транскрипции, клавиша с кодом 31.


Команды отладчика
-----------------

   Калькулятор ВК-6 имеет встроенный отладчик.  Все команды отладчика
начинаются с символа точки, который вводится в ответ на двоеточие,
приглашение ВК-6.

 : .u адр1 адр2

   Команда декомпилирует шаги из памяти программ, начиная с адреса адр1
и заканчивая адресом адр2.  Команда "u" без параметров выводит десять
следующих шагов.

 : .d адр1 адр2

   Команда выводит содержимое памяти программ в численном виде, начиная
с адреса адр1 и заканчивая адресом адр2.  Команда "d" без параметров
выводит 50 следующих байт.

 : .r адр1 адр2

   Команда выводит содержимое регистров, начиная с адреса адр1 и заканчивая
адресом адр2.  Также она может использоваться для просмотра содержимого
одного регистра.

 : .g =адр адр1 адр2 .. адр10

   Команда запускает выполнение программы, начиная с адреса адр --
предварительно установив до десяти точек останова адр1, адр2,.. адр10.
Без параметров аналогична команде С/П.

 : .t =адр кол

   Команда выполняет кол шагов, начиная с адреса адр.  Без параметров
аналогична команде ПП.

 : .p =адр кол

   Команда трассировки :p аналогична команде :t, но не заходит внутрь
подпрограмм и дожидается завершения циклов L0..L3.

 : .?

   Выдаёт краткую подсказку по командам отладчика.



Лицензия на русском языке
-------------------------

   Вам поставляется исходный текст программы ВК-6, включающий свободный
знакогенератор (свободные шрифты 0, 1 и 2) со следующими правами:

 * хранить, компилировать и использовать настоящую программу;
 * изучать исходный текст и вносить изменения в свою копию программы;
 * распространять программу, а также основанные на ней работы, бесплатно или
   нет -- но лишь по аналогичной (свободной копилэфт) лицензии.  В частности,
   вы должны указывать наличие изменений и публиковать их полный исходный
   текст.

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

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

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

   Полную версию Лицензии на английском языке, особенно важную для иностранных
лицензиатов, смотрите в файле gpl.txt -- если у вас нет этого файла,
обращайтесь за GNU GPL v3 к Free Software Foundation (www.fsf.org).


Особенности ВК-6
----------------

   ВК-6 написан на портабельном Си с целью лёгкости компиляции под различные
операционки.  Калькулятор работает в терминальном режиме и изначально
проектировался под кодировку UTF-8.  Впрочем, изготовителям двоичных
пакетов не составит труда перевести исходные тексты в другую кодировку --
основной движок всё равно работает в том варианте кодовой страницы 866,
который использует МК-161.

   Начиная с версии 0.23, калькулятор ВК-6 способен служить бэк-эндом для
графического интерфейса пользователя.  От разработчика графического
интерфейса требуется создание функций отображения экранов автоматической
работы и графического буфера bScreen[1024] (передаются функции TurnOn(),
образец см. в файле vk6.c), а также передача калькулятору ВК-6 кодов нажатых
и отпущенных клавиш (через функции ButtonPress() и ButtonRelease()).

   Я заинтересован в работе с теми, кто возьмётся компилировать ВК-6 под
всевозможные устройства -- от Макинтошей до мобильников и игровых консолей.
Пусть везде будет ЭКВМ!  Пожалуйста, сообщайте мне о своих проблемах и просьбах
по email'у или в жж-сообществе:

http://community.livejournal.com/mk_152


История
-------

15 апр 2012, версия 0.32
  * добавлено пропущенное описание MnemoPGOTO в decomp.h
  * отладочные команды теперь начинаются не с двоеточия, а точки .
  * при выводе чисел используется десятичная запятая
  * улучшена совместимость с MinGW при выводе чисел из стека
  * при загрузке файлов MKP служебный байт может принимать значение 02

16 апр 2010, версия 0.31
  * улучшена работа K[x] и K{x}
  * замечена ошибка вывода символов шрифта 1

12 апр 2010, версия 0.30
  * шрифты 0 и 1 МК-161 обновлены до версии 1.01

12 апр 2010, версия 0.29
  * расширено описание отладчика в README.TXT
  * подключены шрифты МК-161, опубликованные НПП "СЕМИКО"
  * шрифты МК-161 слегка доработаны: добавлены буквы Ё и ё, симметричный !

 3 апр 2010, версия 0.28
  * добавлена работа клавиш выбора в Р ПРГ
  * отладчик выделен в модуль debug.c
  * добавлена команда g и до 10 точек останова
  * добавлены команды трассировки t и p

 2 апр 2010, версия 0.27
  * доработан файл README.TXT, расширены инструкции
  * модуль draw.c теперь называется display.c
  * вывод ошибок из exec.c теперь происходит через новую функцию OsAlert()
  * добавлена загрузка MKP-файлов с начальным адресом, отличным от 0000
  * добавлены команды отладчика: u d r
  * в режиме Р ПРГ заработали команды > и <, а также клавиши ШГ

30 мар 2010, версия 0.26
  * поставлен пробел в сообщение "Ошибка ВП ,"
  * обработка переполнения и машинного нуля сделана точнее

30 мар 2010, версия 0.25
  * исправлена ошибка ввода команды P ПРГ
  * добавлен ввод команды Р АВТ для выхода из режима Р ПРГ

30 мар 2010, версия 0.24
  * правильно указана дата версии 0.23
  * исправлен README.TXT в соответствии с последними изменениями
  * исправлена ошибка ввода команды ВП

30 мар 2010, версия 0.23
  * в шрифт 1 доделаны все символы, кроме букв
  * старый модуль calc.c получил новое название cpu.c
  * введена маркировка функциональных узлов
  * добавлен новый модуль keyboard.c
  * серьёзно переделан модуль exec.c
  * улучшена поддержка R9028, R9029
  * диалоговый режим изменён на автоматический (F АВТ)
  * добавлено два новых режима: F ПРГ и P ПРГ
  * ВК-6 готов для навешивания графической мордочки
  * R9046 теперь работает на чтение
  * добавлены советы компиляции под различные целевые ОС

21 мар 2010, версия 0.22
  * исправлена ошибка с угловой размерностью тангенса

21 мар 2010, версия 0.21
  * шрифт 0 улучшен, добавлены недостающие символы
  * добавлена большая часть символов шрифта 2
  * переход в автоматический режим оформлен через отдельную функцию

19 мар 2010, версия 0.20
  * поддержка R9023, R9024, R9035, R9036
  * при включении расстояние между символами равно 0
  * при включении граф. экран забит шумом
  * в шрифт 0 добавлены заглавные русские буквы

18 мар 2010, версия 0.19
  * приглашение поменялось на ':'
  * после К ГРФ экран стека не выводится, особенно полезно при -c
  * поддержка R9021, R9022
  * добавлены символы 10h и 13h шрифта 0

18 мар 2010, версия 0.18
  * реализована R9020
  * написан компилятор знакогенератора
  * в шрифтах 0, 1 разработаны образы цифр и некоторых других символов
  * добавлено make clean

16 мар 2010, версия 0.17
  * установлены затычки на R9028, R9029
  * реализованы R9015, R9016

16 мар 2010, версия 0.16
  * опция -n для отображения граф. экрана в негативе
  * исправлены ошибки в реализации R9013
  * поддержка R9012, R9014

15 мар 2010, версия 0.15
  * загружаются файлы MKD, MKB, MKT и MKI
  * поддержка R9050, R9051, R9052, R9053
  * поддержка R9055 на чтение
  * частичная поддержка R9013
  * ключ -r для горизонтального вывода граф. экрана
  * отображение граф. экрана псевдографикой 1x2

10 мар 2010, версия 0.14
  * опция -c работает также при выводе графического экрана
  * поддержка R9037, R9038
  * исправлены ошибки в реализации R9103
  * ввод цифр работает корректнее, останавливаясь после ввода восьмой

 8 мар 2010, версия 0.13
  * в автоматическом режиме комментарий PGOTO отображается корректно
  * исправлена ошибка декодирования команды КПr
  * разрешена русская команда /-/ для смены знака числа в RX
  * добавлена поддержка регистров 9007, 9008, 9103 и некоторых других
  * общая оптимизация кода, с учётом возможной компиляции под Windows

 7 мар 2010, версия 0.12
  * исправлена ошибка FLn/PFLn
  * доделаны декомпилятор и поддержка латинской мнемоники
  * доделана строка комментариев и часть регистров функций
  * напряжение по R9115 теперь 3,6В -- как в РЭ МК-161
  * номер версии по R9117 и в строке заставки теперь ровно 0.12 :-)

 6 мар 2010, версия 0.11
  Прошлая версия обнуляла программную память после загрузки программы.
  Исправлено.  Также общее "причёсывание" кода.

 5 мар 2010, версия 0.10 (первая публичная бета).
  Реализованы, но пока не отлажены все опкоды.  Нет:
  * системы прерываний
  * клавиатуры МК-152, АЦП МК-161, интерфейсов, звука, таймера
  * электронного блокнота
  * энергонезависимой памяти
  * универсального буфера
  * файловой системы
  * загрузки файлов данных
  * загрузки/выгрузки файлов программ, данных и т.д.
  * большинства графических и других функциональных регистров


 3 мар 2010, версия 0.01
  Создан файл vk6.c, началась работа над проектом.

Калькулятор доступен для скачивания со страницы "программное обеспечение".


НПП "СЕМИКО" (383) 271-01-25 (многоканальный)