Z88 Source Book Addendum #1
     By Timothy Swenson


INTRODUCTION

The Z88 Source Book Addendum is additional material for the Z88 Source
Book.  Instead of adding it to the Source Book to make a 4th edition,
thus requiring owners of the 3rd edition to purchase another edition
(which was done by owners of the 1st & 2nd editions when the 3rd
edition came out), I felt it would be wiser to create a new document
that could be combined with the Source Book in one binder.

As with the Z88 Source Book, the intent of the Addendum is to collect
a bunch of information about the Z88 and publish it for Z88 users.
This is the first Addendum.  More will follow as additional
information is found.  This document, along with the Z88 Source Book
can be found on my web page at:

      http://www.geocities.com/SiliconValley/Pines/5865/


BOOK REVIEWS

Some Z88 books are still available from the various Z88 dealers.
Others can be found in various places, including used book stores,
garage sales, and other Z88 users.  The Z88 Source Book listed only
those books which were known at time.  This section outlines the
contents of the books that I have since come across.

Z88 Real Power Computing
  By Frank R. Flaig

The first thing that you notice about this book is its amaturish look.
The book has been printed out on a Near-Letter Quality dot-matrix
printer, reproduced using a photocopier, and bound with a plastic
binding.  It could have easily been written and printed directly from
the Z88, which would demonstrate that the Z88 can do more than just
short letters.

The reason behind the book is similar to that of this book, the
author, after playing with the Z88 for a while, figured that other Z88
users might like to read what he has done with the Z88.  The book is
written as if you were sitting down with the author and he is chatting
with you about what he has been doing.  It is a very flowing
discussion-like style of writing.  I'm used to a more technical
get-to-the-point style of writing, but for some people this discussion
style may be more appealing.

Although the author does give an introduction to the Z88 and how to
use some of the applications, the core part of the book is the
sections on using the applications to accomplish tasks.  The sections
are as follows;  Merger - two different ways to merge a database and a
document to produce the same letters to different persons.  Labels -
printing out labels, such as address and product labels.  Screen
Display - how to better display a PipeDream database.  Language -
Using PipeDream to construct a document that helps translate between
two languages using lookup functions.  Currency Convertor - Using
PipeDream to convert between different currencies.  Trip Computer -
Using PipeDream to figure out how long a journey will take and track
fuel usage.  Diet Calculator - Using PipeDream to work out food
rations in terms of calories and cost.  Invoicing - Using PipeDream to
generate invoices or quotations.  Graphic Bar Chart - Using PipeDream
to create bar charts of data.

The book is fairly project centered and details what the author has
done to use the Z88 to accomplish the tasks that he needed done.  The
tasks may not be exactly what you need to do, but the details can be
changed to fit your needs.

This is not a very technical book full of more detail about the Z88.
It is more of a "How I Use" the Z88 book.  If there are tasks that you
want to use the Z88 for but do not know how to get the Z88 to do them,
this book might be just for you.  Once you see how the author has
accomplished his tasks, it might shed some light on how you could use
the same tricks to get your tasks done.


Using Your Z88
  By Patrick Hall

This book starts off pretty much as every other Z88 book by covering
the main applications built-in to the Z88.  The coverage of the
applications is fairly thin compared to some other books.  The book
then makes a turn for the better starts talking about programming in
BBS Basic.  Over two thirds of the book is dedicated in covering BBC
Basic starting with the idea that the reader is new to programming.
The book does a fairly good job of teach BASIC by covering the
essentials like Output & Display, Structured Programming, and Data
Structures.

The chapters walk a reading through the process of learning BASIC.  It
starts off with simple concepts and works from there.  It's fairly
verbose and explains what you want to do and how it is accomplished,
along with example code mixed in with the text.  This is not a
reference book for BBC Basic programming and I would not reccomend it
to anyone that already knows BASIC, but for those new to programming,
this book is a good starting place.


Z88 Computing
  By Ian Sinclair

