[<>]
~~TOC wide~~
====== 2.2. Внутренние коды служебных слов ======
- //однобайтные// слова
┌─────┬─────────┬─────┬─────────┬─────┬─────────┬─────┬─────────┐
│ Код │С л о в о│ Код │С л о в о│ Код │С л о в о│ Код │С л о в о│
├─────┼─────────┼─────┼─────────┼─────┼─────────┼─────┼─────────┤
│ &h11│ 0 │ &h12│ 1 │ &h13│ 2 │ &h14│ 3 │
│ &h15│ 4 │ &h16│ 5 │ &h17│ 6 │ &h18│ 7 │
│ &h19│ 8 │ &h1A│ 9 │ │ │ │ │
├─────┼─────────┼─────┼─────────┼─────┼─────────┼─────┼─────────┤
│ &h81│ END │ &h82│ FOR │ &h83│ NEXT │ &h84│ DATA │
│ &h85│ INPUT │ &h86│ DIM │ &h87│ READ │ &h88│ LEFT │
│ &h89│ GOTO │ &h8A│ RUN │ &h8B│ IF │ &h8C│ RESTORE│
│ &h8D│ GOSUB │ &h8E│ RETURN │ &h8F│ REM │ &h90│ STOP │
│ &h91│ PRINT │ &h92│ CLEAR │ &h93│ LIST │ &h94│ NEW │
│ &h95│ ON │ &h96│ WAIT │ &h97│ DEF │ &h98│ POKE │
│ &h99│ CONT │ &h9A│ CSAVE │ &h9B│ CLOAD │ &h9C│ OUT │
│ &h9D│ LPRINT │ &h9E│ LLIST │ &h9F│ CLS │ &hA0│ WIDTH │
│ &hA1│ ELSE │ &hA2│ TRON │ &hA3│ TROFF │ &hA4│ SWAP │
│ &hA5│ ERASE │ &hA6│ ERROR │ &hA7│ RESUME │ &hA8│ DELETE │
│ &hA9│ AUTO │ &hAA│ RENUM │ &hAB│ DEFSTR │ &hAC│ DEFINT │
│ &hAD│ DEFSNG │ &hAE│ DEFDBL │ &hAF│ LINE │ &hB0│ OPEN │
│ &hB1│ FIELD │ &hB2│ GET │ &hB3│ PUT │ &hB4│ CLOSE │
│ &hB5│ LOAD │ &hB6│ MERGE │ &hB7│ FILES │ &hB8│ LSET │
│ &hB9│ RSET │ &hBA│ SAVE │ &hBB│ LFILES │ &hBC│ CIRCLE │
│ &hBD│ COLOR │ &hBE│ DRAW │ &hBF│ PAINT │ &hC0│ BEEP │
│ &hC1│ PLAY │ &hC2│ PSET │ &hC3│ PRESET │ &hC4│ SOUND │
│ &hC5│ SCREEN │ &hC6│ VPOKE │ &hC7│ SPRITE │ &hC8│ VDP │
│ &hC9│ BASE │ &hCA│ CALL │ &hCB│ TIME │ &hCC│ KEY │
│ &hCD│ MAX │ &hCE│ MOTOR │ &hCF│ BLOAD │ &hD0│ BSAVE │
│ &hD1│ DSKO$ │ &hD2│ SET │ &hD3│ NAME │ &hD4│ KILL │
│ &hD5│ IPL │ &hD6│ COPY │ &hD7│ CMD │ &hD8│ LOCATE │
│ &hD9│ TO │ &hDA│ THEN │ &hDB│ TAB( │ &hDC│ STEP │
│ &hDD│ USR │ &hDE│ FN │ &hDF│ SPC( │ &hE0│ NOT │
│ &hE1│ ERL │ &hE2│ ERR │ &hE3│ STRING$│ &hE4│ USING │
│ &hE5│ INSTR │ &hE6│ ' │ &hE7│ VARPTR │ &hE8│ CSRLIN │
│ &hE9│ ATTR$ │ &hEA│ DSKI$ │ &hEB│ OFF │ &hEC│ INKEY$ │
│ &hED│ POINT │ &hEE│ > │ &hEF│ = │ &hF0│ < │
│ &hF1│ + │ &hF2│ - │ &hF3│ * │ &hF4│ / │
│ &hF5│ ^ │ &hF6│ AND │ &hF7│ OR │ &hF8│ XOR │
│ &hF9│ EQV │ &hFA│ IMP │ &hFB│ MOD │ &hFC│ \ │
│ &hFD│Line Feed├─────┴─────────┴─────┴─────────┴─────┴─────────┘
└─────┴─────────┘
- //двухбайтные// слова (младший байт всегда равен 255=&hFF)
┌─────┬─────────┬─────┬─────────┬─────┬─────────┬─────┬─────────┐
│ Код │С л о в о│ Код │С л о в о│ Код │С л о в о│ Код │С л о в о│
├─────┼─────────┼─────┼─────────┼─────┼─────────┼─────┼─────────┤
│ &h81│ LEFT$ │ &h82│ RIGHT$ │ &h83│ MID$ │ &h84│ SGN │
│ &h85│ INT │ &h86│ ABS │ &h87│ SQR │ &h88│ RND │
│ &h89│ SIN │ &h8A│ LOG │ &h8B│ EXP │ &h8C│ COS │
│ &h8D│ TAN │ &h8E│ ATN │ &h8F│ FRE │ &h90│ INP │
│ &h91│ POS │ &h92│ LEN │ &h93│ STR$ │ &h94│ VAL │
│ &h95│ ASC │ &h96│ CHR$ │ &h97│ PEEK │ &h98│ VPEEK │
│ &h99│ SPACE$ │ &h9A│ OCT$ │ &h9B│ HEX$ │ &h9C│ LPOS │
│ &h9D│ BIN$ │ &h9E│ CINT │ &h9F│ CSNG │ &hA0│ CDBL │
│ &hA1│ FIX │ &hA2│ STICK │ &hA3│ STRING │ &hA4│ PDL │
│ &hA5│ PAD │ &hA6│ DSKF │ &hA7│ FPOS │ &hA8│ CVI │
│ &hA9│ CVS │ &hAA│ CVD │ &hAB│ EOF │ &hAC│ LOC │
│ &hAD│ LOF │ &hAE│ MKI$ │ &hAF│ MKS$ │ &hB0│ MKD$ │
└─────┴─────────┴─────┴─────────┴─────┴─────────┴─────┴─────────┘
{{anchor:e202-01}} __//Пример//__. Используем коды внутреннего представления для моделирования графических операторов [[msx:basic:|]] (в примере — [[005#line|LINE]]).
\\ {{.examples:202-01.bas|}} \\ [[+tab|wmsxbpge>202-01.bas]]
5 'Автор программы Козлов Вячеслав (XI-й класс), 31.12.1989 г.
10 SCREEN 2
20 DATA F3,3E,FF,D3,A8,3E,AA,32,FF,FF,FF,7B,C8,F6,C9,"z":
'Исходные данные для подпрограммы GINIT
30 RESTORE 20:I=&HA000
40 READ A$
50 IF A$="z" THEN GOTO 80
60 POKE I,VAL("&h"+A$):I=I+1:GOTO 40
70 DATA 21,F7,8B,22,F8,FE,22,FD,FE,22,E9,FE,21,00,A0,22,FA,FE,22,FF,
FE,22,EB,FE,C9,"z" :'Текст подпрограммы GINIT (автор Терещенко В.В.)
80 RESTORE 70:I=&HB000
90 READ A$
100 IF A$="z" THEN GOTO 130
110 POKE I,VAL("&h"+A$):I=I+1:GOTO 90
20 DATA 11,1E,F4,D5,01,FF,0,ED,B0,E1,DD,21,48,6D,3E,F0,ED,73,C8,F6,
C3,8C,F3,C9,"z" :'Текст подпрограммы S (автор Терещенко В.В.)
130 RESTORE 120:I=&HC000
140 READ A$
150 IF A$="z" THEN GOTO 420
160 POKE I,VAL("&h"+A$):I=I+1:GOTO 140
170 DATA 3A :'Код ASCII символа ":"
180 DATA AF :' ∗∗∗ Внутренний код оператора LINE ∗∗∗
190 DATA 28 :'Код ASCII символа "("
200 DATA 0F :'Управляющий код. Здесь и всюду ниже: если аргумент
двухбайтный, то управляющий код равен &h1C
210 DATA 0 :'Координата X1 в операторе LINE
220 DATA 2C :'Код ASCII символа ","
230 DATA 0F :'Управляющий код
240 DATA 0 :'Координата Y1 в операторе LINE
250 DATA 29 :'Код ASCII символа ")"
260 DATA F2 :'Внутренний код символа "-"
270 DATA 28 :'Код ASCII символа "("
280 DATA 0F :'Управляющий код
290 DATA 64 :'Координата X2 в операторе LINE
300 DATA 2C :'Код ASCII символа ","
310 DATA 0F :'Управляющий код
320 DATA 64 :'Координата Y2 в операторе LINE
330 DATA 29 :'Код ASCII символа ")"
350 DATA 2C :'Код ASCII символа ","
360 DATA 0F :'Управляющий код
370 DATA 0F :'Код цвета в операторе LINE
380 DATA 2C :'Код ASCII символа ","
390 DATA 42,46:'Последовательно записанные коды символов "B" и "F"
400 DATA 0,0,0,"z"
:'Коды 0,0,0 показывают конец текстового представления
410 DATA 42,46,0,0,0,"z"
:'Последовательно записанные коды символов "B" и "F"
420 RESTORE 170:I=&HC100
430 READ A$
440 IF A$="z" THEN GOTO 560
450 POKE I,VAL("&h"+A$):I=I+1:GOTO 430
460 DATA 21,C9,C9,22,F8,FE,22,FD,FE,22,E9,FE,22,FA,FE,22,FF,FE,22,EB,
FE,C9,"z" :'Текст подпрограммы GEND (автор Терещенко В.В.)
470 RESTORE 460:I=&HC050
480 READ A$
490 IF A$="z" THEN GOTO 560
500 POKE I,VAL("&h"+A$):I=I+1:GOTO 480
510 DATA CD,00,B0 :'CALL B000 ; Вызов подпрограммы GINIT
520 DATA 21,00,C1 :'LD HL,C100 ;
530 DATA CD,00,C0 :'CALL C000 ; Вызов подпрограммы S
540 DATA CD,50,C0 :'CALL C050 ; Вызов подпрограммы GEND
550 DATA C9,"z" :'RET
560 RESTORE 510:I=&HD000:DEFUSR=&HD000
570 READ A$
580 IF A$="z" THEN GOTO 600
590 POKE I,VAL("&h"+A$):I=I+1:GOTO 570
600 A=USR(0)
8-) Проверенная таблица внутренних кодов служебных слов приведена [[msx:basic_intermediate_code:basic_intermediate_code#codes|здесь]].
----
[<>]
{{tag>MSX msxbdpl}}