The History of QBASIC and my history with it

Video Statistics and Information

Video
Captions Word Cloud
Reddit Comments
Captions
there's a standard formula for success with a retro gaming channel pick a popular game put together a clickbait thumbnail I have a rack full of recognizable vintage hardware and games to film in front of cover a story that is recognizable and relatable to a broad audience I of course enjoy failure so I'm going to talk about games you're almost guaranteed never to have seen which do little of technical interest and which in all honesty aren't even particularly good and I'm not even going to do that until I've given you a lot of irrelevant details about the history of the PC first hashtag content the reason why I think it's unlikely you've seen these games is simple I programmed them it may come as little surprise to find that my day job is more or less being a programmer and that it is also one of my hobbies usually in things that have almost no relevance to real world commercial programming in the Modern Age like 16-bit segmented x86 assembler and what com c in fact I have been putting mysterious Words of Power into computers to make them do stuff since 1991 which may as well be the Victorian era as far as the average Among Us player is concerned 1991 and that 16-bit era as a whole was a transitional stage for the idea of a home computer as something you wrote your own programs for if you had an 8-bit micro chances are it booted straight into a basic interpreter or you were at most one menu selection or inserting a bundled cartridge away from one because the well-meaning intention of those early Pioneers was that the home user would write simple programs to balance their finances or organize their record collection not waste away their youth playing Jetpack in the 32-bit era the expectation was that if you wanted to organize your finances or balance your records collection someone else would have written a program to do these things and you'd go to a shop and buy it the computer by this point was an appliance and you should have about as much interest in programming it yourself as you would in writing embedded microcontroller code for your washing machine which now I mention it but between these two points there was a transitional state where your computer didn't boot straight into a programming language but you most likely had one included in your operating system if you knew where to look for it early Amigas came with Amiga basic written by Microsoft replaced by a-rex in workbench 2 due to compatibility issues Atari STS came with st basic a rather buggy and not were liked implementation that mainly served to create a thriving market for third-party commercial basic interpreters on the St as for the PC well it's a PC so inevitably everything is complicated and really you should give up trying to do anything with this machine and go and watch the Krypton Factor instead but let's start with the IBM 5150 because well so did the PC it came with IBM cassette basic in ROM because the early PC followed typical early 1980s Convention of allowing you to boot straight to a basic interpreter without any intermediate operating system and save programs to tape cassette basic written of course by IBM software partner Microsoft as they moved out of there most metal software company logo ever based into what would become their corporate beam off phase in fact being a port of the existing Microsoft basic because at the time of the PC's conception it was overwhelmingly the most successful and popular basic interpreter around going right back to the early versions of Auto basic in 1975 if you had a disk drive in your PC you would probably want a Disk Operating System with which to use it which likely means another famous Microsoft sold if not necessarily Microsoft created product IBM PC dots if the PC detected a valid boot floppy it would use that floppy instead of the cassette basic ROMs so you will get the iconic PC experience DOS prompt but run basic.com from that prompt and now you have IBM disk basic disc basic uses code straight from the cassette basic ROM and extends it by putting some routines for accessing floppy disks in Ram this split between ROM and RAM by reusing routines from elsewhere sounds complicated but is a pragmatic Choice when early PC configurations might only have 32k of memory you wanted your basic interpreter to use as little of it as possible leaving more room for your own programs technically the entry level for a PC was just 16k but you would be limited to cassette basic only as floppy disk support required double that and if we're getting really strict the smallest amount of memory IBM shipped in a 5150 with a floppy Drive was 64k but hey it's a PC there's nothing to stop you jamming a floppy driving controller into a 32k machine other than the crushing sensor futility and hopelessness at how little you'd be able to achieve with it but we're not done yet even for the humble 5150 with pc.1 because if you did order your PC with memory to throw around please there's Advanced basic which adds built-in sound and Graphics routines and still uses some code from the built-in ROM so we've basically got free versions of basic and you can use precisely none of them if you don't have a proper IBM made 5150 no wonder Machine Gun Kelly felt move to write a song about it and yes angry comments about California mental health coaches the vibe I was going for today thank you speaking of such things I should bring up the machine which shall not be named some kind of son of PC has sort of not senior version maybe even a name that brings to mind a combination of a personal computer and a Dallas character anyway the PC redacted has a cartridge Port so it gets an extended version of advanced basic on a cartridge but all those Atari 800 users who missed having their basic interpreter be a more tactile experience and having mentioned IBM cartridge basic we're now going to leave that whole machine well alone before I get in any more trouble mainly because none of these sprawling variations of IBM basic were relevant to me because I had a clone PC that wasn't an 8088 based machine and certainly didn't have any cassette basic ROMs this was a problem for clone manufacturers right from the start PC was unusual for the time in that it added an additional layer between operating system and Hardware the BIOS or basic input output system not to be confused with the basic language as here basic refers to its responsibility for doing the most simple Hardware level access paths this abstracted the responsibility away from the operating system meaning you could put in different hardware and still have the same operating system work without needing to code new low level access routines it also meant that to implement a PC which could run dos you needed to replicate the IBM bios including its undocumented features and bugs the theory that this would not be possible without making a straight up copy of IBM's code was the subject of many legal battles many of which ibm1 with out of court settlements because the Clone manufacturers could not satisfactorily prove they hadn't copied implementation details for their own bios out of IBM's copyrighted technical manual that was until companies such as Compaq and Phoenix Technologies made clean room implementations of the IBM files with the engineer coding the BIOS would never see IBM's technical manuals and an audit Trail would be kept with the questions they asked the people who had doing this was an expensive and difficult process and companies rightfully judged that trying to do the same for the cassette basic ROMs would be both a pointless waste of money and also really trying their luck against IBM's legal department so clone PCS did not have basic in ROM but as we've seen from the Sierra online story IBM explicitly did not stop its software Partners from licensing the software they built for the PC to other manufacturers if you've just built your clone PC and installed your legally distinct but functionally identical bios from Phoenix Technologies you can then go to Microsoft unlicensed almost exactly the same operating system as IBM PC dots minus a few IBM labels except there was an important difference instead of IBM's Advanced basic Microsoft would include an almost identical clone with the important distinction that it didn't try to reuse code from the computer's cassette basic ROMs because well there weren't any instead it loaded everything from disk into RAM because by that point even low end PCS came with 128k or more of memory although early versions of This would run using the same basic a command as IBM Advanced basic and be branded for the particular OEM such as 1982 compact basic from 1983 this became GW basic 1986 Microsoft moved from licensing dos to oems one at a time to producing the first truly generic version of Dos MS-DOS 3.2 the first version you could walk into a shop and buy in a box that didn't also come with a whole PC in it and here we're rapidly closing it on sometime around late 1990 on my first PC clone 286 with MS-DOS 3.3 and as a consequence of that GW basic now as anyone who's followed me for a while well no I'm a taker apart of things I like to see how they work and what their limits are so naturally one of my first questions about this new computer once I'd figured out how DOS prompt worked played a couple of simple shareware games such as build pogue's big rig the game I covered in my video about truck simulators was can I write my own problems for it programs of which I've kept precisely none because you try explaining long-term backup strategies to a small child to use GW basic feels very much like a classic 8-bit basic with its line numbers and readily available user and call statements for diving straight into machine code this may seem like a strange thing to say about a 16-bit program built for a 16-bit computer but this has a lineage going back to Microsoft's earliest Basics indeed the standard view is that if you want to experience programming in a classic Microsoft line number basic you may as well get a copy of GW basic as the last and best version not least because if you're going for the full-on original Hardware experience much easier these days to get hold of a PC that can run dos in some form than an Altair 8800 that's not to say it without some classic 16-bit h66 quirks there's no option to spread your code or data across multiple segments so you get one segment for each 64 kilobytes per code and 64 kilobytes for data 128k is enough for anyone as Bill Gates famously didn't say there's a good chance he didn't even say at about 640 kilobytes as even in 1981 it was obvious computers are future would need increasingly large address spaces beyond what the 20-bit address bus and paragraph aligned segments of the 8088 could provide Microsoft actually fought to up the famous limit from its original design 512k other than being an agitator for more user accessible memory Microsoft in the mid-1980s was well on its way from becoming a purveyor of Basics and second-hand operating systems to the software Juggernaut it would become by the late 90s where they would not only provide almost all of the existing software on your PC but also the development environment you'd use to create new software one of the steps along this way was quick basic a new basic which eventually became the basis of the basic professional development system quick basic made writing and maintaining larger programs in basic easier line numbers were no longer needed instead the programmer could Define labels where they needed to jump to code but even the go-to statement itself was out of favor quickbasic encouraged structured programming the code was divided into subroutines and functions which could be reused and combined together rather than jumping between arbitrary sections of code and Back Again more importantly it broke free of GW Basics memory limits allowing 64k of code per subroutine and with the use of the dynamic keyword to indicate a file pointer should be used more than 64k of data although making one single array more than 64k in size required some trickery the first versions released in 1985. although it did not gain an integrated development environment until version 2. an idea that was to become rather important Microsoft had a problem with DOs heading into the early 90s one which would repeat and become very familiar later in the windows era ms-dof 3.3 was widely installed reliable and very popular ms-4.0 had been intended to introduce exciting new features such as multitasking but had been scaled back to something that didn't offer much other than support for some newer Hardware along with introducing a plethora of bugs and problems fundamentally nobody wanted to upgrade from dos XP to Dosa Vista one of the problems with early versions of Dos is the included utilities were very clunky GW basic was clearly based on code from the 1970s the only file editor was edlin with all the look feel and user-friendliness of something designed to run on a teletype connected to a Unix system because well that was what the program is based on did Microsoft had a modern good-looking and usable idea with quick basic but that was an expensive commercial product most average home users would not own so they decided to solve all three problems at once quick basic could be cut down to an entry-level product called qbasic with features removed lower limits and a less well-tuned slower interpreter but still fundamentally the same language in ide giving a clear upgrade buffed a quick basic for users who wanted more power or to compile their own programs into executables too basic would then be able to replace the by now Antiquated GW basic as the default programming language included for Dots but also by adding a special mode to the IDE where all the parts devoted to running and debugging basic programs were disabled it could also serve as a usable and full feature text editor so ms.5 would come with Q basic along with some other features such as loading system components to high end upper memory areas to free up more conventional memory dos Phi was popular enough to quickly become a de facto standard and within a few months of release it was common for games to require it either explicitly or by requiring an amount of conventional memory which was not practical to make available without the new HMA and ume support no prizes for guessing where this is going in order to play the latest games we had to upgrade my 286 to MS-DOS 5. which is all irrelevant detail in terms of my adopting qbasic because by that point I had encountered a cut down C compiler called the personal C compiler or PCC on a magazine cover disk this was a shareware version of a relatively obscure compiler dismant C that was missing some tools and at least in the version I had most of the header files you'd expect to find in a standard C distribution nevertheless C programming suited me you didn't have to mess around remembering line numbers a structured programming fit better with my mental model than jumping arbitrarily from one part of a program to another somehow I even managed to use pointers although I had no idea what was going on beneath the concept just that this was some series of Magic incantations you need to perform to read input and pass strings around but how do we get from there to me writing so much as one programming Cubase it let alone enough of them to make it worth publishing a video about even by Milo standards the answer is something else I was doing quite a lot of in the 1990s School British schools in the 80s and 90s had this realization that the children they taught might find it useful later in life to be good at computers but until the latter part of that time period didn't have a good idea what being good at computers in a useful way would actually entail hence the number of people my age who got taught to make a mechanical Turtle crawl across a sheet of paper with a pen in it don't ask what the pen in the logo Turtle represents in a biological sense no good will come of it but in the 16-bit ERA this attitude was just as much in transition as the computers themselves there was a settling acceptance that the thing students ought to learn in an I.T lesson was how to word process a document and create a spreadsheet and put items in a database but also a lingering consideration that in between getting our Funnies from automated joke machines and dealing with Android in a right old Huff the future would involve an awful lot of programming computers which meant that in addition to adding word art to your English homework or building a database of all your pogs one of the officially sanctioned uses for the school computer room during break times was writing programs in one of the two programming languages to be found on the largely windows 3.11 and ms-dos-based school network logo and qbasic I don't want to demystify myself too much here but given the choice between playing football in the drizzle and spending my lunch time programming an old 486 I would choose the latter well it wasn't an old 486 at the time it was a new 486. logo is a bit rubbish if you've not got the physical Turtle to muck about with and try to crash into people's feet on the sly so with only two languages on offer this meant qbasic and since the barrier to entry for the school programming Club was to spend one pound on an official School sanctioned floppy disk and turn up to the computer room in what I can only assume was a lesson about capitalism I was not the only person to do this which was great for my early development as a programmer because if you get a group of people together who like each other they're generally going to do two things one make each other laugh two show off I'll spare you the worst of teenage me's attempted humor because frankly it's bad enough having to deal with middle-aged me's attempted humor but the Vintage showing off is definitely something I'd like to show off but first I need to go back to my statement that I kept precisely none of my GW basic programs because while this is technically correct and also was rather useful to maintain narrative flow earlier in this video I did keep at least one instance of me converting one of set old programs to qbasic and removing the line numbers nasty that's technically me keeping one of my old qbasic programs not one of my GW basic ones don't at me this program is fast driver and very typical of the kind of game I started out writing text-based clones of big rig except without the gameplay there is of course no strategy here you just keep choosing a direction until a randomly Advanced internal counter hits 85. maybe there's some skill in learning when to stop the fuel although because this is random there's every possibility the game will drain an entire tank without generating a petrol station now I think this may have been inspired by a card based game my primary school had although do bear in mind I'm trying to bring back memories from a time that is both very long ago and also to some extent deliberately repressed to avoid having to think about things like that not only being a song with Mr Blobby in it but it actually reaching number one in the pop charts oh that initializing loading screen you may have noticed it's only there because loading screens look well bro here is the code showing that that loading screen is just an empty Loop that does nothing but keep printing block characters also with an early hacker used a lot playing a rest using the play music command to give consistent timing no matter how fast the PC compared to most of my attempts at actual musical scores this is far from my worst use of the play command foreign [Music] went on I started learning how to augment my simple text-based games with graphical interludes which were unrelated inexplicable and annoying in equal measure of course these were simple pieces of demo code often copied from elsewhere without understanding them and the idea of using such graphics with update logic and a game Loop attached was well beyond my early abilities as a fledgling programmer witness this borderline unplayable version of what could be called Space Invaders In only the most charitable of Senses which is firmly stuck in text mode but I talked about showing off one of the things which made the programming Club more of a club than just around on the school computers was that we had a small Network share for sharing pieces of code without needing to sneak and edit across the room every few minutes and only for code we were actively sharing at the time hence the one pound floppy disk as the price of admission and a warning not to save programs anywhere else I might later have gotten quite a lot of trouble for finding out just how little disk space the school had by uh finding an exploit in the quota system and using all of it one of my friends noticed something about this share not only could you open someone else's basic program if they saved it there you could save a file from a basic program running on one machine then open it in another basic program running on a different machine to share say a secret message now I know this is kind of network file systems 101 here but bear in mind we were 13 year old kids in the 90s and most of us had barely seen two computers in the same place before little in a network of them as soon as I discovered the secret of this I extended it into a full chat program with multiple rooms and user identities ultimate obviously the potential trademark lawsuit from origin systems was not a consideration here while it might have been simplistic and also broke quite easily if two machines attempted to read the chat file at the same time Ultima net was successful enough to cause a problem people turning up to programming Club just to mess around with what amounted to disk-based IRC chat was swiftly banned and the concept reiterated to us that qbasic was for proving things not wasting time and school resources of course the idea you could make something so cool it had to be banned had exactly the effect you'd expect on a bunch of insubordinate teenagers everyone was constantly showing off things in the hope they would be the next so dangerous its illegal programming trip how to load bitmap files drop down menus whatever could be stolen from a book or Elder sibling I started to feel like I was falling behind I had no follow-up to stealing someone else's chat code and refining it what I needed to put a book and a book I got this very copy the Revolutionary guide to Q basic the Revolutionary guide contained bioloaders test scaling effects code for playing sound for an ad-lib card or displaying 3D objects but what interested me was a section in the middle of the book about building a top-down racing game I tried this early on with a game I called oval racer but this was a flickery mess and while I didn't manage to solve said Flickr I realized with smaller Sprite it wouldn't matter and created velocity the real trick behind velocity was that it used the stolen with permission Ultima netcode for a new and in my mind certain to get banned feature multiplayer a very flickery sort of multiplayer with a low update rate and also one with a problem anybody could edit the code of their own version and cheat surprisingly to me and not surprisingly to almost anyone else car racing was not as fun as chat which explains why people pay billions for social networks and yet Motor City online has been just Motor City and not online for quite some time lost he never got popular enough to be banned although it did spawn this simple game where you attempt to Splat a crude rendition one of the more persistent Defenders for editing the game to cheat at it and also one of the few games I wrote to use VGA mode 13h well screen 13 in Q basic terms because the falling weights can be drawn without too much flickering this lack of popularity did not stop me wanting to improve on the formula multiplayer might not have been the draw I thought but my next game was going to show off what I could do given a book on programming and a lot of free time velocity 2. this featured a scrolling map using page flipping to keep the update smooth at the cost of being locked to a 16 color screen mode but it would not end here one peculiarity of qbasics often unexpected interpreter optimization was that drawing a Sprite using put was not that much slower than drawing a solid rectangle you might see where this is going velocity 2se replaced the solid blocks with tiled Sprites and I know this looks dated and rubbish now but at the time it was a genuine how did you get it to do that yes by early 1998 we had far more impressive Graphics at home but we also knew how limited qbasic was and how slow it ran and the amusing thing for me looking at the code now is it's terrible only structured full of repetition with a disk access every frame and also what few comments exist are mostly rants about people cheating and stealing code from velocity one it actually surprises me looking back there's only about a year between the simple prompt based games and this but I guess that's a lesson about how fast you can learn in a group where you're all challenging each other to come up with the next greatest theme the summer holiday of 1998 saw me determined to come back to school with something even more impressive they came up with this lying eye a game where you try to fly as low over a scrolling random landscape as you dare the draw was to be those big flicker-free Sprites with animation and multiple layers all running at a smooth for the time frame rate something none of us had managed to achieve with qbasic before but unfortunately when I did return in September the school had upgraded the main computer room to brand new Windows 95 PCS including restrictive management software that prevented running any dos programs qbasic included the classic programming Club was over and while I was sometimes allowed to bring in something I'd written at home to show it off running supervised on one of the teacher's accounts most lunchtime School Computing after that point was building stupid stuff in crocodile Clips or trying to break the management software beside switch at home I had joined the internet and downloaded something far more exciting than crosstilled basic the C compiler DJ gpp and game development Library Allegro which ultimately led to me spending the tail end of the 90s getting hold of old 486 systems so I could mess around with Linux and trying to build my own pen mush multi-user game ah I know I had the backups for that fortunately for everyone and perhaps my own tolerance for cringing at my teenage sense of humor I don't and so this gentle Meander rudos basic and the joyous of school programming Club ends here for now if you enjoyed me talking about 16-bit memory weirdness you may also like my video about doing battle with this and more while trying and failing to reverse engineer test drive free or if you'd like some bonus director's commentary about how these Q basic games actually worked future me will be placing something right about there don't leave me hanging future me
Info
Channel: Timberwolf
Views: 7,604
Rating: undefined out of 5
Keywords: QBASIC, QuickBasic, Timberwolf's Old Games, Retrogaming, Retroprogramming, DOSCember, The Revolutionary Guide To QBASIC, Period-correct non compliant C, That PC with the j and the r in its name, BASIC, GW-BASIC, IBM Cassette BASIC, Seriously that Microsoft Logo is well metal
Id: Sqp6ZKx37d8
Channel Id: undefined
Length: 29min 47sec (1787 seconds)
Published: Wed Dec 07 2022
Related Videos
Note
Please note that this website is currently a work in progress! Lots of interesting data and statistics to come.