 DECLARE SUB delay (delayTime!)
'july 95 changed to set turn around by f1-f1 interval
'NOV 22 1994 FREQ SELECTION CHANGED TO TZ DESIGNATIONS
'Program to control ANT for interrogation of VLCT
'Includes TPDR test - looks for reply after 298ms
'Version with turn around delay 300ms
'VERSION uses direct entry for most stimulii
'includes array software
'this version with TZ numbers  New ADDRESS SCHEME
'later version of software didnt work so went back to
'one which did and modded for new address scheme
'Array software included unmodified. not tested 

DECLARE SUB antinit ()
'--------------------- startup sequence ---------------------------
'ON ERROR GOTO tohelp
CLS

OPEN "com1:150,n,8,2" FOR RANDOM AS #1
'--------TRANSLATION ARRAYS -----------------------------
'-----non array values ------------------------------------
DATA "00,7F,21,00,11,","00,2E,73,00,01,","00,54,FB,00,04,"
DATA "00,4F,1F,00,11,","00,5E,75,00,01,","00,24,F9,00,04,"
DATA "00,1F,1D,00,11,","00,8E,77,00,01,","00,F4,F7,00,03,"
DATA "00,EF,1B,00,10,","00,BE,79,00,01,","00,C4,F5,00,03,"
DATA "00,BF,19,00,10,","00,EE,7B,00,01,","00,94,F3,00,03,"
DATA "00,8F,17,00,10,","00,1E,7D,00,02,","00,64,F1,00,03,"
DATA "00,5F,15,00,10,","00,4E,7F,00,02,","00,34,EF,00,03,"
DATA "00,2F,13,00,10,","00,7E,81,00,02,","00,04,ED,00,03,"
DATA "00,FF,11,00,0F,","00,AE,83,00,02,","00,D4,EB,00,02,"
DATA "00,CF,0F,00,0F,","00,DE,85,00,02,","00,A4,E9,00,02,"
DATA "00,95,73,00,0F,","00,0E,87,00,03,","00,74,E7,00,02,"
DATA "00,65,71,00,0F,","00,3E,89,00,03,","00,44,E5,00,02,"
DATA "00,35,6F,00,0F,","00,6E,8B,00,03,","00,14,E3,00,02,"
DIM loopdelay$(13): DIM Pulse2Pulse$(13): DIM turnaround$(13)
FOR n = 1 TO 13
READ a$: loopdelay$(n) = a$
READ Pulse2Pulse$(n)
READ turnaround$(n)
NEXT n
'------------------------------- values of R6 for each address ----
DATA 6,10,14,18,22,26,30,34,38,42,46,50,54
DIM Add$(13)
FOR n = 13 TO 1 STEP -1
READ Add: Add$(n) = CHR$(Add): NEXT n
'--------------------------- array uses a vector ------------------
DATA 11,8,7,6,5,4,3,2,14
DIM ADDVECT(9)
FOR n = 1 TO 9: READ ADDVECT(n): NEXT n
'---------------------------- array for TZ translation
DIM TzFrq(9)
DATA 66,64,62,60,58,56,54,53,52
FOR n = 1 TO 9: READ TzFrq(n): NEXT n

