home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
HAM Radio 3
/
hamradioversion3.0examsandprograms1992.iso
/
packet
/
pmp11
/
pmp.doc
< prev
next >
Wrap
Text File
|
1991-07-30
|
28KB
|
699 lines
PMP -- Poor Man's Packet
Version 1.1
A software TNC for the IBM PC.
by
Andrew C. Payne, N8KEI
April, 1990
(last revised July, 1991)
Disclaimer:
No guarantees or warranties of any kind are expressed
or implied. This program is supplied "AS IS" without
any warranty of any kind, either expressed or implied,
including, but not limited to, the implied warranties
of merchantability and fitness for a particular
purpose. Neither the author nor anyone else who as
been involved in the creation, production, or delivery
of this program shall be liable for any direct,
indirect, or consequential or incidental damages
arising out of the use or inability to use this
program.
Copyright (c) 1990, 1991 Andrew C. Payne
All rights reserved.
TABLE OF CONTENTS
=================
Introduction . . . . . . . . . . . . . . . . . . . . . . . . 3
Getting Started . . . . . . . . . . . . . . . . . . . . . . 5
Hardware Requirements . . . . . . . . . . . . . . . . . 5
Installing, Configuring, and Running PMP . . . . . . . 5
Configuration Commands . . . . . . . . . . . . . . . . 5
Using PMP . . . . . . . . . . . . . . . . . . . . . . . . . 10
Keyboard Commands . . . . . . . . . . . . . . . . . . . 10
Modem Interface . . . . . . . . . . . . . . . . . . . . . . 12
PMPTEST . . . . . . . . . . . . . . . . . . . . . . . . . . 13
Commands . . . . . . . . . . . . . . . . . . . . . . . 13
Getting your modem to work with PMP . . . . . . . . . . 14
Introduction
============
What is PMP?
PMP is a packet radio program that uses the software
approach. In a nutshell, this means that the things that
are normally done with hardware in a conventional TNC
(Terminal Node Controller) are instead done with software in
your computer. The advantage of this method is that most of
the hardware of a normal TNC is no longer required. In
simplifying the hardware, you lose some of the flexibility
of a TNC.
Who is PMP intended for?
PMP is intended for anyone with an IBM PC type computer who
wants to get into packet very inexpensively. PMP is perfect
for someone who wants to get his/her feet wet before sinking
a lot of money into equipment. PMP is also ideal for the
scanner listener who wants to monitor packet but doesn't
want to spend another scanner's worth of money. Because of
the minimal hardware required, PMP is also good for portable
setups. Modems can be constructed to actually fit inside
VHF/UHF radios, eliminating the need for a separate TNC or
modem box.
What do I need to run PMP?
PMP requires an IBM PC/AT/386/486 or compatible with at
least 256K of memory and a parallel printer port (many video
cards have a parallel port built in). You also need a Bell
202 type modem, VHF/UHF radio, and cables to connect
everything up. Finally, you need the PMP software.
What are the advantages of PMP over a "regular" TNC?
The advantages of PMP are basically those outlined above:
minimal hardware and low price. The only hardware required
is a 1200 baud Bell 202 modem and cables to connect to the
computer and radio. We have a single-chip design that fits
on a 2 inch square board and costs less than $40. Also,
this crystal controlled modem is a much better modem than
those in many of the TNCs.
What do I lose by using PMP instead of a TNC?
PMP doesn't have all of the flexibility of a TNC. It runs
on PCs ONLY. Also, since PMP is a program on your PC, you
can't leave PMP on (to act as a digipeater, for example)
without tying up your entire computer. Also, all of the
packet software for the PC designed to work with TNCs (such
as YAPP, the W0RLI BBS, and KA9Q's TCP/IP software) will not
work with PMP.
How was PMP developed?
DIGICOM>64 for the Commodore 64 (which uses the same
software approach) has been around for a while. With the
popularity of DIGICOM>64 and the growing popularity of
inexpensive IBM PC clones, we asked ourselves: "Has anyone
done a DIGICOM>64-like program for the PC?" Some queries
about such a program resulted in answers like: "Nope, never
heard of such a thing. Sure would be a good idea though."
At that point, we decided to start the PMP project. Kevin,
WB2EMS, concentrated on the hardware design and Andy, N8KEI,
developed the software. Within a few weeks, the first
prototype modem was built, and two weeks after that PMP
sending and receiving its first packets.
I have some more questions. How can I get in touch with you?
For software and general questions, problems, suggestions,
or comments, write to:
Andrew C. Payne, N8KEI
Route 3, Box 78-Q
Berkeley Springs, WV 25411
Or, if you have access to Internet e-mail, write to:
payne@tcgould.tn.cornell.edu
For hardware questions, problems, suggestions, or comments
write to:
Kevin Feeney, WB2EMS
468 Hines Road
Ithaca, NY 14850
Also, write to Kevin for kit availability. Currently (July,
1991) we have TCM3105 modem chips, PC boards, and the
miscellaneous parts needed to make a complete modem.
Getting Started
===============
Hardware Requirements
---------------------
The following hardware is required to run PMP:
- an IBM PC/XT/AT/386/486 or compatible with at least 256K RAM
and a parallel printer port
- a Bell 202 type 1200 baud modem
- A VHF/UHF radio
- cables to connect the printer port to the modem and the
modem to the radio
Installing, Configuring, and Running PMP
----------------------------------------
Installing PMP is very straightforward: only two files are
required, one is optional:
PMP.EXE The PMP program
PMP.CFG The Configuration file
PMPTEST.EXE (optional) An alignment/test program
To install PMP on your system, copy these files to a floppy
disk or a subdirectory on your hard disk. To start, just type
'PMP' from the DOS prompt and you should see the opening title
screen in a few seconds.
The configuration file, PMP.CFG, contains options and
parameters specific to your packet station: your callsign,
timing parameters, and other items described in detail below.
The PMP.CFG file is a an ASCII text file which can be
modified with any standard text editor (such EDLIN supplied with
DOS). Lines that begin with a pound sign (#) are comments and
are ignored. All other lines are configuration commands for PMP,
listed below:
Configuration Commands
----------------------
mycall <callsign>
Sets your callsign in the form of N8KEI-XX, where XX is the
SubStation Id (SSID). The SSID is used to differentiate
between multiple stations with the same callsign (e.g.
N8KEI, N8KEI-1, N8KEI-2, etc). The SSID ranges from 0 to
15, and 'N8KEI' and 'N8KEI-0' are equivalent. Your callsign
MUST be correct before transmitting.
txdelay <milliseconds>
Sets the transmitter delay. This is the time PMP waits
after keying the transmitter and before sending data. Slow
transmitters (synthesized rigs, rigs with relays in the
transmit path, etc) will require longer to stabilize after
the transmit line is keyed. These slow rigs need a larger
'txdelay'.
retry <#>
Number of retries attempted before dropping a connection.
If you are on a busy channel, you may want to increase this
value from its default value (10) to prevent losing
connections.
frack <#>
Number of seconds used to compute the round trip time before
resending packet. If you are on a busy channel, you may
want to increase this value.
pthresh <#>
Sets I-packet size threshold. This is an optimization that
speeds up the AX.25 protocol for small packets. I-packets
with data fields of smaller than 'pthresh' are resent (with
no polling) when no ACK is received in the timeout period.
Longer packets are polled a la standard AX.25 Level 2.
check <#>
Specifies the time-out value (in seconds) for the link keep-
alive timer. After this many seconds of inactivity, PMP
will poll the remote node.
maxframe <#>
Specifies the maximum number of frames allowed to be
outstanding (e.g. un-acknowledged). This parameter must be
between 1 and 7. On busy channels, a lower value is better.
paclen <#>
Specifies the maximum packet length in bytes. This
parameter must be between 1 and 256.
normal <#>
bright <#>
inverse <#>
status <#>
message <#>
These commands set the attributes (colors) for normal text,
bright text, inverse text, and the status line. If not
specified, the attributes default to the attributes for a
monochrome video system. An attribute consists of a code
for a background color and a code for a foreground color:
Color Foreground Background
Black 0 0
Blue 1 16
Green 2 32
Cyan 3 48
Red 4 64
Magenta 5 80
Brown 6 96
Lightgray 7 112
Darkgray 8 -
Lightblue 9 -
Lightgreen 10 -
Lightcyan 11 -
Lightred 12 -
Lightmagenta 13 -
Yellow 14 -
White 15 -
To form the color attribute, just add the code for the
foreground color to the code for the background color. Note that
not all colors can be backgrounds. For example, for a white on
red status line (attribute 15+64=79), use the configuration
command:
status 79
sound <#>
Enables or disables sound. If <#> is non-zero, sound is
enabled. If <#> is zero, sound is disabled.
ctext <string>
Specifies the welcome message to be sent when other stations
connect to you. If no CTEXT is specified in the .CFG file,
no welcome message is sent during incoming connects.
Multiple CTEXT lines can be specified: all will be sent
during incoming connects in the order they appear in the
.CFG file.
capture <#>
Specifies the size (in bytes) of the capture memory buffer.
Capture data is held in this buffer, then flushed to disk
when the buffer fills. Smaller capture buffers will require
more disk writes. On a floppy based systems, a large value
is recommended to minimizes disk writes. This value should
always be a multiple of 512 (the MS-DOS sector size).
define <key> <definition>
Defines a string associated with a function key. <key> is
one of the function keys F1 through F8 (F9 and F10 are
currently used for debug functions). <definition> is any
string. Control characters may be imbedded in the
<definition> string with the '^' character (e.g. '^M' is
interpreted as a carriage return). ALT key sequences may be
imbedded with the '~' character (e.g. '~c' is interpreted as
ALT-C, the connect command).
beacon <#>
Specifies the beaconing interval, in seconds. Beacons (see
'btext', below) will be sent at the specified interval. A
'0' value disables beaconing.
btext <string>
Specifies the text sent during beacons.
baddr <string>
Specifies the address (and path) to which beacons are sent.
Digipeaters are allowed (e.g. "QST VIA W2CXM-1").
autowrap <#>
Specifies the column number at which autowrap is active.
Autowrap is a feature similar to most word processors where
it is not necessary for the user to hit return after typing
beyond a certain column; the line is automatically wrapped.
A '0' value disables autowrap.
pttport <port#> <bit> <level>
txport <port#> <bit>
cdport <port#> <bit> <level>
rxport <port#> <bit>
init <port#> <value>
These configuration commands specify the ports and bits that
PMP uses for the modem interface. The standard
configuration file assumes values appropriate for the first
parallel port, LPT1. You should not have to change these
commands unless you are using PMP with LPT2 or are
experimenting with a different modem interface. To
reconfigure PMP for LPT2:, use these configuration commands:
pttport 0x278 2 0
txport 0x278 1
cdport 0x279 0x80 0
rxport 0x279 8
<port#> specifies the port number in the PC's I/O space.
<bit> is a bit mask to specify the particular bit of the
port (e.g. 1 for bit 0, 2 for bit 1, 4 for bit 2, etc).
<level> specifies the active level for the signal: 1 for
active high, 0 for active low. 'pttport' (output) defines
the port PMP uses to make the radio transmit. 'cdport'
(input) defines the carrier detect line. 'txdata' (output)
and 'rxdata' (input) define the output and input data lines.
Note that no active levels are specified for these signals:
the data lines are edge-sensitive, not level-sensitive.
The 'init' command specifies any port initializations (e.g.
to enable mini-modems powered from spare output bits). At
start up, PMP writes the specified <value> to the specified
<port#>.
Sample PMP.CFG file:
#
# This is a sample PMP.CFG file
#
mycall N8KEI-2
txdelay 300
retry 12
frack 3
pthresh 15
sound 1
ctext Hello from Andy in Berkeley Springs, WV.
ctext If I'm not around, please leave a message.
btext N8KEI, QTH Berkeley Springs, WV
baddr QST VIA W2CXM-1
beacon 300
define f1 ~cwb2ems-1^m
#
# End of sample file
#
All options in PMP.CFG default to reasonable values if they
are not specified in the file. However, a MYCALL parameter must
always be present to set your callsign correctly.
Using PMP
=========
After starting PMP (by typing 'PMP' at the DOS prompt), you
should see an opening title screen (with current version number).
Press any key to advance from this screen to the main screen.
The main screen is divided into three areas. Most of the
upper part of the screen is the incoming data area; incoming
data and packets are displayed here. The second to last line on
the screen is the data entry line; everything you type for
transmission is entered here. The bottom line of the screen is
the highlighted status line, which has the following items (from
left to right):
- The version number
- Your callsign (make sure this is correct before
transmitting)
- The current connect path (blank if currently not connected)
- Outstanding packet bar, there will be an asterisk (*) on
this bar for each outstanding packet (a packet that has been
sent but not acknowledged by the other station) This bar
will be blank if currently not connected.
- TX/RX status lights. This status indicators will light when
PMP is transmitting or receiving packets.
Keyboard Commands
-----------------
Most commands in PMP are ALT key combinations (formed by
holding down the ALT key and some other key), listed below:
ALT-C Connect to another station. You will be prompted for
the connect station and path in the form:
WB2EMS VIA W2CXM-1,WB2TVB
Press ESC to abort the connect attempt.
ALT-D Starts a disconnection. If the remote node is not
responding to the disconnect request, press ALT-D again
to force a disconnect.
ALT-B Sends a beacon packet (with the text specified in the
'btext' parameter in the configuration file).
ALT-H Shows a help screen, listing all keyboard commands.
ALT-J Screen snapshot. Writes the current screen to a text
file.
ALT-N Nodes recently heard. Nodes are listed starting with
the most recently heard. Information listed for each
node includes the callsign of the node, the time last
heard, the number of packets heard, and the protocol
types used by the node.
ALT-P Pause (hold) the screen. After pausing, press any key
to resume.
ALT-S Shows the status of PMP: the number of packets sent
and received, error counts, number of bytes free, etc.
ALT-X Exits to DOS.
ALT-U Text file upload. You will be prompted for the name of
an ASCII file to send across a currently connected
link.
ALT-L Toggle text file capture/download. You will be
prompted for a file to log all received data. "Cap"
will appear on the status line, indicating that a
capture is in progress. Press ALT-L again to stop
capturing and close the file.
UP & DOWN The [Up] and [Down] arrows can be used to move forward
and backward to review data that has scrolled off the
top of the screen. [PgUp] and [PgDn] will page through
the scrollback buffer a screenfull at a time.
F1-F4 User defined function keys. Sends the string defined
for the key (see 'define' in the configuration
commands).
Modem Interface
===============
PMP interfaces to the external modem (and radio) through the
PC's parallel port. PMP uses two output pins and two input pins
which are connected as follows:
Parallel
Port
Pin Signal Dir. Description
-----------------------------------------
2 TXD Out Transmitted data.
3 PTT Out Push-to-talk, active-high. Keys the
radio to transmit.
11 CD In Carrier detect, active-high. Goes
active when a packet signal is detected.
15 RXD In Receive data.
25 Gnd Gnd Signal ground.
The PMPTEST utility is very useful for testing the parallel
port and modem interface (see next section for more information).
On most PCs, the parallel port is a female DB-25 type
connector and uses standard TTL levels.
We have developed a small, inexpensive, two-chip modem that
works well with PMP. For details, see the August, 1991 issue of
73 Magazine (pages 8-14).
PMPTEST Utility
===============
PMPTEST is a utility program that aids in testing the
parallel port and modem interface (see MODEM INTERFACE). PMPTEST
is started by typing 'PMPTEST' from the DOS prompt. At present
PMPTEST works only with modems interfaced to LPT1:.
Across the bottom of PMPTEST's screen are four indicators:
Carrier Detect (CD) Indicates the current input level of the
Carrier Detect line.
Receive Data (RXD) Indicates the current input level of the
Receive Data line.
Transmit Data (TXD) Indicates the current output level of
the Transmit Data line.
Push To Talk (PTT) Indicates the current output level of
the Push To Talk line.
Commands
--------
PMPTEST has several commands:
[ESC] Exits program.
[SPACE] Toggles transmit (PTT) line. The current transmit
status will be indicated with the PTT indicator.
[F2] On-air modem alignment mode. (see below)
[F3] Toggle transmit data level. The current transmit level
is indicated with the TXD indicator.
[F5] Transmits a 600hz test signal. PTT will be set high,
and the transmit data will be toggled at 600hz. Any
key will cancel the test.
[F6] Loopback alignment (currently not implemented).
Getting your modem to work with PMP
-----------------------------------
This section describes some simple tests using PMPTEST.
Carrier Detect
Adjust your radio and modem so that the Carrier Detect
accurately reflects channel activity. The CD status light
should indicate channel activity.
Receive Data
The RD indicator should flicker (on and off) when data is
being received.
PTT
Use the [SPACE] bar to toggle the transmit on and off. Your
radio should start transmitting when PTT goes high and stop
transmitting when PTT goes low.
Transmit Data
Use the [SPACE] bar to toggle your radio into transmit mode
and use the [F2] key to toggle the transmit data. Your
radio should transmit a high or low tone, depending on the
transmit data level.
Receive Alignment
Many modems (including our design) have a receive section
that must be properly aligned. Tune your radio to a busy
packet channel, and make sure that the Carrier Detect and
Receive Data lines are functioning (as described above).
Use [F1] to enter the alignment mode. As each packet is
received, it's timing will be analyzed and two error
percentages will be displayed on the screen. Adjust your
modem so that these two numbers are as close to zero as
possible: between -5% and +5% is ideal. Use long packets
to make your adjustments; short packets or noise bursts will
give inaccurate error readings.