'GENERAL DISCLAIMER - - This site and its entire contents is for informational purposes only! 'If you elect to follow any procedure outlined herein, you do so at your own risk. 'I cannot, nor will not, be responsible for any possible damage to radio equipment, personal property, to yourself or to others caused by modifications that you may make to any equipment as a result of your reading of the contents of this site. ''''''''''''''''''''''''''''''' 'USE AT YOUR OWN RISK ' 'WRITTEN BY ROGER CAMERON ' ''''''''''''''''''''''''''''''' '400 PEYTON ' 'CLINTON MO 64735 ' 'www.iland.net/~noyox647 ' ' ' 'REPEATER CONTROLLER ' 'WITH 3 DIGIT DTMF ' 'ENABLE AND DISABLE, ' 'TWO AUX OUTPUT, FAN ' 'CONTROL,BURGLARALARM, ' 'BEACON MODE AND MORE ' ' ' 'IF YOU DECIDE YOU USE THIS ' 'CODE PLEASE SEND N0YOX ' '$20.00 AT THAT TIME I WILL ' 'EMAIL YOU THE LATEST VERSION ' ' ' ''''''''''''''''''''''''''''''' ''''''''''''''''''''''''DTMF CODES'''''''''''''''' '210 CTCSS ON REQUIRES EXTERNAL CTCSS BOARD '211 CTCSS OFF REQUIRES EXTERNAL CTCSS BOARD '531 TOGGLES DTMF ENABLE/DISABLE '222 REPEATER OFF '123 REPEATER ON '189 AUX 1 OFF '188 AUX 1 ON '199 AUX 2 OFF '198 AUX 2 ON '123 FORCE ID '255 TEST ALARM MUST FIRST TURN ALARM ON '788 TOGGLES ALARM '888 BEACON ON '999 BEACON OFF '''''''''''''''''''''''''''''''''''''''''''''''''' '2=DAH 1=DIT 0=SPACE DATA @0,2,1,0,2,2,2,2,2,0,2,1,2,2,0,2,2,2,0,2,1,1,2,0,2,1,1,2,1,0,1,2,1 DATA @60,0 TONE CON 700 '''''''''''''''''''''''''VARIABLES'''''''''''''' IDTIME VAR WORD FANTIME VAR WORD TOTIMER VAR WORD CODE VAR WORD I VAR BYTE DTMF VAR BYTE BCOUNT VAR NIB ALARMC VAR NIB CHARACTER VAR NIB FANST VAR BIT TAILRQ VAR BIT REPEATER VAR BIT BEACONMODE VAR BIT ALARMST VAR BIT CTCSS VAR BIT CORSTATE VAR BIT PROGMODE VAR BIT PROGMODE = 0 CTCSS = 0 RESTART: READ 60,REPEATER IF REPEATER = 1 THEN REPOFF TOTIMER = 0 PAUSE 2000 IDER: IF ALARMC > 7 THEN REALARMC 'AFTER ALARMC > 7 T1S RESETS ALARMC TO 0 HIGH 11 'TURNS TRANSMITTER ON IDTIME = 0 FOR I = 0 TO 32 '32 IS THE NUMBER OF ELEMENTS - 1 IN THE DATA STATEMENT READ I, CHARACTER 'READS CW OUT OF DATA AREA GOSUB MORSE NEXT IF BEACONMODE = 1 THEN BEACON FOR I = 1 TO 100 PAUSE 10 GOSUB CHECKINS IF CORSTATE = 1 THEN CORE NEXT WAAIT: IF REPEATER = 1 THEN REPOFF LOW 9 LOW 11 LOW 5 'turn off ac to power supply FANST = 0 WAAITT: IF REPEATER = 1 THEN REPOFF IF IN15 = 0 THEN ALARM FANTIME = FANTIME + 1 IF FANTIME > 9000 THEN WFAN IDTIME = IDTIME + 1 IDTIME = IDTIME MAX 5450 GOSUB CHECKINS IF CORSTATE = 1 THEN CORE PAUSE 100 GOTO WAAITT CORE: IF REPEATER = 1 THEN REPOFF GOSUB CHECKAUDIO IF IDTIME > 5500 THEN IDER 'ID S IF NEEDED PAUSE 100 IDTIME = IDTIME + 1 'ID COUNTER IF IN4 = 1 THEN DIG1 'GOES TO DTMF SUB IF TONE IS RECONIZED GOSUB CHECKINS IF CORSTATE = 1 THEN PTT IF TAILRQ = 1 THEN TAIL LOW 9 'TURNS OFF AUDIO LOW 11 'TURNS OFF PTT GOTO CORE PTT: 'THIS SUB KEYS TRANSMITTER TAILRQ = 1 'SETS TAIL REQUIRED BIT TO NEEDED HIGH 11 'KEYS TRANSMITTER IF IN15 = 0 THEN ALARM GOSUB CHECKAUDIO GOSUB FAN 'TURNS FAN ON IF TOTIMER > 1800 THEN TIMOUT TOTIMER = TOTIMER + 1 'TIMEOUT COUNTER IF IN4 = 1 THEN DIG1 'GOES TO DTMF SUB IF TONE IS RECONIZED' GOTO CORE TAIL: GOSUB CHECKAUDIO FOR I = 1 TO 35 PAUSE 20 GOSUB CHECKINS IF CORSTATE = 1 THEN CORE NEXT TOTIMER = 0 TAILRQ = 0 FREQOUT 7,200,900 FREQOUT 7,100,400 FOR I = 1 TO 100 PAUSE 20 GOSUB CHECKINS IF CORSTATE = 1 THEN CORE NEXT LOW 11 GOTO CORE WFAN: IF FANST = 1 THEN WFAN2 HIGH 5 'turn on ac to power supply FANST = 1 FANTIME = 8000 GOTO WAAITT WFAN2: LOW 5 'turn off ac to power supply FANST = 0 FANTIME = 0 GOTO WAAITT TIMOUT: HIGH 11 LOW 9 'AUDIO OFF ' 1 = DAH /// 2 = DIT ////3 = CHARACTER SPACE FOR I = 0 to 4 LOOKUP I, [2,0,2,2,2],CHARACTER GOSUB MORSE NEXT PAUSE 200 LOW 11 TMOUT: GOSUB CHECKINS IF CORSTATE = 1 THEN TMOUT PAUSE 3500 TOTIMER = 0 TAILRQ = 0 HIGH 11 PAUSE 300 ' 1 = DAH /// 2 = DIT ////3 = CHARACTER SPACE FOR I = 0 to 4 LOOKUP I, [2,0,2,2,2],CHARACTER GOSUB MORSE NEXT PAUSE 100 GOSUB CHECKINS IF CORSTATE = 1 THEN CORE LOW 9 LOW 11 GOTO WAAIT FAN: HIGH 5 'turn on ac to power supply FANST = 1 RETURN REPOFF: LOW 5 LOW 9 LOW 11 REPEATER = 1 WRITE 60,1 REPW: PAUSE 30 IF IN15 = 0 THEN ALARM IF IN4 = 1 THEN DIG1 'GOES TO DTMF SUB IF TONE IS RECONIZED PAUSE 30 GOTO REPW REPON: WRITE 60,0 PAUSE 1000 GOTO RESTART AUX1: PAUSE 1900 GOSUB CONFIRMON HIGH 6 GOTO CORE AUX1OFF: PAUSE 1900 GOSUB CONFIRMOFF LOW 6 GOTO CORE AUX2: PAUSE 1900 GOSUB CONFIRMON HIGH 8 GOTO CORE AUX2OFF: PAUSE 1900 GOSUB CONFIRMOFF LOW 8 GOTO CORE CHECKAUDIO: GOSUB CHECKINS IF CORSTATE = 1 THEN AUDION IF CORSTATE = 0 THEN AUDIOFF AUDION: HIGH 9 RETURN AUDIOFF: LOW 9 RETURN CONFIRMON: HIGH 11 PAUSE 600 ' 2 = DAH /// 1 = DIT ////3 = CHARACTER SPACE FOR I = 0 to 5 LOOKUP I, [2,2,2,0,2,1],CHARACTER GOSUB MORSE NEXT PAUSE 100 RETURN CONFIRMOFF: HIGH 11 PAUSE 600 ' 2 = DAH /// 1 = DIT ////3 = CHARACTER SPACE FOR I = 0 to 12 LOOKUP I, [2,2,2,0,1,1,2,1,0,1,1,2,1],CHARACTER GOSUB MORSE NEXT PAUSE 100 RETURN DTMFER: DTMF = INL & %00001111 LOOKUP DTMF,["D84#206B195A3*7C-"],DTMF 'STRAIGHT PINS 'LOOKUP DTMF,["D1234567890*#ABC-"],DTMF 'CROSSED PINS IF DTMF = "1" THEN DTMF1 IF DTMF = "2" THEN DTMF2 IF DTMF = "3" THEN DTMF3 IF DTMF = "4" THEN DTMF4 IF DTMF = "5" THEN DTMF5 IF DTMF = "6" THEN DTMF6 IF DTMF = "7" THEN DTMF7 IF DTMF = "8" THEN DTMF8 IF DTMF = "9" THEN DTMF9 IF DTMF = "0" THEN DTMF0 IF DTMF = "*" THEN OTHER IF DTMF = "#" THEN OTHER IF DTMF = "A" THEN OTHER IF DTMF = "B" THEN OTHER IF DTMF = "C" THEN OTHER IF DTMF = "D" THEN OTHER RETURN DTMF1: DTMF = 1 RETURN DTMF2: DTMF = 2 RETURN DTMF3: DTMF = 3 RETURN DTMF4: DTMF = 4 RETURN DTMF5: DTMF = 5 RETURN DTMF6: DTMF = 6 RETURN DTMF7: DTMF = 7 RETURN DTMF8: DTMF = 8 RETURN DTMF9: DTMF = 9 RETURN DTMF0: DTMF = 0 RETURN REALARMC:' THIS RESETS ALARM COUNTER FOR NEXT ALARM ALARMC = 0 GOTO IDER OTHER: IF IN4 = 1 THEN OTHER IF REPEATER = 1 THEN REPOFF GOTO CORE RETURN MORSE: BRANCH CHARACTER,[SPACE,DIT,DAH] RETURN DAH: GOSUB CHECKAUDIO FREQOUT 7,216,TONE GOSUB CHECKAUDIO FREQOUT 7,72,0 RETURN DIT: GOSUB CHECKAUDIO FREQOUT 7,72,TONE GOSUB CHECKAUDIO FREQOUT 7,72,0 'SMALL SPACE RETURN SPACE: 'SPACE BETWEEN CHARACTERS FREQOUT 7,144,0 RETURN '---------------------------------------------------- ''''''''''''''''''''DTMF SUB'''''''''''''''''''''''''''' DIG1: PAUSE 100 IF IN4 = 0 THEN CORE I = 0 CODE = 0 LOW 9 GOSUB DTMFER 'GETS DIGIT AND CONVERTS IT TO A DIGIT CODE = DTMF * 100 GOSUB CHECKDTMF ' WAITS FOR DTMF TO DISAPPEAR AND REAPPEAR AND GETS NEXT DIGIT DIG2: CODE = CODE + (DTMF*10) GOSUB CHECKDTMF ' WAITS FOR DTMF TO DISAPPEAR AND REAPPEAR AND GETS NEXT DIGIT DIG3: CODE = CODE + DTMF PAUSE 750 'GIVES YOU TIME TO UNKEY AND HEAR RESONSE GOTO CHECKCODE 'CHECKS FOR VALID CODE CHECKDTMF:'THIS SUB WAITS UNTIL DTMF DISAPEARS FOR I = 1 TO 100 PAUSE 10 IF IN4 = 0 THEN ENDFOR '0 TO LOW NEXT IF REPEATER = 1 THEN REPOFF GOTO CORE ENDFOR:' THIS SUB WAITS FOR NEXT DTMF TO APPEAR FOR I = 1 TO 100 PAUSE 10 IF IN4 = 1 THEN ENDFOR2 NEXT IF REPEATER = 1 THEN REPOFF GOTO CORE ENDFOR2: GOSUB DTMFER RETURN CHECKCODE: IF CODE = 123 THEN REPON IF REPEATER = 1 THEN REPOFF IF CODE = 531 THEN PROGMTOG IF PROGMODE = 0 THEN CORE IF CODE = 222 THEN REPOFF IF CODE = 210 THEN CTCSSON IF CODE = 211 THEN CTCSSOFF IF CODE = 188 THEN AUX1 IF CODE = 189 THEN AUX1OFF IF CODE = 198 THEN AUX2 IF CODE = 199 THEN AUX2OFF IF CODE = 255 THEN ALARM IF CODE = 788 THEN ALARMTOG IF CODE = 888 THEN BEACONON IF CODE = 999 THEN BEACONOFF GOTO CORE CTCSSON: CTCSS = 1 GOSUB CONFIRMON GOTO CORE CTCSSOFF: CTCSS = 0 GOSUB CONFIRMOFF GOTO CORE PROGMTOG: 'TURNS DTMF OFF/ON IF PROGMODE = 0 THEN PROGON PROGMODE = 0 GOSUB CONFIRMOFF GOTO CORE PROGON: PROGMODE = 1 GOSUB CONFIRMON GOTO CORE ALARMTOG: IF ALARMST = 0 THEN ALARMON ALARMST = 0 GOSUB CONFIRMOFF GOTO CORE ALARMON: ALARMST = 1 GOSUB CONFIRMON GOTO CORE ALARM: IF ALARMST = 0 AND CODE = 255 THEN TESTALARM IF ALARMST = 0 THEN CORE TESTALARM: ALARMC = ALARMC + 1 IF ALARMC > 10 THEN ALARMTO LOW 9 'MUTES AUDIO GOSUB FAN FOR I = 0 TO 100 FREQOUT 7,(100),TONE FREQOUT 7,(100),TONE+200 NEXT LOW 11 IF CODE = 255 THEN CORE PAUSE 10000 GOTO CORE BEACONON: GOSUB CONFIRMON BEACON: BEACONMODE = 1 BCOUNT = BCOUNT + 1 IF BCOUNT > 7 THEN BEACONOFF GOTO CORE BEACONOFF: GOSUB CONFIRMOFF BEACONMODE = 0 BCOUNT = 0 GOTO WAAIT ALARMTO: IF IN15 = 0 THEN ALARMTO IDTIME = 0 ' T1S CAUSES IT TO TAKE 10 MINUTES UNTIL THE NEXT POSSIBLE ALARM GOTO CORE CHECKINS: CORSTATE = 0 IF CTCSS = 1 AND IN10 = 0 AND IN12 = 0 THEN CORSET IF CTCSS = 0 AND IN10 = 0 THEN CORSET CKIN: RETURN CORSET: CORSTATE = 1 GOTO CKIN