Thursday, September 20, 2012

Basic History of BASIC - Dr Kurtz, David Ahl, John Lutz, Steve Wozniak

Crikey, I've left this a long time to post. If you're in the industry and receive Game Developer Magazine, maybe you noticed in the above issue my article on the origin of the Beginners All-purpose Standard Instruction Code programming language. I interviewed Dr Thomas Kurtz who co-created BASIC, along with David Ahl who wrote the million selling 101 BASIC Computer Games book which helped popularised the language, John Lutz who was head of the True BASIC company, and also Apple co-founder Steve Wozniak, who created Integer BASIC for the first Apple computers. I even spoke with Marc-Oliver Ihm on Yabasic for the Sony's PlayStation 2. Due to space not everything could be used - below you'll find my leftover materials covering "10 Things touched by BASIC" and "10 BASIC Dialects", with interview quotes!

10 Things Touched by BASIC

There’s been an enormous amount of software programmed in various BASIC dialects over the decades, some of which proved financially very successfully, spawned bigger follow-ups, or were impressive simply from a technical point of view. Releases from the past 50 years are too numerous to count. Here then are 10 interesting things, either programmed in or somehow influenced by BASIC. Presented in alphabetical order.


Black Onyx, The
Henk Rogers, best known for negotiating the Bullet-Proof Software deal that brought Tetris to the west on Game Boy, also created one of Japan’s earliest RPGs, using a combination of BASIC and Z80 assembler. Contrary to what some sources say it definitely wasn’t Japan’s first RPG, but it certainly grew to be popular and influenced many subsequent RPGs. Also the manual was written by Hisashi Suzuki, who later became president of SquareSoft.


Google Maps
David Ahl explains how far the influence of BASIC goes: “My final computing book was Basic Computing Adventures published in 1988 by Microsoft. The programs in it are fairly elegant in construction - no spaghetti code - and some of the efficient routing routines (think travelling salesman problem) from Subway Scavenger are being used today by Google Maps and some GPS mapping software. Which just goes to show that BASIC is an incredibly versatile language for all kinds of general purpose problem solving.


Little Brick Out
Steve Wozniak explains Little Brick Out in Integer BASIC: “Once I put in commands for color and graphics, the first thing I wrote was Breakout - we called it Breakout at first. Then I put in a command that said if you type in command-Z it would automatically start playing, but never miss the ball - it would fake people into thinking they were playing it perfectly. I did this on my apartment floor, in Cupertino. I just remember the green rug, and the wires going into the TV set, and I called Steve Jobs over and showed him how I could quickly make one little change in my BASIC program and the bricks would all change color. And I could make another change, and the paddle would get bigger, or I could move the score to a different place. We knew that games would never be the same - I was shaking, because games were software finally. Not only software, but in easy-to-program BASIC. With hardware at Atari it was a very hard job, now I sat down and in half an hour I wrote Breakout with tons of options. I realised that if I did this in hardware it would have taken 10 years what it took me half an hour in software.

Kagirinaki Tatakai
Developed in just one month in 1983 for the Sharp X1 computer by Professor Hiroshi Ishikawa, who was only 16 at the time, this represents a spectacular achievement with Hudson’s BASIC compiler. It features distinct left and right facing sprites, three functionally diverse weapons, plus real-time damage to the level structure which results in emergent enemy behaviour. Unsurprisingly it was one of the 10 winners of that year’s programming competition held by Enix. Still astounding to play, even 30 years later.


Pitman
Developed for the Sharp MZ-700 computer by Yutaka Isokawa in 1985, using only Hudson’s HuBASIC, this fun puzzler started out as a type-in listing for Oh!MZ magazine in Japan. It received some BASIC follow-ups by Isokawa and was eventually updated for the original GameBoy in 1990, being renamed Catrap (and is now available for download on 3DS). There were also several unofficial remakes and ports, for MBasic, DOS, GBA, plus a variety of official mobile phone upgrades. Isokawa maintained a lengthy career in games, recently being involved with some Gundam titles. A detailed history of Pitman, along with source code, is available onHardcore Gaming 101.


Portopia Renzoku Satsujin Jiken
Yuji Horii would later go on to helm each of the Dragon Quest RPGs, but this was his first big success. You play the role of a detective investigating a murder mystery. It was converted to almost every Japanese computer of the era, made easy by being in BASIC, and later was remade for Nintendo’s Famicom to become a best seller. Portopia is regularly listed by Japanese developers, including Hideo Kojima, as being one of their earliest influences - its similarities to Snatcher are plain to see.


Quinty
Known as Mendel Palace for the NES in the west, this was the work of Satoshi Tajiri, best known for creating Pokémon. Although he would have needed a language more complex than BASIC to achieve what he did with the Famicom, his understanding of the hardware came from tinkering with Family Basic and then grafting circuit boards bought at Akihabara onto the machine’s components.


