                                    PSK31

                     for the TMS320C50 DSP Starter's Kit

                            Andrew Senior, G0TJZ

                          Release 2, 18-April-1998

PLEASE READ THROUGH THIS DOCUMENT *FULLY* BEFORE USING THE SYSTEM

1. Introduction

This system is an implementation of the PSK31 mode for the
TMS320C50 DSP starter's kit. It requires a VGA-compatible
display (640x480 resolution, preferably colour).

2. Setting up

The full PSK31 package should comprise the following files in
addition to this one:

(Files marked * are the only ones which are essential to run
PSK31)

README.TXT - introductory notes, please read!
PSK31.ASM - the TMS320C50 assembly language source for PSK31.DSK
SBLPF1.INC - include file for PSK31.ASM
ZIPSK31.INC - as SB64-2.INC
SINTAB.INC - as SB64-2.INC
PSK31.DSK (*) - the TMS320C50 object code
PSK31.C - the C language source for PSK31.EXE
PSK31.INI (*) - the configuration file for PSK31.EXE
PSK31.EXE (*) - the PC driver program for PSK31.DSK
PSK31X.COD (*) - the variable length code file for PSK31.EXE

All the files marked with * should be kept in the same directory
or the program will not work.

2.1 The configuration file PSK31.INI

The first stage of setting up the system is to edit PSK31.INI to
customise it to your needs. The file is a plain text file and
should be edited with a normal text editor like 'EDIT' supplied
with DOS. The file consists of a series of lines, or
"statements", which have the general format:

PARAMETER=VALUE

Note that there is no space before or after the = sign. The
statements may be written in any combination of upper case and
lower case. The program forces them all to upper case when the
file is read. The order of the statements is not important.

The example file supplied looks like this:

Port=1
Call="G0TJZ"
LoadBaud=57600
Freq=1150
LSB=0
Simplex=1
ShowAmpl=1

Each statement is now explained in detail:

2.1.1 PORT

PORT determines which COM port will be used to communicate with
the DSK. The value after the = sign must be a number between 1
and 4 inclusive, representing COM1 to COM4. For example, if you
use COM2, you should change the statement to read:

PORT=2

If you specify a number outside the valid range, the program
will stop and display an error message. If there is no PORT
statement in the file, the program will use COM1 by default. The
PORT statement assumes the "standard" base addresses and IRQs
for COM1-4. If you have a non-standard COM port and you know
what base address and IRQ it uses, you can use the BASE and IRQ
statements (see below) instead to allow PSK31 to work on the
port.

2.1.2 CALL

CALL specifies the user's callsign. This is needed for the
auto-CQ and Morse ID features. The callsign may contain letters,
numbers, spaces and the '/' character. The callsign must be
enclosed in " marks. For example, if your callsign is ZZ/XX9YYY,
change the statement to read:

Call="ZZ/XX9YYY"

If there is no CALL statement in the file, the callsign will be
"NOCALL". The maximum length of the callsign is 19 characters.

2.1.3 FREQ

FREQ defines the default audio tone frequency (centre frequency)
to be used by the system for sending and receiving signals. The
default is 1000 Hz, which will be used if there is no FREQ
statement in the file. No checking is performed to make sure the
value you specify is within a sensible range. A sensible range,
defined by the DSK's analogue filter characteristics is about
300 to 2500 Hz.

If you want to change to a centre frequency of 800 Hz, change
the statement to read:

Freq=800

2.1.4 DTRINVERT

DTRINVERT controls the polarity of the DTR line which is used to
reset the DSK before loading the program. The value after the =
sign can be 0 or 1. When it is 0, the program deasserts DTR to
reset the DSK. When it is 1, the program asserts DTR to reset
the DSK. I don't know if anyone needs to set DTRINVERT=1, but
I've seen this option in other DSK software so I've provided it
in this program should anyone need it. Normally the following
statement will work:

DTRInvert=0

If you don't give a DTRINVERT statement, the default setting is
0.

2.1.5 SIMPLEX

SIMPLEX determines whether the program starts up in simplex or
full-duplex mode. In simplex mode, transmitted text is looped
back to the receive side and appears in the receive window as it
is sent on-air. You will probably want simplex mode enabled, so
use the statement:

Simplex=1

If you don't give an SIMPLEX statement, the default setting is 0
(full-duplex mode).

2.1.6 LOADBAUD

LOADBAUD sets the baud rate to be used to load the program into
the DSK when you start PSK31.EXE. To save loading time, you
should set this as high as possible (the limit is 57600). If you
encounter problems with the loading when the program starts, try
setting LOADBAUD to a lower value. The lowest value you can use
is 2400. If you want to set the load baudrate to 9600, use the
statement:

LoadBaud=9600

If you don't give a LOADBAUD statement, the default is 57600. I
have used this speed on an 8 MHz XT without problem.

2.1.7 LSB

LSB affects only the QPSK mode. If you use LSB rather than USB
for operating PSK31, you must set LSB=1 otherwise your QPSK will
be "upside-down" compared to that from people using USB (and
theirs will look upside-down to you). The default is 0 (USB
mode).

2.1.8 BASE

If you want to use PSK31 on a serial port with a non-standard
base address, use BASE to specify the address to use. For
example, if your port has a base address of 400 (hexadecimal)
use:

Base=400

DON'T use both BASE and PORT in the same INI file or you might
get undesirable results!

2.1.9 IRQ

Just as BASE can set a non-standard base address for a serial
port, IRQ can set a non-standard IRQ too. If your port uses IRQ
5, use:

IRQ=5

DON'T use both IRQ and PORT in the same INI file or you might
get undesirable results. You can safely use BASE and IRQ
together.

2.1.10 RTSINVERT

RTSINVERT does for the serial port RTS line what DTRINVERT does
for the DTR line. RTS is used to control the transceiver's PTT.
Depending on how (and if) you interface RTS to PTT, you might
need to invert the sense of the RTS line by using:

RTSInvert=1

The default is 0 (no inversion).

2.1.11 SHOWAMPL

SHOWAMPL determines whether the tuning display shows the signal
amplitude by the length of the line. The options are 1 (on) and
0 (off). If you are only feeding a very low level of audio to
the DSK, you might want to turn the amplitude display off or
else you might find the display hard to read because the line
will be very short! In this case use the statement:

ShowAmpl=0

*** IMPORTANT ***
If you have this problem, I recommend you use a small audio
amplifier to boost the signal level to +/- 3V rather than
do without the amplitude display! You will get better
performance from the software if you feed the maximum signal
level to the DSK, though you must also be careful not to
overdrive the DSK!
*****************

Once you have edited and saved PSK31.INI, you can now begin
testing the program.

3. Testing

3.1 Starting up.

Start the program PSK31.EXE by giving the command:

PSK31

A message giving the version number and date of the program will
appear, followed by the message "Loading..." and a number which
counts up as the DSK program is loaded. If there is a problem
with loading the DSK, you might see an error message. Here are
some things you can try if you see various error messages:

"Couldn't reset and initialise DSK"

The DSK might not be connected to the PC or powered on, you
might have set the wrong serial port (PORT, BASE or IRQ in
PSK31.INI), the load baudrate might be too high (LOADBAUD in
PSK31.INI) or you may need to change the sense of the DTR line
(DTRINVERT in PSK31.INI).

"Communications failure with DSK"

The load baudrate may be too high, try lowering the value in the
LOADBAUD statement in PSK31.INI.

"Load file does not exist"

The file PSK31.DSK couldn't be found in the same directory as
PSK31.EXE. Make sure you haven't put it somewhere else or
deleted it by mistake.

"Unrecognised code in DSK file" or "No entry point specified in
DSK file"

There is something wrong with the file PSK31.DSK. It may have
become corrupted somehow. Try re-extracting it from the original
ZIP file, or get a new copy of the ZIP file. You could also try
re-assembling it by running DSK5A on the file PSK31.ASM.

If there were problems reading the PSK31.INI file, you may
receive other messages and be returned to the DOS prompt. If
this happens, check the sections above to make sure you haven't
made a mistake in editing the file.

If all goes well, you will see the operating screen...

3.2 The Operating Screen

The operating screen is divided into three areas. The top area,
the largest, is the receive window and shows traffic received by
the program off-air. The middle window, the smallest, is the
transmit window and shows traffic sent by you. Both these
windows will scroll vertically when the print position reaches
the bottom line.

