Plug-in devices to save and alter programs are all the rage. Simon Goodwin presses the button on Datel’s Snapshot 2 and checks out the Genie package for Romantic Robot’s Multiface 1.
Datel have just launched Snapshot 2, a new plug-in gadget to save programs in memory onto tape or Microdrive at the press of a button. There are several similar devices — Multiface 1, Interface 3, SpecMate and the Mirage Microdriver. Even a few disk systems, such as the Beta and the new Disciple, offer this feature nowadays, so it’s obviously a busy market.
Some of these devices have — quite legitimately — annoyed software houses because they make it very easy to steal programs. The Datel, like the Microdriver, is less prone to this criticism than other models, because you must have the interface fitted to re-load a file. This doesn’t stop people borrowing software and making copies, but it’s the best Datel can do to discourage theft. This is a tricky issue, as I feel that piracy does reduce the volume and — especially — the variety of software that honest souls can buy.
Then again, high prices and inconvenient protection methods do not encourage honesty. I believe that people have a right to transfer software that they have bought onto disk or Microdrive, and this kind of device is often the only way you can do that.
Datel feel that the Snapshot has three main selling-points, besides the obvious one I’ve dealt with above: there’s a built in Kempston-compatible joystick port; you can modify bytes in memory; and the price is low — just £24.95, or £5–£15 cheaper than similar devices.
The Snapshot comes in the usual black box, with a red button on the left and the joystick port on the right side. You need the joystick socket even if you’ve already got an interface, because there’s no through-port on the back. The documentation was folded under the interface — and consists of five white A4 sheets, with text printed in a dot-matrix font on one side of the paper. You also get a program, on cassette.
Snapshot 2 is not immediately useful when you plug it in, because it does not contain any built-in software — you must load a small code file. It takes about a minute to load the supplied tape — you can transfer the code to Microdrive if you know how to convert the loading program, but the utility will not do this for you, and there are no conversion instructions. The code seems to load into memory hidden behind the Spectrum’s ROM, so you can’t access it except by pressing the button, which causes it to run. There’s no information about the memory access mechanism in the documentation, which is a pity.
The software saves entire programs with their screens, to tape or Microdrive — there’s no support for disk drives, although it should be easy enough to produce new software as an add-on. Datel say they intend to do this, but they don’t say which interfaces they will support or when the code will be ready. They also promise new software to copy screen images to a printer at the press of a button, as Multiface 1 can do. They plan a package to control the speed of programs, rather like Nidd Valley’s Slomo, but again there’s no sign of the feature yet.
Once you’ve loaded the Snapshot software you can load the program you want to transfer to tape or Microdrive in the normal way. The Snapshot does not appear to use any of the standard 48K memory.
Your program should load and run as normal with the Snapshot connected. I did find one strange problem with the built-in joystick port, which would not give a ‘move left’ signal if I plugged in a Cheetah Mach 1 microswitch joystick!
The Snapshot interface worked OK with an older and nastier Quickshot 1, but I could not work out why the Mach 1 was incompatible. The stick works fine with a genuine Kempston interface, Multiface 1 and all the other makes of computer that litter my office, even including the wonky ports on Amstrad’s Plus Two, so I’m inclined to blame Datel for this incompatibility. I’ll contact Datel and Cheetah, and should be able to get both replies into print next month.
I had a look inside the Snapshot to see if there was an obvious fault, but I couldn’t see anything likely to cause the problem. The internal construction of Datel’s interface was rather nasty — the red button was only held in by a blob of glue on the circuit board, although the joystick socket was securely fitted. A bare wire was soldered to the underside of the board, passing within a millimetre of several soldered connections that it was clearly not meant to touch.
Anyhow, I carried on with the test using the Quickshot. When the red button is pressed the computer immediately stops whatever it is doing and prints a blue and yellow menu on the top eight lines of the screen. There are five options, each selected by a single key-press. S saves the contents of memory onto tape or Microdrive. A second prompt appears to ask you which device is to used for the save, and you are then asked to type the file name. For some reason the program selects Caps Lock — all capital letters — as you enter the file name. I’ve never understood why computer enthusiasts are so keen on WRITING EVERYTHING IN CAPITALS, so I pressed Shift and 2, which normally cancels Caps Lock. This it did, but not before printing LOAD "", rather disturbingly, in the input window. I tried again and got Caps Lock back, but LOAD "" popped up somewhere else. This does suggest that Datel have not tested their software very carefully. One good feature is that ENTER on its own gets you straight back to the main menu.
The A menu option lets you alter or examine memory. The prompt ‘Address’ appears, and you must type in the number of the memory location that you want to change. The computer then prints the present contents of that byte, and asks you to type a replacement value. If you press ENTER on its own, the computer steps on to the next address, and so on.
This feature is very useful if you want to put POKEs into a game without messing around with the loading program. You can stop the progression through the memory by typing a full stop, when you are asked for a new address. Values can be printed and entered in decimal or hexadecimal. You must type a hash character at the start of the address if you want to use hex. Press ENTER on its own to get back to the main menu.
The next option, G, lets you go back to the current program — the top part of the display is restored as if you had never pressed the button. You can only return to the exact point at which you stopped the program — you can’t jump to a specific address.
The L option is used to load a file that has been saved previously with S; ENTER on its own loads the next file in this case, but you can break into the load in the usual way.
K ‘kills’ the current program, resetting the computer but leaving the Snapshot routines in memory.
The biggest problem with the Snapshot is that it doesn’t seem to work with most commercial programs. I tried it with a collection of games, and Vortex’s aging Android 2 was the only one that was transferred properly.
Snapshot can compress programs to reduce their disk or tape storage requirement, and Android 2 was condensed into a single 29K file, including the screen, in 25 seconds. I’d like to give more examples, but I didn’t manage to copy anything else!
On The Run, from Design Design, and Micromega/Derek Brewster’s Codename Mat started to save, but the screen filled with gibberish after a few blocks had been written to Microdrive and the only way out after that was to pull the plug.
I spent quite a while re-loading these games and trying again, pressing the button at various points after loading, but I never managed to save anything useful. At one point I pressed the button while On The Run was playing and the machine crashed without even printing the Snapshot 2 menu — about half of the ‘Alter’ menu appeared, then my trusty Spectrum locked up.
I tried to transfer Cheetah’s SpecDrum program to Microdrive; this is a prime candidate for conversion from tape. Again the machine spun the drive for a while, then locked up. Repeated attempts gave the same result, so I used Romantic Robot’s Multiface 1 — the only other such utility I have — and everything went smoothly. If Android 2 had not copied properly I would have suspected a duff Snapshot interface. Since Multiface copied the test programs without trouble it seems likely that there’s something wrong with Datel’s software.
Snapshot 2 has a lot of competition, and it doesn’t seem to work very well. Unless you’re very short of cash, and you only want to convert simple programs, I can’t recommend this product.
Romantic Robot have been selling a Snapshot-type device for a while now. Their Multiface 1 is something of a Rolls Royce compared with the Snapshot 2, and has a price tag to match — five pence short of forty quid. The Multiface consists of an 8K ROM and 8K of RAM, providing the instant SAVE facility for most disk and tape systems, plus options to examine and POKE memory. It can also call any address or print out the screen display. Besides the magic button you get a through port for other peripherals, a Kempston joystick socket and a switch to make the interface undetectable to the computer.
One very nice feature of this system is the way that you can load your own applications into the 8K RAM, independently of the standard 48K, and call them up at will while a program is loaded. Romantic Robot give full instructions to help you do this, although the facility is only available to machine-code programmers.
Rom-Rob have just launched a package that uses this feature; as such it is worthless unless you’ve got Multiface 1, but I have found it so useful over the last few weeks that I think it might even justify the purchase of a Multiface to some people, especially keen hackers.
The package is called Genie. It lets you stop and start any program at any point, and examine its operation in great detail. In effect, it is a small but well-designed machine-code monitor that is compatible with absolutely everything. Genie costs £9.95 and consists of a cassette, containing about 5K of code, and six neatly printed, well written A4 pages of documentation.
Genie loads into the RAM on the interface — the instructions tell you how to copy it to Microdrive or disk and configure it for different printers; Genie will print via any device connected to the Spectrum’s channel 3, including the ZX printer, the Spectrum 128 serial port, and most plug-in interfaces. You must tell the program whether or not your printer expects ‘line-feed’ characters at the end of each line.
Once Genie is installed you can call it up by pressing the red button. Instead of the usual Multiface menu, an eight-line window appears at the top of the screen. You can call up the normal Multiface menu by typing BREAK as you press the red button, but you MUST reload Genie before you press the button again. Everything Genie does appears in the eight-line window. The colour-scheme is bright but readable unless your telly is playing up — characters are white on red or black on yellow. The top part of the window lists keys that work in most modes, while a two line menu bar carries the main options, rather cryptically listed as ‘DIS’, ‘TEXT’, ‘NUM’, ‘Z80’, ‘FIND’ and ‘RET’.
Z80 shows you the values of all the Z80 registers, including the program counter. You can alter any value, and turn interrupts on or off, but you can’t display or change the interrupt mode. So what, I hear you say!
FIND will search the whole 48K RAM for a sequence of up to 24 bytes. Searching is very quick, and you can step from one match to the next by pressing a key. This is great for looking for specific instructions but not so hot for messages, because the values to be found must be entered as numbers — not text.
DIS is a full Z80 disassembler — a routine which converts stored numbers into machine-code mnemonics, whether or not they are really part of a program. You can start and stop disassembly at any address.
DIS has several nice features — it sifts out the ‘error code’ bytes which follow RST 8 instructions, and decodes the undocumented Z80 instructions, like SLL C and SUB A, IXH, which confuse lesser disassemblers. The display can be made to scroll continuously or print a new line when you press ENTER. At top speed, or if you hold the key down, the information rolls by very fast indeed.
The TEXT option is similar but interprets memory as characters. Unprintable codes appear as full stops. TEXT is very useful if you feel like changing a few messages in your favourite (or least favourite) program. NUM prints the numeric values in memory.
All of the Genie options let you switch from decimal to hex input and output at any time: this is achieved by pressing the H key. The border colour changes from blue to cyan to signal which number base is currently selected. Addresses actually change their form on the screen when you press H!
It takes a while to get used to the way Genie accepts numbers — you don’t have to press ENTER if you type the maximum number of characters (five for a decimal address or three for a byte value.) I found it a little irritating that leading zeroes are always printed.
You can print the contents of the window at any time by typing C for Copy, and relay all output to the printer between presses of P. The G option lets you go backwards through the memory: it takes DIS a few bytes to work out what has happened thereafter, but most disassemblers have this quirk.
You can change any data in registers or memory by pressing A for Alter, as corresponding values are displayed. You’re asked for an address, but ENTER gives the last one examined. You have to type new values as single-byte numbers.
Finally, the ‘RET’ option returns you to the program that was interrupted, restoring the old display on the top 8 lines of the screen. If you have altered the value of the PC register, the program re-starts at the address you set. The instructions illustrate how you can return directly to ZX BASIC.
There are a few missing features that I would have liked, such as conditional search and replace and some facility to enter text directly into the machine, rather than as numbers. However, Genie has to fit into the Spectrum’s memory map with the Multiface ROM and 48K of program to be examined, and the limited space has been well used.
Real hackers will love Genie, but it’s pretty meaningless unless you understand machine-code. It will not necessarily be useful for debugging your own code, unless your programs are so large that there’s no spare RAM for a conventional monitor. However, it is absolutely wonderful for getting inside someone else’s code. if that’s what you enjoy, you’ll find Genie a very professional tool — simple, effective and unique.