Dragon User
1st September 1985
Categories: Review: Software
Author: Brian Cadge
Publisher: Grosvenor
Machine: Dragon 32
Published in Dragon User #029
Assembly Points
A frequently asked question is "Which assembler package should I buy?" One of the best and most popular to date for the Dragon has been the Dream range. This was originally marketed by Dragon Data as Alldream on cartridge and in two parts; Dream and Dreambug on cassette. Since the demise of Dragon Data the authors, Grosvenor Software, have taken over the marketing and are now offering Alldream on a single cassette, cartridge or Dragondos disk.
The cassette version of Alldream is reviewed here. The manual supplied is extremely well written and produced, it seems to be word-for-word identical to that produced by Dragon Data, but at least Grosvenor have made it a decent size (Dragon Data's manual was only four inches by three inches). There are plenty of examples sprinkled throughout the text with the mandatory program to fill the screen with a particular character - why do all assembler manuals have to include this program??
Alldream is designed to the co-resident with Basic programs and is loaded into reserved RAM after issuing a CLEAR statement. The lower HIMEM is set, the more space you will get for the assembly language text. The first section of Alldream that faces you is the screen editor. Dream does not use line numbers at all, and the editing commands are quite different from the Basic line editor. All the keyboard characters now have auto-repeat and the caps-lock works backwards, which means that SHIFT-i-A gives lowercase "a".
The cursor can be moved to any part of the text file using the arrowed keys. Moving off the top or bottom of the screen causes it to scroll up or down, and using SHIFT and an arrowed key gives a much faster scroll for quickly locating text.
Assembly language commands are typed one per line and can be entered, if desired, with each field' tabbed to the correct column to make the program easier to read, or just typed normally to save space. Inserting characters is very easily done; SHIFT-i-right-arrow shuffles the characters to the right of the cursor along to make space. There is, however, no automatic wrapround of text to the next line, so characters shifted off the end of the line are lost.
The Dream editor also has a number of commands which are all preceded by the BREAK key. For example, BREAK-I will inserts a blank line ready for more text, and BREAK-F 1 string, will find the first occurrence of 'string' after the cursor. Whole blocks of text can also be marked and copied, moved or deleted. Once the text is completed it can be saved to cassette using the BREAK-S command, Cassette files can also be merged and printed.
The program is assembled using the BREAK-A command. Dream allows labels of up to six significant characters. During the second pass, a listing of the assembled program is output, showing the address, op-codes and mnemonic. Errors are given as one letter codes and the listing stops at an error until a key is pressed. The listing can also be paused by pressing BREAK, and slowed down by pressing B.
A new set of commands is now available, preceded once again by the BREAK key. BREAK-P prints out an assembly listing of the program, and BREAK-X will run the program just assembled from the beginning, or from the address of a special label starting with an '@' character. A nice feature of the assembler is the PUT directive, which allows programs to be assembled to run at one address, but to be stored at another. Useful if you want programs which will run where Dream is located.
The BREAK-G command takes you into the third section of the Alldream package, the Dreambug monitor program. Again, all commands are one letter long and are followed by one or more parameters. Numbers may be entered as either decimal or hex.
Dreambug allows a number of Breakpoints to be added into your program. These allow the program to run normally until the Breakpoint address is reached. Control is then passed to Dreambug which will display a list of the CPU register contents and the next command to be executed. Up to 10 breakpoints are allowed and these are automatically reset when the program ends.
Another method of testing programs is using the tracing facilities of Dreambug. The 6809 CPU operation is mimicked by the tracer which can execute single instructions and display the CPU register contents between each. Alternatively, instructions can be executed a set number of times, or until the contents of a memory address change. Single stepping is a very powerful tool for debugging programs and is particularly well implemented in Dreambug.
As an overall package Alldream is hard to fault. The editor is a joy to use and makes Basic's line editor look feeble. The assembler supports all the instructions and addressing modes of the 6809 (certain other popular assemblers do not!). The disk version of Alldream (called Dskdream) looks even better, allowing assembly to and from disk, giving the potential for huge programs to be assembled. If I had to find fault with Alldream it would be that it only allows lines to be 32 characters wide, which leaves only a few characters for comments, and the fact that there are no built in commands for saving binary code (assembled programs) to tape, although this is quite possible using CSAVEM from basic.
For the Alldream, Dskdream or Dragon Data Dream owner, Grosvenor Software have now released a program called Dreamprt. This is a program written in Basic which allows Dream text files to be printed out as 64 character wide lines.
The idea behind Dreamprt is that the Dream editor is so good it could be called a simple word processor, so text is prepared using this and then printed out by loading in Dreamprt. The program takes every two lines of text and printed them as one, there is no formatting or right justification available, although this could have easily been implemented within the Basic program.
The program allows a number of characters to be sent to the printer before printing and at the start of each line, for example, the tab character would be useful on 80 column printers.
Dreamprt does not make Dream a real 'word processor', but it is ideal for anyone who already owns a package including Dream and who wants to use it to prepare simple documents, such as letters or memos. Even at £4.50 Dreamprt seems a little expensive for a program written entirely in Basic, but it is a useful addition to the Dream range.