-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathindex.html
37 lines (32 loc) · 9.03 KB
/
index.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
<!doctype html><html lang=en xmlns:fb=http://ogp.me/ns/fb#><head><meta charset=utf-8><meta http-equiv=x-ua-compatible content="IE=edge"><meta name=viewport content="width=device-width,initial-scale=1,shrink-to-fit=no"><meta property="og:site_name" content="EndBASIC"><title>EndBASIC</title><meta property="og:title" content="EndBASIC"><meta name=description content="The EndBASIC programming language. A retro-looking integrated environment designed to allow learning the foundations of programming and computing. Runs on the web for simplicity, but also on your machine."><meta property="og:description" content="The EndBASIC programming language. A retro-looking integrated environment designed to allow learning the foundations of programming and computing. Runs on the web for simplicity, but also on your machine."><meta name=author content="Julio Merino"><meta name=generator content="Hugo 0.111.3"><meta property="og:url" content="https://www.endbasic.dev/"><meta property="og:type" content="website"><link rel=canonical href=https://www.endbasic.dev/><link rel=alternate type=application/rss+xml title=EndBASIC href=https://www.endbasic.dev/feed.xml><link rel=stylesheet href=/sass/main.min.1fd0745ddb73c7e146f488aadf028ff6e32fb46bb9fd282336b4998e2fe64a01.css><link rel=stylesheet href=/css/chroma.css></head><body><nav class="navbar navbar-expand-sm navbar-dark bg-dark sticky-top"><a class=navbar-brand href=/>EndBASIC</a>
<button class=navbar-toggler type=button data-toggle=collapse data-target=#navbarToggler aria-controls=navbarToggler aria-expanded=false aria-label="Toggle navigation">
<span class=navbar-toggler-icon></span></button><div class="collapse navbar-collapse" id=navbarToggler><ul class="navbar-nav mr-auto mt-2 mt-lg-0"><li class=nav-item><a class=nav-link href=/about.html>About</a></li><li class=nav-item><a class=nav-link href=/blog.html>Blog</a></li><li class=nav-item><a class=nav-link href=/gallery.html>Gallery</a></li><li class=nav-item><a class=nav-link href=/download.html>Download</a></li><li class=nav-item><a class=nav-link href=/docs.html>Documentation</a></li><li class=nav-item><a class=nav-link href=/community.html>Community</a></li></ul></div></nav><div class="position-relative overflow-hidden p-3 p-md-5 m-md-3 text-center bg-dark bg-grid"><div class="col-md-8 p-lg-5 mx-auto my-5 text-white"><h1 class="title display-4 font-weight-normal">EndBASIC</h1><p class="lead font-weight-normal">BASIC interpreter + DOS environment, reimagined.</p><a class="btn btn-primary btn-lg" href=https://repl.endbasic.dev/ target=_new>Launch interpreter</a></div></div><article class=container-fluid><div class="row my-3"><div class="col mx-md-3 p-3 index-tile"><h2>Back to basics</h2><p><img src=/images/front-intro-help.png>
<img src=/images/front-intro-console.png></p><div class=copy><p>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.</p><p>EndBASIC's primary goal is to offer a simplified and restricted DOS-like environment to learn the foundations of programming and computing, and focuses on features that quickly reward the learner. These include a built-in text editor, commands to manipulate the screen, commands to interact with shared files, and even commands to interact with the hardware of a Raspberry Pi.</p></div><p><a class="btn btn-primary btn-lg" href=about.html>Read the motivation letter</a>
<a class="btn btn-primary btn-lg" href=docs.html>Read the docs</a>
<a class="btn btn-primary btn-lg" href=https://repl.endbasic.dev/ target=_new>Launch interpreter</a></p></div></div><div class="row my-3"><div class="col mx-md-3 p-3 index-tile"><h2>Play and edit games</h2><p><img src=/images/front-games-arka.png>
<img src=/images/front-games-life.png></p><div class=copy><p>A major goal of EndBASIC is to provide a playful environment in which to recreate old-style and simple videogames with ease, all while learning the foundations of programming. Proof of this is that, in just a couple hundred lines of code, you can replicate classics like Pong, Arkanoid, or Snake, and even implement more complex programs like Conway's Game of Life.</p></div><p><div class=dropdown><button class="btn btn-lg btn-primary dropdown-toggle" type=button id=dropdownMenuButton data-toggle=dropdown aria-haspopup=true aria-expanded=false>
Launch a demo game</button><div class=dropdown-menu aria-labelledby=dropdownMenuButton><a class=dropdown-item href="https://repl.endbasic.dev?run=jmmv/arka.bas" target=_new>Arkanoid clone</a>
<a class=dropdown-item href="https://repl.endbasic.dev?run=jmmv/life.bas" target=_new>Game of Life</a>
<a class=dropdown-item href="https://repl.endbasic.dev?run=jmmv/snake.bas" target=_new>Snake clone</a></div></div></p></div></div><div class="row my-3"><div class="col mx-md-3 p-3 index-tile"><h2>Built for the web and the cloud</h2><p><img src=/images/front-web-graphics.png>
<img src=/images/front-web-cloud.png></p><div class=copy><p>EndBASIC is a web-native application that runs locally on your browser thanks to WASM. This allows you to enjoy the environment without having to install anything on your computer, and also lets you run the interpreter on mobile devices.</p><p>And... what are your creations if you are not able to share them with the world? In the 1980s, people shared their programs as magazine listings and you'd have to painfully type them in. That's a thing of the past though: EndBASIC lets you share your programs via a cloud file sharing service.</p></div><p><a class="btn btn-primary btn-lg" href=docs.html#cloud>Learn how to share</a></p></div></div><div class="row my-3"><div class="col mx-md-3 p-3 index-tile"><h2>Tinker with hardware</h2><p><img src=/images/front-rpi3-blink.png>
<img src=/images/front-rpi3-lcd.png></p><div class=copy><p>Outside of the web, EndBASIC can run as a local application on your desktop OS and currently supports Linux, macOS, Windows, and many other Unix-like systems. For the most part, the web and local interfaces expose the exact same features---with exceptions around hardware management.</p><p>Speaking of hardware management, EndBASIC is the perfect companion for a Raspberry Pi. With support for graphics, GPIO, and even an LCD, you can set up an exciting playful toy. Control physical buttons and LEDs, or run the aforementioned games on a tiny portable device.</p></div><p><a class="btn btn-primary btn-lg" href=download.html>Download prebuilt binaries</a>
<a class="btn btn-primary btn-lg" href=docs.html#hw>Learn to control hardware</a></p></div></div><div class="row my-3"><div class="col mx-md-3 p-3 index-tile"><h2>Embed the interpreter in Rust</h2><pre>async fn parse_sample_input_and_extract_values() {
const INPUT: &str = r#"
foo_value = 123
enable_bar = (foo_value > 122)
'enable_baz = "this is commented out"
"#;
let mut machine = Machine::default();
machine.exec(&mut INPUT.as_bytes())).await.unwrap();
println!("foo_value is {}", machine.get_var_as_int("foo_value").unwrap());
println!("enable_bar is {}", machine.get_var_as_bool("enable_bar").unwrap());
machine.get_var_as_string("enable_baz").unwrap_err();
}</pre><div class=copy><p>EndBASIC is a modern Rust implementation of a retro language, but that doesn't mean it is stuck with just writing old programs. With a tiny and clean core, the interpreter can be embedded into your own compiled programs to extend them with a scripting language. The EndBASIC VM starts empty and you can precisely decide which commands and functions to expose within in, allowing for safe execution of untrusted code.</p><p>Oh, and by the way: EndBASIC is free software.</p></div><p><a class="btn btn-primary btn-lg" href=/2021/01/embedding-endbasic.html>Learn more about embedding</a>
<a class="btn btn-primary btn-lg" href=https://github.com/endbasic/endbasic/>Check it out in GitHub!</a></p></div></div></article><footer class="pt-5 pb-3"><div class=container><div class=row><div class="col-md-8 text-left"><form class=form-inline action=https://hugo-dynamic.endbasic.dev/api/sites/6a633c2c-7fda-11ec-86e4-1cfd087199c2/subscribers/add method=post><input type=text name=email placeholder="Enter your email" class="form-control input-sm text-center mx-1" size=20>
<button type=submit class="btn btn-sm btn-light mx-1">Subscribe to updates</button></form></div><div class="col-md-4 text-right">EndBASIC
<small class="d-block text-muted">Julio Merino © 2020-2024</small></div></div></div></footer><script type=module>
const SITE_ID = '6a633c2c-7fda-11ec-86e4-1cfd087199c2';
import { addAnchorsToHeaders, RequestsClient } from "\/js\/main.a02d06c067e543f21935526327af3100473c02252e0866297914856e56a033cb.js";
new RequestsClient(SITE_ID).saveRequest();
addAnchorsToHeaders();
</script><noscript><img src="https://hugo-dynamic.endbasic.dev/api/sites/6a633c2c-7fda-11ec-86e4-1cfd087199c2/pages/aHR0cHM6Ly93d3cuZW5kYmFzaWMuZGV2Lw==/stamp.gif" style=display:none></noscript></body></html>