Beebug


The ADE+ Assembler System

Categories: Review: ROM Chip
Author: Geoff Bains
Publisher: System Software
Machine: BBC Master 128

 
Published in Beebug Volume 5 Number 9

ADE+ is a complete system for the machine code programmer. Geoff Bains explains what the package provides, and gives his own assessment.

The ADE+ Assembler System (System Software)

System's ADE+ is more than just a machine code assembler. It is a complete piece of system software in its own right.

ADE+ consists of 32K of ROM image (in one form or another, depending on your choice of format) and a utility disc. The program is in four parts - a 'memory management unit, text editor, assembler, and a debugger. The debugger is System's old SPY package offering basic machine code monitor facilities.

Of the rest of the software the overall control is with the memory management unit (MMU). It is this that is called with the inevitable *ADE command.

The MMU sorts out the memory used by ADE+. The MMU also runs a continuous real time clock (using the hardware clock on a Master) which appears as the prompt for the MMU command level. Some of the commands available are simply to call other sections of the system - EDIT calls the editor, DEBUG summons the debugger, and ASM sets the assembler going. Other MMU commands deal with setting up the micro for best use with ADE+.

All the memory available is split into separate sections - workspace, and input, output and printer buffers. This memory can come from main RAM, sideways RAM and second processor RAM. If shadow RAM (either Acorn or Aries) is available (and enabled) then this is taken into account.

The workspace is usually the main part of the available memory and is used (reasonably enough) for all the workings of the various ADE+ sections. The input buffer is used for all data entering the ADE+ system. This includes, for example, an assembler program coming in from disc for assembly. The output buffer would in this case form the buffer for the assembled code to accumulate before output to a disc file.

The printer buffer is made up of all available sideways RAM that has not been protected (because it, say, contains a sideways ROM image). ADE+ contains a print spooler that operates as a background task allowing much faster use of the system when printing. This uses the printer buffer for temporary store.

The buffers default to zero size on a single processor system. However, they can be given sizes by the user with MMU commands or they will each grab 1K of RAM from the workspace when needed if they are not allocated a specific size. The larger a buffer is, the quicker connected operations will be.

The next section of the ADE+ system a user will meet is the editor. ADE+ can use any editor that produces ASCII output without embedded codes. View is especially catered for as the system can recognise its rulers. View can also be recognised for material to be passed automatically to it for editing. However, details on how to do this are only contained in the 'Advanced' ADE+ guide.

If you have no favourite editor one is provided in the ADE+ ROMs. System says this is a 'simple' editor. However, it is quite complex enough for most purposes. The editor operates in the normal way. It has a command mode for loading and saving text and other operating commands (such as calling the assembler) and an editing mode. In the editing mode the cursor keys allow you to move around the text and insert or overwrite any corrections or additions.

A block of text can be defined with markers and then moved, copied or deleted with the function keys. Individual lines or characters can deleted or blank ones inserted. A search facility is also provided for moving the cursor to occurrences of a specified string.

The editor provides one function specifically for editing an assembler program: an assembler label can be searched for. Pressing f2 with the cursor on a line with a label reference moves the cursor to the line containing the label itself. This is an extremely useful feature and saves much frustrating searching through a program, especially if it's an old one, or someone else's.

ADE+ accepts assembler code in the usual format of lines made up of four fields - label, opcode, operand and then comment. Each field must be separated with one or more spaces and/or a tab character. Tabs are expanded to positions every eight characters although this can be altered with a View format ruler. The whole operation of the editor is very much like View itself, and it's obvious that Acorn's program provided System with the model.

Existing BBC Basic assembler programs can also be loaded into the editor after conversion with a utility provided on disc. Once a program has been edited it is assembled. This can be done either from within the editor's command mode or from the MMU. Either way, the ADE+ assembler is extremely fast. System claims ADE+ is faster than all rival products. This certainly seems likely.

It is the assembler which really shows off ADE+'s power. ADE+ is not just a simple assembler like the one built into BBC Basic. It is more of a compiler than an assembler. The pseudo ops provided and the modular nature make using the ADE+ assembler more like using a high level language than a simple assembler.

ADE+ has over 60 pseudo ops available. As well as the likes of ORG to define the start address of the object code and EQU to insert an item of data, ADE+ includes unexpected codes like QUERY to input data from the keyboard at assembly and even WHILE...WEND for repeating assembler sections.

ADE+ assembler programs can be written in one of three ways. As with any assembler a program can be written, assembled and then run. The problem with this method is that the program length is limited by the RAM available. Other systems get around this problem with 'macros' - self-contained subroutines of assembler code that can be defined and then called up by name from another assembler orogram. ADE+ supports macros but also goes a stage further.

ADE+ can create and wuse 'link modules'. These are not fully assembled when put through the ADE+ assembler. Instead it just works how much room they will take up and what variables and labels they will use. This information can then be saved and many link modules assembled together with the special linker program in the ADE+ ROMs.

Because subroutines 'assembled' in this way are not yet fixed as to address, variable values, label locations and so on, they can be used as genuine relocatable 1library routines. Once a routine has been developed and tested in this way it can be kept for use at a later date in any other program, confident that it will work.

Not only is ADE+ compatible with all versions of the BBC micro but it can make the most of each too. It can use all the 'extended' codes used by the second processors 65C02 and the Masters' 65C12, and the extra codes provided on only the Rockwell microprocessors. All this makes the ADE+ system the most comprehensive around. However, it is not a program for the faint-hearted. The ADE+ manual is heavy work-to plough through. It is not well explained and poorly structured.

Nevertheless, I have little hesitation in recommending this package. Until ADE+, Clares' Macrom was the last word in assemblers for the Beeb. It is clear this program provides a complete development system for a remarkably low price.

Geoff Bains

Other BBC Master 128 Game Reviews By Geoff Bains


  • Bounty Bob Strikes Back Front Cover
    Bounty Bob Strikes Back
  • Wordpower Front Cover
    Wordpower
  • Wallaby Front Cover
    Wallaby
  • BROM+ Front Cover
    BROM+
  • WYSIWYG Plus Front Cover
    WYSIWYG Plus
  • Ramrod Front Cover
    Ramrod
  • Super Dump Front Cover
    Super Dump
  • Confuzion Front Cover
    Confuzion
  • Penfriend Front Cover
    Penfriend
  • Commando Front Cover
    Commando