Sinclair User
10th May 1986
Author: Tony Kendle
Publisher: Ocean
Machine: Spectrum 48K
Published in Sinclair User #52
Laser Genius
Laser Genius is arguably the most powerful utility yet produced by the Ocean/Oasis partnership, one which will appeal to professionals as much as aspiring amateurs. It's a complete assembler/dissassembler/monitor/debugger machine-code programming suite.
Most assembler/monitors follow tired, predictable formats, unchanged since the dawn of the Z80. The only selling points are how many lines of code can be assembled in so many passes and in how many seconds.
Such things may be important to the most jaded and crusty programmer but for most people compilation time is a minute fraction of the effort put into sweating over writing the code and, worse, then debugging it.
Laser Genius is easily powerful enough to compete by existing standards but also represents a fundamental rethink about which features make an assembler/monitor useful to most people.
The editor is flexible and simple to use. It behaves as a screen editor in that you can scroll the program and make changes anywhere on screen but the source code is also divided into separate numbered 'paragraphs'. These give you some of the advantages of a line editor as well, eg jump to Line 20, delete Lines 40 to 57 As you type in each Z80 instruction it is syntax checked before being added.
Source code can be loaded in from other assemblers, eg Devpac but then it is tokenised making it more compact and faster to compile.
Although it can be fiddly with cassettes it is possible to assemble very long files saved on tape and link several together using the *Include command.
There is also a process by which you can automatically include some routines from a large library in your current program. To complement this the graphics source code used in Laser Basic will be made available later in the year.
Traditional assembler features such as macros and conditional assembly are supported but there is also a small, high-level logic compiling language, Phoenix, which can be freely mixed with the normal Z80 code.
Phoenix provides you with Repeat... Until and While loops, If... Then and End...If conditional tests, extended function definitions, variables and arrays and more. Such concepts are typically complex, or at least tedious, to simulate in machine code.
The monitor/disassmebler is typically the weakest part of most commercial packages but the Oasis version has many good points. The screen display is windowed to show a memory dump, the register and stack display and the disassembly. A virtual screen can be defined so that you can switch instantly between the monitor panel and a screen showing the effects of your graphics program.
The various Roms which may be present (48K, 128K, Interface One) may be switched in or out and disassembled.
Code can be disassembled to tape, with labels inserted instead of absolute addresses so that it is ready for re-assembly after modification.
As well as normal running speeds code can be single-stepped or 'slow run' with varying degrees of screen display up-date. Break-points can be set to stop the code or to trigger one of the slow modes.
Most impressive of all is an 'analyser', based on a small and simple Forth-like language. Using this you can effectively 'program' the monitor to behave as you wish. For example, every time register HL is loaded with address x you can program it to display the virtual screen. The most obvious application is for intelligent debugging. You can cause a break to occur in response to the most precise and complicated combination of events - something that ordinary break-points just cannot handle. Invaluable stuff.
Microdrives are supported throughout and there are special options for 128K machines, eg Ram page selection,
Label: Ocean IQ Author: Oasis Price: £14.95 Memory: 48/128K Reviewer: Tony Kendle
*****
Overall Summary
Very powerful machine-code tool. Accessible to a beginner, sophisticated enough for a professional.