From 9d1ce7321f27d47b76cba907127af777d6672188 Mon Sep 17 00:00:00 2001 From: "B. Watson" Date: Thu, 13 Jun 2024 15:30:33 -0400 Subject: major surgery: callback API, port dumpbas to use callbacks, add vxrefbas. --- bas.h | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) (limited to 'bas.h') diff --git a/bas.h b/bas.h index 9d117cc..eb3f4e5 100644 --- a/bas.h +++ b/bas.h @@ -42,6 +42,10 @@ #define CMD_REM 0x00 #define CMD_DATA 0x01 #define CMD_ERROR 0x37 +#define CMD_FOR 0x08 +#define CMD_NEXT 0x09 +#define CMD_LET 0x06 +#define CMD_ILET 0x36 #define OP_GOTO 0x17 #define OP_GOSUB 0x18 #define OP_THEN 0x1b @@ -56,6 +60,26 @@ #define TYPE_ARRAY 1 #define TYPE_STRING 2 +/* callbacks */ +#define CALLBACK(x) void x(unsigned int lineno, unsigned int pos, unsigned int tok, unsigned int end) +#define CALLBACK_PTR(x) void (*x)(unsigned int lineno, unsigned int pos, unsigned int tok, unsigned int end) +#define walk_all_code() walk_code(0, 32768) + +void walk_code(unsigned int startlineno, unsigned int endlineno); +unsigned char get_vartype(unsigned char tok); + +extern CALLBACK_PTR(on_start_line); +extern CALLBACK_PTR(on_bad_line_length); +extern CALLBACK_PTR(on_end_line); +extern CALLBACK_PTR(on_start_stmt); +extern CALLBACK_PTR(on_end_stmt); +extern CALLBACK_PTR(on_cmd_token); +extern CALLBACK_PTR(on_text); +extern CALLBACK_PTR(on_exp_token); +extern CALLBACK_PTR(on_var_token); +extern CALLBACK_PTR(on_string_const); +extern CALLBACK_PTR(on_num_const); + /* BASIC 14-byte header values */ extern unsigned short lomem; extern unsigned short vntp; -- cgit v1.2.3