Microsoft GW-Basic User's Guide and Reference (1989) [pdf]
bitsavers.computerhistory.org
bitsavers.computerhistory.org
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.
That is exactly why I started making this..
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?
Here is a screen grab of a poor attempt at implementing the old paratrooper game
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....
No.
>Would there be a way to add those in the future?
Yes, but 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.
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!
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 ?!!
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
But if you did have complete documentation that's all you really needed and you could do anything the electronics was capable of.
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 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.
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.
It mostly worked fine though. Mostly.
Getting Started With Extended Color Basic https://colorcomputerarchive.com/repo/Documents/Manuals/Hard...
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?
Does Windows 10 count as "or later"?
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
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.
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.
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."
If you could keep your shit under control you'd be so ridiculously OP - I'm not convinced it would actually be that bad :)
Still have the same joy :).
The concept you need to fix that is the game or event loop, not threads.
I never did figure it out.