home *** CD-ROM | disk | FTP | other *** search
/ HAM Radio 1 / HamRadio.cdr / misc / pc-hamd1 / tty22.bas (.txt) < prev   
Encoding:
GW-BASIC  |  1985-05-09  |  8.4 KB  |  254 lines

  1. 5  'initialize
  2. 10  CLEAR: CLS: DEFINT A-Z: KEY OFF: FALSE=0: TRUE=NOT FALSE: OPTION BASE 0: DIM         A$(31,1): DIM C(128): DIVMSB=&H9: DIVLSB=&HE7: DIM S$(50): XX=1: LN=0
  3. 15  FOR I=1 TO 10: KEY I ,"": NEXT
  4. 17  XX=1:LN=0
  5. 20  GOTO 1000
  6. 25  '
  7. 30  REM *** The following gotos are dummies used as pointers.
  8. 40  GOTO 10000 ' *** subroutine to write header
  9. 50  GOTO 11000 ' *** subroutine to build translate table arrays.
  10. 60  GOTO 12000 ' *** subroutine to open comm file for receive.
  11. 70  GOTO 12500 ' *** open comm file for transmit
  12. 80  GOTO 13000 ' *** menu
  13. 85  GOTO 13500 ' ***change transmission speed
  14. 86  GOTO 13700 ' *** exit routines
  15. 90  GOTO 14000 ' *** Receive
  16. 95  GOTO 14800 ' *** receive error subroutine
  17. 100  GOTO 15000 ' *** Transmit
  18. 110  GOTO 15100 '*** transmit single character subroutine
  19. 120  GOTO 16000 ' *** function key routines
  20. 130  GOTO 18000 ' *** gosubs to send callsign -- cwid
  21. 200  '
  22. 999  '*** main program
  23. 1000  GOSUB 10000
  24. 1010  GOSUB 11000
  25. 1020  GOTO 13000
  26. 9997  END
  27. 9998  '
  28. 9999  REM *** Print Header
  29. 10000  LOCATE 3,5: PRINT CHR$(201);STRING$(29,205);CHR$(187)
  30. 10005  FOR I=4 TO 17: LOCATE I,5: PRINT CHR$(186);: LOCATE I,35:                          PRINT CHR$(186);: NEXT
  31. 10010  LOCATE 18,5: PRINT CHR$(200);STRING$(29,205);CHR$(188)
  32. 10020  COLOR 10,0: LOCATE 5,12: PRINT "***Murray/TTY***";: LOCATE 7,15: PRINT " de AA4L ";: LOCATE 9,12: PRINT "**Bob Johnson**";: COLOR 7,0
  33. 10030  LOCATE 11,14: PRINT "Version 2.2";: LOCATE 13,15: PRINT "2/14/1983";:              LOCATE 15,13: PRINT "Public domain";
  34. 10040  COLOR 18,0: LOCATE 20,5: PRINT "any key";: COLOR 2,0: BEEP
  35. 10050  Y$=INKEY$: IF Y$="" THEN 10050
  36. 10060  RETURN
  37. 10998  '
  38. 10999  REM *** Build translate tables
  39. 11000  'ascii to murray table for xmt
  40. 11020  DATA 0,0,0,0,0,0,0,133,0,0,2,0,0,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,         141,145,148,137,0,154,139,143,146,0,0,140,131,156,157,150,151,147,129,          138,144,149,135,134,152,142,158,0,0,0,153,0
  41. 11030  DATA 3,25,14,9,1,13,26,20,6,11,15,18,28,12,24,22,23,10,5,16,7,30,19,29,21,        17,0,133,0,0,0,0,3,25,14,9,1,13,26,20,6,11,15,18,28,12,24,22,23,10,5,16,        7,30,19,29,21,17,0,0,0,0,0,0
  42. 11040  FOR I=0 TO 128:READ C(I):NEXT
  43. 11050  ' *** In the transmit table, chararacters which require the figs shift            have had hex `100' (decimal 128) added to the murray value.
  44. 11060  'murray to ascii table for rcv
  45. 11070  DATA "","",E,3,"","",A,-," "," ",S,"",I,8,U,7,"","",D,$,R,4,J,',N,",",F,!,      C,":",K,(,T,5,Z,"",L,),W,2,H,#,Y,6,P,0,Q,1,O,9,B,?,G,&,f,f,M,.,X,/,V,;,         ~,~
  46. 11080  FOR I=0 TO 31: FOR J=0 TO 1: READ A$(I,J): NEXT: NEXT: A$(5,1)=CHR$(7):           A$(17,1)=CHR$(34): A$(2,0)=CHR$(10): A$(2,1)=CHR$(10): A$(8,0)=CHR$(13):        A$(8,1)=CHR$(13)
  47. 11090  RETURN
  48. 11998  '
  49. 11999  REM *** open comm file for receive
  50. 12000  OPEN "COM1:110,N,5,2,RS,CS0,DS0,CD0" AS #1:WIDTH #1,255
  51. 12005  V=INP(&H3F9) 'save int reg status
  52. 12006  OUT &H3F9,0 'disable comm interrupts
  53. 12010  OUT &H3FB,(INP(&H3FB) OR 128) 'enable speed change
  54. 12020  OUT &H3F8,DIVLSB: OUT &H3F9,DIVMSB 'change speed
  55. 12030  OUT &H3FB,(INP (&H3FB) AND 127) 'restore
  56. 12035  OUT &H3F9,V 'restore int reg status
  57. 12040  RETURN
  58. 12498  '
  59. 12499  REM *** open comm file for transmit
  60. 12500  OPEN "COM1:110,N,5,2,CS0,DS0,CD0" AS #1:WIDTH #1,255
  61. 12505  V=INP(&H3F9) 'save int reg status
  62. 12506  OUT &H3F9,0 'disable comm interrupts
  63. 12510  OUT &H3FB,(INP(&H3FB) OR 128) 'enable speed change
  64. 12520  OUT &H3F8,DIVLSB: OUT &H3F9,DIVMSB 'change speed
  65. 12530  OUT &H3FB,(INP (&H3FB) AND 127) 'restore
  66. 12535  OUT &H3F9,V 'restore int reg status
  67. 12540  RETURN
  68. 12998  '
  69. 12999  REM *** MENU
  70. 13000  CLS
  71. 13010  PRINT "      *** Function Menu ***"
  72. 13020  PRINT
  73. 13030  PRINT "<1> Change transmission speed."
  74. 13040  PRINT "    Note: Default is 45.45 Baud (60 wpm).": PRINT
  75. 13050  PRINT "<2> Exit to BASIC.": PRINT
  76. 13060  PRINT "<3> Exit to DOS.": PRINT
  77. 13065  PRINT "<4> Switch to 110 baud ASCII": PRINT
  78. 13070  PRINT "<"+CHR$(24)+"> Receive": PRINT
  79. 13080  PRINT "<"+CHR$(25)+"> Transmit": PRINT
  80. 13085  DEF SEG=0: POKE 1050,PEEK (1052): POKE &H417,&H40: DEF SEG
  81. 13090  BEEP: PRINT "Enter Choice: "
  82. 13100  CHOICE$=INKEY$
  83. 13105  IF CHOICE$="" THEN 13100
  84. 13106  CLS
  85. 13110  IF LEN(CHOICE$)=2 THEN IF RIGHT$(CHOICE$,1)="P" THEN 15000 ELSE IF              RIGHT$(CHOICE$,1)="H" THEN 14000 ELSE GOTO 13010
  86. 13120  IF VAL(CHOICE$)=1 THEN 13500 ELSE IF VAL(CHOICE$)=2 THEN 13700 ELSE             IF VAL(CHOICE$)=3 THEN 13700 ELSE IF VAL(CHOICE$)=4 THEN CHAIN "asctty"         ELSE 13010
  87. 13130  STOP
  88. 13498  '
  89. 13499  REM *** Speed change
  90. 13500  CLS
  91. 13505  PRINT "       ** Select Transmission Speed **": PRINT
  92. 13510  PRINT "<1> 60 wpm .... 45.45 Baud": PRINT
  93. 13520  PRINT "<2> 75 wpm .... 56.92 Baud": PRINT
  94. 13530  PRINT "<3> 100 wpm ... 74.20 Baud": PRINT
  95. 13540  BEEP: PRINT "Enter choice: "
  96. 13550  CHOICE$=INKEY$
  97. 13560  IF CHOICE$="" THEN 13550
  98. 13570  CHOICE=VAL(CHOICE$)
  99. 13580  ON CHOICE GOTO 13600,13640,13680
  100. 13590  GOTO 13550
  101. 13595  '
  102. 13600  DIVMSB=&H9: DIVLSB=&HE7: GOTO 13000
  103. 13639  '
  104. 13640  DIVMSB=&H7: DIVLSB=&HE8: GOTO 13000
  105. 13679  '
  106. 13680  DIVMSB=&H6: DIVLSB=&H11: GOTO 13000
  107. 13698  '
  108. 13699  REM *** Exit to BASIC
  109. 13700  PRINT : PRINT : PRINT "Off at ";DATE$;"    ";TIME$
  110. 13710  IF PRN THEN PRINT#2,: PRINT#2,"Off at ";DATE$;"     ";TIME$
  111. 13720  CLOSE
  112. 13730  IF VAL(CHOICE$)=3 THEN 13750
  113. 13740  END
  114. 13750  SYSTEM
  115. 13800  STOP
  116. 13998  '
  117. 13999  REM *** Receive Routine
  118. 14000  PRINT :PRINT :PRINT DATE$ SPC(5) TIME$
  119. 14003  Y=CSRLIN
  120. 14005  SHFT=0
  121. 14010  LOCATE 25,1: COLOR 0,7
  122. 14020  PRINT" F1=> cr & lf on/off ... F2=> printer on/off ... F10=> menu ... <"+CHR$(25)+">=> transmit ";: COLOR 7,0:LOCATE Y,1
  123. 14025  DEF SEG =0: POKE 1050, PEEK(1052): DEF SEG
  124. 14030  ON KEY(1) GOSUB 14900: KEY(1) ON
  125. 14040  ON KEY(2) GOSUB 14920: KEY(2) ON
  126. 14050  ON KEY(10) GOSUB 14940: KEY(10) ON
  127. 14060  ON KEY(14) GOSUB 14960: KEY(14) ON
  128. 14065  GOSUB 12000
  129. 14066  ON ERROR GOTO 14800
  130. 14070  IF MENU.RET OR XMT.FL THEN 14080 ELSE 14100
  131. 14080  KEY(1) OFF: KEY(2) OFF: KEY(10) OFF: KEY(14) OFF: ON ERROR GOTO 0:              CLOSE #1
  132. 14090  IF MENU.RET THEN MENU.RET = FALSE: GOTO 13000
  133. 14095  IF XMT.FL THEN XMT.FL=FALSE: GOTO 15000
  134. 14099  '
  135. 14100  IF EOF(1) THEN 14400
  136. 14110  X$=INPUT$(LOC(1),#1)
  137. 14120  FOR I=1 TO LEN(X$)
  138. 14130    MU$=MID$(X$,I,1): IF ASC(MU$)>31 THEN 14210
  139. 14140    AS$=A$(ASC(MU$),SHFT)
  140. 14150    IF AS$=CHR$(13) THEN 14210
  141. 14160    IF AS$=" " THEN SHFT=0: GOTO 14200
  142. 14170    IF AS$=CHR$(10) THEN SHFT=0: IF CRLF THEN AS$=CHR$(13) ELSE AS$=" ":            GOTO 14200
  143. 14180    IF AS$="f" THEN SHFT=1: GOTO 14210
  144. 14190    IF AS$="~" THEN SHFT=0: GOTO 14210
  145. 14200    PRINT AS$;: IF PRN THEN PRINT #2,AS$;
  146. 14210    NEXT
  147. 14220  GOTO 14070
  148. 14399  '
  149. 14400  K$=INKEY$: IF K$="" THEN 14070
  150. 14405  IF LEN(K$)>1 THEN 14070
  151. 14410  Y=CSRLIN: X=POS(0)
  152. 14420  S$(LN)=S$(LN)+K$
  153. 14425  IF K$=CHR$(13) THEN LN =LN+1: XX=1: GOTO 14070
  154. 14430  LOCATE 25,XX,1
  155. 14440  PRINT K$+" CSRLIN";
  156. 14450  XX=XX+1
  157. 14460  IF XX=>75 THEN S$(LN)=S$(LN)+CHR$(13): XX=1: LN=LN+1
  158. 14470  LOCATE Y,X
  159. 14480  GOTO 14070
  160. 14799  '
  161. 14800  IF ERR=25 OR ERR=27 THEN 14810 ELSE 14820
  162. 14810  PRINT: PRINT "check printer": BEEP: PRINT: RESUME
  163. 14820  IF ERR=57 THEN RESUME NEXT
  164. 14830  ON ERROR GOTO 0
  165. 14840  '
  166. 14899  '
  167. 14900  IF CRLF THEN CRLF=FALSE ELSE CRLF=TRUE
  168. 14905  RETURN
  169. 14910  '
  170. 14920  IF NOT PRN THEN OPEN "lpt1:" FOR OUTPUT AS #2: PRN=TRUE: WIDTH #2,255:          RETURN
  171. 14925  CLOSE #2: PRN=FALSE: RETURN
  172. 14930  '
  173. 14940  MENU.RET=TRUE: RETURN
  174. 14950  '
  175. 14960  XMT.FL=TRUE: RETURN
  176. 14970  '
  177. 14998  '
  178. 14999  '*** transmit
  179. 15000  PRINT: PRINT: PRINT DATE$ SPC(5) TIME$
  180. 15010  Y=CSRLIN
  181. 15020  SHIFT=FALSE
  182. 15030  COLOR 0,7: LOCATE 25,1
  183. 15040  PRINT" F1-F3=>Msg1-3 \ F4=>CQ \ F5=>de \ F6=>Test \ F7=>id \ F10=>Menu \ "+CHR$(24)+"=>Receive  ";
  184. 15050  COLOR 7,0: LOCATE Y,1,1
  185. 15060  GOSUB 12500
  186. 15070  DEF SEG=0: POKE 1050,PEEK(1052): DEF SEG
  187. 15080  X$=INKEY$: IF X$="" THEN 15080
  188. 15090  IF LEN(X$)>1 THEN 15200
  189. 15092  GOSUB 15100
  190. 15093  GOTO 15080
  191. 15098  '
  192. 15099  '*** this subroutine converts a character from ascii to murray                   and transmits it
  193. 15100  IF X$=CHR$(13) THEN PRINT X$;: PRINT #1,CHR$(2)+CHR$(8)+CHR$(31);: SHIFT=FALSE: RETURN
  194. 15110  IF X$=" " THEN PRINT X$;: PRINT #1,CHR$(4)+CHR$(31);: SHIFT=FALSE: RETURN
  195. 15120  MU=C(ASC(X$)): IF MU=0 THEN RETURN
  196. 15130  IF MU>127 THEN IF NOT SHIFT THEN SHIFT=TRUE: PRINT #1,CHR$(27);
  197. 15135  IF MU>127 THEN MU=MU-128: GOTO 15150
  198. 15140  IF SHIFT THEN SHIFT=FALSE: PRINT #1,CHR$(31);
  199. 15150  PRINT #1,CHR$(MU);: PRINT X$;
  200. 15160  RETURN
  201. 15199  '
  202. 15200  Z=INSTR(";<=>?@ADHC",RIGHT$(X$,1))
  203. 15210  ON Z GOTO 16000,16100,16200,16300,16400,16500,16600,16700,16800,16900
  204. 15220  GOTO 15080
  205. 15998  '
  206. 15999  '*** routines to handle function keys
  207. 16000  FILENM$="msg1"
  208. 16010  GOSUB 17000
  209. 16020  GOTO 15080
  210. 16099  '
  211. 16100  FILENM$="msg2"
  212. 16110  GOSUB 17000
  213. 16120  GOTO 15080
  214. 16199  '
  215. 16200  FILENM$="msg3"
  216. 16210  GOSUB 17000
  217. 16220  GOTO 15080
  218. 16299  '
  219. 16300  MSG$=CHR$(13)+"cq cq cq cq cq cq cq de aa4l aa4l aa4l bob in raleigh nc"
  220. 16310  GOSUB 17500
  221. 16320  GOTO 15080
  222. 16399  '
  223. 16400  MSG$=CHR$(13)+"de aa4l aa4l bob in raleigh nc"
  224. 16410  GOSUB 17500
  225. 16420  GOTO 15080
  226. 16499  '
  227. 16500  MSG$=CHR$(13)+"the quick brown fox jumped over the lazy dog's back"+CHR$(13)+"ryryryryryryryryryryryryryryryryryryryryryryryryryryryry"+CHR$(13)+"1m2m3m4m5m6m7m8m9m0"
  228. 16510  GOSUB 17500
  229. 16520  GOTO 15080
  230. 16599  '
  231. 16600  MSG$=CHR$(13)+"cw id:"
  232. 16610  GOSUB 17500
  233. 16620  CLOSE #1 'close file to purge buffer
  234. 16625  GOSUB 12500 'reopen file to key transmitter
  235. 16630  GOSUB 18000
  236. 16640  GOTO 15080
  237. 16699  '
  238. 16700  CLOSE#1: LOCATE 25,1: PRINT SPACE$(79): GOTO 13000
  239. 16799  '
  240. 16800  CLOSE#1: GOTO 14000
  241. 16888  '
  242. 16889  '***transmit keybd buffer
  243. 16900  FOR II = 0 TO LN-1
  244. 16910  MSG$=S$(II)
  245. 16920  GOSUB 17500
  246. 16925  S$(II)=""
  247. 16930  NEXT II
  248. 16940  LN=0: XX=1
  249. 16950  GOTO 15080
  250. 16998  '
  251. 16999  '*** subroutine to get a message from disk and transmit it
  252. 17000  ON ERROR GOTO 17300
  253. 17010  OPEN FILE?LOADTHEN?MOTORTHEN?BSAVETHEN?BLOADTHEN?SOUNDTHEN?BEEPTHEN?PSETTHEN?<0xCB!>THEN?TOTHEN?THENTHEN?TAB(THEN?FNTHEN?SPC(THEN?NOTTHEN?STRING$THEN?USINGTHEN?INSTRTHEN?'THEN?VARPTRTHEN?CSRLINTHEN?POINTTHEN?OFFTHEN?INKEY$THEN?<0xDF!>THEN?<0xE0!>THEN?<0xE1!>THEN?<0xE2!>THEN?>THEN?=THEN?-THEN?*THEN?ANDTHEN?ORTHEN?XORTHEN?EQVTHEN?IMPTHEN?MODTHEN?\THEN?<UNK! {00F5}>THEN?<UNK! {00F6}>THEN?<UNK! {00F7}>THEN?<UNK! {00F8}>THEN?<UNK! {00F9}>THEN?<UNK! {00FA}>THEN?<UNK! {00FB}>THEN?<UNK! {00FC}>THEN?<UNK! {FDCD}>?<UNK! {FF04}>THEN?<UNK! {FF05}>THEN?<UNK! {FF06}>THEN?<UNK! {FF08}>THEN?<UNK! {FF09}>THEN?<UNK! {FF0A}>THEN?<UNK! {FF0B}>THEN?<UNK! {FF0D}>THEN?<UNK! {FF0E}>THEN?<UNK! {FF0F}>THEN?<UNK! {FF1F}>
  254.