This book approaches the Z88 a little differently than the other Z88
books I've seen.  It's approach is purely learn by doing.  It does not
spend much time discussing the various applications and how one might
user them in general.  Instead it starts off by covering a few key
points about the Z88 and its keys.  It then walks you through the
Pop-Ups and Applications step by step.  Each section has a short
paragraph covering the topic (such as Calendar or Clock) and then goes
into steps (like 1,2,3) that show a point by having you do something
on the Z88 or covering a single action (such as marking a block of
text).  
It has almost taken the task of learning the Z88 and broken it up into
small managable chunks.  With big bold numbers in the sections, you
can read the book in shorts bursts and not worry about loosing you
place.  This is also a book that requires having a Z88 nearby.  It
re-enforces its points by having you perform actions on the Z88.

If you don't have the time to really read the Z88 manual or other Z88
books, this one may be for you.  It will not teach you everything you
need to know about the Z88, but it does give you a quick start and
sets you on your way.


Z88 WORLD WIDE WEB LINKS

Z88 Forever
   http://www.netforward.com/deathsdoor/?Dharking

This is one of the key Z88 web pages and has a little bit of
everything.  The key sections are "About the Z88", "Using the Z88",
"Hardware & Software", and "Other Z88 Resources."  For Z88 users the
section "About the Z88" covers what they already know.  "Using the
Z88" has subsections on Z88 Emulators, the Z88 User Group Library,
Hints & Tips, etc.  The "Hardware & Software" sections covers some
items that are in this Addendum, such as the Internal Memory
Expansion.  The "Other Z88 Resources" lists the other key Z88 pages,
including the links to both the 2nd and 3rd edition of the Z88
Developers' Notes.


Dennis Gronings's Z88 Page
   http://www.algonet.se/~dennisgr/z88.htm

This page has a description of a number of Z88 utilities that Dennis
has written for Windows95.  These utilities are available for
downloading from the page.  These utilties will be discussed in a
later chapter covering new software/utilties.  One item about the
page, it has a nice picture of Sir Clive Sinclair holding up a Z88.


John Allen's Z88 Bits
   http://www.bramber.demon.co.uk/z88/index.html

This page has the following sections, "General Z88 Articles", "Z88 ->
BBC Articles and Software", "Z88 -> Risc OS Articles and Software",
and "Z88 Book".  As you can tell, John has spent some time working the
BBC Micro and the Acorn Risc OS computers.  The section "Z88 Book"
covers a few details about John's book "Z88 PipeDream: A Dabhand
Guide."  The Z88 to BBC Micro utilities are covered in a later
section.


John Allen's Software Showcase


This pages covers some of the software programs that John Allen has
written for Risc OS computers, which includes Z88Link and ZLink, which
both link the Z88 to Risc OS computers.  Both Z88Link and ZLink have
been downloaded and included in the Addendum Companion.


Really Good Software Company
  http://www.tcp.co.uk/~tonyr/rgsc/

This page covers the commercial software for Risc OS software from
this company.  For the Z88 they sell ZLink II (Z88 to Risc OS), a
follow on to Zlink (see previous item above).  It is available for
29.95 pounds.


Z88 Developers' Notes
   http://www.cl.cam.ac.uk/users/jrh/devnotes/index.html

This page covers the 2nd edition of the Z88 Developers' Notes written
by John Harrison and Matthew Elton.  The entire Notes have been
converted to HTML and are readable from this page.  If you want to
write Assembly programs for the Z88, this is the book to read.  It
covers all of the system calls and how to write applications.

Rakewell Ltd
   http://homepages.nildram.co.uk/~rakewell

Rakewell carries a lot of stuff for the Z88, a number of items that I
believe that only they carry.  Their newest product is a flash EPROM
that lets you delete files without needing an EPROM eraser.

Club 100 / Web 100
   http://dillernet.com/m100/index.html