Rebelstar Raiders
Given how many BASIC games there are for the ZX Spectrum, it’s difficult to choose just one. Considering Julian Gollop’s expansive career though, and the fact it spawned a series, it has to be this strategic combat game from 1984. A variety of single screen maps and surprising depth have made Rebelstar Raiders a well loved classic. Was followed by Rebelstar written in assembly language, though even its manual attests to Rebelstar Raiders’ BASIC origins.

Star Trek
An ingenious little text game requiring the player to travel through 64 quadrants of space hunting down Klingon ships, all while managing a limited number of years (turns) to accomplish the mission, along with finite supplies of photon torpedoes, shields and phaser energy. The Short and Long Range Scanning is well implemented despite being in ASCII. Ported across a variety of systems under various names, it was also included in David Ahl’s best-selling 101 BASIC Computer Games book, cementing its enormous popularity.


Ultima
The follow-up to Akalabeth (also made in Applesoft BASIC and recently distributed with QB64), this was the start to Richard Garriot’s massively expansive RPG franchise. From this humble beginning it spawned numerous sequels (admittedly moving on to assembler language for the second), eventually leading up to the genre-defining Ultima Online. What’s especially interesting is that Garriot apparently developed 28 smaller Dungeons&Dragons-style games in BASIC before reaching this stage.



-------------------------------


10 BASIC Dialects

There are over 280 variants of BASIC - in fact that there could be over 300, given how poorly documented some obscure versions are. While broadly speaking they all do (or should do) the same thing, some versions are particularly noteworthy.


Dartmouth BASIC
This is the original created by Dr John Kemeny and Dr Thomas Kurtz, first made available in May 1964, and from which all others eventually came. It underwent many revisions and improvements, the biggest of which was probably INPUT statements in 1966, thereby making it interactive. In recent weeks Dr Kurtz has recreated the original: “It turns out that one of the original student programmers, Steve Hobbs, obtained an assembly listing of BASIC from a General Electric programmer, the listing being dated approximately late 1964, long before GE had made any changes to it. I hand copied the source code from the listing, wrote an assembler in True BASIC, and assembled it into octal. I then proofread by eye the octal from my assembly with the 1964 octal. I then wrote an emulator of the GE-235 hardware. I had to fake the user interface, which was constructed on the companion Datanet-30 hardware, but the result is a realistic recreation of what it was like back in 1964.


Altair BASIC
As the first product from the then-named Micro-Soft, this is the language that launched a multi-billion dollar empire. According to David Ahl it was largely based on RSTS-11 BASIC: “I was pleased with this as I was very familiar with it and really liked that version of BASIC. Also, I had a folder of programs in RSTS-11 BASIC which I could roll out in Creative Computing magazine and which later served as the start of the next book, More Basic Computer Games. One of my projects, along with Steve North, was to convert all of the programs in Basic Computer Games to Bill Gates’ Altair BASIC. We put a crash effort into it and the new books rolled off the presses in October 1978. Over the next few years the book was translated into five foreign languages and a mass-market version was produced by Workman Publishing.”


Integer BASIC
Coming on all early Apple II computers, Integer BASIC was short-lived due to not supporting floating points. Steve Wozniak explains why: “I wrote down a complete syntax chart of the commands that were in the H-P BASIC manual, and I included floating point arithmetic, decimal points, numbers and everything. Then I started thinking it was going to take me a month longer - I could save a month if I left out the floating point. I was a mathematician of the type that wanted to solve things with integers - all you need for games is integers. I said: I’ll save a month and I’ll become famous like Bill Gates if I write it the fastest I could. So I stripped out the floating point. It’s too bad. I’ve thought back and that might be my one regret on the Apple II - because eventually we licensed Microsoft BASIC, which was floating point. They walked in the door, they had a BASIC for the 6502 microprocessor, and I was working on a floating point BASIC at the time, and I thought ‘Oh my gosh, that’ll free me up to work on other things.’ So I was happy to go along with licensing it.


Sinclair BASIC
It’s very tempting to put BBC BASIC here, by virtue of its connection to school education and being much faster, but the ZX Spectrum’s equivalent wins out by being the more popular vote. An extension of the BASIC in the ZX81 (the monochrome predecessor to the Spectrum), which in turn was based on the 4KB ROM code of the even more primitive ZX80. John Grant of Nine Tiles, the company which designed the Spectrum, wanted to rewrite the way variables were stored to improve speed, but Clive Sinclair refused on cost grounds. Despite being very slow and with an excess of commands overlaid onto a tiny chiclet keyboard, it was nevertheless used by countless Spectrum owners.


N88-BASIC
In Japan NEC’s PC-88 and PC-98 computers totally dominated the home market, right up until the late-1990s when Windows started being integrated. This BASIC, or a version of it, is what came with those earlier models - therefore N88-BASIC was probably the most commonly available dialect. Having said that, there were BASIC dialects for all the Japanese computers, including for the MSX, Hudson’s BASIC compiler for the Sharp X1, and even a version of BASIC for the powerful X68000. In the case of the X1, programming a game in BASIC was easier than on equivalent platforms, thanks to the hardware’s Programmable Character Generator - hence why even when using assembler language, it was impossible to port Kagirinaki Tatakai to the PC-88. Of course better hardware doesn’t always mean better sales, and the PC-88 reigned supreme.


