Moving up with OS9 - from Dragon User magazine, April 1984
Keith and Steven Brain reveal the ins and outs of OS9
At last Dragon Data's long-awaited OS9 disk operating system and range of associated software have arrived on the scene as part of a deliberate policy of moving "up-market" into the small business and professional sector where Dragon Data sees an expanding user-base.
It remains to be seen whether small businessmen can be persuaded to part with their hard-won cash for such business aids, but at the same time the arrival of OS9 is a major step forward for the computer enthusiast who wants to squeeze the most out of his Dragon. Certainly Dragon Data's pricing policy seems to be firmly based on the "pile it high and sell it cheap" axiom on which Tesco was founded, and in comparison with many professional programs for other micros its software prices seem to offer extremely good value.
A serious system
If Sir Clive hadn't thought of it first (as usual), we would be tempted to say that this step was a "quantum leap" for the Dragon as it effectively transforms the micro from a sophisticated toy into a very serious machine.
The OS9 operating system is the key to the expansion ot the Dragons potential and to fully understand the significance of this development it is necessary to consider how a computer carries out instructions. In the standard Dragon 32 or 64 the "operating system", which contains the commands understood by the computer, is contained within the Basic ROM. If the Dragon DOS disk system is added further systems routines are included in ROM in the cartridge. All of the routines in these ROMs are actually included in the memory map at all times, whereas with a totally disk-based operating system all of the routines are on disk instead, and these are only loaded into memory as and when required. The immediate advantage of this is that you can have a much more complicated operating system without losing much of your precious RAM.
OS9 is a sophisticated management system which enables you to get much more from your Dragon. As it was designed by Microware Systems Corporation in collaboration with Motorola (the designers of the 6809 CPU), it is an extremely efficient product which uses the capabilities of the 6809 to maximum advantage. A major difference between the 6809 CPU and lesser microprocessors is that it supports "position-independent-code (PIC)" which means that routines can be loaded and run at any point in memory. Thus the available memory can be used much more efficiently, and several programs can be present simultaneously.
In practice OS9 carries out all of the housekeeping for you automatically without any need for intervention from the user (unless you attempt the impossible). Normally modules are loaded as required and then deleted from memory once their usefulness is ended, but where modules are called repeatedly these can easily be locked into memory to save time. A substantial OS9 Operating System Users Guide is included and an OS9 Programmers Manuel (unseen as yet) is listed at £19.95. The details of OS9 are too complex to explain in the small space available here so we will try to give you the flavour of the system and point out what we feel are the most significant features as far as the Dragon implementation is concerned.
To run OS9 you need a Dragon with 64K of RAM and a Dragon DOS disk system. When you use OS9 you turn your Dragon into a 64K "soft machine" and switch out both the standard Basic ROM and Dragon DOS, although you need the latter to set this process in motion. You turn on the Dragon as usual and when the Dragon DOS logo appears insert the OS9 system disk and enter the command "BOOT", which loads the essential control modules into memory and sets up 64K of RAM. These essential routines are concerned with items such as input/output (I/O) management, disk control, keyboard scan, video display, printer and real time clock. At this point you have 48K of memory still free for use.
The "shell" is the part of OS9 which accepts commands from the keyboard and acts as the interface between you and the rest of OS9. Whenever the shell is waiting for an input the "OS9" prompt is shown at the start of the next line. The command line always starts with the name of the program to be run (which can be one of several different types) and once the line is entered the shell searches for this name, first in memory, next in the "execution directory", and finally in the users "data directory".
There are many similarities between OS9 and Unix, and pathlists are an important concept. These are descriptions of the route to be followed by a command and are somewhat similar to the "filenames" used by other systems, except that they frequently consist of a list of names rather than just a single name. Multifile devices (like disks) store data in separate files which have names that are entered in a "directory file". When a new disk is first formatted a "root directory" is created automatically, and sub-directories are formed beneath this in a tree-structured hierarchy.
For example, the root directory of the standard OS9 system disk contains seven files: OS9Boot, CMDS, DEFS, SYS, startup, RUN32 and RUN51, and the CMDS directory contains a further series of files which contain the modules for 47 individual OS9 commands. It is sometimes a nuisance to have to specify a complete pathlist to call up a particular file, but this is often unnecessary and only a relatively minor irritation.
The default startup file uses the normal Dragon text display, with upper-case letters only, but both upper and lower-case (inverse) can be called with "-UPC", with or without shift-lock. A number of control functions can be called by codes or via the "cIear" key, and a "type-ahead" buffer operates except when the disk drive is running. An altematlve video driver producing a 51 column by 24 line true upper and lower case display can be called by "go51". However, although preferable, it does eat up 6K of memory.
Modes and codes
Two hi-resolution graphics modes are supported (=PMODE 3 and 4) and codes are available to produce the equivalents of PMODE, COLOR, PSET, PRESET, PCLS, MOVE. LINE and CIRCLE. But the very useful DRAW, GET and PUT are notable by their absence. Joystick values can be called via assembly language system calls.
OS9 has a unified I/O system in which transfer of information takes place in the same way regardless of the hardware device involved. This means that I/O can easily be redirected to alternative devices without having to alter the program. (For example, to divert output from the screen to the parallel printer port all you need to do is to add ">/P" to your execution command instead of changing every occurrence of "PRINT" to "PRINT#-2".) This also means that programs are highly portable from your Dragon to any other computer using the 6809 CPU. The "AClA51" module redirects input or output to the serial port, and this can be used, for instance, to drive a serial printer or to transfer data from another device (such as another Dragon). No cassette driver routines are provided.
If more than one program is entered on the same line, separated by semicolons, then these programs will be executed strictly in sequence. The second kind of separator is the ampersand (&) which denotes concurrent execution (two or more programs running simultaneously). Much of the time the CPU is simply waiting for some input and the efficiency of OS9 is much enhanced by "timeslicing" which allows different processes to share CPU time and other resources.
Management is carried out automatically but specific priorities can be applied to different processes if desired. As an example entering "DlR>/P&" will show a process ID number (for example, 001), start to print out a directory to the printer, but immediately return the OS9 prompt so that another command can be entered. The final type of separator (!) sets up "pipelines" between concurrent programs so that the output from one automatically becomes the input for another with perfect synchronisation.
OS9 will support timesharing between a number of terminals and the LOGIN command can also be used on the standard system to check tor the correct password before entry is allowed. Every file has ownership and attributes which determine who may access the file and how it may be used. The current user number is automatically added to the file, and execution, reading and writing can be restricted to this user. Finally we must mention the OS9gen and Cobbler commands which allow you to change the system boot configuration to suit particular applications.
Undoubtedly OS9 is a very valuable tool, the power of which is well demonstrated in the applications software described below.
Basic 09 is described as "an enhanced and structured Basic language programming system specially created for the 6809 advanced microprocessor used by the Dragon computer". In fact Basic 09 is rather a Basic/PascaI hybrid with an odd bit ot Fortran thrown in for good measure. One very important feature is that it has an interactive compiler which gives it the speed of a compiled language and the ease of use of an interpreted language.
Although Microsoft's Color Basic (the standard Dragon version) is extremely easy to use and is noted for its excellent graphics commands, it was not written for a particular processor whereas Basic 09 was especially written to exploit the full potential of the 6809. Basic 09 is fully compatible with other programs running under OS9 so that you can use it to process files produced with the database package HMS, Stylograph and others.
Basic 09 is made up of some 22K of code and on startup 4K is reserved for workspace, although this is easily changed with MEM up to a maximum of about 24K. On startup it is in SYSTEM mode where you can interact with OS9 and control the workspace environment. Programs are written and amended in EDIT mode, the language is fully structured, and programs are written as procedures where line numbers are optional. A syntax check is automatically made at the and of each line and in addition a further error check is performed when the procedure is complete. Provided that no errors are found the program is immediately compiled to Intermediate ("I") code which is executed by run-time routines.
When an existing procedure is edited it is automatically decompiled and the "I-code address" of each line is printed out so that the position of errors can be easily located. Program listings are automatically "pretty primed" to show nesting. A wide range of editing commands (including search, change and renumber) are provided. Standard control structures are supported, in addition to WHILE...DO, REPEAT...UNTIL, LOOP... ENDLOOP, IF...ENDIF and ON ERROR GOTO are supported.
Programs can be simply RUN by name or AUTO-RUN allows immediate execution after loading. If errors are found then these are dealt wtth in the comprehensive DEBUG mode. In particular BREAK allows you to set up breakpoints, STEP executes a procedure one source statement at a time, and STATE lists the nesting of all active procedures. TRON turns on trace mode where the compiled code of each equivalent statement line is reconstructed to source statements and displayed before the statement is executed. The PACK command allows you to further reduce the size and execution time of your program by forcing another compiler pass which removes names, line numbers, non-executable statements and so on. But once the procedure is in this form it cannot be edited, debugged or reloaded into the workspace, although the code can be run from OS9 at any time and is secure. Speed-up in the order of 10-30 percent is claimed, but that rather depends on how much unnecessary material there was in the original version!
A Graphics Interface Module ("GFX"), written in assembly language, is provided to give easier access to the hi-res facilities described under OS9 itself. In addition to the facilities mentioned previously there are GLOC (returns the address of the video display RAM), GCOLR (=PPOlNT) and JOYSTICK (as Color Basic). No sound capabilities are included (apart from BELL).
OS9 has very powerful mathematical functions and nine-decimal-digit, 40-bit-binary floating point arithmetic.
The TYPE statement can be used to produce a new user-defined data type which may mix the standard data types. As well as the normal Boolean operators (NOT, AND, OR and XOR) bit-by-bit logical operators are provided (LNOT, LAND, LOR and LXOR). Other functions include MOD (remainder), ADDR (memory address of a variable, array, or structure name), SIZE (size of a variable, array, or structure name), ERR (code of the most recent error), DATE$ (current date and time), and TRlM$ (removes trailing spaces from a string). The useful lNKEY$ commend does not appear in the manual (except as an assembly listing) although in fact it is actually present in the CMDS directory.
Files and I/O are dealt with in typical unified OS9 fashion. INPUT, PRINT, PRINT USING, CREATE, OPEN, CLOSE, DELETE, READ and WRITE are self-explanatory. GET and PUT statements are completely different from their Microsoft pseudonyms and read and write fixed size binary data records to files or devices whilst SEEK changes the file pointer. They are the primary I/O commands for random access and can be used to deal with individual records or whole data structures. As they use the same binary format as the actual disk files they are much faster than READ and WRITE which convert characters to and from ASCII format.
Although we are not generally greatly in favour of comparing "benchmarks" for different machines, a quick check of the standard (Kilobaud) comparisons revealed such a startling improvement over standard Dragon Basic that we could not resist including them.
A quick glance at the comparison table shows what a real boost has been added to the Dragon. Even in the worst case (using real numbers) the speed improvements are dramatic (execution time reduced to 35 percent). If integer numbers are used wherever possible the results are almost unbelievable (reduction to only 14 percent of the original time). Comparisons with some other machines are also very interesting and demonstrate that 16 bits are no substitute for good software.
The Stylograph wordprocessing program is only available as a complete package which also includes the Mailmerge and Spellcheck options, but as the total price is only £79.95 you can hardly complain about that. lt can be used on a single or dual disk system, but on a single disk system storage space is somewhat limited as the extensive dictionary is on the same disk as the text files. A detailed manual is provided which explains the system quite clearly, and a step-by-step tutorial is also provided. The manual was obviously not written specifically for the Dragon and unfortunately the tutorial is very confusing in places as the examples given assume that the default screen display is wider than it actually is. (Stylograph uses a 51 column by 24 row display format but line length can go up to 160 characters and the screen can be scrolled left and right in 25 character steps.)
To use Stylograph, simply replace the OS9 system disk with the Stylograph disk, change the directories to the new disk (chx/d0/cmds chd/d0), move to 51 column mode (go51) and type "stylo" to enter "supervisor mode" where a menu of options is provided which are selected with a moving cursor. Text can be loaded and saved, backup files are automatically kept, and accidental deletion of files is difficult as comprehensive error traps are included.
The extensive printout capabilities will support virtually any type of printer (including proportional spacing) and any necessary modifications can be carried out at the time or on a permanent basis by calling the STYFIX program. Even when the system is configured for a special printer, supporting underlining or alternate fonts, a straightforward printout can still be produced by selecting the TTY option, and files can also be spooled to disk for later printing. It is possible to PASS any command to OS9 from within Stylograph, which is particularly useful if you want to call up a disk directory, for example.
Selecting EDIT takes you into the ESCAPE mode where cursor control, scrolls, find, replace, move, duplicate, delete, insert and single character overwrite can be carried out. A useful card showing the keyboard functions in escape and control modes is provided. The current page number is displayed at the top of the screen, together with a line of dashes to indicate the line length and you can easily jump to any existing page. The cursor control and scroll keys are grouped in the traditional diamond pattern, and hitting the semicolon takes you into INSERT mode, where text can be entered. It is obvious that you are in insert mode as the current line is now indicated with a row of inverted hyphens indicating the line length.
Full page formatting facilities are provided, and the effect of many of the commands is visible immediately on screen. Text may be unjustified, left justified, right justified, or centred and the input buffer and concurrent rewrite of the display mean that it is impossible to "miss" characters even when typing rapidly. Page headers and footers, new paragraphs and pages, margins and indents can be defined.
Control functions can be called from either escape or insert mode, with the "clear" key being used as control. CTRL-A calls assistance if you forget a command; CTRL-D, -W and -X delete characters, words or lines; -R sets tabs; -Y clears tabs and -T moves to the next tab position. Five different types of character modifications can be specified (provided that your printer can accept them): underline (-U), overline (-O), superscript (-I), subscript (-K), and boldface (-B). These are normally indicated by reverse printing of the text, but they can also be checked by the VIEW command (-V), which replaces the text with different numbers according to the modifications called, and all modifications can be removed with -Z. CTRL-F allows you to remove the format lines from the screen so that more text can be viewed, and -P shows the current status of the text.
CTRL-G allows you to insert "ghost hyphens" into long words. The final control function (-N) allows you to put a name (explanation) to any error you may encounter. Hitting the clear and break keys at the same time returns you to the escape mode.
To begin with we found that switching between insert and escape modes was a little tedious, but with practice this was not really a problem. The maximum memory allocation for Stylograph seems to be #15K which only gives a total of 8901 bytes for text storage (about six double-spaced A4 pages), which is rather small, but text files can be linked to produce longer documents. lt is a very sophisticated system (the stylo file alone contains over 21K of code and 6K are needed for the hi-res text display) so there has inevitably been a trade-off between facilities and space.
The Mailmerge option has three functions. First of all it allows you to print any number of copies in a particular file. Secondly it allows you to link files together for printout as a single document with continuous page numbers, headings and so on. Finally it allows you to merge a file of "variables"with a text file. The most obvious variables are names and addresses for personalised circular letters but there are obviously many other applications. As OS9 is multitasking it is easy to set up Mailmerge as a background task which proceeds even as you are preparing another document.
If you can't stand the noise of your printer when you are working then you can simply divert the output to a comprehensive disk file which can be printed later. If you also have the RMS database you can use it to produce a file of specific data to be merged with the text.
The final part of the package is Spellcheck, a very impressive program which rapidly compares each word in your text file with the contents of its dictionaries and reports any words which it cannot find for possible correction. The standard dictionary contains an amazing 42.000 words (Spellstar has 12,000) which are in a specially compressed format that occupies only a quarter of the space normally required. In addition it is easy to add new words (such as technical terms) to a supplementary dictionary.
If a "non-match" is found then the word is displayed and one of a number of options can be selected. You can simply (I)gnore the word or (A)dd it to the dictionary. On the other hand, if you are less sure of yourself, you can decide to (D)isplay it in context or (F)lag it for later action. ln theory it is possible to decompress the dictionary to read the words but the normal Dragon disks are too small to hold the results. More usefully, it is possible to merge supplementary dictionaries into the main one to give more rapid checking of added words. As a sideline a wordcount is also produced during checking.
We hope this introduction gives a taste of what can be done with OS9 - other applications packages will have to wait for a later review.
Speaking in dialects - from Dragon User magazine, June 1984
Keith and Stephen Brain review OS9 languages
In addition to the compiled Basic 09 language, reviewed earlier in Dragon User, Dragon Data is also marketing two other language packages running under OS9 - Pascal V2.0 and C-Compiler (£79.95 each). These offerings are rather unusual for such a small system but they extend the capabilities of the Dragon far beyond its humble origins and towards the far loftier heights of much more powerful hardware and software concepts.
Pascal is a language much loved by computer scientists because of its inherently logical structure, great power, and general "correctness" in their eyes. lt was originally developed in the late 1960s by Professor Niklaus Wirth of Zurich, as a means of teaching programming as a logical and systematic discipline, and like all good languages now has a series of dialects. The dialect used here follows the ISO specification, rather than the UCSD model. Some of the more obvious original distinctions between Pascal and Basic have become rather blurred in some of the more recent and powerful versions of Basic (especially Basic 09) as many of the best features of Pascal have been transported across.
A major difference to the programmer used to standard Microsoft Basic is that Pascal programs must be completely written with some form of text editor, and then compiled into an intermediate form, known as P-code, by a Pascal compiler before they can be run and tested. Whilst a comprehensive debugging package helps sort out the bugs which inevitably tend to fall into your programs, we find working with this type of batch-compiled language vary tedious. I know that the "experts" will (perhaps quite rightly) say that this is because we are sloppy programmers, but in our experience it is often the empirical approach which seems to work best.
Pascal has found very wide application in serious computing because of its versatility and power, but, power almost inevitably implies size and there have therefore been difficulties in the past in trying to fit full-feature versions of Pascal into the pint pot of a microcomputer. However, as the 6809 microprocessor was specifically designed from square one to run such high level languages, life with the Dragon is more tolerable than usual. Programs compiled into P-code run rather slower than pure machine code, as each instruction must be processed in turn by the run-time interpreter, but, the OS9 Pascal goes further than usual and allows you to also convert this P-code directly into "native" 6809 machine code. Taking this "back-door assembler" route gives a speed advantage of some four to 10 times over standard Pascal, without the necessity of ever actually grappling with mnemonics!
Another major factor in the attraction of this particular package is the ability of the OS9 operating system to support "virtual memory" on disk. This means that you can actually run Pascal programs which are much bigger than the total memory size. A good example of the use of this feature is the Pascal Compiler itself, which operates in this way by swapping blocks into and out of memory. The language is supplied on two disks, both of which are needed to run the language, so a double disk drive is essential. "Pascal" is a machine code tront-end which calls "PascalS" (the swapping P-code interpreter) to run the P-code "Pascal-CompiIer".
The text file "PascalErrs" produces full English error messages at all stages. "PascalN" is used to run compiled P-code programs, unless they are so large that the swapping method (and "PascalS") must be used, which adds a time penalty. "PascalT.RUN" is the native code translation program, which is written mainly in P-code but also calls some machine code routines from "PascalT.MODL", and uses the "PascaIDefs" file which contains assembly language source code definitions. "PascaIE" is a linkage editor which is used to combine separately compiled procedures into a single program. Three machine code support modules containing commonly used library routines are also included. "Support" takes up 9K, but two alternative stripped-down versions are also provided ("Support1" (7K) and "Support2" (5K)).
An extensive User Manual is included in the price, but if your are a newcomer to Pascal then you will also need a good introductory book - of which there are many (although Programming in Pascal, Revised Edition by P Grogono (Addison-Wesley, 1980) and introduction to Pascal - second edition by J Welsh and J Elder (Prentice-HalI, 1982) can be recommended). If you want to learn Pascal, or the language has obvious advantages in your particular applications, then this comprehensive package does all you could reasonably ask of it. For ourselves we will probably continue to be peasants who prefer to use Basic 09, which has many Pascal-type features but a more userfriendly compiler interface.
C-Compiler is a rather more recent development than Pascal, having emerged from Bell Laboratories in 1972 as Dennis Ritchie's development of an earlier language named "B" (who said that computer scientists had no imagination?]). The main feature which makes "C" stand out from other languages is that it was designed from the outset as a means of writing "portabIe" programs. In this context portability refers to the ability to run a program on different machines rather than any question of physical size. It falls somewhere between high-level languages like Basic and Pascal and Assembly Language, providing a workable structure which is close to machine code but essentially processor-independent. The fundamental flow-control constructions (if, while, for, do and switch) are supported, but "C" deals essentially with characters, numbers and addresses. Inevitably it is not the easiest language to learn, and it does not feature all the error traps of higher-level languages, but you can't make omelettes without breaking eggs. The "Bible" of the "C" programmer is The C Programming Language by B Kernigham and D Ritchie (Prentice-HaII, 1978), although the price of £17.95 is rather steep and Learning to Program in C by Thomas Plum (Prentice-Hall, 1983) is both cheaper (£12.95) and more readable.
A major demonstration of the power of the language is the fact that the Bell Unix operating system (on which OS9 itself is based) was entirely rewritten in "C" by Ritchie so that it could be routinely run on IBM, Honeywell and Interdata systems. "C" is rapidly growing in popularity amongst serious software writers as it makes them more productive. Once a "C" program is written it can easily be "ported" on to any machine which has a "C-Compiler" available, and in particular it is claimed that because of the close similarity between OS9 and Unix almost any application written in "C" can be directly transported, recompiled and correctly executed.
The OS9 C-Compiler again comes on two disks, together with a comprehensive manual. There is no official standard for "C" but this version follows the Kernighan and Ritchie model closely (but with some enhancements and extensions). In particular the ability of the 6809 to use a "direct page" structure is supported, and assembly language may be embedded. The system interface supports almost all the system calls of both OS9 and Unix and a complete standard library of predefined standard functions is included ("stdio.h").
The "ccl" command calls a two pass compiler ("c.pass1" and "c.pass2") which converts source code into an executable file. An optimisation ("c.opt") pass automatically occurs after the compilation passes, which removes redundant code and searches for sequences that can be replaced by shorter and faster equivalents. A profiler option can be included which counts each time a function is called during execution, so that program structure can be logically modified if desired. The final output is position-independent reentrant 6809 code in standard OS9 memory module format. This code can be used as a subroutine called from the Basic 09 RUN command, although care must be taken as intemal data representation is not identical. lf you are one of the stout hearts who can see into the future - and wants to get to grips with "C" then here is your chance to get into the act at a bargain system price, and write software compatible with the next generation of machines.
The final utility disk currently available from Dragon Data is the Editor Assembler Debugger package which comes on a single disk, with a comprehensive manual, for £49.95. The first part is a powerful macro text editor. Although the manual suggests that "it is commonly used to prepare letters and documents" we feel that you must be rather at masochist to use it in preference to a proper word processor such as Stylograph! On the other hand it is extremely useful for preparing program source files for Pascal, "C" and the Assembler itself.
Multiple read/write files can be open simultaneously, all OS9 commands are usable within the workspace, and the editor commands are a superset of those used in Basic 09. Search and replace operations are supported, conditional tests can be applied and edit macros can be defined as new commands to perform particular specialised tasks. The Assembler was designed specifically for the modular multi-tasking environment of OS9 and therefore incorporates features for calling OS9, generating memory modules, encouraging the creation of position-independent code, and maintaining separate program and data sections. A tree-structured symbol table organisation provides fast assembly speed and it has been optimised for use with the "PascaI" and "C" compilers.
In addition to producing "normaI" OS9 modules the assembler can also produce "Motorola-compatible" code which is suitable for the standard Dragon, and conditional assembly is possible with IF, ELSE and ENDC. This disk (and the system disk) holds DEFS files containing labels with their associated values which can be used directly for system calls thus making life simpler and more logical whilst saving much brainwork or thumbing through the manual for codes. Error messages are printed out in the listing just below the source line containing the error. The lnteractive Debugger (DEBUG) is the final part of this trio, providing calculations, memory examine and change, register display and change, breakpoint set and remove, memory clear and test, memory dump and memory search. and programs can be executed in a number of ways. Finally the Shell command allows system commands to be passed and other programs to be manipulated from within the debugger.
The basic starting OS9 package consists of the OS9 System Disk and a detailed OS9 Operating System Users Guide for £39.95. A further even weightier tome, the OS9 Operating System - System Programmers Manual, is also available from [[Dragon Data Ltd|Dragon Data], but only in exchange for a further 50 per cent on the purchase price (£19.95), although that does include yet another of these video cassette cases! So what is the essential difference between a "user" and a "system programmer" and do you really need the information in the second volume? Perhaps the answer is already there, to some extent, as the very fact that the parts are sold separately indicates the non-essentiality of the further information to many users.
The System Programmers Manual is of a "general" nature, describing implementation of OS9 on any hardware, a factor which can sometimes cause confusion as it goes into details on ROM contents. It does, however, set out clearly the details of Basic System Organisation, Kernel Functions, Memory Utilisation, Multiprogramming, Process Creation, Execution Scheduling, Signals, and Interrupt Processing, before going on to the structure and definition of memory modules.
The Unified Input/Output system is described in detail with explanations of the operations of the File Managers, Device Driver and Descriptor Modules, Random Block File Manager, Disk Organisation, File Descriptors, Device Descriptors and Drivers, Sequential Character File Manager, Line Editing and so on. These sections are mainly concerned with new implementations, although they are also essential reading if you want to add any "non-standard" devices to your Dragon. A brief mention of Assembly Language Programming Techniques is included, together with information on Adapting the lnitialisation Module. A major (and probably the most important) part of the book is the lengthy series of Service Request Descriptions which define the service calls which are used to communicate between the OS9 operating system and assembly language programs. All these system calls have a mnemonic name beginning with "F$" for system functions or "l$" for input/output related requests, and they can be called by the "OS9" directive of the Assembler.
Undoubtedly this manual is essential if you are going to do any serious Assembly Language Programming, although its appeal to the average user is far more restricted.