' Test file for all new features ' ============================================================ ' === CONST === PRINT "==== CONST ====" CONST PI = 3.14159 CONST MAX_SIZE = 100 CONST GREETING$ = "Hello" PRINT "PI = "; PI PRINT "MAX_SIZE = "; MAX_SIZE PRINT "GREETING$ = "; GREETING$ ' === New Math Functions === PRINT "" PRINT "==== Math Functions ====" PRINT "TAN(0.7854) = "; TAN(0.7854) PRINT "ATN(1) = "; ATN(1) PRINT "LOG(2.71828) = "; LOG(2.71828) PRINT "EXP(1) = "; EXP(1) PRINT "SGN(-5) = "; SGN(-5) PRINT "SGN(0) = "; SGN(0) PRINT "SGN(42) = "; SGN(42) ' === RND / RANDOMIZE === PRINT "" PRINT "==== RND / RANDOMIZE ====" RANDOMIZE 12345 DIM r AS DOUBLE r = RND PRINT "RND (with seed 12345): "; r r = RND() PRINT "RND() again: "; r RANDOMIZE PRINT "RANDOMIZE (time-based) done" ' === New String Functions === PRINT "" PRINT "==== String Functions ====" PRINT "LTRIM$(' hello') = '"; LTRIM$(" hello"); "'" PRINT "RTRIM$('hello ') = '"; RTRIM$("hello "); "'" PRINT "TRIM$(' hello ') = '"; TRIM$(" hello "); "'" PRINT "SPACE$(5) = '"; SPACE$(5); "'" PRINT "HEX$(255) = "; HEX$(255) PRINT "HEX$(16) = "; HEX$(16) PRINT "OCT$(8) = "; OCT$(8) PRINT "OCT$(255) = "; OCT$(255) PRINT "STRING$(5, '*') = "; STRING$(5, "*") PRINT "STRING$(3, 'AB') = "; STRING$(3, "AB") ' === SWAP === PRINT "" PRINT "==== SWAP ====" DIM a AS INTEGER DIM b AS INTEGER a = 10 b = 20 PRINT "Before: a="; a; " b="; b SWAP a, b PRINT "After: a="; a; " b="; b DIM s1 AS STRING DIM s2 AS STRING s1 = "first" s2 = "second" PRINT "Before: s1="; s1; " s2="; s2 SWAP s1, s2 PRINT "After: s1="; s1; " s2="; s2 ' === LBOUND / UBOUND === PRINT "" PRINT "==== LBOUND / UBOUND ====" DIM arr(10) AS INTEGER PRINT "LBOUND(arr) = "; LBOUND(arr) PRINT "UBOUND(arr) = "; UBOUND(arr) ' === Bitwise Operators === PRINT "" PRINT "==== Bitwise Operators ====" DIM x AS INTEGER DIM y AS INTEGER x = 15 y = 9 PRINT "15 AND 9 = "; x AND y PRINT "15 OR 9 = "; x OR y PRINT "15 XOR 9 = "; x XOR y PRINT "NOT 0 = "; NOT 0 PRINT "NOT -1 = "; NOT -1 ' Logical-style usage (with comparisons) DIM c AS INTEGER c = 5 IF c > 3 AND c < 10 THEN PRINT "5 is between 3 and 10" END IF IF c > 10 OR c < 6 THEN PRINT "5 > 10 OR 5 < 6 is TRUE" END IF IF NOT (c = 10) THEN PRINT "NOT (5 = 10) is TRUE" END IF ' === SELECT CASE === PRINT "" PRINT "==== SELECT CASE ====" DIM grade AS INTEGER grade = 85 SELECT CASE grade CASE 90 TO 100 PRINT "Grade A" CASE 80 TO 89 PRINT "Grade B" CASE 70 TO 79 PRINT "Grade C" CASE ELSE PRINT "Grade F" END SELECT DIM val AS INTEGER val = 3 SELECT CASE val CASE 1 PRINT "One" CASE 2, 3 PRINT "Two or Three" CASE IS > 5 PRINT "Greater than 5" CASE ELSE PRINT "Something else" END SELECT ' String SELECT CASE DIM color AS STRING color = "red" SELECT CASE color CASE "red" PRINT "Color is RED" CASE "blue" PRINT "Color is BLUE" CASE ELSE PRINT "Unknown color" END SELECT ' === ON GOTO === PRINT "" PRINT "==== ON GOTO ====" DIM choice AS INTEGER choice = 2 ON choice GOTO opt1, opt2, opt3 GOTO skipOpts opt1: PRINT "Option 1" GOTO skipOpts opt2: PRINT "Option 2" GOTO skipOpts opt3: PRINT "Option 3" skipOpts: ' === ON GOSUB === PRINT "" PRINT "==== ON GOSUB ====" choice = 1 ON choice GOSUB sub1, sub2, sub3 choice = 3 ON choice GOSUB sub1, sub2, sub3 GOTO skipSubs sub1: PRINT "Subroutine 1" RETURN sub2: PRINT "Subroutine 2" RETURN sub3: PRINT "Subroutine 3" RETURN skipSubs: ' === MID$ Assignment === PRINT "" PRINT "==== MID$ Assignment ====" DIM msg AS STRING msg = "Hello World" PRINT "Before: "; msg MID$(msg, 7, 5) = "BASIC" PRINT "After: "; msg MID$(msg, 1, 5) = "Howdy" PRINT "After2: "; msg PRINT "" PRINT "All new feature tests complete!"