With this I can pinpoint the exact first bug I created, and debugged. The year was 1991 +/- 1, the place was Canberra Australia. For unknown reasons that changed my life forever, my Dad got on board with this "computer" thing and bought an "Osborne" 486 PC. That year I went to the school fete and, for AUD 0.20, picked up a used copy of this book, leafed through the pages, settled on Hammurabi, and after some struggle and discussions with friends, managed to run Q-Basic and typed this program into it. And it sort of worked, but something was wrong, and after much experimentation I found that on line 11 (only today, with this post can, I finally state the true line number) I had written "LET P=P+1" instead of the correct "LET P=P+I". After a fair bit (days) of trial and error and 10-year-old reasoning, I figured that out, and so it began.
I was typing those programs into a TRS-80 Color Computer which had a very good implementation of Microsoft BASIC enhanced with commands to draw lines, circles and flood fills on a high resolution screen. The text mode only had 32 characters across, but you could get most programs to work on it.
That generation of games was intended to be run on a teleprinter so they did not use any graphics other than drawing scenes with ASCII characters and didn't use any commands to write text at specific places on the screen. Later in the 1980s you saw books with more complex BASIC games that implemented shooters and Pac-Man clones and such but all of those were specific to a particular computer whereas Ahl's games were portable even though you'd often have to modify the programs a little to get them to work.
By 1991 though I was done with BASIC. I had a ROM cartridge with an assembler by 1982 or so but I was still writing a lot of BASIC. Circa 1985 I was doing a lot with the OS-9 operating system which had a C compiler and BASIC09 which was particularly advanced, I remember writing a FORTH in 6809 assembly. Circa 1987 I had a 286 PC which had a wide range of programming languages including various BASICs, but Turbo Pascal was my favorite, though I switched to C in college (where I was in '91) because C was portable to the 32-bit workstations they had.
[1] https://en.wikipedia.org/wiki/Digital_Equipment_Corporation
Pretty sure these first few languages affected or shaped my childhood mental development somehow, for better or worse, and how I think about and express programs. Especially with BASIC, I was so young I was still learning how to think and talk in a human language, along with how to think with and talk to a computer.
There are modern variants like QB64, but personally I find that BASIC really loses a lot of its appeal/flavor when you move from an interpretative language to a compiled one.
I made this a while ago and it ran beautifully in DosBox on my Mac:
https://gitlab.com/tkchia/GW-BASIC
Also do a pip3 install pcbasic to get this great reimplementation of BASICA/GW-BASIC done in python for modern systems: http://robhagemans.github.io/pcbasic/
play "cdefgab>c<bagfedc"
and have it simply work.QuickBasic was the original, with QBASIC being a cut down version of it bundled with DOS.
BTW, on Basic, I had MISSION.BAS for MBASIC.COM under CP/M.
Is there any public Basic to run it? I tried bas, blassic, bwbasic, yours, and I had no luck.
I installed dosbox-x out of curiosity, then saw you could load Windows 9x on top of it. I chose the recommended Win98SE. It took a bit of tweaking to get the drivers loaded for 256 color display and the sound card, but I was just able to play the game. Because DosBox emulates the machine (I think this is it, anyway.), there are no issues with DirectX rendering. I was able to play through the Ascent of Egypt learning campaign for the first time since 2009 or so.
Maybe next I'll try to loading up a version of BASIC. I'd have to rewind back to 2000 or so for using Visual Basic in high school computer lab.
Thanks again, getting to play AoE without having to buy an XP-era laptop, was a real treat.
It'll be interesting if you can get the original VB to run. Fun fact there was actually a visual basic for dos which would let you build TUIs out of extended ASCII.
I ended up with a pretty nice subset.
Could draw a window with fields, pop a number of them up on top of that window, if desired.
Used that to write a small pile of DOS programs which computed various manufacturing related values used in sheet metal work.
I bet many are unaware of many dynamism is still present in VB.NET, pity BASIC is no longer a darling language at Microsoft headquarters, and gets the bench on Sunday games.
http://www.moria.de/~michael/bas/
There's no need to run QB 4.5 and a full VM.
There's something refreshing about seeing things described in different ways than they are now. I always wonder if some long forgotten words of phrasings will make their way back into public consciousness.
I'm somewhat disenchanted with commercial computing from the social media and smartphone era to the modern AI era, even though it is impressive and technically interesting.
A clever friend of mine wrote BASIC games that he sold back then. I think they had a bit of Z80 assembler built into it too.... Can't remember what names of them were though.
The 'hires' graphics mode (511*255, monochrome) were encoded into sprites. There were only 128 characters from memory. There were all sorts of tricks to try and get around that issue.
The best games used the sprites plonked into char positions.
It was a bit weird to program for, as you said the basic was not quite the same as the popular platforms. It did mean you learned a lot about the machine itself, how memory was laid out, how to get those PCG graphics right.
It’s funny now to be able to see very similar cultures sprang up around less successful machines in other countries.
Don Inman, Ramon Zamora, Bob Albrecht.
TRS-80: https://www.amazon.com/Advanced-TRS-80-Level-II-BASIC/dp/047...
TI-99/4a: https://www.amazon.com/Introduction-TI-BASIC-TI-99-4A/dp/081...
Visual basic for dos: https://www.amazon.com/Visual-MS-DOS-Prentice-Innovative-Tec...
VIC-20: https://www.amazon.com/Vic-BASIC-User-Friendly-Guide/dp/0835...
Here is the full TRS-80 text: https://archive.org/details/trs-80-level-ii-basic-a-self-tea...
Who were these guys? They were all over the map.
Edit: It seems that Wiley has published a number of books in the self-teaching guide series:
https://www.amazon.com/Wiley-Self-Teaching-Guides-17-book-se...
The key thing about B+ is that it's a compiled BASIC, it compiled into P-Code, that was then executed. This is in contrast to MS-BASIC which interpreted the parsed token stream over and over.
But, there is no way that the entire thing was compiled each time you said "RUN", that would have been much to expensive. But, it was compiled. At the same time, it kept the entirety of the BASIC program in memory, as text. So, it had to store both the raw text form, and the compiled form. Seems quite expensive given the limits of machines back in the day.
So, I've always been interested in the design and engineering history of B+.
Similarly, I'd love to know where Gates and Allen got the idea to use a tokenized form to store the program, as its an elegant solution in a tight memory budget to store the program source and runtime.
They're clever guys, and maybe they made it up out of whole cloth, but it would be interesting to know what may have inspired them to do it that way. It wasn't BASIC-PLUS, as that's not how it worked.
I have a few books from the Micro Adventures series and they can still be found on eBay for around $5 - $10 USD each, I think. Fun times, indeed!
There's Cursor[0], a compiler with an editor from 1994, unfortunately proprietary and not further developed. Maybe someone could get a hold of the author to try and get them to open the source code for preservation and potential further development.
There's also aqb[1], a reboot, MIT license.
And a very nice alternative in AmigaOS, Blitzbasic, got its source code opened and forked, with renewed development for AmigaOS as AmiBlitz3[2], as well as ports to other platforms.
0. https://aminet.net/package/dev/basic/Cursor
Of course even though the 8-bit was only running at ~1Mhz compared to the Amiga's ~7Mhz, the 8-bit's ROM BASIC was written in hand-coded assembler (and by some really good programmers, including BillG himself (in the case of the Radio Shack Color Computer I used)). I think AmigaBASIC must have been written in C and designed with portability in mind.
As for C wannabe, BASIC got famous before C had any meaningful meaning outside Bell Labs.
Dartmouth BASIC and timesharing were remarkable achievements: a simplified version of Fortran that could be learned in an afternoon but could be used for a wide variety of programs, including games; a fast, interactive compiler; and efficient resource usage and multiplexing that enabled a single machine to be shared by dozens (?) of interactive users. BASIC was also simple enough that it could be implemented compactly and efficiently on 8-bit microcomputers, while retaining its ease of learning for beginners and non-experts. And you could still write/run games with it.
So there is nothing like wanting to be like C, when its mainstream adoption predates C.
Actually I am quite thankful to have learnt systems programming on 8 and 16 bit systems, with BASIC and Pascal variations, macro Assemblers, exactly long before C's mainstream adoption, because I am not tainted with the idea before C there was nothing else, as it eventually became a common myth.
On Pascal, good for DOS, and maybe the Classic Mac, but even under Unix there were really good underused platforms, like TCL/Tk +SQLite. More crude than VB, for sure; but, seriously, most of the time a quick tool in that language would cover the 90% of the needs of any corporation.
But it turned out it was basically unusable on a TV because of the narrow cursor and difficult to read font. But AMOS was great, and we built a simple one-room adventure game prototype on it.
My little brother (60+yr old) wants to get back into programming after many years of business analysis, project management, yada yada, but he was originally a programmer. I suggested Python, but I think he might be happier with BASIC. He's retired now, so doesn't need/want to do it for a job.
https://github.com/antirez/LOAD81
It has all the bells and whistles of a BASIC environment - easy, simple editing, fast switching between code and runtime, and just enough of an onboard SDK to do hires graphics and so on .. but with the Lua language, instead of BASIC.
Maybe your little brother will get a kick out of this .. keep an eye for some of the forks of it too, which provide other functionality such as joystick and sound support .. sooner or later, someone will bolt on networking and maybe even REDIS support, and we’ll have a whole new era of simple Lua-based client programming on our doorstep.
DEC could have ruled the world.
No way.
DEC's entire corporate structure was based on a particular business model that demanded their products sell for tens of thousands to hundreds of thousands per sale.
They tried many times to break out of this box, but failed every time. There was simply too much of the company invested in selling into a particular size of customer, and its weight meant that they could not survive, for instance, selling individual small computers to end users.
You can see this right to the end: even when they came out with Alpha it was targeted 100% to what was then the high-end of the new server-based market. Sure they made workstations, but only grudgingly, and with the hope that it would be part of a network containing at least one of their higher-end servers.
Is this why the VT180 never got anywhere? (Didn't DEC only sell it to employees, or something like that?)
In retrospect it's mindboggling to think that DEC never marketed the upgrade kit to the massive existing VT100 installed base as an easy way to move into personal computers for less money. DEC had name recognition in corporate America in a way that Apple and Commodore did not, let alone the likes of North Star, Morrow, or Cromemco.
One of my favorite machines of the BASIC era - the Oric-1/Atmos - won the competition multiple times in the last few years (though didn’t this year), and I really enjoy going through these games and observing just how rich a few lines of BASIC code could truly be.
In this years list of entries, there’s a Pac-Man clone consisting of a single corridor, which is surprisingly fun, a re-interpretation of the Space Invaders gameplay mechanics which, in hindsight just seems so obvious yet so delightfully simple, a full-blown real-time strategy game, and countless arcade-style minigames .. all implemented in just 10 lines of BASIC!
As a longtime follower of this competition, I really enjoy the nostalgia factor, and as its a multi-platform activity, its also really fun to learn the quirks and features of different systems BASIC implementations, as well. (Of course, I have a lot of these machines in my retro collection too, so this gives me a yearly scheduled reason to dust some of them off and give them a try)
If you haven’t heard of this, yet yearn to know more about BASIC, definitely check it out! The scene has been getting cooler and more diverse as the years go by, and it has to be said that the competition gets more and more effective as the years go by. The beauty and aesthetics of the 10 lines of code that give us a Pac-Man clone really imbues a sense of zen mastery .. and then there is the realization that, if this is what can be done in 10 lines only, imagine if the rest of the computers memory was then used as effectively.
Plus, there is just no way modern platforms can attain this level of programming efficiency and style. It’s really telling that BASIC, a much overlooked language, still contains so much fundamental power, unmatched in the modern era.
Here’s the link, one more time - BASIC fans, get yourselves ready for a real treat:
(Disclaimer: I was invited to judge this years entries, so yeah .. I’m a bit of a BASIC10LINER pimp. I had so much fun with this in the last few weeks!)
Updating “101 Basic Computer Games” for 2021 - https://news.ycombinator.com/item?id=26273866 - Feb 2021 (65 comments)
Play Basic Computer Games in the Browser - https://news.ycombinator.com/item?id=34377776 - Jan 2023 (1 comment)
Basic Computer Games (1978) - https://news.ycombinator.com/item?id=28572761 - Sept 2021 (12 comments)
Basic Computer Games (ported to C#, Java, JavaScript, Python, Ruby, VB.NET) - https://news.ycombinator.com/item?id=26188324 - Feb 2021 (3 comments)
BASIC Computer Games - https://news.ycombinator.com/item?id=19604142 - April 2019 (120 comments)
BASIC Computer Games (1978) - https://news.ycombinator.com/item?id=9026063 - Feb 2015 (31 comments)
Atari Archives: BASIC Computer Games - https://news.ycombinator.com/item?id=3200133 - Nov 2011 (23 comments)
BASIC Computer Games Book, published in 1978 - https://news.ycombinator.com/item?id=1866103 - Nov 2010 (36 comments)
There's also
More Basic Computer Games - https://news.ycombinator.com/item?id=41984335 - Oct 2024 (1 comment)
Basic Star Trek Games - https://news.ycombinator.com/item?id=42709559 - Jan 2025 (1 comment)
BASIC Star Trek Games - https://news.ycombinator.com/item?id=43070752 - Feb 2025 (2 comments)
Vintage Basic - Games - https://news.ycombinator.com/item?id=25502018 - Dec 2020 (1 comment)
https://github.com/coding-horror/basic-computer-games
anyone can contribute and issue a pull request for the targeted language
Yes, everyone had and has run these either on micros or bwbasic/blassic/bas, but porting these to Forth would be really cool.
Walter Bright said here that he learned programming from this book.
* The original Dartmouth BASIC turned into a wide variety of mainframe versions. These are marked by the use of the CHANGE statement and supporting the MAT statements. * HP's dialect had array-based strings (like C) and string slicing... LET A$[1,6]="HELLO. * Timeshare's SUPER BASIC, which turned into BASIC-PLUS, which turned into MS BASIC, lacked those features and instead used MID/LEFT/RIGHT.
There's many other more minor changes from dialect to dialect, but those are the main differences.
Example:
10 PRINT "HELLO ";
20 GOTO 10
This would create an infinite loop that you could break with Ctrl+C.You could then type:
15 PRINT "WORLD ";
And when you listed the source code (with the command LIST) you would see: 10 PRINT "HELLO ";
15 PRINT "WORLD ";
20 GOTO 10
GOTO MenuChoiceNum\*100 + 1000
GOSUB MenuChoiceNum\*100 + 1000
Line editing also worked well on microcomputers with cursor movement (like the C64) - you could edit code in place just by overtyping and hitting "return" for the appropriate line.
On a slightly unrelated note, teletypes date back to the 19th century telegraph (and typewriter) era.
AX.25 and qpsk didn't manage to replace it.
I can't recall if the Apple ][ BASIC had it built in, or if Beagle Brothers utility software could do it, but it was possible somehow.
Super Star Trek it's good too; and there are modern ports such as Super Star Trek from ESR in Python which expand the game a lot.
Also, BSD users have installed the old one, written in C, at /usr/games/trek.
man trek
> This folder contains the programs found in the March 1975 3rd printing of David Ahl's 101 BASIC Computer Games, published by Digital Equipment Corp.