'--------------------------- RX ANT freq number x5Hz ---------------
DIM FTAB$(66)
DATA "2F,A3,","2E,80,","2D,6B,","2C,63,","2B,67,","2A,75,","29,8E,"
DATA "28,B0,","27,DC,","27,10,","26,4C,","25,8F,","24,DA,","24,2B,","23,83,","22,E0,"
DATA "22,44,","21,AC,","21,1A,","20,8D,","20,04,","1F,80,","1F,24,","1E,84,"
DATA "1E,0C,","1D,97,","1D,26,"
FOR n = 40 TO 66: READ a$:
FTAB$(n) = a$: NEXT n
'-----------------------  array delays for each address for ANT ---
DATA "D6,7A,0,1,","06,7C,0,2,","36,7E,0,2,","66,80,0,2,","96,82,0,2,"
DATA "C6,84,0,2,","F6,86,0,2,","26,88,0,3,","56,8A,0,3,"
DIM row$(9):
FOR n = 1 TO 9
READ row$(n)
NEXT n
'-----------------------  array delays for Column address for ANT --
DATA "A6,78,0,1,","D6,7A,0,1,","06,7C,0,2,","36,7E,0,2,","66,80,0,2,","96,82,0,2,"
DATA "C6,84,0,2,","F6,86,0,2,","26,88,0,3,"
DIM COL$(9): FOR n = 1 TO 9: READ COL$(n): NEXT n
'-----------------------  array delay for time after row for fxed delay
DATA "B0,12,0,1,","80,10,0,1,","50,0E,0,1,","20,0C,0,1,","F0,0A,0,0,","C0,08,0,0,"
DATA "90,06,0,0,","60,04,0,0,","30,02,0,0,"
DIM RLEFT$(9): FOR n = 1 TO 9: READ RLEFT$(n): NEXT n
'----------------------- array delay for time after col before RX
DATA "28,17,0,2,","F8,15,0,1,","C8,13,0,1,","98,11,0,1,","68,0F,0,1,"
DATA "38,0D,0,1,","08,0B,0,1,","D8,09,0,0,","A8,07,0,0,"
DIM CLEFT$(9): FOR n = 1 TO 9: READ CLEFT$(n): NEXT n
'---------------------------------------------------------------------
PW$ = "60,09,9A,00,00,"         'TODL=70=01110000 b6=pulse b5=trig out
PWNT$ = "40,9,9A,0,0,"                      'b4=flash LED active
								'time = 0000099Ah/1229000 = 2ms
CLOSE ANTCommS%                        '
DEL! = .3
ATT$ = "12"

'====================- which program -=================================
3230
GOSUB logo

LOCATE , 14: PRINT " ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ» "
LOCATE , 14: PRINT " º MAIN MENU     0/ Quit to DOS                   º "
LOCATE , 14: PRINT " º                                                º "
LOCATE , 14: PRINT " º               1/ BOARD TEST                    º "
LOCATE , 14: PRINT " º                                                º "
LOCATE , 14: PRINT " º               2/ Program EEPROM                º "
LOCATE , 14: PRINT " º               3/ TEST TPDR                     º "
LOCATE , 14: PRINT " º                                                º "
LOCATE , 14: PRINT " º               4/ Program ARRAY EEPROM          º "
LOCATE , 14: PRINT " º               5/ TEST ARRAY TPDR               º "
LOCATE , 14: PRINT " º                                                º "
LOCATE , 14: PRINT " º               6/ Help                          º "
LOCATE , 14: PRINT " º     Last Frq/Address  programmed = No "; TZNo; ADDX; : LOCATE , 60: PRINT "    º "
LOCATE , 14: PRINT " º     ARRAY TPDR Row/Col/Frq   = "; row; "/"; colm; "/TZ"; TZNo; : LOCATE , 60: PRINT "    º "
LOCATE , 14: PRINT " ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ¼ "
FLAG = 0: COLOR 7, 0: PRINT : COLOR 15, 4: PRINT display$: display$ = "": COLOR 7, 0
DO: Q$ = INKEY$
LOOP UNTIL Q$ <> ""            'loop til key press
	IF Q$ = CHR$(13) THEN GOTO 3230
	Q = VAL(Q$): ON Q + 1 GOTO ToDOS, BoardTst, EET, TestT, EEA, TestA, tohelp'
	'IF Q$ = CHR$(13) THEN choice% = 1: GOTO nextPrg ELSE Q = VAL(Q$): ON Q + 1 GOTO ToDOS, BoardTst, EET, TestT, EEA, TestA, ToHelp'

ToDOS: INPUT " return to DOS Y/N  ", qq$
 IF qq$ = "y" OR qq$ = "Y" THEN CLOSE #1: END:  ELSE GOTO 3230'system
BoardTst: CHOICE% = 1: GOTO startTest
EET: CLS : LOCATE 10, 14: PRINT "----- programming ANT -----": progFlag% = 1: GOTO ProgEEPROM
TestT: CLS : GOSUB TPDRTST: display$ = "  TESTING TPDR ": progFlag% = 0: GOTO 3230
EEA: CLS : LOCATE 10, 14: PRINT "----- programming ANT -----": progFlagE% = 1: GOTO ProgEEarry
TestA: CLS : GOSUB ARRAYTEST: display$ = "  TESTING ARRAY TPDR ": progFlagE% = 0: GOTO 3230
tohelp: GOSUB Help: GOTO 3230
'4070 SHELL "VTERM": GOTO 3230

