diff options
Diffstat (limited to 'src/mess/tools/imgtool/filtbas.c')
-rw-r--r-- | src/mess/tools/imgtool/filtbas.c | 3115 |
1 files changed, 0 insertions, 3115 deletions
diff --git a/src/mess/tools/imgtool/filtbas.c b/src/mess/tools/imgtool/filtbas.c deleted file mode 100644 index bff1bda121e..00000000000 --- a/src/mess/tools/imgtool/filtbas.c +++ /dev/null @@ -1,3115 +0,0 @@ -// license:BSD-3-Clause -// copyright-holders:Nathan Woods -/**************************************************************************** - - filtbas.c - - Filter for Microsoft-style tokenized BASIC files - - BASIC files typically follow the following format: - - int8 $ff - int16 <TOTAL LENGTH> - ... - int16 <PTR_NEXT_LINE> - int16 <LINE_NUM> - int8[] <TOKENISED_DATA> - int8 $00 End of line delimiter - -*****************************************************************************/ - -#include <string.h> -#include <stdarg.h> -#include <ctype.h> - -#include "imgtool.h" -#include "formats/imageutl.h" - - -/*************************************************************************** - CONSTANTS -***************************************************************************/ - -#define EOLN (CRLF == 1 ? "\r" : (CRLF == 2 ? "\n" : (CRLF == 3 ? "\r\n" : NULL))) - - - -/*************************************************************************** - TYPE DEFINITIONS -***************************************************************************/ - -struct basictoken_tableent -{ - UINT8 shift; - UINT8 base; - const char *const *tokens; - int num_tokens; -}; - - - -struct basictokens -{ - UINT16 baseaddress; - unsigned int skip_bytes : 15; - unsigned int be : 1; - const basictoken_tableent *entries; - int num_entries; -}; - - - -/*************************************************************************** - IMPLEMENTATION -***************************************************************************/ - -/*------------------------------------------------- - basic_readfile - reads a file and decodes - BASIC tokens into ASCII text --------------------------------------------------*/ - -static imgtoolerr_t basic_readfile(const basictokens *tokens, - imgtool_partition *partition, const char *filename, - const char *fork, imgtool_stream *destf) -{ - imgtoolerr_t err; - imgtool_stream *mem_stream; - UINT8 line_header[4]; - UINT16 line_number; //, address; - UINT8 b, shift; - int i; - int in_string = FALSE; - const basictoken_tableent *token_table; - const char *token; - - /* open a memory stream */ - mem_stream = stream_open_mem(NULL, 0); - if (mem_stream == NULL) - { - err = IMGTOOLERR_OUTOFMEMORY; - goto done; - } - - /* read actual file */ - err = imgtool_partition_read_file(partition, filename, fork, mem_stream, NULL); - if (err) - goto done; - - /* skip first few bytes */ - stream_seek(mem_stream, tokens->skip_bytes, SEEK_SET); - - /* keep reading line headers */ - while(stream_read(mem_stream, line_header, sizeof(line_header)) == sizeof(line_header)) - { - /* pluck the address and line number out */ - if (tokens->be) - { - //address = (UINT16) - pick_integer_be(line_header, 0, 2); - line_number = (UINT16) pick_integer_be(line_header, 2, 2); - } - else - { - //address = (UINT16) - pick_integer_le(line_header, 0, 2); - line_number = (UINT16) pick_integer_le(line_header, 2, 2); - } - - /* write the line number */ - stream_printf(destf, "%u ", (unsigned) line_number); - shift = 0x00; - - while((stream_read(mem_stream, &b, 1) > 0) && (b != 0x00)) - { - if (b == 0x22) - in_string = in_string ? FALSE : TRUE; - - if ((b & 0x80) && (!in_string)) - { - token = NULL; - - for (i = 0; i < tokens->num_entries; i++) - { - token_table = &tokens->entries[i]; - if (token_table->shift == shift) - { - if ((b - 0x80) < token_table->num_tokens) - { - token = token_table->tokens[b - 0x80]; - if (token) - shift = 0x00; - } - } - - if (token_table->shift == b) - { - shift = token_table->shift; - break; - } - } - - if (shift == 0x00) - stream_puts(destf, token ? token : "!"); - } - else - { - stream_putc(destf, (char) b); - } - } - - stream_puts(destf, EOLN); - } - -done: - if (mem_stream != NULL) - stream_close(mem_stream); - return err; -} - - - -/*------------------------------------------------- - basic_writefile - translates ASCII text to - BASIC tokens and writes it to a file --------------------------------------------------*/ - -static imgtoolerr_t basic_writefile(const basictokens *tokens, - imgtool_partition *partition, const char *filename, - const char *fork, imgtool_stream *sourcef, option_resolution *opts) -{ - imgtoolerr_t err; - imgtool_stream *mem_stream; - char buf[1024]; - int eof = FALSE; - UINT32 len; - char c; - int i, j, pos, in_quotes; - UINT16 line_number; - UINT8 line_header[4]; - UINT8 file_header[3]; - const basictoken_tableent *token_table; - const char *token; - UINT8 token_shift, token_value; - UINT16 address; - - /* open a memory stream */ - mem_stream = stream_open_mem(NULL, 0); - if (mem_stream == NULL) - { - err = IMGTOOLERR_OUTOFMEMORY; - goto done; - } - - /* skip first few bytes */ - stream_fill(mem_stream, 0x00, tokens->skip_bytes); - - /* loop until the file is complete */ - while(!eof) - { - /* read a line */ - pos = 0; - while((len = stream_read(sourcef, &c, 1)) > 0) - { - /* break if at end of line */ - if ((c == '\r') || (c == '\n')) - break; - - if (pos <= ARRAY_LENGTH(buf) - 1) - { - buf[pos++] = c; - } - } - eof = (len == 0); - buf[pos] = '\0'; - - /* ignore lines that don't start with digits */ - if (isdigit(buf[0])) - { - /* start at beginning of line */ - pos = 0; - - /* read line number */ - line_number = 0; - while(isdigit(buf[pos])) - { - line_number *= 10; - line_number += (buf[pos++] - '0'); - } - - /* determine address */ - if (tokens->baseaddress != 0) - { - address = tokens->baseaddress + (UINT16)stream_size(mem_stream) + 4; - } - else - { - address = 0x0000; - } - - /* set up line header */ - memset(&line_header, 0, sizeof(line_header)); - if (tokens->be) - { - place_integer_be(line_header, 0, 2, address); - place_integer_be(line_header, 2, 2, line_number); - } - else - { - place_integer_be(line_header, 0, 2, address); - place_integer_be(line_header, 2, 2, line_number); - } - - /* emit line header */ - stream_write(mem_stream, line_header, sizeof(line_header)); - - /* skip spaces */ - while(isspace(buf[pos])) - pos++; - - /* when we start out, we are not within quotation marks */ - in_quotes = FALSE; - - /* read until end of line */ - while(buf[pos] != '\0') - { - token = NULL; - token_shift = 0; - token_value = 0; - - if (buf[pos] == '\"') - { - /* flip quotation status */ - in_quotes = !in_quotes; - } - else if (!in_quotes) - { - for (i = 0; (token == NULL) && (i < tokens->num_entries); i++) - { - token_table = &tokens->entries[i]; - for (j = 0; (token == NULL) && (j < token_table->num_tokens); j++) - { - if (!strncmp(&buf[pos], token_table->tokens[j], strlen(token_table->tokens[j]))) - { - token = token_table->tokens[j]; - token_shift = token_table->shift; - token_value = token_table->base + j; - pos += strlen(token); - } - } - } - } - - /* did we find a token? */ - if (token != NULL) - { - /* emit the token */ - if (token_shift != 0) - stream_write(mem_stream, &token_shift, 1); - stream_write(mem_stream, &token_value, 1); - } - else - { - /* no token; emit the byte */ - stream_write(mem_stream, &buf[pos++], 1); - } - } - - /* emit line terminator */ - stream_fill(mem_stream, 0x00, 1); - } - } - - /* emit program terminator */ - stream_fill(mem_stream, 0x00, 2); - - /* reset stream */ - stream_seek(mem_stream, 0, SEEK_SET); - - /* this is somewhat gross */ - if (tokens->skip_bytes >= 3) - { - if (tokens->be) - { - place_integer_be(file_header, 0, 1, 0xFF); - place_integer_be(file_header, 1, 2, stream_size(mem_stream)); - } - else - { - place_integer_le(file_header, 0, 1, 0xFF); - place_integer_le(file_header, 1, 2, stream_size(mem_stream)); - } - stream_write(mem_stream, file_header, 3); - stream_seek(mem_stream, 0, SEEK_SET); - } - - /* write actual file */ - err = imgtool_partition_write_file(partition, filename, fork, mem_stream, opts, NULL); - if (err) - goto done; - -done: - if (mem_stream != NULL) - stream_close(mem_stream); - return err; -} - - - -/*************************************************************************** - TOKEN DEFINITIONS -***************************************************************************/ - -static const char *const cocobas_statements[] = -{ - "FOR", /* 0x80 */ - "GO", /* 0x81 */ - "REM", /* 0x82 */ - "'", /* 0x83 */ - "ELSE", /* 0x84 */ - "IF", /* 0x85 */ - "DATA", /* 0x86 */ - "PRINT", /* 0x87 */ - "ON", /* 0x88 */ - "INPUT", /* 0x89 */ - "END", /* 0x8a */ - "NEXT", /* 0x8b */ - "DIM", /* 0x8c */ - "READ", /* 0x8d */ - "RUN", /* 0x8e */ - "RESTORE", /* 0x8f */ - "RETURN", /* 0x90 */ - "STOP", /* 0x91 */ - "POKE", /* 0x92 */ - "CONT", /* 0x93 */ - "LIST", /* 0x94 */ - "CLEAR", /* 0x95 */ - "NEW", /* 0x96 */ - "CLOAD", /* 0x97 */ - "CSAVE", /* 0x98 */ - "OPEN", /* 0x99 */ - "CLOSE", /* 0x9a */ - "LLIST", /* 0x9b */ - "SET", /* 0x9c */ - "RESET", /* 0x9d */ - "CLS", /* 0x9e */ - "MOTOR", /* 0x9f */ - "SOUND", /* 0xa0 */ - "AUDIO", /* 0xa1 */ - "EXEC", /* 0xa2 */ - "SKIPF", /* 0xa3 */ - "TAB(", /* 0xa4 */ - "TO", /* 0xa5 */ - "SUB", /* 0xa6 */ - "THEN", /* 0xa7 */ - "NOT", /* 0xa8 */ - "STEP", /* 0xa9 */ - "OFF", /* 0xaa */ - "+", /* 0xab */ - "-", /* 0xac */ - "*", /* 0xad */ - "/", /* 0xae */ - "^", /* 0xaf */ - "AND", /* 0xb0 */ - "OR", /* 0xb1 */ - ">", /* 0xb2 */ - "=", /* 0xb3 */ - "<", /* 0xb4 */ - "DEL", /* 0xb5 */ - "EDIT", /* 0xb6 */ - "TRON", /* 0xb7 */ - "TROFF", /* 0xb8 */ - "DEF", /* 0xb9 */ - "LET", /* 0xba */ - "LINE", /* 0xbb */ - "PCLS", /* 0xbc */ - "PSET", /* 0xbd */ - "PRESET", /* 0xbe */ - "SCREEN", /* 0xbf */ - "PCLEAR", /* 0xc0 */ - "COLOR", /* 0xc1 */ - "CIRCLE", /* 0xc2 */ - "PAINT", /* 0xc3 */ - "GET", /* 0xc4 */ - "PUT", /* 0xc5 */ - "DRAW", /* 0xc6 */ - "PCOPY", /* 0xc7 */ - "PMODE", /* 0xc8 */ - "PLAY", /* 0xc9 */ - "DLOAD", /* 0xca */ - "RENUM", /* 0xcb */ - "FN", /* 0xcc */ - "USING", /* 0xcd */ - "DIR", /* 0xce */ - "DRIVE", /* 0xcf */ - "FIELD", /* 0xd0 */ - "FILES", /* 0xd1 */ - "KILL", /* 0xd2 */ - "LOAD", /* 0xd3 */ - "LSET", /* 0xd4 */ - "MERGE", /* 0xd5 */ - "RENAME", /* 0xd6 */ - "RSET", /* 0xd7 */ - "SAVE", /* 0xd8 */ - "WRITE", /* 0xd9 */ - "VERIFY", /* 0xda */ - "UNLOAD", /* 0xdb */ - "DSKINI", /* 0xdc */ - "BACKUP", /* 0xdd */ - "COPY", /* 0xde */ - "DSKI$", /* 0xdf */ - "DSKO$", /* 0xe0 */ - "DOS", /* 0xe1 */ - "WIDTH", /* 0xe2 */ - "PALETTE", /* 0xe3 */ - "HSCREEN", /* 0xe4 */ - "LPOKE", /* 0xe5 */ - "HCLS", /* 0xe6 */ - "HCOLOR", /* 0xe7 */ - "HPAINT", /* 0xe8 */ - "HCIRCLE", /* 0xe9 */ - "HLINE", /* 0xea */ - "HGET", /* 0xeb */ - "HPUT", /* 0xec */ - "HBUFF", /* 0xed */ - "HPRINT", /* 0xee */ - "ERR", /* 0xef */ - "BRK", /* 0xf0 */ - "LOCATE", /* 0xf1 */ - "HSTAT", /* 0xf2 */ - "HSET", /* 0xf3 */ - "HRESET", /* 0xf4 */ - "HDRAW", /* 0xf5 */ - "CMP", /* 0xf6 */ - "RGB", /* 0xf7 */ - "ATTR" /* 0xf8 */ -}; - -static const char *const cocobas_functions[] = -{ - "SGN", /* 0xff80 */ - "INT", /* 0xff81 */ - "ABS", /* 0xff82 */ - "USR", /* 0xff83 */ - "RND", /* 0xff84 */ - "SIN", /* 0xff85 */ - "PEEK", /* 0xff86 */ - "LEN", /* 0xff87 */ - "STR$", /* 0xff88 */ - "VAL", /* 0xff89 */ - "ASC", /* 0xff8a */ - "CHR$", /* 0xff8b */ - "EOF", /* 0xff8c */ - "JOYSTK", /* 0xff8d */ - "LEFT$", /* 0xff8e */ - "RIGHT$", /* 0xff8f */ - "MID$", /* 0xff90 */ - "POINT", /* 0xff91 */ - "INKEY$", /* 0xff92 */ - "MEM", /* 0xff93 */ - "ATN", /* 0xff94 */ - "COS", /* 0xff95 */ - "TAN", /* 0xff96 */ - "EXP", /* 0xff97 */ - "FIX", /* 0xff98 */ - "LOG", /* 0xff99 */ - "POS", /* 0xff9a */ - "SQR", /* 0xff9b */ - "HEX$", /* 0xff9c */ - "VARPTR", /* 0xff9d */ - "INSTR", /* 0xff9e */ - "TIMER", /* 0xff9f */ - "PPOINT", /* 0xffa0 */ - "STRING$", /* 0xffa1 */ - "CVN", /* 0xffa2 */ - "FREE", /* 0xffa3 */ - "LOC", /* 0xffa4 */ - "LOF", /* 0xffa5 */ - "MKN$", /* 0xffa6 */ - "AS", /* 0xffa7 */ - "LPEEK", /* 0xffa8 */ - "BUTTON", /* 0xffa9 */ - "HPOINT", /* 0xffaa */ - "ERNO", /* 0xffab */ - "ERLIN" /* 0xffac */ -}; - -static const char *const dragonbas_statements[] = -{ - "FOR", /* 0x80 */ - "GO", /* 0x81 */ - "REM", /* 0x82 */ - "'", /* 0x83 */ - "ELSE", /* 0x84 */ - "IF", /* 0x85 */ - "DATA", /* 0x86 */ - "PRINT", /* 0x87 */ - "ON", /* 0x88 */ - "INPUT", /* 0x89 */ - "END", /* 0x8a */ - "NEXT", /* 0x8b */ - "DIM", /* 0x8c */ - "READ", /* 0x8d */ - "LET", /* 0x8e */ - "RUN", /* 0x8f */ - "RESTORE", /* 0x90 */ - "RETURN", /* 0x91 */ - "STOP", /* 0x92 */ - "POKE", /* 0x93 */ - "CONT", /* 0x94 */ - "LIST", /* 0x95 */ - "CLEAR", /* 0x96 */ - "NEW", /* 0x97 */ - "DEF", /* 0x98 */ - "CLOAD", /* 0x99 */ - "CSAVE", /* 0x9a */ - "OPEN", /* 0x9b */ - "CLOSE", /* 0x9c */ - "LLIST", /* 0x9d */ - "SET", /* 0x9e */ - "RESET", /* 0x9f */ - "CLS", /* 0xa0 */ - "MOTOR", /* 0xa1 */ - "SOUND", /* 0xa2 */ - "AUDIO", /* 0xa3 */ - "EXEC", /* 0xa4 */ - "SKIPF", /* 0xa5 */ - "DEL", /* 0xa6 */ - "EDIT", /* 0xa7 */ - "TRON", /* 0xa8 */ - "TROFF", /* 0xa9 */ - "LINE", /* 0xaa */ - "PCLS", /* 0xab */ - "PSET", /* 0xac */ - "PRESET", /* 0xad */ - "SCREEN", /* 0xae */ - "PCLEAR", /* 0xaf */ - "COLOR", /* 0xb0 */ - "CIRCLE", /* 0xb1 */ - "PAINT", /* 0xb2 */ - "GET", /* 0xb3 */ - "PUT", /* 0xb4 */ - "DRAW", /* 0xb5 */ - "PCOPY", /* 0xb6 */ - "PMODE", /* 0xb7 */ - "PLAY", /* 0xb8 */ - "DLOAD", /* 0xb9 */ - "RENUM", /* 0xba */ - "TAB(", /* 0xbb */ - "TO", /* 0xbc */ - "SUB", /* 0xbd */ - "FN", /* 0xbe */ - "THEN", /* 0xbf */ - "NOT", /* 0xc0 */ - "STEP", /* 0xc1 */ - "OFF", /* 0xc2 */ - "+", /* 0xc3 */ - "-", /* 0xc4 */ - "*", /* 0xc5 */ - "/", /* 0xc6 */ - "^", /* 0xc7 */ - "AND", /* 0xc8 */ - "OR", /* 0xc9 */ - ">", /* 0xca */ - "=", /* 0xcb */ - "<", /* 0xcc */ - "USING", /* 0xcd */ - "DIR", /* 0xce */ - "DRIVE", /* 0xcf */ - "FIELD", /* 0xd0 */ - "FILES", /* 0xd1 */ - "KILL", /* 0xd2 */ - "LOAD", /* 0xd3 */ - "LSET", /* 0xd4 */ - "MERGE", /* 0xd5 */ - "RENAME", /* 0xd6 */ - "RSET", /* 0xd7 */ - "SAVE", /* 0xd8 */ - "WRITE", /* 0xd9 */ - "VERIFY", /* 0xda */ - "UNLOAD", /* 0xdb */ - "DSKINI", /* 0xdc */ - "BACKUP", /* 0xdd */ - "COPY", /* 0xde */ - "DSKI$", /* 0xdf */ - "DSKO$" /* 0xe0 */ -}; - -static const char *const dragonbas_functions[] = -{ - "SGN", /* 0xff80 */ - "INT", /* 0xff81 */ - "ABS", /* 0xff82 */ - "POS", /* 0xff83 */ - "RND", /* 0xff84 */ - "SQR", /* 0xff85 */ - "LOG", /* 0xff86 */ - "EXP", /* 0xff87 */ - "SIN", /* 0xff88 */ - "COS", /* 0xff89 */ - "TAN", /* 0xff8a */ - "ATN", /* 0xff8b */ - "PEEK", /* 0xff8c */ - "LEN", /* 0xff8d */ - "STR$", /* 0xff8e */ - "VAL", /* 0xff8f */ - "ASC", /* 0xff90 */ - "CHR$", /* 0xff91 */ - "EOF", /* 0xff92 */ - "JOYSTK", /* 0xff93 */ - "FIX", /* 0xff94 */ - "HEX$", /* 0xff95 */ - "LEFT$", /* 0xff96 */ - "RIGHT$", /* 0xff97 */ - "MID$", /* 0xff98 */ - "POINT", /* 0xff99 */ - "INKEY$", /* 0xff9a */ - "MEM", /* 0xff9b */ - "VARPTR", /* 0xff9c */ - "INSTR", /* 0xff9d */ - "TIMER", /* 0xff9e */ - "PPOINT", /* 0xff9f */ - "STRING$", /* 0xffa0 */ - "USR" /* 0xffa1 */ - "CVN", /* 0xffa2 */ - "FREE", /* 0xffa3 */ - "LOC", /* 0xffa4 */ - "LOF", /* 0xffa5 */ - "MKN$" /* 0xffa6 */ -}; - -static const char *const vzbas[] = -{ - "END", /* 0x80 */ - "FOR", /* 0x81 */ - "RESET", /* 0x82 */ - "SET", /* 0x83 */ - "CLS", /* 0x84 */ - NULL, /* 0x85 */ - "RANDOM", /* 0x86 */ - "NEXT", /* 0x87 */ - "DATA", /* 0x88 */ - "INPUT", /* 0x89 */ - "DIM", /* 0x8a */ - "READ", /* 0x8b */ - "LET", /* 0x8c */ - "GOTO", /* 0x8d */ - "RUN", /* 0x8e */ - "IF", /* 0x8f */ - "RESTORE", /* 0x90 */ - "GOSUB", /* 0x91 */ - "RETURN", /* 0x92 */ - "'", /* 0x93 */ - "STOP", /* 0x94 */ - "ELSE", /* 0x95 */ - "COPY", /* 0x96 */ - "COLOR", /* 0x97 */ - "VERIFY", /* 0x98 */ - "DEFINT", /* 0x99 */ - "DEFSNG", /* 0x9a */ - "DEFDBL", /* 0x9b */ - "CRUN", /* 0x9c */ - "MODE", /* 0x9d */ - "ERROR", /* 0x9e */ - "RESUME", /* 0x9f */ - "OUT", /* 0xa0 */ - "IN", /* 0xa1 */ - NULL, /* 0xa2 */ - NULL, /* 0xa3 */ - NULL, /* 0xa4 */ - NULL, /* 0xa5 */ - NULL, /* 0xa6 */ - NULL, /* 0xa7 */ - NULL, /* 0xa8 */ - NULL, /* 0xa9 */ - NULL, /* 0xaa */ - NULL, /* 0xab */ - NULL, /* 0xac */ - NULL, /* 0xad */ - "(RESET)", /* 0xae */ - "LPRINT", /* 0xaf */ - NULL, /* 0xb0 */ - "POKE", /* 0xb1 */ - "PRINT", /* 0xb2 */ - "CONT", /* 0xb3 */ - "LIST", /* 0xb4 */ - "LLIST", /* 0xb5 */ - "DELETE", /* 0xb6 */ - "AUTO", /* 0xb7 */ - "CLEAR", /* 0xb8 */ - "CLOAD", /* 0xb9 */ - "CSAVE", /* 0xba */ - "NEW", /* 0xbb */ - "TAB(", /* 0xbc */ - "TO", /* 0xbd */ - NULL, /* 0xbe */ - "USING", /* 0xbf */ - "VARPTR", /* 0xc0 */ - "USR", /* 0xc1 */ - "ERL", /* 0xc2 */ - "ERR", /* 0xc3 */ - "STRING$", /* 0xc4 */ - NULL, /* 0xc5 */ - "POINT", /* 0xc6 */ - NULL, /* 0xc7 */ - "MEM", /* 0xc8 */ - "INKEY$", /* 0xc9 */ - "THEN", /* 0xca */ - "NOT", /* 0xcb */ - "STEP", /* 0xcc */ - "+", /* 0xcd */ - "-", /* 0xce */ - "*", /* 0xcf */ - "/", /* 0xd0 */ - "^", /* 0xd1 */ - "AND", /* 0xd2 */ - "OR", /* 0xd3 */ - ">", /* 0xd4 */ - "=", /* 0xd5 */ - "<", /* 0xd6 */ - "SGN", /* 0xd7 */ - "INT", /* 0xd8 */ - "ABS", /* 0xd9 */ - "FRE", /* 0xda */ - "INP", /* 0xdb */ - "POS", /* 0xdc */ - "SQR", /* 0xdd */ - "AND", /* 0xde */ - "LOG", /* 0xdf */ - "EXP", /* 0xe0 */ - "COS", /* 0xe1 */ - "SIN", /* 0xe2 */ - "TAN", /* 0xe3 */ - "ATN", /* 0xe4 */ - "PEEK", /* 0xe5 */ - NULL, /* 0xe6 */ - NULL, /* 0xe7 */ - NULL, /* 0xe8 */ - NULL, /* 0xe9 */ - NULL, /* 0xea */ - NULL, /* 0xeb */ - NULL, /* 0xec */ - NULL, /* 0xed */ - NULL, /* 0xee */ - "CINT", /* 0xef */ - "CSNG", /* 0xf0 */ - "CDBL", /* 0xf1 */ - "FIX", /* 0xf2 */ - "LEN", /* 0xf3 */ - "STR$", /* 0xf4 */ - "VAL", /* 0xf5 */ - "ASC", /* 0xf6 */ - "CHR$", /* 0xf7 */ - "LEFT$", /* 0xf8 */ - "RIGHT$", /* 0xf9 */ - "MID$", /* 0xfa */ - NULL, /* 0xfb */ - NULL, /* 0xfc */ - NULL, /* 0xfd */ - NULL, /* 0xfe */ - NULL /* 0xff */ -}; - -static const char *const bml3bas_statements[] = -{ - "END", /* 0x80 */ - "FOR", /* 0x81 */ - "NEXT", /* 0x82 */ - "DATA", /* 0x83 */ - "DIM", /* 0x84 */ - "READ", /* 0x85 */ - "LET", /* 0x86 */ - "GO", /* 0x87 */ - "RUN", /* 0x88 */ - "IF", /* 0x89 */ - "RESTORE", /* 0x8a */ - "RETURN", /* 0x8b */ - "REM", /* 0x8c */ - "'", /* 0x8d */ - "STOP", /* 0x8e */ - "ELSE", /* 0x8f */ - "TRON", /* 0x90 */ - "TROFF", /* 0x91 */ - "SWAP", /* 0x92 */ - "DEFSTR", /* 0x93 */ - "DEFINT", /* 0x94 */ - "DEFSNG", /* 0x95 */ - "DEFDBL", /* 0x96 */ - "ON", /* 0x97 */ - "WAIT", /* 0x98 */ - "RENUM", /* 0x99 */ - "EDIT", /* 0x9a */ - "ERROR", /* 0x9b */ - "RESUME", /* 0x9c */ - "AUTO", /* 0x9d */ - "DELETE", /* 0x9e */ - "TERM", /* 0x9f */ - "WIDTH", /* 0xa0 */ - "UNLIST", /* 0xa1 */ - "MON", /* 0xa2 */ - "LOCATE", /* 0xa3 */ - "CLS", /* 0xa4 */ - "CONSOLE", /* 0xa5 */ - "PSET", /* 0xa6 */ - "PRESET", /* 0xa7 */ - "MOTOR", /* 0xa8 */ - "SKIPF", /* 0xa9 */ - "SAVE", /* 0xaa */ - "LOAD", /* 0xab */ - "MERGE", /* 0xac */ - "EXEC", /* 0xad */ - "OPEN", /* 0xae */ - "CLOSE", /* 0xaf */ - "FILES", /* 0xb0 */ - "COM", /* 0xb1 */ - "KEY", /* 0xb2 */ - "PAINT", /* 0xb3 */ - "BEEP", /* 0xb4 */ - "COLOR", /* 0xb5 */ - "LINE", /* 0xb6 */ - "DEF", /* 0xb7 */ - "POKE", /* 0xb8 */ - "PRINT", /* 0xb9 */ - "CONT", /* 0xba */ - "LIST", /* 0xbb */ - "CLEAR", /* 0xbc */ - "RANDOMIZE",/* 0xbd */ - "WHILE", /* 0xbe */ - "WEND", /* 0xbf */ - "NEW", /* 0xc0 */ - "TAB(", /* 0xc1 */ - "TO", /* 0xc2 */ - "SUB", /* 0xc3 */ - "FN", /* 0xc4 */ - "SPC(", /* 0xc5 */ - "USING", /* 0xc6 */ - "USR", /* 0xc7 */ - "ERL", /* 0xc8 */ - "ERR", /* 0xc9 */ - "OFF", /* 0xca */ - "THEN", /* 0xcb */ - "NOT", /* 0xcc */ - "STEP", /* 0xcd */ - "+", /* 0xce */ - "-", /* 0xcf */ - "*", /* 0xd0 */ - "/", /* 0xd1 */ - "^", /* 0xd2 */ - "AND", /* 0xd3 */ - "OR", /* 0xd4 */ - "XOR", /* 0xd5 */ - "EQV", /* 0xd6 */ - "IMP", /* 0xd7 */ - "MOD", /* 0xd8 */ - "\\", /* 0xd9 */ - ">", /* 0xda */ - "=", /* 0xdb */ - "<" /* 0xdc */ -}; - -static const char *const bml3bas_functions[] = -{ - "SGN", /* 0xff80 */ - "INT", /* 0xff81 */ - "ABS", /* 0xff82 */ - "FRE", /* 0xff83 */ - "POS", /* 0xff84 */ - "SQR", /* 0xff85 */ - "LOG", /* 0xff86 */ - "EXP", /* 0xff87 */ - "COS", /* 0xff88 */ - "SIN", /* 0xff89 */ - "TAN", /* 0xff8a */ - "ATN", /* 0xff8b */ - "PEEK", /* 0xff8c */ - "LEN", /* 0xff8d */ - "STR$", /* 0xff8e */ - "VAL", /* 0xff8f */ - "ASC", /* 0xff90 */ - "CHR$", /* 0xff91 */ - "CINT", /* 0xff92 */ - "CSNG", /* 0xff93 */ - "CDBL", /* 0xff94 */ - "FIX", /* 0xff95 */ - "SPACE$", /* 0xff96 */ - "HEX$", /* 0xff97 */ - "OCT$", /* 0xff98 */ - "LOF", /* 0xff99 */ - "EOF", /* 0xff9a */ - "PEN", /* 0xff9b */ - "LEFT$", /* 0xff9c */ - "RIGHT$", /* 0xff9d */ - "MID$", /* 0xff9e */ - "INSTR", /* 0xff9f */ - "SCREEN", /* 0xffa0 */ - "VARPTR", /* 0xffa1 */ - "STRING$", /* 0xffa2 */ - "RND", /* 0xffa3 */ - "INKEY$", /* 0xffa4 */ - "INPUT", /* 0xffa5 */ - "CSRLIN", /* 0xffa6 */ - "POINT", /* 0xffa7 */ - "TIME", /* 0xffa8 */ - "DATE" /* 0xffa9 */ -}; - - -#ifdef BASIC_ -/* ----------------------------------------------------------------------- * - * CBM machines * - * ----------------------------------------------------------------------- */ -static const char *const basic_10[] = /* "BASIC 1.0" - supported by pet */ -{ - "END", /* 0x80 */ - "FOR", /* 0x81 */ - "NEXT", /* 0x82 */ - "DATA", /* 0x83 */ - "INPUT#", /* 0x84 */ - "INPUT", /* 0x85 */ - "DIM", /* 0x86 */ - "READ", /* 0x87 */ - "LET", /* 0x88 */ - "GOTO", /* 0x89 */ - "RUN", /* 0x8a */ - "IF", /* 0x8b */ - "RESTORE", /* 0x8c */ - "GOSUB", /* 0x8d */ - "RETURN", /* 0x8e */ - "REM", /* 0x8f */ - "STOP", /* 0x90 */ - "ON", /* 0x91 */ - "WAIT", /* 0x92 */ - "LOAD", /* 0x93 */ - "SAVE", /* 0x94 */ - "VERIFY", /* 0x95 */ - "DEF", /* 0x96 */ - "POKE", /* 0x97 */ - "PRINT#", /* 0x98 */ - "PRINT", /* 0x99 */ - "CONT", /* 0x9a */ - "LIST", /* 0x9b */ - "CLR", /* 0x9c */ - "CMD", /* 0x9d */ - "SYS", /* 0x9e */ - "OPEN", /* 0x9f */ - "CLOSE", /* 0xa0 */ - "GET", /* 0xa1 */ - "NEW", /* 0xa2 */ - "TAB(", /* 0xa3 */ - "TO", /* 0xa4 */ - "FN", /* 0xa5 */ - "SPC(", /* 0xa6 */ - "THEN", /* 0xa7 */ - "NOT", /* 0xa8 */ - "STEP", /* 0xa9 */ - "+", /* 0xaa */ - "-", /* 0xab */ - "*", /* 0xac */ - "/", /* 0xad */ - "^", /* 0xae */ - "AND", /* 0xaf */ - "OR", /* 0xb0 */ - ">", /* 0xb1 */ - "=", /* 0xb2 */ - "<", /* 0xb3 */ - "SGN", /* 0xb4 */ - "INT", /* 0xb5 */ - "ABS", /* 0xb6 */ - "USR", /* 0xb7 */ - "FRE", /* 0xb8 */ - "POS", /* 0xb9 */ - "SQR", /* 0xba */ - "RND", /* 0xbb */ - "LOG", /* 0xbc */ - "EXP", /* 0xbd */ - "COS", /* 0xbe */ - "SIN", /* 0xbf */ - "TAN", /* 0xc0 */ - "ATN", /* 0xc1 */ - "PEEK", /* 0xc2 */ - "LEN", /* 0xc3 */ - "STR$", /* 0xc4 */ - "VAL", /* 0xc5 */ - "ASC", /* 0xc6 */ - "CHR$", /* 0xc7 */ - "LEFT$", /* 0xc8 */ - "RIGHT$", /* 0xc9 */ - "MID$", /* 0xca */ - NULL, /* 0xcb */ - NULL, /* 0xcc */ - NULL, /* 0xcd */ - NULL, /* 0xce */ - NULL, /* 0xcf */ - NULL, /* 0xd0 */ - NULL, /* 0xd1 */ - NULL, /* 0xd2 */ - NULL, /* 0xd3 */ - NULL, /* 0xd4 */ - NULL, /* 0xd5 */ - NULL, /* 0xd6 */ - NULL, /* 0xd7 */ - NULL, /* 0xd8 */ - NULL, /* 0xd9 */ - NULL, /* 0xda */ - NULL, /* 0xdb */ - NULL, /* 0xdc */ - NULL, /* 0xdd */ - NULL, /* 0xde */ - NULL, /* 0xdf */ - NULL, /* 0xe0 */ - NULL, /* 0xe1 */ - NULL, /* 0xe2 */ - NULL, /* 0xe3 */ - NULL, /* 0xe4 */ - NULL, /* 0xe5 */ - NULL, /* 0xe6 */ - NULL, /* 0xe7 */ - NULL, /* 0xe8 */ - NULL, /* 0xe9 */ - NULL, /* 0xea */ - NULL, /* 0xeb */ - NULL, /* 0xec */ - NULL, /* 0xed */ - NULL, /* 0xee */ - NULL, /* 0xef */ - NULL, /* 0xf0 */ - NULL, /* 0xf1 */ - NULL, /* 0xf2 */ - NULL, /* 0xf3 */ - NULL, /* 0xf4 */ - NULL, /* 0xf5 */ - NULL, /* 0xf6 */ - NULL, /* 0xf7 */ - NULL, /* 0xf8 */ - NULL, /* 0xf9 */ - NULL, /* 0xfa */ - NULL, /* 0xfb */ - NULL, /* 0xfc */ - NULL, /* 0xfd */ - NULL, /* 0xfe */ - "{PI}" /* 0xff - A single character shaped as greek lowercase 'PI' */ -}; - -static const char *const basic_20[] = /* "BASIC 2.0" - supported by vic20 & clones, c64 & clones, cbm30xx series */ -{ - "END", /* 0x80 */ - "FOR", /* 0x81 */ - "NEXT", /* 0x82 */ - "DATA", /* 0x83 */ - "INPUT#", /* 0x84 */ - "INPUT", /* 0x85 */ - "DIM", /* 0x86 */ - "READ", /* 0x87 */ - "LET", /* 0x88 */ - "GOTO", /* 0x89 */ - "RUN", /* 0x8a */ - "IF", /* 0x8b */ - "RESTORE", /* 0x8c */ - "GOSUB", /* 0x8d */ - "RETURN", /* 0x8e */ - "REM", /* 0x8f */ - "STOP", /* 0x90 */ - "ON", /* 0x91 */ - "WAIT", /* 0x92 */ - "LOAD", /* 0x93 */ - "SAVE", /* 0x94 */ - "VERIFY", /* 0x95 */ - "DEF", /* 0x96 */ - "POKE", /* 0x97 */ - "PRINT#", /* 0x98 */ - "PRINT", /* 0x99 */ - "CONT", /* 0x9a */ - "LIST", /* 0x9b */ - "CLR", /* 0x9c */ - "CMD", /* 0x9d */ - "SYS", /* 0x9e */ - "OPEN", /* 0x9f */ - "CLOSE", /* 0xa0 */ - "GET", /* 0xa1 */ - "NEW", /* 0xa2 */ - "TAB(", /* 0xa3 */ - "TO", /* 0xa4 */ - "FN", /* 0xa5 */ - "SPC(", /* 0xa6 */ - "THEN", /* 0xa7 */ - "NOT", /* 0xa8 */ - "STEP", /* 0xa9 */ - "+", /* 0xaa */ - "-", /* 0xab */ - "*", /* 0xac */ - "/", /* 0xad */ - "^", /* 0xae */ - "AND", /* 0xaf */ - "OR", /* 0xb0 */ - ">", /* 0xb1 */ - "=", /* 0xb2 */ - "<", /* 0xb3 */ - "SGN", /* 0xb4 */ - "INT", /* 0xb5 */ - "ABS", /* 0xb6 */ - "USR", /* 0xb7 */ - "FRE", /* 0xb8 */ - "POS", /* 0xb9 */ - "SQR", /* 0xba */ - "RND", /* 0xbb */ - "LOG", /* 0xbc */ - "EXP", /* 0xbd */ - "COS", /* 0xbe */ - "SIN", /* 0xbf */ - "TAN", /* 0xc0 */ - "ATN", /* 0xc1 */ - "PEEK", /* 0xc2 */ - "LEN", /* 0xc3 */ - "STR$", /* 0xc4 */ - "VAL", /* 0xc5 */ - "ASC", /* 0xc6 */ - "CHR$", /* 0xc7 */ - "LEFT$", /* 0xc8 */ - "RIGHT$", /* 0xc9 */ - "MID$", /* 0xca */ - "GO", /* 0xcb */ - NULL, /* 0xcc */ - NULL, /* 0xcd */ - NULL, /* 0xce */ - NULL, /* 0xcf */ - NULL, /* 0xd0 */ - NULL, /* 0xd1 */ - NULL, /* 0xd2 */ - NULL, /* 0xd3 */ - NULL, /* 0xd4 */ - NULL, /* 0xd5 */ - NULL, /* 0xd6 */ - NULL, /* 0xd7 */ - NULL, /* 0xd8 */ - NULL, /* 0xd9 */ - NULL, /* 0xda */ - NULL, /* 0xdb */ - NULL, /* 0xdc */ - NULL, /* 0xdd */ - NULL, /* 0xde */ - NULL, /* 0xdf */ - NULL, /* 0xe0 */ - NULL, /* 0xe1 */ - NULL, /* 0xe2 */ - NULL, /* 0xe3 */ - NULL, /* 0xe4 */ - NULL, /* 0xe5 */ - NULL, /* 0xe6 */ - NULL, /* 0xe7 */ - NULL, /* 0xe8 */ - NULL, /* 0xe9 */ - NULL, /* 0xea */ - NULL, /* 0xeb */ - NULL, /* 0xec */ - NULL, /* 0xed */ - NULL, /* 0xee */ - NULL, /* 0xef */ - NULL, /* 0xf0 */ - NULL, /* 0xf1 */ - NULL, /* 0xf2 */ - NULL, /* 0xf3 */ - NULL, /* 0xf4 */ - NULL, /* 0xf5 */ - NULL, /* 0xf6 */ - NULL, /* 0xf7 */ - NULL, /* 0xf8 */ - NULL, /* 0xf9 */ - NULL, /* 0xfa */ - NULL, /* 0xfb */ - NULL, /* 0xfc */ - NULL, /* 0xfd */ - NULL, /* 0xfe */ - "{PI}" /* 0xff - A single character shaped as greek lowercase 'PI' */ -}; - -static const char *const basic_20_super_expander_vic[] = /* "BASIC 2.0 with Super Expander" - supported by vic20 & clones */ -{ - "END", /* 0x80 */ - "FOR", /* 0x81 */ - "NEXT", /* 0x82 */ - "DATA", /* 0x83 */ - "INPUT#", /* 0x84 */ - "INPUT", /* 0x85 */ - "DIM", /* 0x86 */ - "READ", /* 0x87 */ - "LET", /* 0x88 */ - "GOTO", /* 0x89 */ - "RUN", /* 0x8a */ - "IF", /* 0x8b */ - "RESTORE", /* 0x8c */ - "GOSUB", /* 0x8d */ - "RETURN", /* 0x8e */ - "REM", /* 0x8f */ - "STOP", /* 0x90 */ - "ON", /* 0x91 */ - "WAIT", /* 0x92 */ - "LOAD", /* 0x93 */ - "SAVE", /* 0x94 */ - "VERIFY", /* 0x95 */ - "DEF", /* 0x96 */ - "POKE", /* 0x97 */ - "PRINT#", /* 0x98 */ - "PRINT", /* 0x99 */ - "CONT", /* 0x9a */ - "LIST", /* 0x9b */ - "CLR", /* 0x9c */ - "CMD", /* 0x9d */ - "SYS", /* 0x9e */ - "OPEN", /* 0x9f */ - "CLOSE", /* 0xa0 */ - "GET", /* 0xa1 */ - "NEW", /* 0xa2 */ - "TAB(", /* 0xa3 */ - "TO", /* 0xa4 */ - "FN", /* 0xa5 */ - "SPC(", /* 0xa6 */ - "THEN", /* 0xa7 */ - "NOT", /* 0xa8 */ - "STEP", /* 0xa9 */ - "+", /* 0xaa */ - "-", /* 0xab */ - "*", /* 0xac */ - "/", /* 0xad */ - "^", /* 0xae */ - "AND", /* 0xaf */ - "OR", /* 0xb0 */ - ">", /* 0xb1 */ - "=", /* 0xb2 */ - "<", /* 0xb3 */ - "SGN", /* 0xb4 */ - "INT", /* 0xb5 */ - "ABS", /* 0xb6 */ - "USR", /* 0xb7 */ - "FRE", /* 0xb8 */ - "POS", /* 0xb9 */ - "SQR", /* 0xba */ - "RND", /* 0xbb */ - "LOG", /* 0xbc */ - "EXP", /* 0xbd */ - "COS", /* 0xbe */ - "SIN", /* 0xbf */ - "TAN", /* 0xc0 */ - "ATN", /* 0xc1 */ - "PEEK", /* 0xc2 */ - "LEN", /* 0xc3 */ - "STR$", /* 0xc4 */ - "VAL", /* 0xc5 */ - "ASC", /* 0xc6 */ - "CHR$", /* 0xc7 */ - "LEFT$", /* 0xc8 */ - "RIGHT$", /* 0xc9 */ - "MID$", /* 0xca */ - "GO", /* 0xcb */ - "KEY", /* 0xcc */ - "GRAPHIC", /* 0xcd */ - "SCNCLR", /* 0xce */ - "CIRCLE", /* 0xcf */ - "DRAW", /* 0xd0 */ - "REGION", /* 0xd1 */ - "COLOR", /* 0xd2 */ - "POINT", /* 0xd3 */ - "SOUND", /* 0xd4 */ - "CHAR", /* 0xd5 */ - "PAINT", /* 0xd6 */ - "RPOT", /* 0xd7 */ - "RPEN", /* 0xd8 */ - "RSND", /* 0xd9 */ - "RCOLR", /* 0xda */ - "RGR", /* 0xdb */ - "RJOY", /* 0xdc */ - "RDOT", /* 0xdd */ - NULL, /* 0xde */ - NULL, /* 0xdf */ - NULL, /* 0xe0 */ - NULL, /* 0xe1 */ - NULL, /* 0xe2 */ - NULL, /* 0xe3 */ - NULL, /* 0xe4 */ - NULL, /* 0xe5 */ - NULL, /* 0xe6 */ - NULL, /* 0xe7 */ - NULL, /* 0xe8 */ - NULL, /* 0xe9 */ - NULL, /* 0xea */ - NULL, /* 0xeb */ - NULL, /* 0xec */ - NULL, /* 0xed */ - NULL, /* 0xee */ - NULL, /* 0xef */ - NULL, /* 0xf0 */ - NULL, /* 0xf1 */ - NULL, /* 0xf2 */ - NULL, /* 0xf3 */ - NULL, /* 0xf4 */ - NULL, /* 0xf5 */ - NULL, /* 0xf6 */ - NULL, /* 0xf7 */ - NULL, /* 0xf8 */ - NULL, /* 0xf9 */ - NULL, /* 0xfa */ - NULL, /* 0xfb */ - NULL, /* 0xfc */ - NULL, /* 0xfd */ - NULL, /* 0xfe */ - "{PI}" /* 0xff - A single character shaped as greek lowercase 'PI' */ -}; - -static const char *const basic_20_turtle_basic_10[] = /* "BASIC 2.0 with Turtle BASIC 1.0" - supported by vic20 & clones */ -{ - "END", /* 0x80 */ - "FOR", /* 0x81 */ - "NEXT", /* 0x82 */ - "DATA", /* 0x83 */ - "INPUT#", /* 0x84 */ - "INPUT", /* 0x85 */ - "DIM", /* 0x86 */ - "READ", /* 0x87 */ - "LET", /* 0x88 */ - "GOTO", /* 0x89 */ - "RUN", /* 0x8a */ - "IF", /* 0x8b */ - "RESTORE", /* 0x8c */ - "GOSUB", /* 0x8d */ - "RETURN", /* 0x8e */ - "REM", /* 0x8f */ - "STOP", /* 0x90 */ - "ON", /* 0x91 */ - "WAIT", /* 0x92 */ - "LOAD", /* 0x93 */ - "SAVE", /* 0x94 */ - "VERIFY", /* 0x95 */ - "DEF", /* 0x96 */ - "POKE", /* 0x97 */ - "PRINT#", /* 0x98 */ - "PRINT", /* 0x99 */ - "CONT", /* 0x9a */ - "LIST", /* 0x9b */ - "CLR", /* 0x9c */ - "CMD", /* 0x9d */ - "SYS", /* 0x9e */ - "OPEN", /* 0x9f */ - "CLOSE", /* 0xa0 */ - "GET", /* 0xa1 */ - "NEW", /* 0xa2 */ - "TAB(", /* 0xa3 */ - "TO", /* 0xa4 */ - "FN", /* 0xa5 */ - "SPC(", /* 0xa6 */ - "THEN", /* 0xa7 */ - "NOT", /* 0xa8 */ - "STEP", /* 0xa9 */ - "+", /* 0xaa */ - "-", /* 0xab */ - "*", /* 0xac */ - "/", /* 0xad */ - "^", /* 0xae */ - "AND", /* 0xaf */ - "OR", /* 0xb0 */ - ">", /* 0xb1 */ - "=", /* 0xb2 */ - "<", /* 0xb3 */ - "SGN", /* 0xb4 */ - "INT", /* 0xb5 */ - "ABS", /* 0xb6 */ - "USR", /* 0xb7 */ - "FRE", /* 0xb8 */ - "POS", /* 0xb9 */ - "SQR", /* 0xba */ - "RND", /* 0xbb */ - "LOG", /* 0xbc */ - "EXP", /* 0xbd */ - "COS", /* 0xbe */ - "SIN", /* 0xbf */ - "TAN", /* 0xc0 */ - "ATN", /* 0xc1 */ - "PEEK", /* 0xc2 */ - "LEN", /* 0xc3 */ - "STR$", /* 0xc4 */ - "VAL", /* 0xc5 */ - "ASC", /* 0xc6 */ - "CHR$", /* 0xc7 */ - "LEFT$", /* 0xc8 */ - "RIGHT$", /* 0xc9 */ - "MID$", /* 0xca */ - "GO", /* 0xcb */ - "GRAPHIC", /* 0xcc */ - "OLD", /* 0xcd */ - "TURN", /* 0xce */ - "PEN", /* 0xcf */ - "DRAW", /* 0xd0 */ - "MOVE", /* 0xd1 */ - "POINT", /* 0xd2 */ - "KILL", /* 0xd3 */ - "WRITE", /* 0xd4 */ - "REPEAT", /* 0xd5 */ - "SCREEN", /* 0xd6 */ - "DOKE", /* 0xd7 */ - "RELOC", /* 0xd8 */ - "FILL", /* 0xd9 */ - "RTIME", /* 0xda */ - "BASE", /* 0xdb */ - "PAUSE", /* 0xdc */ - "POP", /* 0xdd */ - "COLOR", /* 0xde */ - "MERGE", /* 0xdf */ - "CHAR", /* 0xe0 */ - "TAKE", /* 0xe1 */ - "SOUND", /* 0xe2 */ - "VOL", /* 0xe3 */ - "PUT", /* 0xe4 */ - "PLACE", /* 0xe5 */ - "CLS", /* 0xe6 */ - "ACCEPT", /* 0xe7 */ - "RESET", /* 0xe8 */ - "GRAB", /* 0xe9 */ - "RDOT", /* 0xea */ - "PLR$", /* 0xeb */ - "DEEK", /* 0xec */ - "JOY", /* 0xed */ - NULL, /* 0xee */ - NULL, /* 0xef */ - NULL, /* 0xf0 */ - NULL, /* 0xf1 */ - NULL, /* 0xf2 */ - NULL, /* 0xf3 */ - NULL, /* 0xf4 */ - NULL, /* 0xf5 */ - NULL, /* 0xf6 */ - NULL, /* 0xf7 */ - NULL, /* 0xf8 */ - NULL, /* 0xf9 */ - NULL, /* 0xfa */ - NULL, /* 0xfb */ - NULL, /* 0xfc */ - NULL, /* 0xfd */ - NULL, /* 0xfe */ - "{PI}" /* 0xff - A single character shaped as greek lowercase 'PI' */ -}; - -static const char *const basic_20_speech_basic_27[] = /* "BASIC 2.0 with Speech BASIC 2.7" - supported by c64 & clones */ -{ - "END", /* 0x80 */ - "FOR", /* 0x81 */ - "NEXT", /* 0x82 */ - "DATA", /* 0x83 */ - "INPUT#", /* 0x84 */ - "INPUT", /* 0x85 */ - "DIM", /* 0x86 */ - "READ", /* 0x87 */ - "LET", /* 0x88 */ - "GOTO", /* 0x89 */ - "RUN", /* 0x8a */ - "IF", /* 0x8b */ - "RESTORE", /* 0x8c */ - "GOSUB", /* 0x8d */ - "RETURN", /* 0x8e */ - "REM", /* 0x8f */ - "STOP", /* 0x90 */ - "ON", /* 0x91 */ - "WAIT", /* 0x92 */ - "LOAD", /* 0x93 */ - "SAVE", /* 0x94 */ - "VERIFY", /* 0x95 */ - "DEF", /* 0x96 */ - "POKE", /* 0x97 */ - "PRINT#", /* 0x98 */ - "PRINT", /* 0x99 */ - "CONT", /* 0x9a */ - "LIST", /* 0x9b */ - "CLR", /* 0x9c */ - "CMD", /* 0x9d */ - "SYS", /* 0x9e */ - "OPEN", /* 0x9f */ - "CLOSE", /* 0xa0 */ - "GET", /* 0xa1 */ - "NEW", /* 0xa2 */ - "TAB(", /* 0xa3 */ - "TO", /* 0xa4 */ - "FN", /* 0xa5 */ - "SPC(", /* 0xa6 */ - "THEN", /* 0xa7 */ - "NOT", /* 0xa8 */ - "STEP", /* 0xa9 */ - "+", /* 0xaa */ - "-", /* 0xab */ - "*", /* 0xac */ - "/", /* 0xad */ - "^", /* 0xae */ - "AND", /* 0xaf */ - "OR", /* 0xb0 */ - ">", /* 0xb1 */ - "=", /* 0xb2 */ - "<", /* 0xb3 */ - "SGN", /* 0xb4 */ - "INT", /* 0xb5 */ - "ABS", /* 0xb6 */ - "USR", /* 0xb7 */ - "FRE", /* 0xb8 */ - "POS", /* 0xb9 */ - "SQR", /* 0xba */ - "RND", /* 0xbb */ - "LOG", /* 0xbc */ - "EXP", /* 0xbd */ - "COS", /* 0xbe */ - "SIN", /* 0xbf */ - "TAN", /* 0xc0 */ - "ATN", /* 0xc1 */ - "PEEK", /* 0xc2 */ - "LEN", /* 0xc3 */ - "STR$", /* 0xc4 */ - "VAL", /* 0xc5 */ - "ASC", /* 0xc6 */ - "CHR$", /* 0xc7 */ - "LEFT$", /* 0xc8 */ - "RIGHT$", /* 0xc9 */ - "MID$", /* 0xca */ - "GO", /* 0xcb */ - "RESET", /* 0xcc */ - "BASIC", /* 0xcd */ - "HELP", /* 0xce */ - "KEY", /* 0xcf */ - "HIMEM", /* 0xd0 */ - "DISK", /* 0xd1 */ - "DIR", /* 0xd2 */ - "BLOAD", /* 0xd3 */ - "BSAVE", /* 0xd4 */ - "MAP", /* 0xd5 */ - "MEM", /* 0xd6 */ - "PAUSE", /* 0xd7 */ - "BLOCK", /* 0xd8 */ - "HEAR", /* 0xd9 */ - "RECORD", /* 0xda */ - "PLAY", /* 0xdb */ - "VOLDEF", /* 0xdc */ - "COLDEF", /* 0xdd */ - "HEX", /* 0xde */ - "DEZ", /* 0xdf */ - "SCREEN", /* 0xe0 */ - "EXEC", /* 0xe1 */ - "MON", /* 0xe2 */ - "{LEFT ARROW}", /* 0xe3 - A single character shaped as a left pointing arrow */ - "FROM", /* 0xe4 */ - "SPEED", /* 0xe5 */ - "OFF", /* 0xe6 */ - NULL, /* 0xe7 */ - NULL, /* 0xe8 */ - NULL, /* 0xe9 */ - NULL, /* 0xea */ - NULL, /* 0xeb */ - NULL, /* 0xec */ - NULL, /* 0xed */ - NULL, /* 0xee */ - NULL, /* 0xef */ - NULL, /* 0xf0 */ - NULL, /* 0xf1 */ - NULL, /* 0xf2 */ - NULL, /* 0xf3 */ - NULL, /* 0xf4 */ - NULL, /* 0xf5 */ - NULL, /* 0xf6 */ - NULL, /* 0xf7 */ - NULL, /* 0xf8 */ - NULL, /* 0xf9 */ - NULL, /* 0xfa */ - NULL, /* 0xfb */ - NULL, /* 0xfc */ - NULL, /* 0xfd */ - NULL, /* 0xfe */ - "{PI}" /* 0xff - A single character shaped as greek lowercase 'PI' */ -}; - -static const char *const basic_20_at_basic[] = /* "BASIC 2.0 with @BASIC" - supported by c64 & clones */ -{ - "END", /* 0x80 */ - "FOR", /* 0x81 */ - "NEXT", /* 0x82 */ - "DATA", /* 0x83 */ - "INPUT#", /* 0x84 */ - "INPUT", /* 0x85 */ - "DIM", /* 0x86 */ - "READ", /* 0x87 */ - "LET", /* 0x88 */ - "GOTO", /* 0x89 */ - "RUN", /* 0x8a */ - "IF", /* 0x8b */ - "RESTORE", /* 0x8c */ - "GOSUB", /* 0x8d */ - "RETURN", /* 0x8e */ - "REM", /* 0x8f */ - "STOP", /* 0x90 */ - "ON", /* 0x91 */ - "WAIT", /* 0x92 */ - "LOAD", /* 0x93 */ - "SAVE", /* 0x94 */ - "VERIFY", /* 0x95 */ - "DEF", /* 0x96 */ - "POKE", /* 0x97 */ - "PRINT#", /* 0x98 */ - "PRINT", /* 0x99 */ - "CONT", /* 0x9a */ - "LIST", /* 0x9b */ - "CLR", /* 0x9c */ - "CMD", /* 0x9d */ - "SYS", /* 0x9e */ - "OPEN", /* 0x9f */ - "CLOSE", /* 0xa0 */ - "GET", /* 0xa1 */ - "NEW", /* 0xa2 */ - "TAB(", /* 0xa3 */ - "TO", /* 0xa4 */ - "FN", /* 0xa5 */ - "SPC(", /* 0xa6 */ - "THEN", /* 0xa7 */ - "NOT", /* 0xa8 */ - "STEP", /* 0xa9 */ - "+", /* 0xaa */ - "-", /* 0xab */ - "*", /* 0xac */ - "/", /* 0xad */ - "^", /* 0xae */ - "AND", /* 0xaf */ - "OR", /* 0xb0 */ - ">", /* 0xb1 */ - "=", /* 0xb2 */ - "<", /* 0xb3 */ - "SGN", /* 0xb4 */ - "INT", /* 0xb5 */ - "ABS", /* 0xb6 */ - "USR", /* 0xb7 */ - "FRE", /* 0xb8 */ - "POS", /* 0xb9 */ - "SQR", /* 0xba */ - "RND", /* 0xbb */ - "LOG", /* 0xbc */ - "EXP", /* 0xbd */ - "COS", /* 0xbe */ - "SIN", /* 0xbf */ - "TAN", /* 0xc0 */ - "ATN", /* 0xc1 */ - "PEEK", /* 0xc2 */ - "LEN", /* 0xc3 */ - "STR$", /* 0xc4 */ - "VAL", /* 0xc5 */ - "ASC", /* 0xc6 */ - "CHR$", /* 0xc7 */ - "LEFT$", /* 0xc8 */ - "RIGHT$", /* 0xc9 */ - "MID$", /* 0xca */ - "GO", /* 0xcb */ - "TRACE", /* 0xcc */ - "DELETE", /* 0xcd */ - "AUTO", /* 0xce */ - "OLD", /* 0xcf */ - "DUMP", /* 0xd0 */ - "FIND", /* 0xd1 */ - "RENUMBER", /* 0xd2 */ - "DLOAD", /* 0xd3 */ - "DSAVE", /* 0xd4 */ - "DVERIFY", /* 0xd5 */ - "DIRECTORY" /* 0xd6 */ - "CATALOG", /* 0xd7 */ - "SCRATCH", /* 0xd8 */ - "COLLECT", /* 0xd9 */ - "RENAME", /* 0xda */ - "COPY", /* 0xdb */ - "BACKUP", /* 0xdc */ - "DISK", /* 0xdd */ - "HEADER", /* 0xde */ - "APPEND", /* 0xdf */ - "MERGE", /* 0xe0 */ - "MLOAD", /* 0xe1 */ - "MVERIFY", /* 0xe2 */ - "MSAVE", /* 0xe3 */ - "KEY", /* 0xe4 */ - "BASIC", /* 0xe5 */ - "RESET", /* 0xe6 */ - "EXIT", /* 0xe7 */ - "ENTER", /* 0xe8 */ - "DOKE", /* 0xe9 */ - "SET", /* 0xea */ - "HELP", /* 0xeb */ - "SCREEN", /* 0xec */ - "LOMEM", /* 0xed */ - "HIMEM", /* 0xee */ - "COLOUR", /* 0xef */ - "TYPE", /* 0xf0 */ - "TIME", /* 0xf1 */ - "DEEK", /* 0xf2 */ - "HEX$", /* 0xf3 */ - "BIN$", /* 0xf4 */ - "OFF", /* 0xf5 */ - "ALARM", /* 0xf6 */ - NULL, /* 0xf7 */ - NULL, /* 0xf8 */ - NULL, /* 0xf9 */ - NULL, /* 0xfa */ - NULL, /* 0xfb */ - NULL, /* 0xfc */ - NULL, /* 0xfd */ - NULL, /* 0xfe */ - "{PI}" /* 0xff - A single character shaped as greek lowercase 'PI' */ -}; - -static const char *const basic_20_simon_s_basic[] = /* "BASIC 2.0 with Simon's BASIC" - supported by c64 & clones */ -{ - "END", /* 0x80 */ - "FOR", /* 0x81 */ - "NEXT", /* 0x82 */ - "DATA", /* 0x83 */ - "INPUT#", /* 0x84 */ - "INPUT", /* 0x85 */ - "DIM", /* 0x86 */ - "READ", /* 0x87 */ - "LET", /* 0x88 */ - "GOTO", /* 0x89 */ - "RUN", /* 0x8a */ - "IF", /* 0x8b */ - "RESTORE", /* 0x8c */ - "GOSUB", /* 0x8d */ - "RETURN", /* 0x8e */ - "REM", /* 0x8f */ - "STOP", /* 0x90 */ - "ON", /* 0x91 */ - "WAIT", /* 0x92 */ - "LOAD", /* 0x93 */ - "SAVE", /* 0x94 */ - "VERIFY", /* 0x95 */ - "DEF", /* 0x96 */ - "POKE", /* 0x97 */ - "PRINT#", /* 0x98 */ - "PRINT", /* 0x99 */ - "CONT", /* 0x9a */ - "LIST", /* 0x9b */ - "CLR", /* 0x9c */ - "CMD", /* 0x9d */ - "SYS", /* 0x9e */ - "OPEN", /* 0x9f */ - "CLOSE", /* 0xa0 */ - "GET", /* 0xa1 */ - "NEW", /* 0xa2 */ - "TAB(", /* 0xa3 */ - "TO", /* 0xa4 */ - "FN", /* 0xa5 */ - "SPC(", /* 0xa6 */ - "THEN", /* 0xa7 */ - "NOT", /* 0xa8 */ - "STEP", /* 0xa9 */ - "+", /* 0xaa */ - "-", /* 0xab */ - "*", /* 0xac */ - "/", /* 0xad */ - "^", /* 0xae */ - "AND", /* 0xaf */ - "OR", /* 0xb0 */ - ">", /* 0xb1 */ - "=", /* 0xb2 */ - "<", /* 0xb3 */ - "SGN", /* 0xb4 */ - "INT", /* 0xb5 */ - "ABS", /* 0xb6 */ - "USR", /* 0xb7 */ - "FRE", /* 0xb8 */ - "POS", /* 0xb9 */ - "SQR", /* 0xba */ - "RND", /* 0xbb */ - "LOG", /* 0xbc */ - "EXP", /* 0xbd */ - "COS", /* 0xbe */ - "SIN", /* 0xbf */ - "TAN", /* 0xc0 */ - "ATN", /* 0xc1 */ - "PEEK", /* 0xc2 */ - "LEN", /* 0xc3 */ - "STR$", /* 0xc4 */ - "VAL", /* 0xc5 */ - "ASC", /* 0xc6 */ - "CHR$", /* 0xc7 */ - "LEFT$", /* 0xc8 */ - "RIGHT$", /* 0xc9 */ - "MID$", /* 0xca */ - "GO", /* 0xcb */ - NULL, /* 0xcc */ - NULL, /* 0xcd */ - NULL, /* 0xce */ - NULL, /* 0xcf */ - NULL, /* 0xd0 */ - NULL, /* 0xd1 */ - NULL, /* 0xd2 */ - NULL, /* 0xd3 */ - NULL, /* 0xd4 */ - NULL, /* 0xd5 */ - NULL, /* 0xd6 */ - NULL, /* 0xd7 */ - NULL, /* 0xd8 */ - NULL, /* 0xd9 */ - NULL, /* 0xda */ - NULL, /* 0xdb */ - NULL, /* 0xdc */ - NULL, /* 0xdd */ - NULL, /* 0xde */ - NULL, /* 0xdf */ - NULL, /* 0xe0 */ - NULL, /* 0xe1 */ - NULL, /* 0xe2 */ - NULL, /* 0xe3 */ - NULL, /* 0xe4 */ - NULL, /* 0xe5 */ - NULL, /* 0xe6 */ - NULL, /* 0xe7 */ - NULL, /* 0xe8 */ - NULL, /* 0xe9 */ - NULL, /* 0xea */ - NULL, /* 0xeb */ - NULL, /* 0xec */ - NULL, /* 0xed */ - NULL, /* 0xee */ - NULL, /* 0xef */ - NULL, /* 0xf0 */ - NULL, /* 0xf1 */ - NULL, /* 0xf2 */ - NULL, /* 0xf3 */ - NULL, /* 0xf4 */ - NULL, /* 0xf5 */ - NULL, /* 0xf6 */ - NULL, /* 0xf7 */ - NULL, /* 0xf8 */ - NULL, /* 0xf9 */ - NULL, /* 0xfa */ - NULL, /* 0xfb */ - NULL, /* 0xfc */ - NULL, /* 0xfd */ - NULL, /* 0xfe */ - "{PI}", /* 0xff - A single character shaped as greek lowercase 'PI' */ - NULL, /* 0x6400 */ - "HIRES", /* 0x6401 */ - "PLOT", /* 0x6402 */ - "LINE", /* 0x6403 */ - "BLOCK", /* 0x6404 */ - "FCHR", /* 0x6405 */ - "FCOL", /* 0x6406 */ - "FILL", /* 0x6407 */ - "REC", /* 0x6408 */ - "ROT", /* 0x6409 */ - "DRAW", /* 0x640a */ - "CHAR", /* 0x640b */ - "HI COL", /* 0x640c */ - "INV", /* 0x640d */ - "FRAC", /* 0x640e */ - "MOVE", /* 0x640f */ - "PLACE", /* 0x6410 */ - "UPB", /* 0x6411 */ - "UPW", /* 0x6412 */ - "LEFTW", /* 0x6413 */ - "LEFTB", /* 0x6414 */ - "DOWNB", /* 0x6415 */ - "DOWNW", /* 0x6416 */ - "RIGHTB", /* 0x6417 */ - "RIGHTW", /* 0x6418 */ - "MULTI", /* 0x6419 */ - "COLOUR", /* 0x641a */ - "MMOB", /* 0x641b */ - "BFLASH", /* 0x641c */ - "MOB SET", /* 0x641d */ - "MUSIC", /* 0x641e */ - "FLASH", /* 0x641f */ - "REPEAT", /* 0x6420 */ - "PLAY", /* 0x6421 */ - ">>", /* 0x6422 */ - "CENTRE", /* 0x6423 */ - "ENVELOPE", /* 0x6424 */ - "CGOTO", /* 0x6425 */ - "WAVE", /* 0x6426 */ - "FETCH", /* 0x6427 */ - "AT(", /* 0x6428 */ - "UNTIL", /* 0x6429 */ - ">>", /* 0x642a */ - ">>", /* 0x642b */ - "USE", /* 0x642c */ - ">>", /* 0x642d */ - "GLOBAL", /* 0x642e */ - ">>", /* 0x642f */ - "RESET", /* 0x6430 */ - "PROC", /* 0x6431 */ - "CALL", /* 0x6432 */ - "EXEC", /* 0x6433 */ - "END PROC", /* 0x6434 */ - "EXIT", /* 0x6435 */ - "END LOOP", /* 0x6436 */ - "ON KEY", /* 0x6437 */ - "DISABLE", /* 0x6438 */ - "RESUME", /* 0x6439 */ - "LOOP", /* 0x643a */ - "DELAY", /* 0x643b */ - ">>", /* 0x643c */ - ">>", /* 0x643d */ - ">>", /* 0x643e */ - ">>", /* 0x643f */ - "SECURE", /* 0x6440 */ - "DISAPA", /* 0x6441 */ - "CIRCLE", /* 0x6442 */ - "ON ERROR", /* 0x6443 */ - "NO ERROR", /* 0x6444 */ - "LOCAL", /* 0x6445 */ - "RCOMP", /* 0x6446 */ - "ELSE", /* 0x6447 */ - "RETRACE", /* 0x6448 */ - "TRACE", /* 0x6449 */ - "DIR", /* 0x644a */ - "PAGE", /* 0x644b */ - "DUMP", /* 0x644c */ - "FIND", /* 0x644d */ - "OPTION", /* 0x644e */ - "AUTO", /* 0x644f */ - "OLD", /* 0x6450 */ - "JOY", /* 0x6451 */ - "MOD", /* 0x6452 */ - "DIV", /* 0x6453 */ - ">>", /* 0x6454 */ - "DUP", /* 0x6455 */ - "INKEY", /* 0x6456 */ - "INST", /* 0x6457 */ - "TEST", /* 0x6458 */ - "LIN", /* 0x6459 */ - "EXOR", /* 0x645a */ - "INSERT", /* 0x645b */ - "POT", /* 0x645c */ - "PENX", /* 0x645d */ - ">>", /* 0x645e */ - "PENY", /* 0x645f */ - "SOUND", /* 0x6460 */ - "GRAPHICS", /* 0x6461 */ - "DESIGN", /* 0x6462 */ - "RLOCMOB", /* 0x6463 */ - "CMOB", /* 0x6464 */ - "BCKGNDS", /* 0x6465 */ - "PAUSE", /* 0x6466 */ - "NRM", /* 0x6467 */ - "MOB OFF", /* 0x6468 */ - "OFF", /* 0x6469 */ - "ANGL", /* 0x646a */ - "ARC", /* 0x646b */ - "COLD", /* 0x646c */ - "SCRSV", /* 0x646d */ - "SCRLD", /* 0x646e */ - "TEXT", /* 0x646f */ - "CSET", /* 0x6470 */ - "VOL", /* 0x6471 */ - "DISK", /* 0x6472 */ - "HRDCPY", /* 0x6473 */ - "KEY", /* 0x6474 */ - "PAINT", /* 0x6475 */ - "LOW COL", /* 0x6476 */ - "COPY", /* 0x6477 */ - "MERGE", /* 0x6478 */ - "RENUMBER", /* 0x6479 */ - "MEM", /* 0x647a */ - "DETECT", /* 0x647b */ - "CHECK", /* 0x647c */ - "DISPLAY", /* 0x647d */ - "ERR", /* 0x647e */ - "OUT" /* 0x647f */ -}; - -static const char *const basic_20_exp_40[] = /* "BASIC 2.0 with BASIC 4.0 Expansion" - supported by c64 & clones */ -{ - "END", /* 0x80 */ - "FOR", /* 0x81 */ - "NEXT", /* 0x82 */ - "DATA", /* 0x83 */ - "INPUT#", /* 0x84 */ - "INPUT", /* 0x85 */ - "DIM", /* 0x86 */ - "READ", /* 0x87 */ - "LET", /* 0x88 */ - "GOTO", /* 0x89 */ - "RUN", /* 0x8a */ - "IF", /* 0x8b */ - "RESTORE", /* 0x8c */ - "GOSUB", /* 0x8d */ - "RETURN", /* 0x8e */ - "REM", /* 0x8f */ - "STOP", /* 0x90 */ - "ON", /* 0x91 */ - "WAIT", /* 0x92 */ - "LOAD", /* 0x93 */ - "SAVE", /* 0x94 */ - "VERIFY", /* 0x95 */ - "DEF", /* 0x96 */ - "POKE", /* 0x97 */ - "PRINT#", /* 0x98 */ - "PRINT", /* 0x99 */ - "CONT", /* 0x9a */ - "LIST", /* 0x9b */ - "CLR", /* 0x9c */ - "CMD", /* 0x9d */ - "SYS", /* 0x9e */ - "OPEN", /* 0x9f */ - "CLOSE", /* 0xa0 */ - "GET", /* 0xa1 */ - "NEW", /* 0xa2 */ - "TAB(", /* 0xa3 */ - "TO", /* 0xa4 */ - "FN", /* 0xa5 */ - "SPC(", /* 0xa6 */ - "THEN", /* 0xa7 */ - "NOT", /* 0xa8 */ - "STEP", /* 0xa9 */ - "+", /* 0xaa */ - "-", /* 0xab */ - "*", /* 0xac */ - "/", /* 0xad */ - "^", /* 0xae */ - "AND", /* 0xaf */ - "OR", /* 0xb0 */ - ">", /* 0xb1 */ - "=", /* 0xb2 */ - "<", /* 0xb3 */ - "SGN", /* 0xb4 */ - "INT", /* 0xb5 */ - "ABS", /* 0xb6 */ - "USR", /* 0xb7 */ - "FRE", /* 0xb8 */ - "POS", /* 0xb9 */ - "SQR", /* 0xba */ - "RND", /* 0xbb */ - "LOG", /* 0xbc */ - "EXP", /* 0xbd */ - "COS", /* 0xbe */ - "SIN", /* 0xbf */ - "TAN", /* 0xc0 */ - "ATN", /* 0xc1 */ - "PEEK", /* 0xc2 */ - "LEN", /* 0xc3 */ - "STR$", /* 0xc4 */ - "VAL", /* 0xc5 */ - "ASC", /* 0xc6 */ - "CHR$", /* 0xc7 */ - "LEFT$", /* 0xc8 */ - "RIGHT$", /* 0xc9 */ - "MID$", /* 0xca */ - "GO", /* 0xcb */ - "CONCAT", /* 0xcc */ - "DOPEN", /* 0xcd */ - "DCLOSE", /* 0xce */ - "RECORD", /* 0xcf */ - "HEADER", /* 0xd0 */ - "COLLECT", /* 0xd1 */ - "BACKUP", /* 0xd2 */ - "COPY", /* 0xd3 */ - "APPEND", /* 0xd4 */ - "DSAVE", /* 0xd5 */ - "DLOAD", /* 0xd6 */ - "CATALOG", /* 0xd7 */ - "RENAME", /* 0xd8 */ - "SCRATCH", /* 0xd9 */ - "DIRECTORY", /* 0xda */ - "COLOR", /* 0xdb */ - "COLD", /* 0xdc */ - "KEY", /* 0xdd */ - "DVERIFY", /* 0xde */ - "DELETE" /* 0xdf */ - "AUTO", /* 0xe0 */ - "MERGE", /* 0xe1 */ - "OLD", /* 0xe2 */ - "MONITOR", /* 0xe3 */ - NULL, /* 0xe4 */ - NULL, /* 0xe5 */ - NULL, /* 0xe6 */ - NULL, /* 0xe7 */ - NULL, /* 0xe8 */ - NULL, /* 0xe9 */ - NULL, /* 0xea */ - NULL, /* 0xeb */ - NULL, /* 0xec */ - NULL, /* 0xed */ - NULL, /* 0xee */ - NULL, /* 0xef */ - NULL, /* 0xf0 */ - NULL, /* 0xf1 */ - NULL, /* 0xf2 */ - NULL, /* 0xf3 */ - NULL, /* 0xf4 */ - NULL, /* 0xf5 */ - NULL, /* 0xf6 */ - NULL, /* 0xf7 */ - NULL, /* 0xf8 */ - NULL, /* 0xf9 */ - NULL, /* 0xfa */ - NULL, /* 0xfb */ - NULL, /* 0xfc */ - NULL, /* 0xfd */ - NULL, /* 0xfe */ - "{PI}" /* 0xff - A single character shaped as greek lowercase 'PI' */ -}; - -static const char *const basic_35[] = /* "BASIC 3.5" - supported by c16 & clones, except c364 */ -{ - "END", /* 0x80 */ - "FOR", /* 0x81 */ - "NEXT", /* 0x82 */ - "DATA", /* 0x83 */ - "INPUT#", /* 0x84 */ - "INPUT", /* 0x85 */ - "DIM", /* 0x86 */ - "READ", /* 0x87 */ - "LET", /* 0x88 */ - "GOTO", /* 0x89 */ - "RUN", /* 0x8a */ - "IF", /* 0x8b */ - "RESTORE", /* 0x8c */ - "GOSUB", /* 0x8d */ - "RETURN", /* 0x8e */ - "REM", /* 0x8f */ - "STOP", /* 0x90 */ - "ON", /* 0x91 */ - "WAIT", /* 0x92 */ - "LOAD", /* 0x93 */ - "SAVE", /* 0x94 */ - "VERIFY", /* 0x95 */ - "DEF", /* 0x96 */ - "POKE", /* 0x97 */ - "PRINT#", /* 0x98 */ - "PRINT", /* 0x99 */ - "CONT", /* 0x9a */ - "LIST", /* 0x9b */ - "CLR", /* 0x9c */ - "CMD", /* 0x9d */ - "SYS", /* 0x9e */ - "OPEN", /* 0x9f */ - "CLOSE", /* 0xa0 */ - "GET", /* 0xa1 */ - "NEW", /* 0xa2 */ - "TAB(", /* 0xa3 */ - "TO", /* 0xa4 */ - "FN", /* 0xa5 */ - "SPC(", /* 0xa6 */ - "THEN", /* 0xa7 */ - "NOT", /* 0xa8 */ - "STEP", /* 0xa9 */ - "+", /* 0xaa */ - "-", /* 0xab */ - "*", /* 0xac */ - "/", /* 0xad */ - "^", /* 0xae */ - "AND", /* 0xaf */ - "OR", /* 0xb0 */ - ">", /* 0xb1 */ - "=", /* 0xb2 */ - "<", /* 0xb3 */ - "SGN", /* 0xb4 */ - "INT", /* 0xb5 */ - "ABS", /* 0xb6 */ - "USR", /* 0xb7 */ - "FRE", /* 0xb8 */ - "POS", /* 0xb9 */ - "SQR", /* 0xba */ - "RND", /* 0xbb */ - "LOG", /* 0xbc */ - "EXP", /* 0xbd */ - "COS", /* 0xbe */ - "SIN", /* 0xbf */ - "TAN", /* 0xc0 */ - "ATN", /* 0xc1 */ - "PEEK", /* 0xc2 */ - "LEN", /* 0xc3 */ - "STR$", /* 0xc4 */ - "VAL", /* 0xc5 */ - "ASC", /* 0xc6 */ - "CHR$", /* 0xc7 */ - "LEFT$", /* 0xc8 */ - "RIGHT$", /* 0xc9 */ - "MID$", /* 0xca */ - "GO", /* 0xcb */ - "RGR", /* 0xcc */ - "RCLR" /* 0xcd */ - "RLUM" /* 0xce */ - "JOY", /* 0xcf */ - "RDOT" /* 0xd0 */ - "DEC", /* 0xd1 */ - "HEX$", /* 0xd2 */ - "ERR$", /* 0xd3 */ - "INSTR", /* 0xd4 */ - "ELSE", /* 0xd5 */ - "RESUME", /* 0xd6 */ - "TRAP", /* 0xd7 */ - "TRON", /* 0xd8 */ - "TROFF", /* 0xd9 */ - "SOUND", /* 0xda */ - "VOL", /* 0xdb */ - "AUTO", /* 0xdc */ - "PUDEF", /* 0xdd */ - "GRAPHIC", /* 0xde */ - "PAINT", /* 0xdf */ - "CHAR", /* 0xe0 */ - "BOX", /* 0xe1 */ - "CIRCLE", /* 0xe2 */ - "GSHAPE", /* 0xe3 */ - "SSHAPE", /* 0xe4 */ - "DRAW", /* 0xe5 */ - "LOCATE", /* 0xe6 */ - "COLOR", /* 0xe7 */ - "SCNCLR", /* 0xe8 */ - "SCALE", /* 0xe9 */ - "HELP", /* 0xea */ - "DO", /* 0xeb */ - "LOOP", /* 0xec */ - "EXIT", /* 0xed */ - "DIRECTORY", /* 0xee */ - "DSAVE", /* 0xef */ - "DLOAD", /* 0xf0 */ - "HEADER", /* 0xf1 */ - "SCRATCH", /* 0xf2 */ - "COLLECT", /* 0xf3 */ - "COPY", /* 0xf4 */ - "RENAME", /* 0xf5 */ - "BACKUP", /* 0xf6 */ - "DELETE", /* 0xf7 */ - "RENUMBER", /* 0xf8 */ - "KEY", /* 0xf9 */ - "MONITOR", /* 0xfa */ - "USING", /* 0xfb */ - "UNTIL", /* 0xfc */ - "WHILE", /* 0xfd */ - NULL, /* 0xfe */ - "{PI}" /* 0xff - A single character shaped as greek lowercase 'PI' */ -}; - -static const char *const basic_35_magic_voice[] = /* "BASIC 3.5 with Magic Voice Speech Synthesizer" - supported by c364 */ -{ - "END", /* 0x80 */ - "FOR", /* 0x81 */ - "NEXT", /* 0x82 */ - "DATA", /* 0x83 */ - "INPUT#", /* 0x84 */ - "INPUT", /* 0x85 */ - "DIM", /* 0x86 */ - "READ", /* 0x87 */ - "LET", /* 0x88 */ - "GOTO", /* 0x89 */ - "RUN", /* 0x8a */ - "IF", /* 0x8b */ - "RESTORE", /* 0x8c */ - "GOSUB", /* 0x8d */ - "RETURN", /* 0x8e */ - "REM", /* 0x8f */ - "STOP", /* 0x90 */ - "ON", /* 0x91 */ - "WAIT", /* 0x92 */ - "LOAD", /* 0x93 */ - "SAVE", /* 0x94 */ - "VERIFY", /* 0x95 */ - "DEF", /* 0x96 */ - "POKE", /* 0x97 */ - "PRINT#", /* 0x98 */ - "PRINT", /* 0x99 */ - "CONT", /* 0x9a */ - "LIST", /* 0x9b */ - "CLR", /* 0x9c */ - "CMD", /* 0x9d */ - "SYS", /* 0x9e */ - "OPEN", /* 0x9f */ - "CLOSE", /* 0xa0 */ - "GET", /* 0xa1 */ - "NEW", /* 0xa2 */ - "TAB(", /* 0xa3 */ - "TO", /* 0xa4 */ - "FN", /* 0xa5 */ - "SPC(", /* 0xa6 */ - "THEN", /* 0xa7 */ - "NOT", /* 0xa8 */ - "STEP", /* 0xa9 */ - "+", /* 0xaa */ - "-", /* 0xab */ - "*", /* 0xac */ - "/", /* 0xad */ - "^", /* 0xae */ - "AND", /* 0xaf */ - "OR", /* 0xb0 */ - ">", /* 0xb1 */ - "=", /* 0xb2 */ - "<", /* 0xb3 */ - "SGN", /* 0xb4 */ - "INT", /* 0xb5 */ - "ABS", /* 0xb6 */ - "USR", /* 0xb7 */ - "FRE", /* 0xb8 */ - "POS", /* 0xb9 */ - "SQR", /* 0xba */ - "RND", /* 0xbb */ - "LOG", /* 0xbc */ - "EXP", /* 0xbd */ - "COS", /* 0xbe */ - "SIN", /* 0xbf */ - "TAN", /* 0xc0 */ - "ATN", /* 0xc1 */ - "PEEK", /* 0xc2 */ - "LEN", /* 0xc3 */ - "STR$", /* 0xc4 */ - "VAL", /* 0xc5 */ - "ASC", /* 0xc6 */ - "CHR$", /* 0xc7 */ - "LEFT$", /* 0xc8 */ - "RIGHT$", /* 0xc9 */ - "MID$", /* 0xca */ - "GO", /* 0xcb */ - "RGR", /* 0xcc */ - "RCLR" /* 0xcd */ - "RLUM" /* 0xce */ - "JOY", /* 0xcf */ - "RDOT" /* 0xd0 */ - "DEC", /* 0xd1 */ - "HEX$", /* 0xd2 */ - "ERR$", /* 0xd3 */ - "INSTR", /* 0xd4 */ - "ELSE", /* 0xd5 */ - "RESUME", /* 0xd6 */ - "TRAP", /* 0xd7 */ - "TRON", /* 0xd8 */ - "TROFF", /* 0xd9 */ - "SOUND", /* 0xda */ - "VOL", /* 0xdb */ - "AUTO", /* 0xdc */ - "PUDEF", /* 0xdd */ - "GRAPHIC", /* 0xde */ - "PAINT", /* 0xdf */ - "CHAR", /* 0xe0 */ - "BOX", /* 0xe1 */ - "CIRCLE", /* 0xe2 */ - "GSHAPE", /* 0xe3 */ - "SSHAPE", /* 0xe4 */ - "DRAW", /* 0xe5 */ - "LOCATE", /* 0xe6 */ - "COLOR", /* 0xe7 */ - "SCNCLR", /* 0xe8 */ - "SCALE", /* 0xe9 */ - "HELP", /* 0xea */ - "DO", /* 0xeb */ - "LOOP", /* 0xec */ - "EXIT", /* 0xed */ - "DIRECTORY", /* 0xee */ - "DSAVE", /* 0xef */ - "DLOAD", /* 0xf0 */ - "HEADER", /* 0xf1 */ - "SCRATCH", /* 0xf2 */ - "COLLECT", /* 0xf3 */ - "COPY", /* 0xf4 */ - "RENAME", /* 0xf5 */ - "BACKUP", /* 0xf6 */ - "DELETE", /* 0xf7 */ - "RENUMBER", /* 0xf8 */ - "KEY", /* 0xf9 */ - "MONITOR", /* 0xfa */ - "USING", /* 0xfb */ - "UNTIL", /* 0xfc */ - "WHILE", /* 0xfd */ - NULL, /* 0xfe - Prefix for additional tokens */ - "{PI}", /* 0xff - A single character shaped as greek lowercase 'PI' */ - NULL, /* 0xfe00 */ - "RATE", /* 0xfe01 */ - "VOC", /* 0xfe02 */ - NULL, /* 0xfe03 */ - "RDY", /* 0xfe04 */ - NULL, /* 0xfe05 */ - NULL, /* 0xfe06 */ - NULL, /* 0xfe07 */ - NULL, /* 0xfe08 */ - NULL, /* 0xfe09 */ - "SAY" /* 0xfe0a */ -}; - -static const char *const basic_40[] = /* "BASIC 4.0" - supported by cbm40xx & cbm80xx series, p500, cbm600 & clones */ -{ - "END", /* 0x80 */ - "FOR", /* 0x81 */ - "NEXT", /* 0x82 */ - "DATA", /* 0x83 */ - "INPUT#", /* 0x84 */ - "INPUT", /* 0x85 */ - "DIM", /* 0x86 */ - "READ", /* 0x87 */ - "LET", /* 0x88 */ - "GOTO", /* 0x89 */ - "RUN", /* 0x8a */ - "IF", /* 0x8b */ - "RESTORE", /* 0x8c */ - "GOSUB", /* 0x8d */ - "RETURN", /* 0x8e */ - "REM", /* 0x8f */ - "STOP", /* 0x90 */ - "ON", /* 0x91 */ - "WAIT", /* 0x92 */ - "LOAD", /* 0x93 */ - "SAVE", /* 0x94 */ - "VERIFY", /* 0x95 */ - "DEF", /* 0x96 */ - "POKE", /* 0x97 */ - "PRINT#", /* 0x98 */ - "PRINT", /* 0x99 */ - "CONT", /* 0x9a */ - "LIST", /* 0x9b */ - "CLR", /* 0x9c */ - "CMD", /* 0x9d */ - "SYS", /* 0x9e */ - "OPEN", /* 0x9f */ - "CLOSE", /* 0xa0 */ - "GET", /* 0xa1 */ - "NEW", /* 0xa2 */ - "TAB(", /* 0xa3 */ - "TO", /* 0xa4 */ - "FN", /* 0xa5 */ - "SPC(", /* 0xa6 */ - "THEN", /* 0xa7 */ - "NOT", /* 0xa8 */ - "STEP", /* 0xa9 */ - "+", /* 0xaa */ - "-", /* 0xab */ - "*", /* 0xac */ - "/", /* 0xad */ - "^", /* 0xae */ - "AND", /* 0xaf */ - "OR", /* 0xb0 */ - ">", /* 0xb1 */ - "=", /* 0xb2 */ - "<", /* 0xb3 */ - "SGN", /* 0xb4 */ - "INT", /* 0xb5 */ - "ABS", /* 0xb6 */ - "USR", /* 0xb7 */ - "FRE", /* 0xb8 */ - "POS", /* 0xb9 */ - "SQR", /* 0xba */ - "RND", /* 0xbb */ - "LOG", /* 0xbc */ - "EXP", /* 0xbd */ - "COS", /* 0xbe */ - "SIN", /* 0xbf */ - "TAN", /* 0xc0 */ - "ATN", /* 0xc1 */ - "PEEK", /* 0xc2 */ - "LEN", /* 0xc3 */ - "STR$", /* 0xc4 */ - "VAL", /* 0xc5 */ - "ASC", /* 0xc6 */ - "CHR$", /* 0xc7 */ - "LEFT$", /* 0xc8 */ - "RIGHT$", /* 0xc9 */ - "MID$", /* 0xca */ - "GO", /* 0xcb */ - "CONCAT", /* 0xcc */ - "DOPEN", /* 0xcd */ - "DCLOSE", /* 0xce */ - "RECORD", /* 0xcf */ - "HEADER", /* 0xd0 */ - "COLLECT", /* 0xd1 */ - "BACKUP", /* 0xd2 */ - "COPY", /* 0xd3 */ - "APPEND", /* 0xd4 */ - "DSAVE", /* 0xd5 */ - "DLOAD", /* 0xd6 */ - "CATALOG", /* 0xd7 */ - "RENAME", /* 0xd8 */ - "SCRATCH", /* 0xd9 */ - "DIRECTORY", /* 0xda */ - NULL, /* 0xdb */ - NULL, /* 0xdc */ - NULL, /* 0xdd */ - NULL, /* 0xde */ - NULL, /* 0xdf */ - NULL, /* 0xe0 */ - NULL, /* 0xe1 */ - NULL, /* 0xe2 */ - NULL, /* 0xe3 */ - NULL, /* 0xe4 */ - NULL, /* 0xe5 */ - NULL, /* 0xe6 */ - NULL, /* 0xe7 */ - NULL, /* 0xe8 */ - NULL, /* 0xe9 */ - NULL, /* 0xea */ - NULL, /* 0xeb */ - NULL, /* 0xec */ - NULL, /* 0xed */ - NULL, /* 0xee */ - NULL, /* 0xef */ - NULL, /* 0xf0 */ - NULL, /* 0xf1 */ - NULL, /* 0xf2 */ - NULL, /* 0xf3 */ - NULL, /* 0xf4 */ - NULL, /* 0xf5 */ - NULL, /* 0xf6 */ - NULL, /* 0xf7 */ - NULL, /* 0xf8 */ - NULL, /* 0xf9 */ - NULL, /* 0xfa */ - NULL, /* 0xfb */ - NULL, /* 0xfc */ - NULL, /* 0xfd */ - NULL, /* 0xfe */ - "{PI}" /* 0xff - A single character shaped as greek lowercase 'PI' */ -}; - -static const char *const basic_70[] = /* "BASIC 7.0" - supported by c128 & clones */ -{ - "END", /* 0x80 */ - "FOR", /* 0x81 */ - "NEXT", /* 0x82 */ - "DATA", /* 0x83 */ - "INPUT#", /* 0x84 */ - "INPUT", /* 0x85 */ - "DIM", /* 0x86 */ - "READ", /* 0x87 */ - "LET", /* 0x88 */ - "GOTO", /* 0x89 */ - "RUN", /* 0x8a */ - "IF", /* 0x8b */ - "RESTORE", /* 0x8c */ - "GOSUB", /* 0x8d */ - "RETURN", /* 0x8e */ - "REM", /* 0x8f */ - "STOP", /* 0x90 */ - "ON", /* 0x91 */ - "WAIT", /* 0x92 */ - "LOAD", /* 0x93 */ - "SAVE", /* 0x94 */ - "VERIFY", /* 0x95 */ - "DEF", /* 0x96 */ - "POKE", /* 0x97 */ - "PRINT#", /* 0x98 */ - "PRINT", /* 0x99 */ - "CONT", /* 0x9a */ - "LIST", /* 0x9b */ - "CLR", /* 0x9c */ - "CMD", /* 0x9d */ - "SYS", /* 0x9e */ - "OPEN", /* 0x9f */ - "CLOSE", /* 0xa0 */ - "GET", /* 0xa1 */ - "NEW", /* 0xa2 */ - "TAB(", /* 0xa3 */ - "TO", /* 0xa4 */ - "FN", /* 0xa5 */ - "SPC(", /* 0xa6 */ - "THEN", /* 0xa7 */ - "NOT", /* 0xa8 */ - "STEP", /* 0xa9 */ - "+", /* 0xaa */ - "-", /* 0xab */ - "*", /* 0xac */ - "/", /* 0xad */ - "^", /* 0xae */ - "AND", /* 0xaf */ - "OR", /* 0xb0 */ - ">", /* 0xb1 */ - "=", /* 0xb2 */ - "<", /* 0xb3 */ - "SGN", /* 0xb4 */ - "INT", /* 0xb5 */ - "ABS", /* 0xb6 */ - "USR", /* 0xb7 */ - "FRE", /* 0xb8 */ - "POS", /* 0xb9 */ - "SQR", /* 0xba */ - "RND", /* 0xbb */ - "LOG", /* 0xbc */ - "EXP", /* 0xbd */ - "COS", /* 0xbe */ - "SIN", /* 0xbf */ - "TAN", /* 0xc0 */ - "ATN", /* 0xc1 */ - "PEEK", /* 0xc2 */ - "LEN", /* 0xc3 */ - "STR$", /* 0xc4 */ - "VAL", /* 0xc5 */ - "ASC", /* 0xc6 */ - "CHR$", /* 0xc7 */ - "LEFT$", /* 0xc8 */ - "RIGHT$", /* 0xc9 */ - "MID$", /* 0xca */ - "GO", /* 0xcb */ - "RGR", /* 0xcc */ - "RCLR", /* 0xcd */ - NULL, /* 0xce - Prefix for additional tokens */ - "JOY", /* 0xcf */ - "RDOT" /* 0xd0 */ - "DEC", /* 0xd1 */ - "HEX$", /* 0xd2 */ - "ERR$", /* 0xd3 */ - "INSTR", /* 0xd4 */ - "ELSE", /* 0xd5 */ - "RESUME", /* 0xd6 */ - "TRAP", /* 0xd7 */ - "TRON", /* 0xd8 */ - "TROFF", /* 0xd9 */ - "SOUND", /* 0xda */ - "VOL", /* 0xdb */ - "AUTO", /* 0xdc */ - "PUDEF", /* 0xdd */ - "GRAPHIC", /* 0xde */ - "PAINT", /* 0xdf */ - "CHAR", /* 0xe0 */ - "BOX", /* 0xe1 */ - "CIRCLE", /* 0xe2 */ - "GSHAPE", /* 0xe3 */ - "SSHAPE", /* 0xe4 */ - "DRAW", /* 0xe5 */ - "LOCATE", /* 0xe6 */ - "COLOR", /* 0xe7 */ - "SCNCLR", /* 0xe8 */ - "SCALE", /* 0xe9 */ - "HELP", /* 0xea */ - "DO", /* 0xeb */ - "LOOP", /* 0xec */ - "EXIT", /* 0xed */ - "DIRECTORY", /* 0xee */ - "DSAVE", /* 0xef */ - "DLOAD", /* 0xf0 */ - "HEADER", /* 0xf1 */ - "SCRATCH", /* 0xf2 */ - "COLLECT", /* 0xf3 */ - "COPY", /* 0xf4 */ - "RENAME", /* 0xf5 */ - "BACKUP", /* 0xf6 */ - "DELETE", /* 0xf7 */ - "RENUMBER", /* 0xf8 */ - "KEY", /* 0xf9 */ - "MONITOR", /* 0xfa */ - "USING", /* 0xfb */ - "UNTIL", /* 0xfc */ - "WHILE", /* 0xfd */ - NULL, /* 0xfe - Prefix for additional tokens */ - "{PI}", /* 0xff - A single character shaped as greek lowercase 'PI' */ - NULL, /* 0xce00 */ - NULL, /* 0xce01 */ - "POT", /* 0xce02 */ - "BUMP", /* 0xce03 */ - "PEN", /* 0xce04 */ - "RSPPOS", /* 0xce05 */ - "RSPRITE", /* 0xce06 */ - "RSPCOLOR", /* 0xce07 */ - "XOR", /* 0xce08 */ - "RWINDOW", /* 0xce09 */ - "POINTER", /* 0xce0a */ - NULL, /* 0xfe00 */ - NULL, /* 0xfe01 */ - "BANK", /* 0xfe02 */ - "FILTER", /* 0xfe03 */ - "PLAY", /* 0xfe04 */ - "TEMPO", /* 0xfe05 */ - "MOVSPR", /* 0xfe06 */ - "SPRITE", /* 0xfe07 */ - "SPRCOLOR", /* 0xfe08 */ - "RREG", /* 0xfe09 */ - "ENVELOPE", /* 0xfe0a */ - "SLEEP", /* 0xfe0b */ - "CATALOG", /* 0xfe0c */ - "DOPEN", /* 0xfe0d */ - "APPEND", /* 0xfe0e */ - "DCLOSE", /* 0xfe0f */ - "BSAVE", /* 0xfe10 */ - "BLOAD", /* 0xfe11 */ - "RECORD", /* 0xfe12 */ - "CONCAT", /* 0xfe13 */ - "DVERIFY", /* 0xfe14 */ - "DCLEAR", /* 0xfe15 */ - "SPRSAV", /* 0xfe16 */ - "COLLISION", /* 0xfe17 */ - "BEGIN", /* 0xfe18 */ - "BEND", /* 0xfe19 */ - "WINDOW", /* 0xfe1a */ - "BOOT", /* 0xfe1b */ - "WIDTH", /* 0xfe1c */ - "SPRDEF", /* 0xfe1d */ - "QUIT", /* 0xfe1e */ - "STASH", /* 0xfe1f */ - NULL, /* 0xfe20 */ - "FETCH", /* 0xfe21 */ - NULL, /* 0xfe22 */ - "SWAP", /* 0xfe23 */ - "OFF", /* 0xfe24 */ - "FAST", /* 0xfe25 */ - "SLOW" /* 0xfe26 */ -}; - -static const char *const basic_100[] = /* "BASIC 10.0" - supported by c65 & clones */ -{ - "END", /* 0x80 */ - "FOR", /* 0x81 */ - "NEXT", /* 0x82 */ - "DATA", /* 0x83 */ - "INPUT#", /* 0x84 */ - "INPUT", /* 0x85 */ - "DIM", /* 0x86 */ - "READ", /* 0x87 */ - "LET", /* 0x88 */ - "GOTO", /* 0x89 */ - "RUN", /* 0x8a */ - "IF", /* 0x8b */ - "RESTORE", /* 0x8c */ - "GOSUB", /* 0x8d */ - "RETURN", /* 0x8e */ - "REM", /* 0x8f */ - "STOP", /* 0x90 */ - "ON", /* 0x91 */ - "WAIT", /* 0x92 */ - "LOAD", /* 0x93 */ - "SAVE", /* 0x94 */ - "VERIFY", /* 0x95 */ - "DEF", /* 0x96 */ - "POKE", /* 0x97 */ - "PRINT#", /* 0x98 */ - "PRINT", /* 0x99 */ - "CONT", /* 0x9a */ - "LIST", /* 0x9b */ - "CLR", /* 0x9c */ - "CMD", /* 0x9d */ - "SYS", /* 0x9e */ - "OPEN", /* 0x9f */ - "CLOSE", /* 0xa0 */ - "GET", /* 0xa1 */ - "NEW", /* 0xa2 */ - "TAB(", /* 0xa3 */ - "TO", /* 0xa4 */ - "FN", /* 0xa5 */ - "SPC(", /* 0xa6 */ - "THEN", /* 0xa7 */ - "NOT", /* 0xa8 */ - "STEP", /* 0xa9 */ - "+", /* 0xaa */ - "-", /* 0xab */ - "*", /* 0xac */ - "/", /* 0xad */ - "^", /* 0xae */ - "AND", /* 0xaf */ - "OR", /* 0xb0 */ - ">", /* 0xb1 */ - "=", /* 0xb2 */ - "<", /* 0xb3 */ - "SGN", /* 0xb4 */ - "INT", /* 0xb5 */ - "ABS", /* 0xb6 */ - "USR", /* 0xb7 */ - "FRE", /* 0xb8 */ - "POS", /* 0xb9 */ - "SQR", /* 0xba */ - "RND", /* 0xbb */ - "LOG", /* 0xbc */ - "EXP", /* 0xbd */ - "COS", /* 0xbe */ - "SIN", /* 0xbf */ - "TAN", /* 0xc0 */ - "ATN", /* 0xc1 */ - "PEEK", /* 0xc2 */ - "LEN", /* 0xc3 */ - "STR$", /* 0xc4 */ - "VAL", /* 0xc5 */ - "ASC", /* 0xc6 */ - "CHR$", /* 0xc7 */ - "LEFT$", /* 0xc8 */ - "RIGHT$", /* 0xc9 */ - "MID$", /* 0xca */ - "GO", /* 0xcb */ - "RGR", /* 0xcc */ - "RCLR", /* 0xcd */ - NULL, /* 0xce - Prefix for additional tokens */ - "JOY", /* 0xcf */ - "RDOT" /* 0xd0 */ - "DEC", /* 0xd1 */ - "HEX$", /* 0xd2 */ - "ERR$", /* 0xd3 */ - "INSTR", /* 0xd4 */ - "ELSE", /* 0xd5 */ - "RESUME", /* 0xd6 */ - "TRAP", /* 0xd7 */ - "TRON", /* 0xd8 */ - "TROFF", /* 0xd9 */ - "SOUND", /* 0xda */ - "VOL", /* 0xdb */ - "AUTO", /* 0xdc */ - "PUDEF", /* 0xdd */ - "GRAPHIC", /* 0xde */ - "PAINT", /* 0xdf */ - "CHAR", /* 0xe0 */ - "BOX", /* 0xe1 */ - "CIRCLE", /* 0xe2 */ - "PASTE", /* 0xe3 */ - "CUT", /* 0xe4 */ - "LINE", /* 0xe5 */ - "LOCATE", /* 0xe6 */ - "COLOR", /* 0xe7 */ - "SCNCLR", /* 0xe8 */ - "SCALE", /* 0xe9 */ - "HELP", /* 0xea */ - "DO", /* 0xeb */ - "LOOP", /* 0xec */ - "EXIT", /* 0xed */ - "DIR", /* 0xee */ - "DSAVE", /* 0xef */ - "DLOAD", /* 0xf0 */ - "HEADER", /* 0xf1 */ - "SCRATCH", /* 0xf2 */ - "COLLECT", /* 0xf3 */ - "COPY", /* 0xf4 */ - "RENAME", /* 0xf5 */ - "BACKUP", /* 0xf6 */ - "DELETE", /* 0xf7 */ - "RENUMBER", /* 0xf8 */ - "KEY", /* 0xf9 */ - "MONITOR", /* 0xfa */ - "USING", /* 0xfb */ - "UNTIL", /* 0xfc */ - "WHILE", /* 0xfd */ - NULL, /* 0xfe - Prefix for additional tokens */ - "{PI}", /* 0xff - A single character shaped as greek lowercase 'PI' */ - NULL, /* 0xce00 */ - NULL, /* 0xce01 */ - "POT", /* 0xce02 */ - "BUMP", /* 0xce03 */ - "PEN", /* 0xce04 */ - "RSPPOS", /* 0xce05 */ - "RSPRITE", /* 0xce06 */ - "RSPCOLOR", /* 0xce07 */ - "XOR", /* 0xce08 */ - "RWINDOW", /* 0xce09 */ - "POINTER", /* 0xce0a */ - NULL, /* 0xfe00 */ - NULL, /* 0xfe01 */ - "BANK", /* 0xfe02 */ - "FILTER", /* 0xfe03 */ - "PLAY", /* 0xfe04 */ - "TEMPO", /* 0xfe05 */ - "MOVSPR", /* 0xfe06 */ - "SPRITE", /* 0xfe07 */ - "SPRCOLOR", /* 0xfe08 */ - "RREG", /* 0xfe09 */ - "ENVELOPE", /* 0xfe0a */ - "SLEEP", /* 0xfe0b */ - "CATALOG", /* 0xfe0c */ - "DOPEN", /* 0xfe0d */ - "APPEND", /* 0xfe0e */ - "DCLOSE", /* 0xfe0f */ - "BSAVE", /* 0xfe10 */ - "BLOAD", /* 0xfe11 */ - "RECORD", /* 0xfe12 */ - "CONCAT", /* 0xfe13 */ - "DVERIFY", /* 0xfe14 */ - "DCLEAR", /* 0xfe15 */ - "SPRSAV", /* 0xfe16 */ - "COLLISION", /* 0xfe17 */ - "BEGIN", /* 0xfe18 */ - "BEND", /* 0xfe19 */ - "WINDOW", /* 0xfe1a */ - "BOOT", /* 0xfe1b */ - "WIDTH", /* 0xfe1c */ - "SPRDEF", /* 0xfe1d */ - "QUIT", /* 0xfe1e */ - "DMA", /* 0xfe1f */ - NULL, /* 0xfe20 */ - "DMA", /* 0xfe21 */ - NULL, /* 0xfe22 */ - "DMA", /* 0xfe23 */ - "OFF", /* 0xfe24 */ - "FAST", /* 0xfe25 */ - "SLOW", /* 0xfe26 */ - "TYPE", /* 0xfe27 */ - "BVERIFY", /* 0xfe28 */ - "ECTORY", /* 0xfe29 */ - "ERASE", /* 0xfe2a */ - "FIND", /* 0xfe2b */ - "CHANGE", /* 0xfe2c */ - "SET", /* 0xfe2d */ - "SCREEN", /* 0xfe2e */ - "POLYGON", /* 0xfe2f */ - "ELLIPSE", /* 0xfe30 */ - "VIEWPORT", /* 0xfe31 */ - "GCOPY", /* 0xfe32 */ - "PEN", /* 0xfe33 */ - "PALETTE", /* 0xfe34 */ - "DMODE", /* 0xfe35 */ - "DPAT", /* 0xfe36 */ - "PIC", /* 0xfe37 */ - "GENLOCK", /* 0xfe38 */ - "FOREGROUND", /* 0xfe39 */ - NULL, /* 0xfe3a */ - "BACKGROUND", /* 0xfe3b */ - "BORDER", /* 0xfe3c */ - "HIGHLIGHT" /* 0xfe3d */ -}; - -#endif - - - -/*************************************************************************** - COCO BASIC -***************************************************************************/ - -static const basictoken_tableent cocobas_tokenents[] = -{ - { 0x00, 0x80, cocobas_statements, ARRAY_LENGTH(cocobas_statements) }, - { 0xff, 0x80, cocobas_functions, ARRAY_LENGTH(cocobas_functions) } -}; - -static const basictokens cocobas_tokens = -{ - 0x2600, - 3, - TRUE, - cocobas_tokenents, - ARRAY_LENGTH(cocobas_tokenents) -}; - -static imgtoolerr_t cocobas_readfile(imgtool_partition *partition, const char *filename, - const char *fork, imgtool_stream *destf) -{ - return basic_readfile(&cocobas_tokens, partition, filename, fork, destf); -} - -static imgtoolerr_t cocobas_writefile(imgtool_partition *partition, const char *filename, - const char *fork, imgtool_stream *sourcef, option_resolution *opts) -{ - return basic_writefile(&cocobas_tokens, partition, filename, fork, sourcef, opts); -} - -void filter_cocobas_getinfo(UINT32 state, union filterinfo *info) -{ - switch(state) - { - case FILTINFO_STR_NAME: info->s = "cocobas"; break; - case FILTINFO_STR_HUMANNAME: info->s = "CoCo Tokenized Basic Files"; break; - case FILTINFO_PTR_READFILE: info->read_file = cocobas_readfile; break; - case FILTINFO_PTR_WRITEFILE: info->write_file = cocobas_writefile; break; - } -} - - - -/*************************************************************************** - DRAGON BASIC -***************************************************************************/ - -static const basictoken_tableent dragonbas_tokenents[] = -{ - { 0x00, 0x80, dragonbas_statements, ARRAY_LENGTH(dragonbas_statements) }, - { 0xff, 0x80, dragonbas_functions, ARRAY_LENGTH(dragonbas_functions) } -}; - -static const basictokens dragonbas_tokens = -{ - 0x2600, - 4, - TRUE, - dragonbas_tokenents, - ARRAY_LENGTH(dragonbas_tokenents) -}; - -static imgtoolerr_t dragonbas_readfile(imgtool_partition *partition, const char *filename, - const char *fork, imgtool_stream *destf) -{ - return basic_readfile(&dragonbas_tokens, partition, filename, fork, destf); -} - -static imgtoolerr_t dragonbas_writefile(imgtool_partition *partition, const char *filename, - const char *fork, imgtool_stream *sourcef, option_resolution *opts) -{ - return basic_writefile(&dragonbas_tokens, partition, filename, fork, sourcef, opts); -} - -void filter_dragonbas_getinfo(UINT32 state, union filterinfo *info) -{ - switch(state) - { - case FILTINFO_STR_NAME: info->s = "dragonbas"; break; - case FILTINFO_STR_HUMANNAME: info->s = "Dragon Tokenized Basic Files"; break; - case FILTINFO_PTR_READFILE: info->read_file = dragonbas_readfile; break; - case FILTINFO_PTR_WRITEFILE: info->write_file = dragonbas_writefile; break; - } -} - - - -/*************************************************************************** - VZBASIC -***************************************************************************/ - -static const basictoken_tableent vzbas_tokenents[] = -{ - { 0x00, 0x80, vzbas, ARRAY_LENGTH(vzbas) } -}; - - - -static const basictokens vzbas_tokens = -{ - 0x7ae9, - 0, - FALSE, - vzbas_tokenents, - ARRAY_LENGTH(vzbas_tokenents) -}; - -static imgtoolerr_t vzbas_readfile(imgtool_partition *partition, const char *filename, - const char *fork, imgtool_stream *destf) -{ - return basic_readfile(&vzbas_tokens, partition, filename, fork, destf); -} - -static imgtoolerr_t vzbas_writefile(imgtool_partition *partition, const char *filename, - const char *fork, imgtool_stream *sourcef, option_resolution *opts) -{ - return basic_writefile(&vzbas_tokens, partition, filename, fork, sourcef, opts); -} - -void filter_vzbas_getinfo(UINT32 state, union filterinfo *info) -{ - switch(state) - { - case FILTINFO_STR_NAME: info->s = "vzbas"; break; - case FILTINFO_STR_HUMANNAME: info->s = "Laser/VZ Tokenized Basic Files"; break; - case FILTINFO_PTR_READFILE: info->read_file = vzbas_readfile; break; - case FILTINFO_PTR_WRITEFILE: info->write_file = vzbas_writefile; break; - } -} - - - -/*************************************************************************** - BML3 BASIC -***************************************************************************/ - -static const basictoken_tableent bml3bas_tokenents[] = -{ - { 0x00, 0x80, bml3bas_statements, ARRAY_LENGTH(bml3bas_statements) }, - { 0xff, 0x80, bml3bas_functions, ARRAY_LENGTH(bml3bas_functions) } -}; - -static const basictokens bml3bas_tokens = -{ - 0x2600, - 3, - TRUE, - bml3bas_tokenents, - ARRAY_LENGTH(bml3bas_tokenents) -}; - -static imgtoolerr_t bml3bas_readfile(imgtool_partition *partition, const char *filename, - const char *fork, imgtool_stream *destf) -{ - return basic_readfile(&bml3bas_tokens, partition, filename, fork, destf); -} - -static imgtoolerr_t bml3bas_writefile(imgtool_partition *partition, const char *filename, - const char *fork, imgtool_stream *sourcef, option_resolution *opts) -{ - return basic_writefile(&bml3bas_tokens, partition, filename, fork, sourcef, opts); -} - -void filter_bml3bas_getinfo(UINT32 state, union filterinfo *info) -{ - switch(state) - { - case FILTINFO_STR_NAME: info->s = "bml3bas"; break; - case FILTINFO_STR_HUMANNAME: info->s = "Basic Master Level 3 Tokenized Basic Files"; break; - case FILTINFO_PTR_READFILE: info->read_file = bml3bas_readfile; break; - case FILTINFO_PTR_WRITEFILE: info->write_file = bml3bas_writefile; break; - } -} |