C++ today is as simple as BASIC was in the 80s
Single header BASIC emulation in C++. This is based on my
(flawed) memory of the BASIC dialect in the
EACA
Colour Genie computer I
got on my 15th birthday.
Versions
- Original BASIC - AKA Dartmouth BASIC
- [Structured BASIC] (#sbasic)
Original BASIC - AKA Dartmouth BASIC
Header file: basic.hpp
Example program:
#include "basic.hpp" int main() { _10: LET COUNT = 1; _20: LET SUM = 0; _30: LET STACK$ = "."; _40: LET TRY = 0; _50: FOR TRY = 3 TO 1 STEP -1; _60: PRINT "You have ", TRY, " chances to get this right: "; _70: INPUT "Enter a positive number ", COUNT; _80: IF COUNT > 0 THEN GOTO _130; _90: PRINT "I said positive. ", COUNT, " isn't"; _100: NEXT; _110: PRINT "I give up on you!"; _120: END; _130: GOSUB _160; _140: PRINT "SUM=", SUM, " STACK=", STACK$; _150: END; _160: SUM = SUM + COUNT; _170: COUNT = COUNT - 1; _180: IF COUNT > 0 THEN GOSUB _160; _190: STACK$ = STACK$ + STACK$; _200: RETURN; }
SBASIC
Structured BASIC - AKA SBASIC
Header file: structured_basic.hpp
Example program:
#include "structured_basic.hpp" int main() { _10: LET X = 1; _20: INPUT "enter a positive number: " , X; _30: IF X > 0 THEN GOTO _60; _40: PRINT "Positive means greater than 0"; _50: GOTO _20; _60: LET i = 0; _70: DO ; _80: PRINT i+1, " Basic is awesome"; _90: i = i + 1 ; _100: LOOP WHILE ( i < X ); }
Limitations
- C++11 or later (easy to back-port, but why?)
- Those pesky semicolons...
- Variables must be defined prior to use
- Can't be used in kernel modules ;-)
- Many language features missing, e.g. PRINT USING and Most I/O
PR's for fixes and added functionality are most welcome.