This web site is dedicated to the Tandy Model 100/102/200.  This page
applies to the Z88 because there is lots of information about the
Tandy Portable Disk Drives (PDD), which are usable with the Z88.
There is software that lets the PC read the PDD disks.

My Z88 Page
   http://www.xnet.com/~stuart/z88.shtml

This small page has a couple good shots of the Z88 both inside and
out.


NEW Z88 RELATED SOFTWARE

These Utilities are available off of the Web links listed above.


Z88 PipeDream Viewer   (PIPEVIEW.ZIP)

This MS Windows program loads native Z88 PipeDream documents and
displays them.  Spreadsheet formulas are displayed but are not
calculated.  Columns are properly spaced.  Underline, bold, italics,
subscript, and superscript highlights are supported.  Allows you to
save PipeDream documents into Microsoft Rich Text Format (.RTF) to be
exported to Word for Windows.  This program is written by Dennis
Groning and written in Visual Basic.


Z88 BBC Basic Viewer  (Z88BASV.EXE)

This MS Windows program loads native Z88 BBC Basic programs and
displays them.  Menu commands support Save as Text, Cut, Copy, Paste,
Delete, Find, Find Next, and Add CLI Header.  This program is written
by Dennis Groning and written in Visual Basic.


Z88 Import-Export File Transfer (Z88-Xport)  (Z88XPORT.EXE)

This MS Windows program transfers files from Windows-based PC's and
the Z88 using the standard Imp-Exp popup on the Z88.  It supports the
backup of your entire Z88 by using the ":*//*" wildcard.  Z88-Xport
will create all directories needed during reception of the Z88 files.
It also supports selecting multiple files from multiple directories on
multiple drives and sending them to the Z88 in one batch.  This
program is written by Dennis Groning and written in Visual Basic.


CONVERT-BASIC  (BASIC.ZIP)

This is a BBC Micro program that converts BBC BASIC programs from the
Z88 and the BBC Micro.  The utility sends and recieves files from the
Z88 and converts the BASIC programs as they are transfered.  When
converting from the BBC Micro to the Z88, BASIC commands that are not
supported on the Z88 are converted into REM statements.  The MODE
command is replaced with CLS and a beep (VDU 7) is substituted forSOUND.  When the transfer is finished a report is displayed on the BBC
Micro screen that shows what conversions were made.  When transfering
from the Z88 to the BBC Micro, the utility does a straightforward
transfer, changing the file format, but not checking the BASIC
program.  This program is written by John Allen.


ARCHIVE    (ARCHIV.ZIP)

This utility takes all of your files on the Z88 and transfers them to
an archive file stored on the BBC Micro disk drive.  The utility is
then used to selectively reload the files back onto the Z88.

The utility runs on the BBC Micro, using either the DFS or ADFS filing
systems and links up to the Import/Export utility on the Z88.  The BBC
Micro does nothing more than send the data coming from the Z88
directly to disk.  No conversion is done.  This program is written by
John Allen.


CONVERT   (CONV.ZIP)

This utility converts simple PipeDream document files for use in
Wordwise, Wordwise Plus, and Mini Office on the BBC Micro.  Using a
few pointers in creating your PipeDream documents, these files can be
easily converted for use in BBC Micro word processors.  This program
is written by John Allen.


Z88 Printer SERVER  (PRINT.ZIP)

The utility will allow the BBC Micro to act as a printer server for
the Z88.  With the Z88 linked to the BBC Micro via the serial port,
when the Z88 prints to the serial port, the BBC Micro takes that data
and sends it to its parallel port and the printer attached there.
This program is written by John Allen.


Z88LINK  (TRANS.ZIP)

This utility simply transfers files from the Z88 to/from the BBC Micro
using the Z88's Imp-Exp utility.  BASIC program line number are
translated between the different forms.  This program is written by
John Allen.


Z88Link  (Z88LINK.ZIP)

This Risc OS utility transfers single files between the Z88 and any
Risc OS computer using the Imp-Exp utility on the Z88.  A version 2 is
available from the author (John Allen) for 5 pounds.


