Челлендж: метакомпилятор для МК-161

Готов ли кто-нибудь написать метакомпилятор для «Электроники МК-161»? Я обращаюсь к владельцам ЭКВМ или тем, кто готов потратить на неё 17000 рублей или раздобыть другим образом. Также к тем, кто может внести что-то в призовой фонд. Сам я могу помочь своим опытом и советами. Также мною опубликованы Каллисто 1.0 и 161eForth 0.9b, откуда можно заимствовать работающие определения слов Форта на языке МК-161. В своё время здесь был успешный конкурс, конечно более скромный, по написанию вывода шестнадцатеричных чисел на ЭКВМ.

Сформулирую задачу. Требуется написать:

1. Программу Компилятор на входном языке МК-161, которая считывает содержимое области «текста» (3Кб, R5096…R8167) и компилирует его в косвенный шитый код (4Кб, R1000…R5095). Шитый код, при необходимости, может состоять из нескольких страниц-накладок («оверлеев») — двоичных файлов (тип 6), грузящихся с диска по запросу. Информация между оверлеями может передаваться через десятичные регистры (R0…R999). Поэтому именно в них имеет смысл хранить стек данных и его указатель.

2. Исходный код, один или несколько файлов «текста» (тип 5, по 3Кб каждый), содержащих высокоуровневую часть Компилятора. В идеале Компилятор способен скомпилировать на борту МК-161 и свою низкоуровневую часть (1), передав её по последовательному порту в ведомый МК-161, находящийся в режиме внешнего доступа (НПКД. 401348.001 Д2 изм. 8).

3. Совместимость с Фортом приветствуется, но не требуется. Также не требуется поднятие разных логарифмов-синусов, да и вообще «плавучки» на высокий уровень. Даже режим диалога и алфавитная клавиатура в минимальной реализации не обязательны. Ведь для редактирования области текста можно использовать ПК или встроенный редактор ЭКВМ.

Задача эта на грани возможностей ЭКВМ по объёму памяти и быстродействию. От программиста она требует владения искусством и если будет решена, можно начать работу над оптимизацией и качеством Компилятора (дополнения из пункта 3) уже на существующей платформе, не дожидаясь МК-261. Существует множество минималистичных Фортов (даже меньше, чем eForth), которыми можно воспользоваться, как прототипом.

Comments

не проще ли закопать "стюардессу"? :)
т.к. и сам производитель данных MK-161 не нуждается в таких разработках.

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

В чём же нуждается новосибирский производитель, даже из Москвы угадать сложно. Были годы, когда их даже продажи не интересовали. Прям как тот Явлинский, кто только что попросил за «Яблоко» не голосовать. Производство в России, да и в СССР, это отдельный, интересный и глубокий вопрос. Можно создать отдельную тему. Возможно, такие уже были. Здесь хотелось бы отвлечься от высоких материй и обсуждать поставленную задачку.

По ней много технических вопросов, если кто возьмётся. Например, 4Кб оверлеи сделать проще всего. Но тогда сам цикл компиляции должен быть либо низкоуровневым (в «ПЗУ», точнее в памяти программ), либо находиться в одном оверлее. В том же, где компилируемая программа.

С другой стороны, можно сделать страницы по 2Кб и при загрузке оверлея сохранять одну из них в области текста (два коротких цикла по пересылке туда-обратно 2048 регистров, со сбросом номера блока, загруженного в область текста). При таком подходе оверлей грузится заметно дольше, зато несколько их могут работать последовательно, над компиляцией одной и той же страницы.

Я задержался со сборкой двух плат (мне и Сергею), в основном, из-за проблем с доставкой компонент. Но уважаемый Электромонтёр собрал свой вариант - все работает, не хватает только последнего рывка - дописать драйвер клавиатуры.

МК61S — отличный проект. Но я не понимаю, как его связать с Компилятором. Ресурсов МК61S явно не хватит для предложенной задачи. Ресурсов железа может хватить, но в нём не будет тех искусственных ограничений, которые делают задачу написания Компилятора челленджем. Туда можно просто залить тот же eForth, а результат будет не слишком калькуляторный.

Тогда и компилятор не нужен :)
Просто я бы хотел посмотреть на человека, кто сейчас за такие деньги купит МК161

Форт в МК61S залить относительно просто, отдельным пунктом в меню и параллельно к ПМК. Советую взять классику вроде eForth, чтобы программисты не чувствовали себя одинокими. :-)

Проблема лишь с интерфейсом. Алфавитную клавиатуру можно реализовать по моему методу, раскладка 161eForth наилучшая из опробованных. Если дисплей растровый, то и с отображением литер проблемы решаются. Конечно, потребуется разместить в ПЗУ знакогенератор. Рекомендую кодовую страницу ЭКВМ, если нет желания или возможности реализовать Юникод. На нашей Вики выложены новосибирские глифы каждой литеры.

Про вечную тему… цена у МК-161 разумная. Сейчас поход в магазин в Москве от 1 до 4 тысяч рублей. Если покупаешь не только хлеб и крупу, которые также в цене выросли, а еду на несколько дней. Другое дело, что последовательные «самоизоляции» без вертолётных денег разорили частный бизнес и изъяли у людей все накопления. Поэтому многие здесь даже еду покупают в кредит. Даже скромные траты на хобби и увлечения не все теперь могут себе позволить. Не знаю лично, как ситуация зарубежом. Но для иностранцев ЭКВМ стала дешевле, так как рубль подешевел.