From 767a8f02606849acee05985dd89020eb126f4799 Mon Sep 17 00:00:00 2001 From: no Date: Sat, 7 Nov 2020 20:23:59 -0800 Subject: [PATCH 01/15] Added Windows build Added some #defines to allow Windows builds. Added arch/windows. --- Windows/BASIC.sln | 31 +++++++ Windows/BASIC.vcxproj | 160 ++++++++++++++++++++++++++++++++++ Windows/BASIC.vcxproj.filters | 55 ++++++++++++ Windows/BASIC.vcxproj.user | 4 + arch/windows/arch.c | 110 +++++++++++++++++++++++ arch/windows/error.c | 34 ++++++++ arch/windows/kbhit.c | 9 ++ arch/windows/main.c | 120 +++++++++++++++++++++++++ include/arch.h | 2 + include/usingwin.h | 10 +++ src/array.c | 1 + src/dictionary.c | 8 +- src/parser.c | 49 +++++++++-- src/tokenizer.c | 10 +++ src/variables.c | 12 +-- 15 files changed, 600 insertions(+), 15 deletions(-) create mode 100644 Windows/BASIC.sln create mode 100644 Windows/BASIC.vcxproj create mode 100644 Windows/BASIC.vcxproj.filters create mode 100644 Windows/BASIC.vcxproj.user create mode 100644 arch/windows/arch.c create mode 100644 arch/windows/error.c create mode 100644 arch/windows/kbhit.c create mode 100644 arch/windows/main.c create mode 100644 include/usingwin.h diff --git a/Windows/BASIC.sln b/Windows/BASIC.sln new file mode 100644 index 0000000..9811ee2 --- /dev/null +++ b/Windows/BASIC.sln @@ -0,0 +1,31 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 16 +VisualStudioVersion = 16.0.30611.23 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "BASIC", "BASIC.vcxproj", "{EBBF5532-8DA0-4B71-9EF7-89C7824F88D8}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|x64 = Debug|x64 + Debug|x86 = Debug|x86 + Release|x64 = Release|x64 + Release|x86 = Release|x86 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {EBBF5532-8DA0-4B71-9EF7-89C7824F88D8}.Debug|x64.ActiveCfg = Debug|x64 + {EBBF5532-8DA0-4B71-9EF7-89C7824F88D8}.Debug|x64.Build.0 = Debug|x64 + {EBBF5532-8DA0-4B71-9EF7-89C7824F88D8}.Debug|x86.ActiveCfg = Debug|Win32 + {EBBF5532-8DA0-4B71-9EF7-89C7824F88D8}.Debug|x86.Build.0 = Debug|Win32 + {EBBF5532-8DA0-4B71-9EF7-89C7824F88D8}.Release|x64.ActiveCfg = Release|x64 + {EBBF5532-8DA0-4B71-9EF7-89C7824F88D8}.Release|x64.Build.0 = Release|x64 + {EBBF5532-8DA0-4B71-9EF7-89C7824F88D8}.Release|x86.ActiveCfg = Release|Win32 + {EBBF5532-8DA0-4B71-9EF7-89C7824F88D8}.Release|x86.Build.0 = Release|Win32 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {6C82D241-BA84-4707-A390-675647BE8056} + EndGlobalSection +EndGlobal diff --git a/Windows/BASIC.vcxproj b/Windows/BASIC.vcxproj new file mode 100644 index 0000000..18ba40f --- /dev/null +++ b/Windows/BASIC.vcxproj @@ -0,0 +1,160 @@ + + + + + Debug + Win32 + + + Release + Win32 + + + Debug + x64 + + + Release + x64 + + + + 16.0 + Win32Proj + {ebbf5532-8da0-4b71-9ef7-89c7824f88d8} + BASIC + 10.0 + + + + Application + true + v142 + Unicode + + + Application + false + v142 + true + Unicode + + + Application + true + v142 + Unicode + + + Application + false + v142 + true + Unicode + + + + + + + + + + + + + + + + + + + + + true + + + false + + + true + + + false + + + + Level3 + true + WIN32;_DEBUG;_CONSOLE;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) + true + ../include + CompileAsC + + + Console + true + + + + + Level3 + true + true + true + WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + + + Console + true + true + true + + + + + Level3 + true + _DEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + + + Console + true + + + + + Level3 + true + true + true + NDEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + + + Console + true + true + true + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Windows/BASIC.vcxproj.filters b/Windows/BASIC.vcxproj.filters new file mode 100644 index 0000000..1cd4d08 --- /dev/null +++ b/Windows/BASIC.vcxproj.filters @@ -0,0 +1,55 @@ + + + + + {4FC737F1-C7A5-4376-A066-2A32D752A2FF} + cpp;c;cc;cxx;c++;cppm;ixx;def;odl;idl;hpj;bat;asm;asmx + + + {93995380-89BD-4b04-88EB-625FBE52EBFB} + h;hh;hpp;hxx;h++;hm;inl;inc;ipp;xsd + + + {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} + rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms + + + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + \ No newline at end of file diff --git a/Windows/BASIC.vcxproj.user b/Windows/BASIC.vcxproj.user new file mode 100644 index 0000000..88a5509 --- /dev/null +++ b/Windows/BASIC.vcxproj.user @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/arch/windows/arch.c b/arch/windows/arch.c new file mode 100644 index 0000000..5fdf551 --- /dev/null +++ b/arch/windows/arch.c @@ -0,0 +1,110 @@ +#define _GNU_SOURCE +#include "arch.h" +#include +#include +#include +//#include +#include + + int +arch_init(void) +{ + // stub + return 0; +} + + static char* +_get_path(void) +{ + static char* _path = NULL; + _path = getenv("BASIC_PATH"); + if (_path == NULL) { + _path = "."; + } + if(_path[strlen(_path)-1] == '/'){ + _path[strlen(_path)-1] = '\0'; + } + return _path; +} + + int +arch_load(char* name, arch_load_out_cb cb, void* context) +{ + char* filename = malloc(256); + sprintf(&filename, "%s/%s.bas", _get_path(), name); + FILE* fp = fopen(filename, "r"); + if(!fp){ + return 1; + } + char line[256]; + while(fgets(line, 256, fp) != NULL) { + cb(line, context); + } + fclose(fp); + free(filename); + return 0; +} + + int +arch_save(char* name, arch_save_cb cb, void* context) +{ + char* line; + char* filename = malloc(256); + sprintf(&filename, "%s/%s.bas", _get_path(), name); + + FILE* fp = fopen(filename, "w"); + if(!fp){ + return 1; + } + for(;;){ + uint16_t number = cb(&line, context); + if (line == NULL){ + break; + } + fprintf(fp, "%d %s\n",number, line); + } + fclose(fp); + + free(filename); + + return 0; +} + + int +arch_dir(arch_dir_out_cb cb, void* context) +{ + //char out[256]; + //snprintf(out, sizeof(out), "dir: %s", _get_path()); + //cb(out, 0, true, context); + + //struct stat stats; + //struct dirent *ent; + //DIR *dir; + //dir = opendir(_get_path()); + //while ((ent = readdir(dir)) != NULL) { + // char* name = ent->d_name; + // if (strlen(name)>4){ + // char *ext = name + strlen(name) - 4; + // if (strncmp(ext, ".bas", 4)==0){ + // snprintf(out,sizeof(out),"%s/%s", _get_path(), name); + // stat(out, &stats); + // name[strlen(name)-4] = '\0'; + // cb(name, stats.st_size, false, context); + // } + // } + //} + //closedir(dir); + + return 0; +} + + int +arch_delete(char* name){ + char* filename = malloc(256); + sprintf(&filename, "%s/%s.bas", _get_path(), name); + remove(filename); + free(filename); + return 0; +} + + diff --git a/arch/windows/error.c b/arch/windows/error.c new file mode 100644 index 0000000..a173494 --- /dev/null +++ b/arch/windows/error.c @@ -0,0 +1,34 @@ +#include +#include +//#include +#include +// or inttypes.h + +extern uint16_t __line; + +const char *last_error = NULL; + + void +error(const char *error_msg) +{ + void *array[10]; + size_t size; + //char **strings; + size_t i; + + last_error = error_msg; + + printf("--- ERROR: %d %s\n", __line, error_msg); + + //size = backtrace (array, 10); + //strings = backtrace_symbols (array, size); + + //printf ("SHOW %zd STACK FRAMES:\n", size); + + //for (i = 0; i < size; i++) + //{ + // printf (" %s\n", strings[i]); + //} + + //free (strings); +} diff --git a/arch/windows/kbhit.c b/arch/windows/kbhit.c new file mode 100644 index 0000000..05a04d7 --- /dev/null +++ b/arch/windows/kbhit.c @@ -0,0 +1,9 @@ +#include +#include +//#include +//#include +//#include + +int kbhit(void) { + return getchar(); +} diff --git a/arch/windows/main.c b/arch/windows/main.c new file mode 100644 index 0000000..9922725 --- /dev/null +++ b/arch/windows/main.c @@ -0,0 +1,120 @@ +#include +#include +//#include +//#include +#include +#include +#include +//https://github.com/MaJerle/lwmem + +#include "parser.h" + +extern bool __RUNNING; +extern bool __STOPPED; + +static void +sigint_handler(int signum) +{ + signal(SIGINT, sigint_handler); + if(__RUNNING){ + __RUNNING = false; + __STOPPED = true; + printf("STOP\n"); + fflush(stdout); + } +} + +static char * +readline_gets () +{ + char * line_read = readline (""); + + if (line_read && *line_read) { + add_history (line_read); + } + + return line_read; +} + +int out(int ch) +{ + putchar(ch); + return 1; +} + +int in(void) +{ + return getchar(); +} + +void repl(void) +{ + puts(" _ _ "); + puts("| |__ __ _ ___(_) ___ "); + puts("| '_ \\ / _` / __| |/ __|"); + puts("| |_) | (_| \\__ \\ | (__ "); + puts("|_.__/ \\__,_|___/_|\\___|"); + puts("(c) 2015-2016 Johan Van den Brande"); + + //using_history(); + + char input[1024]; + while ((gets(input)) != NULL ) + { + if (strcmp(input, "QUIT") == 0) { + memset(input, 0, 1024); + break; + } + + basic_eval(input); + + if (evaluate_last_error()) { + printf("ERROR: %s\n", evaluate_last_error()); + clear_last_error(); + } + + memset(input, 0, 1024); + } + + //clear_history(); +} + +void run(char *file_name){ + FILE* file = fopen(file_name, "r"); + + if (file == NULL) { + fprintf(stderr, "Can't open %s\n", file_name); + return; + } + + char line[tokenizer_string_length]; + while (fgets(line, sizeof(line), file)) { + if(line[strlen(line)-1]!='\n') + { + printf("ERROR: NO EOL\n"); + exit(1); + } + basic_eval(line); + } + fclose(file); + + basic_run(); +} + +int main(int argc, char *argv[]) +{ + signal(SIGINT, sigint_handler); + + basic_init(1024*8, 2048); + basic_register_io(out, in); + + if (argc > 1){ + run(argv[1]); + } else { + repl(); + } + + basic_destroy(); + + return EXIT_SUCCESS; +} diff --git a/include/arch.h b/include/arch.h index c9a68dc..46a88dc 100644 --- a/include/arch.h +++ b/include/arch.h @@ -5,11 +5,13 @@ #include #include +#ifndef _WIN32 #if ARCH==ARCH_XMEGA int asprintf(char **ret, const char *format, ...); float strtof(const char *restrict nptr, char **restrict endptr); char *strndup(const char *s1, size_t n); #endif +#endif int arch_init(void); diff --git a/include/usingwin.h b/include/usingwin.h new file mode 100644 index 0000000..2166fb9 --- /dev/null +++ b/include/usingwin.h @@ -0,0 +1,10 @@ +#ifndef __USINGWIN__ +#define __USINGWIN__ + +#ifdef _WIN32 +#define C_STRDUP _strdup +#else +#define C_STRDUP strdup +#endif + +#endif diff --git a/src/array.c b/src/array.c index b331e13..6995d3f 100644 --- a/src/array.c +++ b/src/array.c @@ -4,6 +4,7 @@ #include #include "array.h" +#include "usingwin.h" struct array { size_t element_size; diff --git a/src/dictionary.c b/src/dictionary.c index 0b29bcc..275a874 100644 --- a/src/dictionary.c +++ b/src/dictionary.c @@ -6,6 +6,7 @@ #include #include +#include "usingwin.h" typedef struct entry entry; struct entry @@ -15,12 +16,15 @@ struct entry void* value; }; - +#ifndef _WIN32 #if ARCH!=ARCH_XMEGA # define HASHSIZE 13 #else # define HASHSIZE 101 #endif +#else +# define HASHSIZE 13 +#endif struct dictionary { entry *hashtab[HASHSIZE]; @@ -83,7 +87,7 @@ dictionary_put(dictionary* d, char* name, void* value) if (element == NULL) { element = (entry*) malloc(sizeof(*element)); - if (element == NULL || (element->name = strdup(name)) == NULL) { + if (element == NULL || (element->name = C_STRDUP(name)) == NULL) { return; } hashval = hash(name); diff --git a/src/parser.c b/src/parser.c index 683f1ab..6a682ce 100644 --- a/src/parser.c +++ b/src/parser.c @@ -7,6 +7,7 @@ #include #include +#ifndef _WIN32 #if ARCH==ARCH_XMEGA # include @@ -20,6 +21,7 @@ void delay_ms(uint16_t count) { #else # include #endif +#endif // #include @@ -33,6 +35,8 @@ void delay_ms(uint16_t count) { #include "io.h" #include "parser.h" +#include "usingwin.h" + /* line = [number] statement [ : statement ] CR @@ -509,7 +513,12 @@ str_chr(basic_type* n, basic_type* rv) { rv->kind = kind_string; char *chr; +#ifdef _WIN32 + chr = malloc(16); + sprintf(&chr, "%c", (int)n->value.number); +#else asprintf(&chr, "%c", (int) n->value.number); +#endif rv->value.string = chr; rv->mallocd = true; return 0; @@ -529,7 +538,7 @@ str_mid(basic_type* str, basic_type* start, basic_type* length, basic_type* rv) _length = (int) length->value.number; if(_length+_start>strlen(source)) _length = strlen(source) - _start; } - char* string = strdup(&source[_start]); + char* string = C_STRDUP(&source[_start]); string[_length] = '\0'; rv->value.string = string; rv->mallocd = true; @@ -541,7 +550,7 @@ str_right(basic_type* str, basic_type* length, basic_type* rv) { rv->kind = kind_string; char* source = str->value.string; - rv->value.string = strdup(&source[strlen(source) - (int) length->value.number]); + rv->value.string = C_STRDUP(&source[strlen(source) - (int) length->value.number]); rv->mallocd = true; return 0; } @@ -550,7 +559,7 @@ static int str_left(basic_type* str, basic_type* length, basic_type* rv) { rv->kind = kind_string; - rv->value.string = strdup(str->value.string); + rv->value.string = C_STRDUP(str->value.string); rv->value.string[(int) length->value.number] = '\0'; rv->mallocd = true; return 0; @@ -800,7 +809,7 @@ string_term(void) switch (sym) { case T_STRING: - string = strdup(tokenizer_get_string()); + string = C_STRDUP(tokenizer_get_string()); accept(T_STRING); break; case T_VARIABLE_STRING: @@ -818,12 +827,12 @@ string_term(void) accept(T_LEFT_BANANA); size_t vector[5]; get_vector(vector,5); - string = strdup(variable_array_get_string(var_name, vector)); + string = C_STRDUP(variable_array_get_string(var_name, vector)); expect(T_RIGHT_BANANA); } else { - string = strdup(variable_get_string(var_name)); + string = C_STRDUP(variable_get_string(var_name)); accept(T_VARIABLE_STRING); } break; @@ -838,7 +847,7 @@ string_term(void) { error("EXPECTED STRING TERM"); } - string = strdup(rv.value.string); + string = C_STRDUP(rv.value.string); if(rv.mallocd==true) free(rv.value.string); } } @@ -947,6 +956,7 @@ do_tab(basic_type* n, basic_type* rv) static int do_cls(basic_type* rv) { +#ifndef _WIN32 #if ARCH==ARCH_XMEGA basic_io_print("\x1b"); basic_io_print("E"); @@ -954,6 +964,10 @@ do_cls(basic_type* rv) basic_io_print("\033[2J"); basic_io_print("\033[0;0H"); #endif +#else + basic_io_print("\033[2J"); + basic_io_print("\033[0;0H"); +#endif rv->kind = kind_numeric; rv->value.number = 0; return 0; @@ -1631,11 +1645,15 @@ _dir_cb(char* name, size_t size, bool label, void* context) if (label) { printf("-- %-13s --\n", name); } else { +#ifndef _WIN32 # if ARCH==ARCH_XMEGA printf("> %-8s : %6d\n", name, size); # else printf("> %-8s : %6ld\n", name, size); # endif +#else + printf("> %-8s : %6ld\n", name, size); +#endif } } @@ -2029,6 +2047,7 @@ int do_sleep(basic_type* delay, basic_type* rv) { int milliseconds = delay->value.number; +#ifndef _WIN32 #if ARCH==ARCH_XMEGA delay_ms(milliseconds); @@ -2040,7 +2059,12 @@ int do_sleep(basic_type* delay, basic_type* rv) ts.tv_nsec = (milliseconds % 1000) * 1000000; nanosleep(&ts, NULL); -#endif +#endif + struct timespec ts; + ts.tv_sec = milliseconds / 1000; + ts.tv_nsec = (milliseconds % 1000) * 1000000; + nanosleep(&ts, NULL); +#endif rv->kind = kind_numeric; rv->value.number = 0; @@ -2057,6 +2081,7 @@ parse_line(void) break; } +#ifndef _WIN32 # if ARCH==ARCH_XMEGA if (kbhit()) { @@ -2074,6 +2099,7 @@ parse_line(void) } } # endif +#endif } } @@ -2593,16 +2619,23 @@ int str_str(basic_type* number, basic_type* rv) { rv->kind = kind_string; +#ifdef _WIN32 + rv->value.string = calloc(16, 1); + sprintf(&(rv->value.string), "%f", number->value.number); +#else asprintf(&(rv->value.string), "%f", number->value.number); +#endif rv->mallocd = true; return 0; } void dump_var(variable* var, void* context) { +#ifndef _WIN32 #if ARCH!=ARCH_XMEGA variable_dump(var); #endif +#endif } int diff --git a/src/tokenizer.c b/src/tokenizer.c index 6c14fa0..773ef4b 100644 --- a/src/tokenizer.c +++ b/src/tokenizer.c @@ -150,7 +150,12 @@ token tokenizer_get_next_token(void) l++; tokenizer_next_p++; } +#ifdef _WIN32 + char *number; + number = malloc(l + 1); +#else char number[l+1]; +#endif memset(number, 0, l+1); // strlcpy(number, tokenizer_p, sizeof(number) ); strncpy(number, tokenizer_p, l ); @@ -161,6 +166,11 @@ token tokenizer_get_next_token(void) sscanf(number, "%f", &f); // printf("Got float: '%f'\n", f); tokenizer_actual_number = f; + +#ifdef _WIN32 + free(number); +#endif + return T_NUMBER; } diff --git a/src/variables.c b/src/variables.c index a6845ad..2d694bb 100644 --- a/src/variables.c +++ b/src/variables.c @@ -8,6 +8,8 @@ #include #include +#include "usingwin.h" + typedef union { float num; @@ -97,7 +99,7 @@ variable_set_string(char* name, char* value) variable *var = dictionary_get(_dictionary, name); if(var==NULL){ var = (variable*) malloc(sizeof(variable)); - var->name = strdup(name); + var->name = C_STRDUP(name); var->type = variable_type_string; var->is_array = false; } else { @@ -105,7 +107,7 @@ variable_set_string(char* name, char* value) free(var->value.string); } } - var->value.string = strdup(value); + var->value.string = C_STRDUP(value); dictionary_put(_dictionary, name, var); return var; } @@ -117,7 +119,7 @@ variable_set_numeric(char* name, float value) variable *var = dictionary_get(_dictionary, name); if(var==NULL){ var = (variable*) malloc(sizeof(variable)); - var->name = strdup(name); + var->name = C_STRDUP(name); var->type = variable_type_numeric; var->is_array = false; } @@ -240,7 +242,7 @@ variable* variable_array_init(char* name, variable_type type, size_t dimensions, size_t* vector) { variable* var = (variable*) malloc(sizeof(variable)); - var->name = strdup(name); + var->name = C_STRDUP(name); var->is_array = true; var->type = type; var->nr_dimensions = dimensions; @@ -274,7 +276,7 @@ variable_array_set_string(char *name, char *value, size_t* vector) size_t index = calc_index(var, vector); variable_value val; - val.string = strdup(value); + val.string = C_STRDUP(value); array_set(var->array, index, &val); return var; From b87b592c2065c31ee22cf036a9cf2202baf0fd4f Mon Sep 17 00:00:00 2001 From: no Date: Sat, 7 Nov 2020 20:36:56 -0800 Subject: [PATCH 02/15] Fixes Added clearing of array memory. Added set variable string/num to null/zero on creation. Added dummy string for instances where there should be an empty string and not an invalid pointer. Added "evaluating" mode to process lines with colons. --- arch/windows/main.c | 1 - src/array.c | 2 ++ src/parser.c | 25 ++++++++++++++++++++++--- src/variables.c | 2 ++ 4 files changed, 26 insertions(+), 4 deletions(-) diff --git a/arch/windows/main.c b/arch/windows/main.c index 9922725..ba8b920 100644 --- a/arch/windows/main.c +++ b/arch/windows/main.c @@ -5,7 +5,6 @@ #include #include #include -//https://github.com/MaJerle/lwmem #include "parser.h" diff --git a/src/array.c b/src/array.c index 6995d3f..35606d9 100644 --- a/src/array.c +++ b/src/array.c @@ -28,6 +28,8 @@ array_alloc(array* array, size_t size) { array->size = size; array->ptr = realloc(array->ptr, array->element_size * array->size); + // Always clear arrays + memset(array->ptr, 0, array->element_size * array->size); return array; } diff --git a/src/parser.c b/src/parser.c index 6a682ce..be319d9 100644 --- a/src/parser.c +++ b/src/parser.c @@ -37,6 +37,8 @@ void delay_ms(uint16_t count) { #include "usingwin.h" +char *_dummy = 0; + /* line = [number] statement [ : statement ] CR @@ -193,6 +195,7 @@ basic_putchar __putch = putchar; basic_getchar __getch = getchar; bool __RUNNING = false; +bool __EVALUATING = false; bool __REPL = true; bool __STOPPED = false; @@ -828,6 +831,8 @@ string_term(void) size_t vector[5]; get_vector(vector,5); string = C_STRDUP(variable_array_get_string(var_name, vector)); + if (string == NULL) string = &_dummy; + expect(T_RIGHT_BANANA); } else @@ -903,7 +908,8 @@ do_print(basic_type* rv) expression(&expr); expression_print(&expr); if (expr.type == expression_type_string){ - free(expr.value.string); + if (expr.value.string != &_dummy) + free(expr.value.string); } } @@ -2074,7 +2080,9 @@ int do_sleep(basic_type* delay, basic_type* rv) static void parse_line(void) { - while (sym != T_EOF && sym != T_COLON) { + while (sym != T_EOF + //&& sym != T_COLON + ) { bool ok = statement(); if ( ! ok ) { @@ -2111,6 +2119,9 @@ statement(void) case T_ERROR: error("STATEMENT ERROR"); break; + case T_COLON: + accept(sym); + break; default: { basic_function* bf = find_basic_function_by_type(sym, basic_function_type_keyword); @@ -2303,7 +2314,15 @@ basic_eval(char *line) lines_store( line_number, line); } } else { - parse_line(); + __EVALUATING = true; + while (__EVALUATING) + { + parse_line(); + accept(sym); + + if (sym == T_EOF || sym == T_ERROR) + __EVALUATING = false; + } } // printf("stack available: %" PRIu16 "\n", __stack_p); // printf("memory available: %" PRIu16 "\n", lines_memory_available() ); diff --git a/src/variables.c b/src/variables.c index 2d694bb..cfdd6a2 100644 --- a/src/variables.c +++ b/src/variables.c @@ -244,6 +244,8 @@ variable_array_init(char* name, variable_type type, size_t dimensions, size_t* v variable* var = (variable*) malloc(sizeof(variable)); var->name = C_STRDUP(name); var->is_array = true; + var->value.string = NULL; + var->value.num = 0; var->type = type; var->nr_dimensions = dimensions; var->dimensions[0] = vector[0] + 1; From 46a6e0889275505be5baad8c69a0877f8c9e3fdf Mon Sep 17 00:00:00 2001 From: no Date: Sat, 7 Nov 2020 20:42:32 -0800 Subject: [PATCH 03/15] Updated VS Project Added proper params for x64 and release builds. --- Windows/BASIC.vcxproj | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/Windows/BASIC.vcxproj b/Windows/BASIC.vcxproj index 18ba40f..251c760 100644 --- a/Windows/BASIC.vcxproj +++ b/Windows/BASIC.vcxproj @@ -102,8 +102,9 @@ true true true - WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) + WIN32;NDEBUG;_CONSOLE;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) true + ../include Console @@ -116,8 +117,9 @@ Level3 true - _DEBUG;_CONSOLE;%(PreprocessorDefinitions) + _DEBUG;_CONSOLE;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) true + ../include Console @@ -130,8 +132,9 @@ true true true - NDEBUG;_CONSOLE;%(PreprocessorDefinitions) + NDEBUG;_CONSOLE;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) true + ../include Console From e070e1d88ce6fabb2b89ce287218902437d7ad36 Mon Sep 17 00:00:00 2001 From: Johan Van den Brande Date: Mon, 9 Nov 2020 17:18:19 +0100 Subject: [PATCH 04/15] Use gcc-10 --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index f1ef482..dfd2c5d 100644 --- a/Makefile +++ b/Makefile @@ -4,7 +4,7 @@ BUILD_FOLDER = build/basic SOURCE_FOLDERS += ./arch/osx ./src -CC = gcc-4.8 +CC = gcc-10 CFLAGS = -g -Wall -Werror -std=c99 -lreadline -lm -DARCH_OSX=1 -DARCH_XMEGA=2 -DARCH=1 VPATH = $(SOURCE_FOLDERS) From ade7a2b7ee1ce5ab11ac1d20824c75802dc91405 Mon Sep 17 00:00:00 2001 From: Johan Van den Brande Date: Mon, 9 Nov 2020 17:21:02 +0100 Subject: [PATCH 05/15] Fix buffer overrun on next with name --- src/parser.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/parser.c b/src/parser.c index 0b9843d..9c9ff1c 100644 --- a/src/parser.c +++ b/src/parser.c @@ -1194,7 +1194,7 @@ do_next(basic_type* rv) accept(T_VARIABLE_NUMBER); if ( strcmp(var_name, f->variable_name) != 0 ) { - char _error[32]; + char _error[40]; snprintf(_error, sizeof(_error), "EXPECTED NEXT WITH %s, GOT %s", var_name, f->variable_name); error(_error); return 0; From 9a11d9d0d8a56ee41e5e7ef5d31f60bc09a5624f Mon Sep 17 00:00:00 2001 From: Johan Van den Brande Date: Mon, 9 Nov 2020 17:21:48 +0100 Subject: [PATCH 06/15] Fix check on maximum line length --- src/parser.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/parser.c b/src/parser.c index 9c9ff1c..f1c0bd1 100644 --- a/src/parser.c +++ b/src/parser.c @@ -2251,7 +2251,7 @@ basic_run(void) void basic_eval(char *line) { - if((strlen(line) > 0 && strlen(line)-1)>tokenizer_string_length) + if( (strlen(line) > 0 && (strlen(line)-1)>tokenizer_string_length)) { error("LINE TOO LONG"); return; From ed3f616bfd1abee31760eb75738885bbe15a14ca Mon Sep 17 00:00:00 2001 From: thecomputerguru <34247063+thecomputerguru@users.noreply.github.com> Date: Wed, 3 Dec 2025 21:21:24 -0800 Subject: [PATCH 07/15] Add files via upload --- arch/osx/arch.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/arch/osx/arch.c b/arch/osx/arch.c index f2b0d5e..31e2ff9 100644 --- a/arch/osx/arch.c +++ b/arch/osx/arch.c @@ -31,9 +31,9 @@ _get_path(void) arch_load(char* name, arch_load_out_cb cb, void* context) { char* filename; - asprintf(&filename, "%s/%s.bas", _get_path(), name); + asprintf(&filename, "%s/%s", _get_path(), name); FILE* fp = fopen(filename, "r"); - if(!fp){ + if(fp == NULL){ return 1; } char line[256]; From 30d6afdf519b7ad69cc761ac254dcc5a9b47fb49 Mon Sep 17 00:00:00 2001 From: thecomputerguru <34247063+thecomputerguru@users.noreply.github.com> Date: Wed, 3 Dec 2025 21:21:58 -0800 Subject: [PATCH 08/15] Add files via upload --- build/basic/arch.o | Bin 0 -> 13192 bytes build/basic/array.o | Bin 0 -> 6408 bytes build/basic/dictionary.o | Bin 0 -> 10016 bytes build/basic/error.o | Bin 0 -> 4872 bytes build/basic/hexdump.o | Bin 0 -> 4440 bytes build/basic/io.o | Bin 0 -> 4608 bytes build/basic/kbhit.o | Bin 0 -> 7104 bytes build/basic/lines.o | Bin 0 -> 13472 bytes build/basic/main.o | Bin 0 -> 10840 bytes build/basic/parser.o | Bin 0 -> 101088 bytes build/basic/tokenizer.o | Bin 0 -> 18368 bytes build/basic/variables.o | Bin 0 -> 20712 bytes 12 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 build/basic/arch.o create mode 100644 build/basic/array.o create mode 100644 build/basic/dictionary.o create mode 100644 build/basic/error.o create mode 100644 build/basic/hexdump.o create mode 100644 build/basic/io.o create mode 100644 build/basic/kbhit.o create mode 100644 build/basic/lines.o create mode 100644 build/basic/main.o create mode 100644 build/basic/parser.o create mode 100644 build/basic/tokenizer.o create mode 100644 build/basic/variables.o diff --git a/build/basic/arch.o b/build/basic/arch.o new file mode 100644 index 0000000000000000000000000000000000000000..76a42fcded139b6e66d1c956d4adc2458e2dba9a GIT binary patch literal 13192 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 literal 0 HcmV?d00001 diff --git a/build/basic/array.o b/build/basic/array.o new file mode 100644 index 0000000000000000000000000000000000000000..a8f25be89429c24b8aa1d10678deb11d320de486 GIT binary patch literal 6408 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 V96x;jwz7|4Kq#BKYJ5%m{{RVKNfrPA literal 0 HcmV?d00001 diff --git a/build/basic/dictionary.o b/build/basic/dictionary.o new file mode 100644 index 0000000000000000000000000000000000000000..4ab2f5dbb9d5054a4f49c1630290d38a7dd78ce8 GIT binary patch literal 10016 zcmb_h3viUx6~6y&ZnDXS&64m41$04C5VK1VX{mq<7+n=?YDtTQcHQj$$!^{3;yxfz z8I>S)n^BB*Y}M4qOk1r*tJ5iiLN(EL2%V`-oet9JE7QT28at(<)6$lfo^$Uxn}08% z)9LgM*?Z4-&iT%{=idMR5AJT;c&*E_1UE~p6_XO9LX0n%9Ea5~EM|%s;)8|@{@xKO zy&Ea*I(ek+3~DAWhzzuyY&akqUK<_gI8z!M8JA1OtkF{2nMi-zNsF|5hKuhEY&ugK zjiiP@@%|5Pij15Ll-?M5&s7?;hAnV%Sz}8^NYYv7%5UJjswkjq;%xu z9cRy;Exm!HrMDvkRb!D-+v$nRK|UQBX!mHVV`zxE-8WpUM%Bb@Z6MG((!cApDE{~$ z8XP@OtPYF^aTQY!ge*H2>NHi@KOz5nipwe}Y7Sz}r}AG`o^Gk*cx0d=jo?L(aCKnHX)#?;J8{xY%& zoa;3@0O^$4{S($h6(tKpzN4@_!{9TFRsY35X?aG=%X1tGeq0pmRJH!_E@n2+29r~1 zfs=E!HZjj5$TOl1F`?1Y(MV~=s0PA*HD$#DlcL2|y2z2_nFjd-&Xa5r#TJ0gJF*J4Pc%+D@wl z>fbdc3O0yp87FQA4qS9dPwned6DyEAqVk6I!(jxogC0^D=osBN&<2ceK_=_Yj)4N! z3zYr4PKn|V^~Kk}>ty|oXU%2vzn+8yDmPEDMx{M*8RT;c)0>#77za8|MUGUB>4e)( zSx8^M;{@s|w!*T?tqU{Jb<@e>bvLj{T~(0u=~opUXI{Cd{sR#%An;&?aIWQ@b1s1@ zb^;2yXfcFBw^rPvm=q=fRfApdfV#epM;^Fxg}OdzJtyHVC#<}+$wL@F5m~C)3sP0` z=$l8S5LGxc;ZcWby&5}yE&u~=E*!XiI(rp#ZchzLRaG*TDS)KRxN|9;+p0zrx8+e? zRR!o$4$@QY*@iZnO$BgQ&wU&qWu3I*dfIPZEf&2N3P zb~DJngs`6V;Yj%6ox*xH&nj)ZXj19}Wu|o~L$ijOA)t0XFy~%CT!ULkT!gc64YrfG zT#FG+eb9@JuEARyA&XbkY+Qp$m^wz((e{_4U5}xlSwr`iqwTMZw!bpk{>o@CaHeURdADQh>8R(tPL z8%^a!^X#&apW9+e(;8X{mm=7`y;XBj{-2@(C3Pm78@~X2uE7LV>zeBK^%13_gv+rI#cEx%Krbcj_iHZ0VnHm; zb}g?R97M2<1d*<)aW27zGU+-vmymST!V1z=ODjmPDw8&&r?s>JSAbiZ2G-C%Vp~d= zH>J3ANd;T5%r*x-t%VjAfLj+0tRcM_7S?O$EqZ=rvT^34Z;^|_-7Tk+ODqcusGqGG>Fpfm|LLy;z1(TSU zLzjfOunjCxtMdiHz0i`4hovmY>B3dz4#|1gJqcSyb(dlH895s|Ym1cF737Rf(sEtW z)GFtCu9m)I(tS+M4awTw(sM%kHp(?%<%&x;8t<2NcS`G)R@vxTBda}0IlUlrC`%PPp}Mj1FJKT?qOPsxTuvU+#FoOVdoresaOtP9E6F90Ov z3E6z3Y%IuWMd?2zYrx2NNH)0px@1j3*15e~RE~9?qO9H{eZA7XTh@nU-3PKUBx_!f z(>x!@y1V5!j10Qp!7nF znR{gIA!&IY4lB{uFKfR8VrZRbwe-F#-GA|Pd%C4{$Tb`GPbit~u|u6Z^Mzb7b6e<| z?9NO&8%yLvow0l>-jc9)*y-$c$4(IW)E#!TAToAuK}5T9wjIrj9kF!Lb{Iu7_D-R8 zWXQ3H;=;}pa(&7*s)x!SZm*M8(e1^8NXGKXLab91Gx=0^#!dv{$yiRLvzhKd8N!Fk zd@`FWR6-7>gq;@G-P94-uxeGHby@Jr;IcqVPobEx*L2$%JC}-s7|X?zYv4j@S-B$6 z(j91l?Y|}t_AOnpd|xJ>%w;p#V!oxA*_p~DS|F#iod;#U5R2c|vOSkA*zrO(2X0^p z?xcvPVFIj%s|ytIE{7~~*(_AA+b&E_5$B_3c@jxNqY5o%6iw{vi}*< zZ^pi?zp<>JhxZ3)>bbnE50~|;Nxu$_Sl_GED*iUo?{Vr~cWMK~rfBF=CH{PN3Kgsw z5jvFcr~zv_iSy%3gm9Mmp$YD{%HEHg02;q@EP^re+(P&|rPV)fwR;=@4c+>^?;M3& z)SZJN;D*;bvwai*+@EG!3qT{}^EN5?5fUH05uZs@4wHTx;T?qYGxKeLPsN`*58g*S zl5W-f_Hh4s>>nWe7P_GLRp@JkA0}MwF~If{{y5cH?G3>oilx%x+b~aTIDL3d6=&ds3bsL7H^lM%hwpTWEbup07IaMu+{^&x0Rx z;Ld!iXx)(C$>To{{+0uG=Kly1K*J7SFgX8l2aeYy<9|I5?#2Tg8mgW7G&^v7^<N5gTC(42;COyx>o)Kak~7p}hpF><_^@HmpAlX*a4*eQ{l^LTGY{Xteqz{j{=YVG z&i{`F{tC$#QXH;2d|WfpgqG1Lr!F416QR#`a~xIUm07 z95nC~bWR;Nc;=J*8^fOOYtzY(>%e&~FmS$3mJ!bRY$o|81OGh9QRd2d#?Y>2ELQlaoE7KH2vO8$iTlr{7)GCL@!=6?3w@j2F~kJO^!I<8YY3BpDj6mR^3Mf6AuuMWv9|BBy8YZ zhg%Jt>wk}d^L}{Rzk~;W7$9eL(7ofT_&gXO3!1;c0tAX?VNCfkJ zJ@`2#2+zg3Px2^dr(;3&At9KE6=EXTna_)$LKAjpu{)Z|bY(?Qk7J#kIeSNiI+lxN zy6s9A_~2->3&at@c(zBq^#?QXy(9>)@bJ9^zMlv!!=okS`&ej#rR$ z`#kM`mbo|MUk(c7{9pZ7g0IPmu{i#ZjXX@-RSM*lTOn`it|S*bN=fAGdTeg zOYvm|+CD>Rh@t~*Obq>Ar5Ax^C^(vF+YY*^@*lfUJF!3JkGY%qrvNiK(epiue=}a7 zj%L~>KsQx<5ztP&PcS~7d1m|~V93dN!ceu<_>u-~=Xv6D9`}IFRQ}(k7be`F&c=S+ zmq5v5r`^xV--+Saw0#UP+#*JrVx0T~pmR2!KVvV$069&6^%4nquMyDn-w!rZ)xS9a z3TPhk$NKwGMi3gW%apM}--|E3&=yl-DB_kj{qY^rymkQ+Pt%L(7z&PNOh>(QPvsw2 Npq&mmd~s;{{~P_@MBR#F^PP zso461B}*-)h*CxTK?GlX5Cj!bia)JB_y?js`XZ?HMSUq&t>@f1cQd`6;)4fv?m6H2 zz31M!clKcMwwp7G!UQR73tN-~%GiAGB0tXAaki4JV1M*o`sYro^`rIZuL}TMt@mfo zo;_Q!4tET#=W_A%$Z_lN6Np+Z4L$qbrUCG05O1BZj%-HFJNWnsAJ&oL%O7+j(>fUg z$E;Ry!8%-AXnlyv*0*g&Ws?Py+s#rF>-_hUh7&A1}@; z+i>>}ERG-UdzXKu4D4?e5`x;?a>gdqwUIY^F zr5HN6PRpuF7LC*lmsMp+EOA>NOkID83)qtElV}#}JCWzwj=|;of#)%l&VggVcfpS- zUA-reS5ZJ(l6@MUxK2#zX%{R?S6&zcEEj8+p{IKErvrSZO1=wq>d}RRvE0{faQ!1B z_jhmO`uT&sb*2oE_VfXkzaQ*S*N5Hcf)WnF2qwxp zDL0newhVHuWx3oIuz=A~Vtk4XDLZeNN`^!-cx%G@2DRHYDME!*V?e8FPcc4@?J7jWDWI+$pn$B}a2JZU`*w6@X!{8cle3 zF~T&3b;a|-f_s$gE-n9yrhcz=XVxy)ve~6tZ&g#Xd$n%(sgG%wvP_3MtZ6u8P3>Yn zRx}kxW!I~k@?K^Y%(dZrRh>WZ-3V)b5a~@XtXDm^qI0Oe-z|YA3hG`pj7w+S;T*HY zRu#nTw%)N*pBNj{M~2O7%wgS_j+&mkx$1guP%x^2Ode;KgpEYer0t}XLbR$+$DhF4~f4N#eDyv%tY^! z%o(tV@w6wnLeAgLrs>qw8xU*Z2k3b&D&yyC3Z7no8lQFM!o~XCBH^nk@7)qkBHJb5C9=0AJpS5ZtR~@Ny?hDZL~-^?IDWq&Jrob^zWq(| zQxd+C?4OhHdkB9`!q*c1riA}a@&`1cnK%;=`kZjFzQZJcLnGQJ*XxvIKSFuWNcfe6 z=V%o1w~{Q@N8szpU+e+I@f{N+&K7h}*7F7#$hb~8+9vIp31B12HSU*lluKz*6((->v`Ncg2 zW}IZ(2B2yA7bw5z6XwTzRL=h}U>H->2`s12F(}Z}QbHk$aUN{a{CCp}h5I{6!cUAx zK`Hp8-68T%V#v$3uK#MO!Wihe}pEC->2v+`{SOH-+h4CZZh0~LV_q<8^M~={Et)pAGIxGM)v;~ DMLST$ literal 0 HcmV?d00001 diff --git a/build/basic/hexdump.o b/build/basic/hexdump.o new file mode 100644 index 0000000000000000000000000000000000000000..e2a1305e95ebc239d8ea992a8d6d3d0285dce5b5 GIT binary patch literal 4440 zcmbtXU2IfE6rS1LX>Yr9`?CdFe(cpygy3!qDab#KW$l&_L}L?`m}Ys zIp6utnVB~gc`YJYq z&Fz~|9goe7%~roXQEVFxv)72MA^~H&Q!P?z4Sg%^{ zetmEyVDC@H8(eRXZfOt2#Ont@0W_fNm%H;bbON=a)ji7@aM9lyrq#@a#PSKOg+SAFpL4V<=_W zehnQzSr0X(e}$@`=BFHDPopiil_Df-45y3z15t<+uoxv3u740#Xc<;_la;;2*dVLa zhM3=B;g=Yol?PcxmX&LRtU)`%*j-ko0e+V?L2}RotPz{LEOe07UuO;PvCtIobXLEc zRe{ErWnpYUh0ShG_xbxA=102&tis>$Ib*G?ObfI6PF9g&{%07~ioTUF|DtKoC%q>H{75EYA2m~1t6&z2cBE(y<;--%NhI@z4NBWdr1~NQR>3h+PQd~*AcDD2 zr1A+nE7iGz35rz4Ba?>{O=S}n;gyI!;hWJizZZOAxI#Nyu$+ZU6zk{qX~Rwl4ziQQ zOop^%3;jk*atNkZH2Yfi7lzDyA(6IQk_kJPilmJ}BVQOGq_d-Ar@o;(Su~xZ2vwx5 z$i*!i1prxq1+R!2_~BuO;9?3+Am)c3mU_1#^wsAG9j>9Pmz8TLA)nR&jz26sMPs3w zcYGaHW&YC?D6XPJjj0$Qzs;3U!I-FBT>N}?rEq@XEK>NDBP0oa;(6pG2(6z~c_g=s z%sS6}q3_EmH1;~yhfo%5!WWmM$tjOoC89w z9vsJ&8TO=t3z4)d_!mO%RPbMgd`Q84VxHX!9u_#f2fWC2{U~I(Ef(O{gj`f`d~UG3 z<~ICfc;g`RNBR$maX%D%i8l#(TEW)}zKkLAF;`^4I|>WZyyI@==we(KIC8yw619)^ z!@Uo!W4Ucs_ADcxh&slwL!#+~lOWNgZIh@~a0RYS8_8mCPtME~fW!NVWYRJQfriEc zvJz&mfu{3VK4%)z1jZxLRH47$fQvn9!lM&~s}~*}c!Y%9YZjyM91R$jb5!^-vOO6q z(Qk-_{m(`RdyJ)ww{+JoI`Y1gxY!;klGV_|{b_%QxSb2)LfI}1@V>;Zd=cP#iI??I zBQD<=7bWC7bs(WoVfJC0(f87eG;J{ul7z zLXq}3e|)dh`M&~~>JuRHtr-6s6g)-c;&WMQ{8=%+%rhJx-*R<)d>_%LoF{a7`52u- z=~4!iqHK==rVpp~Q2gJ55;{X5v literal 0 HcmV?d00001 diff --git a/build/basic/io.o b/build/basic/io.o new file mode 100644 index 0000000000000000000000000000000000000000..35120743fbd9735818cf553a9cc1a1f922b6ff1f GIT binary patch literal 4608 zcmbtXU1%It6uz^Yo84rS-A&RYU0TbEt+C+FCK5wan>IAAomMSX2;@c9-Pze6yE_|Z zXWFz5lUX@=Vx`@Vg6l19c3IJIJRh%31h(5ZuAPDIv|tno zvp)Iy!ccP8W$YQiXW)naQDDJv2(^|LS}|?VSZTqOFxr9v<`QginbPWl%#(&+Lk|~Y zd4sL7a{$rs2k>kihsP)I3!y+ElJBE>6f87dk3L>5TKN7}2F{i}pl<(M{1Vr8^Ywhq3jMV035XsmN$# ze-HF)D~UvQg9kL8i_mEr0~F1zy~;phe~$uUh!RA?y#x_x)vzzop2V&MbV*hABt&-f z!lL6F-`|_S1QF^B2y7&z12TlgP!Q-`8}CIE5{-R1N-(0(_&rKb(GUr=1P5s^GTYT|(gD;g z+7C>bq7>O>s=RWLwuc=We3Q0ap>%{s-lYkLc1_X5McTHP_6*Y4W!i7kc(7Ka(Rtdo zi|)YCB7FqeDcTlH6lv@tZ6Bk`vw;9ixmq_%N%p{3E1R8mY}j&*%5fu$YRN!#+N#&4 zZNl6fvr#FTMj?s*`wmVfCq_q;Lxbv*>R>WevmMhID;cI?Rdi5umR=r%&ZS0%lc`cN z1$`OQ!9P{ZHIA8j*{Yj$r;&2ZqZPA|vUB;W(Eww^&gq9!P}MecyKX@kI6^o#=+#`K zEX-(DxdQ9~ zgXEoJ(Xg`EDbgs{Ej#H|#VWi>te9&?bd8Iffuzgznvu>Qg-JT*;q=q>qh__9D>Txq zW~yKuF{<@xLiSBe>`Xp3nRiUv;SEm>J4}6II|pE6xkqdqIG%m5K)44N@z}*Zh_u0F zL^=Kl&Ex`d&;9|kbJIEoso~ha zdw-n)fMC-b6LB2WV`Y?_BJgOb-Fj4BrYk<`MB1 zc;Lvt_`9crx0Br6=)G~ag(tsf_4b)~2MNJ(AmJH;C*0rnU7A1;2-g^IDS;nD5D0PX zn!p!9M#4OJZ3rCuf`m63#t0G}L>zr~b3+&B0*CXB5&L!lN#LhA4%Yx9RK0T$MSeW@kq)@btGk8Q73(AXxf_|1{D0CtpPf@~6j@Kl7isQC~ z7dZZgg#W?y(-I!%{+~+t3fHenxVZDblW?(bZc6w7&;JX@QN?u;{aTg$w{bnh<3vAS z<$9llk8*uN!hhv?4saZqe?Pn=`HTEj$zQyaxHph+JmQQ)UD)OP4jO@EJjqaZEdKF~ zOStF{Q5(lrwz+K#&a9xY|+Zq z3_hX%$&wI{Jrw;H>BhNmR{)&z<@3-@AmKSP?jf!)%|G8>=6E-7j1^yX@HxonQFtQm zUvo4J$%POEl3_eIFz0`b$8%oJ36NL+ZOJI9WC(nl&3}ncbb)U|oIjq6^8EJ#Cg%i* ze97Z}Ld8e2?Lk4}ZD9XNv0Bbh>GwiX6*q(GlZ1%)d3N$_bFZ}Jxc_otskoZxd{ z6tds%J^6*=M%nix!0}$^%k8E3kjE!I#1+K+1^hV(m{X2l;PK*q6#jDjMKCn$|5B6n zkAts>7wgijHr9&sPrM|bF#JJe^OWQ9TStC(F@BIcitiM}kmUY#0oE*@@DH9VEb75S Gj{gUtKp#i| literal 0 HcmV?d00001 diff --git a/build/basic/kbhit.o b/build/basic/kbhit.o new file mode 100644 index 0000000000000000000000000000000000000000..e9198a0be134433f1ddea0a5bf5f6fb2d11fb7bb GIT binary patch literal 7104 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
^Lp0qZ8_ck@ET556N-PM5NJ{a!- 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 literal 0 HcmV?d00001 From 676a0f78d83ccd50ed098935aa5b9ebd6b61812e Mon Sep 17 00:00:00 2001 From: thecomputerguru <34247063+thecomputerguru@users.noreply.github.com> Date: Wed, 3 Dec 2025 21:22:27 -0800 Subject: [PATCH 09/15] Add files via upload --- src/parser.c | 6 +----- src/tokenizer.c | 7 ++++--- 2 files changed, 5 insertions(+), 8 deletions(-) diff --git a/src/parser.c b/src/parser.c index 9a00dde..224730a 100644 --- a/src/parser.c +++ b/src/parser.c @@ -37,7 +37,7 @@ void delay_ms(uint16_t count) { #include "usingwin.h" -char *_dummy = 0; +static char _dummy = 0; /* line = [number] statement [ : statement ] CR @@ -2066,10 +2066,6 @@ int do_sleep(basic_type* delay, basic_type* rv) nanosleep(&ts, NULL); #endif - struct timespec ts; - ts.tv_sec = milliseconds / 1000; - ts.tv_nsec = (milliseconds % 1000) * 1000000; - nanosleep(&ts, NULL); #endif rv->kind = kind_numeric; diff --git a/src/tokenizer.c b/src/tokenizer.c index 773ef4b..36aedb1 100644 --- a/src/tokenizer.c +++ b/src/tokenizer.c @@ -132,13 +132,14 @@ token _find_registered(void) token tokenizer_get_next_token(void) { - if ( ! *tokenizer_p ) { + if ( tokenizer_p == NULL || *tokenizer_p == '\0') { return T_EOF; } // Skip white space while ( *tokenizer_p && isspace(*tokenizer_p) ) { tokenizer_p++; + //printf("%s\n",tokenizer_p); } // Check for number @@ -162,9 +163,9 @@ token tokenizer_get_next_token(void) number[l] = '\0'; tokenizer_p = tokenizer_next_p; float f; - // printf("[%s]\n", number); + //printf("[%s]\n", number); sscanf(number, "%f", &f); - // printf("Got float: '%f'\n", f); + //printf("Got float: '%f'\n", f); tokenizer_actual_number = f; #ifdef _WIN32 From 8df95df831f8e02e67726a7da239c6cdf8ae612a Mon Sep 17 00:00:00 2001 From: thecomputerguru <34247063+thecomputerguru@users.noreply.github.com> Date: Thu, 4 Dec 2025 22:50:42 -0800 Subject: [PATCH 10/15] Add files via upload --- arch/osx/arch.c | 31 ++++++++++++++++++++++++++++--- 1 file changed, 28 insertions(+), 3 deletions(-) diff --git a/arch/osx/arch.c b/arch/osx/arch.c index 31e2ff9..ef710a0 100644 --- a/arch/osx/arch.c +++ b/arch/osx/arch.c @@ -31,7 +31,15 @@ _get_path(void) arch_load(char* name, arch_load_out_cb cb, void* context) { char* filename; - asprintf(&filename, "%s/%s", _get_path(), name); + char* file_extension = strrchr(name, '.'); + if((file_extension == NULL) || (strcmp(file_extension,".bas") != 0)) + { + asprintf(&filename, "%s/%s.bas", _get_path(), name); + } + else + { + asprintf(&filename, "%s/%s", _get_path(), name); + } FILE* fp = fopen(filename, "r"); if(fp == NULL){ return 1; @@ -50,7 +58,16 @@ arch_save(char* name, arch_save_cb cb, void* context) { char* line; char* filename; - asprintf(&filename, "%s/%s.bas", _get_path(), name); + + char* file_extension = strrchr(name, '.'); + if((file_extension == NULL) || (strcmp(file_extension,".bas") != 0)) + { + asprintf(&filename, "%s/%s.bas", _get_path(), name); + } + else + { + asprintf(&filename, "%s/%s", _get_path(), name); + } FILE* fp = fopen(filename, "w"); if(!fp){ @@ -101,7 +118,15 @@ arch_dir(arch_dir_out_cb cb, void* context) int arch_delete(char* name){ char* filename; - asprintf(&filename, "%s/%s.bas", _get_path(), name); + char* file_extension = strrchr(name, '.'); + if((file_extension == NULL) || (strcmp(file_extension,".bas") != 0)) + { + asprintf(&filename, "%s/%s.bas", _get_path(), name); + } + else + { + asprintf(&filename, "%s/%s", _get_path(), name); + } remove(filename); free(filename); return 0; From 0ca58e45360f00cc56e3af4d254350dfb9dc6f90 Mon Sep 17 00:00:00 2001 From: thecomputerguru <34247063+thecomputerguru@users.noreply.github.com> Date: Thu, 4 Dec 2025 22:51:13 -0800 Subject: [PATCH 11/15] Add files via upload From 87d633368022d988fa2551fd3f3af7c99db84d1a Mon Sep 17 00:00:00 2001 From: thecomputerguru <34247063+thecomputerguru@users.noreply.github.com> Date: Sat, 11 Apr 2026 20:20:53 -0700 Subject: [PATCH 12/15] Add files via upload From 966f0d6a207603e704e100d709773ea5adceb89f Mon Sep 17 00:00:00 2001 From: thecomputerguru <34247063+thecomputerguru@users.noreply.github.com> Date: Sat, 11 Apr 2026 20:21:27 -0700 Subject: [PATCH 13/15] Add files via upload --- build/basic/arch.o | Bin 13192 -> 14128 bytes build/basic/basic | Bin 0 -> 126312 bytes build/basic/circle.bas | 7 +++++++ build/basic/test.3.bas | 1 + build/basic/test2.bas | 1 + 5 files changed, 9 insertions(+) create mode 100644 build/basic/basic create mode 100644 build/basic/circle.bas create mode 100644 build/basic/test.3.bas create mode 100644 build/basic/test2.bas diff --git a/build/basic/arch.o b/build/basic/arch.o index 76a42fcded139b6e66d1c956d4adc2458e2dba9a..db3857ca0a815f403b02da1366bba317cfd0c6cd 100644 GIT binary patch delta 4399 zcmZ`-4^R}>8Gmn&Lk<-W#9NjGIF36x4!Gr@6_NBRp@g;S6sk-}jNzY3bP`aYYFn-c zb!eoNnCmw-I88%w>P(#07DLGM6=>#(!d#TeINXGmz8v5Sud$>I6 zo4I}ae!uT~-|zeO+uPea+B(|yvRB$4i1^NjYcN7u|Aot6&ChH7f11#zl}?OwVDRe(ZJ6~Oxy9m`LplV8FO%iNPiT7M|I zq^4C-QT;4YKWnI;{eS9P?{f7~qCUpemoI@ca14eebpyQ;k5_ElRM}8dv0X!cw0L*rr>1FnX2S@|}q$`Xk(dllYZ;l=02Vk@p- z(hkroJJSCxQBQ=t#F7ploAWJ{#;3>bCcT86>9?%bgkftAlH%}d)+{rf@RgK@a=9=??{JPw*C>3k zFmr53Zp1cz5gvo7G#P)39-&A{!`t=s)B3SdKep<}=jl-ik!UFhqZC#<-fb`H>@mhZ z%PPt5h#`H45&d{tKc3Z(f7XxV^r%cS-&%4n(!uY}_n>3C(I}g2V)GeJlb~D@`OvW*aE7ex6j;5n z3A>N70bV!mo2h$}Yhj8-dzLG?3V{qc{4W!`#>DapQ56mozJk@4;<5>U!i1aieTLy& zm5un&vCF{2dYa}E^a&2U1V3ju4NSk}cp7H~dtQ|BhuB|PWWO9CC)tdSDVQVmkXeUN zD;mm0DKgv)rH`ni*Cfr=VdJ}H0->`xE5D%P3qmpsf@{2HrN_iGkhD8T{1+ScBPly zzx6Z<8HwaWni@S0I9pbJOAA599%EWyKZXEdOBmZFur1J(U9D_n7jZ~nFTq9Pi&?^> z0_%pkY!&|zvR$&Gu^navn`=-@*f7iGuE72bdR;QU4JTYGJ_A==)z|^aIkGa!)Hbk; zd8Y3}MUISLfTwa){9owLsm5WLBImCFcFVXG6t}7zV6il|2ls7+Cbz5%GqhP?--QU- zp$1O7tMSV)N6wFe&7&%}n1Xi%`*EoCsCYB2Lm6d~xZ57yCaDcF%vI_rDU^l`DVFws{MqtU)ZLNxb4>(s=ma+Xm6>Oe{ z0Abr%rgpXy*Iy1zxhkH9NUka&3I3Yv$8|7A9KOc385A6jLAF=MA3&M68XtsSuWb8- z1-=2bxiXyd+Lcqx=Z@fe4Q>+OAHWx0RjFix{H*=BAU{;($qIi&*9h!19LSTy8<=mK z!19Ogj|BV|%)X!DbV)_?9}#~L?B8Mbe;4pmMuUgZys#0kxt-nfJeg^>k(1#(a5gJU zjbPu-?w}olJ^wA#q2oIqd^zv{5n&^q!H9s@F+rmO&MW#hob}0@-Z!!Qxk8oQG~x8C z=>wL=#{yo#(zp-F`Eodw`~s&#EJ}%hbIp|k&b4h5aDKHr1f1u1#K2P)0@tyYehEhM zW#yFMR><1;4VWVATLQb2v6Fxc-Yn+V<2OcTdNY|D>XLxhTF3rV5Y%4_eExNbjTwxO zhkgEa()0Su0-W=cKO5rVLw}G?E;VR7#p*f@d(~1~V~*j~2&dIjDVzi!szK?qRp2TL zN)swHlPT8@CyRo%C+U-vj5F|2QK>Ymf-4YAjMHCp5VBceUtpcIG7U}!f>KEueG`Gt z172x;8n}vsQhgdUlPRGHP8J7k>*-Gb C#*Re* delta 3573 zcmZ`*4NP2B7Jm25@G~sspLski%ur@vIt;wdK*67OQd%ifY#T;PmhKu0w1Vy?Z7nsm z3K=j~J4KpK&uZG0C>W#7Za2b`#x{)`OpQ_+6?QkP$(k__B%Kf)jFiyn6*-aBti^f&*bL|f(~gAEJdN-kQqfI;SQ zEfU6908K8v3;(aLe_+#w9nJOIB2ty)?bf{A(mtcF>S*tl4oKczZf|#*wCmA*cjF&P zM^C})$!__&eS9)GD=F5=)^V?7J=C+I-AR&^%SWs;w+JgNCtCCLVVA=gwn;hqxal?r z-=b89hiZ}~DSu~&#F`3EBWO#U>M{H^dA>)5Eiv5V-1B(teu-^PEwXc9w%3TzoEg@~ z(>>0IcOxIo;l6B%vpr5+h{Wzsy&Hzoi&+btPj|Cl!l&uQvEXf4d~GBlv7x`=Oe1VC zo9B&QVtQ6VPoF*EX#BV42__VzuK-n_SeHQ{cP|H}qmtOqu4(D$YZ`Os2Y z%??AnRAX1*TsU9m+)Dg;8JiubDAHYbN!XAQiWg5E-U!s051j{w7Vtcv5 zTH#>1rgl)Q2>B3mqwr3-q8=l(!@|A|i|C;q9KJ@@4^f}O4#J~8P5qdvK4sCr31dEu zt${gI9)l%R-XLWG#TRk^0QD;sb_TYu)YLe6*=*5Nz{pBP?IO0z!hQ@h$bLZ;e#*iI zf%z4+huA+^*f${P*Vrr2j+$$f;Z=*~K1lc#M;ozOzyb_JDz*`# z6^iPmse=?wEV2*!D-<>jCo39R7tEpZGg{0)Ey^Ou4k+r2gnnmXFF<`jVZVj#0Zpx; zgsSixiJOS!f)Vr}E|X>pdkJO&%JIt7O?xcFbL8$x!ugQrDDJdji~c<6Cm>p>Y+A6) zDx*R${hQ#Y#i>4R zgp0a~EB=5*UrfjA8ID6Rlv{MvqS#7`le%IolnWEua7a}8H9cqJ1ej03yB56PK7M>v zm@T_bHPUHVL~jehg0x5IHa}s9oKUU2Hi>`jL0iZtuSp)l{JLSe__bb3xhc6A-R z8BF5d3LsitCzmXPBh_K~WCl!OR}g@-ny`E^1Da~WjwODjp|wGxrcRCoV5%mZww-RJ zA28la= PEI3-AYk3BuA=m!_j1jmX diff --git a/build/basic/basic b/build/basic/basic new file mode 100644 index 0000000000000000000000000000000000000000..af5dcb21b80a9b0b6bba193175967c2bde3d8959 GIT binary patch literal 126312 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

FCCg zL7<)pN;HDGPMc@I%r;sp)f<>BB_QAA%;41T|DHp;y&Yj$R6i zuK(W_-FJ~0Vh?{EfQ8X71=H?p%10?mFX$mpnIU7+LtgiXypS1E^%XAXemx|$PWSzC zdTnl{!c9Rx z^4GEB2Q_`vPsz@I*e|cFkOciMzr38&yGKutJAtY}1~M(0f}>5Ef?MQ99>GGkQ2Le2Onw!=xC-7y zWdbb=MmU^b@lYY*%2+MmvO$qpw$iV7d+W5B@6)(v>x;DtL-jVMDrmMTw;(9)GTnBV zZk*1HU@^JGt&s`nZ^K{-=sg5Jq~$e7w6onrRZp7HcwQDgCkeT)IeA(;8z+5;3jLZh zUTbHArv8NEYiG@N114MZ{^Vq(a9_;>fae`qrRT2D$abZ1URrIK`n+QzC9_KZ*YQ_L z&-|$4TYsx6NeTY82D!_CydVwoCLiRtowOQP@fUIJNA-}98FFiS$jcl8lkuoOqEYO? zqmG}=t{G#-_>qBRksV`zIw6dGWbH#5!F8)OR%skReUBa{zvF~kdpI-|D#GW6>>7o-XmoZ6X=iCCbX;-1cN6223(YTh!Vu*~uiHm-0a3&fN| zO}?4TGQR^C;u1&FK(a|Ei)fC=>E-*3A%BMHkMD*7`LcZD^zw<1=QFc*Ko7CakWZ(F ze8?XX$Y_o{m>hKE@DO>$YI!nQ`Q;vK>e>iE{xM*GfJ8*nH8^=|g$B@SH%%vLmV`&_-VH#^* zHPvZbOnJXEVB~qNWHjyyNJayWNThw(Z|$t^!{awTLfF%)bwqf%M))5M8k78H8*cG+ z2#_1SBU+_rcX^%muNV3hVX|$wkZ3WK!VDyvq`s` zUY{|&6mf|fbp-rPLCt4Pr>jgSs!(shs1Q#TJo`nZ#N_6XGT;F z#4%!4K)g|b8PSy<@e)VKsq?IW2^u;l@%1VUsnT1swW6l80%w`jfK_GXp}ksz9KKk? z+L8u&Uab$ZI^c&h8f0~#TEl1%kkx_ty12OFRq|$PAmi|^pq8XGiknwx*oA4^|C=<5 zRKSFkk8PVIwjdRd({ee1lzF5A^N2+bb!eqhfs1q*n>#^U=%a0@fbigDynyk;iz}jJ zM2TNsuFY+^-yd<^Pss^Klc@}uzNxi`&w}L92RfQasDaGe2~-+3AY%+g2>AflT2oGN zeg9&M0r}}gdftE{9|U9si0=^iiybrRt%-Pl`Y(2YNp4wlntB27Ej|8ICyhU3#=m9z z_Jrf#vh)4%RllXVeAO0dX*1*N)A;{vCiJQ;`A?V*nb52D1U;d(R@F^p;VT+IfdSBv z2C!@XBvjE&p z9z37{lo62Jo)099uv0N~>qz_UyB$V<}zE;9f=J`%vkGXSQ{;1qUi z06PqT3)2AZHvo3~0JNg*_5n07c)iOudW}5t&pDw@8eHQN4Tl*|e(d3;NUKn+Hu>Nd zi(GEj&mS(=hN;nAW@W06>cgX&I9c0Y_A?wfuWUF z&Cg9QKakfwcKSV_HOl1+5K~Gx`Cd)!7&GW>4H?u98ESidYPC}K`qUy@c+>-cOKdy5 zSdU7jr}{PqPm&|1OYBKZ?{oJ%b1k}6NZ^BCOJ)~td1Z@!g)IjVctN~km^@r#%UcY{ zYM7Hz7yeE*U%6K0N4e^=Z2Ka!Qp|<&V-IgbuSs$yJj))hPZbtx>xy?(8G3<>GwW~_ zr#{a%VZ@r6I}9ijdRZ0S?``}ZJW0@E1m@Zkur#sL(8yQ2)(+`Dp9|~jcP9h* zyM49mAAG?*6b`lkOR&~Hic46(9uvMWi9#T(Uyljv*JHx^^_cLNun<;xSic?<*00C7 z@_LLbugADeSj(WRUym92E{=KqB)~@p9Iudw<&_gBl1mHVC7c}ZG>B6~I>hBG1g!`U zES%gp-wMS8l6>XFNjQA|#?bB*#GhuHymI2oD<`hJa^lJ>C$7A5;>s&0uDo*Mz5@JV zS6(@B<&_gxUO92)l@nK9IdSEc6IWh2apjd0S6(@B<&_inDL}|`^(!axx`+xE@*QjW zN}$+5wAwkjucE?pI!|C~_~30Elw+OwXv?)ZP0y)&O}E9aVQs?H*88;|C7h(GZSZSf zW#2qgyVkGGXWx{m-Qd?=!P)=mhE>^UzT*VuB_kcNq-_E&!GTF$M~)V}7| zK0pYQ!+*d~&w1Ogy^*z5VQQ4;{MoPFOSsh`Zk+I5gOQ3jiv_SA@*Sk-SUIP$S4~Kv z3QuEa_u@Nn(kpD`Y-X=1p{deqt?8AhCEgs{e(hcW#V3<#O`lVPiaT|+{OBNV?cqlhIE1aszlc5HZl^%<8$XpS8h2}jubV-8 zK{h|Pa|pIoccoAI^;a3}i4a&2j}L?jkX8Lu^e8%We`gilf47XZexxrl{82NUkLt)m zeG8+D=b=Xsr!yfd{|}ti)k61*JM_RGoALJWB-r<&D@^qvA1s204JPr`P}FH!cbV3h zEJS~vUWi82mP{pzRW^kvY_g-HT*^_R#MPni&)MCR(cXcgK}ReuP4U6&MRvITeWuQBv+j_#3+te{$r{twgBY zC-FDHuTl$!N_){5=e_THZeWGHw&>b99?v5ZJ%flNbLBoMsl9|I-MHkyPf1$Rxe0xZ zUzTr{BS9$_r>|2W&q<+(o3X)ty*zk{_Ernb@4 z7Ia~b3A@9V@9iyY!Dg|`E+A*EB6&joD%;~!U8{H@dUA`9_eqrTS&ImOAA9%&?n>nO z`UmV1a)%kjG545$7wB%*9`q{3caI#fGe@aq_NR0!zs-f8QfT5={0;}UmBmf_bGq3Y zD|whl?Ksy9M?j?;n_*E7+eM^7o~t1jxaQ-&N}agdw)Z}u$Mzc#_V6mib>jul-F6`h z2=K>?9NcYBnvQM=hReQWhM6R}ReBZPUb8dVaee$&{s&^&Zrh)~UxPP36I=K-n|d83H9a1;?sY_VKqcg2fjH?}LB)mQdv>|ae2aXK7=o_M)kF=FE7cI}9XPZ))> zb`;LKtchPtX1jXg-`%5;{U(i*4^eBJZU(1J+_k4`8tV1LU3>n>iAP2eQ8bE(;>^S+ zEFt%g3-fn>LL=ul6YygXPr*iPqKMk@QjM~4qBwx#wR8a3fKL>iK0aTo^x}!4^2Zwt zPbx(i-bhQ?qybL(IXOstYgmw2AJ-RPdjZ%c%ZTR+jWTO^&rLM&szjLn&72}Ol;s+V zeMesjt^9XmKN`#AOUeO#t-(+wivOZH99mm8+l)Tjv{%CXyd;K`a*5BR<7Cc5HeK3n zhTLw`*&gPD!1w$Vx zm~ z;r|Kn_3G~|F{`f^^yc(}PI#7jGa%yAWmYn?pv#ak(EtX@eDM(p9;nuuyHdm3l!13Y z;jI;TpZS=kOQ23{`q?7aqFLmJ+{r{P`h)29J6 zW&q?6z*4ab$^f`D4Pb1=jPgPCOdb!)#RGh13ib9tnB{c2x;mBFf^3D9cMytchhXB0@}I;QSHCOj{Fh6237rtW!~Q&$*b}KacN|g_&;lRL&_O`@E4=oK9pU ze@1X8I+{DN?C~6(GnyGEFVH_YEiFSTBUK?io3Jlc?r5p;as9(qH=j^(6h-y$hYmo?XPBUDTgl%%2^XCato1cJaSCJN#l) zW&mfGknTp-t4c5cDB!mkLKy9nT?orVzjYNj+W`X(Q{9oQf#<9C%b~bxjcowEinFoAd0hr z`>StU&nex+J3E4m$91%c9PN1NKSLua9KoCLXjZtRnMLm~LM|esmHcEY^S=`vp*iF8 zK_YA10*j9GBzHv*_6{0lczUu%jh<4@J8%fvKF-2EDDt!KWW0vq)w?&Mli;Vmi5w8X{G^G_6}|TTSF<*o)yhN z3`Pse$+3)YAEUlse}}+0TUAXg6SU8cG7`_k#))dkVHt8PNx6X_=79n?+uo)|n&144 zcET5P28F(M78Q*!)cAt6jEo}+&L)T=Iwre48qJBuqSS=a?0)BzuxFX+DH6y&V@=2- z6-Y#8O$=3(nej%?rH6)6ZYE-SR2V$cgIFf~O%0o91SZ|Ra%A@rDl=)cI!+$h*;flA zUsb14C?lxV*%Kj|HNJ*SIn^iwacXwk2-2qM;pEZuv|eFSeuxABmNjE!OBT77RXegR z4IJORIC7FBbaAHM3eB3KWg-iqsPXLVdLNy%%)v}(A!LN#VrKbIFw9w!gRLyN682TX z^;N6rSYeWt9Z zj;T*-GoT8Lh^0Yg+g@MVipAUj&nc~{S&&m%)stsnI+vyA4aC0q$(sKY)^(&+J$aQq ze{mzDEpBx5^2U7EoTKes+}~p5jXYg|v9%NwSgP zs^3u(YmD_7DWT-;l#yeyC`MH9SsZRS*4fA#+xDNZVX^UHuz>$()He6Ebk_FvZ?(n38`;MGm1evbeVV>Y8Km0P6ph zuv%?>eZ75uN8Uz@mKKJBTF{A)6XO!%`-Pq7RU}ZEk44KFz zEps=}*0;W^w_od=DNNTo?dxG{S1)d%x%du3Xr2E9w#5fk_*W{lN2!Zcp1VM)A$OHZ z;>OtwM(LAiHRCw7T zrDiJcu!6XUSHS|nrlg#{gUWjjTAv)C%8xnwxJnRxC-ABq_ia^jP{o$2aN}}}-lrnY zwdfCfx3p6ys0|C#J+?P?k5>g{RnI|a|O+Oinu|Js@} z!B%;PDTfp{r&g8mvIm)2xlG~Zy*LV|6%^wL!OXu%*@4NanX1%1N5vsn&#BT{a$%X{&43>tR0TVg2Z?ca*GnKqHqhGnopRaPrgigg-2GGRIeCZx=u7>Jy9Ms2wvru(n2JI^cX zT}O!c;t{8$UFAYy7C;QdP<#QDIoAGv0u!=hgLl{xq)jjO6m9({vuZ?iKRVjdV7tw@99fWO1l?pAz-_QX5z>_hqc0(|# z-iaM>L9eMO9MpUjSs}n;Csg8Lm3){QlJhXE@s4`nd|2f|XHLAaLnW~b*fC2L577h^ zZ&!B5Rd8=VJ90$jt%h=4p%5}x0t3E;M$F3|mGga-dI8c7-*-ffJwh8-izppI_714S zL{;cM4pC33nxm?4z6$R}to?Nry^nxW-^aMx-#@Iz!hUR5br*5i+#RZRKZ_MRRP?wi z?NB+pRQU7o5nZbCs7j84k@GJqg{hqQ{SE`AR-h31E5O~QijVlHVNl#VRro%Y@Wq9(GqDj6Wbo%yTQ13x3t9*lQ|sP{F3i%#BVDDEDd= zLQHUxN<5%o*Km)C)WAp*?6M)HFpsx(sJxvD%#WT><9DbST9>IJm~Y%Amtl8P4ux1K z_=t=)f$P1IX2vhdn-p~~IggJGpC~WtjDD5Bd zOp;^Wcu>wpJ1cJCo4DDQ4g4v0_3yZi@UsBx z{o$j{MplHZ_jvdPb>tCxuWsw@RCkQc}e^NPMx%&v? zLfKTgYd|N0L(B<23RZflioup(bq}h^k z=0FTzQSse~zYy4Ogd?n_9|*&|9#(nBIOX^%r4E_<@NNXdfCkaHQWc!wPOAtp%j$jD z=BHpNhgAIQu=%wrepuz~VaTlx9X_PuSE$eqHKvoXbj*ct{2r*uV}#-DI*@FX01dN4&3UO^PN676a(E`eRLAc2Dj>%mFk*yAdSz`k8~Ym|r&y~zR043jv-l%VG> zSMhhiU6hSG*WfNE(p@@IZdbE3?y0;GcL{ONCWF)f%+TR_Ocq(bDKHFUd=)yWO2 zYFEVwRlo|kCa7*ZWDV4`t1-A~q*ZesfMCdue3o)fJcET=#d(1N*el$mN?f>d*snu- zSErZpu93@Fie=103IQu4!4QP>5f%QFD!p9g0StCT`_#CZSj1Iyc1f-@B8}B*(qS44 z?3j>%oX+VkRWfVj6K+zGiHOj!-0^3W2WwTQ5_?r1%;`}z777H*umg^odC<7CMHVaK zL|~tnU40ykz*hi1d-9T~-Pq;Lf&E7QbCY}VA(e!5%vYtWR05b$T&i+!rkr}KRq}Dl zLv;1tHxYI>BRp!?v>_-brPy&em9P*@gpx?uCv55@16U`@?)*gOVj6XL6quf;H!r(X zY>mp_E4c%x+y8i=^EPOIA`NLamX674`V#2wAyvAG?g~kU#6H<3Azg!7XOnMyBktMs zGO*X-)pQET`y{Z0UZ6guz#ps_6{%A>*vsu^tV{uePkEMLy?vA=gm%n=KW}anf+}Fx zr;^`=?k$IfLyr28nsA?rVA9wq!+h<;CcQ$1k+s6o!xJzn69v!Rq{gx3IhC_kd8!%cnGPi0vrn*R?%k&qLlK`s8?G& zdF&aL_w_7-?o(rYf|y2toFpJFQEVa%bv$bz5b?1TUo|G1M3`0BEld&6ufT=~!Xx>T zl@}q^5U4`B{*bDAKqa@UvtU*sltc8i6@<7;TccfSHcCj%%;060;sz7!$B(3kamA1`Owe)jK!z9!46f(MC}Cr($_pe(l0kjx1jPe1 zHMv)+=wWPs@OAYgu7K)hT2X4t`kv=HDXuk8tGd>@X>IAXJ7|h{>CAW^-3lED26rHN1QI%p_j|iv} zJB?a3c8^L7s_;fwmunhnT`C=H_*2NGVU>`>K_UeT0QGgQ!p4kQq+()(%3!dw{22V! zDkH$~E=8Tp9TwfG3U&!HgmHsv##IIkw?o)D7h|Lg7A#lJ)2hIIMWq^59fA&UZV$6z zrF&F9tOR-?SXHr^aw*lpSG-dtuEMG>L>?KLU9OA^_i&N&zOUkv@%cvZl&;k5QN|aE@e4AMPwhhOcCsw+?&yIk&1S@2jB)~t%4s| zamtlC4SWLzBghb6*svr*03>@)2uGu!1letF-;jp`k9d-YC?o_WxLkOTZslBy_}Kj-l>fvtSSsn` zlpqWM7ja@nQOXmedJN$yOg_BbDryyiuQ*!rAl$eVfXk9KM3*oQ(O`e55fFLi0HJb@ zlZV-80-`%b=2tO>p?(6=URr#kt9zLvK!{|r^>EUDYMd-rZ67VeP7I8qhB0Zk%e344=)iG_v?1i`lZtRw>< zCh_;upp7&i_7(Mvz{QB#t0*nMR!O9J=Q99>*MmVH>q7Ej7y^|A^skTuIDyb6vR~_4 z>1xJgZXwT-BUfatAv6<54)Rv=*nf248|!HCwO zPiUV?b@H@2-06M+3y(ZBibE{k41I%f!@*KoZV(*69B9rn$2l5lcr*vXt2T18@XjMV zkbq=S2PTbNyt(XV@*O*kLIfx{LAiyPLc8!cz(2tO(VAcgp$&*7wIS>}!LbM~8Di6$ zZV8l}%{cKwAb}7bLW>oJv?H*Dh6N_%V`N=s5D@YEzr>W>v zX6FhJjywZk&JGn=wdxoQzkLixC+;GJYyeD@8bER`xtbY?oadR{^y?r>Ik0ihV{^nD zMPd(C4Ne8SIPAmnKvO{n(ue~cupZbdcCe}gD(Tm&!Vbh}P($4TnFzMA-@)v#rxfA|4D3CfHJ}#zJ(zKM_G7!=6N2=cmGdxyI8nKhRm{AoBPvJCA+IAh>!b6Z-$mlrKFf1HH7)%jA0~^zK3KWr4Vjk zrSb!{DK!Bm0%>%J5<)s}4WhcuNbG9>LMGayUsO(&1Py^&iBbdbHH?LLyiZJ?1WX6O%mr%tUR8!{5ppo_^TOd1s#@1!BaRN5>kHH*onOMn zFq6rf^8gcNxp1>0kaz^aanDiqd6t5P|_a+poaFOOKnUBE!2yDmZ?K*qqY$-oUck=dN6}#~02A|e251ln? z`z6Ug9Ot|P;o$}q;si|Y#vFtd;(!N_RN!Y2a7+$Q>yA^=J$mo9REI+xvykGxRCc0) zJu2@~=0)?cznZU9;0`U5zc@3w)H65FhJ#CrZ=+5?U>~;=Yr0H%Z?JE4Nnva>|p&4Gt2yVw* znC}$2g0o1f<|EGLzAU>2&sq+l1~DEx72%v5f$LF3HV>;jgmK#?INYv^aDsA_p#6tv zQcOvmG-9W6AVH|+204W^0dEJLf*H(o!-qh}B$0u57qddZu4;IFOeda=>w#Td4*;`O z{P!F%7U^81I3{j}A|f*El)Od2*^Cop%^5MY7~~+sXs>cgf$U8m8PlXQm>NI~Q9)FG zMkP;Dq`)lMX!Agg&bkDy5~_e=`$;IEOq?1IH?gnAL!EevrU1vUNR&OpqYxaYPZ&^z z5c3^s!v4Q=lfc%5$+W-(Z1*(N7=yuJpn#A$hU@?~W0(N8G79@5LJ2f#Uk>-p1(1&1P(EWV+Loz#3A_l8@)HfJazHBI^yCXAu{@uNRZbVL0%Wa zNP}btAD}5@yeY8*p4zb81@-W_1qhGudphor+YRV=!b{|WvW(T?dGtHVMf7Su5)-Y% z;Wl#1PpjwxI8davAf^*ns|q}{aa^*+h-QxKhxV3g!;Jhgr+{RF}`I77?ERjTFh*WB*zkRf2emz*yruUvLKD2Q(>6KG)^N> zlhDC{FJ4!v1Wz8>?Fu|KbOeaUVg_+Y6E;9)tFcW#2~}wbJ4|f_0#09GqCMhq7Z^Qf z92|gjK5v6|Yun>+Ab{Cxbo z2~Ti0^$rd+;oB;jHV*J~x2dg8(o>0_t<&fdO(ax_~_>zn(o zZtK%nKw_&Vq`j}Lt*@=WY29GE)!v0^wrw70>*>d1ds6IaUJud@rt(2Fbo8{fTCGie zZ7uvFzt$$6gA?7l?yH3xB(hxo5Gxuwx?0mbwVJwnTdu~auAW|i6hOVJ%6i7 zSi;SQu zI|p6Ua+8*;b9;NcNyIwx1aCid_O5TMUAKwPC-huhyQp_l55=s%7PNG=Ovh@rb>sK; zxEQ^9shi0k02l;^TbpF5^m>n+dq>*<$Q=s&%^xqnL! zzR0|{r+2V_`e4tduAbKEqC5R)gow9XJ$*x8??7A2KyM!(+@_@X4K3Zx{hfX@qz?@( z?OA0bLT%k`0~APbL)Z`Q@``m^2k?U%aN)wSjP;O0S_MU!n>z5aN(;mnkC<$PB(rM^ zq@ZP^1|!QX<0u|vFuBCnMKt@mpth~e1I?fTY&WFBqzERp{zK~obSS<`P8G_CLNuv(gWff{7CG<&fdJu=Sx3mbAcr3=cY~`XQD@cVjP)E9& zyJ7Qa!7f{QaYMuTi!9Oue!?KO_71{OYBM6zNWntSOD|usV#$gNt#-&W=iiF?T77LB zApKn(P|v2$=APE>wmz(J$3`?Xw+c+iZ9l78EI#j^%`fx(JB<;(C=mc*s?m-(7Din^ zqAk~^4TJri7G!2U-qispG-;EqZ(&q>X`)#TWPZo&F52R=Lr>c#)3vpYvbzO(1KZiu z4;$`3<}95w9hpkFm>w837>9wrEtZUdSIM-4$N{Sp(hpV1u5NAXw)%Q|bz61=NzEGW zlS2^vnnP2Dv_tFr`TTKp+4qam0|s0(Odf>Q{R9LW(xZHl5FBlNdVz=! zG6PrIw!XJ-i}9;;g=av1DM9^y6Ro(Z0aEBYTucvyOLwB7<`i`aZVjj@oy{#+T{`$K z#0Px?sDnY*_qtvWXs6H5kRc=Vl%yTYpFv|aw+sw6!<7@Pt~S&+Z*1=BW}IQczBlzX z_jLFjv}fw-mkH`Il&3UC1E(KG)gJ=Up_yFY)C$TvyE?EQ?J&jyVSN)UF=m4+-ho)J zq0%2{Zi_oNjHgQ!vkgf{93ZZ~siU`laGf>KbamU7O}%~aF&4S=r?bGR&_UT$;KtD6Jeq`x*7}z@Jr8cSk8&}wG9mR^++u=l8sHX^kufb zoMsjv&49rk24NY@T6Mtdu6{0Srh#^&1!{)J5c@Hr4Mt$F8Oz_^)I5L)trvk~Tib>a zGuMmQwB#}k^x}r5^DkjfiCK7siOC>ng%_j>W^)CBtAJ)`+m5IXZY3=eAVRMOtn)gk zsF5r_K-q6?>Vyv%XzJa-Unr5q*L(+7N+C$O@O=5ZG7Dn=049(@V92K=Bbw9#K&@_t ze*$tYXj6OdAi(uQE?ek>&VSFs<(Ds9NjC%*u7^JX!gi2=3)d7E>Nj-=swO_c&`o}3 zFSC)i3^k&SpnJu|4e_ILDHU0gY`bD$Z^m=R)K zO$_IgP9q3ub`SIt8+RM+O?{a2dhu(%Li_GvBxcQ{4ZX0ISRfh~m}z(?aIxQ_jqKmD zUalJ@TH}IXgOiyILR6tp8dhp(SPg7l#9U!M;4qe-F=N)s5Hi*r#)N3sH*eOKFax)L z12$yonTcj89aJ5V5 z2ki7&ng;2n<*A8L87-SOd>I~4DS%ysY<(~Gj{~}p)*4|_roTvs-sEJ<5RFrlKONsh zG$H6lV8Rz!vGmRB`m=b?y$34kt~u$Z-m9}3p(q=KSiL`FUwY6C6+WL3fHsLOFzl6d zcoX(3X%e(FV}@Nl41^$xuw@djiIMb4);z?fw5bOn(aNTki_dR5f5oCxu38$T_T?11 zKC^eiMzbH2^ZTAZrIwJJt_i zcQ(T97<((i!AOPzNe7{&LI=o3Q`a|v0yzKlHO)FP5=oQaQXoUYqHB1!( ztd=$eoD`R41f}9=u)84duIL8AiaI0< zWViVLm3A)BRaIvm-yptP(F=-2r1nyCLP7|Lk9zZll#s+E(157; zEEZh`wH>ImgIK}G8jWk5iq5!-tK(~&8JQ~1j8?(7jyeUjqiqr9d;Gt1_Sw0|nYHGy z$UggbzWwce_Ur6(?*8_s(K)Y|EuD&XoRTYXS#-D1LzhzCNpGN00cnMf{TNm7P4Nz5 zUe?gVY}Ii zw1#P8;((NjWz@837)!4%-0EyN!M%DAx%5X+KssrtCh3gx!@Fxy$Z%-L%yv@42Z=WA$Lth}z4M?Lxm zU=^I-;3o&-c68aEib7nmphHr z%w14bs;I1DVMSRv$5B-=cY&`F84;%xf#Ms1gaAznMrNdKW_49niI+akD0;2X0S#TR zsZ2!16_yiGTQPf1UB0wrF8yPFW%;bg8%HcT$S>_0wZ5rDm-(ZySp!jPK$oGS@dbJ5 zr%`JpNv{~orD9YqsI04~sl3>`#u1|0MWxEGB*tVEhLNAVlCOw6YL>%OB!p3*C-kh*X3tbFQCV?-BgdZ6!Y@H zD@uELzG7}!`J#OFg1UV5tb8d4q{)Fg|-|$w!<@-p=_wQN}=G`vqlQk!dMOCokDTZ+tC%QRp6e zIi|9uuSk(T&I);je4l13@G+ie2GH>xxM#st8vp$PPHoY0ED7)S$0CWd%gG9mkEh`N z8tx&udNuz0=wv;A7VgV%cfpM%_3YFlb!*|)!Mz-ADF2myPSY^A?@%a2%bwFpKf~ND z$doJujwiQ}{3*nTx{RA>3ztJa3tk^^PAkiA4tNFeA+$MDKXyj3Jmcl@hqx2n_K)bq zJ66*<>)8|NSxbC~8|4N9`EA4trT-!5`2u>@k)Mz4^q$xwuuQ!B`bnOFlLI+J;k>fo%A6zb<5a;{-hlwh8kvi@G_{ozL6oY?_GO$oON2c&^ z5oi6jQba5CJViIoeCoLhc-;>^#zB7f`ReEL}CE(iwz8ri%n=~ ztwQ&EEnVmIe~k2ym>l=f3G=-{I{y~@i-123ZoQG!pIzX?_N!jwAAuhg@IQbb6YwJ` ze>gpvfS(9{LcmW0A06s0pAF|2Hg5*>mSwzd<*3J18)7p zhJZf+`ON`;4E(-;KLb7x@SWg0z_Z#c-MOZKCdj$OXS_M3Q;^TAho-5S<8+9BlWiI))YoUUB zksex5T==!~mH#W`X+3G-%dlV4so*Dr-v*9m;KqRuf&Q(Kp8&oMJO@4%e9XlP8j&8} z*Nn?|^(D%YO|BgLh)a{a61*RL7WB^te+9fB{8I4N%M?5V-V8qBdkS7ddOE?6%qxE# z@_pd%fUgC=4!pfy0dKCv$Ial!H>&?p@b%!&HYp#Yj@tnKCU_b6UxA<2qM!(Rwt_Fj zK=Mq;^IoHzpM5bL&w4e)9-i07f_J@C;> zRep{-ZXb9(_&321fL{fU?%2_6JW2m9aI0^h9IbqIyDHcZJzt0X`O6f{1U~_MHMqTO zjs^b|d>-Ua2QTYT@H6nU!QTXL1?O$)IG<;CDnRve7lPjdj$yi+1^zntZs@53-?UP} zWbi|1*Y6_()`KsC{AQHzS>WFXe*v7|L-^>jcze~)OX=|O1MtgNsGrBje5?UKqEG$* zq>lSLl-Iu?oezNX?yf`JNpAFB1xJDZ1bU{gQ-JQt{Q~?!@C}fElz5@>{0`AS#@UY6 zrk^)5=XfU~-VF5Y0xu5uZ^3H<{vLRJ!1sc81^lohHQqG=KM}k?;HQ9Z4)~ve4+Ojj zd`G}90N)w#O7J}azYKhDz+1rGKFzQU@~s;@6Y$mG*?`{wJ~808ffomS195II;eNtf zh!-mN5tRQdA8xqz5cGsw@@)qX_X>OtJlyi|CGc=#)7{|VwyMWdJ{3ym$0R?*o#58& zLPmN{A^AU&Jgpb+_Wsfnq|@P4v4^O+6ZpzCT>E4?gqDorcQ)>`$)du!N>h6@jebc;l6**fWJIVb&W^7yHfOAJ3{kq zGxCkZ@`BfN;SlniPU2ioY=3vV-LeGDIzjLngV(9q*{8PMOjicu%AD5v|L=nQk0z<0jY~H( zA3DPIZcX0TR?$P>yY?$LJ&%c=q%8YhNa4Fv`2G|=?CYEl8TY5}XdIO&uVaM|j(05N z50>k-E{O1Ml7;f~Ldbtvrh-3#{9l0Ii+*Mk_yTZS$eya19C>hC@_06Qn{aqM=St$- zF0!90EXK7vh-Y!`I}fMm*&#gR!VQ041`oG_eUJDE&WQolj_T}w5Ba5=mA{L~GtzIs z<2gC>Cr{j@@C{rmO_86U!dr=FJ-v3ihIppHbLZ9+J$DPwxaoL7d<}~JIz|3T$cH<# zzDS(gi|zPs^?Y}Vp3g;|-nvkZsGe^4aN2~(ZpL%R6X*K;{tXK4d2~Mb>*NvikL z1%EOn-r3a9s0j=@c9MLC$7B1Fmwro}%jG~&E}y07KQ2>Pe>R0rP2qEdXWaKupR19q zTJX+(1*PDZfUm^($L_Hcd>qE%1CYO3I6R)So;dgO?_9op=x?FkO%i$Y z#co*&zbJ(-MZDiYgiUB)ec-R4{~@m&x6ldab7rslA@1%Fc?fyV-6{N+qGya-vrmPs zyq*{Nj9b4}`3OYtI{1U=-%ddstB%+H;mS!0sCvusKIAXQd&EZYKY?Fequ^}tp;Yns z`SL94q4mQj3x|;BoCEo}cPM-b*NRi*2c$lD3UE3PdfKKdKz6%k;yhjo+x5~E{nw=M zb;P+Jczd7fxANMMBLAWAj5}|=%8y4nA4-vb0rD69R0WZ(ZV&j#Uns91s_uWK=sB3e z@1=^t>Hh%fx97`oQtn8c=X@LW;g3ZMSL52*;OkJnR1M@P1wS0=uLWO7oa5cIUxC%n z7Vx!5kMW8C`bw_Vki*8BO*gOT}n<-!ifjp&7(vK+V5kK= zm6?v36)4ZcgNWpjgevxlsX*+NS=X@_#s?lC zTQaiEW=LGzD`}2D83(Z`BXxH+lV58s zfyl;&+Y{5Xjxn1{2vy*bu$ih7P2<62wu`B}9kRboYy&r?r9D_!Kv=K#(rBMXMv zmDQysl{EW&*8Fm^F%ydjmoK|`ZV4G^NaN&1PvW%?w55?bh3ztG|Ff|7PX2(CR$VdwD6J!G9aO+1RMC$;snd6Lm~s9 z?p~@0WOmq-xMNykrKgjYG|BhS!aE&tmQC{#nPLvp($|*E_xOgT_r+E*YO$kf8oU4i z)=-cYGGx@~#S5zvERm2%HkCj})3UAvQ(NE!Y9%|Vjs%HTNP!XI66*MAMFr#;r<)!V zSTUhi;hc%9w&*Ql9zbu&``j;`?wE?tw}<=8yZE4rClR0 zycFpz@+uVaUhT~CO?_lJ-$p$X88AoU+=C4=FV%F>vyZ#JFwv6NiSSt3#&TXQY`Ei~ z7n|e_7d8XZ{=l-3%|d;{ptvd}%)nyYg_R?jdT=_BA(y<~DjLJc5cvV=JS;5d2wo@e0ygb?A(b`M2=8bgiUOwaQs4Upr z*v#*nmMkSJ?Y8&{HHF^ddy@Cv&{N>K$u%VCXrrD)9)_|yKxFtQrL0lMFW0i{4=d_g znYe3PIj5tcqf?%{iK{(q5}Y8`qR;_yUq)Ja;iu?|$GrHtQ#O&%ERRE2#r1;Fjks3& z3euA-a~i0J)qs-F5#E`WqjhDd*}la(R!dnA_bgnyGl)1|lIr+_CWjQHfae8-)py6)mMTSz)~FvY}kQMP6Q73)Cd)I-@&HEK))d zH?;H8W69|0g^E@$(~%2*)QPSZdFuh7zVX@{Q35g{~;A5)m)y)!N!l3v?xTyjqyc(G!?oD{~Z)x=ZX# ztbDs%j@E)`$ETi(vX>jV)T+SB8$Thb#E?-QNyh;>t^-@LbwDX3> z#%@~u5m%%Pa85aB7{T#@^#AFcOyT*PDn4Jk(TAx*bM1FNizfR13c$bn@Dw-;e;&e{ zJJABdweQJ>`R5=%{1SvWcbo~rweRDG`FCSKyxEnSn>9hWVfc%P|M#IoZ004$0OB`y z2KW(h!}K>0r>Q8>{qIG1bN?LyIgOlm7Jf9H^U+5CIf%vo9L+1@!`%ILL9yt-sW?~A z-$P#ddHw<)=H9Me-U(95u{Pf#AI&)E-OkB!3^3ciC2yf+Y^R&$UT~sg{DvbZ1gYY&l*j%<(@Q<+kc-|DJ z-{Q|asnX{5T1A5rt3U9%cj<(yyk)c5bq`=dRw!?NbNOc}uJRV%?8vwOAH#o1Vfhv< zyv=jof$$mJ822B1SiF{xJfDN_-@@Dc>7AG$$@a1SVd2d^f&%;Dqj}SNG*mrb^bU*H z&@ptKby@uOdv5)kDls~UKWhQu^6%dq#l(PH_|pT_@k>;auWT1=^tVEnJM9?!$9nnoF6*AZ=)Oy>kRWRvtDDm zC#e5QV?CE3yy-LdZ|+ygy$0Y~c*E=uvRE$N_kc?Fp+7r~DEAds?<`qI6SKM_0r4mM bqK5zJ|B`?FxF{6D;C254PIcF` literal 0 HcmV?d00001 diff --git a/build/basic/circle.bas b/build/basic/circle.bas new file mode 100644 index 0000000..07c7d14 --- /dev/null +++ b/build/basic/circle.bas @@ -0,0 +1,7 @@ +#!/usr/bin/env basic + +10 RADIUS=10 +20 FOR I=1 TO RADIUS-1 +30 W=INT(RADIUS*SIN(180/RADIUS*I*3.1415/180)) +40 PRINT SPC(RADIUS-W);:FOR J=1 TO 2*W:PRINT "*";:NEXT J:PRINT +50 NEXT I diff --git a/build/basic/test.3.bas b/build/basic/test.3.bas new file mode 100644 index 0000000..5b2489f --- /dev/null +++ b/build/basic/test.3.bas @@ -0,0 +1 @@ +10 PRINT "Test with adding a '.' to the filename" diff --git a/build/basic/test2.bas b/build/basic/test2.bas new file mode 100644 index 0000000..38060cf --- /dev/null +++ b/build/basic/test2.bas @@ -0,0 +1 @@ +10 PRINT "Testing the new save with a .bas extension..." From 81198f455815d7fcc8cca132cce578d87c6e1f08 Mon Sep 17 00:00:00 2001 From: thecomputerguru <34247063+thecomputerguru@users.noreply.github.com> Date: Sat, 11 Apr 2026 20:22:38 -0700 Subject: [PATCH 14/15] Add files via upload From 3964341077b86c7ee68a9520a54678dbb2e1fa88 Mon Sep 17 00:00:00 2001 From: thecomputerguru <34247063+thecomputerguru@users.noreply.github.com> Date: Sat, 11 Apr 2026 20:23:50 -0700 Subject: [PATCH 15/15] Add files via upload