Dec 082017
 
Nice set of Modula-2 implementations of many file transfer protocals including ZMODEM. All source code included. Written for JPI's M2 compiler.
File M2PROT.ZIP from The Programmer’s Corner in
Category Modula II Source Code
Nice set of Modula-2 implementations of many file transfer protocals including ZMODEM. All source code included. Written for JPI’s M2 compiler.
File Name File Size Zip Size Zip Type
COM.DEF 593 320 deflated
CRC.A 17478 4834 deflated
CRC.DEF 1434 635 deflated
FIOASM.A 37312 5063 deflated
FIOASM.DEF 7701 2234 deflated
MISCASM.DEF 2118 699 deflated
NFIO.DEF 2011 820 deflated
NFIO.MOD 4035 1418 deflated
PATHFIND.DEF 2470 1122 deflated
PATHFIND.MOD 5678 1873 deflated
QCBPLUS.DEF 1735 809 deflated
QCBPLUS.MOD 42154 10036 deflated
QCCOMM.DEF 2834 1235 deflated
QCDISP.DEF 5606 1975 deflated
QCKERMIT.DEF 805 417 deflated
QCKERMIT.MOD 23256 4993 deflated
QCKPACK.DEF 4061 1418 deflated
QCKPACK.MOD 12055 3025 deflated
QCPROTO.DEF 605 297 deflated
QCPROTO.MOD 5482 1573 deflated
QCSHELL.DEF 959 479 deflated
QCXM.DEF 895 411 deflated
QCXM.MOD 25696 5360 deflated
QCXMZERO.DEF 1572 683 deflated
QCXMZERO.MOD 7983 2398 deflated
QCZM.DEF 754 359 deflated
QCZM.MOD 38930 8332 deflated
READ.ME 3796 1679 deflated
TIMER.DEF 694 347 deflated
UTIL.DEF 1260 556 deflated

Download File M2PROT.ZIP Here

Contents of the READ.ME file


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
these protocols.

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
GIF transfers.
TIMER.DEF Low-level timers and a Delay procedure. (If you
are programming for IBM compatibles, you can use
JPI's Lib.Delay.)

Here are the protocols themselves:

QCBPLUS.DEF CompuServe B Plus. Includes GIF files.
QCBPLUS.MOD

QCKERMIT.DEF Kermit
QCKERMIT.MOD
QCKPACK.DEF Low-level Kermit procedures
QCKPACK.MOD

QCXM.DEF XModem, XModem-1K, YModem, Telink
QCXM.MOD
QCXMZERO.DEF "Zero-block" handling for YModem, Telink, ZModem
QCXMZERO.MOD

QCZM.DEF ZModem
QCZM.MOD

Finally a protocol handler:
QCPROTO.DEF This package processes common requests to upload
QCPROTO.MOD or download files for all except CompuServe B
Plus.

-- 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:

Carl Neiburger
169 N. 25th St.
San Jose, Calif. 95116

CompuServe No. 72336,2257


 December 8, 2017  Add comments

Leave a Reply