'------------------------------
ProgEEPROM:   'NON ARRAY TPDR PROGRAMMING SEQ
GOSUB AntPing
GOSUB logo
GOSUB SelAddfrq
'GOSUB selfreq
OUTPUT$ = CHR$(255) + CHR$(255) + OUTPUT$ + CHR$(frq) + ">"
PRINT : PRINT : COLOR 15, 4: PRINT ADDX; "/TZ"; TZNo; : INPUT "  REMOVE MAGNET. Count to 4. PRESS <CR> TO PROGRAM  ", qq$: COLOR 7, 0
PRINT #1, OUTPUT$
GOTO 3230
'---------------------------
ProgEEarry:   'ARRAY TPDR PROGRAMMING SEQ
GOSUB AntPing
GOSUB logo
GOSUB SelAddra
GOSUB selfreq
OUTPUT$ = CHR$(255) + CHR$(255) + OUTPUT$ + CHR$(frq + 128) + ">"
PRINT : PRINT : COLOR 15, 4: PRINT row; "/"; colm; "/TZ"; TZNo; : INPUT "REMOVE MAGNET. Count to 4. PRESS <CR> TO PROGRAM  ", qq$: COLOR 7, 0
PRINT #1, OUTPUT$
GOTO 3230

'------------------------------------------------------------------
startTest:     ' BOARD TEST
CLS : COLOR 14, 1
	LOCATE , 6: PRINT " ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ» "
	LOCATE , 6: PRINT " º Swtch Test         BOARD TEST MENU                              º "
	LOCATE , 6: PRINT " º   1    1.  filter       TP1                                     º "
	LOCATE , 6: PRINT " º   3    2.  F2  CW       TP4   adj L4 for max dc                 º "
	LOCATE , 6: PRINT " º   4    3.  F1  CW       TP3   adj L3 for max dc                 º "
	LOCATE , 6: PRINT " º   5    4.  F2  Pulse    TP7   adj RV4 1.4ms                     º "
	LOCATE , 6: PRINT " º   6    5.  F1  Pulse    TP5   adj RV2 1.4ms                     º "
	LOCATE , 6: PRINT " º   6    6.  F1 pulse, step attenuator  TP5                       º "
	LOCATE , 6: PRINT " º   6    7.  F1 F1 address interrogation - TP9 TO OV              º "
	LOCATE , 6: PRINT " º           Adj RV5 til +ve edge TP10 coincides with +ve edge TP5 º "
	LOCATE , 6: PRINT " º   ÄÄÄÄÄ¿    ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ  TP10                             º "
	LOCATE , 6: PRINT " º        ÀÄÄÄÄÙ                                                   º "
	LOCATE , 6: PRINT " º   ÄÄÄÄÄÄÄÄÄÄ¿          ÚÄÄÄÄÄ  TP5                              º "
	LOCATE , 6: PRINT " º             ÀÄÄÄÄÄÄÄÄÄÄÙ                                        º "
	LOCATE , 6: PRINT " º   8    8.  F1 F2 address interrogation - TP9 TO OV              º "
	LOCATE , 6: PRINT " º           Check +ve edge TP10 coincides with +ve edge TP7       º "
	LOCATE , 6: PRINT " º           Measure positive pulse U2 pin6  700-900ms             º "
	LOCATE , 6: PRINT " º        R. Return to main menu                                   º "
	LOCATE , 6: PRINT " º                  <CR> to step to next Test                      º "
	LOCATE , 6: PRINT " ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ¼ ": COLOR 7, 0
PRINT : COLOR 0, 6: PRINT XTEST$: COLOR 7, 0:
   'RINT CHOICE%
   DO: a$ = INKEY$
   LOOP UNTIL a$ <> ""            'loop til key press
	'IF a$ = "V" OR a$ = "v" THEN SHELL "vterm"
	IF a$ = "r" OR a$ = "R" THEN GOTO 3230
	IF a$ = "q" OR a$ = "Q" THEN GOTO ToDOS
	IF a$ = CHR$(13) THEN CHOICE% = CHOICE% + 1: GOTO nextPrg
	CHOICE% = VAL(a$)
	PRINT CHOICE%
