THE GEEWHIZ COLLECTION
|Is BASIC best?
This is a single-page reprinting of Thomas C. McIntire’s website hosted at http://www.scottserver.org/basically/geewhiz.html. (Rescued via Archive.org.)
The Incredible GW-BASIC Works of Thomas C. McIntire.
This entire collection is now available as FREEWARE.
Tom McIntire has had a distinguished career as a programmer, most of which was concerned with creating business applications with GW-BASIC. In the course of doing this, he developed many tools to make his work easier and more efficient. He also collected over the years a great deal of information that was not only vital to the GW-BASIC programmer, but of use to almost any programmer. Here gathered together in one place is the information, tools and some of the programs. Formerly Shareware, he has kindly released them as Freeware.
This author has always believed that really good programs can only be written by coders that are thoroughly versed in their preferred language. This book describes the nitty-gritty needed by anyone that wants to contend they are truly versed in the GW-BASIC language. In days of yore, in fact, on early generation PCs, this level of knowledge was a must for writers of commercially viable business and accounting applications. In those years too, professionals had to devise their own tools. To do so in GWB sweat shops, one had to “know” what is in these pages. In fact, much of the detail here can now only be found here. Old manuals are hard to find, of course, and even so, none of them contained many of the gems in this manuscript. For serious students of the BASIC language, BLUE is well worth reading for its historical perspective. It is also a worthwhile read for those wanting to better understand the differences between interpreters and compilers.
Program architecture and PAC file scheme are author’s own invention. An early design requirement was to be able to ship (unzipped) on 720 kb floppies. The early versions were packaged as shareware. The shareware aspects were removed in 1998. Today it is truly freeware. This product has been updated at least once annually since 1990. Some “advice” is still in original form because it is no less valid today than in the 80’s. This product works on virtually any PC running DOS 3.1 or later. It works fine on Windows 3.0, 3.1, 95 and 98. It supports use of a Mouse, but works fine without one. It includes a “print page” capability, but that can be a BOAB sometimes with Windows. No other known GWB “manual” is as complete, or as comprehensive as this product.
By the early 80’s nearly all programming languages had “development tools”, utilities really, that made a programmer’s job easier. At the least, functions common to word processing were included in every language’s own editor. Things like cut and paste, and find and swap were considered “basic”. But, BASIC didn’t have even those basics. So this author made his own tools to help him write programs in GW-BASIC. By 1988 this set of tools had grown to the point it included several functions not found packaged with the “superior languages” like PASCAL and C. Check this out: Do Find and Swap on variable names. Cross reference lists, too, for keywords, for line numbers, or for variables. Ho hum, you say. How about this: A static code analyzer–the ultimate quality assurance tool. And, even, a code generator that can mass produce source code from lists of data. Yep, all of that is included in this package, and it’s all done in GW-BASIC. And it all still works, on modern machines too, after all these years. Before you echo the popular sentiment that GW-BASIC is too primitive, check out this package.
By the late sixties nearly all programming languages had symbolic-names capability. And by then, all programmers knew the value of cross referencing utilities–programs that could read their programs and produce lists of the names they had invented, and where they were used. When BASIC came along, its only intrinsic tools were a klutzy TRACE, and RENUM. The lack of good tools was, in fact, one of the reasons most “professional programmers” denigrated BASIC so much. This author–as did many–simply designed his own tools. Later on, he packaged his tools under a common cover, standardized their appearance, and wrote a “manual” to go with them. Here they are now, for free, for use by anyone programming in GW-BASIC. In fact, if you are programming in GWB, or trying to patch or debug old GWB code, grab ahold of these gems. You will be glad you did!
Sooner or later, all professional programmers go native on occasion. Modern languages on today’s machines often make it relatively easy to do so. Ipso, most have a built-in capability to switch over to assembler language for a bit, then back again. In days of yore we BASIC programmers were compelled to go native more often on those old, slow machines, yet it was a bear to do. WhizBAM was this author’s solution. It is a “mini-assembler”. And, more importantly, it outputs syntactically clean lines of BASIC source code that can easily be merged into end-use programs. WhizBAM itself is small, compact, and fast. Its help manual covers all of the mechanics of imbedding machine language code into the fabric of BASIC programs, and it covers the full spectrum of how to CALL that code in GW-BASIC, and in most of the QBs of that era. WhizBAM depends on having one of Microsoft’s DEBUG programs resident (either a COM or an EXE version will work.) Because WhizBAM has to reroute “standard I/O”, it is best run in a DOS environment, even on a Windows machine. In any event, when you need to go native out BASIC, WhizBAM is a slick way to do it.
By the time anyone has written three programs in BASIC they are tired of the monotony of typing LOCATE/PRINT sequences. Right? EBS is a nifty way to reduce that drudgery to zip, and make your programs smaller and faster. EBS is an editor. A twenty-year old, text mode, screen editor. Type all over the screen. Color whatever, with what ever color you want to, then hit Save. EBS does a BSAVE of your layout. In your target program, do a BLOAD. It is easy to do, and your pretty mask smacks the glass instantly, even on old, slow PCs. And, by the way, this scheme works equally well on new PCs running Windows. And the BLOAD trick works with any BASIC that knows how to BLOAD. The average bear can master the use of EBS in less than hour, and no bear likes having to type LOCATE and PRINT a zillion times. Right?
The world is full of Rolodex programs. Here is another one. Like others, you can create “cards” with names, addresses, and phone numbers on them. And, using this program, you can find cards fast, make changes to them, delete obsolete ones, insert new ones, print lists and rosters, and even print mailing labels. Wow and gee whiz! In less than ten minutes you can probably find 50 different free programs on the Internet that will do all of that and more. But… This program was invented before the Internet, before we had megs of memory and gigs of disk space. In those days things were often simpler, however. This program does not even use a Mouse, for example. On the other hand, this program does all that is needed to add, change, delete and list records in a small data base. And it does it efficiently, with a pretty menu scheme, and built-in, on-line help. And it is all done in BASIC, coded to make it easy to customize. In short, if you need to build a custom data base program in a hurry, start with this “core program”. If you know GW-BASIC, you can be done before sundown.
If you enjoy making animated GIFs you might get a kick out of this package. See how with this software the author made icons that could flip, and spin, and zip around all over the screen on old, slow XT’s with 640 memories. And, he did it in GW-BASIC, that old, slow, primitive, kiddy language. A C++ guru once told this author, “you can’t do that in BASIC.” The author’s answer: “I can if I want to…it’s my computer!” And here is how he did it–the whole bag of tricks, including the source code for the “editor”, and a demo application. Yes, these programs run on Windows machines, although, they tend to whiz a tad faster than they used to. Having the source at hand, however, you are welcome to slow them down, or patch them to suit yourself: You can if you want to, on your own computer, gee whiz.
Here is a program that appeals to tricycle motors, and their mothers. WhizKids helps teach kids their ABCs and how to count. It is a connect-the-dots program. All momma has to do is show her kids how to use the arrow keys to pick the number or letter that comes next in sequence. When the outline of a figure is completely drawn, their reward is a pretty, full-colored overlay of their line drawing. This package includes twenty pictures and a comprehensive how-to-do help program. And for the dads, the source program itself is an interesting model of how all of this could be done using that orphan of bygone days: GW-BASIC.
This suite of programs evolved over several years. Version 1, called QuickDraw, ran on a CGA machine about three months after the first CGAs hit the street. Version 2, called Draw4, did its thing with a mouse, by golly. When the EGA came along, version 3 soon followed and was called WhizDraw. It reused some pixel punching routines from previous versions, added many more, and supported HP’s then top of the line ink jet printer. Version 4, this one, dispensed with the shareware cloak and squeaked through beta testing on Windows 95 and 98 machines. Here it is now, WhizDraw for free, source and all. It is usable as is, of course, but it can also be handy to have around as a library of compact “graphics routines”. If you need to make a 2-dimensional object flip, spin, turn, or whatever, in a 4-plane, 16-color machine, look here before wasting your brain power or your time reinventing the wheel. Chances are, WhizDraw has already been there and done it in GW-BASIC, gee whiz.
Once upon a time, the books were bigger than the box. And publishing costs for manuals often exceeded what it cost to develop the software itself. Media costs, one of the main factors, gradually ebbed as discs got bigger. The manuals became thinner as the space needed for “help” files increased. On-line help schemes got better too as memory on PCs increased. WhizHelp was this author’s way of staying abreast of the trends, and includes even, a means for doing “context sensitive” help. In a sense, WhizHelp is a compiler. It reads your “text file manual”, and produces an on-line version of the file, and a customized display program. It is a quick way to produce pretty fancy “help” systems. Read the one packaged with this program and judge for yourself. And now it can be done for your applications cheaper than ever before, because now the tool is free.
“Pegboard Accounting” was a popular scheme for small businesses in the sixties. Then along came “bookkeeping machines”. They were mechanical beasts, usually about the size of a desk, and could only be moved with a fork lift. In the seventies, NCR and Burroughs added “magnetic stripes” to the edges of accounting ledgers and their new “electronic” accounting machines were called “programmable.” This author cut his professional teeth programming those machines at night while working as a bookkeeper during the day. With the advent of the PC, he used that hard-won experience as the basis for writing an accounting package usable on “desk top computers.” Because it was all that was then available, his language of choice was interpreted BASIC, of course. That was in 1975. Although “modernized” several times over the next twenty years, his 1995 model included here has needed few changes since. And it is still in use by a few folks, running as is, on modern Windows machines. Take a look at its utter simplicity and see why it is still around, and how it was possible for the author to design a program that is still usable a quarter of a century later.
Like Minnie might say, Mickey is only good for some things. Tom thinks the same way. A lot of programs would be better off without a mouse. Ever watch a bookkeeper’s fingers tap dance on an adding machine? Those so disposed will like SoliDOS–you can play Solitaire all day without raising your hand off the 10-key pad. And, although this program is less than two years old, notice it too is written in GW-BASIC. Those who think GWB is a dead language ought to take a look at this program, gee whiz.
Some folks like to play computer games. The author of this one enjoys playing them only occasionally. As it is for many programmers, to him, writing game programs is a lot more fun than playing with the result. And a quick look at how this one works makes it obvious the author had a lot of fun building it.
Remember the battery-powered Simon game of just a few years ago? Here is another computerized look-alike. This one, unlike most, however, is played with the cursor arrow keys rather than a mouse. This one is unique in another important way: It was written in GW-BASIC, gee whiz. And although the game is for kids, and it seems simple enough, the design of this program is a tad more than trivial.
No programmer enjoys having to reinvent the wheel. And most of us have a folder where we save chunks of code that might come in handy again someday. Here are 75 chunks of clean and lean code that can be cut and pasted into nearly any BASIC language stream. They are all fall-through algorithms (no branches). Need a sort routine? Shell, or bucket type? Ascending, and descending, numeric and string arrays, and even bytes within a string are covered in this set. And conversion routines for dates and times. and BCD to binary, and hex to octal, and all the vice versus you can think of. The BAS file is loadable by GWBASIC.EXE. The DOC file is a fully indexed set for those using Windows based editors. Take a look: Might be a trick or two here that can save you some time, sometime, gee whiz.
Ever wonder who picked the default list of F-key macros built into GW-BASIC? Sure, they can be changed to something more practical if you want to. And if you want to, you have to do it again, and again, every time you load the interpreter. Patcher.BAS will permanently solve that problem for GWBASIC.EXE 3.23. Plus, if you want to, while you are at it, you can also disable the tester that stops you from being able to LIST or EDIT programs that were saved with the comma-P option. This is a small tool, for sure, but a handy addition to any GW-BASIC sweat shop.
This little program was a freebie given away with all WhizWare accounting programs, as a door prize, to used car dealers, or anybody else that wanted it. It is only natural then, that it should be made a part of this collection. If you don’t happen to have an amortization program, put this one in your accessories bag. Use your car loan to test its usefulness. In the event you don’t like the result, get rid of the car.
More basic than dirt for GW-BASIC programmers, GWscan is an absolute must. This is the only known program other than GWBASIC.EXE that can “de-tokenize” GW-BASIC programs. Thus, it is a must, because with it you can do cut and paste operations from your library of GW-BASIC programs. And you can do it via SHELL to the EXE version while still in editing mode inside the interpreter. Plus, it can do even more. It can detect and display different types of BSAVE files, and do hexadecimal screen dumps, and do translations of binary INT, SNG, and DBL fields in data files, and…. And today there is no reason for any GW-BASIC programmer to have to do without it because GWscan is now as free as the breeze, gee whiz.
POS = Point Of Sale, naturally. And here is an opportunity to get a few more miles out of your old PC XT or AT: make a cash register out of it. Although designed years ago for 8086 PC’s, this software works amazingly well on modern machines too. As is, it is tailored for a Mom and Pop thrift store, but you do not have to be rocket scientist to tweak a bit to suit most any small business. And it’s free, including the source code, so why not? Updated 5/15/04.
A WhizNews show consists of “screen pages”. When the end of the show is reached, it starts all over again. Screen pages are 40-characters wide by 25 lines high. Words, lines, and characters on each page can be “animated”…words can zoom up, shoot from the left, walk from the right, or any of 26 “actions”. WhizNews shows are, conceptually, “advertising movies”. If a viewer wants to know more about a certain subject, the show can be interrupted and the system switches to a static text-file-displaying program called WhizInfo. And included with all of this is WNeditor, the program that makes it possible for you to create shows of your own. If this sounds a bit like Power Point, it should…but the original incarnation of WhizNews was born long before the birth of Windows. And funnily enough, it is still fun, gee whiz, even when running with Windows.
The author learned from a crossword puzzle one time that a troika is a team of horses aligned three abreast. Then one night a few months ago, while surfing for something else, a game called Candy looked interesting. And it was, but it also had a couple of bad bugs. So, here is a take-off from that basic idea with a few custom twists. Not only that, it will run on nearly any DOS or Windows machine. Give it a try, and when you’ve tired of it, give it to the grandkids. That’s what WhizCat did, by golly.
GW-BASIC and DOS grew up together, but their step-daddy abandoned them when souped-up CPU’s and zigabyte disks came along. Yet, so far anyway, we can still run GW-BASIC on most Windows machines. And although GWBASIC.EXE never matured beyond SCREEN 9 (640x350, and 16 colors), with just a little effort it is possible to do some pretty pretty things. And this do-it-yourself kit reduces that effort to a fun level. The GW-BASIC programs in this kit can display Windows BMP files, convert BMP files to BSAVE files, and enlarge displayed text. And just for the fun of it, another one contains a dozen animated graphics routines.
The author’s grandkids tire of playing the “same old games”, so they say. So, from time to time, WhizCat invents a new one. Sort of, that is. What he really does is, he roams the Internet looking for game ideas. Then when one piques his interest, he writes his own rendition. Arrows came to be, in exactly that manner. It is a grid game in which you move blocks with a mouse, and achieving high scores depends on both a little luck, and fair amount of mental acuity. As merely a game, it is fun. As a model of how to write games for contemporary computers in GW-BASIC, this you have got to see. And for free, why not, gee whiz?
WhizCat found a freeware game called Zondulux, liked the idea, but not the implementation. So, as most any programmer will do, he wrote his own rendition. Game is played by flipping tokens on a grid, hence the name, Flipper. Actually, this flipping game is a brain busting puzzle with four skill levels. The kinder crowd can soon master the easy one. Mensa majors can solve the fourth level, maybe. The author could not, however, so the program also includes a DEMO mode to prove that all puzzles really can be solved. And the source program proves that GW-BASIC can be used to produce pretty games. Perhaps after seeing it, you will agree, gee whiz.
You too have probably seen “Word Find” books near those containing crossword puzzles in the stores. Perhaps you also enjoy finding the words interlaced among the randomized gibberish of letters arranged in grids on page after page. My Search program is an e-game of similar ilk. It has eighteen categories of word lists, thirty-six words per group that can each be displayed in eight different grids. Yes, that equates to 144 different puzzles…and a gross is a bunch, by golly. And for those so disposed, Search can be a gross of fun, gee whiz.
RoboRat was first thought of as Robot Rat. The first SAVE had a typo in it making the nickname Robo seem like an inspired invention. So be it. Robo likes cheese, but being dumb like a robot, you have to aim him at bites scattered about on the playing board. Game ends if you aim him wrong and he scoots off into nowhere. Or, when he has eaten all of the pieces on the board, you start another round. A little too trivial for the NASA crowd, perhaps, but kids love it, and some parents do to. If you happen to get caught playing it you can always respond that you were merely curious about how WhizCat did what he did in GW-BASIC. Which is why he did it, by the way, to prove to himself that it could be done, gee whiz.
Funnel of Fun: GW-BASIC Game Program (unavailable)
Funnel of fun it was indeed. There is always something that makes every game program a little different from others on the inside. In this case, that twenty percent or so that was not humdrum had to do with dynamically redisplaying the jumble of balls remaining up in the cone of the funnel after one drops out of the spout. The player’s challenge is in deciding where on the grid to place each one so that no two of the same color are adjacent. Turns out, it was more of a challenge than first reckoned–both the programming, and how to win a round now and then. Dissecting it, or playing it, perhaps you too will agree that there is fun in this Funnel.
Several board games similar to 5starZ can be found on the net. This gem is a hybrid of couple of the better ones with some added twists. The modern ones all gobble a meg or two or three, naturally. Although 5starZ.EXE is a mere 79kb or so, and not as fancy as some, it will run on most any old EGA/VGA machine with DOS 4.0 and later, and all versions of Windows up through 98 SE, at least. Small, quick, addictive, and absolutely free, including source code and all. See it at WhizWare World soon. WhizCat likes it, of course, and somebody you know might too, gee whiz.
PyraDOS: GW-BASIC Game Program (unavailable)
Like Minnie might say, Mickey is only good for some things. This author thinks the same way. A lot of programs would be better off without a mouse. Ever watch a bookkeeper’s fingers tap dance on an adding machine? Those so disposed will like PyraDOS–you can play Pyramid Solitaire all day using just the keyboard. And, although this program is less than a year old, notice it too is written in GW-BASIC. Functionally, it is similar to SoliDOS, q.v. Those who think GW is a dead language ought to take a look at this program, gee whiz.