Инструменты пользователя

Инструменты сайта


msx:basic_intermediate_code:basic_intermediate_code

MSX BASIC — Промежуточный код

Формат упакованного файла

Структура файла на примере:

1 PRINT ABS(5)
FF
▲─
│
Начало файла

Строка 1
│
▼──────────────────────────────────
0D 80 01 00 91 20 FF 86 28 16 29 00
▲──── ▲──── ▲─────────────────── ▲─
│     │     │                    │
│     │     Операторы            Конец строки
│     │
│     Номер строки 
│
Внутренний номер сроки


Строка 2

…

Строка N


00 00
▲────
│
Конец файла

Внутренний номер строки, и номер строки это 2 байта в обратном порядке: младший, старший.

Числа (переменные)

Название, тип Префикс Длина
(байт)
Пример Примечание
значение байты
Номер строки в операторах перехода0x0E 2 520 0E 08 022 байта в обратном порядке:
младший, старший
Восьмеричное число0x0B 2 &O100B 08 00
Шестнадцатеричное число0x0C 2 &H2A00C A0 02
Целое число 256–32767 (%)0x1C 2 1000 1C E8 03
Целое число 10–255 (%)0x0F 1 110F 0B

Десятичная число одинарной точности

Десятичная число одинарной точности (6 цифр) (!)

  • Префикс: 0x1D
  • Длина (байт): 4
  • В первом байте значение второго полубайта — положение десятичной точки

Примеры:

Значение Байты
.1234561D 40 12 34 56
1.234561D 41 12 34 56
12.34561D 42 12 34 56
123.4561D 43 12 34 56
1234.561D 44 12 34 56
12345.61D 45 12 34 56
123456!1D 46 12 34 56

Десятичная число двойной точности

