OldComp.cz http://oldcomp.cz/ |
|
Tokeny BASICových príkazov http://oldcomp.cz/viewtopic.php?f=134&t=5831 |
Stránka 1 z 1 |
Autor: | Milsa [ 07.01.2018, 17:43 ] |
Předmět příspěvku: | Tokeny BASICových príkazov |
Kedysi sa k 3,5" mechanike od niektorého Sharp klubu, ale neviem ktorého dodávala BASICová disketa plná všelijakých programov. Jeden z nich bol program, ktorý vypisoval tokeny všetkých aktuálnych príkazov, čiže ak bol jeden z príkazov zmenený na BOR (častá modifikácia), tak vypísal BOR. Tieto tokeny boli niekde v pamäti a tento program ich dešifroval. Vedel by mi niekto poradiť ako ich dešifrovať a kde ich hladať v pamäti? Prípadne poskytnúť tento program, ak ho niekto máte? Pamätám si jedine, že príkaz bol celý zobrazený v čitateľnej podobe a posledné písmeno bolo zašifrované XOR 80h, keďže všetky príkazy boli zo znakov do 7fh. Napadlo ma to v súvislosti s témou, ktorú práve otvoril wankes. Prípadne, bol by autor programu na prevod BAS => TXT poskytnúť jeho zdroják? Aj to by niečo pomohlo. |
Autor: | lukz [ 07.01.2018, 20:22 ] |
Předmět příspěvku: | Re: Tokeny BASICových príkazov |
Příloha:
|
Autor: | Milsa [ 08.01.2018, 18:51 ] |
Předmět příspěvku: | Re: Tokeny BASICových príkazov |
Aha, takže to je len tabuľka príkazov a tie tokeny sú zrejme poradie v tabuľke. Od akého čísla začínajú tokeny a ako sú riešené dvojbajtové tokeny (viem, že sú aj také)? |
Autor: | suksoft [ 14.01.2018, 23:15 ] |
Předmět příspěvku: | Re: Tokeny BASICových príkazov |
Milsa urcite existuje dokument prelozeny z nemciny do cestiny kde jsou vstupni body tokenu jak pro CMT tak pro QD Basic. Nikdy mne to moc nezajimalo a tak jsem to poradne necetl. Muzu se ale na to casem podivat. Je dosti pravdepodobne ze to existuje i v digitalni forme. Jinak co se tyce prevodu programu z a do Basicu, tak bych urcite pouzil SAVE s parametrem /A a MERGE /A a pomoci QD image by to jiste slo udelat. Uplne idelani by ale bylo kdyz by tvuj emulator reagoval na nejakou udalost a on sam by umel presmerovat napr. LIST do otevreneho souboru na realnem pocitaci. |
Autor: | Mikes21 [ 15.01.2018, 10:33 ] |
Předmět příspěvku: | Re: Tokeny BASICových príkazov |
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 |
Autor: | Milsa [ 16.01.2018, 19:54 ] |
Předmět příspěvku: | Re: Tokeny BASICových príkazov |
Veľmi pekne ti ďakujem. Toto som potreboval. Nenájdeš niekde v archíve aj ten BASIC program, ktorý vypisoval tokeny príkazov v bežiacom BASICu? |
Stránka 1 z 1 | Všechny časy jsou v UTC + 1 hodina [ Letní čas ] |
Powered by phpBB® Forum Software © phpBB Group http://www.phpbb.com/ |