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