Skip to content

Commit 7aea902

Browse files
committed
Deploying to gh-pages from @ endbasic/homepage@bfe8487 🚀
1 parent c667ed4 commit 7aea902

File tree

1 file changed

+16
-16
lines changed

1 file changed

+16
-16
lines changed

index.html

Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,22 @@
11
<!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"><meta property="twitter:site" content="@jmmv"><title>EndBASIC</title>
22
<meta property="og:title" content="EndBASIC"><meta property="twitter: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 property="twitter: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 …"><meta name=author content="Julio Merino"><meta property="twitter:creator" content="@jmmv"><meta name=generator content="Hugo 0.145.0"><meta property="og:url" content="https://www.endbasic.dev/"><meta property="og:type" content="website"><meta property="twitter:card" content="summary"><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.ffa3eaafc8466ea52e84bfd03f6b1deae7b879bc5972e04109196cb3e2366532.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>
33
<button class=navbar-toggler type=button data-toggle=collapse data-target=#navbarToggler aria-controls=navbarToggler aria-expanded=false aria-label="Toggle navigation">
4-
<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 mx-lg-1 p-3 index-tile"><div class=col-lg-6><img src=/images/front-intro-console.png></div><div class=col-lg-6><div class=copy><h2>Back to basics</h2><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>💌 Motivation letter 💌</a><br><a class="btn btn-primary btn-lg" href=docs.html>📘 Read the docs 📘</a></p></div></div><div class="row my-3 mx-lg-1 p-3 index-tile"><div class=col-lg-6><img src=/images/2025-06-06-endbox-pair.jpg width=640></div><div class=col-lg-6><h2>A microcomputer just for EndBASIC</h2><div class=copy><p>EndBASIC is not just an interpreter project: it's a retro microcomputer too! The EndBOX, shown above, is an embedded device that boots straight into EndBASIC, offering you a quick programming playground and a game-producing platform.</p></div><p><a class="btn btn-primary btn-lg" href=/2025/06/unveiling-the-endbox.html>📣 Read the unveiling 📣</a><br><a class="btn btn-primary btn-lg" href=https://www.buymeacoffee.com/jmmv>💰 Make this happen 💰</a></p></div></div><div class="row my-3 mx-lg-1 p-3 index-tile"><div class=col-lg-6><img src=/images/front-games-arka.png></div><div class=col-lg-6><h2>Play and edit games</h2><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><a class="btn btn-primary btn-lg" href=gallery.html>📐️ Browse projects 📐️</a></p></div></div><div class="row my-3 mx-lg-1 p-3 index-tile"><div class=col-lg-6><p><img src=/images/front-web-cloud.png></p></div><div class=col-lg-6><h2>Built for the web and the cloud</h2><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 to share ☁️</a></p></div></div><div class="row my-3 mx-lg-1 p-3 index-tile"><div class=col-lg-6><img src=/images/front-rpi3-blink.png></div><div class=col-lg-6><h2>Tinker with hardware</h2><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 binaries 👷</a><br><a class="btn btn-primary btn-lg" href=docs.html#hw>🤖 Control hardware 🤖</a></p></div></div><div class="row my-3 mx-lg-1 p-3 index-tile"><div class=col-lg-6><pre>async fn parse_sample_input_and_extract_values() -> Result<()> {
5-
const INPUT: &str = r#"
6-
foo_value = 123
7-
enable_bar = (foo_value > 122)
8-
'enable_baz = "this is commented out"
9-
"#;
10-
11-
let mut machine = Machine::default();
12-
machine.exec(&mut INPUT.as_bytes())).await.unwrap();
13-
14-
println!("foo_value is {}", machine.get_var_as_int("foo_value")?);
15-
println!("enable_bar is {}", machine.get_var_as_bool("enable_bar")?);
16-
machine.get_var_as_string("enable_baz")?;
17-
18-
Ok(())
19-
}</pre></div><div class=col-lg-6><h2>Embed the interpreter in Rust</h2><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 embedding ⚙️</a><br><a class="btn btn-primary btn-lg" href=https://github.com/endbasic/endbasic/>🐙 Check out 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>
4+
<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 mx-lg-1 p-3 index-tile"><div class=col-lg-6><img src=/images/front-intro-console.png class=img-fluid></div><div class=col-lg-6><div class=copy><h2>Back to basics</h2><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>💌 Motivation letter 💌</a><br><a class="btn btn-primary btn-lg" href=docs.html>📘 Read the docs 📘</a></p></div></div><div class="row my-3 mx-lg-1 p-3 index-tile"><div class="col-lg-6 order-lg-last"><img src=/images/2025-06-06-endbox-pair.jpg class=img-fluid></div><div class=col-lg-6><h2>A microcomputer just for EndBASIC</h2><div class=copy><p>EndBASIC is not just an interpreter project: it's a retro microcomputer too! The EndBOX, shown above, is an embedded device that boots straight into EndBASIC, offering you a quick programming playground and a game-producing platform.</p></div><p><a class="btn btn-primary btn-lg" href=/2025/06/unveiling-the-endbox.html>📣 Read the unveiling 📣</a><br><a class="btn btn-primary btn-lg" href=https://www.buymeacoffee.com/jmmv>💰 Make this happen 💰</a></p></div></div><div class="row my-3 mx-lg-1 p-3 index-tile"><div class=col-lg-6><img src=/images/front-games-arka.png class=img-fluid></div><div class=col-lg-6><h2>Play and edit games</h2><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><a class="btn btn-primary btn-lg" href=gallery.html>📐️ Browse projects 📐️</a></p></div></div><div class="row my-3 mx-lg-1 p-3 index-tile"><div class="col-lg-6 order-lg-last"><p><img src=/images/front-web-cloud.png class=img-fluid></p></div><div class=col-lg-6><h2>Built for the web and the cloud</h2><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 to share ☁️</a></p></div></div><div class="row my-3 mx-lg-1 p-3 index-tile"><div class=col-lg-6><img src=/images/front-rpi3-blink.png class=img-fluid></div><div class=col-lg-6><h2>Tinker with hardware</h2><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 binaries 👷</a><br><a class="btn btn-primary btn-lg" href=docs.html#hw>🤖 Control hardware 🤖</a></p></div></div><div class="row my-3 mx-lg-1 p-3 index-tile"><div class="col-lg-6 order-lg-last"><div class=highlight><pre tabindex=0 class=chroma><code class=language-rust data-lang=rust><span class=line><span class=cl><span class=k>async</span><span class=w> </span><span class=k>fn</span> <span class=nf>parse_sample_input_and_extract_values</span><span class=p>()</span><span class=w> </span>-&gt; <span class=nb>Result</span><span class=o>&lt;</span><span class=p>()</span><span class=o>&gt;</span><span class=w> </span><span class=p>{</span><span class=w>
5+
</span></span></span><span class=line><span class=cl><span class=w> </span><span class=k>const</span><span class=w> </span><span class=no>INPUT</span>: <span class=kp>&amp;</span><span class=kt>str</span> <span class=o>=</span><span class=w> </span><span class=sa>r</span><span class=s>#&#34;
6+
</span></span></span><span class=line><span class=cl><span class=s> foo_value = 123
7+
</span></span></span><span class=line><span class=cl><span class=s> enable_bar = (foo_value &gt; 122)
8+
</span></span></span><span class=line><span class=cl><span class=s> &#39;enable_baz = &#34;this is commented out&#34;
9+
</span></span></span><span class=line><span class=cl><span class=s> &#34;#</span><span class=p>;</span><span class=w>
10+
</span></span></span><span class=line><span class=cl><span class=w>
11+
</span></span></span><span class=line><span class=cl><span class=w> </span><span class=kd>let</span><span class=w> </span><span class=k>mut</span><span class=w> </span><span class=n>machine</span><span class=w> </span><span class=o>=</span><span class=w> </span><span class=n>Machine</span>::<span class=n>default</span><span class=p>();</span><span class=w>
12+
</span></span></span><span class=line><span class=cl><span class=w> </span><span class=n>machine</span><span class=p>.</span><span class=n>exec</span><span class=p>(</span><span class=o>&amp;</span><span class=k>mut</span><span class=w> </span><span class=no>INPUT</span><span class=p>.</span><span class=n>as_bytes</span><span class=p>())).</span><span class=k>await</span><span class=p>.</span><span class=n>unwrap</span><span class=p>();</span><span class=w>
13+
</span></span></span><span class=line><span class=cl><span class=w>
14+
</span></span></span><span class=line><span class=cl><span class=w> </span><span class=fm>println!</span><span class=p>(</span><span class=s>&#34;foo_value is </span><span class=si>{}</span><span class=s>&#34;</span><span class=p>,</span><span class=w> </span><span class=n>machine</span><span class=p>.</span><span class=n>get_var_as_int</span><span class=p>(</span><span class=s>&#34;foo_value&#34;</span><span class=p>)</span><span class=o>?</span><span class=p>);</span><span class=w>
15+
</span></span></span><span class=line><span class=cl><span class=w> </span><span class=fm>println!</span><span class=p>(</span><span class=s>&#34;enable_bar is </span><span class=si>{}</span><span class=s>&#34;</span><span class=p>,</span><span class=w> </span><span class=n>machine</span><span class=p>.</span><span class=n>get_var_as_bool</span><span class=p>(</span><span class=s>&#34;enable_bar&#34;</span><span class=p>)</span><span class=o>?</span><span class=p>);</span><span class=w>
16+
</span></span></span><span class=line><span class=cl><span class=w> </span><span class=n>machine</span><span class=p>.</span><span class=n>get_var_as_string</span><span class=p>(</span><span class=s>&#34;enable_baz&#34;</span><span class=p>)</span><span class=o>?</span><span class=p>;</span><span class=w>
17+
</span></span></span><span class=line><span class=cl><span class=w>
18+
</span></span></span><span class=line><span class=cl><span class=w> </span><span class=nb>Ok</span><span class=p>(())</span><span class=w>
19+
</span></span></span><span class=line><span class=cl><span class=w></span><span class=p>}</span></span></span></code></pre></div></div><div class=col-lg-6><h2>Embed the interpreter in Rust</h2><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 embedding ⚙️</a><br><a class="btn btn-primary btn-lg" href=https://github.com/endbasic/endbasic/>🐙 Check out 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>
2020
<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
2121
<small class="d-block text-muted">Julio Merino &copy; 2020&ndash;2025</small></div></div></div></footer><script data-name=BMC-Widget data-cfasync=false src=https://cdnjs.buymeacoffee.com/1.0.0/widget.prod.min.js data-id=jmmv data-description="Support me on Buy me a coffee!" data-message data-color=#FF813F data-position=Right data-x_margin=18 data-y_margin=18></script><script type=module>
2222
const SITE_ID = '6a633c2c-7fda-11ec-86e4-1cfd087199c2';

0 commit comments

Comments
 (0)