summaryrefslogblamecommitdiff
path: root/src/user/app/kbasic/basic.h
blob: 0cc5f0c4c8daee2cca8f49e193d6f6e7d91e4ae1 (plain) (tree)




































                                                                
                































                                                                      
                               





                   
/* A tiny BASIC interpreter */

/*
   Thank the Internet for providing me with this program.
   Please report any bugs/security holes to: katchup@adnab.fr.nf
*/

#ifndef DEF_BASIC_H
#define DEF_BASIC_H


// Token types
#define DELIMITER  1
#define VARIABLE  2
#define NUMBER    3
#define COMMAND   4
#define STRING	  5
#define QUOTE	  6

// Keywords
#define EOL   98	// Special characters
#define FINISHED  99
#define IF    1		// Control structures
#define THEN  2
#define FOR   3
#define NEXT  4
#define TO    5
#define GOTO  6
#define GOSUB 7
#define RETURN 8
#define END 9
#define EXEC 10
#define LOAD 11
#define RUN 12
#define LIST 13
#define PRINT 20		// Built-in commands
#define INPUT 21
#define COLOR 22
#define RND 50			// Built-in functions

// Buffer size definitions
#define TOK_LEN 80		
#define LAB_LEN 10 		// Control structures
#define NUM_LAB 100
#define FOR_NEST 25
#define SUB_NEST 25

// Lexer
extern char *program;		// Data for program
extern char *prog_ip;		// Program instructino pointer
extern char token[TOK_LEN];
extern int token_type, tok;
int get_token();
void putback();
void find_eol();
char *load_file(char *fname);

// Data structures
int* find_var(char *s);	// returns a pointer to the variable

// Program structure
void init();
extern char *interp_name;	/* given by command line argument 0 */
void load_program(char *);	// load and scan labels
void insert_line(char *l, int n);	// add line to program
int start(char *entry);		// start execution at given point
void serror(int);

// BASIC commands
void exec_print(), input();
void color(); void set_color();
void assignment();
void get_exp(int*);


#endif