1 REM ====================================== 4 REM FS5000 CONTROL PROGRAM V1.4 5 REM RAY ROBINSON VK2ILV 6 REM 13 APRIL 2005 10 REM ====================================== 30 REM 40 GOSUB 100: REM INITIALISE 50 GOSUB 1000: REM GET COMMANDS 60 GOTO 50: REM LOOP 99 END 100 REM ====================================== 110 REM INITIALISE 120 PORT = &H378 130 DATAO = PORT 140 CTRLI = PORT + 1 150 CTRLO = PORT + 2 160 REM DAT = INP(DATAO) 161 DAT = &H0 162 GOSUB 2200 170 REM CTRL = INP(CTRLO) 171 CTRL = &HA 172 GOSUB 5300 180 STAT = INP(CTRLI) 185 R$="0117000": REM 1.170 MHZ 186 T$="0117000": REM 1.170 MHZ 190 RETURN 1000 REM ======================================= 1001 REM GET COMMANDS 1020 PRINT:PRINT "FS5000 CONTROL PROGRAM V1.4" 1021 PRINT "0=OFF" 1022 PRINT "1=ON" 1023 PRINT "2=CLEAR DATA BIT" 1024 PRINT "3=SET A DATA BIT" 1025 PRINT "4=CLEAR CONTROL BIT" 1026 PRINT "5=SET A CONTROL BIT" 1027 PRINT "6=BW 300" 1028 PRINT "7=BW 3000" 1029 PRINT "8=FREQUENCY RECEIVE SET" 1030 PRINT "9=FREQUENCY TRANSMIT SET" 1035 PRINT "X=EXIT" 1040 PRINT "A=PULSE DATA BIT 0" 1041 PRINT "S=PULSE DATA BIT 1" 1042 PRINT "D=PULSE DATA BIT 2" 1043 PRINT "F=PULSE DATA BIT 3" 1044 PRINT "G=PULSE DATA BIT 4" 1045 PRINT "H=PULSE DATA BIT 5" 1047 PRINT "K=PULSE DATA BIT 7" 1052 PRINT "R=RECEIVE" 1053 PRINT "T=TRANSMIT" 1060 INPUT "READY ";N$ 1065 REM ----------------------- 1070 IF N$="0" THEN GOSUB 1300: REM CLEAR SEVERAL LINES 1071 IF N$="1" THEN F=6: GOSUB 2130: REM SET DATA BIT 6 1072 IF N$="2" THEN GOSUB 2000: REM CLEAR A DATA BIT 1073 IF N$="3" THEN GOSUB 2100: REM SET A DATA BIT 1074 IF N$="4" THEN GOSUB 5200: REM CLEAR A CTRL BIT 1075 IF N$="5" THEN GOSUB 5100: REM SET A CTRL BIT 1076 IF N$="6" THEN F=0: GOSUB 5202: GOTO 1000: REM CLEAR CTRL BIT 0 1077 IF N$="7" THEN F=0: GOSUB 5102: GOTO 1000: REM SET CTRL BIT 0 1078 IF N$="8" THEN GOSUB 6000: REM SET RX FREQ 1079 IF N$="9" THEN GOSUB 6100: REM SET TX FREQ 1091 IF N$="A" OR N$="a" THEN F=0: GOSUB 2130: GOSUB 1220: GOSUB 2030 1092 IF N$="S" OR N$="s" THEN F=1: GOSUB 2130: GOSUB 1220: GOSUB 2030 1093 IF N$="D" OR N$="d" THEN F=2: GOSUB 2130: GOSUB 1220: GOSUB 2030 1094 IF N$="F" OR N$="f" THEN F=3: GOSUB 2130: GOSUB 1220: GOSUB 2030 1095 IF N$="G" OR N$="g" THEN F=4: GOSUB 2130: GOSUB 1220: GOSUB 2030 1096 IF N$="H" OR N$="h" THEN F=5: GOSUB 2130: GOSUB 1220: GOSUB 2030 1098 IF N$="K" OR N$="k" THEN F=7: GOSUB 2130: GOSUB 1220: GOSUB 2030 1102 IF N$="R" OR N$="r" THEN GOSUB 1400 1103 IF N$="T" OR N$="t" THEN GOSUB 1500 1105 IF N$="X" OR N$="x" THEN GOTO 99: REM EXIT 1199 RETURN 1200 REM ============================================= 1210 REM WAIT LOOP 1220 Z=100 1230 FOR Y=1 TO Z: NEXT Y: RETURN 1300 REM ============================================= 1310 REM TURN OFF RX AND TX 1320 F=2: GOSUB 5202: REM TURN OFF RF LINE 1330 F=1: GOSUB 5202: REM TURN OFF TX LINE 1340 F=7: GOSUB 2030: REM TURN OFF Tdc LINE 1350 F=5: GOSUB 2030: REM TURN OFF Fman LINE 1360 F=6: GOSUB 2030: REM TURN OFF RECEIVER 1399 RETURN 1400 REM ============================================= 1405 REM RECEIVE MODE 1410 F=2: GOSUB 5202: REM SET RF LOW 1415 F=7: GOSUB 2030: REM SET Tdc LOW 1420 L=7: M=7: F$=R$: GOSUB 6025: REM SET FREQ 1425 PRINT "RECEIVE FREQ ";R$ 1430 RETURN 1500 REM ============================================= 1505 REM TRANSMIT MODE 1506 F=7: GOSUB 2130: REM SET Tdc HIGH 1510 GOSUB 6125: REM SET FREQ 1520 F=2: GOSUB 5102: REM SET RF HIGH 1525 PRINT "TRANSMIT FREQ ";T$ 1530 RETURN 2000 REM ====================================== 2010 REM CLEAR A DATA BIT 2020 INPUT "CLEAR WHICH BIT ",F 2030 P=INT(F) 2040 M%=255-(2^(P)) 2050 DAT = DAT AND M% 2060 GOSUB 2200 2070 RETURN 2100 REM --------------------------- 2110 REM SET A DATA BIT 2120 INPUT "SET WHICH BIT ",F 2130 P=INT(F) 2140 M%=2^(P) 2150 DAT = DAT OR M% 2160 GOSUB 2200 2170 RETURN 2200 REM --------------------------- 2210 REM SEND THE OUTPUT DATA 2230 OUT DATAO,DAT 2240 RETURN 2300 REM --------------------------- 2310 REM SET THE DATA BITS 0 TO 3 2320 INPUT "SET WHICH NUMBER ",X 2330 F=0: GOSUB 2030: F=1: GOSUB 2030: REM CLEAR BITS 0-1 2331 F=2: GOSUB 2030: F=3: GOSUB 2030: REM CLEAR BITS 2-3 2360 IF X=1 OR X=3 OR X=5 OR X=7 OR X=9 OR X=11 OR X=13 OR X=15 THEN GOSUB 2370 2361 IF X=2 OR X=3 OR X=6 OR X=7 OR X=10 OR X=11 OR X=14 OR X=15 THEN GOSUB 2371 2362 IF X=4 OR X=5 OR X=6 OR X=7 OR X=12 OR X=13 OR X=14 OR X=15 THEN GOSUB 2372 2363 IF X=8 OR X=9 OR X=10 OR X=11 THEN GOSUB 2373 2364 IF X=12 OR X=13 OR X=14 OR X=15 THEN GOSUB 2373 2365 RETURN 2370 F=0: GOSUB 2130: RETURN 2371 F=1: GOSUB 2130: RETURN 2372 F=2: GOSUB 2130: RETURN 2373 F=3: GOSUB 2130: RETURN 5000 REM ========================================== 5001 REM OUTPUT CONTROL DATA 5100 REM ----------------------- 5101 INPUT "SET WHICH CONTROL BIT (0-3)",F 5102 IF F=0 THEN GOTO 5205 5103 IF F=1 THEN GOTO 5205 5104 IF F=3 THEN GOTO 5205 5105 P=INT(F) 5110 M%=2^(P) 5120 CTRL=CTRL OR M% 5130 GOSUB 5300 5140 RETURN 5200 REM ----------------------- 5201 INPUT "CLEAR WHICH CTRL BIT (0-3)",F 5202 IF F=0 THEN GOTO 5105 5203 IF F=1 THEN GOTO 5105 5204 IF F=3 THEN GOTO 5105 5205 P=INT(F) 5210 M%=255-(2^(P)) 5220 CTRL=CTRL AND M% 5230 GOSUB 5300 5240 RETURN 5300 REM ----------------------- 5301 REM HERE TO OUTPUT THE CONTROL DATA 5305 OUT CTRLO,CTRL 5306 REM PRINT "PORT",CTRLO; " DATA";CTRL 5310 RETURN 6000 REM =========================================== 6001 REM SET THE RECEIVE FREQUENCY 6010 INPUT "WHAT RECEIVE FREQUENCY (KHZ)=",R$ 6020 M=LEN(R$):L=M: REM GET NUMBER OF DIGITS 6022 IF M<>7 THEN PRINT "ERROR: 7 DIGITS REQUIRED": GOTO 6010 6023 F$=R$ 6025 F=5: GOSUB 2130: REM SET BIT 5 (Fman) 6030 FOR N = 1 TO M: REM LOOP TO SET 7 DIGITS 6031 K$=MID$(F$,L,1):L=L-1:Q=ASC(K$)-48: REM GET DIGIT TO SET 6032 REM PRINT "R$=";R$;"M=";M;"N=";N;"K$=";K$;"L=";L;"Q=";Q 6050 X=Q: GOSUB 2330: GOSUB 1220: REM SET DIGIT 6051 F=4: GOSUB 2130: GOSUB 1220: F=4: GOSUB 2030: REM PULSE BIT 4 (FC) 6070 NEXT N 6073 F=5: GOSUB 2030: REM CLEAR BIT 5 (Fman) 6099 RETURN 6100 REM ---------------------------------- 6101 REM SET THE TRANSMIT FREQUENCY 6110 INPUT "WHAT TRANSMIT FREQUENCY (KHZ)=",T$ 6120 M=LEN(T$): L=M: REM GET NUMBER OF DIGITS 6122 IF M<>7 THEN PRINT "ERROR: 7 DIGITS REQUIRED": GOTO 6110 6125 F=7: GOSUB 2130: REM SET BIT 7 (Tdc) 6126 L=7: M=7: F$=T$: GOSUB 6025: REM SET THE FREQUENCY 6130 F=7: GOSUB 2130: REM SET BIT 7 (Tdc) 6140 L=7: M=7: F$=T$: GOSUB 6025: REM SET THE FREQUENCY (TWICE FORCES A TUNE) 6149 REM GET THE MHZ VALUE AND SET THE LPF ACCORDINGLY 6150 K$=MID$(T$,1,1): Q=ASC(K$)-48: REM GET 10MHZ DIGIT 6151 K$=MID$(T$,2,1): Q=Q*10 + ASC(K$)-48: REM GET 1MHZ DIGIT 6152 REM PRINT Q 6160 X=0 6161 IF Q<=20 THEN X=7 6162 IF Q<=16 THEN X=6 6163 IF Q<=12 THEN X=5 6164 IF Q<=7 THEN X=4 6165 IF Q<=5 THEN X=3 6166 IF Q<=4 THEN X=2 6167 IF Q<=3 THEN X=1 6170 GOSUB 2330: GOSUB 1220: REM SET TX LPF 6199 RETURN 7000 REM ===========================================