The bottom window is the tuning and status display. The tuning
display is the orange-brown circle in the centre with a
flickering red or green line inside. The status window is
arranged so that transmit-related information is shown to the
left and receive-related information to the right. There are
some exceptions to this rule!

The rest of the status window shows the transmit and receive
centre frequencies in Hz. Initially, both are set to 1000 Hz, or
whatever frequency you specified in the FREQ statement in
PSK31.INI. The status window also shows the function of the
F-keys and the current status of some options.

The functions of the F-keys are as follows.

F1: This controls whether the transmit centre frequency is
locked to the receive centre frequency (Track) or is fixed
(Fix). The current status is shown after the 'F1' legend.

F2: This is used to end a transmission.

F3: This switches out of transmit mode and sends an on/off keyed
Morse identification according to the callsign in the CALL
statement in PSK31.INI. The keying is at just less than 20 WPM.

F4: This toggles between the use of BPSK or QPSK mode.

F5: This turns on the transmitter (if not already on) and sends
a CQ message using the callsign specified in PSK31.INI followed
by a Morse ID and then goes back to receive.

F6: Send a file. You will be prompted for the file name in the
transmit data window. Note that the program stops receiving data
when you are being prompted for the file name.

F7: Capture incoming data to file. This toggles the storing of
incoming data to a file called CAPTURE.TXT.

F9: Switches the squelch (formerly known as "DCD") between
automatic mode and off. (See later).

F10: Enables/disables the receiver AFC. 'on' or 'off' indicates
the current status.

In addition to these, the following keys perform special
functions:

Esc: Stop the program and returns to DOS.

Up-arrow (Cursor up): Increase the receive frequency by 1 Hz.

Down-arrow (Cursor down): Decrease the receive frequency by 1 Hz.

Pressing Ctrl with the up and down arrows tunes in 10 Hz steps
instead.

Shift+F1: Enter offset tuning mode. This is only useful if your
transceiver has a frequency offset between transmit and receive.

3.3 Analogue testing

(a) Connect a speaker or earpiece and/or an oscilloscope to the
DSK's analogue output.

(b) Press Enter to turn on the audio output. You should hear a
warbling tone in the speaker or earpiece and if you have an
oscilloscope attached, you should see a signal which looks like
a two-tone test signal with a period of 32 milliseconds. The
amplitude of the signal should be 3 V, unless the speaker or
earpiece loads the output heavily and reduces this voltage.

This warbling tone is the idle signal of the PSK31 system.

(c) Press the F2 key. The warbling tone will become a constant
tone briefly and then shut off completely.

You should now try an audio loopback check to make sure the
system can send and receive correctly:

(d) Connect a screened lead between the analogue input and
output of the DSK.

(e) Make sure you are in full-duplex mode. You will need to exit
the program and put 'Simplex=0' in PSK31.INI to do this. You
cannot perform the loopback test in simplex mode.

(f) Make sure the words "Tx Fix" are displayed after the "F1:"
legend. If "Tx Track" is displayed instead, press the F1 key to
switch it back to "Tx Fix". You cannot test the tuning display
if track mode is enabled.

(g) Press Enter to turn on the audio output. Providing the
receive and transmit centre frequencies are still the same, you
should now see a vertical green line from the centre of the
tuning display down to the bottom.

(h) Now type a few letters, numbers or spaces. You should see
the line on the tuning display alternate between pointing
vertically down and vertically up. More importantly, you should
also see the characters you've typed appearing in the receive
window as well as the transmit window.

(i) Try increasing the receive centre frequency by a few Hz by
using the uparrow key. You should see the line on the tuning
display move clockwise. If you now use the down-arrow key, you
should be able to move the line back to the vertically down
position and if you keep pressing it, it will move anticlockwise
beyond this point. This illustrates the use of the tuning
display.

(j) Press the F2 key to turn off the audio output.

This completes the loopback testing.

4. Using the system with a transceiver.

THIS SECTION IS IMPORTANT! PLEASE READ IT CAREFULLY TO AVOID
PROBLEMS WHICH MIGHT LEAD TO YOU TRANSMITTING A DISTORTED SIGNAL!

