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

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


msx:basic_dialogue_programming_language:202

Первая страницаПредыдущая страницаНазад к обзоруСледующая страницаПоследняя страница

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).
202-01.bas
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_dialogue_programming_language/202.txt · Последние изменения: 2023-06-12 00:55 — GreyWolf