Концептуальная доработка функции USR У Бейсиков

Советский компьютер Радио-86РК (1986) и его клоны

Moderator: Shaos

Post Reply
User avatar
Alikberov
Doomed
Posts: 347
Joined: 15 Oct 2019 01:10
Location: Tashkent
Contact:

Концептуальная доработка функции USR У Бейсиков

Post by Alikberov »

Как известно, функция «USR(адрес)» вызывается пользовательский код, находящийся по указанному адресу, предварительно записанному в память, например, операторами DATA/READ/FOR/POKE/NEXT.
Как-то задумался над вопросом, чтобы добавить модификацию функции - «USR("строка" или строковая_переменная$)», которая могла бы сама транслировать/запускать псевдо-код, тело которого хранится прямо в строке.
Типа, «DEF FN MY(X) = USR("21 D0 76 3E 4E [[ 36 XX 23 3D C2 +0 ]]")» будет всякий раз при обращении «FN MY(код)» заполнять верхнюю строку экрана…
Здесь «[[» и «]]» открывают/закрывают тело блока операций, а интервал +0…+9 вставляет ссылку на начало n-го блока (+0 - текущий блок, +1 - блок на 1 уровень выше и т.д.)

Чтобы не быть голословным, ниже - сам набросок транслятора кода и скриншоты.
Attachments

RK86-PSD.RKR.zip
Набросок самого транслятора
(772 Bytes) Downloaded 174 times

Ввод конкретного кода
Ввод конкретного кода
pseudo-80-type.png (16.85 KiB) Viewed 4294 times

Результат выполнения кода
Результат выполнения кода
pseudo-80-run.png (20.36 KiB) Viewed 4294 times

Mondx
Doomed
Posts: 513
Joined: 10 Aug 2022 14:27
Location: Crimea

Re: Концептуальная доработка функции USR У Бейсиков

Post by Mondx »

Алик, ты думаешь здесь найти единомышленников? Сюда 3 человека в день заходят, правда Shaos? По моему, уже давно пора свернуть всю эту лавочку. Не?
User avatar
Alikberov
Doomed
Posts: 347
Joined: 15 Oct 2019 01:10
Location: Tashkent
Contact:

Концептуальная доработка функции USR до "недоассемблера"

Post by Alikberov »

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

Пример #1
  • «21[ "HELLO, WORLD" 00 ] CD 18 F8 C3 6C F8»
Здесь:
  • Конструкция «[ … ]» формирует блок инструкций или таблицы
  • Код «21» команды «LXI H» непосредственно перед «[…]» помещает адрес блока в HL
Пример #2
  1. «21 D0 76 0E 4E [ 36 17 23 0D C2] C3 6C F8»
  2. «21 D0 76 0E 4E [ 36 17 23 0D C2 +0] C3 6C F8»
  3. «21 D0 76 0E 4E [ 36 17 23 0D CA -0 C3] C3 6C F8»
Здесь:
  1. Код «C2» команды «JNZ» непосредственно перед «]» организует цикл в блоке
  2. Код «С2» с величиной «+0» означает условный переход на блок текущего уровня
  3. Код «CA» с величиной «-0» означает условный выход из блока текущего уровня
Пример #3
  • «[ CD 03 F8 FE 20 CA -0 4F FE 0D CA[ 0E 07 ] CD 09 F8 C3] C3 6C F8»
Здесь:
  • Код «CA» команды «JZ» и непосредственно «[…]» организует условный блок
Пример #4
  1. «2A X1 22 Y»
Здесь:
  • Символы «G…Z» адресуют область ОЗУ под переменные
  • Каждая переменная занимает 10 ячеек памяти
  • Цифра за буквой определяет индексное смещение относительно адреса переменной
Ниже - архив с самим транслятором и скриншот с примером трансляции листинга недо-Питона в исполняемый код.
Mondx wrote:Алик, ты думаешь здесь найти единомышленников?
Ну, ресурс - тематический. Разработка - тематическая.
Кому надо - зайдёт да найдёт! :roll:
Attachments

MICROHEX.RKR.ZIP
Файл с краткой инструкцией и rkr-файл с «недо-Питоном» на этом недо-ассемблере
(1.74 KiB) Downloaded 152 times

User avatar
Shaos
Admin
Posts: 24032
Joined: 09 Jan 2003 06:22
Location: Silicon Valley
Contact:

Re: Концептуальная доработка функции USR У Бейсиков

Post by Shaos »

Mondx wrote:Алик, ты думаешь здесь найти единомышленников? Сюда 3 человека в день заходят, правда Shaos?...
от тыщи до двух тысяч хитов в день:

viewtopic.php?f=74&t=9193&start=30
Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
Alikberov
Doomed
Posts: 347
Joined: 15 Oct 2019 01:10
Location: Tashkent
Contact:

Концептуальная доработка функции USR У Бейсиков

Post by Alikberov »

Просто как-то узнал про Wang 2200 со встроенным Бейсиком без оператора POKE и функций PEEK/USR, что может довести почти до шока любителей оптимизации и хака.
Вот и подумал, раз SUN работали над Java-процессором, но всё осталось на уровне «виртуальной Java-машины», то вот «кроссплатформенный USR» - мог бы существовать хотя бы как стек-машина… :roll:
Post Reply