2.2. В н у т р е н н и е к о д ы с л у ж е б н ы х с л о в 1) о д н о б а й т н ы е слова ┌─────┬─────────┬─────┬─────────┬─────┬─────────┬─────┬─────────┐ │ Код │С л о в о│ Код │С л о в о│ Код │С л о в о│ Код │С л о в о│ ├─────┼─────────┼─────┼─────────┼─────┼─────────┼─────┼─────────┤ │ &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├─────┴─────────┴─────┴─────────┴─────┴─────────┘ └─────┴─────────┘ 2) д в у х б а й т н ы е слова (младший байт всегда равен 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$ │ └─────┴─────────┴─────┴─────────┴─────┴─────────┴─────┴─────────┘ П р и м е р. Используем коды внутреннего представления для моделирова- ─────────── ния графических операторов MSX BASIC (в примере - LINE). 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 120 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)