A&B Computing
1st July 1984
Publisher: Acornsoft/Adder
Machine: BBC Model B
Published in A&B Computing 1.08
Acorn's original User Gude can be described as necessary, but not sufficient, as those busy tracking down its errors and omissions will testify. The cover of this volume tells us that instead of merely complaining about the lack of a well-written, accurate book containing advanced programming information, the authors decided to write it.
The result is a 511-page, A5 format, spiral-bound volume, superficially much resembling the User Guide, and containing 28 sections with eleven appendices. It is applicable only to OS 1.2. The first six sections occupy some 100 pages, and deal with Operating System commands and the use of machine code, including a complete list of 6502 mnemonics, one to a page. This is not intended to teach machine code programming, but is a very handy reference source.
The Advanced User Guide may be somewhat daunting to beginners, but more advanced programmers wanting to exploit the BBC computer's capabilities to the full and cramped by the obvious limitations of the original User Guide, will find it both challenging and indispensable.
Another ten sections form the largest group in the book, occupying more than 200 pages, and deal with Operating System interfacing. Chapters within this group cover vectors, event handling, interrupts, filing systems, and the RS423 interface, with a detailed account of memory allocations. Particularly important is a chapter on paged ROMs, marking out a safe (if complex) route through the minefield surrounding the programming of these devices. Known previously only to a privileged handful, this information may well trigger a ROM population explosion. There are details of *all* operating system calls, including undocumented ones, and a complete list of *FX/OSBYTE calls. It's nice to know all the *FX calls, even if many are unlikely to find much application.
Appendices contain summaries of all the major calls and codes, plus screen mode layouts and disc upgrade information. For the first time (to my knowledge) we are given a complete list of circuit board links and their functions, a keyboard circuit and a full circuit diagram, the latter on a separate sheet - don't lose it! The index is comprehensive and adequately cross-referenced. Early copies had binding holes punched through the index entries and were supplied with separate indexes, but this problem has now been corrected.
The book is written in a clear and very compact style, making few concessions to the reader who expects to be given every concoomitant detail. Cross-reference is essential, and the use of page numbers rather than chapter and paragraph would have been more helpful. For the most part, a good background knowledge and the ability to make at least four out of two plus two, are taken for granted.
A conveniently brief example concerns interlacing. In a paragraph on interlace control by register R8 of the 6845, we read: "default values can easily be changed using *TV(*FX 144) followed by a 0 to turn interlacing on or a 1 to turn interlacing off. Taken literally, this would not work, and the reader is presumably expected to recognise that this refers to an optional second argument of the *TV command, and that it is effective only after a mode change, whereas a VDU command to reprogram the R8 register takes immediate effect. These coomments are meant to define the probable readership rather than criticise the book, which does, after all, carry the word "advanced" in its title.
It is vitally important for a work of this kind to be error-free, but it will be a long time before enough of the contents can be tested to be sure that it is! Where there are discrepancies between this volume and the official User Guide, the authors claim that their version is more likely to be correct, which demonstrates great confidence. The few mistakes found so far are confined to spelling.