MKMAN.DO 4/2/99 Ron Wiesen Technical Products GENERAL This program is put in the public domain by Ron Wiesen WD8PNL and is originally distributed as file MK21.DO. It may be used and altered by anyone as long as program line 65529 remains intact. MK21 means Morse code Keyboard for models 200 and 10x. This is for the Tandy laptop Model 200 and for either of the Model 10x (100 or 102) laptops. The relay of the cassette port closes and opens to provide On and Off keying. The smaller plug of the three plugs in a cassette cable carries this On/Off keying. This plug can be attached to an Amateur radio transmitter or transceiver to send Morse code, or it can be attached to an audio code practice oscillator. Keystrokes at the laptop are translated to Morse code On/Off keying. SPEED RANGE VARIANTS MK21 has three variants for speed range. There is a fast speed variant which has about a 5.5:1 ratio between the limits of its speed range. There are two slow speed variants and both of them have about a 10:1 ratio between the limits of their speed ranges. The fast speed range in the Model 200 spans from 12 to 68.9 word per minute, and in the Model 10x it spans from 14.3 to 75.3 word per minute. One slow speed range in the Model 200 spans from 5.5 to 54 word per minute, and in the Model 10x it spans from 5.9 to 57.8 word per minute. The other slow speed range in the Model 200 spans from 5.1 to 51 word per minute, and in the Model 10x it spans from 5.5 to 54.8 word per minute. There are 26 speed "notches" in a speed range. Speed changes logarithmically from notch to notch. The chart below shows this. The "%" points are for the fast speed range. The "!" and "#" points are for the two slow speed ranges which differ very little near their low speed limit. Where a "*" is shown it denotes a "!" point and a "#" point that share the same position for charting purposes. A dashed line from the 14th speed notch identifies this notch as the initial speed notch and its speed for all range variants is listed on the line. 75 70 65 60 55 50 45 40 35 30 25 20 15 10 05 | | | | | | | | | | | | | | | 01> | |% ! #| | | | | | | | | | 02> | | | |% ! # | | | | | | | 03> | | | | | % ! # | | | | | | 04> | | | | | | % !# | | | | | 05> | | | | | | | % Model 200 !# | | | | 06> | | | | | | | | % !# | | | 07> | | | | | | | | | % ! # | | | 08> | | | | | | | | | % !#| | | 09> | | | | | | | | | | % !# | | 10> | | | | | | | | | | % !# | | 11> | | | | | | | | | | |% * | | 12> | | | | | | | | | | | % !#| | 13> | | | | | | | | | | | % !# | 14>---|----|----|----|----|----|----|----|----|----|----|----%20.4--9.9!#9.3| 15> | | | | | | | | | | | |% * | 16> | | | | | | | | | | | | % !# | 17> | | | | | | | | | | | | % * | 18> | | | | | | | | | | | | % !# | 19> | | | | | | | | | | | | % * | 20> | | | | | | | | | | | | % * | 21> | | | | | | | | | | | | % !#| 22> | | | | | | | | | | | | |% *| 23> | | | | | | | | | | | | | % *| 24> | | | | | | | | | | | | | % *| 25> | | | | | | | | | | | | | % !# 26> | | | | | | | | | | | | | % !# | | | | | | | | | | | | | | | 75 70 65 60 55 50 45 40 35 30 25 20 15 10 05 | | | | | | | | | | | | | | | 01> % ! # | | | | | | | | | | 02> | | |% ! # | | | | | | | | 03> | | | | % ! # | | | | | | 04> | | | | | % ! # | | | | | 05> | | | | | | % Model 10x ! # | | | | 06> | | | | | | | % ! #| | | | 07> | | | | | | | | % !# | | | 08> | | | | | | | | % !# | | | 09> | | | | | | | | | % !# | | 10> | | | | | | | | | % !# | | 11> | | | | | | | | | | % !# | | 12> | | | | | | | | | | % * | | 13> | | | | | | | | | | % !#| | 14>---|----|----|----|----|----|----|----|----|----|----|%23.7----10.7!#10--| 15> | | | | | | | | | | | % !# | 16> | | | | | | | | | | | % * | 17> | | | | | | | | | | | % !# | 18> | | | | | | | | | | | % * | 19> | | | | | | | | | | | |% * | 20> | | | | | | | | | | | | % !# | 21> | | | | | | | | | | | | % * | 22> | | | | | | | | | | | | % * | 23> | | | | | | | | | | | | % !#| 24> | | | | | | | | | | | | % *| 25> | | | | | | | | | | | | % *| 26> | | | | | | | | | | | | |% *| | | | | | | | | | | | | | | | 75 70 65 60 55 50 45 40 35 30 25 20 15 10 05 BASIC allows the following explicit type identifiers for numeric array names and variable names: % identifier for Integer ! identifier for Single-precision floating point # identifier for Double-precision floating point. MK21 is originally distributed as file MK21.DO and this file is the fast speed variant. The numeric array named S is implicitly a single-precision type due to the DEFSNG statement. But all other numeric arrays and all numeric variables have names with explicit type identifiers that are the same type. Note that the percent sign, the exclamation mark, and the pound sign are not used as Morse symbols or used for any other purpose. So, you can use a text processor and globally substitute a different type identifier. As distributed, the fast speed variant uses the percent sign identifier - so all arrays and variables are integer types, which resolve very fast during program interpretation. If you change every percent sign to an exclamation mark or to a pound sign, you produce one of the slow speed variants where arrays and variables resolve more slowly. OPERATION Operation includes: session start, defer mode, instant mode, and session end. Session Start You start a session of MK several ways. Which way depends on whether file MK21.BA, file MK21.DO, or both files exist in the laptop. Where file MK21.BA exists, you may start a session at the Menu the same way that you would invoke any BASIC file -- either type the file name MK21.BA and press ENTER, or use the arrow keys to navigate the wide cursor bar onto the MK21.BA name and press ENTER. Where file MK21.DO exists and file MK21.BA does not exist, you first invoke BASIC at the Menu. Then you type RUN"MK21 and press ENTER. The Wait signal flashes as the BASIC interpreter reads file MK21.DO and accumulates the statements in tokenized form. After it accumulates all statements, the BASIC interpreter begins program interpretation -- this starts a session. Where both file MK21.DO and MK21.BA exist as different speed range variants and the variant of file MK21.DO is desired, you first invoke BASIC at the Menu and then you type RUN"MK21.DO and press ENTER. As explained above, the session begins after the BASIC interpreter accumulates all statements in file MK21.DO. Defer Mode A question mark at column 1 identifies the defer mode. There are two postures in the defer mode: govern and compose. While the blinking cursor is positioned directly to the right of the question mark, the govern posture is held. The start of a session establishes defer mode in the govern posture. Where the cursor advances from this position, posture changes to compose. Regardless of posture, the defer mode ends when you press the ENTER key and the instant mode begins. Defer Mode at Govern Posture At the govern posture, you can do several things by using special keys: o clear the screen and show the speed - press ESC key o increase speed to the next speed notch - press UpArrow key o decrease speed to the next speed notch - press DownArrow key o do something with one of the 10 text buffers - CTRL key combination The text buffers are numbered 0 to 9. They can be empty or can contain text to be transmitted. You can view, erase, define, or instantly transmit the content of a text buffer. Where you view, erase, or define the content of a text buffer, the govern posture persists. Where you transmit the content of a text buffer, the mode transits from defer to instant. In conjunction with the CTRL key, you press one of the keys listed below and then press a numeral key 0 to 9 for the corresponding text buffer. V - View the content of a text buffer E - Erase a text buffer D - Define the content of an erased (i.e., empty) text buffer T - Transmit the content of a text buffer, and transit to instant mode. Defer Mode at Compose Posture At the compose posture, you can type a composition. The first key which you press that isn't a special key for the govern posture changes posture to compose and it is the first character of the composition. As you press more keys the cursor continues to advance and the composition grows. You can refer to text buffer content within a composition. The plus sign is a legitimate Morse prosign (AR). But where you immediately followed it with a numeral (0 to 9), the plus sign and the numeral are a reference to the content of a text buffer. This is convenient for Field Day or other operations where "canned text" is desired. Likewise, within the content of a text buffer, a plus sign followed by a numeral is a reference to the content of a text buffer. So the content of a text buffer can include references to the content of other text buffers. At the compose posture, you can do only two things to the composition other than grow it further: o Erase last character - DEL or BKSP key. o Uncompose - CTRL and U key combination, posture changes to govern. If you press the ENTER key or if you grow the composition to its maximum size of 255 characters, any text buffer references expand the composition, the defer mode ends, instant mode begins, and the composition is transmitted. Instant Mode The instant mode translates characters to Morse code and transmits them at the rate of the current speed notch. Any composition that is present at the beginning of instant mode is translated for transmission. On a character-by-character basis the character symbol is shown on the screen at the start of the character's Morse transmission. For cases of no corresponding Morse character, an asterisk is shown on the screen without any delay of Morse transmission in subsequent characters. During character transmission, you can more add characters in "type-ahead" fashion while transmission ensues. Should all characters be transmitted, the instant mode remains. Except for the ENTER key, there are no special keys for instant mode. Every key pressed in the instant mode just adds another character for Morse code transmission. You can use the ENTER key to transit to the defer mode. Session End Hold the CTRL key depressed and also press the C key. This stops program interpretation - Ok appears. Type MENU and press ENTER - the laptop Menu appears. MODIFY BY MERGE The following procedure requires file MK21.DO and one or more other .DO files. All of these files contain the textual equivalent form of BASIC statements. File MK21.DO is the starting base, the other .DO file or files modify the base. Relative to the starting base, the accumulation of statements performs in some modified fashion during program interpretation by the BASIC interpreter. The general procedure is given below. 1. Invoke BASIC at the Menu. 2. Type NEW and press ENTER. This purges all statements. 3. Type LOAD"MK21.DO and press ENTER. The Wait signal flashes while statements of file MK21.DO accumulate. This establishes the base. 4. You use the MERGE command one time for each of the other .DO files. For example, to accumulate files MYCALL.DO, FD.DO, and FDCLAS.DO, you would: Type MERGE"MYCALL and press ENTER. Type MERGE"FD and press ENTER. Type MERGE"FDCLAS and press ENTER. Examples of content of the other .DO files are illustrated below. Although these files contain mutually exclusive program line numbers, this isn't required. Any MERGE of a subsequent file that has a program line number identical to a file of prior MERGE is a replacement. In the case of an identical line number, the last MERGE prevails. File MYCALL.DO merely defines text buffer 0 for the station call sign. Buffer 0 ends with a WordSpace. This file contains nothing specific to Field Day operation. It could also define text buffers 1 through 9 for general operation and they would be redefined for Field Day operation by the subsequent MERGE of the other files. File FD.DO defines text buffers 1 through 8 as general short-cuts for operators of a Field Day station. Note that these buffers include references to the content of other text buffers. Buffers 1 through 4 solicit contact and they all refer to buffer 0 (buffer 2 by reference to buffer 1) for call sign. Buffers 5 through 8 are responses which lead with a WordSpace: 5 and 6 refer to buffer 9 for message content and end with the Break prosign to seek confirmation, 7 and 8 are confirmations that refer to buffer 0 for call sign as an aggressive solicitation for the next contact. File FDCLAS.DO defines text buffer 9 for Field Day operation with regard to the message exchange specifics of station class and ARRL section, and it prevents all text buffers from being erased (Field Day accidents happen). This does not prevent an operator from defining buffers (by CTRL D) that initially are not defined. However once any buffer is defined (initially or by operator) the operator can not erase it. == File MYCALL.DO == 410'TextBuffer0 410 T$(0)="WD8PNL "'of Ron Wiesen == File FD.DO == 401'TextBuffer1 401 T$(1)="FD +0" 402'TextBuffer2 402 T$(2)="FD +1" 403'TextBuffer3 403 T$(3)="FD FD FD DE +0+0K" 404'TextBuffer4 404 T$(4)="CQ FD CQ FD CQ FD DE +0K" 405'TextBuffer5 405 T$(5)=" DE +0+9[" 406'TextBuffer6 406 T$(6)=" R = +9[" 407'TextBuffer7 407 T$(7)=" TU QRZ +0" 408'TextBuffer8 408 T$(8)=" TU QRZ FD +0" == File FDCLAS.DO == 409'TextBuffer9 409 T$(9)="3A 3A SFL SFL "'class 3A, section South Florida 78 T$(J%)="":PRINTCHR$(8)K$" ERASED";:GOTO20 78 GOTO66'view rather than erase Here's the transmission for text buffers 1 through 8. The underscore is shown where a WordSpace appears in transmission. 1 FD_WD8PNL_ 2 FD_FD_WD8PNL_ 3 FD_FD_FD_DE_WD8PNL_WD8PNL_K 4 CQ_FD_CQ_FD_CQ_FD_DE_WD8PNL_K 5 _DE_WD8PNL_3A_3A_SFL_SFL_[ 6 _R_=_3A_3A_SFL_SFL_[ 7 _TU_QRZ_WD8PNL_ 8 _TU_QRZ_FD_WD8PNL_