Modula-2 code for seven communication protocols
This package contains JPI TopSpeed Modula-2 code that I have
developed for these error-checking protocols: XModem, XModem-1K,
YModem, Telink, ZModem, CompuServe B Plus, Kermit.
While I assembled them, I cannot by any means take credit
for the whole job. I studied and in many cases borrowed code
from other sources; this is especially the case for the
CompuServe B-Plus protocol, which is largely derived from Russ
Ranshaw's Turbo Pascal source.
I assembled all of these modules for my own communications
program, QC, which runs on the DEC Rainbow 100 computer. But
the purpose of this package is to make the protocol code
available in as generic a form as possible, so I am excluding
any Rainbow-specific code, leaving only the definition modules
that you will need to write your own code. I am, however,
including some of the more generic libraries of code used by
First the generic libraries:
FIOASM.A These are generic MS-DOS File IO libraries.
FIOASM.DEF I used assembly code to make them faster than
NFIO.DEF JPI's libraries. NFIO is abridged to include
NFIO.MOD only the procedures used by the other modules
in this package
CRC.A This module computes cyclic redundancy checks
CRC.DEF and check sums for blocks of data.
MISCASM.DEF These are a bunch of INLINE procedures. No
implementation module is necessary in JPI TopSpeed
Modula-2, version 2.
PATHFIND.DEF Procedures for finding and parsing file names.
PATHFIND.MOD One procedure, FileTree, creates a directory of
file names in the form of a linked list.
UTIL.DEF Definitions of strings and character sets.
No implementation module required
You'll have to write these yourself:
COM.DEF Low-level communication procedures
QCCOMM.DEF Higher level communication procedures
QCDISP.DEF Data display procedures
QCSHELL.DEF Procdures involving shelling to DOS for CompuServe
TIMER.DEF Low-level timers and a Delay procedure. (If you
are programming for IBM compatibles, you can use
Here are the protocols themselves:
QCBPLUS.DEF CompuServe B Plus. Includes GIF files.
QCKPACK.DEF Low-level Kermit procedures
QCXM.DEF XModem, XModem-1K, YModem, Telink
QCXMZERO.DEF "Zero-block" handling for YModem, Telink, ZModem
Finally a protocol handler:
QCPROTO.DEF This package processes common requests to upload
QCPROTO.MOD or download files for all except CompuServe B
-- For downloads, it asks which directory to put the files in.
-- For uploads, it constructs a linked directory. It does
so with this prompt:
'Enter file(s) to send or "/" + batch list file or Return to abort:'
If the user enters an ordinary file name, it is treated
as a file mask; for example, *.ZIP would create a linked
list of all .ZIP files.
A file name preceded by a slash is interpreted as a batch
file, an ASCII file listing the files to be sent.
File names in the list file can include wild cards.
I'm giving all this stuff away. If its helpful to you, great. If
I made some mistakes, consider it a challenge to find the bugs. If you
need to reach me, I've tried to include my name and address in all the
code. Here it is:
169 N. 25th St.
San Jose, Calif. 95116
CompuServe No. 72336,2257