From 3710e8a7da781853e6901cea9ba2d80ff351f501 Mon Sep 17 00:00:00 2001 From: David Johnson-Davies Date: Fri, 19 Apr 2019 13:32:27 +0100 Subject: [PATCH] Version 2.6a - 19th April 2019 Fixes #11 --- ulisp-arm.ino | 25 ++++++++++++++----------- 1 file changed, 14 insertions(+), 11 deletions(-) diff --git a/ulisp-arm.ino b/ulisp-arm.ino index ac1a410..a9f60df 100644 --- a/ulisp-arm.ino +++ b/ulisp-arm.ino @@ -1,5 +1,5 @@ -/* uLisp ARM 2.6 - www.ulisp.com - David Johnson-Davies - www.technoblogy.com - 9th April 2019 +/* uLisp ARM 2.6a - www.ulisp.com + David Johnson-Davies - www.technoblogy.com - 19th April 2019 Licensed under the MIT license: https://opensource.org/licenses/MIT */ @@ -3049,13 +3049,16 @@ object *fn_cls (object *args, object *env) { object *fn_pinmode (object *args, object *env) { (void) env; int pin = integer(first(args)); + int pm = INPUT; object *mode = second(args); - if ((integerp(mode) && mode->integer == 1) || mode != nil) pinMode(pin, OUTPUT); - else if (integerp(mode) && mode->integer == 2) pinMode(pin, INPUT_PULLUP); - #if defined(INPUT_PULLDOWN) - else if (integerp(mode) && mode->integer == 4) pinMode(pin, INPUT_PULLDOWN); - #endif - else pinMode(pin, INPUT); + if (integerp(mode)) { + int nmode = integer(mode); + if (nmode == 1) pm = OUTPUT; else if (nmode == 2) pm = INPUT_PULLUP; + #if defined(INPUT_PULLDOWN) + else if (nmode == 4) pm = INPUT_PULLDOWN; + #endif + } else if (mode != nil) pm = OUTPUT; + pinMode(pin, pm); return nil; } @@ -3197,9 +3200,9 @@ void superprint (object *form, int lm, pfun_t pfun) { else supersub(form, lm + PPINDENT, 1, pfun); } -const int ppspecials = 14; +const int ppspecials = 15; const char ppspecial[ppspecials] PROGMEM = - { DOTIMES, DOLIST, IF, SETQ, TEE, LET, LETSTAR, LAMBDA, WHEN, UNLESS, WITHI2C, WITHSERIAL, WITHSPI, WITHSDCARD }; + { DOTIMES, DOLIST, IF, SETQ, TEE, LET, LETSTAR, LAMBDA, WHEN, UNLESS, WITHI2C, WITHSERIAL, WITHSPI, WITHSDCARD, FORMILLIS }; void supersub (object *form, int lm, int super, pfun_t pfun) { int special = 0, separate = 1; @@ -3753,7 +3756,7 @@ object *eval (object *form, object *env) { object *function = car(form); object *args = cdr(form); - if (function == NULL) error(PSTR("'nil' is an illegal function")); + if (function == NULL) error3(NIL, PSTR("is an illegal function")); if (!listp(args)) error(PSTR("Can't evaluate a dotted pair")); // List starts with a symbol?