nextPrg:   'STEPS THROUGH AT <CR>
	
	IF CHOICE% > 8 THEN GOTO 3230 'CHOICE% = 1
	PRINT CHOICE%
	CLS : PRINT : PRINT : PRINT
	ON CHOICE% GOTO Filter, F2CW, f1cw, f2pw, F1PW, ATT, F11, f12, startTest

'------------------------ 0 - address 1 interrogate -------
f12:
XTEST$ = " Switch 8  Test 7 ADDRESS 1                      "
loopdelay$ = "00,7F,21,00,11,"    'delay = 00117F21h/1229000 =933ms
Pulse2Pulse$ = "00,2E,73,00,01,"  'delay = 00012E73H/1229000 = 63ms
OUT$ = "2400/04,14," + loopdelay$ + PW$ + Pulse2Pulse$ + PW$
OUT$ = OUT$ + "2390/0E,5D,0D,C1,00,00,23DA/88,88,"
GOSUB OutAnt
GOTO startTest
'------------------------ 0 - address 1 interrogate -------
F11:
XTEST$ = " Switch 6  Test 7 ADDRESS 1 INPUT SET MONO DELAY"
loopdelay$ = "00,7F,21,00,11,"    'delay = 00117F21h/1229000 =933ms
Pulse2Pulse$ = "00,2E,73,00,01,"  'delay = 00012E73H/1229000 = 63ms
OUT$ = "2400/04,14," + loopdelay$ + PW$ + Pulse2Pulse$ + PW$
OUT$ = OUT$ + "2390/0D,C1,0D,C1,00,00,23DA/88,88,"
GOSUB OutAnt
CALL delay(1)
GOTO startTest

Filter:
'------------------ 39kHz CW -----------------
CW39:  CLS : LOCATE 10, 14
	   OUT$ = "2400/2,14,0,B7,2E,00,12,70,FF,FF,FF,FF,2390/F,3C,0,0,23DA/88,"
	   GOSUB OutAnt        '  FRQ$ = "39000"
	   COLOR 0, 6: PRINT " Switch 1  TEST1  TP1 > 1Vp-p   OUTPUT 39kHz  CW ": COLOR 7, 0
	   INPUT " <CR> for next test ", qq$
CW32:  CLS : LOCATE 10, 14
	   OUT$ = "2390/C,B2,0,0,"
	   GOSUB OutAnt     'FRQ$ = "32500"
	   COLOR 0, 6: PRINT " Switch 1  TEST 1 TP1 <6db down  OUTPUT 32kHz  CW ": COLOR 7, 0
	   INPUT " <CR> for next test ", qq$
CW42:  CLS : LOCATE 10, 14
	   OUT$ = "2390/10,9A,0,0,"
	   GOSUB OutAnt     'FRQ$ = "42500"
	   COLOR 0, 6: PRINT " Switch 1  TEST 1 TP1 <6db down  OUTPUT 42.5kHz  CW ": COLOR 7, 0
	   INPUT " <CR> for next test ", qq$
CW46:  CLS : LOCATE 10, 14
	   OUT$ = "2390/11,F8,0,0,"
	   GOSUB OutAnt     'FRQ$ = "46000"
	   COLOR 0, 6: PRINT " Switch 1  TEST 1 TP1 >6db down  OUTPUT 46kHz  CW ": COLOR 7, 0
	   INPUT " <CR> for next test ", qq$
CW30:  CLS : LOCATE 10, 14
	   OUT$ = "2390/0B,B8,0,0,"
	   GOSUB OutAnt     'FRQ$ = "30000"
	   COLOR 0, 6: PRINT " Switch 1  TEST 1 TP1 >6db down  OUTPUT 30kHz  CW ": COLOR 7, 0
	   INPUT " <CR> for next test ", qq$
	   CHOICE% = 2: GOTO nextPrg
'--------------------------------------------------------------------------
F2CW:  XTEST$ = " Switch 3  TEST 2  TP4 adj L4 for max  OUTPUT F2 CW "
	   OUT$ = "2400/2,14,0,B7,2E,0,12,70,FF,FF,FF,FF,2390/E,5D,0,0,23DA/88,"
	   GOSUB OutAnt      'FRQ$ = "36760"
	   GOTO startTest