Family BASIC
Nintendo collaborated with Hudson and Sharp, which had prior experience in the field, to bring a dialect of BASIC to its Famicom console. This wasn’t the first example on consoles, BASIC Programming on the Atari 2600 predates it, but it’s certainly one of the more impressive. Arriving June 1984, priced at ¥14800, it came with a burgundy toned Japanese QWERTY keyboard and oversized cartridge, and had 2K of memory. The Nintendo branded tape recorder, to save programs, was sold separately, though any recorder which accepted input would do. The final revisions, V3, doubled the memory to 4K.



YaBASIC (Sony’s PS2)
Yet Another BASIC was available for Unix, and was officially ported by Sony to the PS2, coming bundled on one of the original demo discs. Marc-Oliver Ihm tells his story: “Some years ago I received an email from a Sony official, asking if they could bundle my YaBASIC with their device. I was pleased and said yes. Some weeks later I received a PS2 for free by mail. That’s it. Sony also added some features for using graphics. As far as I know, the real reason was to save taxes within Europe. If they bundled the PS2 with a programming language, they could declare it as a computer, instead of consumer electronics. That made a difference in the amount of duty they had to pay when shipping to Europe.


Batari BASIC
Not to be confused with the BASIC Programming cartridge released for actual use on the system. Batari BASIC allows you to programme a game using BASIC, and then compile it into a ROM for use on an Atari 2600 emulator or hardware. Given the well documented difficulties of creating anything for the system, this is an astounding achievement. You won’t be able to replicate Pitfall 2, but by golly, you can actually make some pretty good games for the system using BASIC!


QB64
Microsoft’s original DOS-based QBasic used to come bundled with its Windows operating systems, and included some extremely comprehensive tutorial files. The original release was just a BASIC interpreter, but later versions of QBasic allowed you to compile your programs into executables. As DOS compatibility faded from Windows, so did QBasic. 
 
QB64 is a modern update by fans of the original, designed to work with the latest Windows operating systems. In truth it’s only a compiler, so booting a program will take a few seconds, but along with excellent backwards compatibility it features a whole bunch of new easy-to-use features to make games look and sound better than before.


TrueBASIC
John Lutz, former CEO and owner of True BASIC, recalls its history: “In 1982 and 1983, with the growth of microcomputers, the gold rush was on to develop software. Much of the focus was on programming tools and the early success of Microsoft was being noted. Three graduating students of Dartmouth College lobbied professors John Kemeny and Thomas Kurtz to create a commercial software company and recreate their successful BASIC programming language into a cross-platform product. They regarded Bill Gates rewrite of BASIC to be substandard and felt they could do better. The alumni of Dartmouth ramped up a development staff and by 1985 produced versions of True BASIC for DOS, Macintosh, and Atari. Sadly, no one seemed to foresee that programming tools would become a VERY small niche product for microcomputers and applications would reign. By 1992, it was clear to the investors of True BASIC that major changes needed to be made. Without going into all the details, a ‘survival’ plan was accomplished and, by 2000, all the original shareholders were made whole and I took the company ‘private’.

6 comments:

  1. What, they didn't use the "10 Things touched by basic"? That's a shame...

    Ah, that Gorilla game from good old QBasic! Modifying that was my first programming experience. Good times...

    ReplyDelete
  2. Well, technically they didn't ask for it. I had the material, pitched the article, and they decided to squeeze it in at short notice - there was no room for boxouts.

    ReplyDelete
  3. Relating to the Woz's lamenting about Microsoft beating him in implementing floating point BASIC, Microsoft made BASIC languages for several home computers at the time. Their version for the Commodore 64 is EXCEEDINGLY bare-bones: no high resolution, no sprites, no controller support, and no sounds. ALL of these things you have to resort to using POKE commands, cryptic numbers and memory maps, and the language is slow as heck too because it does all its math using floating point! Even if you add together two integer variables, the numbers are converted to floating point, added, then converted back, so integer math is actually slower than floating pointmath

    ReplyDelete
  4. (Gah, iOS bug cut that last comment off) More on Microsoft BASIC's suckiness: http://www.lemon64.com/forum/viewtopic.php?p=385428&sid=4767ef9d43b67265002028d582ad347d

    ReplyDelete
  5. I've read that even Sid Meier's Pirates contains lots of Basic code (the C64 version at least). Considering the game was released in 1987, I find that quite amazing if true.
    It certainly would explain why parts of the game are so slow :).

    In general, I suppose Basic was mostly used for text adventures when it comes to commerical early computer games though.

    ReplyDelete
  6. The QBasic that was bundled with MS Operating Systems was actually a subset of Quick Basic 4.5 which had commercially available with a compiler.

    ReplyDelete