This is USERLIB subdirectory .CPM.XMODEM

Here is a Fortran version of XMODEM for CP/M file transfer
using Ward Christensen protocol, runable on VAX/VMS V3.0 and higher.

Current version XMODEM 5.53 June 23,1984
All timeouts implemented,
supporting BATCH (multiple file transfer)
and internal TEXT conversion.

See XMODEMFOR.DOC and XMODEM.HLP .

The files in the package are:

AAAREADME.DOC  This document
ABSTRACT.DOC   DECUS Library abstract
XBUILD.COM     FORTRAN and LINK the programs
XMODEM.FOR     Equivalent to CPM's XMODEM 5.0:  binary files,
               with checksum or CRC, most timeouts, and with BATCH,
               in VAX Fortran (special I/O dependency encapsulated in two
               subroutines so it should be translatable to other
               Fortrans that can do 8-bit I/O with timeouts).
               works up to 9600 baud on a moderately loaded VAX 11/780
               running VMS version 3.0 or higher.
XMODEMFOR.DOC  Another version of this document
TOXMOD.FOR     Converts VAX text file (variable length
               records with no CRLF) into CP/M compatible file
               for transfer by XMODEM (fixed length 128 byte records
               with CRLF at ends of lines).
FROMXMOD.FOR   Similarly converts CP/M file from
               the form received by XMODEM.FOR to a VAX text file.
EXETOXMOD.FOR  Converts .EXE file (512 byte fixed length) to 128 byte records.
XMODTOEXE.FOR  Converts 128 byte record file to .EXE file (512 byte records)
	       You should probably COPY/CONTIGUOUS the .EXE file afterword
               so it is not too fragmented.
XMODEM.HLP     A VAX HELP file about the three programs.
XMODEM.COM     A VAX command procedure file defining XMODEM,TOXMOD,FROMXMOD,
	       XSEND,XREC as
               foreign commands.
QIO.DCK        Obsolete include file.
BATPROT.COL    Describes the batch protocol
MODMPROT.COL   Describes the Christensen protocol (by Christensen)
XMODEM.CRC     Failed attempt to use LIB$CRC to calculate CRC
XMODEM.BUG     Known bugs in XMODEM.
XMODEM.OLD     An old version of XMODEM.FOR.
*.EXE	       Coresponding executables for the *.FOR programs.

The normal file format received by XMODEM is 128 byte fixed length records.
These files may PRINT and TYPE reasonably, but to edit them on your VAX
they must be converted to ordinary VAX text files by FROMXMOD.
If you forget which files have been converted by TOXMOD or FROMXMOD,
just do a DIRECTORY/FULL to see the file format on the VAX.
Similarly XMODEM will only send text files reasonably using the TEXT option
or if they have been converted to CP/M form by TOXMOD,
otherwise the FORTRAN input statements in XMODEM will append
lots of blanks to each line of text and no carriage returns will be sent.

Problems:
Batch mode: Long VAX filenames are truncated at 8 characters before the type.
            CP/M filename characters converted to "A" if invalid on VAX.
Sometimes it may be advisable to DEFINE SYS$ERROR filename
to get error messages that may not go into XMODEM.LOG when XMODEM crashes
due to unexpected system error such as divide by zero, file open failure, etc.
during a file transfer.
Since XMODEM.LOG is kept in current directory, S *.* will crash XMODEM
when it tries to send XMODEM.LOG since it is open for write already.

A version of MODEM7 for the VAX is also available.
 
If anyone hears of XMODEM or MODEM7 available for other MAINFRAMES 
I would like to hear about them.  Send mail to me at the address below. 

History:
	I translated TMODEM.C ( a Unix C language version of XMODEM )
into Fortran then used the XMODEM.ASM version 5.0 8080 source code as a guide
for timeouts and error handling, and translated the specific
CRC algorithm used there to Fortran.  Richard Conn added my CP/M - VAX
text conversion routines to XMODEM.FOR .  I speeded up SEND by making
it do a single QIO per block.  Steve Gill completed timeout implementation.
	The program has been in use for over 2 years here and
on several other VAXes scattered across the country.
It is VAX-96 in the DECUS (DEC User's Society) library.
There is an old version
on the DECUS Users group VAX tape for Fall 1983.  Another on SIG/M library.

J. James (Jim) Belonis II
Computer Cost Center Manager
Physics Hall FM-15
University of Washington
Seattle, Washington 98195
(206)-545-8695