Hacker News new | past | comments | ask | show | jobs | submit login
Microsoft GW-Basic User's Guide and Reference (1989) [pdf] (computerhistory.org)
52 points by susam 9 days ago | hide | past | favorite | 43 comments





People will say it's easier now since there are so many (sooo many!) free languages and tools and frameworks out there. But while that's great for someone who already knows what they're doing, it's not simpler to start. And a lot harder to know where to start!

Back then, the PC came with the language and tools already.

As a kid, you probably didn't have much money to buy software anyway, so if you wanted it to do something, you had to learn to program it yourself.

And once you could figure out how to read input from the keyboard or a file and write output to the screen or a file, that was most of it right there. You yourself could write programs that did almost anything that the professional programs did.

Because it was just that simple. No networks, no frameworks, no layered stacks, no APIs, no GUI libraries, no 139 processes running in the background, no nothing.

Just you and the 'bare metal'. PEEKing and POKEing and GOTOing until it did what you wanted.

And from there it was a simple step up to Turbo Pascal, inlining Assembler for performance, etc.

The whole system back then was just so simple, you could comprehend and fit the whole thing in your mental model. And yet you could make it do almost anything it could do with just that simplicity.

We lost that around the time that Macs and Windows came out. And it's just gotten ever more complex and inscrutable since then. Much more powerful, and tons of free stuff, but there's no longer that simple entry point. Javascript isn't, Python isn't, nothing is or will ever be as simple and fully-capable of an intro as we had during that short period of early home computers.


>Javascript isn't, Python isn't, nothing is or will ever be as simple and fully-capable of an intro as we had during that short period of early home computers...

That is exactly why I started making this..

https://hackage.haskell.org/package/spade


Nice!

Do you have a sample/screen grab showing all the possible widgets?

Is there potential for interacting with a canvas? Could one make a drawing program?


I am not sure I get your question right, but there is no canvas. You just switch to the graphics mode (just as it was done in the likes of QBasic) and draw stuff using the graphics functions.

Here is a screen grab of a poor attempt at implementing the old paratrooper game

https://vimeo.com/835347764


Thanks!

So there aren't any GUI controls, buttons, input fields, &c.?

Would there be a way to add those in the future?

I'm really fond of Oberon (printed out the entire manual and read it over multiple times when I was younger and probably still have it somewhere), and Lua has worked well for me in lualatex: https://tex.stackexchange.com/questions/723897/breaking-out-... so this seems like it could potentially be a good fit.

My next project is working up a programmable drawing program and I'm still trying to find the perfect language and GUI toolkit....


>So there aren't any GUI controls, buttons, input fields, &c.?

No.

>Would there be a way to add those in the future?

Yes, but only for making TUIs.


>only for making TUIs

Ah, okay. I'll keep looking.

Great project! If you ever change your mind, and add GUI components, I think that would be huge.


I understand the thinking behind some of this but I don't think it's right. My first language was GW-Basic so I grew up and enjoyed this era. However, if I want to start working on Javascript today, all I need to do is open a browser and start playing around in the console or set up a directory to point my browser to.

You don't need NPM, Github, Vite, React, etc. to do any of that. I'd also say the vast amount of documentation, sites like Codecademy, seemingly infinite amount of Youtube videos, etc. accelerates learning light years beyond what we had with GW-Basic, assuming you even had this reference guide!


JavaScript is a painful first language, full of gotchas. Even worse code bootcamps introduce it with react. I always recommend anyone starting programming to just make command line programs at the beginning in something like python. I might be wrong but at least it introduces a fundamental universal programming tool.

You are deliberately missing the point and confusing X with ‘something that looks like X’. For eg., using QBasic, you can pick some random spot on the monitor and have a white dot show up at that spot. What you end up doing is directly writing to the vga buffer address of that spot. That’s the X. You can directly talk to LPT1 and directly get the dot matrix printer to print an ascii character. That’s the X. All these things were possible because the synergy between the hardware and the software was extreme. QBasic was just a shim. You were directly talking to the hardware in as few steps as you possibly could. The assembler code for your BAS file could be inspected and you could even muck with that.

All of that has gone out the door. What you have with javascript is something that looks like X. So I can use a html canvas element and get its drawing context and do an arc with the right parameters and fill and hide the scrollbar with some css and pretend that what you now see is like the X. But its not! To actually get rid of the browser window and only have the white dot, you would need a full blown electron install or worse. And it still wouldn’t get you to the X. We already had X. Now we have something that barely approaches X after a great deal of effort.This is supposed to be progress ?!!


I was obsessed with this book when I was 8 or 9 (so around 1990/1991). I didn't have much success with actually writing GW-BASIC code but I loved reading the manual. I even insisted on reading it aloud to my grandmother, I'm not sure what she made of my doing that.

Not this edition though. An older edition which had a plain cover.

