All Projects → endbasic → endbasic

endbasic / endbasic

Licence: Apache-2.0 license
BASIC environment with a REPL, a web interface, a graphical console, and RPi support written in Rust

Programming Languages

rust
11053 projects
basic
69 projects
javascript
184084 projects - #8 most used programming language
vba
158 projects
CSS
56736 projects
shell
77523 projects

Projects that are alternatives of or similar to endbasic

Endbasic
BASIC environment with a REPL, a web interface, and RPi support written in Rust
Stars: ✭ 106 (-51.82%)
Mutual labels:  interpreter, gpio, repl, learn-to-code
Gomacro
Interactive Go interpreter and debugger with REPL, Eval, generics and Lisp-like macros
Stars: ✭ 1,784 (+710.91%)
Mutual labels:  interpreter, repl
Goto
Goto is an interpreted programming language written in go.
Stars: ✭ 79 (-64.09%)
Mutual labels:  interpreter, repl
Janet
A dynamic language and bytecode vm
Stars: ✭ 2,216 (+907.27%)
Mutual labels:  interpreter, repl
Bic
A C interpreter and API explorer.
Stars: ✭ 719 (+226.82%)
Mutual labels:  interpreter, repl
Mico
Mico ("Monkey" in catalan). Monkey language implementation done with C++. https://interpreterbook.com/
Stars: ✭ 19 (-91.36%)
Mutual labels:  interpreter, repl
Brain
An esoteric programming language compiler on top of LLVM based on Brainfuck
Stars: ✭ 112 (-49.09%)
Mutual labels:  interpreter, repl
Mond
A scripting language for .NET Core
Stars: ✭ 237 (+7.73%)
Mutual labels:  interpreter, repl
Codi.vim
📔 The interactive scratchpad for hackers.
Stars: ✭ 2,464 (+1020%)
Mutual labels:  interpreter, repl
Charly
🐈 The Charly Programming Language | Written by @KCreate
Stars: ✭ 185 (-15.91%)
Mutual labels:  interpreter, repl
Red
Red is a next-generation programming language strongly inspired by Rebol, but with a broader field of usage thanks to its native-code compiler, from system programming to high-level scripting and cross-platform reactive GUI, while providing modern support for concurrency, all in a zero-install, zero-config, single 1MB file!
Stars: ✭ 4,725 (+2047.73%)
Mutual labels:  interpreter, repl
fundot
The Fundot programming language.
Stars: ✭ 15 (-93.18%)
Mutual labels:  interpreter, repl
Ok
An open-source interpreter for the K5 programming language.
Stars: ✭ 408 (+85.45%)
Mutual labels:  interpreter, repl
Mappy
A functional programming language. Like LISP but focused around maps rather than lists.
Stars: ✭ 10 (-95.45%)
Mutual labels:  interpreter, repl
Rascal
The implementation of the Rascal meta-programming language (including interpreter, type checker, parser generator, compiler and JVM based run-time system)
Stars: ✭ 284 (+29.09%)
Mutual labels:  interpreter, repl
retro12
This repo is retired. See http://forthworks.com:8000/
Stars: ✭ 18 (-91.82%)
Mutual labels:  interpreter, repl
malluscript
A simple,gentle,humble scripting language for mallus, based on malayalam memes.
Stars: ✭ 112 (-49.09%)
Mutual labels:  interpreter, repl
lambda-dti
Interpreter of the ITGL with dynamic type inference
Stars: ✭ 18 (-91.82%)
Mutual labels:  interpreter, repl
Nf Interpreter
⚙️ nanoFramework Interpreter, CLR, HAL, PAL and reference target boards
Stars: ✭ 168 (-23.64%)
Mutual labels:  interpreter, gpio
Go Pry
An interactive REPL for Go that allows you to drop into your code at any point.
Stars: ✭ 2,747 (+1148.64%)
Mutual labels:  interpreter, repl

The EndBASIC programming language

Build and test Health checks Deploy to staging Deploy to release

