Version 3.0 - 28th November 2019

fixes #4, fixes #17
This commit is contained in:
David Johnson-Davies 2019-11-28 14:13:23 +00:00 committed by GitHub
parent acfd01a419
commit 6a7fe00f74
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 14 additions and 12 deletions

View File

@ -1,5 +1,5 @@
/* uLisp ARM 2.9b - www.ulisp.com
David Johnson-Davies - www.technoblogy.com - 25th September 2019
/* uLisp ARM 3.0 - www.ulisp.com
David Johnson-Davies - www.technoblogy.com - 28th November 2019
Licensed under the MIT license: https://opensource.org/licenses/MIT
*/
@ -215,7 +215,7 @@ char LastPrint = 0;
// Flags
enum flag { PRINTREADABLY, RETURNFLAG, ESCAPE, EXITEDITOR, LIBRARYLOADED };
volatile char Flags;
volatile char Flags = 0b00001; // PRINTREADABLY set by default
// Forward references
object *tee;
@ -2981,8 +2981,8 @@ object *fn_locals (object *args, object *env) {
object *fn_makunbound (object *args, object *env) {
(void) env;
object *key = first(args);
deletesymbol(key->name);
return (delassoc(key, &GlobalEnv) != NULL) ? tee : nil;
delassoc(key, &GlobalEnv);
return key;
}
object *fn_break (object *args, object *env) {
@ -4191,13 +4191,15 @@ object *nextitem (gfun_t gfun) {
if (ch == ' ') return (object *)DOT;
isfloat = true;
} else if (ch == '#') {
ch = gfun() & ~0x20;
ch = gfun();
char ch2 = ch & ~0x20; // force to upper case
if (ch == '\\') base = 0; // character
else if (ch == 'B') base = 2;
else if (ch == 'O') base = 8;
else if (ch == 'X') base = 16;
else if (ch == 0x07) return nextitem(gfun);
else error2(0, PSTR("Illegal character after #"));
else if (ch2 == 'B') base = 2;
else if (ch2 == 'O') base = 8;
else if (ch2 == 'X') base = 16;
else if (ch == '\'') return nextitem(gfun);
else if (ch == '.') return eval(read(gfun), NULL);
else error2(0, PSTR("illegal character after #"));
ch = gfun();
}
int valid; // 0=undecided, -1=invalid, +1=valid
@ -4306,7 +4308,7 @@ void setup () {
initworkspace();
initenv();
initsleep();
pfstring(PSTR("uLisp 2.9 "), pserial); pln(pserial);
pfstring(PSTR("uLisp 3.0 "), pserial); pln(pserial);
}
// Read/Evaluate/Print loop