ZLink   (ZLINK.ZIP)

This Risc OS utility transfers files between the Z88 and any Risc OS
computer.  It requires the PC Link II ROM to be installed in the Z88.
This program is writtn by John Allen.


UNDER DEVELOPMENT

Here are some items that are reported to be under development.

Multiple Diaries

This will allow you to keep more than one diary on the Z88.  You can
keep your work and home diaries separate.  This is being worked on by
Interlogic.

PC Link Client

This is a command line PC client to connect to the Z88 program, PC
Link and PC Link II.  This allows files to transfer in both directions
and using wild cards.  It will even handle subdirectories, allowing
transer of an entire device (RAM.1:) with a single command.

WhatNow?

This application will allow the Z88 to use adventure files from the
Spectrum game creator, "Graphic Adventure Creator (GAC)."  Snapshots
of adventure games can be downloaded off the Internet, transfered to
the Z88, and then played.  


VERSION 4 ROM

The V4 ROM contains the following fixes:

Lost Handles
  In V3, handles could be lost by pre-empting the Filer during a
catalogue, resulting in a "File in Use" error which requires a soft
reset to clear.

ROM Cards
  It is no longer possible to insert and remove cards while the Z88 is
switched off.  Doing this might cause the Z88 to get confused, since
the Z88 now wakes up when the flap is opened.

PrinterEd
   When updating the PrinterEd settings user V3, it is common to
encounter a "FAIL" condition.  This has been fixed.  Additionally, the
"Allow line feeds" option now works correctly.

RAM.- Device
   The system no longer gets confused if files are present in this
useful device when the Z88 is reset.

Expanded Machines
   The Z88 will now behave as an expanded machine (giving a full map
in PipeDream, and 40K workspace in BASIC) if there is at 128K RAM
anywhere in the system, and not just in Slot 1 as with V3.

Filer Display
   In V3, a problem sometimes occurs with Filer when marking a file
after scrolling the cursor.  This causes the first letter of the
filename to disappear.  This is now fixed.


INTERNAL MEMORY EXPANSION

Don Walterman has re-discovered a way of upgrading the internal memory
of the Z88.  In browsing through some old Z88 magazines Don noticed
ads for internal memory expansion kits.  He decided to figure out how
this was done.

Don started with the Z88 Service Manual, which explains that the
internal memory is pseudo-static.  This type of memory is not common,
but Don did manage to find a company that carries these types of
memory chips.  It is Microprocessors Unlimited (918) 267-4961.  They
stock the memory chips that the Z88 can use (512K and 128K in either
100ns or 80ns).  The parts are:

            128K pseudo-static RAM: Hitachi HM658128ALP     $9.95
            512K pseudo-static RAM: Hitachi HM658512LP     $27-30

The Service Manual explains that the memory socket is pinned for the
128K memory chip.  Every board that Don has seen has the memory chip
soldered in, making for a more difficult project.  Carefully unsolder
the old memory chip and install a low-profile socket.  Make sure to
use a 32-pin socket.  You will need to clean out the extra four holes
above the 32K RAM, which only uses 28 pins.  NOTE: A solder sucker or
desoldering iron will come in handy here.

Don tried the 128K chip first and it worked right away.  The Z88
recognised it without doing anything special.  When Don installed the
512K chip only the first 128K was recognised.  Don had to head back to
the service manual.

The Service Manual explains that the Z88 is designed to access four
blocks of one megabyte each.  To access the full one megabyte, you
need to use all the memory address lines.  Memory address lines 17 and
18 don't go to the internal RAM socket.  They do go to each of the
card slots.  It happens that there are three pads by each connector.
Use the two pads next to each other that go to the second and the
third pin from the end of the connector.  These pads are memory
address lines 17 and 18.  They are perfect for this project.  Solder a
wire to each pad on the foil side of the board.  Make sure the wire
does not go through the pad too far.  There is a metal bar that a long
wire could short against.

