<< Previous Message Main Index Next Message >>
<< Previous Message in Thread This Month Next Message in Thread >>
Date   : Tue, 13 Jan 1987 06:43:00 MST
From   : Keith Petersen <W8SDZ@SIMTEL20.ARPA>
Subject: Modem7 batch protocol definition

For some time we've hoped that the Modem7 batch protocol would be
defined in easily-understood terms (which might help in finding how to
fix the infinite loop that happens if there is an error when sending
the filename).  I found this in a file called VAX-XMDM.ARC (available
in the SIMTEL20 PD:<MISC.VAXVMS> directory, an improved XMODEM (ver.
5.53) for VAX-VMS which does (optional) batch file transfer and
internal TEXT conversion.

--Keith

Batch protocol for MODEM7 and XMODEM multi-file transfer

Each must specify batch since different treatment of ACK
as first character of "block" is needed.

CAN character is frequently tested for and interpreted as cancel everything
1 sec timeout on characters usually

CHECKSUM used on filename sequence even if CRC to be used in file transfer

on error during filename sequence, both return to beginning
       sender returns to NAK wait
       and receiver returns to NAK send

Time sequence of transfer:
SENDER                                 RECEIVER

waits for NAK with 80 sec timeout
clear checksum
                                       NAK  at 10 sec interval 'til ACK or CAN
ACK                                    
                                       waits for filename chars 1 sec timeout
                                       on error goes to above NAK
Loop 11 times (though filename buffer
       allows more)

       (Strip parity bit)
       send next filename character
       (in CP/M FCB form, no dot,
       blank filled, last 3 bytes
       are type)
       add to checksum
       await ACK 1 second timeout
                                       add to checksum
                                       ACK
End Loop

EOF (CTRL-Z)
add to checksum
                                       add to checksum
                                       send Checksum byte
                                       await ACK
                                       (note: if receives noise here,
                                       one end may proceed to
                                       normal file transfer, and other to
                                       restart filename and hang)
verifies checksum
OKNMCH (ACK) or BDNMCH ("u")

               Normal file transfer starts
                                       NAK or "C"
SOH   start of block
.
.
.
EOT   end of file
                                       ACK


expects NAK to start next filename
                                       NAK
ACK  set up receiver for filename
EOT  as first char of filename 
       terminates batch transfer
       (possibly as ANY character
       of filename)
<< Previous Message Main Index Next Message >>
<< Previous Message in Thread This Month Next Message in Thread >>