'--------------------------------------------------------------------------
f1cw:  XTEST$ = " Switch 4  TEST 3  TP3 adj L3 for max  OUTPUT F1 CW "
	   OUT$ = "2400/2,14,0,B7,2E,0,12,70,FF,FF,FF,FF,2390/D,C1,0,0,23DA/88,"
	   GOSUB OutAnt      'FRQ$ = "35210"
	   GOTO startTest
'--------------------------------------------------------------------------
f2pw:  XTEST$ = " Switch 5  TEST 4  TP7 adj RV4 for 1.4ms  OUTPUT F2 PULSE 2ms"
	   OUT$ = "2400/2,14,0,C0,28,0,03,70,9,9A,0,0,2390/E,5D,0,0,23DA/88,"
	   GOSUB OutAnt      'FRQ$ = "36770"
	   GOTO startTest
'--------------------------------------------------------------------------
F1PW:  XTEST$ = " Switch 6  TEST 5  TP5 adj RV2 for 1.4ms  OUTPUT F1 PULSE 2ms"
	   OUT$ = "2400/2,14,0,C0,28,0,03,70,9,9A,0,0,2390/D,C1,0,0,23DA/88,"
	   GOSUB OutAnt    ' FRQ$ = "35210"
	   GOTO startTest

'------------------------ increment/decrement attenuation --------
ATT: CLS :       'NOT DIRECT ENTRY MODE
	   frq$ = "35210"
	   ATT$ = "42"
CLS : LOCATE 10, 14: PRINT "----- programming ANT -----"
	   GOSUB pulse
att1:
ATT2: CLS : PRINT : PRINT : PRINT "      "; : LOCATE 10, 14
   '  COLOR 0, 6: PRINT " Test 6 TP5 sensitivity  OUTPUT F1 PULSE 2ms": COLOR 7, 0: PRINT
 LOCATE , 14: COLOR 0, 6: PRINT " Present attenuation = "; ATT$; "dB ": COLOR 7, 0: PRINT : PRINT
 COLOR 2, 0:
	 LOCATE , 14: PRINT "   -  reduce Attenuation by 1"
	 LOCATE , 14: PRINT "   +  increase Attenuation by 1"
	 LOCATE , 14: PRINT "   S  set level"
	 LOCATE , 14: PRINT "  <CR> Quit": COLOR 7, 0

DO: a$ = INKEY$
LOOP UNTIL a$ <> ""            'loop til key press
	IF a$ = CHR$(13) THEN CLS : XTEST$ = "": CLOSE ANTCommS%: CHOICE% = 7: GOTO nextPrg
	IF a$ = "q" OR a$ = "Q" THEN CLS : XTEST$ = "": CLOSE ANTCommS%: CHOICE% = 7: GOTO nextPrg
	IF a$ = "S" OR a$ = "s" THEN GOTO SetAtt
	IF a$ = "-" THEN GOTO decrease
	IF a$ = "+" THEN GOTO increase ELSE GOTO att1
SetAtt:
	   INPUT "input attenuator value     ", ATT$: GOTO ChangeAtt
decrease:
	attn% = VAL(ATT$): attn% = attn% - 1: ATT$ = STR$(attn%): GOTO ChangeAtt
increase:
	attn% = VAL(ATT$): attn% = attn% + 1: ATT$ = STR$(attn%): GOTO ChangeAtt
ChangeAtt:
		PRINT #ANTCommS%, "6"; : CALL delay(DEL!)  'CW
		PRINT #ANTCommS%, "2"; : CALL delay(DEL!)  'SET
		PRINT #ANTCommS%, "3"; : CALL delay(DEL!)  'FREQ"
		PRINT #ANTCommS%, ATT$; : CALL delay(DEL!)  '13
		PRINT #ANTCommS%, CHR$(13); : CALL delay(DEL!)  '<CR>
		PRINT #ANTCommS%, "1"; : CALL delay(DEL!)  'EXIT
		PRINT #ANTCommS%, "5"; : CALL delay(DEL!)  'StartTest
		GOTO ATT2

