summaryrefslogtreecommitdiffstatshomepage
path: root/src/mess/tools/imgtool/filtbas.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/mess/tools/imgtool/filtbas.c')
-rw-r--r--src/mess/tools/imgtool/filtbas.c3115
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;
- }
-}