Ono je to s temi prikazy slozitejsi. Ruzne BASICy to maji upravene podle vlastni specifikace. A taky nektere prikazy pouzivaji 2-bytove tokeny. Treba u MZ-800 je to takhle:
Kód:
unsigned char *comtotok(unsigned char *command)
{
// if (*command < 0x80)
// return NULL;
//
switch (*command) {
case 0x80: return "GOTO";
case 0x81: return "GOSUB";
case 0x83: return "RUN";
case 0x84: return "RETURN";
case 0x85: return "RESTORE";
case 0x86: return "RESUME";
case 0x87: return "LIST";
case 0x89: return "DELETE";
case 0x8a: return "RENUM";
case 0x8b: return "AUTO";
case 0x8c: return "EDIT";
case 0x8d: return "FOR";
case 0x8e: return "NEXT";
case 0x8f: return "PRINT";
case 0x91: return "INPUT";
case 0x93: return "IF";
case 0x94: return "DATA";
case 0x95: return "READ";
case 0x96: return "DIM";
case 0x97: return "REM";
case 0x98: return "END";
case 0x99: return "STOP";
case 0x9a: return "CONT";
case 0x9b: return "CLS";
case 0x9d: return "ON";
case 0x9e: return "LET";
case 0x9f: return "NEW";
case 0xa0: return "POKE";
case 0xa1: return "OFF";
case 0xa2: return "PMODE";
case 0xa3: return "PSKIP";
case 0xa4: return "PLOT";
case 0xa5: return "PLINE";
case 0xa6: return "RLINE";
case 0xa7: return "PMOVE";
case 0xa8: return "RMOVE";
case 0xa9: return "TRON";
case 0xaa: return "TROFF";
case 0xab: return "INP@";
case 0xac: return "DEFAULT";
case 0xad: return "GET";
case 0xae: return "PCOLOR";
case 0xaf: return "PHOME";
case 0xb0: return "HSET";
case 0xb1: return "GPRINT";
case 0xb2: return "KEY";
case 0xb3: return "AXIS";
case 0xb4: return "LOAD";
case 0xb5: return "SAVE";
case 0xb6: return "MERGE";
case 0xb7: return "CHAIN";
case 0xb8: return "CONSOLE";
case 0xb9: return "SEARCH";
case 0xba: return "OUT@";
case 0xbb: return "PCIRCLE";
case 0xbc: return "PTEST";
case 0xbd: return "PAGE";
case 0xbe: return "WAIT";
case 0xbf: return "SWAP";
case 0xc1: return "ERROR";
case 0xc2: return "ELSE";
case 0xc3: return "USR";
case 0xc4: return "BYE";
case 0xc7: return "DEF";
case 0xca: return "LABEL";
case 0xce: return "WOPEN";
case 0xcf: return "CLOSE";
case 0xd0: return "ROPEN";
case 0xd1: return "XOPEN";
case 0xd5: return "DIR";
case 0xd8: return "RENAME";
case 0xd9: return "KILL";
case 0xda: return "LOCK";
case 0xdb: return "UNLOCK";
case 0xdc: return "INIT";
case 0xe0: return "TO";
case 0xe1: return "STEP";
case 0xe2: return "THEN";
case 0xe3: return "USING";
case 0xe4: return "PI";
case 0xe5: return "ALL";
case 0xe6: return "TAB";
case 0xe7: return "SPC";
case 0xea: return ".XOR";
case 0xeb: return ".OR";
case 0xec: return ".AND";
case 0xed: return ".NOT";
case 0xee: return "><";
case 0xef: return "<>";
case 0xf0: return "=<";
case 0xf1: return "<=";
case 0xf2: return "=>";
case 0xf3: return ">=";
case 0xf4: return "=";
case 0xf5: return ">";
case 0xf6: return "<";
case 0xf7: return "+";
case 0xf8: return "-";
case 0xf9: return "\\";
case 0xfa: return ".MOD";
case 0xfb: return "/";
case 0xfc: return "*";
case 0xfd: return "^";
case 0xfe: switch (*(command+1)) {
case 0x81: return "CSET";
case 0x82: return "CRESET";
case 0x83: return "CCOLOR";
case 0x8a: return "SOUND";
case 0x8c: return "NOISE";
case 0x8d: return "BEEP";
case 0x90: return "COLOR";
case 0x92: return "SET";
case 0x93: return "RESET";
case 0x94: return "LINE";
case 0x95: return "BLINE";
case 0x96: return "PAL";
case 0x97: return "CIRCLE";
case 0x98: return "BOX";
case 0x99: return "PAINT";
case 0x9a: return "POSITION";
case 0x9b: return "PATTERN";
case 0x9c: return "HCOPY";
case 0xa0: return "SYMBOL";
case 0xa2: return "MUSIC";
case 0xa3: return "TEMPO";
case 0xa4: return "CURSOR";
case 0xa5: return "VERIFY";
case 0xa6: return "CLR";
case 0xa7: return "LIMIT";
case 0xae: return "BOOT";
}
sprintf(st, "?ext1: %02x?", *command);
return st;
case 0xff: switch (*(command+1)) {
case 0x80: return "INT";
case 0x81: return "ABS";
case 0x82: return "SIN";
case 0x83: return "COS";
case 0x84: return "TAN";
case 0x85: return "LN";
case 0x86: return "EXP";
case 0x87: return "SQR";
case 0x88: return "RND";
case 0x89: return "PEEK";
case 0x8a: return "ATN";
case 0x8b: return "SGN";
case 0x8c: return "LOG";
case 0x8d: return "FRAC";
case 0x8e: return "PAI";
case 0x8f: return "RAD";
case 0x9c: return "STICK";
case 0x9d: return "STRING";
case 0xa0: return "CHR$";
case 0xa1: return "STR$";
case 0xa2: return "HEX$";
case 0xa8: return "SPACES$";
case 0xab: return "ASC";
case 0xac: return "LEN";
case 0xad: return "VAL";
case 0xb3: return "ERN";
case 0xb4: return "ERL";
case 0xb5: return "SIZE";
case 0xb6: return "CSRH";
case 0xb7: return "CSRV";
case 0xb8: return "POSH";
case 0xb9: return "POSV";
case 0xba: return "LEFT$";
case 0xbb: return "RIGHT$";
case 0xbc: return "MID$";
case 0xc4: return "TI$";
case 0xc5: return "POINT";
case 0xc6: return "EOF";
case 0xc7: return "FN";
}
sprintf(st, "?ext2: %02x?", *command);
return st;
}
sprintf(st, "?comm: %02x?", *command);
return st;
}
To je kousek zdrojaku, ktery to prevadi z .btx na .bas