Implement EDIT statement and ON TIMER/ON KEY event trapping, update to v0.9.0

Add event-driven programming: ON TIMER(n) GOSUB with TIMER ON/OFF/STOP,
ON KEY(n) GOSUB with KEY(n) ON/OFF/STOP for F1-F10. Fix F-key escape
sequence parser (F9/F10 detection, push back consumed bytes on unmatched
sequences). Add EDIT statement for TUI line editing. Guard key trap
polling so keystrokes aren't consumed when no traps are configured.
This commit is contained in:
Eremey Valetov
2026-02-27 17:29:09 -05:00
parent 5105ecafd6
commit 3fa8c6f034
14 changed files with 453 additions and 11 deletions
+12
View File
@@ -0,0 +1,12 @@
10 REM ON TIMER event trapping test
20 COUNT = 0
30 ON TIMER(1) GOSUB 100
40 TIMER ON
50 T0 = TIMER
60 IF TIMER - T0 < 3 THEN 60
70 TIMER OFF
80 PRINT "Timer fired"; COUNT; "times"
90 IF COUNT >= 2 THEN PRINT "PASS" ELSE PRINT "FAIL"
95 END
100 COUNT = COUNT + 1
110 RETURN
+16
View File
@@ -0,0 +1,16 @@
10 REM TIMER STOP queues events, TIMER ON fires pending
20 COUNT = 0
30 ON TIMER(1) GOSUB 200
40 TIMER STOP
50 T0 = TIMER
60 IF TIMER - T0 < 2 THEN 60
70 PRINT "Before TIMER ON: count ="; COUNT
80 TIMER ON
90 REM Small busy-wait for pending event to fire
95 FOR I = 1 TO 10000: NEXT I
100 PRINT "After TIMER ON: count ="; COUNT
110 TIMER OFF
120 IF COUNT >= 1 THEN PRINT "PASS" ELSE PRINT "FAIL"
130 END
200 COUNT = COUNT + 1
210 RETURN