b2m wrote: 10 Jul 2025 03:11
Интересно, сложно ли будет добавить обработку таких строк:
Code: Select all
шаблон генерация
A=B MOV A,B
+C ADD C
-C SUB C
|C ORA C
&C ANA C
^C XRA C
<C CMP C
+11 ADI 11h
...
B=12 MVI B,12h
BC=1234 LXI B,1234h
++C INR C
--C DCR C
Можно будет писать: A=B +C -D
Или даже HL=["Hello, world!" 00]

Нужно будет только помнить, что результат всегда в регистре А должен быть. B=C +D не сработает...
У меня имеется заготовка парсера с подобным синтаксисом:
- «+C» → «ADD C»
- «#C» → «ADD C» (здесь «#» - сдвоенный «+»)
- «-C» → «SUB C»
- «=C» → «SBB C» (здесь «=» - сдвоенный «-»)
- «&C» → «ANA C»
- «^C» → «XRA C»
- «!C» → «ORA C»
- «?C» → «CMP C»
- «BC» → «MOV B,C»
- «$B» → «LDAX B»
- «$D» → «LDAX D»
- «B$» → «STAX D»
- «D$» → «LDAX D»
- «H="HELLO, WORLD!\0"»
Но код транслятора стал раздуваться несоразмерно и тяжелее отлаживаться, потому отложил, чтобы отдохнуть, собраться с мыслями и вернуться к гибридно-байтовому варианту.
Тем не менее, представляю Вам свой вариант
недо-среды недо-разработки (запуск по «G644»).
- «1000-10FF» - справочный лист клавиши «F1»
- «2000-2FFF» - листинг скрипта клавиши «F2»
- «3000-75FF» - листинг скрипта клавиши «F3»
Как можно заметить, адреса «1100-1FFF» зарезервированы под
классическую трансляцию.
Потому, текст основного буфера (справочного листа) не рекомендуется править!
Тем самым, под трансляцию кода доступны три региона:
- «0000-0643» - 1604 байта
- «1100-1FFF» - 3840 байтов
- «4000-74FF» - до 13568 байтов, в зависимости от размера скрипта #3
Естественно, загрузка/выгрузка буферов клавишами не предусмотрена, так как стремился достичь самого минимума, но достаточного для разработки.
P.S.: Это как бы первый пример практического применения редактора «ПобЭдит».
You do not have the required permissions to view the files attached to this post.