Skip to content

Commit 92468c2

Browse files
authored
Version 3.0 - 28th November 2019
fixes technoblogy#25
1 parent beb92f7 commit 92468c2

File tree

1 file changed

+14
-12
lines changed

1 file changed

+14
-12
lines changed

ulisp-esp.ino

+14-12
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1-
/* uLisp ESP Version 2.9 - www.ulisp.com
2-
David Johnson-Davies - www.technoblogy.com - 25th September 2019
1+
/* uLisp ESP Version 3.0 - www.ulisp.com
2+
David Johnson-Davies - www.technoblogy.com - 28th November 2019
33
44
Licensed under the MIT license: https://opensource.org/licenses/MIT
55
*/
@@ -172,7 +172,7 @@ char LastPrint = 0;
172172

173173
// Flags
174174
enum flag { PRINTREADABLY, RETURNFLAG, ESCAPE, EXITEDITOR, LIBRARYLOADED };
175-
volatile char Flags;
175+
volatile char Flags = 0b00001; // PRINTREADABLY set by default
176176

177177
// Forward references
178178
object *tee;
@@ -2775,8 +2775,8 @@ object *fn_locals (object *args, object *env) {
27752775
object *fn_makunbound (object *args, object *env) {
27762776
(void) env;
27772777
object *key = first(args);
2778-
deletesymbol(key->name);
2779-
return (delassoc(key, &GlobalEnv) != NULL) ? tee : nil;
2778+
delassoc(key, &GlobalEnv);
2779+
return key;
27802780
}
27812781

27822782
object *fn_break (object *args, object *env) {
@@ -4059,13 +4059,15 @@ object *nextitem (gfun_t gfun) {
40594059
if (ch == ' ') return (object *)DOT;
40604060
isfloat = true;
40614061
} else if (ch == '#') {
4062-
ch = gfun() & ~0x20;
4062+
ch = gfun();
4063+
char ch2 = ch & ~0x20; // force to upper case
40634064
if (ch == '\\') base = 0; // character
4064-
else if (ch == 'B') base = 2;
4065-
else if (ch == 'O') base = 8;
4066-
else if (ch == 'X') base = 16;
4067-
else if (ch == 0x07) return nextitem(gfun);
4068-
else error2(0, PSTR("Illegal character after #"));
4065+
else if (ch2 == 'B') base = 2;
4066+
else if (ch2 == 'O') base = 8;
4067+
else if (ch2 == 'X') base = 16;
4068+
else if (ch == '\'') return nextitem(gfun);
4069+
else if (ch == '.') return eval(read(gfun), NULL);
4070+
else error2(0, PSTR("illegal character after #"));
40694071
ch = gfun();
40704072
}
40714073
int valid; // 0=undecided, -1=invalid, +1=valid
@@ -4174,7 +4176,7 @@ void setup () {
41744176
initworkspace();
41754177
initenv();
41764178
initsleep();
4177-
pfstring(PSTR("uLisp 2.9 "), pserial); pln(pserial);
4179+
pfstring(PSTR("uLisp 3.0 "), pserial); pln(pserial);
41784180
}
41794181

41804182
// Read/Evaluate/Print loop

0 commit comments

Comments
 (0)