Implement binary SAVE/LOAD, INKEY$ extended keys, golden tests, update to v0.10.0
Binary SAVE/LOAD: SAVE now writes tokenized binary by default (0xFF header format), matching original GW-BASIC behavior. SAVE "file",A for ASCII. LOAD auto-detects binary vs ASCII from the first byte. Command-line file loading also auto-detects, so binary .BAS files just work. INKEY$ extended keys: arrow keys, Home/End/PgUp/PgDn, Insert/Delete, and F1-F10 now return the correct CHR$(0) + scan_code two-byte sequences per the IBM PC convention. Refactored event trap key parsing to use tui_read_key() instead of duplicating escape sequence parsing. Golden-file regression tests: generated .expected output files for 55 of 58 test programs (3 timing-dependent tests excluded). The test runner now reports compat match status alongside pass/fail. Classic programs: added Hamurabi, Lunar Lander, Gunner, and Diamond from David Ahl's BASIC Computer Games (1978) in tests/classic/ for manual compatibility testing. Docs updated with compiler roadmap item and hardware I/O simulator plan.
This commit is contained in:
@@ -0,0 +1,5 @@
|
||||
10 REM Test INKEY$ extended key support (non-interactive)
|
||||
20 REM When no key is available, INKEY$ returns ""
|
||||
30 K$ = INKEY$
|
||||
40 IF LEN(K$) = 0 THEN PRINT "Empty INKEY$ ok" ELSE PRINT "FAIL: expected empty"
|
||||
50 PRINT "INKEY$ extended keys test passed"
|
||||
@@ -0,0 +1,9 @@
|
||||
10 REM Binary SAVE/LOAD round-trip test
|
||||
20 REM Create a test program, save as binary default, load binary back
|
||||
30 OPEN "gwbasic_binsrc.bas" FOR OUTPUT AS #1
|
||||
40 PRINT #1, "10 PRINT "+CHR$(34)+"Binary round-trip ok"+CHR$(34)
|
||||
50 PRINT #1, "20 SAVE "+CHR$(34)+"gwbasic_roundtrip.bas"+CHR$(34)
|
||||
60 PRINT #1, "30 KILL "+CHR$(34)+"gwbasic_binsrc.bas"+CHR$(34)
|
||||
70 PRINT #1, "40 KILL "+CHR$(34)+"gwbasic_roundtrip.bas"+CHR$(34)
|
||||
80 CLOSE #1
|
||||
90 LOAD "gwbasic_binsrc.bas",R
|
||||
Reference in New Issue
Block a user