'------------------------ not used
f1f2:
GOSUB SelectAdd
OUT$ = "2400/04,14," + loopdelay$ + PW$ + Pulse2Pulse$ + PW$
OUT$ = OUT$ + "2390/0E,5D,0D,C1,00,00,23DA/88,88,"
GOSUB OutAnt
RETURN
'------------------------
TPDRTST:
IF progFlag% = 1 THEN GOTO tt1
GOSUB logo
GOSUB SelAddfrq
'GOSUB selfreq
tt1:
addr$ = STR$(addno)
GOSUB AddDelay
RxeveNT$ = "24,02,66,0,0,54,60,64,0,09,01,15,9A,0,0,00,A8,C7,0,12,"
OET$ = "2400/08,14," + PW$ + Pulse2Pulse$ + PWNT$ + turnaround$ + RxeveNT$
IF rxfreq$ = "" THEN GOSUB selfreq
OUT$ = OET$ + "2390/D,C1,0E,5D," + rxfreq$ + "00,00,"   'freq table at 2390
OUT$ = OUT$ + "23DA/00,00,80,80,"                       'atten table at 23DA
OUT$ = OUT$ + "2016/80,01,"                             'pulse disc
GOSUB OutAnt
RETURN
'------------------------
AntPing:  'LOOKS FOR PINGS AT 39062 IF PROGRAMMING SUCCESSFUL ANT FLASHES
RxeveNT$ = "24,02,66,0,0,64,15,9A,0,0,54,A8,C7,FF,12,01,04,CD,0,0,00,A0,3C,0,05,"
OET$ = "2400/06,54,70,09,9A,0,0," + RxeveNT$
OUT$ = OET$ + "2390/10,B8,1E,84,1E,84,00,00,"   'freq table at 2390
OUT$ = OUT$ + "23DA/00,80,80,"                       'atten table at 23DA
OUT$ = OUT$ + "2016/80,01,"                             'pulse disc
GOSUB OutAnt
RETURN
'------------------------
ARRAYTEST:
IF progFlagE% = 1 THEN GOTO AR1
GOSUB logo
GOSUB SelAddra
GOSUB selfreq
AR1:


RxeveNT$ = "24,02,66,0,0,54,60,64,0,09,01,15,9A,0,0,00,A8,C7,0,12,"
OET$ = "2400/0B,14," + PW$ + "00," + row$(row) + PWNT$ + "00," + RLEFT$(row) + "00," + COL$(colm) + PWNT$ + "00," + CLEFT$(colm) + RxeveNT$
OUT$ = OET$ + "2390/D,C1,0E,5D,D,C1," + rxfreq$ + "00,00,"   'freq table at 2390
OUT$ = OUT$ + "23DA/00,00,00,80,80,"                       'atten table at 23DA
OUT$ = OUT$ + "2016/80,01,"                             'pulse disc
GOSUB OutAnt
RETURN
'----------------------------------------------------------------------
SelectAdd:
	GOSUB SelAddr
AddDelay:
	addr% = VAL(addr$): DelayChosen% = 55 + addr% * 10
	IF addr$ = "q" OR addr$ = "Q" THEN END
	loopdelay$ = loopdelay$(addr%): Pulse2Pulse$ = Pulse2Pulse$(addr%)
	turnaround$ = turnaround$(addr%)
	'PRINT "Delay for ADDR "; addr%; "    = "; DelayChosen%; " ms": PRINT
RETURN

'------------------------------------------------------
OutAnt:
GOSUB StartANT
PRINT #ANTCommS%, "5"; : CALL delay(DEL!)  'select COMP
PRINT #ANTCommS%, "D"; : CALL delay(DEL!)  'direct entry mode
PRINT #ANTCommS%, OUT$; : CALL delay(DEL!)
PRINT #ANTCommS%, "G";                 'GO
CLOSE ANTCommS%                        '
RETURN

StartANT:
ANTCommS% = FREEFILE
OPEN "com2:9600,s,7,2,cs65000,ds,cd" FOR RANDOM AS #ANTCommS%
PRINT #ANTCommS%, CHR$(27);                 'reset ANT
CALL delay(1.5)
RETURN

