|★ APPLICATIONS ★ PROGRAMMATION ★ MAXAM v1.5|Amstrad Computer User) ★|
|Maxam Assembler and expansion ROM board||Maxam v1.5|
A ROM and a half
John Kennedy finds an assembler that has the power to let you program in style. But, he asks, why restrict it to rom?
FOLLOWING the release of Maxam II, the CP/M+ follow-up to the ever popular original Maxam, Arnor has produced yet another version of its assembler, this time the solely rom-based Maxam 1.5.
Although having Protext is a definite advantage, it is not essential, as Maxam 1.5 will assemble machine code which is embedded in Basic programs in the same way as does the original Maxam. It can also assemble source programs stored as standard text files from disc or tape, so you could use another text editor if you wanted to, although you would be missing out on a lot of extra features.
Maxam 1.5 is supplied on a 16k ROM which must be fitted into a ROM board. The ROM will take some of your computer's memory to play with, lowering Himem by some 571 bytes.
The display can be in either 80 column Mode 2 or 40 column Mode 1, where colours are used to make things easier to read.
The 50 page manual that comes with the original Maxam is supplied with extra notes for the "new improved" features of Maxam 1.5. Quotations from The Lord of The Rings are supplied as standard.
One important extra is the lack of the text need to leave the program editor. Typing ASM or TASM in command mode will assemble or syntax check (test-assemble) the program immediately. This makes life very easy indeed.
Maxam 1.5 will automatically put the object code about Himem, or anywhere you want using an ORG directive. ORG can also put the source code at a different address to where it is to be run. However, before Maxam 1.5 pokes your program all over the ram, it checks to see if it is overwriting anything important - this can make things a lot easier for the beginner who finds himself constantly wondering where his source code has vanished to.
The LIMIT directive can be used to set the boundaries of the object code to a user defined value, or to enable code to be purposely sent to a potentially dangerous location. Useful for patching the firmware block.
The assembler has a full set of directives, including some enabling parameters to be passed to and from Basic, and others that allow conditional assembly (see Figure IV).
Assembling to and from files is fully supported, allowing you to combine several assembler text files which might contain a library of subroutines. Although not quite as flexible as the CP/M style RELocatable files, it can make your programming a lot more structured.
Printing features include titles, page numbers and adjustable page lengths.
Once your program is assembled, it is time to save it, hold your breath, and run it. But never fear, Maxam 1.5 is here with a set of debugging commands.
You could jump right into your code with a CALL from Basic, or the J (for jump) command from within Protext (or even the | J bar command again from Basic), which will send you straight to the start of your code. If all goes as expected you can go and lie down somewhere.
For those of us who are human, the breakpoint features will be useful. The original Maxam allowed you to put BRK directives throughout the source code. When the code was executed with the Maxam J option and a breakpoint was reached, Maxam printed out a list of the registers and their values.
Maxam 1.5 still allows this, but also allows breakpoints to be set after assembly. When the program hits a breakpoint you can directly change the contents of the registers, and then continue with your program. See Figure III for some further examples of Maxam 1.5 bar commands.
Typing the |M bar command from Basic will take you into the Maxam 1.5 monitor program. From the menu you can disassemble or list memory to screen or printer, select any upper or lower ROM (and so dissasemble or list them), edit memory directly using either Hex or Ascii with a full screen editor, search for a Hex number or Ascii string and also move, relocate (intelligently) and compare blocks of memory. All are fast and you would have to enter pretty silly values to crash them.
A status line gives the current state of Himem and which roms are switched on.
Just when I think the time has come for me to upgrade to an Atari ST, Arnor comes along with a package that leaves some 16 bit assemblers standing. Although lacking in the more sophisticated features such as macros, Maxam is incredibly easy to use. And Arnor has something to say on the monitor's lack of single- stepping facilities:
...there is no need to mention single stepping. We know! If the reaction to this is good, we will find time to implement it soon. Unfortunately, commercial pressures demand that other projects must take priority. If single stepping is added it will also be possible to insert a breakpoint at the current address when resuming.
That little lot is part of a message displayed on the screen after typing a |QWXCL bar command. One hundred pixie points to the first person who can work out what QWXCL means.
Maxam 1.5 is aimed principally at those who have the Protext word processor and want a machine code development system that will integrate fully. However, for those without Protext, Maxam 1.5 is still a very good system. Developing programs from within Basic programs is a small inconvenience to pay, and is made up for by the excellent debugging functions and the lower price tag.
As to whether or not the lower price of Maxam 1.5 makes it a better first-time buy depends on how much you would use the text editor supplied with the original Maxam. I think perhaps I might get Maxam if I didn't have Protext. Then again, Protext is such a powerful program itself... but that's another story.