   params = cddr(params);
   if (params != NULL) {
     int d = integer(eval(first(params), env));
-    if (d<1 || d>7) error(PSTR("'with-spi' invalid divider"));
+    if (d<1 || d>7) error3(WITHSPI, PSTR("invalid divider"));
     if (d == 7) divider = 3;
     else if (d & 1) divider = (d>>1) + 4;
     else divider = (d>>1) - 1;

  { string33, tf_cond, 0, 127 },
  { string34, tf_when, 1, 127 },
  { string35, tf_unless, 1, 127 },
  { string36, tf_and, 0, 127 },
  { string37, tf_or, 0, 127 },
  { string38, NULL, NIL, NIL },
  { string39, fn_not, 1, 1 },
  { string40, fn_not, 1, 1 },
  { string41, fn_cons, 2, 2 },
  { string42, fn_atom, 1, 1 },
  { string43, fn_listp, 1, 1 },
  { string44, fn_consp, 1, 1 },
  { string45, fn_symbolp, 1, 1 },
  { string46, fn_streamp, 1, 1 },
  { string47, fn_eq, 2, 2 },
  { string48, fn_car, 1, 1 },
  { string49, fn_car, 1, 1 },
  { string50, fn_cdr, 1, 1 },
  { string51, fn_cdr, 1, 1 },
  { string52, fn_caar, 1, 1 },
  { string53, fn_cadr, 1, 1 },
  { string54, fn_cadr, 1, 1 },
  { string55, fn_cdar, 1, 1 },
  { string56, fn_cddr, 1, 1 },
  { string57, fn_caaar, 1, 1 },
  { string58, fn_caadr, 1, 1 },
  { string59, fn_cadar, 1, 1 },
  { string60, fn_caddr, 1, 1 },
  { string61, fn_caddr, 1, 1 },
  { string62, fn_cdaar, 1, 1 },
  { string63, fn_cdadr, 1, 1 },
  { string64, fn_cddar, 1, 1 },
  { string65, fn_cdddr, 1, 1 },
  { string66, fn_length, 1, 1 },
  { string67, fn_list, 0, 127 },
  { string68, fn_reverse, 1, 1 },
  { string69, fn_nth, 2, 2 },
  { string70, fn_assoc, 2, 2 },
  { string71, fn_member, 2, 2 },
  { string72, fn_apply, 2, 127 },
  { string73, fn_funcall, 1, 127 },
  { string74, fn_append, 0, 127 },
  { string75, fn_mapc, 2, 3 },
  { string76, fn_mapcar, 2, 3 },
  { string77, fn_add, 0, 127 },
  { string78, fn_subtract, 1, 127 },
  { string79, fn_multiply, 0, 127 },
  { string80, fn_divide, 2, 127 },
  { string81, fn_divide, 1, 2 },
  { string82, fn_mod, 2, 2 },
  { string83, fn_oneplus, 1, 1 },
  { string84, fn_oneminus, 1, 1 },
  { string85, fn_abs, 1, 1 },
  { string86, fn_random, 1, 1 },
  { string87, fn_maxfn, 1, 127 },
  { string88, fn_minfn, 1, 127 },
  { string89, fn_noteq, 1, 127 },
  { string90, fn_numeq, 1, 127 },
  { string91, fn_less, 1, 127 },
  { string92, fn_lesseq, 1, 127 },
  { string93, fn_greater, 1, 127 },
  { string94, fn_greatereq, 1, 127 },
  { string95, fn_plusp, 1, 1 },
  { string96, fn_minusp, 1, 1 },
  { string97, fn_zerop, 1, 1 },
  { string98, fn_oddp, 1, 1 },
  { string99, fn_evenp, 1, 1 },
  { string100, fn_integerp, 1, 1 },
  { string101, fn_numberp, 1, 1 },
  { string102, fn_char, 2, 2 },
  { string103, fn_charcode, 1, 1 },
  { string104, fn_codechar, 1, 1 },
  { string105, fn_characterp, 1, 1 },
  { string106, fn_stringp, 1, 1 },
  { string107, fn_stringeq, 2, 2 },
  { string108, fn_stringless, 2, 2 },
  { string109, fn_stringgreater, 2, 2 },
  { string110, fn_sort, 2, 2 },
  { string111, fn_stringfn, 1, 1 },
  { string112, fn_concatenate, 1, 127 },
  { string113, fn_subseq, 2, 3 },
  { string114, fn_readfromstring, 1, 1 },
  { string115, fn_princtostring, 1, 1 },
  { string116, fn_prin1tostring, 1, 1 },
  { string117, fn_logand, 0, 127 },
  { string118, fn_logior, 0, 127 },
  { string119, fn_logxor, 0, 127 },
  { string120, fn_lognot, 1, 1 },
  { string121, fn_ash, 2, 2 },
  { string122, fn_logbitp, 2, 2 },
  { string123, fn_eval, 1, 1 },
  { string124, fn_globals, 0, 0 },
  { string125, fn_locals, 0, 0 },
  { string126, fn_makunbound, 1, 1 },
  { string127, fn_break, 0, 0 },
  { string128, fn_read, 0, 1 },
  { string129, fn_prin1, 1, 2 },
  { string130, fn_print, 1, 2 },
  { string131, fn_princ, 1, 2 },
  { string132, fn_terpri, 0, 1 },
  { string133, fn_readbyte, 0, 2 },
  { string134, fn_readline, 0, 1 },
  { string135, fn_writebyte, 1, 2 },
  { string136, fn_writestring, 1, 2 },
  { string137, fn_writeline, 1, 2 },
  { string138, fn_restarti2c, 1, 2 },
  { string139, fn_gc, 0, 0 },
  { string140, fn_room, 0, 0 },
  { string141, fn_saveimage, 0, 1 },
  { string142, fn_loadimage, 0, 1 },
  { string143, fn_cls, 0, 0 },
  { string144, fn_pinmode, 2, 2 },
  { string145, fn_digitalread, 1, 1 },
  { string146, fn_digitalwrite, 2, 2 },
  { string147, fn_analogread, 1, 1 },
  { string148, fn_analogwrite, 2, 2 },
  { string149, fn_delay, 1, 1 },
  { string150, fn_millis, 0, 0 },
  { string151, fn_sleep, 1, 1 },
  { string152, fn_note, 0, 3 },
  { string153, fn_edit, 1, 1 },
  { string154, fn_pprint, 1, 2 },
  { string155, fn_pprintall, 0, 0 },
};

// Table lookup functions

  while (args != NULL){
    #if defined(checkoverflow)
    signed long temp = (signed long) result * integer(car(args));
    if ((temp > INT_MAX) || (temp < INT_MIN)) error3(MULTIPLY, PSTR("arithmetic overflow"));
    result = temp;
    #else
    result = result * integer(car(args));
