BBC BASIC is more than 40 years old. The general public first became aware of its existence at the beginning of 1982, when the first Model A BBC Microcomputers went on sale and the first series of The Computer Programme was broadcast on BBC television (starting on Monday 11th January 1982). However, the history of BBC BASIC goes back further than that.
BBC BASIC was conceived sometime in 1979, when the BBC first had the idea of educating the public in the use of computers. It was realised at an early stage that the wide variety of different home computers, operating systems and languages would cause difficulties, and that it would be much simpler if the educational material could be targeted at a standard machine running a standard language. Nevertheless the BBC didn't want to disenfranchise people who had other computers, so the language chosen had to be similar to those already in use - the most popular being Microsoft BASIC (yes, their influence was felt even then!).
It was apparent that the BBC didn't have the resources to design and manufacture a mass-market home computer itself, so precisely what form the chosen language would take had to await the decision of what company would be involved. A number of British firms were invited to tender for the work, and as we know the winner was Acorn Computers of Cambridge. Acorn already had a home computer on the market at that time, the Atom, but the language resident in that machine was a very quirky version of BASIC which, although fast, had poor compatibility with the versions in other machines.
The BBC could have insisted that standard Microsoft BASIC be used on the BBC Microcomputer, but it was realised that the language lacked a number of features that are desirable in encouraging good programming practice. In particular these were the ability to use long variable names, to aid program readability, and the possibility of writing 'structured' code in which the program flow can be controlled in an organised manner. Acorn were already developing a new language with these features, intended for a future machine, but it wasn't sufficiently standard to satisfy the BBC's needs.
What we now know as BBC BASIC arose as the result of a compromise between what Acorn were already planning to produce and the BBC's desire for a 'standard' language. Programs written for Microsoft BASIC required little or no alteration to run on BBC BASIC, but programs written specifically for BBC BASIC could take advantage of its more sophisticated features.
When I was involved in the selection of Acorn as supplier and in the specification of BBC BASIC I had no idea that my association with the language would continue for more than twenty-five years! At that time I was a fairly proficient programmer of the Z80 microprocessor, both in my work for the BBC and as a hobby, and I remember being quite disappointed that Acorn were to base the BBC Micro on the 6502 - a processor I knew little about. However, that disappointment was later to turn into an opportunity.
My interest in interpreted programming languages was piqued by my involvement in the BBC Micro project, and by some of the 'inside knowledge' I gained by working closely with Acorn engineers. The genius behind much of Acorn's software, and the person who wrote both Atom BASIC and BBC BASIC, was Roger Wilson (now Sophie Wilson); he went on to develop versions of BASIC for the ARM processor used in the Archimedes series of machines.
At some point in the early 1980s I realised that I had sufficient programming skills and enough understanding of the inner working of interpreters to write a version of BBC BASIC for the Z80 processor. Although initially produced for my own interest, once a fully functional version had been developed it became apparent that there might be a market for it as a commercial product. It first went on sale in 1983 as a generic version for CP/M-compatible computers (CP/M was an operating system developed by Digital Research for the 8080 and Z80 processors), and because such machines did not have a standardised (or in most cases any) graphics display that version of BBC BASIC was limited to a text screen only.
By this time the success of the BBC Micro and the BBC's Computer Literacy Project had created a desire in other manufacturers to make BBC BASIC available for their machines. Fortunately (for me) many of these computers were based on the Z80 processor, so I had a ready product that only needed to be adapted to the particular graphics, sound etc. features of the machine in question. I produced versions of BBC BASIC for the Torch Second Processor (1983), the Acorn Z80 Second Processor (1984), the Wren Executive (1984), the Tatung Einstein (1984), the RML 480Z (1984) and the Amstrad CPC 664/6128 (1986). In all these cases BBC BASIC wasn't the machine's 'resident' language and had to be loaded from a floppy disk when required.
The first IBM PC had been introduced in the United States at around the same time as the BBC Micro came out in this country: it was also intended as a home computer and, like the BBC Micro, had a video output compatible with domestic TVs. By the mid 1980s the IBM PC had been developed into a much more sophisticated computer and there were a number of compatible machines from other manufacturers on the market. It was obvious that it was becoming a very important product in the fields of home and business computing and that an implementation of BBC BASIC for it would be very desirable.
Unfortunately the processor in the IBM PC (the Intel 8088, later to be developed into the 80x86 and Pentium families) was quite incompatible with the Z80, so my version of BBC BASIC wouldn't run. Nevertheless since both the 8088 and the Z80 were developments of the old 8080 processor they did have similarities and it was possible to convert the code more easily than would have been the case starting from scratch. I was assisted in this task by two friends at the BBC, Brandon Butterworth and Jeff Raynor, who translated much of the 'generic' part of BBC BASIC whilst I concentrated on the hardware and operating system-specific features such as disk filing, graphics and sound.
The IBM PC version of BBC BASIC went on the market in 1986, and it was around this same time that Research Machines Ltd. (RML), who before the advent of the BBC Micro had had a near monopoly of computers in schools, realised that if they were to retain their footing in the educational world they would need to provide some compatibility with the BBC machine. Their Nimbus computers were based on the 80186 (another 8088-compatible processor) and, like the IBM PC, used the MS-DOS operating system, although they weren't IBM compatible. RML were concerned to achieve a higher degree of compatibility with the BBC Micro than the IBM PC could manage, so a hybrid product was developed for which I supplied the generic BBC BASIC interpreter and RML supplied the emulator of the BBC Micro's graphics, sound and operating system.
Two more non IBM-compatible versions of BBC BASIC (86) were later to be developed, for the Victor Sirius 1 (1988) and the Acorn Master 512 (1989), but the Z80 version still had some life left in it. In 1988 Clive Sinclair brought out the Z88 'notebook' computer, which used the Z80 processor and incorporated my version of BBC BASIC in PROM. In 1992 Amstrad's similar NC100 Notepad computer was launched (later followed by the NC150 and NC200), again using my version of BBC BASIC as its resident programming language.
The huge success of the IBM PC and compatibles, and the fact that current Pentium PCs running the latest version of Microsoft Windows will still happily execute programs written for the original 8088 machine (albeit well over 100 times faster) has meant that there has been little need for development of BBC BASIC (86). Apart from a minor upgrade in 1996, and another small change at the beginning of 2000, it has remained substantially unchanged (mercifully no serious bugs have ever been found). Although BBC BASIC (86) isn't fully integrated into the Windows environment, it will work perfectly well in a window and it is even possible to write BASIC programs that are controlled by the mouse.
In the early part of 2000 I decided that I would have a go at writing a 'proper' Windows™ version of BBC BASIC. I had no previous experience of writing Windows programs, and one of the main motivations was the opportunity to learn about Windows. I had no idea when I began whether I would have the ability (and the stamina) to end up with a program good enough to sell. Indeed, had I realised that it would take me about 18 months to achieve that goal, I would probably never have started. Nevertheless my efforts paid off, and on 1st October 2001 version 1.00a of BBC BASIC for Windows was released.
BBC BASIC for Windows has been regularly updated over the past five years and (at the time of writing) has reached version 5.60. Apart from the inevitable bug-fixes, initial enhancements concentrated on improving the user interface and the compatibility with Acorn's BASIC 5. More recently I have developed the language specification beyond any of Acorn's versions, with the introduction of features such as PRIVATE variables, long (up to 65535 character) strings, single-byte variables and structures. BBC BASIC is now a much more sophisticated language than it was 25 years ago, whilst maintaining compatibility with those early versions.
So what of the future? Who knows? When I wrote the first version of this history BBC BASIC for Windows hadn't even been thought of, BBC BASIC (86) had been stagnant for about 14 years and - although still a keen user of the language - I had no ambition to develop it further. How things have changed in a relatively short time! As I write this I feel that BBC BASIC for Windows is sufficiently mature not to require much attention and a period of consolidation once again seems appropriate. Nevertheless I occasionally think about the possibility of a Linux version or even (now they use Intel processors) a Mac version. I don't think I'll be tempted, but I've been wrong before....
4th October 2016
... and I was, but only after another hiatus of about eight years! The thing that changed my mind was a chance encounter with SDL (Simple DirectMedia Layer). I actually came upon it via two quite different routes: a major commercial program ported to LB Booster (my Liberty BASIC clone) used it as a helper library for 3D graphics, and it was used by SpecBAS, an extended emulation of Spectrum BASIC that I knew of. The beauty of SDL is that it provides a cross-platform abstraction layer, allowing you to write programs that will run on Linux, Mac OS-X and a number of other platforms substantially without modification. So it was that in late 2015 I ported my IA-32 version of BBC BASIC to SDL, initially to run on Windows but later after a bit of tweaking on Linux (86), Mac OS-X, Raspberry Pi OS, Android, iOS and for running in a browser.