mbstring extension must be loaded in order to run mPDF
sdb:bastest
BASTEST
This is BASTEST.BAS, a test suite for Stellar BASIC V1.0. Written on Feb. 27th, 2026.
10 PRINT "STELLAR DYNAMICS"
20 PRINT "EPSILON CONTAINMENT FACILITY"
30 PRINT "BASIC TEST PROGRAM v0.7"
40 PRINT "FEB 27, 2026"
50 PRINT "*** CONTAINS CODE FROM SAMPLE SD-0064:"
60 PRINT "*** DO NOT DISTRIBUTE OUTSIDE OF LAB"
70 PRINT""
80 LET P = 0
90 LET F = 0
100 INPUT "PRESS ENTER TO CONTINUE:", A$
200 GOSUB 1000
210 GOSUB 2000
220 GOSUB 3000
230 GOSUB 4000
240 GOSUB 5000
250 GOSUB 6000
260 GOSUB 7000
270 GOSUB 8000
280 GOSUB 9000
350 PRINT ""
360 PRINT "=== RESULTS ==="
370 PRINT "PASSED: "; P
380 PRINT "FAILED: "; F
390 END
500 REM -- HELPER: CHECK NUMERIC --
501 REM EXPECTS: T = TEST#, A = GOT, B = EXPECTED
510 IF A = B THEN GOTO 530
520 PRINT " FAIL #"; T; ": GOT "; A; " EXPECTED "; B
525 LET F = F + 1
526 RETURN
530 PRINT " OK #"; T
535 LET P = P + 1
540 RETURN
1000 REM ==============================
1001 REM TEST GROUP 1: VARIABLES & LET
1002 REM ==============================
1003 PRINT ""
1010 PRINT "--- TEST 1: VARIABLES & LET ---"
1020 LET A = 5
1030 LET B = 10
1040 LET T = 1
1050 LET B = A
1055 REM B SHOULD NOW BE 5
1060 GOSUB 500
1070 LET A = 100
1080 LET B = 100
1090 LET T = 2
1100 GOSUB 500
1110 LET A = 0
1120 LET B = 0
1130 LET T = 3
1140 GOSUB 500
1150 RETURN
2000 REM ==============================
2001 REM TEST GROUP 2: ARITHMETIC
2002 REM ==============================
2003 PRINT ""
2010 PRINT "--- TEST 2: ARITHMETIC ---"
2020 LET A = 3 + 4
2030 LET B = 7
2040 LET T = 1
2050 GOSUB 500
2060 LET A = 10 - 3
2070 LET B = 7
2080 LET T = 2
2090 GOSUB 500
2100 LET A = 6 * 7
2110 LET B = 42
2120 LET T = 3
2130 GOSUB 500
2140 LET A = 20 / 4
2150 LET B = 5
2160 LET T = 4
2170 GOSUB 500
2180 LET A = 10 % 3
2190 LET B = 1
2200 LET T = 5
2210 GOSUB 500
2220 LET A = 2 + 3 * 4
2230 LET B = 14
2240 LET T = 6
2250 GOSUB 500
2260 RETURN
3000 REM ==============================
3001 REM TEST GROUP 3: IF/THEN & GOTO
3002 REM ==============================
3003 PRINT ""
3010 PRINT "--- TEST 3: IF/THEN & GOTO ---"
3020 LET A = 1
3030 IF 5 > 3 THEN LET A = 99
3040 LET B = 99
3050 LET T = 1
3060 GOSUB 500
3070 LET A = 1
3080 IF 3 > 5 THEN LET A = 99
3090 LET B = 1
3100 LET T = 2
3110 GOSUB 500
3120 LET A = 1
3130 IF 5 = 5 THEN LET A = 99
3140 LET B = 99
3150 LET T = 3
3160 GOSUB 500
3170 LET A = 1
3180 IF 5 < 3 THEN LET A = 99
3190 LET B = 1
3200 LET T = 4
3210 GOSUB 500
3220 RETURN
4000 REM ==============================
4001 REM TEST GROUP 4: FOR/NEXT
4002 REM ==============================
4003 PRINT ""
4010 PRINT "--- TEST 4: FOR/NEXT ---"
4020 LET S = 0
4030 FOR I = 1 TO 5
4040 LET S = S + I
4050 NEXT I
4060 LET A = S
4070 LET B = 15
4080 LET T = 1
4090 GOSUB 500
4100 LET S = 0
4110 FOR I = 1 TO 3
4120 FOR J = 1 TO 2
4130 LET S = S + 1
4140 NEXT J
4150 NEXT I
4160 LET A = S
4170 LET B = 6
4180 LET T = 2
4190 GOSUB 500
4200 RETURN
5000 REM ==============================
5001 REM TEST GROUP 5: STRING VARIABLES
5002 REM ==============================
5003 PRINT ""
5010 PRINT "--- TEST 5: STRING VARIABLES ---"
5020 LET A$ = "HELLO"
5030 LET A = LEN(A$)
5040 LET B = 5
5050 LET T = 1
5060 GOSUB 500
5070 LET A$ = ""
5080 LET A = LEN(A$)
5090 LET B = 0
5100 LET T = 2
5110 GOSUB 500
5120 LET A$ = "AB"
5130 LET B$ = "CD"
5140 LET C$ = A$ + B$
5150 LET A = LEN(C$)
5160 LET B = 4
5170 LET T = 3
5180 GOSUB 500
5190 RETURN
6000 REM ==============================
6001 REM TEST GROUP 6: STRING FUNCTIONS
6002 REM ==============================
6003 PRINT ""
6010 PRINT "--- TEST 6: STRING FUNCTIONS ---"
6020 LET A$ = "ABCDE"
6030 LET A = ASC(A$)
6040 LET B = 65
6050 LET T = 1
6060 GOSUB 500
6070 LET C$ = CHR$(66)
6080 LET A = ASC(C$)
6090 LET B = 66
6100 LET T = 2
6110 GOSUB 500
6120 LET A = VAL("42")
6130 LET B = 42
6140 LET T = 3
6150 GOSUB 500
6160 LET A$ = "HELLO WORLD"
6170 LET B$ = LEFT$(A$, 5)
6180 LET A = LEN(B$)
6190 LET B = 5
6200 LET T = 4
6210 GOSUB 500
6220 LET B$ = RIGHT$(A$, 5)
6230 LET A = LEN(B$)
6240 LET B = 5
6250 LET T = 5
6260 GOSUB 500
6270 LET B$ = MID$(A$, 7, 5)
6280 LET A = LEN(B$)
6290 LET B = 5
6300 LET T = 6
6310 GOSUB 500
6320 LET A = INSTR(A$, "WORLD")
6330 LET B = 7
6340 LET T = 7
6350 GOSUB 500
6360 LET A = INSTR(A$, "XYZ")
6370 LET B = 0
6380 LET T = 8
6390 GOSUB 500
6400 RETURN
7000 REM ==============================
7001 REM TEST GROUP 7: DIM / ARRAYS
7002 REM ==============================
7003 PRINT ""
7010 PRINT "--- TEST 7: DIM / ARRAYS ---"
7020 DIM N(5)
7030 LET N(0) = 10
7040 LET N(1) = 20
7050 LET N(2) = 30
7060 LET N(3) = 40
7070 LET N(4) = 50
7080 LET N(5) = 60
7090 LET A = N(0)
7100 LET B = 10
7110 LET T = 1
7120 GOSUB 500
7130 LET A = N(5)
7140 LET B = 60
7150 LET T = 2
7160 GOSUB 500
7170 LET S = 0
7180 FOR I = 0 TO 5
7190 LET S = S + N(I)
7200 NEXT I
7210 LET A = S
7220 LET B = 210
7230 LET T = 3
7240 GOSUB 500
7250 DIM W$(3)
7260 LET W$(0) = "ZERO"
7270 LET W$(1) = "ONE"
7280 LET W$(2) = "TWO"
7290 LET W$(3) = "THREE"
7300 LET A = LEN(W$(0))
7310 LET B = 4
7320 LET T = 4
7330 GOSUB 500
7340 LET A = LEN(W$(3))
7350 LET B = 5
7360 LET T = 5
7370 GOSUB 500
7380 RETURN
8000 REM ==============================
8001 REM TEST GROUP 8: READ / DATA
8002 REM ==============================
8003 PRINT ""
8010 PRINT "--- TEST 8: READ / DATA ---"
8020 DATA 10, 20, 30
8030 READ A
8040 LET B = 10
8050 LET T = 1
8060 GOSUB 500
8070 READ A
8080 LET B = 20
8090 LET T = 2
8100 GOSUB 500
8110 READ A
8120 LET B = 30
8130 LET T = 3
8140 GOSUB 500
8150 RESTORE
8160 READ A
8170 LET B = 10
8180 LET T = 4
8190 GOSUB 500
8200 RETURN
9000 REM ==============================
9001 REM TEST GROUP 9: PEEK / POKE
9002 REM ==============================
9003 PRINT ""
9010 PRINT "--- TEST 9: PEEK / POKE ---"
9020 BANK 0
9030 POKE 49152, 42
9040 LET A = PEEK(49152)
9050 LET B = 42
9060 LET T = 1
9070 GOSUB 500
9080 POKE 49153, 99
9090 LET A = PEEK(49153)
9100 LET B = 99
9110 LET T = 2
9120 GOSUB 500
9130 LET A = PEEK(49152)
9140 LET B = 42
9150 LET T = 3
9160 GOSUB 500
9170 RETURN
sdb/bastest.txt · Last modified: by appledog
