Wednesday, 25 June 2014

SHARP MZ-800 Quickdisk and monitor

The not-so-prominent storage format of the 1980s.

I got hold of some Quickdisk disks, Roland brand. So far I've had no luck with software. I've played around with formatting the disks and using the built-in monitor for storing binary files.

The Sharp MZ-800 monitor inside the ROM has usually these few commands on offer:

M-View/Edit memory (Example: MC000)
D-View memory (Example: DC000)
B-Turn beep on/off
L-Load from tape
S-Save to tape

Shift+BREAK usually aborts any operation.

With the Quickdisk drive connected, the computer switches to a different ROM. The monitor then hosts these additional commands:

QF-Format Quickdisk
QD-Quickdisk directory
QL-Load file
QS-Save file
QC-Copy file
QX-Transfer file from tape

Each of the command is typed as a two-letter entry, without parameters. The monitor then asks the relevant information, such as filename, start, end and execution addresses.

It seems that DELETE/KILL is out of the question, so, at least without an operating system (Disk BASIC) the only way to make space is to reformat the disk.

The files need to have an execute address, and it is always used when the file loads. The auto-execution may be circumvented by using 00AD as the start address. Another route might be to choose a RAM address to which all the data files point to, and ensuring there's something meaningful at that address.

The Quickdisk loads 16 kilobytes in 4 seconds. On startup, the MZ800 boots to a disk file as long as there is a file on the disk, regardless of the filename. To bypass this I had to hold the disk drive cover open when resetting. The boot is rapid, which might be because the QD ensures the idle drive head position always points at the beginning of the first file. (=the boot file)

Using the D command for displaying memory contents. QD shows three files on the disk. The machine code at C000 messes with the character display.
I've used the following machine code for testing purposes. Located at $C000, it continuously increments the contents of the first 255 bytes of the character display, beginning at $D000. Quick to type, yet gives a visible enough effect. Use MC000 to start typing in the hex at the left. Shift+Break exits the entry mode, and JC000 will run it.

C000:21   ld hl,$D000
C001:00
C002:D0
C003:34   inc (hl)
C004:2C   inc l
C005:C3   jp $C003
C006:03
C007:C0

(I suppose the code could be even shorter, but clarity might be lost...)

More information about the monitor at sharpmz.org. (Nope, dead link)

No comments:

Post a Comment