Amstrad Computer User

Laser Genius
By Ocean
Amstrad CPC464

Published in Amstrad Computer User #22

Laser Genius

Laser Genius comes in an unnecessarily large video size box, either on disc or cassette with a 150 page manual. Now a large manual does not necessarily mean the product is good, but it bodes well. Actually the manual is shared with the Spectrum instructions for the package, but around 80 per cent is applicable to both.

It is quite heavy going, and will need to be re-read several times to get the best from it. References are often made to commands elsewhere in the manual, that have not yet been explained.

The assembler is around 21k long and has two optional parts which can be added to make it 6k longer. The monitor is 14k long.

Laser Genius

The editor only leaves you with about 17K for text, but it is tokenised by a ratio of about 3 to 1 which means you can get about 50k of comparable Devpac or Code Machine text.

The editor is a special environment, not unlike a sort of free form Basic. It is a cross between a screen editor and a line editor in that you must have line numbers but they can have 20 or so lines of text after them, so you only really need to number the starts of routines.

Anything you type in that is not following a line number is interpreted just as in Basic, and commands like LIST, CLS and MODE all work.

Laser Genius

The difference is that unlike Basic, what scrolls off the top of the screen is not lost. Several screens of text are stored - you can decide how much - and can be freely mooed through to get back deleted lines, see previous commands and so on.

When the buffer is full you can either delete it and start again, or just start overwriting it.

External commands are supported although CAT and DIR and disc and tape commands do not need to be preceded by a

Laser Genius

There is a built in calculator, for signed or unsigned arithmetic, and you can set the base of the calculation to be decimal, hexadecimal, binary or octal.

The editor is a joy to use. When you have typed in a command once, you just place the cursor at the start and press Enter. It will accept anything after the cursor up to the end of the line as a command and execute it again.

The assembler is integral with the editor and contains many unique features. There are the normal options, there are macros and conditional assembly.

There is the option, like Code Machine, to assemble directly from disc to disc although, you can get more object code on a disc, because the text only takes up about a third as much room. Similarly, the symbol table can be saved to continue assembly of several blocks of code. One thing that really stands out though are the compiler like functions provided with the Phoenix language.

You can put in WHILEs and WENDS, define multiply and divide routines to provide results and they will be translated into object code to simulate the functions. Any arithmetic you could do from Basic is allowed and brackets are significant.

The location counter ($) can be used in functions, and lines like ORG ($ AND OFF00h)+256 will set the origin at the next page boundary, useful for tables.

You may execute your code from within the editor and pass parameters as in Basic.

If the assembler is good, the monitor is brilliant. Working in Mode 1 or 2, it has all the normal options - front page of registers and memory contents around the program counter, disassembly, move and modify memory.

But there are sixteen different types of breakpoint. As well as eight normal ones, you may have the option to slow run your code, choosing to update the register display, the memory pointer and current instruction display, both or neither.

And you can set the slow running to just do the equivalent of single stepping through code, or automatically fast run calls to subroutines and return to slow running the part of code you are in.

You can set counters so that code will run through a loop normally a number of times and then jump to slow mode so you can see what happens when it tries to exit its loop. You can have any combination of these and one last type, which is a sort of reverse breakpoint which sets normal running speed again.

You may also list the last n instructions that were traced, as long as you first allocate memory to store the order of the instructions.

The monitor will allow many of the commands that the editor does, such as CAT, DIR and REN. Text can be created to run with the editor.

As if this wasn't enough, there is the anatyser. With this you can create options, in a Forth-type language - and there is a short crash course on Forth in the manual - to cover just about every eventuality.

Say your program is crashing and writing something to the screen. You can set the analyser to run any of the breakpoint type options of slow running, but only stop when, say, HL is between 49152 and 65535.

This is simple,because you can set up things like "When the stack contains a certain value, and HI is between certain limits and a loop has been executed n times and D = E + 2, then print the registers, wait for a key and continue".

Although the syntax is of course completely different. There is almost no limit to the definitions you can set, and Oasis claims it would be almost possible to write a game of space invaders in analyser language.

This package is a must. Even if you buy another, you must buy this for the monitor and analyser functions. As I said before, the manual is the only weak point, and makes an already powerful package seem even more complicated.

Please bring out a ROM version, Oasis.