- PVSM.RU - https://www.pvsm.ru -

Втиснуть Бейсик в 768 байт

Втиснуть Бейсик в 768 байт - 1

Тем, кому посчастливилось написать свою первую программу на Бейсике в конце восьмидесятых, объём интерпретатора в 16 килобайт кажется вполне естественным. Так было не всегда, известны интерпретаторы объёмом в 8 и 4 килобайта, конечно, с более скромным набором функций. Но в этот раз сделано, казалось бы, невозможное — интерпретатор ужат до 722 байт. Это меньше, чем 768, а значит, его получится поместить не в четыре, а в три микросхемы ПЗУ по 256 байт. Да, были и такие!

А 768 байт — это, между прочим, в 21,(3) раза меньше, чем 16384.

Интерпретатор написан для малопопулярного среди ретрокомпьютерщиков процессора 8008. Для него уже есть интерпретатор Бейсика — SCELBAL, но он 8-килобайтный. Система команд 8008 напоминает систему команд 8080 без половины инструкций. Или систему команд Z80 без 90% инструкций.

Первая версия интерпретатора, в которой уже имелись слова GOTO, INPUT, PRINT, а также был предусмотрен стандартный для интерпретаторов Бейсика способ редактирования программы, заняла 570 байт. Затем список слов был расширен до следующего: FETCH, GOTO, IF, LET, NEW, OUT, PRINT, STOP, VIEW и XECUTE.

Некоторые из них покажутся вам странными. А всё дело в том, что данный интерпретатор распознаёт слова по первой букве. Поэтому INPUT пришлось превратить в FETCH, LIST — в VIEW, а RUN — в XECUTE. А GOSUB и RETURN не предусматривать вообще — тогда бы пришлось выйти за пределы запланированного объёма.

Автор понимает пользователей портативного компьютера MCM/70, также выполненного на 8008, оборудованного двухкассетником и программируемого на языке APL с его однобуквенными командами.

Проект вместе с эмулятором доступен здесь [1] под лицензией MIT. Реального железа на 8008 у автора нет. Также можно скачать ассемблерный исходник [2] и результат компиляции с комментариями [3] отдельно.

Самый простой способ собрать весь проект с GitHub — воспользоваться NETBEANS 8.2, также потребуется SDL2. Для сборки ассемблера необходим макроассемблер AS [4].

Автор: Tormoz Edison

Источник [5]


Сайт-источник PVSM.RU: https://www.pvsm.ru

Путь до страницы источника: https://www.pvsm.ru/staroe-zhelezo/316696

Ссылки в тексте:

[1] здесь: https://github.com/paulscottrobson/1k-coding-challenge

[2] ассемблерный исходник: https://cdn.hackaday.io/files/18851806521184/basic.asm

[3] результат компиляции с комментариями: https://cdn.hackaday.io/files/18851806521184/basic.lst

[4] макроассемблер AS: http://john.ccac.rwth-aachen.de:8000/as/

[5] Источник: https://habr.com/ru/post/450632/?utm_source=habrahabr&utm_medium=rss&utm_campaign=450632