An in-depth assessment
Gary Herman avoids the usual superlatives associated with reviews of the BBC Model B and presents a critical reappraisal
It seems as though you can't take two steps in the micro world without hearing the BBC computer praised in glowing tones. But just how good is the BBC computer? The short answer is that the machine is good, but the price could be more enticing. It's most appealing features are the wealth of interfacing features and the comprehensive facilities for 'low-level' programming via assembly language and a variety of ready-made calls to operating system routines. The interfacing features (on the Model B) include a user input-output port, four built-in A/D inputs, an RS423 serial socket (RS232C-compatible), a Centronics parallel printer port, RGB-video and TV outputs, a 36-way 1 MHz bus connector and a cassette interface.
Unfortunately, other desirable and publicised features — the disk interface, the Econet facility and a second processor interface — cost extra when they are available.
The operating system facilities (including assembly language programming from BASIC) also suffer from drawbacks. They are, first and foremost, confusing to use (especially for a novice), badly documented and sometimes (for example, the 'VDU' calls) entirely redundant. The manual, although packed with information, is not really helpful to anyone wanting to explore these facilities.
The much-vaunted graphics are, in my opinion, inferior to those of the considerably cheaper Atari, the screen display on a television is noisy and the screen and program editing facilities are not exemplary. As a result, it is sometimes difficult to use and this is particularly true of the machine's sound facilities.
Amazingly, the BBC has no facility for audio output to an external speaker or amplifier (a 50k audio signal can be taken from pin PL16 on the printed circuit board, but doing so will probably invalidate your warranty. You may also notice unwanted noises this way, which may be reduced by wiring a 10k resistor across pins 15 and 16 of the 36-way bus.)
The computer uses a Texas Instruments 74689 programmable sound generator, offering the familiar features of one noise channel and three tone channels. Unlike the Commodore 64, with its standard-setting SID chip, the 74689 offers only a pulse waveform and — as far as I can tell — no digital filtering.
The two BASIC sound commands are SOUND and ENVELOPE. The former is followed by four parameters: channel information/cueing, volume, frequency and duration. The last two present no problems — duration being an integral value in units of 1/20th second from 0 to 254 with 255 (or -1) being indefinite, while frequency is a similar integral value with a difference of four between semitones. Volume has a resolution of 16 — from 0 (quietest) to -15 (loudest). Positive values (normally, 1 through 4) indicate the use of an envelope.
In use, SOUND information is loaded into a buffer (directly accessible to one of the BBC's OSWORD calls). A two byte number specifies channel and the order in which the notes will be played. Acceptable values for this number (in hexadecimal) are given by '&abcd' — where 'a' can be 0 or 1, 'b' can be 0 to 3, 'c' can be 0 or 1 and 'd' can be 0 to 3. The first digit, 'a', determines whether the specified note is a dummy (1) or not (0). If it's a dummy then the preceding note continues playing to its end — this is only relevant when used with the ENVELOPE command. The second digit determines the number of notes to be played in unison with the specified one. For example, if this number is 2 then the note will not sound until notes on two other channels have been specified using the same format. This is used to synchronise harmonic accompaniment or, in other words, to play chords rather than arpeggio. The third digit determines whether the buffer queue for a given channel is to be flushed (1) or not (0). If it is flushed then the note preceding the specified note is terminated and all other notes entered into the relevant channel buffer are erased and will not play. The final digit, 'd', determines which channel the specified note will play on. If this number is 0, then the result will be noise — semi-pitched periodic noise if the frequency number is 4 to 7. On channel 0, frequency numbers 3 and 7 give noise that is filtered by the tone playing on channel 1 — which can, of course, have a zero volume.
In practice, the channel number is usually the only digit used in the SOUND command's first parameter. It can be entered as a simple decimal number (in fact, the hex parameter can always be entered in decimal form). It is almost impossible to enter an out of range number, since the BBC converts all SOUND parameters to a number within the appropriate range by repeated subtraction.
The short program below gives some indication of how the channel cueing parameters affect output.
10 FOR N = 0 TO 3
20 SOUND 1,-15,20, 100
30 FOR PAUSE = 1 TO 1000: NEXT
40 SOUND &11,-10, 150, 100
50 SOUND &101, -15, 60, 100
60 SOUND N, -10, 5, 100
70 SOUND &102,-15, 100,200
80 FOR WAIT = 1 TO 30000: NEXT:
Feature by Gary Herman
mu:zines is the result of thousands of hours of effort, and will require many thousands more going forward to reach our goals of getting all this content online.
If you value this resource, you can support this project - it really helps!