   if (ch == '\'') return (object *)QUO;
   if (ch == '.') return (object *)DOT;
 
+  // Parse string
+  if (ch == '"') {
+    object *obj = myalloc();
+    obj->type = STRING;
+    ch = gchar();
+    object *head = NULL;
+    object *tail = NULL;
+    int chars = 0;
+    while (ch != '"') {
+      if (ch == '\\') ch = gchar();
+      if (chars == 0) {
+        chars = ch<<8;
+        object *cell = myalloc();
+        if (head == NULL) head = cell; else tail->car = cell;
+        cell->car = NULL;
+        cell->integer = chars;
+        tail = cell;
+      } else {
+        chars = chars | ch;
+        tail->integer = chars;
+        chars = 0;
+      }
+      ch = gchar();
+    }
+    obj->cdr = head;
+    return obj;
+  }
+  
   // Parse variable or number
   int index = 0, base = 10, sign = 1;
   unsigned int result = 0;

/* uLisp Version 1.4 - www.ulisp.com
   David Johnson-Davies - www.technoblogy.com - 18th October 2016

   Licensed under the MIT license: https://opensource.org/licenses/MIT
*/

  { string90, fn_zerop, 1, 1 },
  { string91, fn_oddp, 1, 1 },
  { string92, fn_evenp, 1, 1 },
  { string93, fn_stringp, 1, 1 },
  { string94, fn_stringeq, 2, 2 },
  { string95, fn_subseq, 2, 3 },
  { string96, fn_logand, 0, 127 },
  { string97, fn_logior, 0, 127 },
  { string98, fn_logxor, 0, 127 },
  { string99, fn_lognot, 1, 1 },
  { string100, fn_ash, 2, 2 },
  { string101, fn_logbitp, 2, 2 },
  { string102, fn_read, 0, 0 },
  { string103, fn_eval, 1, 1 },
  { string104, fn_globals, 0, 0 },
  { string105, fn_locals, 0, 0 },
  { string106, fn_makunbound, 1, 1 },
  { string107, fn_break, 0, 0 },
  { string108, fn_print, 1, 1 },
  { string109, fn_princ, 1, 1 },
  { string110, fn_writebyte, 1, 2 },
  { string111, fn_readbyte, 0, 2 },
  { string112, fn_restarti2c, 1, 2 },
  { string113, fn_gc, 0, 0 },
  { string114, fn_room, 0, 0 },
  { string115, fn_saveimage, 0, 1 },
  { string116, fn_loadimage, 0, 0 },
  { string117, fn_cls, 0, 0 },
  { string118, fn_pinmode, 2, 2 },
  { string119, fn_digitalread, 1, 1 },
  { string120, fn_digitalwrite, 2, 2 },
  { string121, fn_analogread, 1, 1 },
  { string122, fn_analogwrite, 2, 2 },
  { string123, fn_delay, 1, 1 },
  { string124, fn_millis, 0, 0 },
  { string125, fn_note, 0, 3 },
  { string126, fn_edit, 1, 1 },
};

// Table lookup functions
