home *** CD-ROM | disk | FTP | other *** search
/ Media Share 9 / MEDIASHARE_09.ISO / hamradio / kenwood1.zip / TS940.ASC < prev    next >
Text File  |  1990-09-10  |  8KB  |  209 lines

  1. 10 REM - TS940.BAS ----------------------------------------
  2. 12 REM - DE WK2S at WB2COY BBS in Poughkeepsie, NY
  3. 18 CLS
  4. 20 COMPORT$="1"
  5. 30 COMNUM=VAL(COMPORT$)
  6. 32 DIM AR$(300)
  7. 34 HILIGHT=1
  8. 40 REM - Setup ON conditions -----------------------------
  9. 100 ON COM(COMNUM) GOSUB 5000  ' Communications interrupts
  10. 110 ON ERROR GOTO 200          ' Error conditions
  11. 199 GOTO 500
  12. 200 REM - Error trap --------------------------------------
  13. 210 IF ERL=5070 THEN RESUME    ' ignore comm. errors
  14. 220 LOCATE 23,1
  15. 240 PRINT "Error ";ERR;" at ";ERL;
  16. 250 LINE INPUT "***";A$
  17. 260 CLOSE
  18. 270 RESUME 500
  19. 500 REM - Initialization ----------------------------------
  20. 505 COLOR 7,0:CLS:LOCATE 10,1
  21. 507 PRINT "                          TS-940 Control Program"
  22. 510 OPEN "COM"+COMPORT$+":4800,N,8" AS #1
  23. 520 COM(COMNUM) ON
  24. 530 FO$="..........."
  25. 532 FOR K=1 TO 10:KEY K,"":NEXT K ' clear PFK display
  26. 600 REM - setup PFKeys
  27. 601 ON KEY(1) GOSUB 10000:KEY 1,"VFO A ":KEY(1) ON
  28. 602 ON KEY(2) GOSUB 11000:KEY 2,"VFO B ":KEY(2) ON
  29. 603 ON KEY(3) GOSUB 11500:KEY 3,"Refrsh":KEY(3) ON
  30. 605 ON KEY(5) GOSUB 19000:KEY 5,"Load  ":KEY(5) ON
  31. 609 ON KEY(9) GOSUB 19999:KEY 9,"List ":KEY(9) ON
  32. 610 ON KEY(10) GOSUB 25000:KEY 10,"Save ":KEY(10) ON
  33. 699 KEY ON
  34. 1000 REM - Main loop --------------------------------------
  35. 1005 PRINT #1,"AI1;"; ' Auto Information ON
  36. 1010 L=0
  37. 1020 IF INKEY$=CHR$(27) THEN GOSUB 8000:GOTO 1020
  38. 1100 IF L=1 THEN GOSUB 6000:GOSUB 9000:L=0:GOTO 1020
  39. 1190 GOTO 1020
  40. 5000 REM - Trap ASYNC input -------------------------------
  41. 5060 IF EOF(1) THEN RETURN
  42. 5070 C$=C$+INPUT$(LOC(1),#1)
  43. 5080 IF INSTR(C$,";")=0 THEN GOTO 5060
  44. 5090 L=1:CI$=C$:C$="" ' set L=1 when end of data (;) from TS940
  45. 5092 RETURN
  46. 5096 REM --------------------------------------------------
  47. 6000 REM - Parse IF (information) from TS-940 -------------
  48. 6001 IF DEBUG=1 THEN LOCATE 24,40:PRINT CI$;
  49. 6002 IF MID$(CI$,1,2)<>"IF" THEN RETURN
  50. 6010 RIT=VAL(MID$(CI$,24,1))
  51. 6020 XIT=VAL(MID$(CI$,25,1))
  52. 6030 MC=VAL(MID$(CI$,27,2))
  53. 6040 XMIT=VAL(MID$(CI$,29,1))
  54. 6050 MODE=VAL(MID$(CI$,30,1))
  55. 6060 FUNC=VAL(MID$(CI$,31,1))
  56. 6070 SCAN=VAL(MID$(CI$,32,1))
  57. 6080 SPLIT=VAL(MID$(CI$,33,1))
  58. 6100 MHZ=VAL(MID$(CI$,6,2)):KHZ=VAL(MID$(CI$,8,3)):HZ=VAL(MID$(CI$,11,3))
  59. 6112 LOCATE 1,1:PRINT "Freq: ";
  60. 6120 PRINT MID$(CI$,6,2);".";MID$(CI$,8,3);".";MID$(CI$,11,3);
  61. 6130 LOCATE 1,40:IF RIT THEN COLOR 7,4:PRINT "RIT":COLOR 7,0 ELSE PRINT "   ";
  62. 6140 LOCATE 1,48:IF XIT THEN COLOR 7,4:PRINT "XIT":COLOR 7,0 ELSE PRINT "   ";
  63. 6150 IF (RIT+XIT)=0 THEN COLOR 7,0 ELSE COLOR 7,4
  64. 6160 LOCATE 1,53:PRINT MID$(CI$,19,1);" ";MID$(CI$,20,1);".";MID$(CI$,21,2);
  65. 6170 COLOR 7,0
  66. 6180 LOCATE 2,1
  67. 6190 PRINT "Mode: ";
  68. 6200 IF MODE=1 THEN PRINT "LSB"
  69. 6210 IF MODE=2 THEN PRINT "USB"
  70. 6220 IF MODE=3 THEN PRINT "CW "
  71. 6230 IF MODE=4 THEN PRINT "FM "
  72. 6240 IF MODE=5 THEN PRINT "AM "
  73. 6250 IF MODE=6 THEN PRINT "FSK"
  74. 6290 LOCATE 3,1
  75. 6300 PRINT "Function: ";
  76. 6310 IF FUNC=0 THEN PRINT "VFO A     ";
  77. 6320 IF FUNC=1 THEN PRINT "VFO B     ";
  78. 6330 IF FUNC=2 THEN PRINT "Memory ";:PRINT MC;
  79. 6340 RETURN
  80. 8000 REM - process keyboard input -------------------------
  81. 8010 LOCATE 23,1:PRINT "Enter command ===> ";
  82. 8040 LINE INPUT A$
  83. 8050 IF A$="" THEN 8900
  84. 8060 PRINT #1,A$+";";
  85. 8900 LOCATE 23,1:PRINT STRING$(79," ");
  86. 8910 RETURN
  87. 9000 REM - display freq scale -----------------------------
  88. 9010 L=60 ' # increments
  89. 9012 M1=INT(80-L)/2 ' left/right margins
  90. 9020 SC=L/1000 ' scale
  91. 9030 LOCATE 17,1
  92. 9040 FOR K=0 TO 900 STEP 100:PRINT TAB(M1+INT(K*SC)); ' display numbers
  93. 9050   PRINT USING "###";K;
  94. 9060 NEXT K
  95. 9110 M=INT(SC*100)-1
  96. 9112 LOCATE 18,1
  97. 9114 FOR K=0 TO 900 STEP 100:PRINT TAB(M1+INT(K*SC)); ' display line
  98. 9116   PRINT ".";:PRINT STRING$(M,"-");
  99. 9118 NEXT K
  100. 9120 LOCATE 19,1:PRINT STRING$(79," ");
  101. 9130 LOCATE 19,1:PRINT TAB(M1+INT(KHZ*SC));"^";
  102. 9140 RETURN
  103. 10000 REM - Set frequency for VFO A -----------------------
  104. 10010 LOCATE 23,1 :PRINT "Freq (VFO A) ===> ";:LINE INPUT FREQ$
  105. 10012 IF FREQ$="" THEN GOTO 10100
  106. 10020 I=7 - INSTR(FREQ$,".")
  107. 10030 FOR K=1 TO 11:MID$(FO$,K,1)="0":NEXT K
  108. 10040 FOR K=1 TO LEN(FREQ$)
  109. 10050   IF MID$(FREQ$,K,1) = "." THEN 10080
  110. 10060   MID$(FO$,I,1) = MID$(FREQ$,K,1)
  111. 10070   I=I+1
  112. 10080 NEXT K
  113. 10090 PRINT #1,"FA"+FO$+";";
  114. 10100 LOCATE 23,1 :PRINT STRING$(79," ");
  115. 10110 PRINT #1,"FN0;"; ' select VFO
  116. 10120 RETURN
  117. 11000 REM - Set frequency for VFO B -----------------------
  118. 11010 LOCATE 23,1 :PRINT "Freq (VFO B) ===> ";:LINE INPUT FREQ$
  119. 11012 IF FREQ$="" THEN GOTO 11100
  120. 11020 I=7 - INSTR(FREQ$,".")
  121. 11030 FOR K=1 TO 11:MID$(FO$,K,1)="0":NEXT K
  122. 11040 FOR K=1 TO LEN(FREQ$)
  123. 11050   IF MID$(FREQ$,K,1) = "." THEN 11080
  124. 11060   MID$(FO$,I,1) = MID$(FREQ$,K,1)
  125. 11070   I=I+1
  126. 11080 NEXT K
  127. 11090 PRINT #1,"FB"+FO$+";";
  128. 11100 LOCATE 23,1 :PRINT STRING$(79," ");
  129. 11110 PRINT #1,"FN1;"; ' select VFO
  130. 11120 RETURN
  131. 11500 REM - Issue IF; command to refresh display
  132. 11510 CLS
  133. 11520 PRINT #1,"IF;";
  134. 11530 RETURN
  135. 19000 REM - Read frequency file (frequency in mHz in first 8 chars of each line)
  136. 19001 CLS
  137. 19002 PRINT "Frequency files available:": FILES "*.swl"
  138. 19004 INPUT "Enter frequency file name: ";A$
  139. 19006 IF A$="" THEN CLS:RETURN
  140. 19007 IF INSTR(A$,".")=0 THEN A$=A$+".SWL"
  141. 19010 OPEN A$ FOR INPUT AS #3
  142. 19012 IFREQ=0:ORIG=0
  143. 19020 IF EOF(3) THEN 19100
  144. 19050 LINE INPUT #3,A$
  145. 19052 IF MID$(A$,1,1)<>"*" THEN IFREQ=IFREQ+1:AR$(IFREQ)=A$
  146. 19060 GOTO 19020
  147. 19100 CLOSE #3
  148. 19200 CLS:RETURN
  149. 19999 KEY(9) OFF ' disable LIST while in LIST
  150. 20000 COLOR 7,0:CLS:IF ORIG<0 THEN ORIG=0 ELSE IF ORIG>IFREQ THEN ORIG=IFREQ-20
  151. 20005 IF HILIGHT<1 THEN HILIGHT=1 ELSE IF HILIGHT>IFREQ THEN HILIGHT=IFREQ
  152. 20010 LL=IFREQ-ORIG:IF LL>20 THEN LL=20
  153. 20040 FOR K=1 TO LL
  154. 20050   IF K+ORIG=HILIGHT THEN COLOR 0,7 ELSE COLOR 7,0
  155. 20060   PRINT AR$(K+ORIG)
  156. 20070 NEXT K
  157. 20080 F10=0 ' reset F10 key flag
  158. 20090 COLOR 7,0
  159. 20100 IF F10=1 THEN 20000 ELSE A$=INKEY$:IF A$="" THEN 20100
  160. 20104 IF ASC(A$)=27 THEN CLS:KEY(9) ON:RETURN ' Esc => gets out
  161. 20110 IF ASC(A$)=13 THEN GOSUB 20500:GOTO 20100 ' Enter => select frequency
  162. 20120 IF LEN(A$)<2 THEN 20100
  163. 20130 K=ASC(MID$(A$,2,1))
  164. 20136 IF K=73 THEN ORIG=ORIG-20:HILIGHT=HILIGHT-20:GOTO 20000 ' PgUp
  165. 20137 IF K=81 THEN ORIG=ORIG+20:HILIGHT=HILIGHT+20:GOTO 20000 ' PgDn
  166. 20140 IF K=72 THEN GOTO 20200 ' Up arrow
  167. 20150 IF K=80 THEN GOTO 20300 ' Down arrow
  168. 20160 IF K=71 THEN CLS:KEY ON:RETURN ' Home => gets out
  169. 20170 GOTO 20100
  170. 20200 IF HILIGHT-ORIG<=1 THEN HILIGHT=HILIGHT-1:ORIG=ORIG-20:GOTO 20000 ELSE LOCATE HILIGHT-ORIG,1
  171. 20210 PRINT AR$(HILIGHT);
  172. 20220 HILIGHT=HILIGHT-1
  173. 20230 LOCATE HILIGHT-ORIG,1
  174. 20240 COLOR 0,7:PRINT AR$(HILIGHT);:COLOR 7,0
  175. 20250 GOTO 20100
  176. 20300 IF HILIGHT-ORIG>=LL THEN BEEP:HILIGHT=HILIGHT+1:ORIG=ORIG+20:GOTO 20000 ELSE LOCATE HILIGHT-ORIG,1
  177. 20310 PRINT AR$(HILIGHT);
  178. 20320 HILIGHT=HILIGHT+1
  179. 20330 LOCATE HILIGHT-ORIG,1
  180. 20340 COLOR 0,7:PRINT AR$(HILIGHT);:COLOR 7,0
  181. 20350 GOTO 20100
  182. 20500 LOCATE 24,1:PRINT STRING$(40," ");:LOCATE 24,1:PRINT LEFT$(AR$(HILIGHT),40);
  183. 20505 FREQ$=LEFT$(AR$(HILIGHT),18):GOSUB 30000 ' set freq in current VFO
  184. 20507 IF DEBUG=1 THEN PRINT " - ";FO$;
  185. 20510 RETURN
  186. 25000 REM - Save current frequency ------------------------
  187. 25010 LOCATE 23,1 :PRINT "Description ===> ";:LINE INPUT DESC$
  188. 25012 LOCATE 23,1 :PRINT STRING$(79," ");
  189. 25020 IFREQ=IFREQ+1
  190. 25030 AR$(IFREQ)=MID$(CI$,6,2)+"."+MID$(CI$,8,3)+MID$(CI$,11,3)+" "+DESC$
  191. 25050 F10=1 ' F10 key flag
  192. 25060 RETURN
  193. 30000 REM - convert FREQ$ to FO$ and set in current VFO
  194. 30001 IF MID$(FREQ$,1,1)<>" " THEN 30010
  195. 30002 FOR K=1 TO LEN(FREQ$)
  196. 30003 IF MID$(FREQ$,K,1)=" " THEN FREQ$=RIGHT$(FREQ$,(LEN(FREQ$)-1)):K=K-1 ELSE K=999
  197. 30004 NEXT K
  198. 30010 I=7-INSTR(FREQ$,".")
  199. 30020 FOR K=1 TO 11:MID$(FO$,K,1)="0":NEXT K ' clear FO$
  200. 30030 FOR K=1 TO LEN(FREQ$)
  201. 30035   IF MID$(FREQ$,K,1) = " " THEN K=999:GOTO 30080
  202. 30040   IF MID$(FREQ$,K,1) = "." THEN 30080
  203. 30050   MID$(FO$,I,1) = MID$(FREQ$,K,1)
  204. 30060   I=I+1
  205. 30080 NEXT K
  206. 30090 CMD$="FA": IF FUNC=1 THEN CMD$="FB" ' command to set current VFO
  207. 30094 PRINT #1,CMD$+FO$+";";
  208. 30100 RETURN
  209.