There are a number of feed-through holes on each side of the internal
RAM chip.  Don prefers the feed-through hole by pins 3 and 18 of the
memory chip.  This allows you to run the wire right to the pins you
want.  Don't solder the wire to the feed-through holes, just run the
insulated wire through it.  Feed one of the wires through each feed
hole.  Don't use too much wire - you want to make sure mone of the
wires interferes with the option slots.  Don left pins 1 and 30 bent
out of the socket so that it would be easy to solder the extra memory
lines to it.

After attaching the two memory lines, the Z88 woke up with 512K.  It
recognised all of it with no problems - despite reports that a V4 ROM
is required for 512K internal memory.

One last detail - the clearance under the keyboard is tight.  When Don
put the Z88 back together, he noticed the keyboard bend a litle.  He
looked at the bottom of the keyboard and say that there was a clear
space above the Z88 ROM.  Use a sharp pair of wire cutters to trim the
area on the bottom of the keyboard above the RAM just like it is over
the ROM.  Now the keyboard fits well.  This is why it's better to use
a low-profile socket if you have one.

Make sure to completely backup your Z88 before starting this project.
You will probably need to do a hard reset to get the Z88 to check to
see how much memory is installed.  Don't be surprised if the Z88 makes
a strange noise the first time you turn it on.  Just perform a hard
reset and it will be fine after that.


Z88-TO-MAC TRANSFERS

Some people have been having problems transfering files from the Z88
to a Macintosh running Systems 7.5 and 7.5.3.  The problem has been
tracked down to the Mac starting with Extensions Turned On.  To get
the transfer to work you need to start up the Mac with Extensions Off.
To do this, hold down the shift key while starting until the message
"Extensions Off" appears.  It has not been determined which extension
is causing the problem.  This has been tested on a PowerMac with MacOS
7.5.3 and a Mac IIci running MacOS 7.5.


Z88 AND WORLDPORT MODEM

The WorldPort modem is a small, portable, and fairly popular battery
powered modem.  This section provides some details on configuring the
modem to work with the Z88.

Setting on the Z88: Xmit Baud 9600, Rcv Baud 9600, no parity, and
xon/xoff set to Yes.
Setting on the Z88: Xmit Baud 9600, Rcv Baud 9600, no parity, and
xon/xoff set to Yes.

Settings on the WorldPort (from the ATI4 command)
   B0  C1  E1  F1  M1  Q0  V1  X7  Y0
   &A3 &B1 &C1 &D4 &G0 &H1 &I0 &K1 &L0
   &M4 &N0 &P0 &R2 &S0 &T5 &X0 &Y1


RAKEWELL

(This section is include primarily because Rakewell does not advertise
in Sinclair circles and this information is not known to a number of
Z88 users. )

Rakewell Ltd. carries a wide variety of Z88 items, plus is about the
only dealer doing development.  They also seem to have picked up the
software sold previously by Ranger.

Books:
   Printer Drivers for the Z88                    7.00
   Z88 Developer Notes                           40.00

PipeDream for MS-DOS (w/ spellcheck)   50.00

Cables:
   Z88 to Mac/Archimedes                         15.00
   Parallel Printer                              34.00
   Serial Printer                       7.95

EPROM Eraser                                     21.27
Flash EPROM Pack                       50.21
SwitZch Box (4 way w/ lead)            29.95
zPower System                                    35.00
zPower Pack Regcharg. Batt.            17.95

Links:
   Amiga Link                                    25.00
   Achimedes Link                      24.95
   Archimedes Link PipeDream           34.00
   BBC Link                                       8.95
   Mac Link                                      32.95
   PC Link II                                    29.79
   PC Link II/EazyLink                           51.06
   PC Link II to EasyLink Upgrade                29.79
   PC Link II ROM only                           20.00
   PCW Import/Export                             29.95
   QL Link                                       25.00
   zTerm Software                      43.47


