home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
HAM Radio 3
/
hamradioversion3.0examsandprograms1992.iso
/
lan
/
llexe159
/
llexe159.exe
/
PCZ.ZIP
/
PCZ.DOC
< prev
next >
Wrap
Text File
|
1990-11-27
|
27KB
|
813 lines
PCZ 4.06.90 Nov. 27, 1990
PCZ - A Public Domain implementation
Zmodem, Ymodem, Xmodem, Xmodem-1K, Sealink
for the IBM PC family
PcConnect Zmodem by Drue Kennon and Gary Smith
PCZ is a public domain Zmodem implementation that will allow
users of communication software that does not implement
internal Zmodem to access it through an external program.
It is a full-featured version of Zmodem, but does not have the
large volume of bells, whistles & options provided by Omen
Tech's DSZ. However, I do believe that it will be suitable
for the average demanding BBS'r.
PCZ provides support for the basic Xmodem variants:
Xmodem, Xmodem-1K, Ymodem & SEAlink.
The following is a description of how to start PCZ for file
transfers.
LEGEND
Data enclosed in "[" "]" is optional.
Data enclosed in "<" ">" is required.
Send Command line:
PCZ <1-8> <300-19200> [m] [f] [d] [s] <s?> [r] [@]<filespec>
Recv Command line:
PCZ <[1-8]> <[300-19200]> [m] [f] [k] [d] [s] <r?> [r]
[filespec]
Ref:
1-8 - the number 1 - 4, -(8) << PS/2 >>
300-19200 - the number 300, 1200, 2400 etc...
m - frontend menu option (see MENU)
f - enable FOSSIL comm driver routines
k - rx keep aborted received files
d - disable video memory writes (usedos)
s - request enable Super_Z transfer mode
(zmodem only)
r?,s? - transfer type sz, rz, sx, rx etc...
r - resume/recover aborted transfer
(zmodem only)
@ - command file transfer alert flag
(SEAlink, Z,Ymodem)
filespec - file name w/extension
{complete file spec allowed}
{drive:\path\filename.ext}
Flags should be placed as shown for standardization
purposes.
i.e. "f" before "d"; "d" before "k"; "rz,sz" before "r" etc...
Due to the nature of the beast, no support is provided for a
default port & no default port speed is assumed.
NOTE * See environment variables below for more on default
port/speed
I personally never enter "port" or "speed", but always enter
their values. i.e. pcz 1 9600 f sz xxxxxxx.xxx The batch
files included reflect this method.
"ZMODEM RECEIVE"
<< SINGLE >>
PCZ 1 9600 rz myfile.ext - assume your specified file
name.
<< BATCH >>
PCZ 1 2400 rz - Receive ALL sender files.
PCZ f d k rz r - Receive ALL sender files
assume PCZPORT & PCZSPEED
values
use FOSSIL routines
use standard DOS screen output
KEEP all aborted files.
RESUME any incomplete previous
files.
one file mode:
PCZ 1 9600 rz INFILE.ARC - Receives one file and names it
INFILE.ARC
PCZ 1 9600 rz r INFILE.ARC - Recovery effort on file
INFILE.ARC
NOTE * A word about command line switches might be in order
here. The switch flags " f, d, k " are global. That is
they control PCZ and not any particular protocol. The "r & s"
switch is isolated within zmodem, but is applied to both
sender and receiver. If you want PCZ's resume code enabled
when sending a file then the sender must specify "r" on the
command line. Accordingly if the receiver requests
resumption of an aborted transfer, the sender must have "r"
specified or we won't resume anything. This was requested
by BBS Sysops who track download bytes, transfer points
etc... Probably so you aren't charged twice or the such
like.
"ZMODEM SEND"
<< SINGLE >>
PCZ 1 9600 sz OUTFILE.ARC - Send one file to receiver.
<< BATCH >>
Create a TEXT command file with one complete file spec per
line, which includes drive and directory information for
each file that is not in the directory PCZ was called from.
e.g. C:\MYDIR\THISFILE.ZIP
There is NO limit to the number is allowed.
Have no blank lines in the file.
Place the "@" symbol as the first character of the filename.
Pass it to PCZ on the command line as follows:
PCZ 1 2400 sz @OUTFILE.TXT
What you name the command file is your business. It simply
must be a standard ASCII file with no software or printer
control codes present.
An alternative to creating the command file for sending 2 or
3 files may be used. Simply type the file names on the dos
command line separating each one with a space.
Remember the receiver must be set to accept batch uploads or
you might be spinning your wheels. Some BBS packages are
just now coming on-line with batch upload features using
PCZ. They normally indicate (BATCH) if it is supported.
BBS << BATCH >>
One method for implementing batch uploads on a bbs is to use
the log file and examine the transfer status character. The
first character of each line in the log file denotes how the
transfer finished. A "1" for good transfer & "0" for a
failed transfer.
Armed with this information, simply setup to call PCZ in
batch receive mode. After PCZ has finished and your bbs
code has control. Open the logfile and read in the line(s)
of information. You may now format a string to send the user
about the status of each file he/she sent, prompt for a file
description etc...
After you have dealt with each entry in the logfile, simply
close the file and delete it. PCZ will create a new file
for the next transfer session. If you desire a continuous
record of the transfers then you should create your own and
append each entry you read from the pczlog to your
continuous log file.
The information below shows exact start positions for each
piece of data. The x's denote the length of each element,
the first (x) shows start position as PCZ will write it to
the log.
e.g. Below, the file size is 47877. PCZ will always write
the file size as a 7 character string which begins at
position 21 in the line. Hence, read from pos(21) to
pos(27), trim any blanks & convert to decimal value etc...
Log extract w/char positions:
1 2 3 4 5
1234567890123456789012345678901234567890123456789012345
x xx xxxxxxxxxxxx xxxxxxx xxxxxx xxxx x
1 sz PCZ40x.ZIP 47877 @ 2400 bps @ 237 cps 0
6 7 8
6789012345678901234567890
xxxxxxxxxxxxx
errors Fri 10/5/1990
"XMODEM VARIANTS"
To receive files using any of the Xmodem variants, the
format is :
PCZ <port> <speed> rs filename - SEAlink receive
PCZ <port> <speed> rs - SEAlink Batch
receive
PCZ <port> <speed> rx filename - Xmodem receive
PCZ <port> <speed> r1 filename - Xmodem-1K receive
PCZ <port> <speed> ry filename - Ymodem receive
PCZ <port> <speed> ry - Ymodem Batch
receive
Remember the "k" options works for all of the receive modes.
Hence you can receive a file via SEAlink, have it abort on
errors, and then later RESUME the transfer using Zmodem.
To send files using any of the Xmodem variants, the format
is :
PCZ <port> <speed> sx filename - Xmodem
PCZ <port> <speed> s1 filename - Xmodem-1K
PCZ <port> <speed> sy filename - Ymodem *
PCZ <port> <speed> ss filename - SEAlink *
*Refer to Zmodem Batch sending for batch transfers via
Ymodem and SEAlink
NOTE: The bytes and cps rate reflect the actual number
of bytes sent to, or received from the IOBuffer as a
transfer progresses. It does not necessarily reflect any
specific "BLOCKSIZE". When sending, as a transfer nears
it's end, you will see the cps decline. That's because PCZ
uses buffered output vs a simple "sector size" buffer. This
will let you see actually how PCZ is progressing in the
transmission of data. In the best case "Full Streaming
Zmodem", you will see the time for actual file data; worse
case time will reflect the transmission of data headers and
block acks. It is different, but I hope everyone can
appreciate a more accurate account of what is happening
inside the powerful zmodem protocol.
** : The "Transfer Time" reflects PORT speed, (NOT MODEM)
speed!
If speed conversion is being used, FORGET the transfer time.
"ENVIRONMENT VARIABLES"
PCZ supports several environment variables which can make
setting up a comm pkg or BBS more "user friendly". These
variables are as follows and should be placed in the
autoexec.bat file as I have them shown here or modify the
setenv.bat file included to accommodate your system.
"DRIVE" refers to the letters "A".."Z"
"YOURDIR" refers to a complete directory specification.
i.e. \COMM\ARC\
"YOUR.FIL" refers to a filename with extension that you want
PCZ to use vs it's default name.
"DIRRX"
set DIRRX=drive:\yourdir\
This variable provides the ability for all your
received files to be placed in a single location. It is
very useful for bbs purposes as well as general comm program
usage. If you specify a directory spec on the command line,
it will override DIRRX. Therefore you can easily set the
variable and then just forget about it. If DIRRX isn't set
and no spec. is given on the command line, your receive file
will be created in the current active dos directory.
"PCZLOG"
set PCZLOG=DRIVE:\YOURDIR\
In the log file's case, it specifies the directory you want
your PCZ.LOG file to be kept in. If "PCZLOG" is not found
in the environment then no log file is generated.
set PCZLOG=DRIVE:\YOURDIR\YOUR.FIL
As an option to the log file name "PCZ.LOG" you may specify
your own filename in the filespec. This provides greater
flexibility with some bbs packages such as RBBS which
expects it's own naming convention to be used, and for
multitasking environments etc... If your "YOUR.FIL"
exist, it overrides filename "PCZ.LOG" in all cases.
"PCZPORT"
set PCZPORT=(1-8)
PCZ will use the port number (1-8) as the default port.
"PCZSPEED"
set PCZSPEED=(300-19200)
PCZ will use the speed (300-19200) as the default speed.
NOTE ** If you specify the PORT or SPEED on the command
line, it will override a default set by the
environment variables.
"PCZDIR"
set PCZDIR=DRIVE:\YOURDIR\
If you experience any problems with PCZ not being able to
access it's overlay file. Setting this variable will cure
the problem. DRIVE:\YOURDIR\ should point to the directory
where you have located PCZ.EXE
IMPORTANT NOTE:
NO SPACES are allowed when setting an environment variable!
i.e. {WRONG}
set PCZLOG = C:\COMM\ will not work.
That's not my fault. It is just DOS....
i.e. {ahhhh}
set PCZLOG=C:\COMM\
"PORT & IRQ"
It has seemingly become necessary, instead of interrupt
sharing, to reassign Comm. PORT addresses and use seldom
triggered IRQ lines e.g. "5 & 7" to allow multiple 'more than
two' ports on one machine. Efforts to support this trend
have been successful with PCZ. Refering back to our PCZPORT
environment variable:
set PCZPORT=1
If you have reassigned you IO card addresses etc..., you can
force PCZ to comply with your wishes.
Lets say you want to use PORT 3 @ 2E8h on irq 5. You set
PCZPORT in this manner.
set PCZPORT=3,2E8,5
| | |
| | |____ IRQ line number
| |_______ PORT address
|__________ PORT number
If you specify an invalid address or one you card isn't set for
then PCZ will simply abort during it's port validation routine.
This method should provide the support needed for those who
like to match their wits against the cpu's.
"Super_Z" (tm)
Always in search for faster from fast. Super_Z takes zmodem to
the ragged edge! If you are one of the blessed, and enjoy
relatively noise free transmission lines, you should see an
increase of 2 to 3 percent efficiency. XON/XOFF MUST be
disabled and the modem must pass these characters. You may
activate Super_Z via the command line switch "s". As is
usually the case, Super_Z can be called by the receiver or by
the sender. That is to say, that either can flag for Super_Z
and if the remote version supports Super_Z, we're doing it.
Regarding noise, a seldom thought of fact is that just because
you local transmission lines are great to one place, someone
elses local lines may be the pits. A good example is.... When
I log on to the "Corner" from Texas on a "596" extension I
rarely every get a line hit. When I use the "995" extensions I
am prone to hits anytime. A reverse situation might occur in
your particular area. It simply depends on the quality of
any of the many exchanges you might encounter. I can only hope
you are one of the lucky ones.
"NETWORK SUPPORT"
PCZ has been tested completely in a network enviroment. It
will allow multiple users to read the same file via use of
DOS's shareable attribute. It will also lock any files
that it is currently writing to. This has been tested using
Novell Netware, LAN Manager, and CBIS Network-OS.
"MENU FRONTEND"
Many fine programs exist which allow protocol engines to be
called from a communications package. In an effort to make PCZ
all the more user friendly, there is now a simple menu system
built into the program. It is controlled by the file PCZ.CFG
which is included in this zip file. Take a few moments to read
over it. It may be that it is just what you are looking for in
the way of a nice user interface. The design and layout of the
system is very simple and straight forward. You control the
options and protocols you wish to have active. PCZ.CFG comments
explain the various functions you can use. To use the menu
system simply call PCZ in the following manner.
PCZ m
Make your menu selections and complete the command line with
your filespecs.
"FOSSIL SUPPORT"
FOSSIL is an acronym for "Fido/Opus/SEAdog Standard
Interface Layer". This version of PCZ implements the use of
FOSSIL communications support. To date only one, "X00.SYS"
driver has been tested to work with PCZ. X00.SYS is a
product of Raymond Gwinn. It has proven itself in many
environments and I recommend it to you without reservation.
X00.SYS was chosen because it provides "FIFO" etc... support
for the 16550 UART chip. My internal routines support the
chip but not all it's features. Also X00.SYS provides
enhanced ability to work in a multitasking environment such
as DeskView. If DeskView is active PCZ gives idle processor
time back to the cpu for smoother operations. For a brief
description of setting up X00.SYS on your system read the
enclosed file PCZFOSSL.DOC
Making use of the driver with PCZ is as simple as adding "f"
to the command line. It should be placed after the baudrate
in all transfer types.
i.e.
PCZ 1 9600 f sz OUTFILE.ZIP
When PCZ starts, it will check for the presence of the
driver in memory. If it is resident all will proceed as
planned. If however, the driver is not in memory, PCZ will
gracefully shut down with a message stating this fact. I
gave careful thought to jumping to the internal routines,
but decided against it for a couple of reasons. In some
cases the ports may be scrambled which will surely cause a
system lockup on PCZ's part. A problem may exist with the
driver you are using, giving false info which PCZ's routines
would not like very much. A "dumb" terminal might have
charge of things and not want another routine hanging
around, etc...
"PHONE SUPPORT"
Phone support can be provided when you require it, if you
call while I am home. I umpire for our local women's
softball league on Mon. & Tues. nights. I play golf on Wed.
& Thurs. evenings. Fri. night I do what Maureen tells me to
do! Sat. is up for grabs and Sun. morn & evenings I am in
church. Please try me sometime other than those
mentioned ...... Seriously though, any night (late) will
be fine. Just try and make it before 10p.m. CST if
possible.
Note from the author:
Over the last year PCZ has received some very good reviews.
More users rely on the program for their transfers now than
I thought would ever be interested. For this I am
especially grateful and would thank each one if possible.
Gary & I will continue to grow with the needs of the BBS
community. We ask for your continued input and support,
with our assurance that your IDEAS, "cheers & jeers" are
taken with sincerity.
Thanks
Drue
History
-------
V1.01.88 -
Initial release, no known bugs. Please report any
problems to Drue Kennon.
V2.01.89 -
Extended version that contains Xmodem, Xmodem-1K,
Sealink, and Ymodem Batch in addition to Zmodem. Also
provides full file sharing for use in networking
environments.
V2.11.89 -
Fixed several reported bugs. Enabled hardware flow
control for use with MNP type modems. Enhanced port speeds
up to 19.2k, and tightened some code for more efficient
operation. Properly set errorlevel 1 in event of transfer
failure.
V3.03.90 -
Fixed a problem with SEAlink xfers not seeing the last
EOT. Batch sending for SEAlink per request. Enhanced some
screen data writes.
V3.06.90 -
Fixed a problem with SEAlink xfers created by making
the last fix. Zmodem command file name can't be fouled due
to misunderstanding the docs.
NOTE:
Unless forced into it by the users, I do not plan to
support 7 bit data transfers. Nor can I figure why any IBM
machined BBS would? Did I miss something along the way?
V3.08.90 -
Got with the program and added support for FOSSIL
driver. e.g. Gwinn's Communications Controller, X00.SYS
add "f" to cmd line params for fossil). Removed internal
support for default port and speed which caused problems for
multitaskers. Defaults are now specified through
environment variables. Added environment variable for
default receive dir. Reinstated environment variable for
pcz log file.
V3.09.90 -
By popular demand, namely "Gary", I added yet another
multitasker enhancement. Since the cpu is much faster than
the port, idle time occurs during output. This time is now
"given back" to the cpu, allowing the "other side" to
operate smoother and more efficiently.
V3.10.90 -
Some users mentioned that PCZ would wait forever in a
transfer if the carrier was lost. I couldn't dupe the
problem, but added several more checks nonetheless. The
logfile has changed so that you may specify a full filespec.
including filename for you logfile in the env. var. The
first char of each line in the file represents pass or fail.
"0" = failed xfer "1" = good xfer. Keep those cards and
letters coming!
V3.11.90 -
ArrrrG! %#^^#%%@#*$(%*#$%($$%&*( the &*&^*&^ woes of
changes really $^& my &(&^#$.
V3.12.90 -
Forget 3.11.90 ever existed! Several routines got a
face lift! You should see more efficiency with this
release. I can't begin to go through the entire chase with
you here, but I need a new can of RAID! Seems there is
never a total end with a bug problem, in programming as well
as the home! I must offer a special word of thanks to Dick
Melville from San Marino for his the help with RBBS
interface problems. Dick was an excellent BETA Buster!
And to Steve Clancy who finally helped me see there was NO
carrier on the line!
V4.00.90 - {BETA}
Version 4.00 represents a major revision change to PCZ.
As you have noticed, if you've used prior versions, there
are two PCZ files now instead of one. PCZ.EXE is the global
executable file and PCZ.OVR contains the actual protocol
functions. The decision to go with overlay functions was
made due to the fact that more Sysops are using PCZ with
their BBS's in a multitasking environment. Memory usage has
been drastically reduced. Additionally, each transfer type
function i.e. "sz,sx(1),ss,sy" & "rz,rx(1),rs,ry" is totally
self contained which simply means once the program loads and
a transfer type is called, no other overlay read is needed.
The function completes and exits. Simply put; execution time
has been enhanced.
V4.01.90 - {BETA} Dick & Steve
V4.02.90 - {BETA} Dick & Steve
V4.03.90 - {BETA} PcConnect, Dick & Steve
V4.04.90 - {BETA} PcConnect
V4.05.90 - Major revision V4.xx.90 released on the world!
V4.06.90 - Some enhancements added here include; Super_Z(tm) by
PC², offers enhanced tranfser times when used with error
correcting modems and relatively noise free transmission lines.
No limit to the number of files allowed in a batch transfer
command file. Non-standard PORT, IRQ line assignments
supported via environment setup. Frontend menu system for comm
package use. PCZ is supplied as a '.EXE' file which when
executed breaks it's code out into overlays. The largest
executable code segment will run well inside of a 64k memory segment.
Personal contact may be made by one of the following
methods.
Drue Kennon Gary J. Smith
Rural Route #2 Box 54 6122 Cedar Wood Drive
Center, TX. 75935 Columbia, MD 21044
Voice 409-598-3809
The Programmer's Corner
Home of
"PcConnect" & "PCZ"
Data/BBS: 301-596-1180 Data/BBS: 301-995-3744
Data/BBS: 301-621-4636
10 roll over lines in place
with over 1.5 gigabytes of
storage space
DSZ, ZCOMM, Professional-YAM are Copyrights of Omen
Technology Inc, all rights reserved.
X00.SYS Copyright (c) by Raymond L. Gwinn, All Rights
Reserved.
PCZ Copyright (c) by Drue Kennon, All Rights Reserved.
Super_Z(tm) is a trademark of PC²
** If you are the author of a communications package that has
zmodem implemented internally and would like to enable Super_Z
in you program for PCZ compatibility, look over SuperZ.Doc. If
you have any questions or problems then just drop me a line or
call and we will be glad to help you out.