home *** CD-ROM | disk | FTP | other *** search
/ Programmer 7500 / MAX_PROGRAMMERS.iso / PROGRAMS / UTILS / HAMRADIO / CW.ZIP / CW.DOC < prev    next >
Encoding:
Text File  |  1986-12-07  |  23.8 KB  |  509 lines

  1.      CW is a Morse Code send/receive program designed to run on the IBM PC and
  2. it's clones.  The program expects to find the Color Graphics Adapter present.
  3. It will not function correctly with a Mono board or the EGA.  A split screen
  4. format is used for the visual interface and on-line help is available to the
  5. operator.  On-line help is provided by the file HELP.CW.  If that file is not
  6. on the default drive, the program will still function, but without help.
  7.  
  8.      The program is user configurable and creates a file which supports the
  9. screen images for subsequent use.  The user has the option of changing the 
  10. operating characteristics and input/output environment recognized by the pro-
  11. gram.  These may then be saved by CW in a file called INIT.CW, an ASCII file
  12. which can be viewed/modified using a word processor.  The default character-
  13. istics provide for Morse Input and Output on communications port COM1 using 
  14. the RTS and CTS signal lines.   If INIT.CW is not on the default disk then
  15. the default values are assumed. 
  16.  
  17.      CW.COM is a user supported program which may be transferred and/or copied
  18. as often as you like.  No monetary fees (other than disk copying) may be
  19. charged as a part of this service.  The program is a product of 
  20.  
  21.           Dave Freese, W1HKJ
  22.           c/o Clermont Computer Consultants
  23.           29 N Ravenwood Drive
  24.           Cape May Court House, NJ  08210
  25.  
  26.           (609) 624 0076
  27.  
  28.      The program is written in TURBO (tm) PASCAL and demonstrates how well
  29. that particular product allows full use of the PC's hardware. Despite the 
  30. disparaging reviews from some self proclaimed keepers of the PASCAL standard,
  31. this program demonstrates the efficacy of TURBO Pascal.         
  32.  
  33.      It is not anticipated that the source code for this program will be
  34. placed in the public domain.
  35.  
  36.      Have fun with CW.  If you enjoy using it as much as I enjoyed creating 
  37. it, you will have a ball.  Happy DX and bcnu.  
  38.                           73's   Dave   W 1 H K J               
  39.  
  40.  
  41. INSTALLATION PROCEDURE
  42.  
  43.      Create a bootable disk with CW.COM and HELP.CW installed in the root
  44. directory.  CW.COM is compatible with ancilliary programs such as SIDEKICK(tm).
  45. When used with this and other keyboard enhancement programs special considera-
  46. tion must be given to program timing.  See the section on calibration for more
  47. details.
  48.  
  49.      When CW is run for the first time, the Logo, and Help screens are created
  50. and stored in a new file called IMAGE.CW.  This new file is used on subsequent
  51. program executions to speed the screen graphic response time.
  52.  
  53.      Press <F10> to review the HELP screen and then <SPACE> followed by <F7>
  54. to enter the configuration procedures.  CW is distributed with presets for
  55. screen colors to suit the authors tastes.  Colors may be altered, reviewed and
  56. eventually stored in an initialization file called INIT.CW.
  57.  
  58.      The internal tone generator is configured to ON by the default configur-
  59. ation parameters.  Try typing a few lines of text and observe the operation of
  60. the type ahead keyboard buffer/display, the character transmit indication and
  61. the morse code generated on the internal speaker.
  62.  
  63. PROGRAM TERMINATION
  64.  
  65.      The <ctrl>C and <Break> keys are disabled by the program.  The program is
  66. exited by the use of the <alt><F10> keystroke combination.  This allows a
  67. graceful termination of any open files in use by the program.
  68.  
  69. DIRECTORY ACCESS
  70.  
  71.      Whenever a file access is required by the program, the operator may be
  72. prompted to enter a file name.  The prompt may include a default response.  The
  73. operator will also have the choice of using the <Ctrl>F, ^F, key sequence to
  74. access the disk directory.  The directory access is provided by a window over-
  75. lay with an additional prompt for the directory mask.  This mask may use the
  76. usual wildcards and/or directory structure allowed under DOS.  A <Retrn> will
  77. produce the same result as the *.* wildcard specification.
  78.  
  79.  
  80. MESSAGE BUFFERS
  81.  
  82. <F1> - Transmitting a Message Buffer
  83.  
  84.      CW maintains 10 message buffers (0..9) which may be transmitted by press-
  85. ing <F1># where # is  0..9 .  The <F1># sequence may be pressed at any time
  86. which automatically inserts the specified message buffer into the outgoing
  87. character buffer.
  88.  
  89. <F2> - Modifying the Message Buffers
  90.  
  91.      The contents of the ten message buffers may be observed and modified by
  92. pressing <F2>.  The ten message buffers are displayed on a full screen and
  93. the operator prompted to enter a number (0..9) to modify a buffer, or <ESC>
  94. to return to the split screen display.  If a buffer is selected the buffer is
  95. cleared and the cursor placed at the beginning of the buffer line.  Up to 80
  96. characters may be put in each buffer.
  97.  
  98. <alt><F1> - Loading the Message Buffers
  99.  
  100.      The 10 message buffers may be loaded from disk.  This is accomplished by
  101. pressing <alt><F1>.  The operator is prompted to enter a valid directory-tree
  102. filename which will contain the desired message buffers.  This file is an
  103. ASCII file containing 10 lines of up to 80 characters per line.  They may be
  104. created using CW or a separate word processor program.
  105.  
  106. <alt><F2> - Saving the Message Buffers
  107.  
  108.      The present message buffer contents may be assigned to a disk file of the
  109. operators choice by pressing <alt><F2>.  The operator is prompted to enter a
  110. directory-tree filename for storage.  Existing files will be overwritten by
  111. this function.
  112.  
  113. ASCII TRANSMIT/RECEIVE FILES
  114.  
  115. <F3> - ASCII File Transmit Function
  116.  
  117.      Any valid ASCII file may be transmitted by pressing <F3>.  The operator
  118. is prompted to enter the file name (directory modifiers are ok).  If the file
  119. is not found the operator is returned to the split screen display.  If found,
  120. transmission begins immediately with character display in the transmit window.
  121. CR/LF and other non-Morse-characters are translated to a SPACE for the pur-
  122. poses of generating a correct timing duration.  Transmission may be altered
  123. with the ^P or ^X keys, causing a pause of termination respectively.  If this
  124. key is accidently pressed, respond to the file name prompt with a <RETN>.
  125.  
  126.      The file may contain control fields which alter several aspects of the
  127. code transmission.  A control field is generated by the backslash character as
  128. at the beginning of the first three lines.  A space followed by any ASCII char-
  129. acters is treated as a comment field which is skipped over during transmission.
  130.  
  131.      A backslash in column one followed by a control character and/or control
  132. values will cause the transmission characteristic to change as follows:
  133.  
  134.     Control sequence            Effect
  135.  
  136.     \*ascii text                ascii text dislayed on line 24 of display
  137.     \#nnn                       wpm rate changed to nnn (integer value)
  138.     \Dff.f                      dash-dot-ratio changed to ff.f (float value)
  139.     \dff.f                       "    "    "      "     "   "    "      "
  140.     \Lff.f                      letter-dot-ratio changed to ff.f
  141.     \lff.f                         "    "    "      "     "   "
  142.     \Wff.f                      word-dot-ratio changed to ff.f
  143.     \wff.f                        "   "    "      "     "   "
  144.  
  145.      See the file CODETEST for examples of each of the above.
  146.  
  147. <alt><F3> - ASCII Receive File Save Function
  148.  
  149.      The program maintains a receive buffer of 8192 bytes which acts as a
  150. first-in/first-out wrap around memory.  The operator may save the contents of
  151. this buffer from its beginning up to the last character received.  Pressing
  152. the <alt><F3> function key will cause an operator prompt for a filename in
  153. which to save the receive buffer.  If this key is accidently pressed, respond
  154. to the filename prompt with a <RETN>.
  155.                                      
  156. AUTOMATIC LOG MAINTENANCE
  157.             
  158. <F4> - Log Data Entry
  159.  
  160.      CW maintains the file LOG.CW, an ASCII data file containing a log of QSO 
  161. activity.  Data may be entered in the log by pressing <F4>.  The operator is 
  162. prompted to enter the data for the log in the following sequence:
  163.  
  164.                Date ..............xxxxxxxx 
  165.                Time ..............xxxxx
  166.                Freq ..............xxxxxx
  167.                Power .............xxx
  168.                Outgoing RST ......xxx
  169.                Incoming RST ......xxx
  170.                Call sign worked ..xxxxxxxx
  171.                Comments [name, etc]
  172.  
  173.                xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
  174.  
  175.      Default values may be obtained by pressing <RETN> alone.  This is partic-
  176. ularly useful for the TIME and DATE values which are the MS-DOS values corr-
  177. ected to UTC.  All other defaults are blank filled strings.  
  178.  
  179.      Each composite of log data forms a single line in the file LOG.CW which
  180. may be subsequently altered with a word processor such as SideKick, Wordstar 
  181. or Brief.                                        
  182.  
  183. <alt><F4> - Saving the LOG
  184.                                                                 
  185.    The file LOG.CW may be updated manually by pressing the <alt><F4> function
  186. key.  Log entries made during normal operation will be automatically saved at
  187. the end of the operating session, or when 100 QSO's have been logged, which-
  188. ever comes first.                                                      
  189.  
  190. TRANSMIT/RECEIVE CHARACTER RATES
  191.                                                                  
  192. <F5> - Set Receive Code Speed = Transmit Code Speed
  193.  
  194.      During CW reception the program maintains an estimate of the incoming
  195. code speed.  First order difference equations are used to filter and smoothly
  196. track changes in the detected speed.  During high noise bursts or for rapid
  197. changes in received CW speed it may become necessary to reset the receive 
  198. tracking values.  Use this function key to set the current Receive Tracking 
  199. Speed equal to the current Transmit Speed.           
  200.  
  201. <alt><F5> - Set Transmit Code Speed = Receive Code Speed 
  202.                                                                 
  203.      During contests and other rapid CW exchanges it is considered good oper-
  204. ating to transmit at the receive code speed.  Pressing <alt><F5> will immed-
  205. iately force the transmit code speed to the received code speed.
  206.  
  207.                                                                 
  208. <F6> - Adjusting Transmit Code Speed
  209.  
  210.      The transmitted code speed may be adjusted in 1 WPM increments.  Pressing
  211. <F6> causes an operator prompt for the new value on the status line.  Entries
  212. must be digits 0 ... 9, improper entries will be rejected and the prompt re-
  213. issued.                              
  214.  
  215. <alt><F6> - Calibrating the Code Speed
  216.  
  217.      The transmit and receive code speeds are dependent on timing loops used
  218. in TURBO (tm) PASCAL.  They are therefore sensitive to the clock rate of the
  219. computer.  CW can accomodate variations in clock frequencies.  Accurate timing
  220. does require a scope and an external 10 HZ signal generator.  The signal gen-
  221. erator may be a calibrated keyer.
  222.  
  223.      To begin the calibration press <alt><F6> and select the transmit or re-
  224. ceive procedure.
  225.  
  226.      RECEIVE CALIBRATION - Apply a 10 Hz square wave of the proper amplitude
  227. to the input port.  The 10 Hz square wave is the dot rate equivalent of 25
  228. WPM cw.  Pressing the <u> and <d> keys will alter the displayed code speed in
  229. 0.1 WPM increments.  Pressing <U> and <D> will alter displayed code speed in
  230. 1.0 WPM increments.  Press <Q> when the calibration is complete.
  231.  
  232.  
  233.      TRANSMIT CALIBRATION - A nominal 10 Hz square is generated at the output
  234. port.  Adjust this signal for proper frequency by pressing the <u/U> and/or
  235. <d/D> keys for the 10 Hz output.  Press <Q> when the calibration is complete.
  236.  
  237.  
  238.      ALTERNATE CALIBRATION PROCEDURES - The program may be calibrated by 'ear'
  239. and a watch with a sweep second hand.  The ASCII file 'PARIS' contains a seq-
  240. uence of 100 occurences of 'paris '.  This is one of the standard timing words
  241. for text timing as specified in the 1985 issue of the ARRL Handbook.  Proceed
  242. as follows:
  243.  
  244.           <1> Clear the Screen,
  245.           <2> Select transmit code speed to be 25 WPM,
  246.           <3> Select <F3> (transmit file),
  247.           <4> Specify file name of PARIS -- do not press <RETN>,
  248.           <5> Press <RETN> - start timing at the first 'p',
  249.           <6> At the end of the timed minute press ^X to stop transmission.
  250.  
  251.           Count the number of words 'paris' on the screen.  It should be 25.
  252.      If it is not the file INIT.CW can be modified in the Timing Duration
  253.      entry.  The new entry can be calculated as:
  254.  
  255.                     new = old * #words / 25
  256.  
  257.           That completes the transmit calibration.  You now need to calibrate
  258.      an external keyer to 25 wpm.  Some amount of simple hardware will be re-
  259.      quired, the purpose of which is to allow both the computer output and the
  260.      keyer to simultaneously key an external oscillator.  The external keyer
  261.      speed is then adjusted for a zero beat note between the two keying
  262.      sources.  Use this calibrated keyer as the input as described in the pri-
  263.      mary receive calibration procedure.
  264.  
  265.      ALTERNATE RECEIVE CALIBRATION - Beginning with version 3.12 of CW a fea-
  266.      ture has been added which is not documented on the help screen.  By press-
  267.      ing the <ALT> <d> combination a continuous readout of receive tracking
  268.      filter value (count) is displayed on the 24th line.  During the reception
  269.      of a known morse rate - such as W1AW code practice or bulletin - this
  270.      value will be fairly constant.  The Rx Coefficient written in the file
  271.      INIT.CW is equal to count * WPM.  Try modifying the Rx Coefficient accord-
  272.      ingly and observe the result.  Pressing <ALT><d> will toggle the 24th line
  273.      display.
  274.  
  275.  
  276. SOFTWARE/HARDWARE CONFIGURATION
  277.  
  278. <F7> - Modifying Configuration
  279.  
  280.      The operator may modify the characteristics of the program with respect 
  281. to the transmit code weight, initialization values, internal tone, and screen
  282. colors.  Input/output port assignments and logical levels may be changed.  The
  283. designation of time zone for the purposes of timekeeping and logging is avail-
  284. able.   A previous configuration saved on disk may be loaded for quick changes
  285. in operating characterics.
  286.  
  287.      
  288.      TRANSMIT WEIGHTING - The operator may select transmit code weighting to
  289. fit his or her individual requirements.  A prompt for the following charac-
  290. teristics is presented:
  291.  
  292.                     Dash/Dot (3.00) ..... 
  293.                     Letter/Dot (3.00) ... 
  294.                     Word/Dot (7.00) .....
  295.  
  296. where the values in parenthesis are the present values.  Pressing return at
  297. any one of the three leaves the value unchanged.  Here are some suggestions
  298. for transmit weighting and its intended use.
  299.  
  300.           Dash/Dot    Letter/Dot    Word/Dot       Used for:
  301.  
  302.             3.00        3.00          7.00         Standard code weighting
  303.  
  304.             3.60        3.60          8.00         Moderately heavy code
  305.                                                    good for QRN conditions
  306.  
  307.             3.00       10.00         30.00         Practice at 1/2 WPM rate
  308.  
  309.             3.00       17.00         51.00         Practice at 1/3 WPM rate
  310.  
  311.             3.00       24.00         73.00         Practice at 1/4 WPM rate
  312.  
  313.  
  314.  
  315.      SET INTERNAL TONE - The internal cw tones may be toggled ON/OFF and the
  316. frequency of the tone modified.  If the 'y' response is made to the prompt:
  317.  
  318.                PC tone on? <Y/N>');
  319.  
  320. then the operator is requested to enter the desired tone:
  321.  
  322.                Note frequency =  600  change to ....
  323.  
  324.      Pressing <RETN> leaves the frequency unchanged.
  325.  
  326.  
  327.  
  328.      SPECIFYING DEFAULT MESSAGE FILE - The operator may specify the start-up
  329. messages which will be loaded on each execution of CW.  The response to the
  330. prompt:
  331.  
  332.                Enter message file name.ext ...
  333.  
  334. should be an existing \directory\filename.ext string, where the directory is
  335. optional.
  336.  
  337.  
  338.  
  339.      SPECIFYING TIME ZONE - The program default for time zone is 0.  That is,
  340. you live in Greenwich, England.  Since most of us are not so fortunate, and
  341. good log keeping stipulates using UTC (GMT for us oldtimers), the operator can
  342. specify his or her own time zone as:
  343.  
  344.                Enter your time zone ...
  345.  
  346.      If a non-zero time zone is entered, the program adjusts the date and time
  347. for the on screen display and the log to accomodate the time zone.  Proper
  348. attention is also made to month and year rollover with the exception of leap
  349. year.  This is a subject of a future change to the program.
  350.  
  351.  
  352.  
  353.      CONTROLLING HARDWARE INTERFACE - CW may be configured to access any port
  354. within the 8088 port address space.  The individual bit and its logical sense
  355. can also be specified.  The program default values are for the COM1 port and
  356. uses the RTS, CTS signals for Transmit and Receive respectively.  The operator
  357. will be prompted:
  358.  
  359.                     Enter transmit port (1020)... 
  360.                           transmit bit # (1)..... 
  361.                           transmit logic (1) .... 
  362.                           receive port (1022).... 
  363.                           receive bit # (4)...... 
  364.                           receive logic (1) ..... 
  365.  
  366. The values in parenthesis are the present in use, a <RETN> leaves the value
  367. unchanged.  You must enter the port numbers in decimal, the bit number as 0..7,
  368. and the logic level as 1 => active high; 0 => active low.  This may take some
  369. experimenting for your particular hardware.  The author has configured a VISUAL
  370. COMMUTER (IBM clone) and the MFJ 1224, RTTY/CW terminal unit to the LPT1
  371. parallel port and a homebrew interface to the COM1 port.  The homebrew design
  372. is the subject of a forthcoming public domain release.
  373.  
  374.  
  375.  
  376.      CHANGING RECEIVE FILTERING - The program is designed to track the charac-
  377. ter rate of the incoming (received) morse code.  Under ideal conditions, no 
  378. filtering is required at all, however, in the real world of QRN and QRM it is
  379. an absolute necessity.  The filtering is accomplished using the digital equiv-
  380. alent of a low pass filter.  Just as the response of a low pass RC filter can
  381. be controlled by the resistor-capacitor product, the difference equation
  382. coefficients can be modified to adjust it's response.  The operator is prompt-
  383. ed as follows:
  384.  
  385.                     Receive filter coeff: 3
  386.                       slow ... fast
  387.                         <0> .. <9>
  388.  
  389.                     Enter ...
  390.  
  391.      Selecting the value <0> will disable the filter.  In this case the receive
  392. algorithm will rely on the transmit WPM selection.  The receive tracking can be
  393. reset with the <F5> key.  This is particularly useful under extremely noisy
  394. conditions or when the incoming code is a known speed, such as W1AW bulletins.
  395.  
  396.      The default value is 3 which seems to work well with the author's Kenwood
  397. 599D receiver with an 800 Hz CW filter.  A 200 Hz wide active audio filter is
  398. also used along with a limiter/detector of the author's own design.  This is
  399. definitely an area for experimentation and user feedback.  I simply cannot
  400. afford to buy one of everything to test the programs utility.
  401.  
  402.      LOADING CONFIGURATION - The operator is prompted to enter the name of a
  403. configuration file which is to be loaded.  If the file does not exist or the
  404. <RETN> is pressed with out a file name then the default configuration is
  405. established.
  406.  
  407.  
  408.      SAVING CONFIGURATION - The operator has the option of saving the operating
  409. configuration of the program on a disk file.  The prompt for a file name may be
  410. given a <RETN> response in which case the default name of 'INIT.CW' is assumed.
  411.  
  412.      The operating characteristics of CW as determined by the configuration
  413. parameters can be saved on the default disk.  The program looks for this file
  414. on initial execution and uses the values contained therein for its presets. 
  415. INIT.CW is an ASCII file which may be observed/changed with any wordprocessor.  
  416. A sample of the INIT.CW file contents are:
  417.  
  418.                     Xmt_WPM ............  18
  419.                     Dash Dot Ratio ..... 3.0
  420.                     Letter Dot Ratio ... 3.0
  421.                     Word Dot Ratio ..... 7.0
  422.                     PC monitor flag ....   1
  423.                     Monitor note freq .. 600
  424.                     Time Zone ..........   0
  425.                     Initial msg file ...NIL
  426.                     Timing Duration .... 920
  427.                     Rx Coefficient .....8250
  428.                     Xmt background .....   7
  429.                     Xmt foreground .....  14
  430.                     Rcv background .....   3
  431.                     Rcv foreground .....  15
  432.                     Status background ..   4
  433.                     Status foreground ..  11
  434.                     Prompt background ..   1
  435.                     Prompt foreground ..  14
  436.                     Aux background .....   6
  437.                     Aux foreground .....  14
  438.                     Help background ....   2
  439.                     Help foreground ....  14
  440.                     Transmit port ......1020
  441.                     Transmit bit .......   2
  442.                     Transmit level .....   1
  443.                     Receive port .......1022
  444.                     Receive bit ........  16
  445.                     Receive level ......   1
  446.                     Filter coefficient..   5
  447.  
  448.      The above values are the equivalent to the internal program configuration
  449. defaults.
  450.  
  451.      SPECIAL NOTE FOR USE WITH SIDEKICK - I have always used the program with
  452. the utility SIDEKICK.  Some early feedback on program operation indicated that
  453. my machine was slower than I wanted to believe.  It seems that SIDEKICK really
  454. makes a significant impact on program speed such as CW which uses a lot of key-
  455. board i/o.  All of the timing loops involved in generation and reception of the
  456. morse characters have i/o tests imbedded in them.  These i/o calls to DOS are
  457. trapped by SIDEKICK.  The number of tests SIDEKICK performs is apparently not
  458. trivial.  My computer is a VISUAL COMMUTER with a V20 operating at 4.77 MHz.
  459. The Norton Utility SYSINFO indicates a 1.8 performance index.  This computer
  460. requires the following constants in the INIT file:
  461.  
  462.        constant           w/o SK         w SK
  463.  
  464.        Timing Duration    920            850
  465.        Rx Coefficient    8250           5660
  466.  
  467.      If you use SIDEKICK or other keyboard enhancement utility with CW, you may
  468. find it necessary to play around a little to find the right values for these
  469. two constants.
  470.  
  471.  
  472. TUNING & OTHER STUFF
  473.  
  474.  
  475. <F8> - Tune the Transmitter
  476.  
  477.      Pressing the <F8> function key causes the transmitter to be held in the
  478. key down condition.  The key down condition is released when any other key is
  479. pressed.  I suggest the <SPACE> to prevent on the air burbles - hi.
  480.  
  481.  
  482. <alt><F8> - Send V's
  483.  
  484.      The character V is used as a standard "test" signal by most CW operators.
  485. The <alt><F8> key causes a string of V's to be transmitted.  Pressing any key
  486. will terminate the sequence of V-s.  The <SPACE> is also appropriate here.
  487.                               
  488.                                                                  
  489. <F9> - Clearing the Screen
  490.                                                                
  491.      The split screen display is cleared of all text, the colors reset, and 
  492. the status line refreshed when the <F9> function key is pressed.                           
  493.  
  494.  
  495. <alt><F9> - Reset Receive Buffer Pointer
  496.                                                                
  497.      Clears the screen the same as <F9>, but additionally resets the receive 
  498. buffer to begin loading characters at the beginning.  Useful for initializing
  499. the buffer during incoming traffic or bulletins.                                                      
  500.  
  501.  
  502. <F10> - H E L P !!!
  503.  
  504.      On line help is available and obtained by pressing <F10>.  A command
  505. synopsis is displayed.  Pressing any function-key or alt-function-key sequence
  506. will display the appropriate portion of the HELP.CW file in a central screen
  507. window.  If the file HELP.CW is not on the default drive, no action is taken.
  508.  
  509.