Z88 DISK DRIVE

A number of disk drives have been made available for the Z88.  Two of
the systems, XOB and ZN-DOS, use the Tandy Portable Disk Drive 2
(PDD2) that was designed for the Tandy Model 100/102/200 laptop
computers.  Tandy created the PDD1 and PDD2, but only the PDD2 is
currently used on the Z88.  The Tandy Model 100/102/200 and the Z88
are ver similar in function and that they both do not have a disk
drive controller built into them.  The Tandy designers solved this
problem by putting the drive controller on the disk drive and had all
communications between the computer and the disk drive go across a
serial line.  All worries about the formating of the data on the disk
is handled by the disk drive.

The computer communicates with the disk drive by sending commands or
requests over the serial line.  The disk drive then responds to these
requests and returns the requested data to the computer.  Given a
knowledge of the drive commands and a proper serial connection, any
computer can interface with the PDD1 or PDD2.  Although ZN-DOS and XOB
only use the PDD2, it would not be a difficult task to write software
to utilize the PDD1.  The primary different between the two drives is
that the PDD2 has two "banks" of files where as the PDD1 only has one
"bank".  Each "bank" stores 100K of information.  For more technical
differences, see below.

Exchanging Files Between XOB and ZN-DOS

This has not been tested, but since the two systems use the same disk
drive, they should be able to exchange files easily.  A XOB user has
read the directory of a ZN-DOS disk, but has not tried to read any of
the files.

Reading PDD Files on other Computers

Using the proper serial connections, it is possible to get any
computer to communicate with the PDD disk drives.  Two freeware
programs are available for MS-DOS computers that let them read and
save files to the PDD.  This would allow Z88 users to transfer their
files off of the PDD disks to an MS-DOS computer.  These are available
off of the Club 100 web page.

Z88 to Portable Disk Drive Cable

The ZN-DOS cable goes to the PDD2.  The interface on the PDD2 is a
special square 8 pin connector.  The layout of the pins is below:

       ----------------
       !  1  2  3  4  !
       ----------------
            !----!        <-- Plastic Nub on connector

The XOB cable is reported to be a 9-pin to 25-Pin D connector (I have
not seen it).  I don't know if the drive is a PDD2 or PDD1, but most
likely a PDD1.

 Cable from ZN-DOS             Cable from XOB

  Z88         PDD2              Z88       PDD?
-------------------           -----------------

    1                            1  ------  13
    2  -------  5                2  ------  12
    3  -------  2                3  ------  11
    4  -------  4                4  ------  10
    5  -------  3                5  ------  9
    6                            6  ------  25
    7  -------  8                7  ------  24
    8  -------  7                8  ------  19 - 22 - 23
    9  -------  6                9  ------  19 - 22 - 23


Tandy Portable Disk Drive (PDD1 & PDD2) Command Reference

This command reference is provided so that if a Z88 users gets a hold
of a PDD1 or PDD2 without any Z88 drive software, they have the
information necessary to communicate with the drive.  It is also
usefull is a Z88 user finds the existing drive software lacking in
anyway and wishes to write their own.

General Reference

   Disks are single side 3.5 inch standard disks (DSDD will work).
   PDD1 - 40 tracks, 2 sectors, 1280 bytes/sector, 100K/disk.
   PDD2 - 80 tracks, 2 sectors, 1280 bytes/sector, 200K/disk.
     Treated as two banks of 100K each.
   Maximum file size = 64K
   Maximum number of directory entries (files) is 40 for PDD1 and 80
for PDD2.
   File names are maximum 24 characters (padded with trailing blanks)
although Tandy always used 6 for filename and 2 for filetype, with
period speperator (i.e. XXXXXX.TT).
   All communications with drive are at 19,200 bps.  Both drives have
dip switches so this can drop to 9600, 4800, and 1200 bps.  (ZN-DOS
uses 9600 bps as this is the fastest the Z88 can go.)

Command Format