Screened leads should be used to make connections between the
transceiver and the DSK to minimise pickup of noise. I recommend
that you use an auxiliary audio output on the transceiver to
supply received audio to the DSK so that you can continue to
listen to the audio through a speaker, rather than use a
headphones socket which will probably mute any speaker. However,
most of these audio outputs are low-level, typically a few
hundred mV and should be amplified before feeding them to the
DSK to obtain best results. The DSK expects a signal input of 6
V peak-to-peak. I use a 741 op-amp circuit to boost the signal
level of the transceiver's auxiliary output. Such a circuit is
not difficult to construct, requiring only a few additional
components. Other op-amps could be used as desired.

*** IMPORTANT ***
If you don't amplify the audio, it's quite likely that you won't
be able to see very much on the tuning display and this will
make tuning difficult! You can turn off the amplitude information
on the tuning display if you really must, but I strongly advise
you to leave it on and feed enough signal to the DSK. This will
give the best peformance and makes tuning in easier.
*****************

If you wish to use the DSK's auxiliary audio input connection
for some reason, you can do so by editing the DSP source file
PSK31.ASM. Near the top of the file you will find the lines:

AIC_CMD .set    19h
;AIC_CMD .set    1Dh             ; Use AUX in

To use the auxiliary input instead, change these lines to read:

;AIC_CMD .set    19h
AIC_CMD .set    1Dh             ; Use AUX in

Then you must reassemble the DSK file by giving the command:

DSK5A PSK31

(assuming DSK5A.EXE is in your PATH)

***IMPORTANT*** Conversely, the audio output provided by the DSK
is far too high for modern transceivers. As already described,
the output is 3 V peak and most transmitters will only require a
few mV to give full power output since they are intended for use
with a microphone. Ideally, a matched attenuator network should
be used to reduce the level, but I use a simple potential
divider arrangement:

From DSK >-
            |
            -
           | | 100 K
            -
            |
            -  200 ohm
           | |<-------> to tx input
            -
            |
         -------- GND

The 200 ohm potentiometer is a multi-turn preset unit which
allows fine tuning of the level. The values of the components
are not critical, a 1 K potentiometer could be used for
convenience.

If you experience problems with hum or noises related to
activity on the RS232 cable appearing on your transmission, you
might require an isolation transformer in the transmit audio
lead (and possibly the receive audio lead too).

Another possible problem is RF feedback caused by your
transmitted signal getting back into the audio input to your
transceiver. To guard against this, make sure you use screened
cables. If you suspect an RF feedback problem, try winding the
audio leads on ferrite rings.

PSK31 supports control of the transmitter's PTT line via the
RS232 RTS line. In order to switch PTT on, this line goes high
(+12V). To switch it off, it goes low (-12V). Since most
transmitters require their PTT line to be connected to ground to
switch the transmitter on, you need some way of adapting the RTS
line to do this. The simplest way is to use a transistor switch:


                           C
           -----        B |/---------< PTT
RTS >------|   |-----o----|  BC107
           -----     |    |\>
              4K7    -    E  |
                     ^ D1    |
                     |       |
---------------------o-------o------< GND

Where D1 is a silicon diode such as a 1N4148.

Or if you prefer, you can use an opto-isolator with an
open-collector output, provided that the phototransistor will
handle the PTT current. If your transmitter does its PTT a
different way, you will have to design the circuit appropriately.

Note that if you want the RTS line to give -12V to switch PTT
on, put the statement RTSINVERT=1 in your PSK31.INI file.

I have used VOX control for transmit/receive switching and this
works very well. If you don't have VOX control, you will have to
resort to manual PTT. In this case, you will need to watch the
"PTT ON" message in the status window to show you when to turn
the PTT on and off.

5. Operating on the air.

When using PSK31, you should use USB mode unless for whatever
reason you need to use LSB. If you do need to use LSB, remember
to put LSB=1 in the INI file or you won't be able to work USB
stations on QPSK!

The following assumes you are using BPSK.

5.1.1 Tuning in

The tuning display shows two things. The length of the line is
the strength of the signal on a logarithmic scale and the
direction in which the line points indicates the tuning of the
signal.

