technoblogy / ulisp-tdeck

A version of uLisp to convert the LilyGO T-Deck into a self-contained handheld Lisp computer.
15 stars 2 forks source link

NOECHO flag is never cleared #5

Open hasn0life opened 9 months ago

hasn0life commented 9 months ago

I noticed that the NOECHO flag gets set and never gets cleared. I'm not sure what it does so I'm not sure where it should be cleared. Can you explain what it does and also possibly clear it if it's necessary? I did something like

//around line 5980
 unsigned long start = millis();
  while (!KybdAvailable) {
    if (millis() - start > 1000){ clrflag(NOECHO); }

to try to match what the other implementations are doing, but I don't know if that's right.

technoblogy commented 9 months ago

This is documented a bit in the Language reference under semicolon:

http://www.ulisp.com/show?3L#semicolon

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.

Without it, uLisp echoes the listings to the serial monitor, and that caused the serial input to miss characters.

I'm not sure why I've left it out of the T-Deck firmware - perhaps it should go back in. Have you noticed any benefit from putting it back? If so, I'll add it to the next release.

hasn0life commented 9 months ago

Now that I know what it does I can say that there is benefit to it, because what kept happening to me was that the t deck would stop printing to the serial monitor and never start again, and I thought it was hanging or crashing. That explains why I thought it was more stable after I fixed it. So yea, either remove the flag entirely or add the code to clear it again

technoblogy commented 9 months ago

That's odd - I haven't had that problem, but I agree the fix is definitely worth having.

hasn0life commented 9 months ago

If you want to see what the failure mode looks like enter something that sets the flag. It's pretty subtle cause it looks like it hangs, like I said.

technoblogy commented 9 months ago

Yes, I see that now, thanks. I'll issue an update for it.

I'd also like to solve the problem that input you enter in the Serial Monitor isn't reflected on the T-deck screen, although the output is. Don't you agree that the two should mirror each other?

technoblogy commented 9 months ago

PS Have you managed to get the Lisp Editor working OK?

hasn0life commented 9 months ago

I agree they should mirror each other but its not a huge concern for me as far as usability goes. My work flow isn't impacted by it but it would be nice.

I have managed to get the Lisp editor working and it's very nice. I will write a post on the forum (instead of here) with some suggestions, though I don't think they're very substantial right now.