[net.micro] CoCo DLOAD doc. 170 lines

hanss (12/05/82)

Having seen several requests for documentation on the Radio Shack
color computer's DLOAD command, I asked the right person (Mark C,
who does not read news, nor does he have access to uucp) and got
the document below in reply.  Earlier I tried to get it to a previous
requestor by mail and asked for acknowledgement.  Since I didnt get
any I assume the paths didnt work.  Submitting to news is a third
and final resort.

I don't know anything about this stuff so please don't send letters
about it to me.  I'm just forwarding the info since I knew where it
could be found.
			-Hans Spiller
			decvax!microsoft!hanss




            Microsoft 6809 Extended Color BASIC
            DLOAD/DLOADM Communications Protocol
        Copyright (c) 1982 by Microsoft Corporation
               Prepared by Mark L. Chamberlin
                      August 31, 1982
DLOAD/DLOADM Communications Protocol                  Page 2


     DLOAD  and  DLOADM  send   and   receive   packets   of
information  to  and  from  the  host  computer  in order to
download BASIC and machine  language  files.   The  protocol
used  for  sending  these packets was designed to facilitate
detection and correction of transmission errors.

     The  process  of  downloading  a  file  from  the  host
involves  opening  a  file,  and then reading blocks of data
from the file.  The details of this protocol follow.


OPEN FILE -

     1.  BASIC to host - P.FILR

     2.  Host to BASIC - P.FILR

     3.  BASIC to host - 

         1.  8 byte filename, left justified, blank filled

         2.  XOR of the bytes in the filename


     4.  Host to BASIC -

         a) If no errors detected -

         1.  P.ACK

         2.  file type (0=BASIC program, 2=machine language,
             FF=file not found)

         3.  ASCII flag (0=binary file, FF=ASCII)

         4.  XOR of file type and ASCII flag.

         b) If errors detected, P.NAK.

     5.  BASIC - If errors then return to step 1.



READ BLOCK -

     1.  BASIC to host - P.BLKR

     2.  Host to BASIC - P.BLKR

     3.  BASIC to host -

         1.  Block number (most significant 7 bits)
DLOAD/DLOADM Communications Protocol                  Page 3


         2.  Block number (least significant 7 bits)

         3.  XOR of block number bytes


                                  NOTE

                 The block number  is  a  fourteen  bit,
                 unsigned integer in the range 0 through
                 16383.  It is split into two seven  bit
                 values, each of which is transmitted in
                 the least significant 7 bits of a byte.
                 This  insures that the most significant
                 bit is not set except for the  protocol
                 control characters (e.g., P.BLKR).  For
                 example,  a  block  number  of  511  is
                 transmitted   as  binary  00000011  and
                 01111111.




     4.  Host to BASIC -

         a) If no errors detected -

         1.  P.ACK

         2.  Block  length  in  bytes  (0  through  128,   0
             indicating end of file)

         3.  128 bytes of data


                                  NOTE

                 128  bytes  of  data  must   be   sent,
                 regardless of the block length.  If the
                 block length is less than 128 the extra
                 bytes  are  read by BASIC but not used,
                 so their values are of no concern.



         4.  XOR of block length and data bytes

         b) If errors detected, P.NAK.

     5.  BASIC - If errors then return to step 1.

DLOAD/DLOADM Communications Protocol                  Page 4


     The control character definitions are:

     1.  P.ACK - Acknowledge - C8 hex.

     2.  P.ABRT - Abort - BC hex.

     3.  P.BLKR - Block request - 97 hex.

     4.  P.FILR - File request - 8A hex.

     5.  P.NAK - Negative Acknowledge - DE hex.


     Additional rules:

     1.  If errors occur during an OPEN  or  READ  sequence,
         BASIC will retry the operation.  For each sequence,
         a  maximum  of  5  tries  is  attempted.   After  5
         unsuccessful  attempts, BASIC transmits a P.ABRT to
         the host and aborts the download, causing  a  BASIC
         IO error to occur.

     2.  If more than  10.4  seconds  pass  while  BASIC  is
         waiting  for  a byte from the host, a timeout error
         occurs.  The operation is  retried  or  aborted  as
         described above.

     3.  If the host receives any unsolicited data, it  quit
         transmitting  and  wait  for  BASIC  to restart the
         sequence.

     4.  The host should never time  out.   It  should  just
         continue to wait.


-------