Unless your transceiver already tunes in steps much less than 10
Hz (e.g. 1 Hz), you will have to get as close as you can with
the transceiver and then "fill in the gaps" using the tuning
control in the program. If you hear a signal which is idling,
you are aiming to get the line on the tuning display in the
vertically DOWN position. If the signal is sending traffic, the
line should be alternating between the vertically down and up
positions. In this case, you must be very careful: it is
possible to tune in with the signal "upside down" and although
the display looks correct, you are off tune by +/- 15.625 Hz. If
this is the case, you will not see the traffic being printed
correctly.

It is also possible to tune in incorrectly on an idling signal.
In this case you will be off tune by +/- 31.25 Hz, even though
you will see the line pointing vertically down. In this case,
when the signal sends data, the display will break up into
rubbish and no valid text will be printed, even on strong
signals. This will give you a clear indication to try tuning 31
Hz higher or lower.

You can practice using the tuning display on an unmodulated
carrier. Find a suitable, clear, stable carrier, perhaps from a
broadcast station. Tune it in to give as close to the correct
audio tone frequency as possible. You should see a steady line
somewhere on the tuning display. Practice using the cursor keys
to move the line around, just as in part (i) of Section 3.3
above. You have the carrier on-tune when the line on the display
points vertically UPWARDS. As you tune away to either side, the
line rotates and gets shorter as you move off frequency and the
signal goes outside the receiver passband. If you need to QSY
quickly, you can press Ctrl with the arrow keys to tune in 10 Hz
steps.

5.1.2 Mode (BPSK or QPSK)

Also, be sure to check that you are using the right mode (BPSK
or QPSK): even if you are perfectly tuned, you'll print rubbish
if you're listening on BPSK when the transmission is in QPSK!
Use F4 to toggle between modes systems. You can recognise the
mode by the appearance of the tuning display. On BPSK, the
tuning display shows a line which alternates between vertically
up and down. On QPSK, the line can also point horizontally left
or right, giving a cross pattern.

5.1.3 Squelch

PSK31 incorporates a "squelch" system (Formerly known as "DCD").
This is intended to prevent rubbish text being printed when
there is no valid signal tuned in. If the squelch is in "Auto"
mode (indicated by the F9 key legend), the squelch will open
when the program detects a signal and drop out at the end of a
transmission or on noise. If the squelch is "Off" then the
squelch is open all the time.

NB: NO TEXT WILL BE PRINTED UNLESS THE SQUELCH IS OPEN!!

The current state of the squelch is shown by the colour of the
line in the tuning display. If the line is RED, the squelch is
CLOSED. If the line is green, the squelch is OPEN.

On weak signals, the squelch might keep closing. Usually this
shouldn't matter as you wouldn't print any text that made sense
anyway, but if you want to be absolutely sure not to miss
anything, turn the squelch off with F9.

If you use a monochrome display and you can't tell the
difference (or indeed if you are red/green colour blind) please
try to let me know and I will try a different combination of
colours for future programs.

Once you have tuned into a station, make sure you are going to
reply on the right frequency. To do this, press the F1 key so
that the words "Tx Track" appear after the 'F1' legend in the
status window. This makes the transmit frequency follow the
receive frequency. In some cases you might want to keep your
transmit frequency fixed. You can do this by pressing F1 so that
the words "Tx Fix" appears after the 'F1' legend. F1 toggles
between the "Fix" and "Track" modes. When the program is
started, it is in "Track" mode.

5.1.4 Automatic Frequency Control

PSK31 features an automatic frequency control to keep the system
tuned in to a signal once you've got close to it by hand. This
should enable "hands free" tracking of drift. You can see the
AFC working by watching the frequency readout in the status
window which will change as any drift is tracked. You can
enable/disable AFC with the F10 key.

Also, when the squelch opens, the system attempts to tune in the
signal correctly straight-away. Sometimes this can go wrong and
make it more difficult to tune in a signal! If you are having
problems tuning in because of this, try turning the AFC off
 - press F10. Turn it back on again once you are tuned in.
Turning off the squelch also disables this feature because the
squelch will always be open.

5.1.5. File capture

