Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/rollbear/basicpp
BASIC in C++
https://github.com/rollbear/basicpp
Last synced: 18 days ago
JSON representation
BASIC in C++
- Host: GitHub
- URL: https://github.com/rollbear/basicpp
- Owner: rollbear
- License: unlicense
- Created: 2015-06-20T13:13:48.000Z (over 9 years ago)
- Default Branch: master
- Last Pushed: 2020-10-31T04:46:33.000Z (about 4 years ago)
- Last Synced: 2024-07-31T22:49:39.133Z (3 months ago)
- Language: C++
- Size: 21.5 KB
- Stars: 178
- Watchers: 10
- Forks: 15
- Open Issues: 2
-
Metadata Files:
- Readme: README.md
- License: LICENSE.md
Awesome Lists containing this project
README
## **`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](https://en.wikipedia.org/wiki/EACA)
[Colour Genie](https://en.wikipedia.org/wiki/Colour_Genie) computer I
got on my 15th birthday.## Versions
* [Original BASIC](#basic) - AKA Dartmouth BASIC
* [Structured BASIC] (#sbasic)## Basic
*Original BASIC - AKA Dartmouth BASIC*Header file: [basic.hpp](./basic.hpp)
### Example program:
```Cpp
#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](./structured_basic.hpp)
### Example program:
```Cpp
#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/OPR's for fixes and added functionality are most welcome.