All commands are in a request/return format (half-duplex).

General Request format:

     preamble  type  length  data  checksum

General Return format:

     type  length  data  checksum

Command Type

     Command          Request         Return

     Directory ref      00h            11h 12h
     Open File          01h            12h
     Close File         02h            12h
     Read File          03h            10h 12h
     Write File         04h            12h
     Delete File        05h            12h
     Format Disk        06h*           12h
     Drive Status       07h*           12h
     Drive Condition    0Ch*           15h
     Rename File        0Dh            12h

Request Command Details

Directory Reference  --  00h

   2   1  1   24            1        1           1       Bytes
+----+--+--+--------------+---------+-----------+------+
|5A5A|00|1A| filename     |attribute|search form|chksum|
+----+--+--+--------------+---------+-----------+------+

   Preamble     - 5A5A hex  (always 'ZZ')
   Request      - 00 hex 
   Length       - 1A hex
   Filename     - padded with blanks
   Attribute    - specify 'F' (not used normally)
   Search Form  -
           00h  - reference file for open or delete
           01h  - request first directory block
           02h  - request next directory block
           03h  - request previous directory block
           04h  - end directory reference
   Checksum     - (see below)


Open File  -- 01h

   2   1  1   1     1       Bytes
+----+--+--+------+------+
|5A5A|01|01| mode |chksum|
+----+--+--+------+------+

   Preamble     - 5A5A hex  (always 'ZZ')
   Request      - 01 hex 
   Length       - 01 hex
   Mode         - 
            01h - open new file for WRITE
            02h - open existing file for APPEND
            03h - open existing file for READ
   Checksum     - (see below)


Close File  --  02h

   2   1  1    1       Bytes
+----+--+--+------+
|5A5A|02|00|chksum|
+----+--+--+------+

   Preamble     - 5A5A hex  (always 'ZZ')
   Request      - 02 hex 
   Length       - 01 hex
   Checksum     - (see below)


Read File   --  03h

   2   1  1    1       Bytes
+----+--+--+------+
|5A5A|03|00|chksum|
+----+--+--+------+

   Preamble     - 5A5A hex  (always 'ZZ')
   Request      - 03 hex 
   Length       - 00 hex
   Checksum     - (see below)

Write File   --  04h

   2   1  1     1 - 128     1       Bytes
+----+--+-----+----------+------+
|5A5A|04|01-80|   data   |chksum|
+----+--+-----+----------+------+

   Preamble     - 5A5A hex  (always 'ZZ')
   Request      - 04 hex 
   Length       - 01 - 80  hex (actual length of data)
   Data         - Actual data
   Checksum     - (see below)


Delete File   -- 05h

   2   1  1   1       Bytes
+----+--+--+------+
|5A5A|05|00|chksum|
+----+--+--+------+

   Preamble     - 5A5A hex  (always 'ZZ')
   Request      - 05 hex 
   Length       - 00 hex
   Checksum     - (see below)

Format Disk    -- 06h

   2   1  1   1       Bytes
+----+--+--+------+
|5A5A|06|00|chksum|
+----+--+--+------+

   Preamble     - 5A5A hex  (always 'ZZ')
   Request      - 06 hex 
   Length       - 00 hex
   Checksum     - (see below)

Drive Status   -- 07h

   2   1  1    1       Bytes
+----+--+--+------+
|5A5A|07|00|chksum|
+----+--+--+------+

   Preamble     - 5A5A hex  (always 'ZZ')
   Request      - 07 hex 
   Length       - 00 hex
   Checksum     - (see below)

Drive Condition   -- 0Ch

   2   1  1    1       Bytes
+----+--+--+------+
|5A5A|0C|00|chksum|
+----+--+--+------+

   Preamble     - 5A5A hex  (always 'ZZ')
   Request      - 0C hex 
   Length       - 00 hex
   Checksum     - (see below)

Rename File   --  0Dh

   2   1  1   24            1         1       Bytes