Closer to http://www.bitsavers.org/pdf/microsoft/gw-basic/410130001-32... and http://www.bitsavers.org/pdf/microsoft/gw-basic/410130013-32... bound in the same volume, but I don't think exactly those editions either.

I think the version I had (I seem to have lost it over the decades) was closest to https://hwiegman.home.xs4all.nl/gw-man/ but I can't find a PDF version of that


I was obsessed with manuals back in the day too. Computer manuals were a gateway to a new world of possibilities and techno-fantasy. In my young mind, it was the 80s/90s version of the portal to Narnia.

You couldn't do anything without some kind of manual, there was no internet for reference.

But if you did have complete documentation that's all you really needed and you could do anything the electronics was capable of.


A friend of ours had a Tandy that had BASICA, which was basically a GW-BASIC clone, and our 386 had QBASIC since we had DOS 5.0

The problem was, almost all of the books at our school and library were either for Apple or some weird offshoot (PET for example) BASIC, so none of the joystick, graphics, etc code worked. There were some other books that were more business-oriented that talked about GWBASIC, but as an 11 year old I wasn't interested in balancing checkbooks.

QBASIC had a pretty good online help system in the editor and a couple code examples, and I had a ton of fun when I discovered *SCREEN 13*. Maybe if I had gotten a copy of QuickBASIC (compilable and there were some game-related libraries available on AOL/CompuServe), I wouldn't have been so eager to jump ship over to Turbo Pascal and Turbo C (although it would have made more sense imo to stick with TP, as C was a lot harder/slower to do anything in as a newbie)


The Mac equivalent that I loved was MacBASIC, which was a very elegant BASIC that was structured-programming only – i.e. full procedures and functions with arguments and control structures, no line number and all caps, GOTO based control, etc. Although it came out of Apple it circulated as samizdat for a while among hobbyists and universities.

The history is sad: unfortunately MS bought it out from Apple and killed it so that their (inferior language-wise) MS Basic could rule the roost.


Yes, for what Bill Gates giveth, he also taketh away:

https://www.folklore.org/MacBasic.html

I really hope that eventually there is a development tool which is:

- cross-platform

- easy-to-use

- opensource (or at least free)

- able to make GUI apps

- compliant with accessibility

If there is such a tool, I'd be glad to know of it --- Livecode (a HyperCard clone originally published as Runtime Revolution) was the best option until they closed it.


Ah the good old late 80s, when there was an almost (BUT!) identical BASIC variant around every corner. I had guides for GW-Basic, QuickBasic, QBASIC, TurboBasic, and all I had on the software was an AMOS interpreter.

It mostly worked fine though. Mostly.


I remember trying to teach myself coding as a young teenager in the early 00's. I started with Java but it was too complex for a complete newbie working only with a text editor and command line, and I couldn't quite grasp the necessary concepts. It wasn't until someone recommended BASIC that I really got going. Really an ideal language to teach basic control flow concepts and other basics to a young newbie. Also great for playing around with graphics. Graduated from that to C and C++ after a few months.

Here's a TRS-80 era one that when I see the cover, I can still smell the parchment aroma that came from cracking open the book:

Getting Started With Extended Color Basic https://colorcomputerarchive.com/repo/Documents/Manuals/Hard...


Odd. I remember all of the exercises in this book, but in Dutch for a monochrome version. (Over four decades ago, I was about 7 or 8.)

It's strange how the first exercises still haven't changed a lot, if you compare this with more modern curricula.

I'm wondering how we'll end up in a decade or 2, when AI has raised the bar for abstraction... Will we still start out with these kind of exercises, or will today's programming languages feel like today's assembly by then?


Nice memory. That book was included with the Coco2 I bought in late '83. Part of the lack of fun I had was not having a dedicated TV to use with it--I had to share with the siblings--and it was a black and white console. Still I learned a lot but should've done more. Oh well, I gave the whole works away in the mid '90s and it's probably in a landfill in NW Oklahoma.

Sometime around 1990 is when I got my first computer, and it was one of those. Came with the wonderfully audible cassette recorder, boxy 5-1/4" disk drive, pair of joysticks and a couple cartridges. My parents bought it secondhand off someone. You never know, maybe your machine went to some kid, sparked a passion they turned into a career, and is still in some closet cherished to this day.

"1.1 System Requirements. This version of GW-BASIC requires MS-DOS version 3.2 or later."

Does Windows 10 count as "or later"?


Only if it's the 32 bit version.

This must be a second chance queue bump; there was also this discussion a day later: https://news.ycombinator.com/item?id=42356548

2024 https://news.ycombinator.com/item?id=40947222 PC-BASIC, a cross-platform interpreter for GW-BASIC

2020 https://news.ycombinator.com/item?id=23266917 The original source code of Microsoft GW-BASIC from 1983


Such great memories of simpler times.

But, if I was forced to go back to these times I know my warm feelings would eventually turn to horror.

Things are better now.

We can do so much more.