If you want to capture the incoming data to disk, press the F7
key. The status window will show 'Capture on' after the 'F7'
legend. If this doesn't change (i.e. 'Capture off' is still
displayed), then the program couldn't open or create the
CAPTURE.TXT file which is used to store the received data.
Pressing F7 again will turn capture off again.

5.2. Transmitting.

To start transmitting, simply start typing! The transmitter will
automatically turn on, provided you have wired up a PTT
interface or are using VOX.

Press F2 to switch from transmit back to receive. The
transmitter may not switch off immediately. This is because the
type-ahead buffer may still be full and text is still being
sent. See the note in section 4 above if you are using manual
PTT control.

Alternatively, you can press F3 to switch the transmitter off
and just before doing so (after the transmit buffer has emptied
of characters) an on/off keyed Morse identification will be sent
according to the callsign in the CALL statement in PSK31.INI.

The system is full duplex, which allows the loopback test to be
carried out and will also allow full duplex operation with the
appropriate radio equipment, provided you select full-duplex
mode by putting "Simplex=0" in the INI file.

Leave a period of idle signal before sending any traffic,
especially if you're calling CQ to allow others to tune you in
successfully. The characters you type are buffered before
sending, so if you are a fast typist, you may get ahead of the
transmission. You can send any of the 128 ASCII characters and
use backspace to delete wrong text, although the implementation
of this at the receiving end may differ between systems.

Unlike many other teletype modes, PSK31 supports non-ASCII
character codes (code 128-255). The PSK31 standard for these is
the MS Windows ANSI set (code page 1252). DOS does not use this
set and so, to maintain compatibility with Windows users, DOS
characters are "translated" to Windows ones and vice-versa. The
translation assumes you are using DOS code page 850. If you are
not, you might be sending or receiving the wrong symbols. Some
DOS characters don't exist in the Windows set and vice-versa and
if you try sending one of these, nothing will happen.

If the program starts beeping at you when you type, then the
transmit buffer is full. Wait a few seconds to let the buffer
empty a little. This is unlikely to happen unless you are a very
fast typist, or you start typing quickly just after using the
file send function.

To end your over, either press F2 to simply cut off the
transmission, or press F3 to send a Morse ID if your licence
requires it. With VOX operation, you may have to adjust the VOX
timing to avoid clipping of the keying.

