BASIC Computer Games
vintage-basic.net
vintage-basic.net
The publisher has made them available from their website[0]. Here is a series of modern reviews from a friend of mine[1].
My favorite when I was a kid was the one that taught assembly language to pre-teens. I still think of cartoon robots putting notes into boxes whenever I assign something to a variable.
[0] https://usborne.com/browse-books/features/computer-and-codin...
Computer Battlegames and Computer Spacegames were much loved in my youth. I wish I had seen some of the other books in the programming series from Usborne.
I remember my dad being super frustrated with me when I was very young. He was on such a different level (chip/board designer) that everything was so effortless to him, and he had serious trouble relating to anyone "beneath" him. It only got worse when he left when I was about 9. I always had trouble self-motivating, and it would hurt like hell when he'd show up out of the blue and express disappointment that I wasn't writing assembly yet or building my own circuits.
But the Usborne stuff, and the spectrum/vic20 games I played around that time, are treasured memories. Thank you for reminding me :)
[1] https://www.amazon.com/Basic-Adventure-Games-Susan-Lipscomb/...
The only difference with my introduction during my childhood was my father had a friend, who was building RAM extension boards (and other things) out of his garage, and he, excited that a kid was into computers, extended our TRS-80 for free. I can't remember the exact number at the moment, but it was something insane like 40Kb of RAM (But it was sometimes... Unstable).
I was the only one of my friends with a computer at the time, and we used to gather round and play BASIC games we either wrote ourselves, or write up the latest magazine game.
Having both the running system and the log system together makes for an awesome experience.
Growing up I had a Commodore 64 and for some reason came into possession of another of David Ahl's books ("More Computer Games" I think it was called). It contained Eliza as one of the listings and it was a program that fascinated me so much I ended up creating a ton of clones, in horribly nested BASIC (though, to be fair, is there any other kind?)
Commodore 64 BASIC, and 8-bit BASIC in general, was fully in the paradigm that Dijkstra was referring to when he wrote Goto Considered Harmful. (Not exclusively, of course.)
My relatively poorly researched impression of it is that it's half-way to portable C, with a proto-stack and pointers, essentially.
At my public library we had a teletypewriter, with an attached paper tape punch and reader, and a phone-cradle modem, with which you could connect to the the PDP-8 at the local high school.
Between this book https://www.amazon.com/Illustrating-Basic-Simple-Programming... and "BASIC Computer Games" my friend and I taught ourselves BASIC programming.
It was about 42 years ago, but I remember to this day the initial astonishing joy of making the computer do something new that I had thought of.
I recently bought an Osbourne "portable" -- seeing my children's delight as we booted up that ancient machine (from actual 5.25" floppy discs, no less) reminded me of own own sense of wonder at the same age, 40 years ago. Of course my middle-aged eyes didn't tolerate a 7" amber screen as well as they once did, but we proceeded to create an adventure type game, in MicroSoft Basic. The kids actually squabbled over who would get to play that simple game, very unlike them, such was their enthusiasm. And play they did, for many, many hours!
We had a bug where the player's "hit points/HP" could go negative. I loved watching my children deduce where the problem must lie, and debugging the problem. (comparison of <, rather than a <= )
They had lots of ideas for additions, some of which we implemented (others were very ambitious, bordering on Dwarf Fortress!) And even though what we created was very simple and crude, their pride in ownership was clear.
Many of my very first "lessons" in programming were from taking programs in that book and then translating them to BASIC as found on the VIC-20 and, a little later, the C-64.
I still often do that (just after "Hello World") when I'm first learning a new programming language... though these days it looks much more like just getting the requirements from the book than any sort of actual direct code level conversion.
> the on board computer has crashed (it was made by xerox) so you have to land your lunar module manually
Back when games could just make jokes about existing companies without getting into trouble.
Some things stick unnaturally well in the brain.
(Yes, I realise this was a Luna Lander clone on the Amiga desktop, but for me it's roughly equivalent time ago.)
https://jbretro.wordpress.com/2015/02/09/retro-book-disneys-...
You did not need even a computer for the first exercises.
Too bad that the kids have to begin with JavaScript today.
I made silly little programs with a friend, and we had grand plans for a Harry Potter themed MMO. Naturally, we started with a loading screen on a timer, (because that's what comes first, right?!) and got no further.
For some reason nobody ever thought to put those books in the computer lab which was full of various Apple II's.
I wish there would have been more explaination of the code, it was pretty much a couple hundred lines of LET X1=15 IF L2 < 1 GOSUB 12100
My greatest accomplishment was a Stronghold-like simulation/management game, of several hundred lines. Got some success among my pals.
What a time... and what a painful language.
To me, it feels like typing each character manually cements the knowledge in there much deeper than 'oh, I think I understand what I'm copy/pasting.'
Maybe that's a shallow truism by now, but I still see people struggling to learn programming via copy/paste from examples.
I get what they're saying (probably from dealing with too much rote school work in the past), programming is more about critical thinking than memory, but it really helps to have the core constructs memorized in a language. If you have to google "loops in python" every time, it's not going to go well.
People are still pulling old software and data off of some of their old CoCo tapes, what little problems there are typically can be solved by dumping to digital file and editing in some audio software to clean things up.
Every time I turned the power off or wanted to try a different program I had to start from scratch.
Googling for it doesn't help, all I get are references to the 80s, or the TRS 80, or some such.
Does anyone remember this book, or where I can find it?
I taught myself to code by typing these in by hand on my TRS-80. And trying to debug when something wouldn’t work.
Back in the day when something didn’t work and you had nowhere to turn, you had to bang your head against the code until you figured it out.
https://archive.org/details/Whattodoafteryouhitreturn/page/n...
With my personal favorite BASIC game: Star Traders
Ported to Python
Bob Albrecht, the Dragon and fellow PCC founder, has always been passionate about teaching kids BASIC programming and still volunteers in local schools. He has written multiple books on BASIC mostly targeted at newbies.
One thing no one has mentioned are the BASIC functions PEEK() and POKE() which allowed BASIC programs to read and change memory. Many people learned about control registers and machine language experimenting with PEEK and POKE.
PCC also published The Computer Music Journal and Dr. Dobbs Journal. Dr. Dobbs Journal: running light without overbyte started when the Altair microcomputer was delivered with almost no memory and no software. PCC curated the development of personal computer software including Tiny Basic. The TRS-80 integer BASIC was a variant of Tiny Basic.
The Dave Ahl books include many games that initially appeared in PCC publications.
It consisted of 26 games/puzzles, one for each letter of the alphabet. Went looking and found this little treasure trove:
http://www.gamebase64.com/search.php?a=5&f=3&id=9556&d=42&h=...
My favorites were the Eliza clone, and ICBM, where you are trying to intercept an incoming ICBM with a anti-ballistic missle. My first use of trig functions, which really helped solidify the concepts to me. I also converted the 2-D version to 3-D (with altitude) for even more fun.
I was originally using a TRS-80 Color Computer, with a slightly different dialect of BASIC, so I was usually having to make modifications. Which also helped me learn programming.
Great, great times.
Later I played with various "expert system" stuff, then there was David L. Heiserman's "Machine Intelligence" and "Robot Intelligence" books...
I tried to understand early neural network stuff, but I could not get my then teenage head around it; in fact, none of it became clear until I took Andrew Ng's "ML Class" in 2011 as an adult (part of the key was understanding the role of linear algebra and matrix math in the system - among other things - that class was the first that explained it very clearly, and the use of octave was also a revelation).
Since that class, I've continued to play with ML/AI, mainly via a couple of courses thru Udacity (including their "self-driving car engineer nanodegree").
So - one could say I still have hope? Ha!
Same here! Those two books, along with a ton of magazines and more than a few other books, plus one I found that had "conversions" - helped me greatly to learn programming as a kid.
I eventually found a great book on Fortran graphics - which I also started converting (Fortran and BASIC are very similar).
There's a third book in the "Basic Computer Games" series - I don't recall exactly it's name, but you can probably find it on archive.org. It had a blue cover, and I believed it dealt with much larger, adventure-style games.
Not to mention, there were special editions created for Radio Shack and the TRS-80 as well...
Then I moved on to a PC JR with Cartridge Basic and after that QuickBasic on Windows 3.1.
Fun times.
For that old stuff, "Pete's QB Site" still holds a lot of it:
Also, check out the old ABC Packets - they're still available, and also have a ton of code worth looking into (I was a frequent contributor):
But there's absolutely zero reason why this couldn't be replicated with pygame, nodejs or even just a modern BASIC interpreter/compiler.
While it was possible to buy a multi-user computer, or a connection to the internet, we didn't even know such a thing existed. Not that it mattered, as practically the cost was far our of reach.
You could record it straight onto your audio cassette (like you would record any song on the radio) then play that on your BBC Micro.
It was cheap, accessible and effectively the analogue equivolent of downloading.
I don't think Apple really came to Europe until much later.
I was from a slightly later generation (I think); I got my first machine in 1984. I knew hard drives existed too - a 10 meg system would only cost about $8000.00 back then that would connect to my machine (TRS-80 CoCo 2). Sigh.
As far as "multi-user" was concerned - well, we had OS-9 - if one could afford it (plus you needed a dual-floppy system if you didn't want to be swapping all the time). It could support multiple users, but it needed some special hardware for it.
As a kid, I later got a CoCo 3 (sometime around 1987 or so) - and I ended up building a null-modem cable to connect both of them, so I could "share" programs from the floppy drive on my CoCo 3 to my CoCo 2. I also experimented around with BBS coding using that setup. It was my first "network", so to speak.
[1] https://www.usborne.com/quicklinks/eng/catalogue/catalogue.a...
long way from logo
[1] https://scratch.mit.edu [2] https://en.scratch-wiki.info/wiki/Scratch_Books
Similarly, GWBasic, Turbo Pascal, Turbo C, etc.
While I recall doing the same on my machine (TRS-80 Color Computer) - it was usually to get functionality that was lacking otherwise. I recall having to type a ton of DATA statements for an ML program that would give you simultaneous graphics and text on screen, like it was a native mode. Then there was another program (called "Bells and Whistles") that was essentially a 4-track music editor, similar to 90s era "tracker" programs; you could define simple waveforms as different "instruments", then build your music in a note-by-note "tracker" style - except the tracks ran left-to-right, not top-to-bottom! It would then output the music and show the notes playing (scrolling) - four channel, 6 bit music, with user-defined waveforms and envelopes. Truely amazing at the time!
Especially considering the TRS-80 CoCo did -not- have a sound chip. It was all done by the CPU and a 6-bit DAC (which was also used by the cassette tape interface for storage, as well in a convoluted manner by the joysticks).
I was doing this on an Atari 400. There was plenty of power available from BASIC to get at the graphics and sound, but there wasn't the speed. BASIC was an interpreted language and so you had to drop to assembly to get enough speed for a large program to not feel slow.
Really, you type in codes/programs from paper printouts for your PhD? I knew that some programming communities in academia still clung to old habits and way of doing things, but not like that!
The platform is currently deployed at NC State as an optional exercise for some of the classes and while there is no explicit "those students did better" (yet I hope...), I do have promising information like regular completers earn high final grades in the course and even potentially as an intervention tool for lower performing students. In that context, students that regularly performed lower on midterms scored higher on the final and earned a higher final grade than students that just "looked at the exercises" (it is optional). My current hypothesis on that data is that poor performing exercise completer's realized they needed additional practice, which helped boost their skills.
My comment history goes in better detail, but I describe it akin to drilling in other technical skills like cooking, music, dance, martial arts, etc.
I think this as an activity is one of the methods that causes much of the "prior experience" seen in some higher performing CS students. They learned about syntax errors and tweaking code while making these BASIC games, or in modern contexts like modding Minecraft.
Moving forward, my research then goes into optimal exercise sequencing for learning CS. If you are compiling more syntax errors during a traditional coding exercise, maybe do a few typing exercises or output prediction exercises before trying to code.
[1] https://research.csc.ncsu.edu/arglab/projects/exercises.html
The one I was a fan of before then was 'Computer Spacegames', which you can read here: https://archive.org/details/Computer_Space_Games/
https://www.atariarchives.org/basicgames/showpage.php?page=i...
I still have my original 1982 TRS-80 Color Computer 2 in the garage. My oldest possession.
For fun recently I ported zork to an esp32.
My first software engineering job out of highschool used a version of BASIC; I was originally hired as an "operator" because I didn't have a degree, and they wouldn't hire programmers without degrees. So they trained me on how to load 9-track tapes on a vacuum-column drive, as well as how to load up greenbar and run reports on the system. It was an IBM RS/6000 running AIX (my first encounter with Unix), and VT-100/Wyse-370 terminals via a serial concentrator - but our main system ran on top of that; it was called UniVERSE, and ran a variant of Pick BASIC:
https://en.wikipedia.org/wiki/Pick_operating_system
They gave me access to the system, and their sysadmin gave me a copy of a "Learn Pick BASIC" book. The company was a small mom-n-pop shop that created insurance claims management software for small insurance companies administering our state's indigent health care system.
I started writing various pieces of software - an adventure game, playing with the printers (made one of them play music - not a good use of company resources), just having fun while in between actual "jobs" given to me by the real programmers (run this report, or load this tape). Well...someone was monitoring me and my coding.
They started to give me small tasks - fix this problem with this piece of code, or build this kind of report, or can you make the printer do this?
Within six months - after I had graduated a local tech school and got my "degree" - they hired me (at a pitiful rate that irks me today, but I was a young-n-dumb teenager at the time). I stayed there for a couple of years, learned more Unix, became intimately familiar with terminfo settings, helped to build a text-mode windowing system for their product, got involved with the Amiga scene...
Ultimately, it was my beginning of a career I enjoy and love to this day; but I do have to say I miss the Wyse-370 terminal (it had a Textronix vector graphics mode I played with as well - plus it was just a great terminal overall - they can still be purchased today, but supply vs demand has kept their cost high, so I've never purchased one).
"If you want the track record of Dick Pick, just hang upside down" [1]
1: https://secure28.securewebsession.com/jes.com/gfx/people/csn...
There wasn't a WHILE or a DO-UNTIL construct in those BASICs, with the exception of (IIRC) or the BASIC used in the MSX systems (which didn't see much action outside of Japan) and in BBC BASIC (it was probably the best BASIC out there along with Microsoft's - but again, not as well known outside of the UK).