But a part of me misses these simple times.

Python is a decent proxy for this simplicity though and wildly more productive.


The most I miss about those times is the simplicity and availability. Each computer had BASIC. Did not matter what computer. Now Windows comes default with Powershell and .NET (?) but no IDE. Linux comes default with Python and vi but that is hardly for beginners. As I am a Java developer I follow the developments of Java and recently stuff has been added to make Java easy to start with. So you can start with only "void main() { System.out.println("Hello world"); }" and it would run. Nice that people can get into coding easier but you still need to find an IDE and download an SDK...

>Each computer had BASIC.

And each BASIC was usually capable of direct hardware control.

That was one of the differences between different proprietary BASIC versions.

They each had the same "framework" but were enhanced with the extra commands or syntax to accommodate the specific hardware they were intended to be used with.

I would say that ROM BASIC, and even better combined with an industrial-grade ROM OS, was the desktop paradigm that should never have been compromised.

Too bad ROM chips were so much more expensive than floppy disk storage, so we got "Disk Operating Systems" instead and here we are.

Then as soon as the IBM PC was beginning to be well-adopted by businesses, no more BASIC ROMs for you.

After that BASIC would be supplied on floppy disk, and you would have to pay extra, if you even knew it had been the key to user programmability on everything comparable that went before, most of what was still out there.

Like Commodores, TRS-80's, Ataris, Apples, and all early IBM PCs up until that point.

But most people weren't going to pay extra for many reasons and the user-programmability of the PC, as well as it's widespread readiness for any PC to run anybody's BASIC program with no other dependencies, dropped to an abysmally nil level compared to how it was the year before. Never has recovered either.

Even though there was very little software yet that did lots of things that specific users might have been wanting to do, so with a desktop computer boom there was a need for more user-programming than ever. On what started out to be a universal platform, pulling those ROMs was like pulling the rug out from under the future as it was intended to be up until that point. With 20/20 hindsight it looks like billions in lost opportunities for PC owners or operators to make the most of their PCs across-the-board for decades. When you think about it, simplicity & availability, or lack of it, can be worth a lot and really add up over that much time.

But losing the integrity level traditionally needed for an immutable ROM OS, that truly had to be a finished product before release, had been the bigger blow to begin with.

"This is by design."


For PowerShell there is the PowerShell ISE (ISE.exe) which is included out of the box, I think. But that's a far cry from the simplicity of BASIC, of course. And I guess the modern equivalent is probably JavaScript in the browser, but that's a whole other can of worms for beginning programming.

Pretty sure Windows comes by default with the Powershell ISE, although it's not developed further anymore. It also only comes with the .NET runtime, not the SDK. Installing VSCode and some extensions would get you pretty far though.

I'm pretty sure it comes with a command line C# compiler. At least it used to up until Windows 10. I haven't used 11.

do you know https://www.jbang.dev/ ?

btw. installing "java" is now very easy, you just need to install jetbrains toolbox, from there install intellij community edition (1 click), which installs a jdk for you with (2-3 clicks), when it detects that you need one.


I use sdkman so I know how easy it can be.

I think GW-BASIC is a better introduction to programming than Python. Its limited power is an advantage for teaching and learning. Python is a much better language for solving real-world problems, but the student doesn't always understand what's actually happening in many cases.

> But, if I was forced to go back to these times I know my warm feelings would eventually turn to horror.

If you could keep your shit under control you'd be so ridiculously OP - I'm not convinced it would actually be that bad :)


This is something I'm thinking about every now and then when my mind starts to wander - if I'd be teleported back to the early 80s, how much of an advantage would I actually have with my current knowledge. Just always knowing which technology will emerge and persist on its own is a huge advantage, paired with knowledge of what trends regarding end users come up when. That alone probably dwarfs any advantage you have in technical knowledge. 8088mph would blow people's minds back then, but being able to do that would probably not be the thing that leads to success, but definitely gives you a shit ton of intern^WBBS street cred. :)

After 28 years of leaving BASIC for C and then Java, I took a course on data science using Python. I heartily agree with you. The simplicity and power Python brings is refreshing.

God how much I time I spent on my computer programming with this in secondary school. Didnt have the any reference book, just some months of a basic computer course and a low level 8088 cpu computer. But i LOVED my time. I plotted polar coordinates, did a basic aswd based drawing program which could save and load pictures, tried some gaming but didnt have the notion of threads so my shoot em bullets would stop the world :)).

Still have the same joy :).


> tried some gaming but didnt have the notion of threads so my shoot em bullets would stop the world :))

The concept you need to fix that is the game or event loop, not threads.


I started with GW-Basic as a kid and then moved to PDS Basic because I wanted to create executables etc. Good times

Likewise, except QB45 :)

So THAT'S how you exit it!

I never did figure it out.


You type "SYSTEM", the same command which was used on Microsoft's CP/M basic (and other flavours).



Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: