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.
They built a Route 93 bypass around Manchester, NH and a new mall in 1980, not long after that I bought a copy of "101 BASIC Computer Games" from the Digital [1] Store there (really!) This was the minicomputer edition that David Ahl had published when he worked at DEC, not the microcomputer edition that he produced at Creative Computing magazine.
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.
I had a similar early learning experience. Grew up on BASIC, LOGO, a bit of 8086 assembly, Turbo Pascal, C.
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.
If you are craving a BASIC fix, I highly recommend getting a DOS emulator like DosBos-X and just installing a copy of Quickbasic 4.5 (which has a compiler among other niceties over the original Microsoft QBASIC). You can easily find it on the Internet Archive.
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.
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/
Thank you for the dosbox-x suggestion. I am running Ubuntu on a newer laptop and did not have any luck getting Age of Empires to work in a virtual machine because of issues with DirectX on modern hardware. The game would render so slowly as to be unplayable.
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.
Nice! I think my favorite part of the original age of empires was the weird Latin sounding simlish of the voices (Pleribus!)
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.
There is no reason to lose anything, hence why many BASIC still do support both ways of working.
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.
I was craving a BasicA fix, so rather than run the ROM extractor on an IBM, I found the extraction program with them extracted. No 43-line mode like qbasic... :(.
It's so entertaining to just pour through the source for each game and read the language used at the time, like in the game instructions or result responses.
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 greatly inspired by the kind of utopian visions of computing that seemed to be common from the BASIC era to the PC era to the pre-Facebook Internet era.
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.
I don’t see gorillas.bas — that was my favorite. I actually found my appreciation for writing code modifying lines of code in that game to make bigger explosions.
nibbles was my favorite. Reading the code as a 13 year old I learned that they doubled y resolution by using lower and upper square ascii characters. It inspired me to find creative solutions for problems.
Many happy memories of checking out books like this from my public library and trying to get the programs working on the C64. The BASIC dialect never matched exactly.
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.
The ‘bee was how a lot of us Australians of a certain age got into computers. The only real competition it had was the C64 as other things like the Apple II and IBM compatibles were just too expensive in comparison to that $399 intro price.
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.
Me too, except with the CPC. After going through enough of them, I got to a point I could flick through the book in the library and figure out what was going to work ahead of time, what could be adapted and what went way beyond my abilities (usually anything that shoveled machine code into DATA blocks). It was neat imagining the incredible capabilities of computers other than my own and then trying to figure out a way to make mine do something like it too.
The self-teaching guide is impressive. The programmed instruction format is a great way to learn, and it works both in print and online. I wish there were entire curricula available this way.
Edit: It seems that Wiley has published a number of books in the self-teaching guide series:
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.
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.
https://dosbox-x.com
I made this a while ago and it ran beautifully in DosBox on my Mac:
https://specularrealms.com/q-basic
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/
http://www.moria.de/~michael/bas/
QuickBasic was the original, with QBASIC being a cut down version of it bundled with DOS.
https://github.com/danieltuveson/dbi
BTW, on Basic, I had MISSION.BAS for MBASIC.COM under CP/M.
https://termbin.com/w7oe
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 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.
https://homeputerium.de/
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...
http://www.svipx.com/pcc/
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.
http://dtss.dartmouth.edu