Proposed solution to serial buffer problems


The problem is that the Arduino serial interface, that uLisp relies on, doesn’t implement flow control. So when you paste in a long listing, the information echoed to the terminal using serial write causes the serial read to miss characters sent on the stream.

As a solution, the semicolon character turns off echo to the terminal; this is explained here:

A comment line turns off echo so that by starting a long listing with a comment, it can safely be pasted in to the Arduino IDE’s Serial Monitor without overflowing the serial buffer. Echo is turned back on automatically after a one second delay if there is no activity on the serial input.

Please try pasting in a listing starting with a comment line, prefixed by a semicolon, and I think that should solve the problem. For example:

; Test program

(defun sq (x) (* x x))

(defun led-off nil
  (digitalwrite :led-builtin nil))

(defun led-on nil
  (pinmode :led-builtin t)
  (digitalwrite :led-builtin t))


Thanks David, It works perfectly.