home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Media Share 9
/
MEDIASHARE_09.ISO
/
hamradio
/
kenwood1.zip
/
TS940.ASC
< prev
next >
Wrap
Text File
|
1990-09-10
|
8KB
|
209 lines
10 REM - TS940.BAS ----------------------------------------
12 REM - DE WK2S at WB2COY BBS in Poughkeepsie, NY
18 CLS
20 COMPORT$="1"
30 COMNUM=VAL(COMPORT$)
32 DIM AR$(300)
34 HILIGHT=1
40 REM - Setup ON conditions -----------------------------
100 ON COM(COMNUM) GOSUB 5000 ' Communications interrupts
110 ON ERROR GOTO 200 ' Error conditions
199 GOTO 500
200 REM - Error trap --------------------------------------
210 IF ERL=5070 THEN RESUME ' ignore comm. errors
220 LOCATE 23,1
240 PRINT "Error ";ERR;" at ";ERL;
250 LINE INPUT "***";A$
260 CLOSE
270 RESUME 500
500 REM - Initialization ----------------------------------
505 COLOR 7,0:CLS:LOCATE 10,1
507 PRINT " TS-940 Control Program"
510 OPEN "COM"+COMPORT$+":4800,N,8" AS #1
520 COM(COMNUM) ON
530 FO$="..........."
532 FOR K=1 TO 10:KEY K,"":NEXT K ' clear PFK display
600 REM - setup PFKeys
601 ON KEY(1) GOSUB 10000:KEY 1,"VFO A ":KEY(1) ON
602 ON KEY(2) GOSUB 11000:KEY 2,"VFO B ":KEY(2) ON
603 ON KEY(3) GOSUB 11500:KEY 3,"Refrsh":KEY(3) ON
605 ON KEY(5) GOSUB 19000:KEY 5,"Load ":KEY(5) ON
609 ON KEY(9) GOSUB 19999:KEY 9,"List ":KEY(9) ON
610 ON KEY(10) GOSUB 25000:KEY 10,"Save ":KEY(10) ON
699 KEY ON
1000 REM - Main loop --------------------------------------
1005 PRINT #1,"AI1;"; ' Auto Information ON
1010 L=0
1020 IF INKEY$=CHR$(27) THEN GOSUB 8000:GOTO 1020
1100 IF L=1 THEN GOSUB 6000:GOSUB 9000:L=0:GOTO 1020
1190 GOTO 1020
5000 REM - Trap ASYNC input -------------------------------
5060 IF EOF(1) THEN RETURN
5070 C$=C$+INPUT$(LOC(1),#1)
5080 IF INSTR(C$,";")=0 THEN GOTO 5060
5090 L=1:CI$=C$:C$="" ' set L=1 when end of data (;) from TS940
5092 RETURN
5096 REM --------------------------------------------------
6000 REM - Parse IF (information) from TS-940 -------------
6001 IF DEBUG=1 THEN LOCATE 24,40:PRINT CI$;
6002 IF MID$(CI$,1,2)<>"IF" THEN RETURN
6010 RIT=VAL(MID$(CI$,24,1))
6020 XIT=VAL(MID$(CI$,25,1))
6030 MC=VAL(MID$(CI$,27,2))
6040 XMIT=VAL(MID$(CI$,29,1))
6050 MODE=VAL(MID$(CI$,30,1))
6060 FUNC=VAL(MID$(CI$,31,1))
6070 SCAN=VAL(MID$(CI$,32,1))
6080 SPLIT=VAL(MID$(CI$,33,1))
6100 MHZ=VAL(MID$(CI$,6,2)):KHZ=VAL(MID$(CI$,8,3)):HZ=VAL(MID$(CI$,11,3))
6112 LOCATE 1,1:PRINT "Freq: ";
6120 PRINT MID$(CI$,6,2);".";MID$(CI$,8,3);".";MID$(CI$,11,3);
6130 LOCATE 1,40:IF RIT THEN COLOR 7,4:PRINT "RIT":COLOR 7,0 ELSE PRINT " ";
6140 LOCATE 1,48:IF XIT THEN COLOR 7,4:PRINT "XIT":COLOR 7,0 ELSE PRINT " ";
6150 IF (RIT+XIT)=0 THEN COLOR 7,0 ELSE COLOR 7,4
6160 LOCATE 1,53:PRINT MID$(CI$,19,1);" ";MID$(CI$,20,1);".";MID$(CI$,21,2);
6170 COLOR 7,0
6180 LOCATE 2,1
6190 PRINT "Mode: ";
6200 IF MODE=1 THEN PRINT "LSB"
6210 IF MODE=2 THEN PRINT "USB"
6220 IF MODE=3 THEN PRINT "CW "
6230 IF MODE=4 THEN PRINT "FM "
6240 IF MODE=5 THEN PRINT "AM "
6250 IF MODE=6 THEN PRINT "FSK"
6290 LOCATE 3,1
6300 PRINT "Function: ";
6310 IF FUNC=0 THEN PRINT "VFO A ";
6320 IF FUNC=1 THEN PRINT "VFO B ";
6330 IF FUNC=2 THEN PRINT "Memory ";:PRINT MC;
6340 RETURN
8000 REM - process keyboard input -------------------------
8010 LOCATE 23,1:PRINT "Enter command ===> ";
8040 LINE INPUT A$
8050 IF A$="" THEN 8900
8060 PRINT #1,A$+";";
8900 LOCATE 23,1:PRINT STRING$(79," ");
8910 RETURN
9000 REM - display freq scale -----------------------------
9010 L=60 ' # increments
9012 M1=INT(80-L)/2 ' left/right margins
9020 SC=L/1000 ' scale
9030 LOCATE 17,1
9040 FOR K=0 TO 900 STEP 100:PRINT TAB(M1+INT(K*SC)); ' display numbers
9050 PRINT USING "###";K;
9060 NEXT K
9110 M=INT(SC*100)-1
9112 LOCATE 18,1
9114 FOR K=0 TO 900 STEP 100:PRINT TAB(M1+INT(K*SC)); ' display line
9116 PRINT ".";:PRINT STRING$(M,"-");
9118 NEXT K
9120 LOCATE 19,1:PRINT STRING$(79," ");
9130 LOCATE 19,1:PRINT TAB(M1+INT(KHZ*SC));"^";
9140 RETURN
10000 REM - Set frequency for VFO A -----------------------
10010 LOCATE 23,1 :PRINT "Freq (VFO A) ===> ";:LINE INPUT FREQ$
10012 IF FREQ$="" THEN GOTO 10100
10020 I=7 - INSTR(FREQ$,".")
10030 FOR K=1 TO 11:MID$(FO$,K,1)="0":NEXT K
10040 FOR K=1 TO LEN(FREQ$)
10050 IF MID$(FREQ$,K,1) = "." THEN 10080
10060 MID$(FO$,I,1) = MID$(FREQ$,K,1)
10070 I=I+1
10080 NEXT K
10090 PRINT #1,"FA"+FO$+";";
10100 LOCATE 23,1 :PRINT STRING$(79," ");
10110 PRINT #1,"FN0;"; ' select VFO
10120 RETURN
11000 REM - Set frequency for VFO B -----------------------
11010 LOCATE 23,1 :PRINT "Freq (VFO B) ===> ";:LINE INPUT FREQ$
11012 IF FREQ$="" THEN GOTO 11100
11020 I=7 - INSTR(FREQ$,".")
11030 FOR K=1 TO 11:MID$(FO$,K,1)="0":NEXT K
11040 FOR K=1 TO LEN(FREQ$)
11050 IF MID$(FREQ$,K,1) = "." THEN 11080
11060 MID$(FO$,I,1) = MID$(FREQ$,K,1)
11070 I=I+1
11080 NEXT K
11090 PRINT #1,"FB"+FO$+";";
11100 LOCATE 23,1 :PRINT STRING$(79," ");
11110 PRINT #1,"FN1;"; ' select VFO
11120 RETURN
11500 REM - Issue IF; command to refresh display
11510 CLS
11520 PRINT #1,"IF;";
11530 RETURN
19000 REM - Read frequency file (frequency in mHz in first 8 chars of each line)
19001 CLS
19002 PRINT "Frequency files available:": FILES "*.swl"
19004 INPUT "Enter frequency file name: ";A$
19006 IF A$="" THEN CLS:RETURN
19007 IF INSTR(A$,".")=0 THEN A$=A$+".SWL"
19010 OPEN A$ FOR INPUT AS #3
19012 IFREQ=0:ORIG=0
19020 IF EOF(3) THEN 19100
19050 LINE INPUT #3,A$
19052 IF MID$(A$,1,1)<>"*" THEN IFREQ=IFREQ+1:AR$(IFREQ)=A$
19060 GOTO 19020
19100 CLOSE #3
19200 CLS:RETURN
19999 KEY(9) OFF ' disable LIST while in LIST
20000 COLOR 7,0:CLS:IF ORIG<0 THEN ORIG=0 ELSE IF ORIG>IFREQ THEN ORIG=IFREQ-20
20005 IF HILIGHT<1 THEN HILIGHT=1 ELSE IF HILIGHT>IFREQ THEN HILIGHT=IFREQ
20010 LL=IFREQ-ORIG:IF LL>20 THEN LL=20
20040 FOR K=1 TO LL
20050 IF K+ORIG=HILIGHT THEN COLOR 0,7 ELSE COLOR 7,0
20060 PRINT AR$(K+ORIG)
20070 NEXT K
20080 F10=0 ' reset F10 key flag
20090 COLOR 7,0
20100 IF F10=1 THEN 20000 ELSE A$=INKEY$:IF A$="" THEN 20100
20104 IF ASC(A$)=27 THEN CLS:KEY(9) ON:RETURN ' Esc => gets out
20110 IF ASC(A$)=13 THEN GOSUB 20500:GOTO 20100 ' Enter => select frequency
20120 IF LEN(A$)<2 THEN 20100
20130 K=ASC(MID$(A$,2,1))
20136 IF K=73 THEN ORIG=ORIG-20:HILIGHT=HILIGHT-20:GOTO 20000 ' PgUp
20137 IF K=81 THEN ORIG=ORIG+20:HILIGHT=HILIGHT+20:GOTO 20000 ' PgDn
20140 IF K=72 THEN GOTO 20200 ' Up arrow
20150 IF K=80 THEN GOTO 20300 ' Down arrow
20160 IF K=71 THEN CLS:KEY ON:RETURN ' Home => gets out
20170 GOTO 20100
20200 IF HILIGHT-ORIG<=1 THEN HILIGHT=HILIGHT-1:ORIG=ORIG-20:GOTO 20000 ELSE LOCATE HILIGHT-ORIG,1
20210 PRINT AR$(HILIGHT);
20220 HILIGHT=HILIGHT-1
20230 LOCATE HILIGHT-ORIG,1
20240 COLOR 0,7:PRINT AR$(HILIGHT);:COLOR 7,0
20250 GOTO 20100
20300 IF HILIGHT-ORIG>=LL THEN BEEP:HILIGHT=HILIGHT+1:ORIG=ORIG+20:GOTO 20000 ELSE LOCATE HILIGHT-ORIG,1
20310 PRINT AR$(HILIGHT);
20320 HILIGHT=HILIGHT+1
20330 LOCATE HILIGHT-ORIG,1
20340 COLOR 0,7:PRINT AR$(HILIGHT);:COLOR 7,0
20350 GOTO 20100
20500 LOCATE 24,1:PRINT STRING$(40," ");:LOCATE 24,1:PRINT LEFT$(AR$(HILIGHT),40);
20505 FREQ$=LEFT$(AR$(HILIGHT),18):GOSUB 30000 ' set freq in current VFO
20507 IF DEBUG=1 THEN PRINT " - ";FO$;
20510 RETURN
25000 REM - Save current frequency ------------------------
25010 LOCATE 23,1 :PRINT "Description ===> ";:LINE INPUT DESC$
25012 LOCATE 23,1 :PRINT STRING$(79," ");
25020 IFREQ=IFREQ+1
25030 AR$(IFREQ)=MID$(CI$,6,2)+"."+MID$(CI$,8,3)+MID$(CI$,11,3)+" "+DESC$
25050 F10=1 ' F10 key flag
25060 RETURN
30000 REM - convert FREQ$ to FO$ and set in current VFO
30001 IF MID$(FREQ$,1,1)<>" " THEN 30010
30002 FOR K=1 TO LEN(FREQ$)
30003 IF MID$(FREQ$,K,1)=" " THEN FREQ$=RIGHT$(FREQ$,(LEN(FREQ$)-1)):K=K-1 ELSE K=999
30004 NEXT K
30010 I=7-INSTR(FREQ$,".")
30020 FOR K=1 TO 11:MID$(FO$,K,1)="0":NEXT K ' clear FO$
30030 FOR K=1 TO LEN(FREQ$)
30035 IF MID$(FREQ$,K,1) = " " THEN K=999:GOTO 30080
30040 IF MID$(FREQ$,K,1) = "." THEN 30080
30050 MID$(FO$,I,1) = MID$(FREQ$,K,1)
30060 I=I+1
30080 NEXT K
30090 CMD$="FA": IF FUNC=1 THEN CMD$="FB" ' command to set current VFO
30094 PRINT #1,CMD$+FO$+";";
30100 RETURN