Десятичная число двойной точности (14 цифр) (#)

  • Префикс: 0x1F
  • Длина (байт): 8
  • Если значение второго байта меньше 0x4F, то значение его второго полубайта — положение десятичной точки, иначе это порядок числа для экспоненциальной записи.

Примеры:

Значение Байты
.12345678901234#1F 40 12 34 56 78 90 12 34
1.2345678901234#1F 41 12 34 56 78 90 12 34
12.345678901234#1F 42 12 34 56 78 90 12 34
123.45678901234#1F 43 12 34 56 78 90 12 34
1234.5678901234#1F 44 12 34 56 78 90 12 34
12345.678901234#1F 45 12 34 56 78 90 12 34
123456.78901234#1F 46 12 34 56 78 90 12 34
1234567.8901234#1F 47 12 34 56 78 90 12 34
12345678.901234#1F 48 12 34 56 78 90 12 34
123456789.01234#1F 49 12 34 56 78 90 12 34
1234567890.1234#1F 4A 12 34 56 78 90 12 34
12345678901.234#1F 4B 12 34 56 78 90 12 34
123456789012.34#1F 4C 12 34 56 78 90 12 34
1234567890123.4#1F 4D 12 34 56 78 90 12 34
12345678901234#1F 4E 12 34 56 78 90 12 34

Экспоненциальная запись

Порядок числа = Значение второго байта - 65

Примеры:

Значение Байты
1.2345678901235E+141F 4F 12 34 56 78 90 12 35
1.2345678901235E+151F 50 12 34 56 78 90 12 35
1.2345678901235E+161F 51 12 34 56 78 90 12 35
1.2345678901235E+171F 52 12 34 56 78 90 12 35
1.2345678901235E+181F 53 12 34 56 78 90 12 35

Обычный текст

Название Префикс
Кавычки (")0x22
Комментарий (REM)0x8F
Комментарий (')0x3A8FE6

Внутренние коды служебных слов

Варианты:

  • Без префикса
  • С префиксом
    • 0xFF
    • 0x3A
Слово / символ Код(ы)
ABS0xFF86
AND0xF6
ASC0xFF95
ATN0xFF8E
ATTR$0xE9
AUTO0xA9
BASE0xC9
BEEP0xC0
BIN$0xFF9D
BLOAD0xCF
BSAVE0xD0
CALL0xCA
CDBL0xFFA0
CINT0xFF9E
CIRCLE0xBC
CHR$0xFF96
CLEAR0x92
CLOAD0x9B
CLOSE0xB4
CLS0x9F
CMD0xD7
COLOR0xBD
CONT0x99
COPY0xD6
COS0xFF8C
CRSLIN0xE8
CSAVE0x9A
CSNG0xFF9F
CVD0xFFAA
CVI0xFFA8
CVS0xFFA9
DATA0x84
DEF0x97
DEFDBL0xAE
DEFINT0xAC
DEFSNG0xAD
DEFSTR0xAB
DELETE0xA8
DIM0x86
DRAW0xBE
DSKF0xFFA6
DSKI$0xEA
DSKO$0xD1
ELSE0x3AA1
END0x81
ERASE0xA5
ERL0xE1
ERR0xE2
ERROR0xA6
EOF0xFFAB
EQU0xF9
EXP0xFF8B
FIELD0xB1
FILES0xB7
FIX0xFFA1
FN0xDE
FOR0x82
FPOS0xFFA7
FRE0xFF8F
GET0xB2
GOSUB0x8D
GOTO0x89
HEX$0xFF9B
INKEY$0xEC
INP0xFF90
INPUT0x85
INSTR0xE5
INT0xFF85
IMP0xFA
IPL0xD5
IF0x8B
KEY0xCC
KILL0xD4
LEN0xFF92
LEFT$0xFF81
LET0x88
LINE0xAF
LIST0x93
LFILES0xBB
LLIST0x9E
LOC0xFFAC
LOG0xFF8A
LOF0xFFAD
LOAD0xB5
LOCATE0xD8
LPOS0xFF9C
LPRINT0x9D
LSET0xB8
MAX0xCD
MERGE0xB6
MID$0xFF83
MKD$0xFFB0
MKI$0xFFAE
MKS$0xFFAF
MOD0xFB
MOTOR0xCE
NAME0xD3
NEW0x94
NEXT0x83
NOT0xE0
OCT$0xFF9A
OFF0xEB
ON0x95
OPEN0xB0
OR0xF7
OUT0x9C
PAD0xFFA5
PAINT0xBF
PDL0xFFA4
PEEK0xFF97
PLAY0xC1
POINT0xED
POKE0x98
POS0xFF91
PRESET0xC3
PRINT0x91
PSET0xC2
PUT0xB3
READ0x87
RENUM0xAA
REM0x8F
RESTORE0x8C
RESUME0xA7
RIGHT$0xFF82
RETURN0x8E
RND0xFF88
RSET0xB9
RUN0x8A
SCREEN0xC5
SET0xD2
SGN0xFF84
SIN0xFF89
SAVE0xBA
SPC0xDF
SPACE$0xFF99
SPRITE0xC7
SOUND0xC4
SQR0xFF87
STEP0xDC
STICK0xFFA2
STOP0x90
STRIG0xFFA3
STRING$0xE3
STR$0xFF93
SWAP0xA4
TAB0xDB
TAN0xFF8D
THEN0xDA
TIME0xCB
TO0xD9
TRON0xA2
TROFF0xA3
USING0xE4
USR0xDD
VAL0xFF94
VARPTR0xE7
VDP0xC8
VPOKE0xC6
VPEEK0xFF98
WAIT0x96
WIDTH0xA0
XOR0xF8
00x11
10x12
20x13
30x14
40x15
50x16
60x17
70x18
80x19
90x1A
'0x3A8FE6
>0xEE
=0xEF
<0xF0
+0xF1
-0xF2
*0xF3
/0xF4
^ 0xF5
\0xFC

Ссылки

msx/basic_intermediate_code/basic_intermediate_code.txt · Последние изменения: 2019-12-09 16:35 — GreyWolf