EndBASIC is an interpreter for a BASIC-like language and is inspired by Amstrad's Locomotive BASIC 1.1 and Microsoft's QuickBASIC 4.5. Like the former, EndBASIC intends to provide an interactive environment that seamlessly merges coding with immediate visual feedback. Like the latter, EndBASIC offers higher-level programming constructs and strong typing.

EndBASIC offers a simplified and restricted environment to learn the foundations of programming and focuses on features that can quickly reward the programmer. These features include things like a built-in text editor, commands to render graphics, and commands to interact with the hardware of a Raspberry Pi. Implementing this kind of features has priority over others such as performance or a much richer language.

EndBASIC is written in Rust and runs both on the web and locally on a variety of operating systems and platforms, including macOS, Windows, and Linux.

EndBASIC is free software under the Apache 2.0 License.

The latest version of EndBASIC is 0.9.0 and was released on 2022-06-05.

Quick start on the web

Open EndBASIC in your browser by visiting:

https://repl.endbasic.dev/

Or go the project's website at:

https://www.endbasic.dev/

The web interpreter should work on all major desktop browsers as well as mobile devices (with some small known issues on Android).

The web interpreter runs fully locally: any programs you write are persisted in your browser's local storage by default. That said, you can choose to sign up for the cloud service and upload your programs to share them with the world.

Quick start on your machine

Visit the release page to download prebuilt binaries. Once downloaded, unpack the archive and run the endbasic binary to get started.

Be aware that the binaries are not signed right now so it can be difficult to get these to run on Windows and macOS.

The binary releases are built with the recommended settings: they all include graphics support, and the builds for the Raspberry Pi include support for its hardware. To use the graphics console, you will need to launch the binary using one of these forms:

endbasic --console=graphics            # Default console size, windowed.
endbasic --console=graphics:800x600    # Custom resolution.
endbasic --console=graphics:800x600fs  # Custom resolution, full screen.
endbasic --console=graphics:fs         # Desktop resolution, full screen.

Building from source

Of course, you can also build and install EndBASIC from source by running the following command (assuming you have a Rust toolchain installed):

cargo install endbasic

The above will fetch EndBASIC from https://crates.io/, build it with default settings, and then install the resulting binary under ~/.cargo/bin/.

If you want to enable graphics support (recommended), you will first have to install the SDL2 and SDL2_ttf libraries. Follow these steps depending on the platform you are on:

# On Debian-based systems:
sudo apt install libsdl2-dev libsdl2-ttf-dev
cargo install --features=sdl endbasic

# On FreeBSD systems:
sudo pkg install sdl2 sdl2_ttf
cargo install --features=sdl endbasic

# On macOS systems with Homebrew:
brew install sdl2 sdl2_ttf
cargo install --features=sdl endbasic

# On Windows systems, this is tricky.  The easiest way is to clone this
# repository and then do the following from PowerShell:
.\.github\workflows\setup-sdl.ps1
cargo build --release --features=sdl endbasic

If you want to enable support for the Raspberry Pi hardware (along with the recommended graphics features), do this on the Raspberry Pi itself:

sudo apt install libsdl2-dev libsdl2-ttf-dev
cargo install --features=rpi,sdl endbasic

More information

Refer to the User's Manual for information on how to get started with EndBASIC.

Type HELP within the interpreter to access the Reference Manual.

The following documents provide more information about the structure of this repository:

Why EndBASIC?

EndBASIC started as part of my desire to teach programming to my own kids. I remember learning programming on an old Amstrad CPC 6128: the experience was unique in the sense that every command had immediate effect. Changing colors, drawing on the screen, or playing sounds were just a few keystrokes away after booting the computer, without the need to deal with separate editors and terminals. I've noticed a similar excitement in my kids when showing this to them via an emulator, so I thought I would replicate this in a more modern fashion. And here we are.

Because of this inspiration, EndBASIC's name stands for "E. and D.'s BASIC" following my kids first name initials.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].