Check the reference corpus in, so the build stops needing the Go submodule

All 41 .bas/.txt pairs copied byte for byte from basicinterpreter@d76162c into
tests/reference/, plus the Commodore font into assets/fonts/ -- the two things
that tied the build to deps/basicinterpret. Both were verified cmp-identical
to the submodule copies.

This reverses a decision that was deliberate and correct at the time: the
corpus was driven in place because copying a submodule's corpus guarantees
drift. Overruled on purpose -- the Go dependency is being deprecated, and a
build that cannot run its acceptance suite without cloning the implementation
it replaced is not finished. tests/reference/README.md records what the drift
now costs and that those expectations are never edited.

Checked rather than assumed: both configurations configure, build and pass
from scratch with deps/basicinterpret moved out of the tree entirely.

The submodule is kept as the behavioural spec, which is a real use. The font
came with an open licence question; assets/fonts/PROVENANCE.md states it.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-07-31 12:35:40 -04:00
parent bf9cf85130
commit eb5374d212
92 changed files with 503 additions and 50 deletions

View File

@@ -0,0 +1,29 @@
10 DIM A#(5)
15 ITERATIONS# = 0
20 A#(0) = 5
21 A#(1) = 2
22 A#(2) = 4
23 A#(3) = 1
24 A#(4) = 3
25 PRINT "BEFORE SORTING: "
26 FOR I# = 0 TO 4
27 PRINT A#(I#)
28 NEXT I#
30 CHANGED# = 0
32 ITERATIONS# = ITERATIONS# + 1
35 FOR I# = 0 TO 3
45 J# = I#+1
46 REM PRINT "COMPARING INDEXES " + I# + " (" + A#(I#) + ") AND " + J# + "
50 IF A#(I#) <= A#(J#) THEN GOTO 100
55 REM PRINT "SWAPPING INDEXES " + I# + " AND " + J#
60 TMP# = A#(I#)
70 A#(I#) = A#(J#)
80 A#(J#) = TMP#
85 CHANGED# = CHANGED# + 1
100 NEXT I#
110 IF CHANGED# <> 0 THEN GOTO 30
115 PRINT "AFTER SORTING:"
120 FOR I# = 0 TO 4
130 PRINT A#(I#)
140 NEXT I#
145 PRINT "SORTED IN " + ITERATIONS# + " ITERATIONS"

View File

@@ -0,0 +1,13 @@
BEFORE SORTING:
5
2
4
1
3
AFTER SORTING:
1
2
3
4
5
SORTED IN 4 ITERATIONS

View File

@@ -0,0 +1,10 @@
10 N# = 5
20 RESULT# = 1
30 GOSUB 100
40 PRINT "FACTORIAL(5) IS " + RESULT#
50 QUIT
100 IF N# <= 1 THEN RETURN
110 RESULT# = RESULT# * N#
120 N# = N# - 1
130 GOSUB 100
140 RETURN

View File

@@ -0,0 +1 @@
FACTORIAL(5) IS 120

View File

@@ -0,0 +1,7 @@
10 INPUT$ = "HELLO"
20 STRLEN# = LEN(INPUT$) - 1
30 REV$ = ""
40 FOR I# = STRLEN# TO 0 STEP -1
50 REV$ = REV$ + MID(INPUT$, I#, 1)
60 NEXT I#
70 PRINT "REVERSED: " + REV$

View File

@@ -0,0 +1 @@
REVERSED: OLLEH