CODE MACHINE

Picturesque’s popular machine-code Editor/Assembler and Monitor/Disassembler have been relaunched by Discovery Software — a branch of Gremlin Graphics. The programs used to be published separately at a price of £8.95 and £7.95 — you can now get both for £12.95. The package supports Microdrives, the Interface 1 network and a very wide range of printers, but there’s no mention of disk compatibility.

Picturesque’s Assembler first appeared way back in 1982. For a long while it was one of the best around, used by firms like Quicksilva and Oasis. The program has been steadily improved over the years, but it’s looking a bit dated in 1986.

The editor uses a 40 column tabular display. The delete key scrubs characters but it doesn’t close up the text to the right. This is not as bad a restriction as sounds, when working with short assembler mnemonics, but it does mean that you have to re-type lines every so often.

Every line has a four digit number, which can be automatically generated if you wish. The editor works much like the ZX BASIC editor, with the addition of single-key commands to delete, copy and renumber groups of lines. Files can be merged from tape or Microdrive, and you can list from any line number, or from any label — a nice touch.

Program comments are not very well supported — they have to be enclosed in inverted commas, indented on lines of their own. Labels may be no more than six characters long — DREDFL!

The Assembler is fairly run-of- the-mill. You can fit about 25K of source into memory — enough to generate 3 or 4K of machine code. After that you can assemble from up to ten files on tape or Microdrive — a slow and (with tape) fiddly process. You must assemble the code into memory — you can’t send it directly to tape or Microdrive. You can print or display assembly listings, and the contents of the label table. Error messages are adequate.

Numbers can be entered in decimal or hexadecimal (base 16). Maths is limited to 16 bit addition and subtraction, plus operators to extract the high and low bytes of a 16 bit value. There’s no support for macros or conditional assembly, but interestingly the assembler does recognise 70-odd undocumented Z80 instructions: SLL and various instructions to handle IX and IY as four eight-bit registers. As far as I know this is the only assembler which supports those instructions.

THE MONITOR

A Monitor is a program that lets you test and examine machine code — your own or someone else’s. The Code Machine’s offering is 8K long, and can be loaded to more or less any address, so you can load it with the assembler. The monitor is also fairly run-of-the-mill. You can move, fill, search and edit areas of memory. There are a couple of useful but potentially hazardous commands for inserting and deleting bytes from tables. Annoyingly, all values must be entered in hexadecimal, although you can convert from hex to decimal or vice versa with a special command.

The disassembler generates a mnemonic printout or screen listing from memory contents. There are no labels, so disassembled code can’t be loaded back into the editor.

When you come to test code the monitor is usable, but unsophisticated. You can step through code, one instruction at a time, checking or changing registers and optionally performing subroutine calls at one mighty bound. Alternatively you can set a single ‘breakpoint’, and set the program running; when the breakpoint is reached the monitor will be called automatically. You can’t ask the monitor to check register values as code is tested. There’s only one breakpoint, so you can’t trap several possible events without stepping through the code, line by line.

The Code Machine has a readable 61 page A5 manual, written in a tutorial style. It’s clear and well organised when you’re learning about the package, but it’s a poor reference guide. There are several summary tables, but there’s no index.

If you want a simple, easy to use package, The Code Machine is a reasonable buy. But if you intend to write a lot of machine-code you’re better off paying an extra £2 for Ocean’s Laser Genius.