END
'---------------- SUBROUTINES ----------------------------------
logo:
CLS : COLOR 14, 6
LOCATE , 6: PRINT "                                                                      "
LOCATE , 6: PRINT "       -***   VLCT FSK PROGRAMMING AND TEST PROGRAM  ***-             "
LOCATE , 6: PRINT "                    NEW ADDRESS SCHEME (c)1996                        "
COLOR 0
LOCATE , 6: PRINT "            Author John Kennaugh    Tel 01579-382583                  "
COLOR 7, 0: PRINT
PRINT : COLOR 14, 1
RETURN
'~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
SelAddr:
	GOSUB Addmenu
	IF addr$ = "" THEN addr$ = STR$(addno) ELSE addno = VAL(addr$)
OUTPUT$ = "<" + Add$(addno)
RETURN
'-------------------------- array -----------------------

SelAddra:
	COLOR 7, 0: CLS : PRINT : PRINT
	PRINT : PRINT :
	LOCATE 10, 14: COLOR 14, 1: PRINT "  SELECT ROW ADDRESS (1 to 9)     "; : COLOR 7, 0
DO: Q$ = INKEY$
LOOP UNTIL Q$ <> ""            'loop til key press
	row = VAL(Q$): PRINT row: ZZ = ADDVECT(row)
	PRINT : PRINT : LOCATE , 14: COLOR 14, 1:   PRINT "  SELECT COLUMN ADDRESS (1 to 9)  "; : COLOR 7, 0
DO: Q$ = INKEY$
LOOP UNTIL Q$ <> ""            'loop til key press
	colm = VAL(Q$): PRINT colm: ZZ = ZZ + ADDVECT(colm) * 16
	OUTPUT$ = "<" + CHR$(ZZ)
'PRINT ZZ, OUTPUT$: INPUT QQ$
RETURN

'-------------------------------------------------------
SelAddfrq:

CLS : COLOR 2, 0: PRINT "*KONCEPT*   "; DATE$; "   "; TIME$; "   COM"; COMF
PRINT : COLOR 14, 1
LOCATE 10, 9: PRINT "ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»"
LOCATE , 9: PRINT "º        ENTER TRANSPONDER No               º"
LOCATE , 9: PRINT "º                                           º"
LOCATE , 9: PRINT "ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ¼"
FLAG = 0: COLOR 7, 0
DO: a$ = INKEY$
LOOP UNTIL a$ <> ""            'loop til key press
TZNo = VAL(a$): LOCATE 11, 39: PRINT TZNo

freq = TzFrq(TZNo)
frq = freq - 1
rxfreq$ = FTAB$(frq)
'CLS : LOCATE 10, 14: PRINT "frequency = TZ"; TZNo, INT(2500000 / freq + .5)
  
GOSUB Addmenu
	IF addr$ = "" THEN addr$ = STR$(addno) ELSE addno = VAL(addr$)
OUTPUT$ = "<" + Add$(addno)

RETURN

selfreq:
CLS : COLOR 2, 0: PRINT "*KONCEPT*   "; DATE$; "   "; TIME$; "   COM"; COMF
PRINT : COLOR 14, 1
LOCATE 10, 9: PRINT "ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»"
LOCATE , 9: PRINT "º        REPLY FREQUENCY SELECT MENU        º"
LOCATE , 9: PRINT "º   Enter TZ channel Number 1 to 9          º"
LOCATE , 9: PRINT "ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ¼"
FLAG = 0: COLOR 7, 0
DO: a$ = INKEY$
LOOP UNTIL a$ <> ""            'loop til key press
TZNo = VAL(a$)
freq = TzFrq(TZNo)
frq = freq - 1
rxfreq$ = FTAB$(frq)
CLS : LOCATE 10, 14: PRINT "frequency = TZ"; TZNo, INT(2500000 / freq + .5)
RETURN