+----+--+--+------------+---------+------+
|5A5A|0D|19| new name   |attribute|chksum|
+----+--+--+------------+---------+------+

   Preamble     - 5A5A hex  (always 'ZZ')
   Request      - 0D hex 
   Length       - 19 hex
   New Name     - new name for the file
   Attribute    - specify 'F' (not used normally)
   Checksum     - (see below)

Return Command Details

Read File Return   --  10h

  1  1    1    0 - 128        1       Bytes
+--+-----+--+--------------+------+
|10|00-80|1A| file data    |chksum|
+--+-----+--+--------------+------+

   Return       - 10 hex
   Length       - 00 - 80 hex (length of data)
      If length is equal to 80h, there may be more data -
         you must issue another read command.
      If length is less than 80h then this is the last block.
   File Data    - data read from file
   Checksum     - (see below)

Directory Reference Return  --  11h

  1  1   24               1      2    1     1       Bytes
+--+--+--------------+---------+----+----+------+
|11|1C| filename     |attribute|size|free|chksum|
+--+--+--------------+---------+----+----+------+

   Return       - 11 hex 
   Length       - 1C hex (length of data)
   Filename     - padded with blanks
   Attribute    - specify 'F' (not used normally)
   Size         - size of file
   Free         - numbers of free sectors ( multiply by 1280 for
bytes)
   Checksum     - (see below)

Normal Return   --  12h

  1  1   1         1       Bytes
+--+--+---------+------+
|12|01| error   |chksum|
+--+--+---------+------+

   Return       - 12 hex 
   Length       - 01 hex
   Error Code   -
     00h - normal                10h - file does not exist
     11h - file exists           30h - no filename
     31h - dir search error      35h - bank error
     36h - parameter error       37h - open format mismatch
     3Fh - end of file           40h - no start mark
     41h - CRC error in ID       42h - sector length error
     44h - format verify error   46h - format interruption
     47h - erase offset error    49h - CRC error in data
     4Ah - sector number error   4Bh - read data timeout
     4Dh - sector number error   50h - disk write error
     5Eh - un-initilized disk    60h - directory full
     61h - disk full             6Eh - file too long
     70h - no disk               71h - disk change error
   Checksum     - (see below)


Drive Condition Return  -- 15h

  1  1   1           1       Bytes
+--+--+-----------+------+
|15|01| condition |chksum|
+--+--+-----------+------+

   Return       - 00 hex 
   Length       - 01 hex
   Condition    - bit values

       7 6 5 4 3 2 1 0   bit
      +-+-+-+-+-+-+-+-+
      |0|0|0|0|x|x|x|x| 
      +-+-+-+-+-+-+-+-+
               | | | |
               | | | +-- power (0=normal, 1=low)
               | | +---- write protect (0=not prot, 1=prot)
               | +------ disk out (0=disk in, 1=disk out)
               +-------- disk change status (0=not changed, 1=changed)

   Checksum     - (See below)


Sequence of Events

Get Directory    - req 00 search form 01
                 - req 00 search form 02 (repeat as needed)

Write File       - req 00 search form 00
                 - req 01 mode 01 or 02
                 - req 04 (repeat as needed)
                 - req 02

Read File        - req 00 search form 00
                 - req 01 mode 03
                 - req 03 (repeat as needed)
                 - req 02

Rename File      - req 00 search form 00
                 - req 0D

Delete File      - req 00 search form 00
                 - req 05

Calculating Checksum

The checksum is "the one's compliment fo the least significant byte of
the number of bytes from the block format through the data block."  To
make matters simple, below is the formula for the checksum:

      checksum = (bytes MOD 256) XOR 255

where bytes equals the number of bytes including the Request Type,
Length, and all Data fields (but not including the preamble).


close$="ZZ"+CHR$(2)+CHR$(0)+CHR$(253)
dir1$="ZZ"+CHR$(0)+CHR$(26)+

    Source: geocities.com/svenqhj