Rom Review

Disc Doctor, version 1.05
Computer Concepts

A package to aid disc operation

THIS new piece of eprom-based software is from Computer Concepts, a firm already well known for their word processing package Wordwise.

My first problem was that the disc commands of Disc Doctor would not work with any of the numerous versions of the Amcom DFS (up to serial no. 7370) I have access to, nor the Watford DFS 1.00.

The newer 1.2 version of the Watford DFS does allow it to work correctly, but it shares some command names with Disc Doctor.

As the right hand ROM takes precedence, you'll need to decide which chip's commands you want, then make sure it is in a ROM socket towards the right of the other.

One lesson from this is that if you have any non-Acorn DFS, tell the dealer which ROMs are in your Beeb and get some assurances from him before you buy!

If Disc Doctor is plugged into one of the sockets to the right of the DFS, then at switch-on or BREAK a Disc Doctor message is printed on the screen along with the DFS title. However if it is inserted into a socket to the left of the DFS, only the Basic and DFS startup messages appear.

Twenty new commands are available (see Page 140). Only 13 of these are directly applicable to the disc system, the other seven being general utilities.

Two of the commands, *FORM and *VERIFY, mean that you no longer need to use the utilities disc.

One of the most important disc utilities is a sector editor, which gives the facility to look at the value of every byte of a sector on a disc and change it if necessary. This is the *DZAP command.

The information is clearly displayed in teletext mode. Many other sector editors are in an 80 column mode, like mode 0, making it difficult, if not impossible — to read on a TV, especially a colour TV.

The display consists of eight columns of hexadecimal values with their Ascii equivalents.

Scrolling through the sector is controlled using the cursor keys, as in Wordwise.

The active location is shown by two arrows. An interesting feature I liked is that input to this active location can be entered in Ascii, decimal, hexadecimal or even binary.

Movement between tracks and sectors was easily accomplished using the CTRL and the left and right cursor keys. If any part of the sector is altered, trying to leave the sector will produce a SAVE (Y/N)? request.

My main dislike was the error, handling. If Disc Doctor encountered a disc error on entry to a routine, it would simply report the error.

At other times an error message "ERROR:L" or "ERROR:S" appeared near the top of the screen with no other indication of what this meant, as there was no error number, nor any explanation in the documentation of these load or save errors.

In some error conditions the Beeb would "hang-up", control only being regained by pressing the BREAK key.

The most interesting command was *SEARCH.

With this command you can search for a specified string on the disc. The routine enters the *DZAP editor and the screen flashes through sectors until the string is found. The search can be continued simply by pressing the COPY key.

*RECOVER will load specified sectors into memory while *RESTORE can place a section of memory onto specified sectors.

*DOWNLOAD is used to load and relocate a program. This is most useful where software written for the cassette system (located at &EOO) has to be transferred to a disc system (PAGE=&1900).

*DISCTAPE and *TAPEDISC are used as their names suggest for transferring files between the systems. The commands allow a number of files to be transferred in succession. This makes it easy to backup a disc to tape.

*JOIN will add a number of files together in one new file. Since very large files can now be created there is a

*PARTLOAD command which can load a section of a file.

*MENU or Break + M saves you having to write a menu program. A simple screen is displayed with the disc title at the top and all the files from directories + and - preceded by a letter. By simply pressing this letter, the program is loaded and run. (The + and - directories are used to denote Basic and machine code programs).

*SWAP is Computer Concepts' answer to the problem of only having a maximum of 31 files with the Acorn DFS. Their system allows a maximum of 60 files. The disc is effectively divided into two with the file information for the other half stored in a file called !.!!!!!!! Each half even has its own title. *SWAP moves between the two.

The problem with this method is that with a 40 track system 30 files only have 50k of storage space, so this system is only useful for discs of short files.

The other commands which make up this package are general utilities.

*DIS is a reasonable general purpose disassembler. The information displayed includes the address (in hex), mnemonics, code (in hex) and Ascii equivalent.

It would have been clearer if the operating system calls had been given as their official title rather than an address: OSWORD is far more easily recognised than &FFF1.

Disassembly takes place a line at a time after depressing a key. It also allows branches to be followed and printouts to be made.

*EDIT displays function key definitions so that they may be edited.

*FIND gives the line numbers of a string in a Basic program. Finding keywords is a little more awkward as it needs you to give a token value rather than typing in the keyword.

*MOVE changes the position of a Basic program in memory so that it will start at a different page.

*SHIFT can move a block of memory from one location to another.

*MSEARCH looks for a specified string in memory.

*MZAP is very like *DZAP but is used as a memory editor. The screen is updated many times a second, so that looking through parts of memory where byte values are constantly changing, like page &2, you'll see a most interesting display.

Most of the commands were reasonably easy to use. Some numbers used in the commands default to decimal values, some to hexadecimal, which can be a little confusing at first.

However there is the ability to enter numbers in decimal, hex or any other base between 2 and 99!

The 39 page spiral-bound manual supplied with the software was clearly written and informative. One annoying omission from the documentation was that there was no indication of the memory (RAM) used by this package.

For instance zero page locations &70 to &8F are used so that using *MZAP to alter them can cause unpredictable effects.

I was surprised to see there was no BACKUP-like command which would cope with disc errors, as it is always simpler (and safer) to experiment with recovering information from a backup copy, rather than from the original.

To sum up, Disc Doctor should prove a most useful all-round utility for DFS users, although better error handling routines would make it an even more attractive package.

Jim Notman

DISC DOCTOR 1.05
DIS (<sta>) (<end>) (<ofs>)
DISCTAPE <afsp> (<afsp>)...
DOWNLOAD <fsp> (<adr>)
DSEARCH <str> <trk> (<trk><sct><drv>)
DZAP (<trk>) (<trk><sct><drv>)
EDIT (<key no.>)
FIND <str>
FORM <drv> <no. trks> (<stt>) (<S>)
JOIN <fsp> <afsp> (<afsp>)...
MENU (<drv>)
MOVE (<dest page>) (<src page>)
MSEARCH <str> (<adr>)
MZAP (<adr>)
PARTLOAD <fsp> <ofs> <ext> <adr>
RECOVER <trk> <sct> <sct> <adr> <drv>
RESTORE <trk> <sct> <sct> <adr> <drv>
SHIFT <src> <dest> <ext>
SWAP (<drv>)
TAPEDISC (<fsp>)...
VERIFY (<drv>) (<no. trks.>) (<stt>)
The Disc Doctor commands