'~~~~~~~~~~~~~~~~~~~~PULSE O/P SUB~~~~~~~~~~~~~~~~~~~~~~~
pulse:
		GOSUB StartANT
		PRINT #ANTCommS%, "2"; : CALL delay(DEL!)  'pulse
		PRINT #ANTCommS%, "2"; : CALL delay(DEL!)  'SET
		PRINT #ANTCommS%, "2"; : CALL delay(DEL!)  'FREQ
		PRINT #ANTCommS%, frq$; : CALL delay(DEL!)  'F1
		PRINT #ANTCommS%, CHR$(13); : CALL delay(DEL!)  '<CR>
		PRINT #ANTCommS%, "3"; : CALL delay(DEL!)  'ATTN
		PRINT #ANTCommS%, ATT$; : CALL delay(DEL!)  '12
		PRINT #ANTCommS%, CHR$(13); : CALL delay(DEL!)  '<CR>
		PRINT #ANTCommS%, "4"; : CALL delay(DEL!)  'pw
		PRINT #ANTCommS%, "2"; : CALL delay(DEL!)  '2ms
		PRINT #ANTCommS%, CHR$(13); : CALL delay(DEL!)  '<CR>
		PRINT #ANTCommS%, "5"; : CALL delay(DEL!)  'trig
		PRINT #ANTCommS%, "2"; : CALL delay(DEL!)  'trig in
		PRINT #ANTCommS%, "2"; : CALL delay(DEL!)  'rep period
		PRINT #ANTCommS%, "200"; : CALL delay(DEL!)  '200ms
		PRINT #ANTCommS%, CHR$(13); : CALL delay(DEL!)  '<CR>
		PRINT #ANTCommS%, "1"; : CALL delay(DEL!)  'exit
		PRINT #ANTCommS%, "1"; : CALL delay(DEL!)  'exit"
		PRINT #ANTCommS%, "1"; : CALL delay(DEL!)  'EXIT
		PRINT #ANTCommS%, "5"; : CALL delay(DEL!)  'start
	   'CLOSE ANTComms%  'XXXXX                      '
		RETURN
'------------------------------- help ----------------------
Help:
CLS : PRINT : PRINT : PRINT " Connect the Serial>FSK box to COM1"
PRINT " Connect COM2 to the ANT unit Serial I/P"
PRINT " Connect the TDR O/P of the ANT to the input of the Serial>FSK box"
PRINT " Connect the O/P of the Serial>FSK box to the TPDR I/P or"
PRINT "          couple to the TDCR using a acoustic coupling"
PRINT : PRINT " To PROGRAM:"
PRINT "     1/ Apply a magnet to the reed switch of the TPDR"
PRINT "     2/ Run the Programming sequence excluding final <CR>"
PRINT "     3/ Switch the Serial>FSK to programming"
PRINT "     4/ Remove the magnet and press <CR> after  4sec"
PRINT "     5/ If programming signal correctly received then the"
PRINT "       TPDR will ping 3 times and the LED on the ANT will flash 3 times"
PRINT "     6/ TRANSPONDER TEST - sends out the interrogation"
PRINT "       if TPDR replies - then very brief flash of LED"
PRINT "       if NO reply detected LED stays on for half a second"
PRINT
PRINT "     The unit can be programmed either as a straight TPDR"
PRINT "        or as an array TPDR depending on which program is run"

PRINT : PRINT : INPUT " press <CR> to continue ", qq$
RETURN
'-----------------------------------------------------------
Addmenu:
 '   COLOR 7, 0: CLS : PRINT : PRINT : PRINT
 '   PRINT : COLOR 14, 1
 '
 '   LOCATE 10, 14: PRINT "ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»"
 '   LOCATE , 14: PRINT "º   Select Address  0 to  9   -   Q for Quit     º"
 '   LOCATE , 14: PRINT "º   <CR> for last address programmed             º"
 '   LOCATE , 14: PRINT "º     Last Address/ Frq programmed = "; addx; "/TZ"; TZNo; : LOCATE , 59: PRINT "    º"
 '   LOCATE , 14: PRINT "ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ¼";
	FLAG = 0: COLOR 7, 0
	PRINT : PRINT : PRINT
DO: a$ = INKEY$
LOOP UNTIL a$ <> ""            'loop til key press
ADDX = VAL(a$)
LOCATE 11, 42: PRINT ADDX
	LOCATE 15, 20: PRINT "----Programing ANT  PLEASE WAIT -----"
	addr$ = STR$(ADDX + 4)'to bring into line with new scheme
	RETURN

SUB antinit
ANTCommS% = FREEFILE
OPEN "com2:9600,s,7,2,cs65000,ds,cd" FOR RANDOM AS #ANTCommS%
PRINT #ANTCommS%, CHR$(27);                 'reset ANT
CALL delay(2)
END SUB

SUB delay (delayTime!)
StartTime! = TIMER
DO
LOOP UNTIL TIMER > (StartTime! + delayTime!)

END SUB

