Skip to content

Commit a3cea10

Browse files
committed
Deploying to gh-pages from @ endbasic/homepage@e9a453d 🚀
1 parent 647a223 commit a3cea10

27 files changed

+53
-53
lines changed

2020/04/hello-endbasic.html

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,15 @@
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"><title>Hello, EndBASIC! - EndBASIC</title>
22
<meta property="og:title" content="Hello, EndBASIC! - EndBASIC"><meta name=description content="Introducing EndBASIC, a new interpreter for a BASIC-like language that is inspired by Amstrad&rsquo;s Locomotive BASIC 1.1 and Microsoft&rsquo;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. The main idea behind EndBASIC is to provide a playground for learning the foundations of programming in a simplified environment."><meta property="og:description" content="Introducing EndBASIC, a new interpreter for a BASIC-like language that is inspired by Amstrad&rsquo;s Locomotive BASIC 1.1 and Microsoft&rsquo;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. The main idea behind EndBASIC is to provide a playground for learning the foundations of programming in a simplified environment."><meta name=author content="Julio Merino"><meta name=generator content="Hugo 0.145.0"><meta property="og:url" content="https://www.endbasic.dev/2020/04/hello-endbasic.html"><meta property="og:type" content="website"><link rel=canonical href=https://www.endbasic.dev/2020/04/hello-endbasic.html><link rel=alternate type=application/rss+xml title=EndBASIC href=https://www.endbasic.dev/feed.xml><link rel=stylesheet href=/sass/main.min.94bc0f965501d55c079e718289275e84eb7e29b2c86db96ac84f98a76cd28a79.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="p-lg-1 mx-auto my-1 text-white text-left"><h1 class="title display-4 font-weight-normal">Ready<br>Hello, EndBASIC!&#9608;</h1></div></div><article class=container><div class=highlight><pre tabindex=0 class=chroma><code class=language-basic data-lang=basic><span class=line><span class=cl><span class=kr>INPUT</span><span class=w> </span><span class=s2>&#34;Did you ever experience BASIC (true/false)&#34;</span><span class=p>;</span><span class=w> </span><span class=vg>answer</span><span class=o>?</span>
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="p-lg-1 mx-auto my-1 text-white text-left"><h1 class="title font-weight-normal">Ready<br>RUN "BLOG"<br>> Hello, EndBASIC!&#9608;</h1></div></div><article class=container><p class="text-muted text-right">Published on: April 22, 2020</p><div class=highlight><pre tabindex=0 class=chroma><code class=language-basic data-lang=basic><span class=line><span class=cl><span class=kr>INPUT</span><span class=w> </span><span class=s2>&#34;Did you ever experience BASIC (true/false)&#34;</span><span class=p>;</span><span class=w> </span><span class=vg>answer</span><span class=o>?</span>
55
</span></span><span class=line><span class=cl><span class=kr>IF</span><span class=w> </span><span class=vg>answer</span><span class=o>?</span><span class=w> </span><span class=kr>THEN</span>
66
</span></span><span class=line><span class=cl><span class=w> </span><span class=kr>PRINT</span><span class=w> </span><span class=s2>&#34;Great; you are in for a treat!&#34;</span>
77
</span></span><span class=line><span class=cl><span class=k>ELSE</span>
88
</span></span><span class=line><span class=cl><span class=w> </span><span class=kr>PRINT</span><span class=w> </span><span class=s2>&#34;Oh noes; try today?&#34;</span>
99
</span></span><span class=line><span class=cl><span class=kr>END</span><span class=w> </span><span class=kr>IF</span>
1010
</span></span></code></pre></div><p>I have pretty fond memories of my <a href=https://en.wikipedia.org/wiki/Amstrad_CPC>Amstrad CPC 6128</a> and its <a href=https://en.wikipedia.org/wiki/Locomotive_BASIC>Locomotive BASIC 1.1</a>. The experience was quite unique as the computer was ready to take commands in a couple of seconds, and those commands you typed had an immediate effect on the screen. Changing colors, drawing, playing sounds&mldr; were all at your fingertips, which was pretty exciting for a young boy. I can&rsquo;t tell exactly how old I was at the time, but probably not more than 6 or 7. This, combined with my father&rsquo;s own knowledge (which came primarily from the machine&rsquo;s <a href=http://www.cpcwiki.eu/manuals/AmstradCPC6128-hypertext-en-Sinewalker.pdf>user manual</a>), is how I got hooked into coding and how I ended up doing what I do today.</p><p>This same experience repeated later with the QBASIC integrated environment that shipped with MS-DOS 6.22, although I didn&rsquo;t play much with that: by that time, my father had alterady moved on to <a href=https://en.wikipedia.org/wiki/Clipper_(programming_language)>Clipper</a> and I was having fun with <a href=https://en.wikipedia.org/wiki/Borland_Sidekick>Borland SideKick Plus</a> as the &ldquo;IDE&rdquo;.</p><p>Anyway&mldr; fast-forward to 2020. I now have kids of my own and, having shown QuickBASIC 4.5 to the oldest (who is 7) via DosBox on a Raspberry Pi&mldr; I could sense similar excitement. I just had to type a bunch of <code>PRINT</code> and <code>COLOR</code> commands to get her to want to try stuff on her own. So I thought&mldr; this is cool, but it&rsquo;s awkward to be confined to an old environment. Let me try to build a similar experience using newer technologies.</p><p>At first, I took Python and <a href=https://twitter.com/jmmv/status/1244275334775820290>wrote a trivial API and REPL</a> to simulate those basic commands&mldr; but this hack became limiting by its own hackiness very quickly. Should I write a real language parser then? Should I?</p><p>Of course the correct answer to that is <em>should <strong>not</strong></em>, but I did it anyway. How hard could it be? I had not written a full-blown parser since the compilers course in University (which was pretty awesome by the way), and having something of my own would let me tweak it at will to showcase different stuff to my kids. Plus&mldr; I needed to distract my mind during these strange times.</p><p>So here we are. I give you <em>&ldquo;E. and D.&rsquo;s BASIC&rdquo;</em>. Or, rather, EndBASIC.</p><p>This first release of EndBASIC is extremely simple: the language is very limited and you really cannot do anything fancy with it. The goal here was to lay out the foundations to build new features upon what-I-think-is a solid core&mdash;which, by the way, comes with extensive testing and works on Linux, macOS, and even Windows. (Tests? For a fun project? Of course! They are a must. How do you think I will be iterate on this otherwise?)</p><p>For context, the original prototype had many more features than what&rsquo;s included in 0.1.0, but I yanked them out of the tree to focus on solidifying the language interpreter. Adding those extra features should be relatively simple from here on, and I&rsquo;ll be doing that soon. Things you can expect are a REPL interface with a bunch of screen manipulation commands and an in-line editor.</p><p>Obviously, due to the nature of this project, I do not expect a ton of usage or interest, but it has been super fun to build so far. And it has been an excuse to continue playing with Rust 😁</p><p>With that, head on to the project&rsquo;s page for more details: <a href=https://www.endbasic.dev/>https://www.endbasic.dev/</a></p><div class="row post-links"><div class="col-6 text-center"><span><a href=https://www.endbasic.dev/2020/05/endbasic-0.2.0.html>&#171; Next post</a></span></div><div class="col-6 text-center"><span><a href=https://www.endbasic.dev/about.html>Previous post &#187;</a></span></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>
1111
<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
12-
<small class="d-block text-muted">Julio Merino &copy; 2020-2024</small></div></div></div></footer><script type=module>
12+
<small class="d-block text-muted">Julio Merino &copy; 2020&ndash;2025</small></div></div></div></footer><script type=module>
1313
const SITE_ID = '6a633c2c-7fda-11ec-86e4-1cfd087199c2';
1414

1515
import { addAnchorsToHeaders, RequestsClient } from "\/js\/main.401f0b9ece66070cd6f0313349349320e8f07f87ba76262d59bb3e2093c49b58.js";

0 commit comments

Comments
 (0)