(You can send a Morse ID when you've not been in transmit mode,
the DSK will generate the audio just the same and will send it
on-air if you're using VOX or close the PTT.)

5.2.1. File send.

If you want to send a text file over the air, use the file send
function. Pressing F6 will cause a prompt for the file name to
appear in the transmitted data window. Type in the name of the
file (including the path if it's not in the current directory)
and press Enter. If the program can open the file without
problem, the content of the file will start appearing in the
transmitted data window.

You will see the contents of the file scroll through the
transmit window, rather quickly. If the file is longer than the
size of the transmit buffer, the scrolling will slow down to the
rate at which characters are being sent out over the radio.

5.3. Simplex/Full-duplex mode

By using the "Simplex" statement in the INI file, you can select
either Simplex or Full-duplex mode. For most purposes, Simplex
mode is probably the most useful. In Simplex mode, transmitted
data are looped back to the receive side and thus appear in the
receive window just as if you were copying your own
transmission. In full-duplex mode, you might get the same effect
if some of your transmitted audio loops back to the receive side.

5.4 QPSK

The QPSK mode was introduced as an experiment in the use of
forward-error correction. QPSK allows two bits of data to be
sent every baud period instead of just one using BPSK. At first
sight, this would allow a doubling of the throughput of the
system, but this isn't really needed because PSK31 is intended
as a live chat mode and is quite fast enough already (well, it
is for me at least!) So instead of sending the same data twice
as fast with QPSK, the extra capacity is used up by sending
error correction information. Effectively, for every bit of data
sent, there is a bit of error correction information, so the
overall data rate remains the same as on BPSK.

The transmitted data are encoded using a convolutional encoder
and decoded using a Viterbi decoder. There is a delay of 640 ms
between data being received and being decoded and you can notice
this clearly on your local copy when using QPSK.

You can switch between QPSK and BPSK at any time, there is no
need to stop transmitting to make the switch, but do make sure
your QSO partner(s) know you're about to change over first and
also check that they can indeed use QPSK - some people might
still be using old versions of the system without it.

So when should you use QPSK? If copy is poor on BPSK, give QPSK
a try. You might find it improves dramatically, or you might
find it makes little difference. It's even possible for QPSK to
be a little worse than BPSK in some conditions. In other words,
QPSK won't always work wonders. I recommend you experiment with
it and decide for yourself when it is most useful. For this
reason I am reluctant to quote performance figures for QPSK
since it does appear very dependent on conditions. QPSK will
probably be better than BPSK when many errors are due to bursts
of noise and/or interference.

5.5 Offset tuning mode

If your transceiver has a transmit-receive frequency offset, you
might find the offset tuning mode useful to get around this.
Offset mode works like Track mode, except that the transmit
audio frequency remains a constant amount different from the
receive audio frequency. To enter Offset mode, press Shift+F1.
You will be prompted for the transmit offset frequency in Hz. A
positive offset puts the transmit tone higher than the receive
tone, a negative offset puts it lower. Once in Offset mode,
pressing Shift+F1 again will let you enter a new offset.
Pressing F1 will switch back to Track mode. Most transceivers
have no offset problem so you can probably ignore this feature.

6. Miscellany

The program uses a hardware interrupt handler to control the
serial port. This might make the program less likely to run
under systems other than DOS. However, the machine I developed
it on runs Windows 95 and I have not experienced any problems. I
give no guarantees about whether it will work on ANY system, DOS
or otherwise.

In the (hopefully rare) event that a serious error occurs when
the program is running, it should exit cleanly and report the
failure. If you can get the error to recurr, please let me know
how you did it and the type number of the error that the program
reports so that I can investigate it. The same goes for any more
minor problem that you discover. (You can precipitate a serious
error by pressing Ctrl+C or Ctrl+Break when the program is
running. This will give a type 2 error).

I hope these instructions are adequate to get you going with the
system. It can be tricky, when you know all the ins and outs of
a system, to remember to put all the important things down in a
manual: some things which seem obvious to me might be far from
obvious to you, so if you're baffled by something, try to let me
know and I will do what I can to help. You can contact me by
packet radio:

G0TJZ @ GB7BMR.#14.GBR.EU

Or by e-mail:

andrew@asenior48.freeserve.co.uk

You will probably want to know where you can find me and others
on this mode. The PSK31 "centre of activity" on HF are:

1838.15
3580.15
7035.15
10140.15
14070.15
18100.15
21080.15
24920.15
28120.15

With the exception of 28 MHz, these are 150 Hz above the lower
edge of the IARU digimodes sub-bands. I encourage you to respect
the bandplans if they are voluntary in your country.

The best places and times to find me are:

Sundays: 1000 UTC 7035.15 kHz, 1900 UTC 3580.15 kHz.
Wednesdays: 1900 UTC 3580.15 kHz.

The times are tied to European local time. At the time of
writing, European summer time is in force. During the winter,
the skeds will move 1 hour later in UTC.

The frequencies given are PSK carrier frequencies: use USB and
set the supressed-carrier frequency 1 kHz lower to get a 1 kHz
tone for reception, or set the supressed-carrier frequency 1.15
kHz lower (e.g 3579 kHz for 3580.15 kHz) to get a 1150 Hz tone
for reception.

For further information on PSK31, look at the PSK31 web-site:

http://aintel.bi.ehu.es/psk31.html

The site is maintaned by Eduardo Jacob, EA2BAJ.

I'm not a DSP or computer professional. If you have looked at
the source code for the DSP or PC programs and can see better
ways of coding things, please let me know so I can incorporate
them in later versions and so I can learn better techniques
myself!

7. Acknowledgements

Thanks are due to the following, in no particular order: Peter,
G3PLX; Paul, PA0OCD; Clive, G3YTQ; My father, Peter, G4JNL;
Izak, PA0IHD; Mike, G4BMK; Lothar, DF3PK; Eduardo, EA2BAJ and
Geoff, G3FHL.

All these have offered, help, advice and suggestions which have
helped improve (and indeed make possible) PSK31. I hope I have
not omitted anyone who ought to be on this list!

Best wishes,

Andrew Senior. G0TJZ. 18th April 1998.


