Dec 122017
CWTSR was designed to allow software which does not have the capability of sending morse code (CW) to be able to send morse.
File CWSEND.ZIP from The Programmer’s Corner in
Category Science and Education
CWTSR was designed to allow software which does not have the capability of sending morse code (CW) to be able to send morse.
File Name File Size Zip Size Zip Type
CWTSR.DOC 6016 2614 deflated
CWTSR.EXE 40978 26920 deflated
FOXCW.BIN 5 5 stored
SEND.EXE 9228 7009 deflated

Download File CWSEND.ZIP Here

Contents of the CWTSR.DOC file

Documentation file for CWSEND.ZIP
CWTSR - An Intrnational Morse Code Sending Utility

(C) Copyright 1991 by Gerry Hull, AK4L/VE1RM

The self extracting zip file CWSEND.EXE contains the following files:

CWTSR.DOCThe documentation file
CWTSR.EXE The terminate and stay resident program
SEND.EXEA command-line sending utility
CWDEMO.BATa batch file to show you how it works
FOXCW.BIN A binary routine to call cwtsr from inside foxbase/dbase

A> Purpose:

CWTSR was designed to allow software which does not have the capability of
sending morse code (CW) to be able to send morse. CWTSR uses the DTR (Data
Terminal Ready) pin on either RS-232 communications port com1 or com2 to send
the cw. These ports swing between +12v and -12v. CWTSR allows you to set the
key-down polarity. A simple external PNP or NPN transistor switch will then
key your radio.

B> Functionality:

CWTSR will send CW at the same speed on any DOS-based computer, no matter the
clock speed. The speed is addjustable from 1-250 w.p.m. A built-in sidetone
is available, and it can be turned on and off, and its pitch adjusted from
100-9999 Hz.

C> Access:

CWTSR is accessed through a software interrupt. The address of a string of
characters to send is passed to CWTSR through the DS (segment) and BX (offset)
registers. The default software interrupt is 18 hex, which is the old ROM-Basic
interrupt from IBM's PC. You can use a command-line option to select any

For people who are writing software:

1> The string to send must be null terminated (C-type string)
2> Put the segment of the string in DS
3> Put the offset of the string in BX
4> call the interrupt (18h is the default)

For others:

Included in the zip file is FOXCW.BIN, an assembly-language file which allows
access to CWTSR from inside FoxBase/FoxPro and DBASE III/IV.
FOXCW is designed to use interrupt 18h. FOXCW.BIN is very simple:

PUSH DS;save the ds register
INT 18;do interrupt 18
POP DS;restore the ds register

Here's how you use it in Foxbase:

CALL FOXCW WITH "Hello in CW" && this will send "Hello in CW" if CWTSR
&& is resident -- MAKE SURE ITS RESIDENT!

To call CWTSR from Microsoft QuickBasic 4.x or PDS 7.x, use the following:

'$INCLUDE:'QB.BI'(if QuickBasic 4.x)
'$INCLUDE:'QBX.BI'(if PDS 7.x)

DIM regs as RegtypeX'user type for cpu registers

A$="The string we want to send in CW"+CHR$(0)'must be null-terminated
'if using QB 4.X
'if using PDS 7.X
CALL INTERRUPTX(&H18,regs,regs)'make the interrupt whatever!
'the cw will be sent

You can call cwtsr from any program which can shell to DOS by using the
SEND.EXE program. SEND allows CW to be sent from the DOS command line.
for example, if cwtsr is resident,

C> SEND cq de ak4l k

will send send the cq for me!. Most software has an option to shell to DOS,
and this will allow CW to be sent in this fashion (although it has a lot of
overhead). For example, you can call cwtsr from BASICA/GWBASIC by using the
SHELL command:

SHELL "SEND cq de ak4l k"

would perform the same as the command-line example.
BEWARE! SEND.EXE is designed to be used with interrupt 18h (the default) only!

D> Commands
Commands are issued at CWTSR install (on the command line) or embeded into
a sending string, to allow on-the-fly changes.

/Sxxx Sets the speed in words per minute. The default speed at install
is 35 wpm. xxx is the speed in wpm.
Command Line example: /s24
Embeded example: @[email protected] speed is now 24 wpm

/Txxxx Allows adjustment +/- of the CW element timing in units of 1/2200th
of a second. CW timing is derrived from the video timing circuits, so
is should be accurate. This command allows "fine tuning" of the element
timing to enable "exact" speed settings.

/Px Sets the communications port for sending. 1 and 2 are
valid values. Other values are ignored.
Command Line example: /p2
Embeded example: @[email protected]

/Kx Sets the voltage level of key down. The default is keydown=
-12v. Setting x to N leaves it at -12v. Setting x to R sets
keydown=+12v Other values are ignored.
Command Line example: /Kr
Embeded example: @[email protected]

/Mx Used to turn the sidetone on and off. x=1 is sidetone on, x=0
sidetone off. Default is on.
Command Line example: /m0
Embeded example: @[email protected]

/Fxxxx Sets the sidetone frequency in Hz xxxx is freq. in Hz. Default
is 700 Hz.
Command Line Example: /F1000
Embeded example: @f800

/Ixxx Sets the software interrupt in which cwtsr is called. The default
is 18h. Enter the value in decimal or in hex by placing an h after the
value. Not valid in embeded mode.
Command Line example: /i11h
Embeded example: NOT VALID

E> Notes
CWTSR/h will list important information on how to use the program.
CTRL+ALT+M removes program from memory if at DOS command line.
The program cannot be removed from memory if it is not the last TSR
'OK' will be sent on the system speaker if removed from memory, otherwise
'error AR not over dos' will be sent, and program will be in memory.
Morse prosigns (AR, etc). are found at Ctrl-A thru Ctrl-F.

This is Public Domain 'Freeware' and I assume no liability for the software.
It should behave and be bug free. However, if you find bugs, have comments
suggestions, you can reach me on the air or at the following address:

Gerry Hull, AK4L/VE1RM
RFD 1 BOX 505 Francestown Rd.
Greenfield, NH 03047 USA

 December 12, 2017  Add comments

Leave a Reply