5 '"1UMAIN.ASC": Main program for running the XXXXXXXXXXX Test Set using overlays. 12 'Normal voltage: tip=+,ring=- 14 'Global error trappng goes to 2300, is called at lines 102,401,5005 16 'Uses CHAIN/MERGE for advanced functions,lines 10000-60000 available 18 ' 24 ADTST=0 'if 1, loops on A-D for test 26 CAPCAL=0 'if 1, loops on capacitance for cal 28 DEFINT R 'R is lp resistance 30 DEFINT L 'L is dvom results 32 DIM VTR$(15) 'TR Voltage 34 DIM BIT(7) 'Bit # of Byte 36 DIM IMG(16) 'Port image array 38 DIM EQ(32),TQ(32) 'exc/t tone 32 bit freq array,only 1st 20 bits used 40 ADDR1=&H343 'hex address for Exciter Tone DDS IC 42 ADDR2=&H342 'hex address for Test Tone DDS IC 44 F=16384000# 'frequency of pri board osc 100 '******** INIT ROUTINES ******** 102 ON ERROR GOTO 2300 'error handler reboots 105 GOSUB 1000 'read variable list 212 GOSUB 1400 'initiallize hardware 214 GOSUB 2220 'clear/init pri A-to-D 216 OUT(&H341),1:for X=1 to 1000 STEP 1:NEXT X:OUT(&H341),0 'reset modem 218 GOSUB 2600 'clr pri board 220 GOSUB 2640 'clear dvom board 222 GOSUB 1510 'get modem.ini file data 224 ' 'location for error return of GET MODEM.INI 226 GOSUB 1540 'get testhead.ini file data 228 ' 'location for error return of GET TESTHEAD.INI 230 GOSUB 2200 'rel pair & clr 231 GOSUB 2800 'clear switch 232 GOSUB 6000 'update reply strings 233 GOSUB 1940 'open Com1 234 GOSUB 1970 'open Com2 236 'IF ADTST=1 THEN GOTO 7500 'stub for DVOM test with line 7965 238 'IF CAPCAL=1 THEN GOTO 2560 'stub for cap measure circuit 240 'IF IMOD=0 THEN GOTO 1000 'no modem start prog 250 PRINT "Free memory = "FRE(0) 400 '******** RECEIVE ROUTINE ******** 401 ON ERROR GOTO 2300 'error handler reboots 405 A1$ = "":A2$ = "":PF1 = 0:PF2 = 0 'clear receive strings, flags 409 IF LOC(1) = 0 THEN GOTO 432 'no chr, skip port 410 B1$ = INPUT$(1,#1):PRINT B1$ 'in from #1, stub 412 IF HDX1 = 1 THEN PRINT #1, B1$; 'echo if HDX 415 A1$ = A1$ + B1$:PRINT "A1$="A1$ 'add to string, stub 417 IF LEN(A1$) > 60 THEN A1$ = "" 420 IF B1$ = CHR$(13) THEN PF1 = 1 'if [CR] set Com1 flag 422 IF B1$ = CHR$(13) THEN PRINT #1,CRLF$ 425 IF B1$ = CHR$(13) GOTO 5000 'go parse it 432 IF LOC(2) = 0 THEN GOTO 409 'no chr, skip port 435 B2$ = INPUT$(1,#2):PRINT B2$ 'read from #2 437 IF HDX2 = 1 THEN PRINT #2,B2$; 'echo if HDX 440 A2$ = A2$ + B2$:PRINT "A2$="A2$" , "LEN(A2$) 'add to string 442 IF LEN(A2$) > 60 THEN A2$ = "" 445 IF B2$ = CHR$(13) THEN PF2 = 1 'Com2 flag 446 IF B2$ = CHR$(13) THEN PRINT #2,CRLF$ 449 IF B2$ = CHR$(13) THEN GOTO 5000 'go parse it 455 GOTO 409 499 ' 999 '******** PROGRAM ENDS HERE ********* 1000 '******** VARIABLE LIST ******** 1008 LINNO = 1 1010 OLDLNE = 1 'to start the access switch overlay 1012 LCAL=11 'lvl cal par 1014 SCAL=10 'slope cal par 1016 IMOD=0 '0=no modem,1=internal modem installed!! 1018 ACSTAT=0 '1=access 1020 SPTSTAT=0 '0=no splt,1=splt CO,2=splt sub 1022 GENSTAT=0 'sig gen not conn 1024 CALSTAT=0 'cal test or exciter sig gen 1026 OVNO=0 'Overlay number (0=none) 1030 P1=2:P2=2 '2400.N,8,1 default for port 1&2 1032 HDX1=1 'half duplex, Com1 1034 HDX2=1 'full duplex, Com2 (int modem)!!!!!! 1036 VB1=1:VB2=1 'Com1&2=verbose replies default 1038 PROMPT$=CHR$(61)+CHR$(62) 1040 CRLF$=CHR$(13)+CHR$(10) 1042 REPLY$="" 'reply message 1044 VER$="2.0" 'current software version 1046 REV$="B" 'runs on this rev hardware 1048 STE$="Not Specified" 'site name default 1050 STENO$="000" 'site number default 1052 HDR1$="XXXXXXXXXXXXXXXXXXXXXXXXX Test Set, Ver "+VER$+", "+REV$ 1054 HDR3$="Located at: "+STE$+", Site #: "+STENO$ 1058 I1=0:I2=0:I3=0:I3D=0:I4=0:I4D=0 'init currents to zero 1060 RTR#=0:RTG#=0:RRG#=0 'resistance variables 1062 CTR=0:CTG=0:CRG=0 'capacitance variables 1064 VDC=0:L1=0:L2=0:L3=0:L4=0 'voltage & current variables 1066 RNGV=0:TIPV=0:TPRGV=0 'tip & ring voltage variables 1068 MINI$="ATE0B1M0S0=1S2=43Q1V0X0&C1&D0&W0&Y0!"'default modem string 1069 RETURN 1100 '******** SET ALL VALUES TO DEFULT ******** 1102 GOSUB 1000 'set internal values to default 1104 GOSUB 1200 'set TESTHEAD.INI file to default 1106 GOSUB 2500 'set MODEM.INI file to default 1108 GOSUB 6000 'update reply strings 1110 REPLY$ = P22$ 1119 GOTO 4750 1200 '******** UPDATE INI STRING IN "TESTHEAD.INI" FILE ******** 1210 ON ERROR GOTO 1299 1231 P1$=RIGHT$(STR$(P1),1) 1232 P2$=RIGHT$(STR$(P2),1) 1235 VB1$=RIGHT$(STR$(VB1),1) 1236 VB2$=RIGHT$(STR$(VB2),1) 1237 HDX1$=RIGHT$(STR$(HDX1),1) 1238 HDX2$=RIGHT$(STR$(HDX2),1) 1240 INI$=P1$+","+P2$+","+VB1$+","+VB2$+","+HDX1$+","+HDX2$+","+STENO$+","+STE$ 1245 PRINT "New INI string = "INI$ 'stub 1260 KILL "TESTHEAD.INI" 1265 OPEN "TESTHEAD.INI" FOR OUTPUT AS #3 1270 PRINT #3, INI$ 1275 CLOSE #3 1290 ON ERROR GOTO 0 'turn off error 1295 RETURN 'good return 1299 PRINT "Error 1299":RESUME NEXT 1300 '******** SET SITE # ******** 1302 GOSUB 6000 'get strings 1305 IF LEN(CMD$) <> 9 THEN REPLY$ = EMSG2$ 'bad format 1306 IF LEN(CMD$) <> 9 THEN GOTO 4750 'bad return 1310 STENO$ = MID$(CMD$,6,3):PRINT "Site # = "STENO$ 1320 GOSUB 1200 'save site # in .INI file 1330 GOSUB 6000 'get strings 1345 REPLY$ = P23$ 1349 GOTO 4750 1350 '******** SET SITE NAME ******** 1351 IF LEN(CMD$) < 6 THEN REPLY$ = EMSG2$ 'bad format 1352 IF LEN(CMD$) < 6 THEN GOTO 4750 'bad return 1353 CMD$ = LEFT$(CMD$,(LEN(CMD$)-1)) 'strip off CR on end 1354 STE$ = RIGHT$(CMD$,(LEN(CMD$)-5)) 'get site name 1355 PRINT "Site name ' "STE$ 'stub 1356 GOSUB 1200 'save site # in .INI file 1357 GOSUB 6000 'get strings 1358 REPLY$ = P24$ 1360 GOTO 4750 1400 '******** INITIALLIZE ALL HARDWARE ******** 1410 FOR X=0 TO 15 STEP 1'Set all images to zero 1420 IMG(X)=0 1430 OUT(832+X),0 1440 NEXT X 1490 RETURN 1510 '******** GET MODEM.INI DATA ******** 1512 ' "MODEM.INI" file is Hays modem init string 1513 IN$ = "" 1514 ON ERROR GOTO 1539 1516 OPEN "MODEM.INI" FOR INPUT AS #3 1518 FOR X = 1 TO 48 STEP 1 1520 IF EOF(3) THEN GOTO 1528 'till end of file 1522 X$ = INPUT$(1,#3) 'get character 1524 IN$ = IN$+X$ 'build string 1526 NEXT X 1528 CLOSE #3 1529 PRINT "Modem init string = "IN$ 'stub 1530 IF LEN(IN$) >0 THEN MINI$ = IN$ 'use string from file 1534 ON ERROR GOTO 0 'cancel error address 1536 RETURN 1539 PRINT "Error 1539":RESUME 224 'local error trapping 1540 '******** GET TESTHEAD.INI DATA ******** 1545 ' "TESTHEAD.INI" file string format: 48 characters, (two commas) 1545 ' "P1,P2,VB1,VB2,HDX1,HDX2,STENO$,STE$ (32 chr)................" 1545 ' 1551 INI$ = "" 'will read INI$ from file 1552 ON ERROR GOTO 1595 1553 OPEN "TESTHEAD.INI" FOR INPUT AS #3 1556 FOR X = 1 TO 48 STEP 1 1557 IF EOF(3) THEN GOTO 1565 1560 X$ = INPUT$(1,#3) 1562 INI$ = INI$+X$ 'build string 1564 NEXT X 1565 CLOSE #3:PRINT "Testhead INI string = "INI$ 1570 P1 = VAL(LEFT$(INI$,1)) 1575 P2 = VAL(MID$(INI$,3,1)) 1576 VB1 = VAL(MID$(INI$,5,1)) 1577 VB2 = VAL(MID$(INI$,7,1)) 1578 HDX1 = VAL(MID$(INI$,9,1)) 1579 HDX2 = VAL(MID$(INI$,11,1)) 1580 STENO$ = MID$(INI$,13,3) 1581 STE$ = MID$(INI$,17,(LEN(INI$)-18)) 1582 IF RIGHT$(STE$,1) = CHR$(13) THEN STE$ = LEFT$(STE$,(LEN(STE$)-1)) 1583 PRINT P1 P2 VB1 VB2 HDX1 HDX2 STENO$ STE$ 'stub 1585 HDR3$ = "Located at: "+STE$+", Site #: "+STENO$ 1587 ON ERROR GOTO 0 'cancel error address 1590 RETURN 1595 PRINT "Error 1595":RESUME 228 1600 '******** SET HDX ******** 1601 GOSUB 6000 'get strings 1605 IF LEN(CMD$) <> 7 THEN REPLY$ = EMSG2$ 'bad format 1610 IF LEN(CMD$) <> 7 THEN GOTO 4750 'bad return 1615 PRT$ = MID$(CMD$,6,1):PRINT PRT 1616 PRT = VAL(PRT$) 1620 IF PRT <1 OR PRT >2 THEN REPLY$ = EMSG3$ 'inval param 1622 IF PRT <1 OR PRT >2 THEN GOTO 4750 1625 IF PRT = 1 THEN HDX1 = 1 1630 IF PRT = 2 AND IMOD = 0 THEN HDX2 = 1 1632 GOSUB 1200 'save in .INI file 1633 GOSUB 6000 'update reply strings 1635 REPLY$ = P15$ 1640 GOTO 4750 'good return 1650 '******** SET FDX ******** 1651 GOSUB 6000 'get strings 1655 IF LEN(CMD$) <> 7 THEN REPLY$ = EMSG2$ 'bad format 1660 IF LEN(CMD$) <> 7 THEN GOTO 4750 'bad return 1665 PRT$ = MID$(CMD$,6,1):PRINT "port = "PRT 1666 PRT = VAL(PRT$) 1670 IF PRT <1 OR PRT >2 THEN REPLY$ = EMSG3$ 'inval param 1672 IF PRT <1 OR PRT >2 THEN GOTO 4750 1675 IF PRT = 1 THEN HDX1 = 0 1680 IF PRT = 2 THEN HDX2 = 0 1681 GOSUB 1200 'save in .INI file 1684 GOSUB 6000 'update reply strings 1685 REPLY$ = P15$ 1690 GOTO 4750 'good return 1700 '******** UPDATE HDX/FDX & PORT ANSWERS ******** 1704 HDX1$="HDX" 1705 HDX2$="HDX" 1710 IF HDX1=0 THEN HDX1$="FDX" 1715 IF HDX2=0 THEN HDX2$="FDX" 1716 P1$=STR$(P1) 1717 P2$=STR$(P2) 1720 RETURN 1730 '******* REPORT COM PORT SETTINGS ******** 1732 GOSUB 6000 'update reply strings 1733 REPLY$=P15$ 1734 GOTO 4750 1900 '******** COM PORT DEFAULT CONSTANTS ******** 1901 OPEN "COM1:1200,N,8,1,CD0,DS0,CS0"AS#1:RETURN 1902 OPEN "COM1:2400,N,8,1,CD0,DS0,CS0"AS#1:RETURN 1903 OPEN "COM1:1200,E,7,1,CD0,DS0,CS0"AS#1:RETURN 1904 OPEN "COM1:2400,E,7,1,CD0,DS0,CS0"AS#1:RETURN 1905 OPEN "COM1:1200,O,7,1,CD0,DS0,CS0"AS#1:RETURN 1906 OPEN "COM1:2400,O,7,1,CD0,DS0,CS0"AS#1:RETURN 1911 OPEN "COM2:1200,N,8,1,CD0,DS0,CS0"AS#2:RETURN 1912 OPEN "COM2:2400,N,8,1,CD0,DS0,CS0"AS#2:RETURN 1913 OPEN "COM2:1200,E,7,1,CD0,DS0,CS0"AS#2:RETURN 1914 OPEN "COM2:2400,E,7,1,CD0,DS0,CS0"AS#2:RETURN 1915 OPEN "COM2:1200,O,7,1,CD0,DS0,CS0"AS#2:RETURN 1916 OPEN "COM2:2400,O,7,1,CD0,DS0,CS0"AS#2:RETURN 1940 '******** OPEN COM 1 ******** 1941 ON ERROR GOTO 1955 1945 ON P1 GOSUB 1901,1902,1903,1904,1905,1906 1946 PRINT "Com1 open, speed: "P1 1950 PRINT #1, CRLF$+HDR1$+CRLF$+"This is Com1: local port" 1951 PRINT #1, HDR3$+CRLF$+PROMPT$;':PRINT MINI$ 'modem init string 1954 RETURN 1955 ON ERROR GOTO 0 1956 PRINT "Error 1955":RESUME NEXT 1958 RETURN 1970 '******** OPEN COM 2 ******** 1971 ON ERROR GOTO 1990 1972 ON P2 GOSUB 1911,1912,1913,1914,1915,1916 1979 PRINT "Com2 open, speed: "P2 1980 GOSUB 4770 'init the modem 1982 PRINT #2, CRLF$+HDR1$+CRLF$+"This is Com2: modem port" 1983 PRINT #2, HDR3$+CRLF$+PROMPT$; 1987 RETURN 1990 ON ERROR GOTO 0 1991 PRINT "Error 1990":RESUME NEXT 1992 RETURN 2100 '******** SET COM PORT SPEED ******** 2102 GOSUB 6000 'update strings 2104 IF LEN(CMD$) <> 10 THEN REPLY$ = EMSG2$ 'bad format 2106 IF LEN(CMD$) <> 10 THEN GOTO 4750 'bad return 2115 PRT$ = MID$(CMD$,6,1) 2116 PRT = VAL(PRT$) 2117 SPD$ = MID$(CMD$,8,2):PRINT "Speed = "SPD$ 'stub 2118 SPD = VAL(SPD$) 2121 IF PRT <1 OR PRT >2 THEN REPLY$ = EMSG3$ 'inval param 2122 IF PRT <1 OR PRT >2 THEN GOTO 4750 2123 IF SPD <1 OR SPD >15 THEN REPLY$ = EMSG3$ 'inval param 2124 IF SPD <1 OR SPD >15 THEN GOTO 4750 2125 IF PRT = 1 THEN P1 = SPD ELSE P2 = SPD 2126 GOSUB 1200 'update .INI file 2127 GOSUB 6000 'get reply 2128 IF PF1 = 1 THEN PRINT #1, P15$ ELSE PRINT #2, P15$ 2130 IF PRT = 1 THEN CLOSE #1 2140 IF PRT = 2 THEN CLOSE #2 2150 IF PRT = 1 THEN GOSUB 1940 'reopen port 2160 IF PRT = 2 THEN GOSUB 1970 'reopen port 2185 REPLY$ = "" 2190 GOTO 4750 2200 '******** REL PAIR & CLEAR ALL ****# 2202 GOSUB 2600 'clear main board 2204 GOSUB 2640 'clear sec board 2206 ACSTAT = 0 2208 CALSTAT = 0 2210 SPLTSTAT = 0 2212 RETURN 2219 ' 2220 '******** CLEAR/INIT PRI BOARD A-D *****# 2222 GOSUB 3695 'clear A-D input 2224 X = INP(&H340) 'init A-D 2226 RETURN 2229 ' 2250 '******** RESET COMPUTER ********# 2252 CLOSE 2254 GOTO 100 2259 ' 2260 '********* REPORT VERSIONS *******# 2264 GOSUB 6000 'update reply strings 2266 REPLY$=P19$+CRLF$ 2268 GOTO 4750 2269 ' 2270 '********* REPORT SITE ID ********# 2272 IF PF1=1 THEN PRT$="Com1" ELSE PRT$="Com2" 2274 IF PF1=1 THEN PRTN$="1" ELSE PRTN$="2" 2276 GOSUB 6000 'update reply strings 2278 REPLY$=P18$ 2280 GOTO 4750 2289 ' 2300 '***** GENERAL ERROR TRAPPING (REBOOTS) *******# 2302 RESUME 2250 'reboot like SRST 2309 ' 2320 '******** SECONDARY BOARD DETECT *******! 2322 'V=INP(&H346) 'read port 346 2324 'IF (V AND 224) >0 THEN SECB=0 ELSE SECB=1 2326 'RETURN 2329 ' 2340 '******** SEND MODEM INI STRING ************** 2342 PRINT #1, MINI$ 'send string to COM1 2344 PRINT #2, MINI$ 'send string to COM2 2346 GOTO 4800 2349 ' 2350 '************** UNCONDITIONAL ACCESS ************** 2352 IF ACSTAT=0 THEN GOTO 2362 'no access go ahead 2354 A1$="" 2356 GOSUB 6000 'update reply strings 2358 REPLY$ = P14$ 'MTU accessed 2360 GOTO 4750 'back to command mode 2362 GOSUB 2200 'rel pair & clear 2364 GOSUB 2670 'turn on BUSY LED 2366 GOSUB 2760 'split line, K6(1) 2368 ACSTAT=1 'set access flg 2370 REPLY$=P00$ 'comply 2372 GOTO 4750 'return 2400 '******** SET MODEM INI STRING ******** 2402 CMD$=LEFT$(CMD$,(LEN(CMD$)-1)) 'strip off CR on end 2404 MD$=RIGHT$(CMD$,(LEN(CMD$)-4)) 'get ini string 2405 IF LEFT$(MD$,1) <> " " THEN GOTO 2460 2406 'IF IMOD=0 THEN GOTO 2410 'ext modem, proceed 2408 'REPLY$="P41, Not Available, Modem Internal" 2409 'GOTO 4750 2410 PRINT #1, " ":PRINT #2, " " 'space to com1,com2 2420 DEL=6:GOSUB 4000 'delay 6 sec 2422 IF MD$=" RESET" OR MD$=" reset" THEN GOSUB 1068 'standard string 2423 IF MD$=" RESET" OR MD$=" reset" THEN MD$=MINI$ 2424 IF MD$=" BYE" OR MD$=" bye" THEN GOTO 2426 ELSE GOTO 2429 'hangup 2426 PRINT #1, "+++ ATH "+CHR$(13) 'send out COM1 2427 PRINT #2, "+++ ATH "+CHR$(13) 'send out COM2 2428 REPLY$="":GOTO 4750 2429 MINI$=MD$:PRINT "Modem INI string="MINI$ 'stub 2432 PRINT #1,"+++ "+MINI$ 'out com1 2434 PRINT #2,"+++ "+MINI$ 'out com2 2440 GOSUB 2500 'save string in modem.ini 2442 'DEL=3:GOSUB 4000 'delay 3 sec 2445 'GOSUB 6000 'get strings 2450 REPLY$="" 'P21$ 2455 GOTO 4750 2460 REPLY$=EMSG3$ 2462 GOTO 4750 2500 '******** UPDATE MODEM.INI FILE ********* 2510 ON ERROR GOTO 2560 2530 KILL "MODEM.INI" 2535 OPEN "MODEM.INI" FOR OUTPUT AS #3 2540 PRINT #3, MINI$ 2545 CLOSE #3 2550 ON ERROR GOTO 0 'turn off error 2555 RETURN 'good return 2560 PRINT "Error 2560":RESUME NEXT 2570 '******** REPORT MODEM INIT STRING ******** 2572 GOSUB 6000 'get strings 2574 REPLY$ = P13$ 2576 GOTO 4750 2579 ' 2600 '******** CLEAR MAIN BOARD ******** 2602 GOSUB 2220 'clear, init primary D-A 2604 DEV$="018":DTO = 0:ACT=0:GOSUB 3000 'reset port 341 to zero 2606 FOR X=1 TO 10000 STEP 1:NEXT X 'delay 2608 DEV$="008":DTO = 0:ACT=0:GOSUB 3000 'reset pport 340 to zero 2614 DEV$="028":DTO = 0:ACT=0:GOSUB 3000 'reset port 342 to zero 2616 DEV$="038":DTO = 0:ACT=0:GOSUB 3000 'reset port 343 to zero 2618 'GOSUB 11520 'turn off exciter tone gen 2620 'GOSUB 11010 'turn off test tone gen 2622 GOSUB 2680 'turn busy led off 2624 CLS 2629 RETURN 2640 '******** CLR DVOM ********** 2642 TRFLAG = 0 'T/R flag 0 = T/R (1=T/G, 2=R/G) 2643 ACFLAG = 0 'access flag 0 = Fac. (1=Equ.) 2644 VFLAG = 0 'meas flag 0 = DC volts 2645 DEV$="068":DTO=0:ACT=0:GOSUB 3000 'reset port 346 to 0 2646 DEV$="078":GOSUB 3000 'reset port 347 to 0 2652 DEV$="074":ACT=1:GOSUB 3000 'enable dvom a-d (hold) 2654 DEV$="014":ACT=0:GOSUB 3000 'reset port 341 bit 4 to zero 2656 DEV$="015":GOSUB 3000 'reset port 341 bit 5 to zero 2658 DEV$="016":GOSUB 3000 'reset port 341 bit 6 to zero 2660 DEV$="017":GOSUB 3000 'reset port 341 bit 7 to zero 2668 RETURN 2670 '******** BUSY LED ON ********# 2672 DEV$="006":ACT=1:GOSUB 3000 'busy led on 2674 RETURN 2679 ' 2680 '******** BUSY LED OFF ********# 2682 DEV$="006":ACT=0:GOSUB 3000 'busy led off 2684 RETURN 2689 ' 2700 '******** TURN OFF TEST SUPPLY *******# 2701 AC1=0:AC2=0:AC3=0 2702 GOTO 2740 2704 ' 2705 '******** TURN ON 130V *******# 2706 AC1=1:AC2=0:AC3=0 2707 GOTO 2740 2709 ' 2715 '******** TURN ON 48V ********# 2716 AC1=0:AC2=1:AC3=0 2717 GOTO 2740 2719 ' 2720 '******** TURN ON 24V ********# 2721 AC1=0:AC2=0:AC3=1 2722 GOTO 2740 2729 ' 2740 '******** DRIVE TEST SUPPLY ********# 2742 DEV$="004":ACT=AC1:GOSUB 3000 '130v 2744 DEV$="005":ACT=AC2:GOSUB 3000 '48v 2746 DEV$="007":ACT=AC3:GOSUB 3000 '24v 2747 FOR X=1 TO 10000 STEP 1:NEXT X 2748 RETURN 2749 ' 2760 '******** SPLIT PAIR ********# 2762 DEV$="000":ACT=1:GOSUB 3000 'K6 on 2764 RETURN 2769 ' 2800 '******** CLEAR ACCESS SWITCH ********# 2810 AWRD$ = CHR$(10) 'carriage return 2812 BWRD$ = CHR$(13) 'line feed 2814 GOSUB 2900 'drive switch with CR/LF 2816 AWRD$ = CHR$(1+2+4+128) 'shelf 1 in address mode 2818 BWRD$ = CHR$(2+64) 'non valid column 1 in function mode 2820 GOSUB 2900 'drive switch clear 2821 PRINT "Switch cleared" 'stub 2822 RETURN 2829 ' 2900 '******** SWITCH BUS DRIVER ********# 2902 'drives control bus of switch 2904 ON ERROR GOTO 2950 2906 OPEN "LPT1:" AS #3 2908 PRINT #3, AWRD$; 2910 PRINT #3, NBRD$; 2912 CLOSE #3 2913 FOR X=1 TO 1000 STEP 1:NEXT X 2914 ON ERROR GOTO 2300 'global error traap 2916 RETURN 2919 ' 2950 '******** SWITCH ERROR TRAPPING ********# 2952 PRINT "Error 2950, control port failure" 2954 RESUME 2912 2959 ' 3000 '******* PERFORM ACTION ROUTINE *********# 3010 'Operates devices specified by acton equate, saves images 3012 'returns EBYTE=1 if write is already in image 3013 'ACT$=0 turns off or writes bytewide, ACT$=1 turns on 3014 'Pass device as DEV$. DEV$ = PA$+BIT$ (length 3 chr.) 3015 'PA$ = 00-15 = (832/&H340-847/&H34F), BIT$ = (0-7,8 for bytewide) 3016 'For bytewide, writes DTO to address (0-255) 3010 ' 3093 EBYTE = 0'reset error flag 3095 IF ACT >1 THEN EBYTE = 1 3097 INO = VAL(LEFT$(DEV$,2)) 'get image # 3100 PA= 832+INO 'get Port address in dec 3110 B = VAL(RIGHT$(DEV$,1)) 'get bit number 3116 IF PA<832 OR DTO>255 THEN EBYTE=1 3120 IF (B = 8 AND ACT = 1) THEN EBYTE=1 3127 IF EBYTE = 1 GOTO 3146 'don't write 3128 IF B <>8 THEN DTO=0 'no bite wide 3130 IF B = 8 THEN GOSUB 3300'byte wide write 3140 IF (B < 8 AND ACT = 0) THEN GOSUB 3350'turn off device 3145 IF (B < 8 AND ACT = 1) THEN GOSUB 3400'turn on device 3146 IF REPRT=0 THEN RETURN'don't display report 3147 PRINT"Error="EBYTE;"Port="INO;"Bit="B;"Action="ACT;"Data Out="DTO 3148 PRINT"Hex Address="PA;"Bit Value="BITVAL;"Image="IMG(INO):PRINT 3151 RETURN 3200 '********* GET VALUE OF ACTION FOR IMAGE CORRECTION ********# 3205 'finds out if bit B is 0 or 1 3210 Z=256:Y=TEMPI 3215 FOR X = 1 TO (8-B) STEP 1'Get value of bit B 3220 Z=Z/2:Y=Y-Z 3222 ACTVAL=1 3224 IF Y<0 THEN ACTVAL=0 3230 IF Y<0 THEN Y=Y+Z 3240 NEXT X 3255 BITVAL=Z 3257 RETURN 3300 '******* BYTE WIDE WRITE ********# 3302 IMG(INO)=DTO'save new value 3304 OUT(PA),DTO 'write DTO 3309 RETURN 3350 '******* WRITE A 0 TO BIT B OF DEVICE ******# 3352 TEMPI=IMG(INO) 'save original image 3354 GOSUB 3200 'get ACTVAL & BITVAL (action flag/desired val of bit B) 3358 IF ACTVAL=0 THEN GOTO 3370 'no change,bit already 0 in image 3360 TEMPI=TEMPI-BITVAL'change image 3370 OUT(PA),TEMPI'write new image to port 3380 IMG(INO)=TEMPI'update image 3390 RETURN 3400 '******* WRITE A 1 TO BIT B OF DEVICE ********# 3420 TEMPI=IMG(INO) 'save original image 3435 GOSUB 3200 'get ACTVAL & BILVAL (action flag/desired val of bit B) 3440 IF ACTVAL=1 THEN GOTO 3470 'no change,bit already 1 in image 3460 TEMPI=TEMPI+BITVAL'change image 3470 OUT(PA),TEMPI'write new image to port 3480 IMG(INO)=TEMPI'update image 3490 RETURN 3499 ' 3500 '********* REL PAIR AND CLEAR *********# 3501 GOSUB 2800 'clear access switch 3502 GOSUB 2600 'clear main board 3504 GOSUB 2640 'clear option board 3506 SPLTSTAT=0 'no split 3508 ACSTAT=0 'no access 3510 GOSUB 6000 'update reply strings 3512 REPLY$ = P01$ 3519 GOTO 4750 3600 '******** REVERSE SUPPLY POLARITY ********# 3604 DEV$="003":ACT=1:GOSUB 3000 'R+,T- K1 on 3609 RETURN 3610 '******** SET SUPPLY POLARITY NORMAL *****# 3614 DEV$="003":ACT=0:GOSUB 3000 'R-,T+ K1 off 3619 RETURN 3620 '******** CONN SPV TEST TO LUT *******# 3624 DEV$="001":ACT=1:GOSUB 3000 'K5 on 3629 RETURN 3630 '******** REMOVE SPV TEST FROM LUT ***# 3634 DEV$="001":ACT=0:GOSUB 3000 'K5 off 3639 RETURN 3640 '******** CONN TO TEST POWER ********# 3644 DEV$="002":ACT=1:GOSUB 3000 'K4 on 3649 RETURN 3650 '******** REMOVE FROM TEST POWER ****# 3654 DEV$="002":ACT=0:GOSUB 3000 'K4 off 3659 RETURN 3660 '******** CON DVOM TO ITEST ********# 3662 DEV$="061":ACT=1:GOSUB 3000 'K102,K110 on 3664 GOSUB 3930 'DVOM to current 3669 RETURN 3670 '******** CON DVOM TO VOLTS/CAP ********# 3672 DEV$="061":ACT=0:GOSUB 3000 'K102,K110 off 3674 GOSUB 3930 'DVOM to current 3679 RETURN 3680 '******** CON A-D TO RING *********# 3682 AC4=0:AC5=0:AC6=1:AC7=0 3684 GOTO 3703 3689 ' 3690 '******** CON A-D TO TIP **********# 3691 AC4=0:AC5=1:AC6=0:AC7=0 3692 GOTO 3703 3694 ' 3695 '******** CLEAR A-D INPUT *********# 3696 AD4=0:AC5=0:AC6=0:AC7=0 3697 GOTO 3703 3699 ' 3700 '******** CON A-D TO 215HZV *******# 3701 AC4=0:AC5=0:AC6=0:AC7=1 3702 GOTO 3703 3703 '****** DRIVE A-D INPUT CONN *******# 3704 DEV$="010":ACT=AC4:GOSUB 3000 'not used 3705 DEV$="011":ACT=AC5:GOSUB 3000 'tip 3706 DEV$="012":ACT=AC6:GOSUB 3000 'ring 3707 DEV$="013":ACT=AC7:GOSUB 3000 '215Hz 3708 FOR X= 1 to 100 STEP 1:NEXT X 3709 RETURN 3730 '******** READ CURRENT ******* 3731 GOSUB 4300 'get a-d voltage 3732 IDC = V*0.2 3739 RETURN 3800 '******** CONFIG ACCESS SEL FAC ****! 3802 DEV$ = "060":ACT=0:GOSUB 3000 'K101 off 3804 ACFLAG = 0 'acc flag=0 for FAC 3809 RETURN 3810 '******** CONFIG ACCESS SEL EQU ****! 3812 DEV$ = "060":ACT=1:GOSUB 3000 'K101 on 3814 ACFLAG = 1 'accs flag=1 for EQU 3819 RETURN 3820 '******** SELECT T/R ***************! 3822 DEV$ = "064":ACT=0:GOSUB 3000 'K106 off 3824 DEV$ = "065":ACT=0:GOSUB 3000 'K107 off 3826 DEV$ = "066":ACT=0:GOSUB 3000 'K108 off,normal 3828 TRFLAG = 0 'set to 0 for T/R 3829 RETURN 3830 '******** SELECT T/G ***************! 3832 DEV$ = "064":ACT=0:GOSUB 3000 'K106 off 3834 DEV$ = "065":ACT=1:GOSUB 3000 'K107 on 3836 TRFLAG = 1 'set to 1 for T/G 3838 DEV$ = "066":ACT=0:GOSUB 3000 'K108 off,normal 3839 RETURN 3840 '******** SELECT R/G ***************! 3842 DEV$ = "064":ACT=1:GOSUB 3000 'K106 on 3844 DEV$ = "065":ACT=1:GOSUB 3000 'K107 on 3846 DEV$ = "066":ACT=0:GOSUB 3000 'K108 off,normal 3848 TRFLAG = 2 'set to 2 for R/G 3849 RETURN 3850 '******** SELECT NORMAL MEAS POLARITY (T/R,T/G,R/G0 *********! 3852 DEV$ = "066":ACT=0:GOSUB 3000 'K108 off,normal 3854 RETURN 3856 '******** SELECT REVERSE MEAS POLARITY (R/T,G/T,G/R) ********! 3858 DEV$ = "066":ACT=1:GOSUB 3000 'K108 on,reverse 3859 RETURN 3860 '********* SET DVOM FOR DC VOLTS ***! 3862 DEV$ = "062":ACT=0:GOSUB 3000 'K103 off 3863 DEV$ = "063":ACT=0:GOSUB 3000 'K104 off 3864 DEV$ = "064":ACT=0:GOSUB 3000 'K105 off 3865 DEV$ = "065":ACT=0:GOSUB 3000 'K106,112 off 3866 DEV$ = "066":ACT=0:GOSUB 3000 'K107,108 off 3867 DEV$ = "067":ACT=0:GOSUB 3000 'K109 off 3870 DEV$ = "070":ACT=0:GOSUB 3000 'K110 off 3871 DEV$ = "071":ACT=0:GOSUB 3000 'K111 off 3872 DEV$ = "072":ACT=0:GOSUB 3000 'K113 off 3873 DEV$ = "073":ACT=0:GOSUB 3000 'K114 off 3875 VFLAG = 0 'flag to 0 for dc v 3879 RETURN 3900 '********* SET DVOM FOR OHMS *******! 3902 DEV$ = "067":ACT=1:GOSUB 3000 'K111 on 3904 VFLAG = 1 'flag to 1 for ohms 3909 RETURN 3910 '********* SET DVOM FOR AC VOLTS ***! 3912 DEV$ = "014":ACT=1:GOSUB 3000 'K115 on 3916 VFLAG = 2 'flag to 2 for ac v 3919 RETURN 3920 '******** SET DVOM FOR CAPACITANCE **! 3922 DEV$ = "062":ACT=1:GOSUB 3000 'K105,109 on 3924 VFLAG = 3 'flag = 3 for cap 3929 RETURN 3930 '******** SET DVOM FOR DC CURRENT ***! 3932 GOSUB 2640 'clear DVOM 3934 DEV$ = "061":ACT=1:GOSUB 3000 'K102,110 on 3935 FOR X = 1 TO 10000 STEP 1:NEXT X 'delay for relay action 3936 DEV$ = "064":ACT=1:GOSUB 3000 'K103 on 3938 VFLAG = 4 'flag to 4 for dc I 3939 RETURN 3940 '******** CONN DVOM TO TEL LINE *****# 3942 DEV$ = "063":ACT=1:GOSUB 3000 'K103 on 3949 RETURN 3950 '******** DISCONN DVOM FROM TEL LINE ***# 3952 DEV$ = "063":ACT=0:GOSUB 3000 'K103 off 3959 RETURN 3960 '******** CALCULATE DC V DVOM ********* 3962 IF OVF=1 THEN PRINT "Over Range DCV (>250V)" 3964 IF OVF=1 THEN RETURN 3966 VLTS=CNT*(0.01):PRINT "Count = "CNT 3968 RETURN 3970 '******** CALCULATE AC V DVOM ********* not used yet 3972 IF OVF=1 THEN PRINT "Over Range ACV (>250V)" 3974 IF OVF=1 THEN RETURN 3976 VLTS=CNT*(0.013) 3978 RETURN 4000 '******** DELAY 'DEL' SECONDS ******** 4002 SCNT=0:PRINT"pause="DEL 'zero the seconds counter, stub 4004 TME$=RIGHT$(TIME$,2):SEC1=VAL(TME$) 'get second at start 4006 TME$=RIGHT$(TIME$,2):SEC=VAL(TME$) 'get current second 4008 IF SEC<>SEC1 THEN SCNT=SCNT+1 'increment delay counter 4010 IF SEC<>SEC1 THEN SEC1=SEC 'store latest second 4012 IF SCNT=DEL THEN RETURN 4019 GOTO 4006 4150 '******** READ DVOM ROUTINE ****************! 4152 SAVE7=IMG(7) 'save original image of &H347 4154 LONIB=(SAVE7 AND 15) 'D0-D3 remain untouched, AND with 15 4156 'read digits from a-d 4158 BWW=(LONIB+16) 'set for digit 1 (Value = 0) 4160 OUT(&H347),BWW 'send setting 4162 FOR X=1 TO 15700 STEP 1:NEXT 'delay of 1 second is critical 4164 '****** ENTER HERE FOR REPEAT MEASURE ********* 4166 BWW=(LONIB+16) 'set for digit 1 (Value=0) 4168 OUT(&H347),BWW 'send setting 4170 FOR X=1 TO 30 STEP 1:NEXT 'delay 4172 V=INP(&H343) 'read digit 1 4174 DGT1=(15 AND V) 4176 BWW=(LONIB+16+32) 'set for digit 2 (Value=1) 4178 OUT(&H347),BWW 'send setting 4180 FOR X=1 TO 30 STEP 1:NEXT 4182 V=INP(&H343) 'read digit 2 4184 DGT2=(15 AND V) 4186 BWW=(LONIB+16+64) 'set for digit 3 (Value=2) 4188 OUT(&H347),BWW 'send setting 4190 FOR X=1 TO 30 STEP 1:NEXT 4192 V=INP(&H343) 'read digit 3 4194 DGT3=(15 AND V) 4196 BWW=(LONIB+16+32+64)'set for digit 4 (Value=3) 4198 OUT(&H347),BWW 'send setting 4200 FOR X=1 TO 30 STEP 1:NEXT 4202 V=INP(&H343) 'read digit 4 4204 DGT4=(1 AND V) 4206 BWW=(LONIB+16+128)'set for overrange (Value=4) 4208 OUT(&H347),BWW 'send setting 4210 FOR X=1 TO 30 STEP 1:NEXT 4212 V=INP(&H343) 'read digit 5 4214 OVF=(8 AND V) 4216 IF OVF=8 THEN OVF=1 ELSE OVF=0 4218 PLR=(2 AND V) 4220 IF PLR=2 THEN PLR=1 ELSE PLR=0 4222 BWW=(LONIB+16) 4224 OUT(&H347),BWW 4226 CNT=(10^4*DGT4)+(10^3*DGT3)+(10^2*DGT2)+(10*DGT1) 4228 'LOCATE 22,10:PRINT SPC(40)" " 'stub 4230 'LOCATE 23,10:PRINT SPC(50)" " 'stub 4232 'LOCATE 22,10:PRINT DGT4"."DGT3""DGT2""DGT1"0" 'stub 4234 'LOCATE 23,10:PRINT "A-D CNT="CNT", OV Flag="OVF", +-Flag="PLR'stub 4236 IF ADTST=1 THEN GOTO 4164 'loop for A-D testing only 4239 RETURN 4250 '*************** SET MODEM TYPE (INT/EXT) ************* 4252 CMD$=LEFT$(CMD$,(LEN(CMD$)-1)) 'strip off CR on end 4254 MD$=RIGHT$(CMD$,(LEN(CMD$)-4)) 'get string 4256 IF MD$=" EXT" OR MD$=" ext" THEN GOTO 4264 'set ext modem 4258 IF MD$=" INT" OR MD$=" int" THEN GOTO 4270 'set int modem 4260 REPLY$=EMSG3$ 'bad parameter reply 4262 GOTO 4750 4264 REPLY$="P39, Modem Now External" 4266 IMOD=0 4268 GOTO 4750 4270 REPLY$="P40, Modem Now Internal" 4272 HDX2=0 'com2 now full duplex 4274 GOSUB 1200 'save in INI file 4276 IMOD=1:PRINT "IMOD="IMOD", HDX2="HDX2 4279 GOTO 4750 4300 '*** READ VOLTAGE PRI A-D, AVERAGE 10 TRIES ********! 4305 FOR X=1 TO 3000 STEP 1:NEXT 4310 ACC=0 'acc=accumulate 4315 FOR TRY=1 TO 10 STEP 1 'integrate 10 measurements 4320 V=INP(&H342) 'read A-D 4325 FOR X=1 TO 25 STEP 1:NEXT X'wait 4330 ACC= ACC+V 4332 NEXT TRY 'ten tries 4335 V = INT(ACC/(TRY-1)) 'convert result to avg & voltage 4340 RETURN 4350 '********* BUSY TEST ******************************* 4352 GOSUB 2200 'rel pair & clr 4454 GOSUB 2670 'turn on BUSY LED 4456 GOSUB 2220 'clr/init A-to-D 4458 FOR X=1 TO 1000 STEP 1:NEXT 4460 GOSUB 3680 'conn to ring Bit 2(4) 4462 GOSUB 4300 'meas v, RNGV 4464 RNGV=V 4466 FOR X=1 TO 1000 STEP 1:NEXT 4470 GOSUB 3690 'conn to tip Bit 1(2) 4572 GOSUB 4300 'meas v, TIPV 4574 TIPV=V 4576 TPRGV=RNGV-TIPV 4578 LOCATE 10,10 4580 CLS:PRINT SPC(35) " " 4582 LOCATE 10,10 4584 PRINT "R ="RNGV" T ="TIPV" T-R ="TPRGV 4586 FOR X=1 TO 8000 STEP 1:NEXT 4588 GOSUB 2680 'turn off BUSY LED 4590 GOSUB 6000 'update reply messgs 4692 REPLY$ = P30$ 'not busy messg 4694 IF ABS(TPRGV) < 40 THEN REPLY$ = P31$ 'busy messg 4699 GOTO 4750 4750 '***** RETURN FROM COMMAND ****** 4752 IF PF1 = 1 THEN GOTO 4756 4754 IF PF2 = 1 THEN GOTO 4764 4756 A1$ = "":PF1 = 0 4758 PRINT #1, REPLY$+CRLF$+PROMPT$; 4762 PRINT "Free memory = " FRE(0):GOTO 409 4764 A2$ = "":PF2 = 0 4766 PRINT #2, REPLY$+CRLF$+PROMPT$; 4769 PRINT "Free Memory = " FRE(0):GOTO 432 4770 '****** INITIALLIZE THE MODEM ******** 4772 IF IMOD = 1 THEN HDX2 = 1 'set port full duplex 4774 DEV$="010":ACT=0:GOSUB 3000 'clear reset bit 4776 DEV$="010":ACT=1:GOSUB 3000 'set reset bit 4778 DEL = 2:GOSUB 4000 '2 sec reset pulse 4780 DEV$="010":ACT=0:GOSUB 3000 'clear reset bit 4782 PRINT #2, MINI$:PRINT MINI$ 'modem init string 4784 DEL = 3:GOSUB 4000 4786 RETURN 4800 '***** RETURN FROM MODEM COMMAND ****** 4802 IF PF1 = 1 THEN GOTO 4806 4804 IF PF2 = 1 THEN GOTO 4814 4806 A1$ = "":PF1 = 0 4808 PRINT #1, A1$+CRLF$+PROMPT$; 4812 GOTO 409 4814 A2$ = "":PF2 = 0 4816 PRINT #2, A2$+CRLF$+PROMPT$; 4819 GOTO 432 5000 '****** COMMAND PARSER ******* 5005 ON ERROR GOTO 2300 'global error handler reboots 5010 GOSUB 6000 'set replies verb/terse 5100 IF PF1=1 THEN CMD$=A1$ 'get input to parse 5110 IF PF2=1 THEN CMD$=A2$ ' " " " " 5115 IF LEN(CMD$) <5 OR LEN(CMD$) >48 THEN REPLY$ = EMSG2$ 5116 IF LEN(CMD$) <5 OR LEN(CMD$) >48 THEN GOTO 4750 'send BAD FORMAT 5117 GOSUB 5200 'convert to caps 5120 VERB$=LEFT$(CMD$,4) 'strip out verb (4 chrs) 5125 GOTO 5800 'try to parse verb 5200 '****** CONVERT LOWER CASE TO CAPS ****** 5204 TEMP$="" 5205 FOR X=1 TO LEN(CMD$) STEP 1 5210 X$=MID$(CMD$,X,1) 5220 IF ASC(X$) < 97 OR ASC(X$) > 122 THEN GOTO 5235 'only lc letters 5230 X$=CHR$(ASC(X$)-32) 'convert to caps 5235 TEMP$=TEMP$+X$ 5240 NEXT X 5245 CMD$=TEMP$:PRINT:PRINT:PRINT "Command="CMD$ 'stub 5299 RETURN 5800 '******* VERB LIST ********* 5902 IF VERB$="DCOM" THEN GOTO 1730 'report com port settings 5904 IF VERB$="DMOD" THEN GOTO 2570 'report modem string 5905 IF VERB$="DSTE" THEN GOTO 2270 'report site ID 5906 IF VERB$="DVER" THEN GOTO 2260 'report versions 5908 IF VERB$="ICAL" THEN GOTO 6320 'use OV03/cal filter(servic only) 5914 IF VERB$="SACC" THEN GOTO 2350 'access unconditional 5916 IF VERB$="SACV" THEN GOTO 6300 'use OV01/meas AC t-g,r-g,opt bd 5918 IF VERB$="SBSY" THEN GOTO 4350 'check if line is off-hook 5920 IF VERB$="SCLN" THEN GOTO 6310 'use OV02/characterize tel line 5922 IF VERB$="SCLR" THEN GOTO 3500 'clear hardware 5924 IF VERB$="SCOM" THEN GOTO 2100 'set com port speed 5926 IF VERB$="SDCV" THEN GOTO 6300 'use OV01/meas DC t,r, main bd 5928 IF VERB$="SDEF" THEN GOTO 1100 'set all values to default 5930 IF VERB$="SFDX" THEN GOTO 1650 'set FDX 5932 IF VERB$="SHDX" THEN GOTO 1600 'set HDX 5934 IF VERB$="SMOD" THEN GOTO 2400 'set modem ini string 5936 IF VERB$="SMSG" THEN GOTO 2340 'send modem ini string out COM1,2 5938 IF VERB$="SMTU" THEN GOTO 6310 'use OV02/access MTU 5940 IF VERB$="SNME" THEN GOTO 1350 'set site name 5944 IF VERB$="SRST" THEN GOTO 2250 'reset computer 5946 IF VERB$="SSNO" THEN GOTO 1300 'set site # 5947 IF VERB$="SSPV" THEN GOTO 6320 'use OVO3/access SPV (spv) 5948 IF VERB$="STVF" THEN GOTO 6320 'use OVO3/VF test the pair 5950 IF VERB$="SEAC" THEN GOTO 6340 'use OVO5/release access switch 5952 IF VERB$="SEAE" THEN GOTO 6340 'use OVO5/select pr to test (E) 5954 IF VERB$="SEAF" THEN GOTO 6340 'use OVO5/select pr to test (F) 5956 IF VERB$="SEAM" THEN GOTO 6340 'use OVO5/select pr to monitor 5958 REPLY$=EMSG1$ 'INVALID VERB FORMAT message 5959 GOTO 4750 'return w error 5995 '******** COMMAND NOT AVAILABLE, RETURN ******* 5996 GOSUB 6000 'get strings 5997 REPLY$=EMSG4$ 'cmnd not avail 5999 GOTO 4750 6000 '****** REPLIES ************** 6001 GOSUB 1700:PRINT "Updating Reply Strings" 'update strings 6002 P00$="P00, Comply, no values to report" 6005 P01$="P01, Unit clear and ready" 6010 P02$="P02, Loop resistance, "+R$ 6015 P03$="P03, Not available, line in Use" 6022 P04$="P04, Access Success, Line Open" 6024 P05$="P05, Access Switch Fault" 6030 P06$="P06, Unknown Resistance Fault" 6035 P07$="P07, Line OK, Subscriber OK, MTU is Reversed" 6040 P08$="P08, Resistance Fault on Line" 6045 P09$="P09, Line OK, Subscriber OK, MTU Present" 6050 P10$="P10, Line OK, Subscriber Shorted or Off Hook" 6065 P13$="P13, "+MINI$ 6070 P14$="P14, Line has alreay been accessed" 6075 P15$="P15, Com1: Speed = "+RIGHT$(P1$,1)+", "+HDX1$+" Com2: Speed = "+RIGHT$(P2$,1)+", "+HDX2$ 6080 P16$="P16, Access Failure, Line Shorted" 6085 P17$="P17, Access Failure, Unknown Fault" 6100 P18$="P18, Site No.: "+STENO$+", Location: "+STE$+", Port: "+PRT$ 6105 P19$="P19, Software: "+VER$+" Hardware: "+REV$ 6110 P20$="P20, Access Success, Line OK, Subscriber OK" 6115 P21$="P21, Modem Init String = "+MINI$ 6120 P22$="P22, All values now set to default" 6125 P23$="P23, Site Number set to "+STENO$ 6130 P24$="P24, Site Name set to "+STE$ 6135 P25$="P25, Loop Ohms = "+R$+", Loss at 1004 Hz = "+L3$+" dB"+", Slope = "+L4$+" dB" 6140 P26$="P26, No Data, Device Not Accessed" 6145 P27$="P27, No Data, Insufficient Loop Current" 6150 P28$="P28, No Data, Excessive Loop Current" 6160 P30$="P30, Line Not Busy" 6165 P31$="P31, Line Busy" 6168 P32$="P32, Subscriber pair open or MTU not available" 6170 P34$="P34, R/G:"+RNGV$+" V, T/G:"+TIPV$+" V, T/R:"+TPRGV$+" V" 6171 P35$="P35, T/R:"+RTR$+" T/G:"+RTG$+" R/G:"+RRG$+CRLF$+" T/R:"+CTR$+"T/G:"+CTG$+"R/G:"+CRG$+"Unbal:"+UNBAL$ 6172 P36$="P36, T/R:"+ACTR$+" VAC, T/G:"+ACTG$+" VAC, R/G:"+ACRG$+" VAC" 6175 P39$="P39, Modem Now External" 6176 P40$="P40, Modem Now Internal" 6177 P41$="P41, Not Avaliable, Modem Internal" 6178 P42$="P42, Access Failure, Subscriber Shorted or Off Hook" 6190 P50$="P50, Ring Not Found" 6191 P51$="P51, Ring Found" 6192 P52$="P52, CNN = "+LNSN$+" dBrnCn" 6193 P53$="P53, CNS = "+LNSF$+" dBrnC" 6194 P54$="P54, LVL = -"+LTNE$+" dBm" 6195 P55$="P55, I Loop = "+LMILS$+" mA" 6196 P56$="P56, Ring Voltage = "+VRNG$+" Volts AC" 6197 P57$="P57, Access Switch Cleared, line"+STR$(LINNO) 6198 P58$="P58, Access Switch Monitoring, line"+STR$(LINNO) 6199 P59$="P59, Access Switch Split 4W & E, line"+STR$(LINNO) 6200 P60$="P60, Access Switch Split 4W & F, line"+STR$(LINNO) 6201 P61$="P61, Half Ringer Present" 6202 P62$="P62, No Ringers Present" 6203 P63$="P63, Multiple Ringers Present" 6213 EMSG1$="E01, INVALID VERB FORMAT" 6214 EMSG2$="E02, BAD FORMAT" 6216 EMSG3$="E03, INVALID PARAMETER" 6218 EMSG4$="E04, COMMAND NOT AVAILABLE" 6220 RETURN 6300 '******** OVERLAY 01 CONTROL (AC/DC Measure) 6302 IF OVNO=1 THEN GOTO 10000 'use verb list 6304 CHAIN MERGE "1UOV01.ASC",10000,ALL,DELETE 10000-60000 6309 ' 6310 '******** OVERLAY 02 CONTROL (MTU) 6312 IF OVNO=2 THEN GOTO 10000 'use verb list 6314 CHAIN MERGE "1UOV02.ASC",10000,ALL,DELETE 10000-60000 6319 ' 6320 '******** OVERLAY 03 CONTROL (SPV) 6322 IF OVNO=3 THEN GOTO 10000 'use verb list 6324 CHAIN MERGE "1UOV03.ASC",10000,ALL,DELETE 10000-60000 6329' 6330 '******** OVERLAY 04 CONTROL (TMS) not used 6332 'IF OVNO=4 THEN GOTO 10000 'use verb list 6334 'CHAIN MERGE "1UOV04.ASC",10000,ALL,DELETE 10000-60000 6339 ' 6340 '******** OVERLAY 05 CONTROL (ACC SWITCH) 6342 IF OVNO=5 THEN GOTO 10000 'use verb list 6344 CHAIN MERGE "1UOV05.ASC",10000,ALL,DELETE 10000-60000 6349 ' 6999 ' 10000'Overlays start at 10000 10100 '******* VERB LIST ********* 10102 IF VERB$="DCOM" THEN GOTO 1730 'report com port settings 10104 IF VERB$="DMOD" THEN GOTO 2570 'report modem string 10105 IF VERB$="DSTE" THEN GOTO 2270 'report site ID 10106 IF VERB$="DVER" THEN GOTO 2260 'report versions 10108 IF VERB$="ICAL" THEN GOTO 6320 'use OV03/cal filter(service) 10114 IF VERB$="SACC" THEN GOTO 2350 'access unconditional 10116 IF VERB$="SACV" THEN GOTO 6300 'use OV01/meas AC t,r,opt bd 10118 IF VERB$="SBSY" THEN GOTO 4350 'check if line is off-hook 10120 IF VERB$="SCLN" THEN GOTO 6310 'use OV02/characterize tel line 10122 IF VERB$="SCLR" THEN GOTO 3500 'clear hardware 10124 IF VERB$="SCOM" THEN GOTO 2100 'set com port speed 10126 IF VERB$="SDCV" THEN GOTO 6300 'use OV01/meas DC t,r, main bd 10128 IF VERB$="SDEF" THEN GOTO 1100 'set all values to default 10130 IF VERB$="SFDX" THEN GOTO 1650 'set FDX 10132 IF VERB$="SHDX" THEN GOTO 1600 'set HDX 10134 IF VERB$="SMOD" THEN GOTO 2400 'set modem ini string 10136 IF VERB$="SMSG" THEN GOTO 2340 'send modem ini string, COM1,2 10138 IF VERB$="SMTU" THEN GOTO 6310 'use OV02/access MTU 10140 IF VERB$="SNME" THEN GOTO 1350 'set site name 10144 IF VERB$="SRST" THEN GOTO 2250 'reset computer 10146 IF VERB$="SSNO" THEN GOTO 1300 'set site # 10147 IF VERB$="SSPV" THEN GOTO 6320 'use OVO3/access SPV (spv) 10148 IF VERB$="STVF" THEN GOTO 6320 'use OVO3/VF test the pair 10150 IF VERB$="SEAC" THEN GOTO 6340 'use OVO5/release access switch 10152 IF VERB$="SEAE" THEN GOTO 6340 'use OVO5/select pr to test (E) 10154 IF VERB$="SEAF" THEN GOTO 6340 'use OVO5/select pr to test (F) 10156 IF VERB$="SEAM" THEN GOTO 6340 'use OVO5/select pr to monitor 10158 REPLY$=EMSG1$ 'INVALID VERB FORMAT message 10159 GOTO 4750 'return w error 60000 GOTO 60100 60100 END 10000 '"1UOV01.ASC" First overlay for "1UMAIN.ASC" (AC/DC Measure) 10005 OVNO=1 'overlay number 10010 PRINT "Overlay Number 1" 10100 '******* VERB LIST ********* 10102 IF VERB$="DCOM" THEN GOTO 1730 'report com port settings 10104 IF VERB$="DMOD" THEN GOTO 2570 'report modem string 10105 IF VERB$="DSTE" THEN GOTO 2270 'report site ID 10106 IF VERB$="DVER" THEN GOTO 2260 'report versions 10108 IF VERB$="ICAL" THEN GOTO 6320 'use OV03/cal filter(servic only) 10114 IF VERB$="SACC" THEN GOTO 2350 'access unconditional 10116 IF VERB$="SACV" THEN GOTO 14420 'meas AC t-g,r-g,opt bd 10118 IF VERB$="SBSY" THEN GOTO 4350 'check if line is off-hook 10120 IF VERB$="SCLN" THEN GOTO 6310 'use OV02/characterize tel line 10122 IF VERB$="SCLR" THEN GOTO 3500 'clear hardware 10124 IF VERB$="SCOM" THEN GOTO 2100 'set com port speed 10126 IF VERB$="SDCV" THEN GOTO 11590 'meas DC t-g,r-g, main bd 10128 IF VERB$="SDEF" THEN GOTO 1100 'set all values to default 10130 IF VERB$="SFDX" THEN GOTO 1650 'set FDX 10132 IF VERB$="SHDX" THEN GOTO 1600 'set HDX 10134 IF VERB$="SMOD" THEN GOTO 2400 'set modem ini string 10136 IF VERB$="SMSG" THEN GOTO 2340 'send modem ini string out COM1,2 10138 IF VERB$="SMTU" THEN GOTO 6310 'use OV02/access MTU 10140 IF VERB$="SNME" THEN GOTO 1350 'set site name 10144 IF VERB$="SRST" THEN GOTO 2250 'reset computer 10146 IF VERB$="SSNO" THEN GOTO 1300 'set site # 10147 IF VERB$="SSPV" THEN GOTO 6320 'use OVO3/access SPV (spv) 10148 IF VERB$="STVF" THEN GOTO 6320 'use OVO3/VF test the pair 10150 IF VERB$="SEAC" THEN GOTO 6340 'use OVO5/release access switch 10152 IF VERB$="SEAE" THEN GOTO 6340 'use OVO5/select pr to test (E) 10154 IF VERB$="SEAF" THEN GOTO 6340 'use OVO5/select pr to test (F) 10156 IF VERB$="SEAM" THEN GOTO 6340 'use OVO5/select pr to monitor 10158 REPLY$=EMSG1$ 'INVALID VERB FORMAT message 10159 GOTO 4750 'return w error 11590 '****** MAIN BOARD READ DCV T-R,T-G,R-G ****** 11592 CLS:PRINT "Overlay Number 1" 11594 GOSUB 2670 'turn on BUSY LED 11600 GOSUB 2220 'init/clear a-d 11604 GOSUB 3680 'conn to ring Bit 2(4) 11605 FOR X = 1 TO 1000 STEP 1:NEXT 11606 GOSUB 4300 'meas v, RNGV 11608 RNGV = V:PRINT V 11610 X=RNGV:GOSUB 15270:RNGV$=X$ 'format number 11614 GOSUB 3690 'conn to tip Bit 1(2) 11615 FOR X = 1 TO 1000 STEP 1:NEXT 11616 GOSUB 4300 'meas v, TIPV 11618 TIPV = V:PRINT V 11620 X=TIPV:GOSUB 15270:TIPV$=X$ 'format number 11622 TPRGV = RNGV - TIPV 11624 X=TPRGV:GOSUB 15270:TPRGV$=X$ 'format number 11626 GOSUB 2220 'clr a-d 11628 GOSUB 6000 'update reply strings 11630 REPLY$ = P34$ 11636 IF ACSTAT = 0 THEN GOSUB 2680 'no access,turn off BUSY LED 11649 GOTO 4750 14420 '******** MEASURE AC VOLTAGE W/DVOM-CAP BOARD ***************** 14465 CLS 'clear the screen 14466 PRINT "Overlay Number 1" 14470 GOSUB 3630 'remove test set from line K5(0) 14475 GOSUB 3650 'disconnect main board test power supply, K4 off 14476 GOSUB 2700 'turn off main board test power supply 14480 '******* MES AC VOLTS FAC T/R ******** 14485 GOSUB 2640 'clr dvom bd 14490 GOSUB 2670 'turn on BUSY LED 14495 GOSUB 3800 'config access select fac 14500 GOSUB 3860 'reset dvom to DC voltage 14502 GOSUB 3910 'set dvom for AC voltage 14505 GOSUB 3820 'config for t/r 14515 GOSUB 3940 'conn dvom to tel line 14516 FOR X = 1 TO 16000 STEP 1:NEXT X 14517 GOSUB 4150 'read DVOM 14520 GOSUB 3960 'measure dc/ac voltage & calc results 14525 ACTR = VLTS 14530 X = ACTR:GOSUB 15270:ACTR$ = X$ 'format number 14535 '******* MES AC VOLTS FAC T/G ****** 14540 GOSUB 3830 'config for t/g 14541 FOR X = 1 TO 16000 STEP 1:NEXT X 14542 GOSUB 4150 'read DVOM 14545 GOSUB 3960 'measure dc/ac voltage & calc results 14550 ACTG = VLTS 14555 X = ACTG:GOSUB 15270:ACTG$ = X$ 'format number 14560 '******* MES AC VOLTS FAC R/G ****** 14565 GOSUB 3840 'config for r/g 14566 FOR X = 1 TO 16000 STEP 1:NEXT X 14567 GOSUB 4150 'read DVOM 14570 GOSUB 3960 'measure dc/ac voltage & calc results 14575 ACRG = VLTS 14580 X = ACRG:GOSUB 15270:ACRG$ = X$ 'format number 14585 PRINT ACTR ACTG ACRG 14590 IF ACSTAT= 0 THEN GOSUB 2680 'turn off BUSY LED if no access 14595 GOSUB 2640 'clr sec board 14620 GOSUB 6000 'update reply strings 14622 REPLY$ =P36$ 14630 GOTO 4750 14820 '******* FORMAT RESISTANCE NUMBERS **************** 14830 'Pass in a real number (X) between 0 and 1 Million 14831 'IF X < 0 THEN A1$ = CHR$(45) ELSE A1$ = CHR$(43) 14832 ' 14850 IF X < 0 THEN X = -1*X 14860 X$ = STR$(X) 14870 DEL = LEN(X$) 'DEL is the numeric string length 14880 FOR V = 1 TO DEL STEP 1 14890 Q$ = MID$(X$,V,1) 'V is dec pt position counted from left 14900 IF Q$ = CHR$(46) THEN GOTO 14920 14910 NEXT V 14920 IF (X >= 1000 AND X < 1000000) THEN LET P$ = " KOhms, " 14930 IF (X > 0 AND X < 999) THEN LET P$ = " Ohms, " 14940 IF X >= 1000000 THEN LET P$ = " Ohms, " 14950 IF (X >= 1000 AND X < 1000000) THEN LET V = V - 3 'posit of dec point 14960 IF (X >= 1000 AND X < 1000000) THEN LET X = X/1000 14970 X$ = STR$(X) 14980 Q$=""'the numeric string length is always 7 14990 VDC = 7 - DEL 'VDC is the amount of spaces we add to numeric string 15000 IF VDC < 1 THEN VDC= 0 'add zero spaces to string length if already < 1 15010 FOR POL = 1 TO V+2 STEP 1 'step to 2nd decimal point 15020 Q$ = Q$+MID$(X$,POL,1) 'V is dec pt position counted from left 15030 NEXT POL 15035 Q$ = SPACE$(VDC)+Q$ 15040 IF X < 1000000 THEN X$ = Q$+P$ ELSE X$ = ">1 Meg "+P$ 15050 RETURN 'Pass out a properly formatted numeric string (X$) 15100 '******* subroutine displays capacitance numbers precisely *********** 15110 'Passes in a real number (X) between 0 and 10 MicroFarads 15120 X$ = STR$(X) 15130 DEL = LEN(X$) 'DEL is the numeric string length 15140 FOR V = 1 TO DEL STEP 1 15150 Q$ = MID$(X$,V,1) 'V is dec pt position counted from left 15160 IF Q$ = CHR$(46) THEN GOTO 15180 15170 NEXT V 15180 P$ = " Mfd, " 15190 Q$=""'the numeric string length is always 5 15200 VDC = 5 - DEL 'VDC is the amount of spaces we add to numeric string 15210 IF VDC < 1 THEN VDC= 0 'add zero spaces to string length if already < 1 15220 FOR POL = 1 TO V+2 STEP 1 'step to 2nd decimal point 15230 Q$ = Q$+MID$(X$,POL,1) 'V is dec pt position counted from left 15240 NEXT POL 15250 X$ = SPACE$(VDC)+Q$+P$ 15260 RETURN 'Pass out a properly formatted numeric string (X$) 15270 '******* CONVERT VOLTAGE 'X' TO FORMATTED STRING ******* 15280 'Passes in a real number (X) between 0 and 200 Volts 15290 X$ = STR$(X) 15300 DEL = LEN(X$) 'DEL is the numeric string length 15310 FOR V = 1 TO DEL STEP 1 15320 Q$ = MID$(X$,V,1) 'V is dec pt position counted from left 15330 IF Q$ = CHR$(46) THEN GOTO 15350 15340 NEXT V 15350 'P$ = " VAC" 15360 Q$=""'the numeric string length is always 6 15370 VDC = 6 - DEL 'VDC is the amount of spaces we add to numeric string 15380 IF VDC < 1 THEN VDC= 0 'add zero spaces to string length if already < 1 15390 FOR POL = 1 TO V+2 STEP 1 'step to 2nd decimal point 15400 Q$ = Q$+MID$(X$,POL,1) 'V is dec pt position counted from left 15410 NEXT POL 15420 X$ = SPACE$(VDC)+Q$ 15430 RETURN 'Pass out a properly formatted numeric string (X$) 60000 GOTO 60100 60100 END 10000 '"1UOV02.ASC" Second overlay for "1UMAIN.ASC" (MTU Measurements) 10005 OVNO=2 'overlay number 10010 PRINT "Overlay Number 2" 10100 '******* VERB LIST ********* 10102 IF VERB$="DCOM" THEN GOTO 1730 'report com port settings 10104 IF VERB$="DMOD" THEN GOTO 2570 'report modem string 10105 IF VERB$="DSTE" THEN GOTO 2270 'report site ID 10106 IF VERB$="DVER" THEN GOTO 2260 'report versions 10108 IF VERB$="ICAL" THEN GOTO 6320 'use OV03/cal filter(service) 10114 IF VERB$="SACC" THEN GOTO 2350 'access unconditional 10116 IF VERB$="SACV" THEN GOTO 6300 'use OV01/meas AC t,r,opt bd 10118 IF VERB$="SBSY" THEN GOTO 4350 'check if line is off-hook 10120 IF VERB$="SCLN" THEN GOTO 12560 'characterize tel line 10122 IF VERB$="SCLR" THEN GOTO 3500 'clear hardware 10124 IF VERB$="SCOM" THEN GOTO 2100 'set com port speed 10126 IF VERB$="SDCV" THEN GOTO 6300 'use OV01/meas DC t,r, main bd 10128 IF VERB$="SDEF" THEN GOTO 1100 'set all values to default 10130 IF VERB$="SFDX" THEN GOTO 1650 'set FDX 10132 IF VERB$="SHDX" THEN GOTO 1600 'set HDX 10134 IF VERB$="SMOD" THEN GOTO 2400 'set modem ini string 10136 IF VERB$="SMSG" THEN GOTO 2340 'send modem ini string, COM1,2 10138 IF VERB$="SMTU" THEN GOTO 11900 'access MTU 10140 IF VERB$="SNME" THEN GOTO 1350 'set site name 10144 IF VERB$="SRST" THEN GOTO 2250 'reset computer 10146 IF VERB$="SSNO" THEN GOTO 1300 'set site # 10147 IF VERB$="SSPV" THEN GOTO 6320 'use OVO3/access SPV (spv) 10148 IF VERB$="STVF" THEN GOTO 6320 'use OVO3/VF test the pair 10150 IF VERB$="SEAC" THEN GOTO 6340 'use OVO5/release access switch 10152 IF VERB$="SEAE" THEN GOTO 6340 'use OVO5/select pr to test (E) 10154 IF VERB$="SEAF" THEN GOTO 6340 'use OVO5/select pr to test (F) 10156 IF VERB$="SEAM" THEN GOTO 6340 'use OVO5/select pr to monitor 10158 REPLY$=EMSG1$ 'INVALID VERB FORMAT message 10159 GOTO 4750 'return w error 11900 '******** SPLIT PAIR, ACCESS MTU ******** 11902 IF ACSTAT = 0 THEN GOTO 11931 'access if no access 11904 GOSUB 6000 'update reply strings 11906 REPLY$ = P14$ 11908 GOTO 4750 'back to command mode 11931 CLS:LOCATE 1,25:PRINT "MTU ACCESS ROUTINE, (overlay 2)" 11932 LOCATE 2,10:PRINT "Applying -48V"'stub 11935 GOSUB 2670 'turn on BUSY LED 11940 GOSUB 2715 'turn on -48V 11945 GOSUB 3610 'set norm pol, K1 off 11950 GOSUB 3640 'conn Test T/R to Power Supply, K4 on 11955 GOSUB 3620 'conn LUT to SPV/MTU tester K5 on 11960 GOSUB 2760 'split line, K6 on 11965 GOSUB 3930 'set dvom for dc current, K105.109 on 11970 GOSUB 3940 'insert dvom in tel line R, K2 on 11972 DEL=1:GOSUB 4000 '1 sec delay 11975 GOSUB 4150 'measure dc current 11980 I1=CNT*2 'read -48V forward loop I, store in I1 in uA 11985 IF OVF=1 THEN I1=40000 'if overrange flag = 1 then I1=40 mA 11995 LOCATE 3,10:PRINT "-48V Forward Loop Current= ",I1" ua" 11998 GOSUB 3650 'remove line power, discharge it K4 off 12000 LOCATE 5,10:PRINT "Applying -24V" 'Apply -24V 12005 DEL=1:GOSUB 4000 '1 sec delay 12010 GOSUB 2720 'place -24V onto pair 12012 GOSUB 3640 'reconnect line K4 on 12015 DEL=1:GOSUB 4000 '1 sec delay 12020 GOSUB 4150 'measure dc current 12025 I2=CNT*2 'read -24V forward loop I, store in I2 in uA 12030 IF OVF=1 THEN I2=40000 'if overrange flag is one,then I2=40 mA 12040 LOCATE 6,10:PRINT "-24V Forward Loop Current= ",I2" ua" 12060 LOCATE 8,10:PRINT "Applying +130V" 12065 GOSUB 3600 'set rev pol, K1 on 12070 GOSUB 2705 'conn 130V to pair 12072 DEL=1:GOSUB 4000 '1 sec delay 12075 GOSUB 4150 'measure dc current 12080 IMIN=CNT:IMAX=IMIN 12085 ACC=0 'acc=accumulator 12090 FOR TRY=1 TO 75 STEP 1 'integrate 25 measurements 12095 GOSUB 4164 'measure dc current 12100 IF CNT > IMAX THEN IMAX = CNT 12105 IF CNT - IMIN < 0 THEN IMIN = CNT 12110 FOR X=1 TO 80 STEP 1:NEXT X '5 msec delay 12115 ACC=ACC+CNT:NEXT TRY 'voltage accumulator, next try 12120 I3=(ACC/(TRY-1))*2 'avg reading for signature current 12125 IF OVF=1 THEN I3=40000 'if overrange flag is one,then I3=40 mA 12135 LOCATE 9,10:PRINT "+130V MTU SIGNATURE CURRENTS:" 12145 I3D=(IMAX-IMIN)*2 12150 LOCATE 10,10:PRINT "IMAX-IMIN="I3D" ua, IAVG =",I3" ua" 12175 LOCATE 12,10:PRINT "Applying -130V" 12180 GOSUB 3610 'set norm pol K1 off 12162 DEL=1:GOSUB 4000 '1 sec delay 12185 GOSUB 4150 'measure dc current 12190 IMIN=CNT:IMAX=IMIN 12195 ACC=0 'acc=accumulator 12200 FOR TRY=1 TO 75 STEP 1 'integrate 25 measurements 12205 GOSUB 4164 'measure dc current 12210 IF CNT > IMAX THEN IMAX=CNT 12215 IF CNT - IMIN < 0 THEN IMIN=CNT 12220 FOR X=1 TO 80 STEP 1:NEXT X '5 msec delay 12225 ACC=ACC+CNT:NEXT TRY 'voltage accumulator, next try 12230 I4=(ACC/(TRY-1))*2 'avg reading for signature current 12235 IF OVF=1 THEN I4=40000 'if overrange flag is one,then I4=40 mA 12245 LOCATE 13,10:PRINT "-130V MTU SIGNATURE CURRENTS:" 12255 I4D=(IMAX-IMIN)*2 12260 LOCATE 14,10:PRINT "IMAX-IMIN="I4D" ua, IAVG=",I4" ua" 12270 DEL=1:GOSUB 4000 '1 sec delay 12280 GOSUB 2700 'remove 130V from pair 12285 GOSUB 3650 'remove line from DC power, discharge it 12285 GOSUB 3630 'disconnect test set from line 12290 GOSUB 14000 'display reslt 12295 ACSTAT = 1 12305 GOTO 4750 'good return 12560 '******** CHARACTERIZE TEL LINE *****************! 12600 IF ACSTAT=1 THEN GOTO 12680 'test if access made 12610 GOSUB 6000 'update reply strings 12620 REPLY$=P26$ 'MTU not accessed 12630 GOTO 4750 12680 CLS 'stub 12685 LOHMS=0 'low ohms flag 12690 GOSUB 3630 'remove test set from line K5 off 12700 GOSUB 3650 'remove power supply from main brd K4 off 12702 GOSUB 2640 'clr dvom bd 12704 GOSUB 2670 'turn on BUSY LED 12706 GOSUB 3940 'conn dvom to tel line K103 on 12710 'MES RES FAC T/R ******** 12712 FOR POL = 0 TO 1 STEP 1 'Step through polarity of K108 12722 GOSUB 3800 'config access sel fac K101 off 12724 GOSUB 3900 'set dvom for ohms K111 on 12726 GOSUB 3820 'config for t/r K106,107,108 off 12730 IF POL = 0 THEN GOSUB 3850 'sel normal pol K108 off 12732 IF POL = 1 THEN GOSUB 3856 'sel reverse pol K108 on 12736 GOSUB 14450 'read dvom & calc results 12738 RTR# = ABS(INT(RX#)) 12740 IF POL = 0 THEN RTRA# = RTR# 12742 IF POL = 1 THEN RTRB# = RTR# 12744 NEXT POL 12746 RTR# = (RTRB# + RTRA#)/2 'average T/R +/- pol 12748 X = RTR#:GOSUB 14820:RTR$ = X$ 'format resistance numbers T-R 12750 PRINT "RTRA#="RTRA#;"RTRB#="RTRB#;"RTR#="RTR#;"RTR$="RTR$ 12756 'MES RES FAC T/G ******** 12758 GOSUB 3830 'config for t/g K107 on 12760 GOSUB 3850 'sel normal pol K108 off 12774 GOSUB 14450 'read dvom & calc results 12776 RTG# = ABS(INT(RX#)) 12788 X = RTG#:GOSUB 14820:RTG$ = X$ 'format resistance nunbers T-G 12790 PRINT "RTG#="RTG#;"RTG$="RTG$ 'stub 12792 'MES RES FAC R/G ******** 12796 GOSUB 3840 'config for r/g K106,107 on K108 off 12798 GOSUB 3850 'sel normal pol K108 off 12802 GOSUB 14450 'read dvom & calc results 12804 RRG# = ABS(INT(RX#)) 12814 X = RRG#:GOSUB 14820:RRG$ = X$ 'format resistance numbers R-G 12816 PRINT "RRG="RRG#;"RRG$="RRG$ 13080 '**** MES CAP FAC T/R, T/G, R/G ***** 13082 IF LOHMS=0 THEN GOTO 13090 13084 CTR$=" N/A, " 13085 CTG$=CTR$:CRG$=CTR$:UNBAL$=CTR$ 'preset all caps N/A 13086 GOTO 13270 'send output 13090 DEV$="065":ACT=0:GOSUB 3000 'clr ohms (8220) 13092 GOSUB 3920 'set dvom for capacitance 13100 GOSUB 3820 'config for t/r K3,4 off 13115 'DEL=2:GOSUB 4000 '2 sec delay 13120 GOSUB 14610 'read dvom & calc results 13130 CTR=ABS(CAPS) 13140 X=CTR:GOSUB 15100:CTR$=X$ 13150 GOSUB 3830 'config for t/g 13160 GOSUB 14610 'read dvom & calc results 13170 CTG=ABS(CAPS) 13180 X=CTG:GOSUB 15100:CTG$ = X$ 13190 GOSUB 3840 'config for r/g 13195 'STOP '!!!!! service only 13200 GOSUB 14610 'read dvom & calc results 13210 CRG=ABS(CAPS) 13220 X=CRG:GOSUB 15100:CRG$ = X$ 13230 UNBAL=ABS(CTG-CRG) 'capacitive unbalance T/G to R/G 13240 X=UNBAL:GOSUB 15100:UNBAL$=X$ 13270 PRINT RTR# RTG# RRG# CTR CTG CRG UNBAL 13290 GOSUB 2640 'clr dvom 13340 GOSUB 6000 'update reply strings 13350 REPLY$=P35$ ' T/R:"+RTR$+"T/G:"+RTG$+"R/G:"+RRG$+CRLF$ 13351 '+"T/R:"+CTR$+"T/G:"+CTG$+"R/G:"+CRG$+"Unbal:"+UNBAL$ (2 lines) 13360 GOTO 4750 14000 '******** SEND RESULTS OF ACCESS TRIAL ************ 14001 'I1=48v current,I2=24v current,I3D=normal sig,I4D=reverse sig 14002 LOCATE 17,1 14004 PRINT "-48V="I1"ua,-28V="I2"ua,+130V="I3D"ua,-130V="I4D"ua" 'stub 14008 GOSUB 6000 'get strings 14010 IF (I1<500 AND I2<250 AND I3D>60 AND I4D<60) THEN GOTO 14060 14015 IF (I1<500 AND I2<250 AND I3D<60 AND I4D>60) THEN GOTO 14080 14020 IF (I1>500 AND I2>250) THEN GOTO 14100 'R Fault on line 14030 IF (I1>500 AND I2<250) THEN GOTO 14120 'OK, Sub Shorted 14040 IF (I1<500 AND I2>250) THEN GOTO 14140 'Unk R Fault 14050 IF (I1<100 AND I2<100 AND I3D<100 AND I4D<100) THEN GOTO 14160 14052 'IF (I1>500 AND I2>500) AND (I3D>60 OR I4D>60) THEN GOTO 14190 14055 GOTO 14140 'Unk R Fault 14060 REPLY$ = P09$ 'Line OK, Sub OK, MTU OK 14070 RETURN 14080 REPLY$ = P07$ 'Line OK, Sub OK, MTU Rev 14090 RETURN 14100 REPLY$ = P08$ 'Resistance Fault on Line 14110 RETURN 14120 REPLY$ = P10$ 'Line OK, Subscriber Shorted or Off Hook 14130 RETURN 14140 REPLY$ = P06$ 'Unk R Fault 14150 RETURN 14160 REPLY$ = P32$ 'L Open or MTU Not Avail 14180 RETURN 14450 '******** RESISTANCE T/R ************ 14452 'TRY HI OHMS FIRST ******* 14454 LOHMS = 0 'low ohms flag 14455 OHMRNG = 1000000 'hi scale resistor 14460 DEV$ = "071":ACT=0:GOSUB 3000 'K114 > hi ohms (off) 14465 DEV$ = "070":ACT=0:GOSUB 3000 'K113 > cal (off) 14470 FOR X = 1 TO 1600 STEP 1:NEXT X '100 msec delay 14475 GOSUB 4150 'read dvom routine 14480 VR1 = CNT 'power supp volt for cal 14485 DEV$ = "070":ACT=1:GOSUB 3000 'K113 >meas (on) 14486 DEL=2:GOSUB 4000 14490 'FOR X = 1 TO 4000 STEP 1:NEXT X '.25 sec delay 14495 GOSUB 4150 'read dvom routine 14500 VR2 = CNT 'measure voltage at Rs/Rx junction 14510 M1 = VR2/VR1 'calculate term for voltage ratio 14512 PRINT "VCAL=" VR1 ", V Meas=" VR2 ", M1=" M1 ", Hi Ohms"; 14515 IF M1 <.05 THEN GOTO 14530 'skip to lo range 14516 IF M1 >.99 THEN M1 = .99 'divide by zero protection 14520 RX# = M1*OHMRNG/(1-M1):PRINT RX# 14521 RX# = RX#*5040000/(5040000-RX#) 'correct for R33,R10,R11 14522 RX# = INT(100*RX#+.5)/100 14525 RETURN 14529 LO OHMS FOLLOWS *********** 14530 FOR X = 1 TO 8000 STEP 1:NEXT X '1 sec dly 14532 LOHMS = 1 'set flag 14540 OHMRNG = 10000 'lo scale resistor 14545 DEV$ = "071":ACT=1:GOSUB 3000 'K114 > low ohms (on) 14550 DEV$ = "070":ACT=1:GOSUB 3000 'K113 > meas (on) 14555 'IF OVF = 1 THEN PRINT "Over Range Resistance,(>1 Meg Ohms)" 14560 'IF OVF = 1 THEN RETURN 14565 FOR X = 1 TO 800 STEP 1:NEXT X '50 msec delay 14570 GOSUB 4150 'read dvom routine 14575 VR2 = CNT 'measure voltage at Rs/Rx junction 14580 M1 = VR2/VR1 'calculate term for voltage ratio 14582 IF M1 >.99 THEN M1 = .99 'divide by zero protection 14585 RX# = M1*OHMRNG/(1-M1) 14596 LOCATE 12,10:PRINT "V Meas="VR2", Lo Ohms, "RX# 14600 RETURN 14610 '******** CALCULATE CAPACITANCE *****! 14612 FOR X = 1 TO 80 STEP 1:NEXT X '5 msec delay 14614 GOSUB 4150 'read DVOM 14616 IF OVF=1 THEN PRINT "Over Range Capacitance,(>10 Micro Farads)" 14618 IF OVF = 1 THEN RETURN 14620 CAPS = (CNT-110)*.001 'offset 110,scl fctr .001 14622 CAPS = 100*CAPS/(100-CAPS) 'correct for C15 100 uF 14624 CAPS = INT(100*CAPS+.5)/100 14626 RETURN 14820 '******* FORMAT RESISTANCE NUMBERS **************** 14830 'Pass in a real number (X) between 0 and 1 Million 14831 'IF X < 0 THEN A1$ = CHR$(45) ELSE A1$ = CHR$(43) 14832 ' 14850 IF X < 0 THEN X = -1*X 14860 X$ = STR$(X) 14870 DEL = LEN(X$) 'DEL is the numeric string length 14880 FOR V = 1 TO DEL STEP 1 14890 Q$ = MID$(X$,V,1) 'V is dec pt position counted from left 14900 IF Q$ = CHR$(46) THEN GOTO 14920 14910 NEXT V 14920 IF (X >= 1000 AND X < 1000000) THEN LET P$ = " KOhms, " 14930 IF (X > 0 AND X < 999) THEN LET P$ = " Ohms, " 14940 IF X >= 1000000 THEN LET P$ = " Ohms, " 14950 IF (X >= 1000 AND X < 1000000) THEN LET V = V - 3 'dec point 14960 IF (X >= 1000 AND X < 1000000) THEN LET X = X/1000 14970 X$ = STR$(X) 14980 Q$=""'the numeric string length is always 7 14990 VDC = 7 - DEL 'VDC is the # of spaces we add to numeric string 15000 IF VDC < 1 THEN VDC= 0 'add zero spaces to str len if already < 1 15010 FOR POL = 1 TO V+2 STEP 1 'step to 2nd decimal point 15020 Q$ = Q$+MID$(X$,POL,1) 'V is dec pt position counted from left 15030 NEXT POL 15035 Q$ = SPACE$(VDC)+Q$ 15040 IF X < 1000000 THEN X$ = Q$+P$ ELSE X$ = ">1 Meg "+P$ 15050 RETURN 'Pass out a properly formatted numeric string (X$) 15100 '*** subroutine displays capacitance numbers precisely ******** 15110 'Passes in a real number (X) between 0 and 10 MicroFarads 15120 X$ = STR$(X) 15130 DEL = LEN(X$) 'DEL is the numeric string length 15140 FOR V = 1 TO DEL STEP 1 15150 Q$ = MID$(X$,V,1) 'V is dec pt position counted from left 15160 IF Q$ = CHR$(46) THEN GOTO 15180 15170 NEXT V 15180 P$ = " Mfd, " 15190 Q$=""'the numeric string length is always 5 15200 VDC = 5 - DEL 'VDC is the # of spaces we add to numeric string 15210 IF VDC < 1 THEN VDC= 0 'add zero spaces to str len if already < 1 15220 FOR POL = 1 TO V+2 STEP 1 'step to 2nd decimal point 15230 Q$ = Q$+MID$(X$,POL,1) 'V is dec pt position counted from left 15240 NEXT POL 15250 X$ = SPACE$(VDC)+Q$+P$ 15260 RETURN 'Pass out a properly formatted numeric string (X$) 15270 '***** CONVERT VOLTAGE 'X' TO FORMATTED STRING + 'ACV' ***** 15280 'Passes in a real number (X) between 0 and 200 Volts 15290 X$ = STR$(X) 15300 DEL = LEN(X$) 'DEL is the numeric string length 15310 FOR V = 1 TO DEL STEP 1 15320 Q$ = MID$(X$,V,1) 'V is dec pt position counted from left 15330 IF Q$ = CHR$(46) THEN GOTO 15350 15340 NEXT V 15350 P$ = " VAC" 15360 Q$=""'the numeric string length is always 6 15370 VDC = 6 - DEL 'VDC is the # of spaces we add to numeric string 15380 IF VDC < 1 THEN VDC= 0 'add zero spaces to str lenif already < 1 15390 FOR POL = 1 TO V+2 STEP 1 'step to 2nd decimal point 15400 Q$ = Q$+MID$(X$,POL,1) 'V is dec pt position counted from left 15410 NEXT POL 15420 X$ = SPACE$(VDC)+Q$+P$ 15430 RETURN 'Pass out a properly formatted numeric string (X$) 42710 '**** MES VERTUAL RES FAC T/R ******* 42740 GOSUB 2670 'turn on BUSY LED 42750 GOSUB 3800 'config access sel fac 42760 DEV$="065":ACT=1:GOSUB 3000 'set dvom for ohms K106,112 on 42780 DEV$="071":ACT=0:GOSUB 3000 'measure drive side 42782 FOR POL=0 TO 1 STEP 1 'Step through polarity of K103 42785 IF POL=0 THEN GOSUB 3850 'sel normal pol K103 off 42790 IF POL=1 THEN GOSUB 3820 'sel reverse pol K103 on 42810 GOSUB 14450 'read dvom & calc results 42820 RTR#=ABS(INT(RX#)) 42830 IF POL=0 THEN RTRA#=RTR# 42840 IF POL=1 THEN RTR#=(RTR#+RTRA#)/2 'avg of T/R +/- pol 42850 PRINT "RTRA = "RTRA# "RTR = "RTR# 42860 NEXT POL 42861 IF LOHMS=0 THEN GOTO 12870 'R>20k, proceed 42862 IF RTR# >5000 THEN GOTO 12870 42864 X=RTR#:GOSUB 14820:RTR$=X$ 'format T/R ohms 42866 RRG$=" N/A, ":RTG$=" N/A, " 'not used 42868 GOTO 13080 'skip parallel R 42870 '**** MES VR/VT AND TR/VR RATIOS (>R AND >T) *****! 42874 DEV$="070":ACT=0:GOSUB 3000 'set to meas K110 off 42875 GOSUB 3840 'drive R/G first (norm pol) 42880 DEV$="071":ACT=0:GOSUB 3000 'DVOM to drive side (ring) K111 off 42882 ' DEL=2:GOSUB 4000 42890 GOSUB 4150 'meas R volts 42900 VRR=CNT 'save 42910 DEV$="071":ACT=1:GOSUB 3000 'DVOM to tip K111 on 42912 ' DEL=2:GOSUB 4000 42920 GOSUB 4150 'meas T volts 42930 VRT = CNT 'save 42940 GOSUB 3830 'next drive T/G (rev pol) 42944 DEV$="071":ACT=0:GOSUB 3000 'DVOM to drive side (tip) K111 off 42946 ' DEL=2:GOSUB 4000 42950 GOSUB 4150 'meas T volts 42960 VTT=CNT 'save 42970 DEV$="071":ACT=1:GOSUB 3000 'DVOM to ring K111 on 42972 ' DEL=2:GOSUB 4000 42975 GOSUB 4150 'meas R volts 42980 VTR=CNT 'save 42990 LOCATE 15,10:PRINT "VRR="VRR,"VRT="VRT,"VTT="VTT,"VTR="VTR 43000 K1=ABS(VRT/(VRR-VRT)) 43002 K2=ABS(VTR/(VTT-VTR)) 'corrections ohms R/G & T/G 43003 IF K1<.05 THEN K1=.05 43004 IF K2<.05 THEN K2=.05 43005 K3=(K1+K2) 43006 IF K3<.05 THEN K3=.05 43007 RTRC!=(RTR#)*(1+K3)/K3:PRINT "NOW::"RTR# 'ohms R/T 43008 LOCATE 16,10:PRINT "K1="K1,"K2="K2,"K3="K3,"RTRC!="RTRC! 43010 RRGC!=RTRC!*K1:RTGC!=RTRC!*K2 'ohms R/G & T/G 43012 LOCATE 17,10:PRINT "RRGC!="RRGC!,"RTGC!="RTGC! 43030 X = RTRC!:GOSUB 14820:RTR$ = X$ 43034 X = RRGC!:GOSUB 14820:RRG$ = X$ 44036 X = RTGC!:GOSUB 14820:RTG$ = X$ 60000 GOTO 60100 60100 END 10000 '"1UOV03.ASC" Third overlay for "1UMAIN.ASC" (SPV Measurements) 10005 OVNO=3 'overlay number 10010 PRINT "Overlay Number 3" 10100 '******* VERB LIST ********* 10102 IF VERB$="DCOM" THEN GOTO 1730 'report com port settings 10104 IF VERB$="DMOD" THEN GOTO 2570 'report modem string 10105 IF VERB$="DSTE" THEN GOTO 2270 'report site ID 10106 IF VERB$="DVER" THEN GOTO 2260 'report versions 10108 IF VERB$="ICAL" THEN GOTO 6320 'use OV03/cal filt (service) 10114 IF VERB$="SACC" THEN GOTO 2350 'access unconditional 10116 IF VERB$="SACV" THEN GOTO 6300 'use OV01/meas AC t-g,r-g,opt bd 10118 IF VERB$="SBSY" THEN GOTO 4350 'check if line is off-hook 10120 IF VERB$="SCLN" THEN GOTO 6310 'use OV02/characterize tel line 10122 IF VERB$="SCLR" THEN GOTO 3500 'clear hardware 10124 IF VERB$="SCOM" THEN GOTO 2100 'set com port speed 10126 IF VERB$="SDCV" THEN GOTO 6300 'use OV01/meas DC t,r, main bd 10128 IF VERB$="SDEF" THEN GOTO 1100 'set all values to default 10130 IF VERB$="SFDX" THEN GOTO 1650 'set FDX 10132 IF VERB$="SHDX" THEN GOTO 1600 'set HDX 10134 IF VERB$="SMOD" THEN GOTO 2400 'set modem ini string 10136 IF VERB$="SMSG" THEN GOTO 2340 'send modem ini string COM1,2 10138 IF VERB$="SMTU" THEN GOTO 6310 'use OV02/access MTU 10140 IF VERB$="SNME" THEN GOTO 1350 'set site name 10144 IF VERB$="SRST" THEN GOTO 2250 'reset computer 10146 IF VERB$="SSNO" THEN GOTO 1300 'set site # 10147 IF VERB$="SSPV" THEN GOTO 31880 'access SPV (spv) 10148 IF VERB$="STVF" THEN GOTO 13530 'VF test the pair 10150 IF VERB$="SEAC" THEN GOTO 6340 'use OVO5/release access switch 10152 IF VERB$="SEAE" THEN GOTO 6340 'use OVO5/select pr to test (E) 10154 IF VERB$="SEAF" THEN GOTO 6340 'use OVO5/select pr to test (F) 10156 IF VERB$="SEAM" THEN GOTO 6340 'use OVO5/select pr to monitor 10158 REPLY$=EMSG1$ 'INVALID VERB FORMAT message 10159 GOTO 4750 'return w error 10900 'initialization routine for test tone dds ic 10901 '******* TURN ON TEST TONE FROM TESTHEAD ******** 10902 FOR I = 1 TO 32 STEP 1 10903 TQ(I) = 0 10904 NEXT I 10924 GOSUB 10980 'convert dBm level to 8 Bit level # 10925 OUT(&h345),TTBL 'send attenuation level as an 8 Bit level 10926 TTDIG = (2*TTFS/F)*2^32 '2*N=2*f*2^32/f0 2*Scale factor 10927 FOR I = 32 TO 1 STEP -1 'start of loop for freq.bit word init 10928 IF TTDIG - 2^(I) >0 THEN TQ(I) = 1 10929 IF TQ(I) = 1 THEN TTDIG = TTDIG - 2^(I) 10930 NEXT I 10931 '******* LOAD TEST TONE GEN (9 PASSES) ******* 10932 FOR I = 1 TO 32 STEP 1 10933 'init freq.reg.for Test Tone IC bit load 10934 DATA2 = TQ(I) 10935 SHIFT2=0 'initialize serial clock low 10936 SFTN2=0 'enables shift frequency register low 10937 ENPH2=0 'enables phase clocking low 10938 TXFR2=1 'initialize freq.reg.control 10939 LOAD2=1 'initialize load register high 10940 GOSUB 10976 10941 'begin clocking in freq.bit data into TT IC freq.reg 10942 SHIFT2=1 'shift serial clock high 10943 GOSUB 10976 10944 'End clocking in freq.bit data into TT IC freq.reg 10945 SHIFT2=0 'disable serial clock low 10946 GOSUB 10976 10947 'loop for load freq.reg.toggle 10948 DATA2 = TQ(I) 10949 SHIFT2=0 'initialize serial clock low 10950 SFTN2=0 'enables shift frequency register low 10951 ENPH2=0 'enables phase clocking low 10952 TXFR2=1 'initialize freq.reg.control 10953 LOAD2=1 'initialize load freq.reg.high 10954 GOSUB 10976 10955 'enable load freq.reg.low 10956 LOAD2=0 'shift load freq.reg.low 10957 GOSUB 10976 10958 'toggle load freq.reg.high 10959 LOAD2=1 'shift load freq.reg.high 10960 GOSUB 10976 10961 'loop for transfer freq.toggle 10962 DATA2 = TQ(I) 10963 SHIFT2=0 'initialize serial clock low 10964 SFTN2=0 'enables shift frequency register low 10965 ENPH2=0 'enables phase clocking low 10966 TXFR2=1 'initialize freq.reg.control 10967 LOAD2=1 'initialize load register high 10968 GOSUB 10976 10969 'enable transfer freq.low 10970 TXFR2=0 'shift transfer freq.low 10971 GOSUB 10976 10972 'toggle transfer freq.high 10973 TXFR2=1 'shift transfer freq.high 10974 GOSUB 10976 10975 NEXT I 'end for next loop 10976 'SET UP THE TEST TONE IC DRIVER 10977 TT1 = 1*DATA2+8*TXFR2+16*SFTN2+32*ENPH2+64*SHIFT2+128*LOAD2 10978 OUT ADDR2,TT1 10979 RETURN 10980 '****** convert test tone dBm level to 8 Bit level # ******* 10981 Q = TTDB 10982 GOSUB 48100 'convert 10983 TTBL= W 11006 RETURN 11010 '****** TURN OFF TEST TONE GEN ****** 11012 TTFS = 0 'set test tone dds ic to zero 11013 TTDB = 24 'turn signal off 11014 GOSUB 10900 'call test tone dds ic routine 11016 RETURN 11120 '****** SEND TONES TO MEASURE 1004 Hz ****** 11122 TTFS = 1004 'set test tone dds ic to 1004 Hz 11124 TTDB = 4 '10 dB down from max signal level,-20 dB 11128 GOSUB 10900 'call test tone dds ic routine 11130 RETURN 11220 '****** SEND TONES TO MEASURE 2804 Hz ******* 11222 TTFS = 2804 'set test tone dds ic to 2804 Hz 11224 TTDB = 4 '10 dB down from max signal level,-20 dB 11228 GOSUB 10900 'call test tone dds ic routine 11230 RETURN 11304 'initialization routine for exciter tone dds ic 11310 '******* TURN ON EXCITER TONE GEN ****** 11311 FOR J = 1 TO 32 STEP 1 11312 EQ(J) = 0 11313 NEXT J 11333 GOSUB 11390 'convert dBm level to 8 Bit level # 11334 OUT(&h344),ETBL 'send attenuation level as an 8 Bit level 11335 ETDIG = (2*ETFS/F)*2^32 '2*N=2*f*2^32/f0 2*Scale factor 11336 FOR J = 32 TO 1 STEP -1 'start of loop for freq.bit word init 11337 IF ETDIG - 2^(J) >0 THEN EQ(J) = 1 11338 IF EQ(J) = 1 THEN ETDIG = ETDIG - 2^(J) 11339 NEXT J 11340 '***** LOAD EXCITER TONE GEN (9 PASSES) ****** 11341 FOR J = 1 TO 32 STEP 1 11342 'init freq.reg.for Exciter Tone IC bit load 11343 DATA1 = EQ(J) 11344 SHIFT1=0 'initialize serial clock low 11345 SFTN1=0 'en shift freq register low 11346 ENPH1=0 'en phase clocking low 11347 TXFR1=1 'init freq.reg.control 11348 LOAD1=1 'init load register high 11349 GOSUB 11385 11350 'begin clock in freq.bit data into ET IC freq.reg 11351 SHIFT1=1 'shift serial clock high 11352 GOSUB 11385 11353 'End clock in freq.bit data into ET IC freq.reg 11354 SHIFT1=0 'disable serial clock low 11355 GOSUB 11385 11356 'loop for load freq.reg.toggle 11357 DATA1 = EQ(J) 11358 SHIFT1=0 'init serial clock low 11359 SFTN1=0 'en shift frequency register low 11360 ENPH1=0 'en phase clocking low 11361 TXFR1=1 'init freq.reg.control 11362 LOAD1=1 'init load freq.reg.high 11363 GOSUB 11385 11364 'en load freq.reg.low 11365 LOAD1=0 'shift load freq.reg.low 11366 GOSUB 11385 11367 'toggle load freq.reg.high 11368 LOAD1=1 'shift load freq.reg.high 11369 GOSUB 11385 11370 'loop for transfer freq.toggle 11371 DATA1 = EQ(J) 11372 SHIFT1=0 'init serial clock low 11373 SFTN1=0 'en shift frequency register low 11374 ENPH1=0 'en phase clocking low 11375 TXFR1=1 'init freq.reg.control 11376 LOAD1=1 'init load register high 11377 GOSUB 11385 11378 'enable transfer freq.low 11379 TXFR1=0 'shift transfer freq.low 11380 GOSUB 11385 11381 'toggle transfer freq.high 11382 TXFR1=1 'shift transfer freq.high 11383 GOSUB 11385 11384 NEXT J 'end for next loop 11385 'SET UP THE EXCITER TONE IC DRIVER 11386 ET1 = 1*DATA1+8*TXFR1+16*SFTN1+32*ENPH1+64*SHIFT1+128*LOAD1 11387 OUT ADDR1,ET1 11388 RETURN 11390 '****** CONVERT EXCITER dBm TO 8 BIT # ***** 11391 Q = ETDB 11392 GOSUB 48100 11393 ETBL = W 11394 RETURN 11500 '****** SEND TONE TO MEASURE 263 Hz ******* 11502 ETFS = 263 'set exciter tone dds ic to 263 Hz 11504 ETDB = 4 '10 dB down from max signal level 11506 GOSUB 11310 'call exciter tone dds ic routine 11508 RETURN 11510 '****** SEND TONE TO MEASURE 863 Hz ********* 11512 ETFS = 863 'set exciter tone dds ic to 863 Hz 11514 ETDB = 4 '10 dB down from max signal level 11516 GOSUB 11310 'call exciter tone dds ic routine 11518 RETURN 11520 '****** TURN OFF EXCITER TONE ****** 11522 ETFS = 0 'set exciter tone dds ic to zero 11524 ETDB = 24 'turn signal off 11526 GOSUB 11310 'call exciter tone dds ic routine 11528 RETURN 13530 '******** CHARACTERIZE/TEST PAIR ******** 13540 IF ACSTAT=1 THEN GOTO 13580 'access, go ahead 13550 GOSUB 6000 'update reply strings 13560 REPLY$ = P26$ 'SPV not accessed 13570 GOTO 4750 13580 CLS 'clear screen 13590 GOSUB 2670 'turn on BUSY LED 13610 GOSUB 2220 'init/clear a-d 13620 GOSUB 3680 'conn to ring bit 2(pin 14) 13625 FOR X = 1 TO 1000 STEP 1:NEXT 13630 GOSUB 4300 'meas V, RNGV 13640 LOCATE 8,10:PRINT "RNGV= " V 13690 RNGV = V 13725 GOSUB 3690 'conn to tip bit 1(pin6) 13727 FOR X = 1 TO 5000 STEP 1:NEXT 13730 GOSUB 4300 'meas v, TIPV 13732 LOCATE 9,10:PRINT "TIPV= " V 13735 TIPV = V 13740 TPRGV = RNGV - TIPV 13750 LOCATE 10,10 13760 PRINT " " 13770 LOCATE 10,10 13771 GOSUB 2220 'clear d-a 13772 GOSUB 3930 'connect for loop I 13773 GOSUB 3940 'insert dvom in tel line, K2 on 13774 GOSUB 4150 :PRINT "VDC="VDC 'measure loop I 13776 I3 = (CNT*2)/1000 'save loop I in I3 13778 IF I3<5 OR OVF=1 THEN GOTO 14300 'report fault 13780 PRINT "RING ="RNGV" TIP ="TIPV" T-R ="TPRGV" Lp Current ="I3 'stub 13820 'SPV drop is 3.0 V + 910*I3 (Semi cond drops + 910 ohm resistor) 13830 R=(1000*((ABS(TPRGV)-1.8)/I3))-910 'R=(((E-SPV drop)/)I3)-spv res. 13840 R = INT(R) 13850 R = ABS(R) 13860 R$ = STR$(R) 13870 PRINT "Loop R="R 'stub 13880 GOSUB 6000 'update reply messages 13890 GOSUB 11500:GOSUB 11120 'generate 263 Hz,1004 Hz pair 13900 PRINT "263 Hz,1004 Hz pair tones come on" '263 Hz,1004 Hz tones on 13915 GOSUB 2220 'clear d-a 13920 GOSUB 3700 'conn to 215HZv Bit 3(8) 13925 FOR X = 1 TO 10000 STEP 1:NEXT 13930 GOSUB 4300 'meas 215 Hz tone as V 13940 L1 = INT((V*.2)) 'L1 = 1004 Hz tone level dBm 13950 OVR1=0:IF L1 <.2 OR L1 >50 THEN OVR1 = 1 13960 PRINT "1004 Hz Signal Level (dB)="L1", OVR1="OVR1 'stub 13970 'PRINT "Stopped":STOP 'stop to meas frequency gen 13980 GOSUB 11510:GOSUB 11220 'generate 863 Hz,2804 Hz pair 13985 FOR X = 1 TO 10000 STEP 1:NEXT 13990 PRINT "863 Hz,2804 Hz pair tones come on" '863 Hz,2804 Hz tones on 14000 GOSUB 4300 'meas 215 Hz tone as V 14010 L2 = INT((V*.2)) 'L2 = 2804 dB level in dBm 14015 OVR2=0:IF L1 <.2 OR L1 >50 THEN OVR2 = 1 14020 PRINT "2804 Hz Signal level (dB)="L2", OVR2="OVR2 'stub 14030 'PRINT "Stopped":STOP 'stop to meas frequency gen 14040 GOSUB 11010 'test tone off 14050 GOSUB 11520 'exciter tone off 14090 'IF L1>35 THEN OVR1=1 14100 L3 = ABS(L1-LCAL) 'calculate loss (L3) 14110 PRINT "Uncorrected Loss ="L3" dB" 'stub 14112 LCOR = R*(.0054) 'correction table for resistive loss @ 215hz 14114 IF R < 300 THEN LCOR = R*(.0063) 14116 IF R < 600 THEN LCOR = R*(.0057) 14118 IF R < 800 THEN LCOR = R*(.0056) 14150 L3=ABS(L3-LCOR) 'L3 = loss with correction 14160 PRINT "Corrected Loss = "L3" dB, correction= "LCOR" dB" 'stub 14170 L3$ = STR$(L3) 'final loss 14180 L4=ABS((L1-LCAL)-(L2-SCAL)) 'calculate slope (L4) 14190 PRINT "Slope= "L4" dB" 14200 SCOR = 0 'init value 14205 'SCOR = R*(.0054) 14210 'IF R<800 THEN SCOR = R*(.0056) 14215 'IF R>650 AND R<750 THEN SCOR = 3.9 'slope correction table 14220 'IF R>750 AND R<800 THEN SCOR = 2 'for drive/loss curve 14225 'IF R>800 AND R<850 THEN SCOR = 1 14230 'IF R>850 AND R<900 THEN SCOR = 0 14235 'IF R>900 THEN SCOR = -1 14240 'L4=ABS(L4-SCOR) 'correct the slope 14245 PRINT "Slope cal = "SCAL", correction= "SCOR" dB" 'stub 14250 L4$ = STR$(L4) 14252 PRINT "OVR1 = "OVR1", OVR2 = "OVR2 14255 PRINT "Loss = "L3" dB, Slope= "L4" dB" 'stub 14260 'IF (OVR1=1 OR OVR2=1) THEN GOTO 4275 'data out of range 14265 GOSUB 6000 'update reply strings 14270 REPLY$ = P25$ 'loop R, loss & slope 14280 GOTO 4750 14300 ' ****** BAD RETURN ************ 14310 REPLY$=P27$ 'insufficient loop current 14320 IF OVF=0 THEN GOTO 14399 14398 REPLY$=P28$ 'excessive loop current 14399 GOTO 4750 18619 '*********** CALIBRATION OF 215 HZ FILTER POTS ************** 18620 'test tone gen at 215 Hz -26/36 dBm, exciter tone off, meas d-a 18622 IF PF2= 1 THEN REPLY$ = "Not on COM2, use COM1" ELSE GOTO 18630 18624 GOTO 4750 18630 GOSUB 6000 'update reply strings 18632 GOSUB 2600 'clr pri board 18634 GOSUB 2640 'clr sec bd 18636 SPLTSTAT = 0 18638 ACSTAT = 0 18640 TTFS = 215 'set test tone generator freq to filter freq 215 Hz 18650 TTDB = 26 'set attenuation level for test tone generator -20 dBm 18655 LP = 0 'display line position 18660 Q = TTDB 18670 GOSUB 10900 'turn on TEST TONE gen at 215 Hz, start at -26dBm 18680 '****** TURN OFF EXCITER TONE ****** 18690 ETFS = 0 'set exciter tone dds ic to zero 18700 ETDB = 24 'turn signal off 18710 GOSUB 11310 'call exciter tone dds ic routine 18720 CLS 18740 OUT(&H340),64 'clear any acces. light busy LED 18750 OUT(&H341),8 'connect d to a to tone dc 18752 LPS = 0 'LPS = # loops through meas cycle 18760 FOR X = 1 TO 1000 STEP 1:NEXT X 'measure loop starts here ****** 18761 LPS = LPS + 1 18762 IF LPS >= 40 THEN GOTO 18910 '40 meas 18763 L1 = 0 18764 FOR TRY = 1 TO 10 STEP 1 'integrate 10 d-a readings 18766 L1 = L1 + INP(&H342) 18768 NEXT TRY 18770 L1 = L1/(TRY-1) 18774 LOCATE 6,10:PRINT "Set dbm levels to 5 and 15 (+/- .4)" 18775 LOCATE 8,10:PRINT "To exit hit any key" 18780 LOCATE (10+LP),10 18781 PRINT "D-to-A Reading of Filter Output Level = " 18790 LOCATE (10+LP),10 18791 PRINT "D-to-A Reading of Filter Output Level = " L1 'read A-to-D 18800 GOSUB 40000 'convert to -dBm as L1$ 18810 L1$ = L1$+" dBm " 'add units 18820 IF L1 < 2 THEN L1$ = " OVER-RANGE " 18830 IF L1 > 253 THEN L1$ = "UNDER-RANGE " 18840 LOCATE (11+LP),10:PRINT "dBm reading,Filter Output = " 18850 LOCATE (11+LP),10:PRINT "dBm reading,Filter Output = " L1$ 18860 A$ = INKEY$ 18870 IF A$ = CHR$(27) THEN CLS '[CTRL][ESC] cycles exits 18880 IF A$ = CHR$(27) THEN GOTO 18970 18900 GOTO 18760 'loop on reading TONEDC 18910 LPS = 0 'start new loop 18912 IF TTDB = 26 THEN PRINT #1, "High level = "+L1$+"(set -5) 18914 IF TTDB = 36 THEN PRINT #1, "Low level = "+L1$+"(set -15)"+CRLF$ 18916 IF LOC(1) > 0 THEN GOTO 4750 'keystroke causes exit to SCLR 18920 IF TTDB =26 THEN GOTO 18930 'change to -36 dBm 18922 TTDB = 26:LP=0 'set level/display lines for t tone gen -26 dBm 18924 GOTO 18940 18930 TTDB = 36:LP=6 'set level/display lines for t tone gen -36 dBm 18940 Q = TTDB 18950 GOSUB 10900 'call t tone dds ic routine 18955 GOTO 18760 'loop on reading TONEDC 31880 '******** SPLIT PAIR, ACCESS TYPE 2 SPV ******** 31890 'Accesses SPV with built in MTU disconnect and 130 v trigger 31910 IF ACSTAT=0 THEN GOTO 31955 'no access, go 31930 GOSUB 6000 'update reply strings 31940 REPLY$ = P14$ 'access, return 31950 GOTO 4750 31955 I1 = 0:I2 = 0:I3 = 0'init currents 31957 CLS:LOCATE 1,25:PRINT "SPV ACCESS ROUTINE" 31960 GOSUB 2200 'rel pair & clr 31970 GOSUB 2670 'turn on BUSY LED 31980 GOSUB 3610 'set norm pol K1 off 31990 GOSUB 3640 'conn test set T/R to PS K4 on 32000 GOSUB 3620 'conn LUT to SPV/MTU tester K5 on 32010 GOSUB 2760 'split line K6 on 32030 GOSUB 3930 'set dvom for dc current K5 on 32040 GOSUB 3940 'insert dvom in tel line R, K2 on 32050 LOCATE 3,10:PRINT "Applying -48V" 'stub 32055 GOSUB 2715 'turn on 48v 32060 DEL=1:GOSUB 4000 '1 sec delay 32080 GOSUB 4150 'measure normal loop I 32090 IF OVF=1 THEN CNT=40000 'overrange flag, call current 40ma 32092 I1 = CNT*2 'save normal I in I1 32100 LOCATE 5,10:PRINT "Forward Loop @ -48V ="I1 " uA" 32110 LOCATE 6,10:GOSUB 2700:PRINT "Removing voltage" 32115 FOR X=1 TO 10000 STEP 1:NEXT X 'remove voltage 32120 GOSUB 2720 'connect -24V to pair 32140 LOCATE 7,10:PRINT "Applying -24V" 'stub 32145 DEL=3:GOSUB 4000 '3 sec delay 32150 GOSUB 4150 'meas -24V loop i 32152 IF OVF=1 THEN CNT=40000 'overrange flag, call current 40ma 32155 I2 = CNT*2 'save -24V I in I2 32160 LOCATE 9,10:PRINT "Forward Loop @ -24V ="I2 " uA" 'stub 32170 GOSUB 3650 'disconnect supply K4 off 32190 LOCATE 10,10:PRINT "Removing -24V" 'stub 32200 GOSUB 3600 'set polarity reverse 32220 GOSUB 3640 'connect supply K4 on 32260 GOSUB 2700 'Apply +0v 32280 DEL=1:GOSUB 4000 '1 sec delay 32270 LOCATE 11,10:PRINT "Applying +130V reverse boost" 32260 GOSUB 2705 'Apply +130v 32280 DEL=3:GOSUB 4000 '3 sec delay 32290 GOSUB 2715 'remove +130V, put on +48V 32300 LOCATE 13,10:PRINT "Removing +130V boost, reconnecting +48v" 32310 DEL=3:GOSUB 4000 '3 sec delay 32330 GOSUB 4150 'meas access loop I 32340 IF OVF=1 THEN CNT=40000 'overrange flag, call current 40ma 32342 I3 = CNT*2 'save access loop I in I3 32360 LOCATE 14,10:PRINT "Accessed Loop ="I3 " uA" 32390 I1=I1/1000:I2=I2/1000:I3=I3/1000 'scale to ma 32392 GOSUB 37000:PRINT "Reply= "REPLY$ 'get & display reslt 32400 ACSTAT=0 'reset access flag 32410 IF REPLY$=P20$ OR REPLY$=P04$ THEN ACSTAT=1 'good reply 32430 IF ACSTAT=1 THEN GOTO 4750 'good return 32470 GOSUB 2200 'rel pair & clr 32480 REPLY$ = REPLY$+CRLF$+P01$ 'reply, if acstat is zero 32490 GOTO 4750 'return 37000 '******** SEND RESULTS OF TYPE 2 SPV ACCESS ******** 37002 'Used with Type 2 SPV (MTU disconnect & 70 V trigger) 37004 PRINT "Currents:-48 v= "I1"ma; -28 v= "I2"ma;triggerd="I3"ma"'stub 37006 PRINT I1;I2;I3 37008 GOSUB 6000 'get strings 37010 IF (I1<.5 AND I2<.5 AND I3>5) THEN GOTO 37100'L OK,Sub OK,Acc Yes 37020 IF (I1>5 AND I2<.5) THEN GOTO 37110 'L OK, Sub Short, Acc Yes 37030 IF (I1<5 AND I2>5) THEN GOTO 37120 'L unk, Sub unk, Acc No 37040 IF (I1>.5 AND I2>(I1/2.5)) THEN GOTO 37130 'L short,Sub unk,Acc No 37050 IF (I1<.5 AND I2<.5 AND I3<.5) THEN GOTO 37140 'L open,Sub unk,No 37060 GOTO 37120 37100 REPLY$ = P20$ 'Access yes, L OK, Sub OK 37105 RETURN 37110 REPLY$ = P42$ 'Access no, L OK, Sub shorted/off hook 37115 RETURN 37120 REPLY$ = P17$ 'Access no, L unk, Premise unk 37125 RETURN 37130 REPLY$ = P16$ 'Access no, L shorted, Premise unk 37135 RETURN 37140 REPLY$ = P04$ 'Access yes, L open, Premise unk 37150 RETURN 40000 '************** CONVERT TO DBM ***************** 40002 L2 =-INT(((L1*.2) -1.2)*10) 'set range 40004 L1$ = STR$(L2) 40006 L2$ = LEFT$(L1$,(LEN(L1$)-1)) 40008 L3$ = RIGHT$(L1$,1) 40010 L1$ = L2$+"."+L3$ 40012 IF LEN(L1$) = 5 THEN RETURN 40014 FOR LT = 1 TO 5 STEP 1 40016 IF LEN(L1$) < 5 THEN L1$ = " "+L1$ 40018 NEXT LT 40019 RETURN 48100 '****** convert dBm level (Q) to 8 Bit level # ******* 48110 IF Q=0 THEN W=255 'maximum signal level 48120 IF Q=1 THEN W=&HE2 '226 '1 dB down from max 48130 IF Q=2 THEN W=&HCA '202 '2 48140 IF Q=3 THEN W=&HB4 '180 '3 48150 IF Q=4 THEN W=&HA0 '160 '4 48160 IF Q=5 THEN W=&H8F '143 '5 48170 IF Q=6 THEN W=&H80 '128 '6 48180 IF Q=7 THEN W=&H72 '114 '7 48190 IF Q=8 THEN W=&H65 '101 '8 48200 IF Q=9 THEN W=&H5A '90 '9 48210 IF Q=10 THEN W=&H51 '81 '10 48220 IF Q=11 THEN W=&H48 '72 '11 48230 IF Q=12 THEN W=&H40 '64 '12 48240 IF Q=13 THEN W=&H39 '57 '13 48250 IF Q=14 THEN W=&H33 '51 '14 48260 IF Q=15 THEN W=&H2D '45 '15 48270 IF Q=16 THEN W=&H28 '40 '16 48280 IF Q=17 THEN W=&H24 '36 '17 48290 IF Q=18 THEN W=&H20 '32 '18 48300 IF Q=19 THEN W=&H1D '29 '19 48310 IF Q=20 THEN W=&H18 '24 '20 48315 IF Q=26 THEN W=&HC '12 '26 48320 IF Q=30 THEN W=&H8 '08 '30 48320 IF Q=36 THEN W=&H4 '04 '36 48350 IF Q=24 THEN W=0 'turn signal off 48360 RETURN 60000 GOTO 60100 60100 END 10000 '"1UOV05.ASC" Fifth overlay for "1UMAIN.ASC" (Access Switch) 10001 'runs the XXXXXXXXXXXXXXXXXXXXXXXXXXX access switch 10005 OVNO=5 'overlay number 10010 PRINT "Overlay Number 5" 10100 '******* VERB LIST ********* 10102 IF VERB$="DCOM" THEN GOTO 1730 'report com port settings 10104 IF VERB$="DMOD" THEN GOTO 2570 'report modem string 10105 IF VERB$="DSTE" THEN GOTO 2270 'report site ID 10106 IF VERB$="DVER" THEN GOTO 2260 'report versions 10108 IF VERB$="ICAL" THEN GOTO 6320 'use OV03/cal filter(servic only) 10114 IF VERB$="SACC" THEN GOTO 2350 'access unconditional 10116 IF VERB$="SACV" THEN GOTO 6300 'use OV01/meas AC t-g,r-g,opt bd 10118 IF VERB$="SBSY" THEN GOTO 4350 'check if line is off-hook 10120 IF VERB$="SCLN" THEN GOTO 6310 'use OV02/characterize tel line 10122 IF VERB$="SCLR" THEN GOTO 3500 'clear hardware 10124 IF VERB$="SCOM" THEN GOTO 2100 'set com port speed 10126 IF VERB$="SDCV" THEN GOTO 6300 'use OV01/meas DC t-g,r-g, main bd 10128 IF VERB$="SDEF" THEN GOTO 1100 'set all values to default 10130 IF VERB$="SFDX" THEN GOTO 1650 'set FDX 10132 IF VERB$="SHDX" THEN GOTO 1600 'set HDX 10134 IF VERB$="SMOD" THEN GOTO 2400 'set modem ini string 10136 IF VERB$="SMSG" THEN GOTO 2340 'send modem ini string out COM1,2 10138 IF VERB$="SMTU" THEN GOTO 6310 'use OV02/access MTU 10140 IF VERB$="SNME" THEN GOTO 1350 'set site name 10144 IF VERB$="SRST" THEN GOTO 2250 'reset computer 10146 IF VERB$="SSNO" THEN GOTO 1300 'set site # 10147 IF VERB$="SSPV" THEN GOTO 6320 'use OVO3/access SPV (spv) 10148 IF VERB$="STVF" THEN GOTO 6320 'use OVO3/VF test the pair 10150 IF VERB$="SEAC" THEN GOTO 11000 'release access switch 10152 IF VERB$="SEAE" THEN GOTO 30500 'select pr to test (E) 10154 IF VERB$="SEAF" THEN GOTO 40000 'select pr to test (F) 10156 IF VERB$="SEAM" THEN GOTO 30000 'select pr to monitor 10158 REPLY$=EMSG1$ 'INVALID VERB FORMAT message 10159 GOTO 4750 'return w error 10200 ' ********** GET REPLY STRING ***************** 10202 IF VERB$="SEAC" THEN REPLY$=P57$ 'switch cleared 10200 IF VERB$="SEAM" THEN REPLY$=P58$ 'switch monitoring 10220 IF VERB$="SEAE" THEN REPLY$=P59$ 'switch split 4W & E 10230 IF VERB$="SEAF" THEN REPLY$=P60$ 'switch split 4W & F 10245 RETURN 10349 ' 10350 '********* LINE NUMBER ROUTINES **************** 10352 IF LEN(CMD$) >10 THEN PRINT "command too long" 10354 IF LEN(CMD$) >10 THEN REPLY$ = EMSG3$ 10356 IF LEN(CMD$) >10 THEN GOTO 4750 10360 LINNO = VAL( MID$(CMD$,5,(LEN(CMD$)))) 10362 IF LINNO=0 THEN LINNO=OLDLNE 'no entry reuses last line number 10370 PRINT LINNO;OLDLNE 10380 IF (LINNO <1 OR LINNO >200) THEN PRINT "Bad input" 10390 IF (LINNO <1 OR LINNO >200) THEN REPLY$ = EMSG3$ 'bad parameter 10392 IF (LINNO <1 OR LINNO >200) THEN GOTO 4750 10394 OLDLNE = LINNO 'save line number 10395 PRINT LINNO;OLDLNE 10396 GOSUB 6000 'update reply strings 10398 RETURN 10399 ' 10400 ' *********** CALCULATE XPOINT LOCATION ************** 10400 OLDLNE = LINNO 'save current accessed line number 10401 SHELF = (INT((LINNO-1)/25))+1 'shelf number 10402 IF SHELF = 1 THEN SSHELF = 7 'compliment of shelf 10403 IF SHELF = 2 THEN SSHELF = 6 'compliment of shelf 10404 IF SHELF = 3 THEN SSHELF = 5 'compliment of shelf 10405 IF SHELF = 4 THEN SSHELF = 4 'compliment of shelf 10406 IF SHELF = 5 THEN SSHELF = 3 'compliment of shelf 10407 IF SHELF = 6 THEN SSHELF = 2 'compliment of shelf 10408 IF SHELF = 7 THEN SSHELF = 1 'compliment of shelf 10409 IF SHELF = 8 THEN SSHELF = 0 'compliment of shelf 10410 SLINE = LINNO-((SHELF-1)*25) 'line number on shelf 10420 COL = (INT((SLINE-1)/5))+1 10422 IF COL = 1 THEN CCOL = 7 'compliment of column 10423 IF COL = 2 THEN CCOL = 6 'compliment of column 10424 IF COL = 3 THEN CCOL = 5 'compliment of column 10425 IF COL = 4 THEN CCOL = 4 'compliment of column 10426 IF COL = 5 THEN CCOL = 3 'compliment of column 10430 ROW = SLINE-((COL-1)*5) 10440 GOSUB 20000 'display data 10450 RETURN 10459 ' 11000 '****** CLEAR THE ACCESS SWITCH *********** 11002 GOSUB 10350 'check line number 11004 GOSUB 10200 'get reply string 11006 GOSUB 10400 'calculate shelf, row, column 11008 GOSUB 20000 'stub to display switch status 11010 AWRD$ = CHR$(10) 'carriage return 11020 BWRD$ = CHR$(13) 'line feed 11030 GOSUB 50000 'drive switch with CR/LF 11040 AWRD$ = CHR$(1+2+4+128) 'sel shelf 1, in ADDRESS mode 11050 BWRD$ = CHR$(2+64) 'sel nonvalid col (6), in FUNCTION mode 11060 GOSUB 50000 'drive switch clear 11070 'PRINT "start"+CHR$(13)+CHR$(10)+AWRD$+FWRD$+"end" 'stub 11080 GOSUB 20000 'display switch status 11090 GOTO 4750 'start over 11099 ' 20000 ' ********* SCREEN STATUS DISPLAY (stub) ************ 20010 ' Continuously displays the switch status 20040 LOCATE 18,40:PRINT "SWITCH STATUS" 20050 LOCATE 19,40:PRINT REPLY$ 20060 LOCATE 20,40:PRINT "LINE = " LINNO 20070 LOCATE 21,40:PRINT "SHELF = " SHELF ", XPOINT " SLINE 20080 LOCATE 22,40:PRINT "COL = " COL;FWRD$ 20090 LOCATE 23,40:PRINT "ROW = " ROW 20095 RETURN 20099 ' 30000 '********** MONITOR ************** 30002 ' sends the commands to the switch for monitor 30004 GOSUB 10350 'check lineno 30006 GOSUB 10200 'get line number 30008 GOSUB 10400 'calculate shelf, row and column 30010 GOSUB 20000 'print stub Line,Row,Column 30015 ANO=SSHELF+32+128 30020 AWRD$ = CHR$(ANO) 30025 BNO=CCOL+((ROW-1)*8)+64 30030 BWRD$ = CHR$(BNO) ':PRINT ANO AWRD$ BNO BWRD$ (stub) 30050 GOSUB 50000 'drive the switch bus 30490 GOTO 4750 30499 ' 30500 ' ********** SPLIT 4W/E *********** 30504 GOSUB 10350 'check lineno 30506 GOSUB 10200 'get line number 30508 GOSUB 10400 'calculate shelf, row and column 30510 GOSUB 20000 'print stub Line,Row,Column 30515 ANO=SSHELF+16+32+128 30520 AWRD$ = CHR$(ANO) 30525 BNO=CCOL+((ROW-1)*8)+64 30530 BWRD$ = CHR$(BNO) ':PRINT ANO AWRD$ BNO BWRD$ (stub) 30550 GOSUB 50000 'drive the switch bus 31000 GOTO 4750 31099 ' 40000 ' ********** SPLIT 4W/F *********** 40004 GOSUB 10350 'check lineno 40006 GOSUB 10200 'get line number 40008 GOSUB 10400 'calculate shelf, row and column 40010 GOSUB 20000 'print stub Line,Row,Column 40015 ANO=SSHELF+16+32+64+128 40020 AWRD$ = CHR$(ANO) 40025 BNO=CCOL+((ROW-1)*8)+64 40030 BWRD$ = CHR$(BNO) ':PRINT ANO AWRD$ BNO BWRD$ (stub) 40050 GOSUB 50000 'drive the switch bus 40490 GOTO 4750 40499 ' 50000 '*********** BUS DRIVER ************ 50010 'drives the control bus of the switch 50012 ON ERROR GOTO 50100 50030 OPEN "LPT1:" AS #3 50032 PRINT #3, AWRD$; 50034 PRINT #3, BWRD$; 50036 CLOSE 3 50050 FOR X=1 TO 1000 STEP 1:NEXT X 50099 RETURN 50100 '*********** ERROR TRAPPING ********** 50120 ACTION$ = "Control Port Failure" 50125 REPLY$ = P05$ 'Control Port Failure 50130 Print "Error 50100, control port failure" 'stub 50140 RESUME 50036 60000 GOTO 60100 60100 END COMMAND LIST FOR THE 1U UNIT XXXXXXXXXXX 5800 '******* VERB LIST ********* 5902 IF VERB$="DCOM" THEN GOTO 1730 'report com port settings 5904 IF VERB$="DMOD" THEN GOTO 2570 'report modem string 5905 IF VERB$="DSTE" THEN GOTO 2270 'report site ID 5906 IF VERB$="DVER" THEN GOTO 2260 'report versions 5908 IF VERB$="ICAL" THEN GOTO 6320 'use OV03/cal filter(servic only) 5914 IF VERB$="SACC" THEN GOTO 2350 'access unconditional 5916 IF VERB$="SACV" THEN GOTO 6300 'use OV01/meas AC t-g,r-g,opt bd 5918 IF VERB$="SBSY" THEN GOTO 4350 'check if line is off-hook 5920 IF VERB$="SCLN" THEN GOTO 6310 'use OV02/characterize tel line 5922 IF VERB$="SCLR" THEN GOTO 3500 'clear hardware 5924 IF VERB$="SCOM" THEN GOTO 2100 'set com port speed 5926 IF VERB$="SDCV" THEN GOTO 6300 'use OV01/meas DC t-g,r-g, main bd 5928 IF VERB$="SDEF" THEN GOTO 1100 'set all values to default 5930 IF VERB$="SFDX" THEN GOTO 1650 'set FDX 5932 IF VERB$="SHDX" THEN GOTO 1600 'set HDX 5934 IF VERB$="SMOD" THEN GOTO 2400 'set modem ini string 5936 IF VERB$="SMSG" THEN GOTO 2340 'send modem ini string out COM1,2 5938 IF VERB$="SMTU" THEN GOTO 6310 'use OV02/access MTU 5940 IF VERB$="SNME" THEN GOTO 1350 'set site name 5944 IF VERB$="SRST" THEN GOTO 2250 'reset computer 5946 IF VERB$="SSNO" THEN GOTO 1300 'set site # 5947 IF VERB$="SSPV" THEN GOTO 6320 'use OVO3/access SPV (spv) 5948 IF VERB$="STVF" THEN GOTO 6320 'use OVO3/VF test the pair 5950 IF VERB$="SEAC" THEN GOTO 6340 'use OVO5/release access switch 5952 IF VERB$="SEAE" THEN GOTO 6340 'use OVO5/select pr to test (E) 5954 IF VERB$="SEAF" THEN GOTO 6340 'use OVO5/select pr to test (F) 5956 IF VERB$="SEAM" THEN GOTO 6340 'use OVO5/select pr to monitor 5958 REPLY$=EMSG1$ 'INVALID VERB FORMAT message 5959 GOTO 4750 'return w error 10000'Overlays start at 10000 10100 '******* VERB LIST ********* 10102 IF VERB$="DCOM" THEN GOTO 1730 'report com port settings 10104 IF VERB$="DMOD" THEN GOTO 2570 'report modem string 10105 IF VERB$="DSTE" THEN GOTO 2270 'report site ID 10106 IF VERB$="DVER" THEN GOTO 2260 'report versions 10108 IF VERB$="ICAL" THEN GOTO 6320 'use OV03/cal filter(servic only) 10114 IF VERB$="SACC" THEN GOTO 2350 'access unconditional 10116 IF VERB$="SACV" THEN GOTO 6300 'use OV01/meas AC t-g,r-g,opt bd 10118 IF VERB$="SBSY" THEN GOTO 4350 'check if line is off-hook 10120 IF VERB$="SCLN" THEN GOTO 6310 'use OV02/characterize tel line 10122 IF VERB$="SCLR" THEN GOTO 3500 'clear hardware 10124 IF VERB$="SCOM" THEN GOTO 2100 'set com port speed 10126 IF VERB$="SDCV" THEN GOTO 6300 'use OV01/meas DC t-g,r-g, main bd 10128 IF VERB$="SDEF" THEN GOTO 1100 'set all values to default 10130 IF VERB$="SFDX" THEN GOTO 1650 'set FDX 10132 IF VERB$="SHDX" THEN GOTO 1600 'set HDX 10134 IF VERB$="SMOD" THEN GOTO 2400 'set modem ini string 10136 IF VERB$="SMSG" THEN GOTO 2340 'send modem ini string out COM1,2 10138 IF VERB$="SMTU" THEN GOTO 6310 'use OV02/access MTU 10140 IF VERB$="SNME" THEN GOTO 1350 'set site name 10144 IF VERB$="SRST" THEN GOTO 2250 'reset computer 10146 IF VERB$="SSNO" THEN GOTO 1300 'set site # 10147 IF VERB$="SSPV" THEN GOTO 6320 'use OVO3/access SPV (spv) 10148 IF VERB$="STVF" THEN GOTO 6320 'use OVO3/VF test the pair 10150 IF VERB$="SEAC" THEN GOTO 6340 'use OVO5/release access switch 10152 IF VERB$="SEAE" THEN GOTO 6340 'use OVO5/select pr to test (E) 10154 IF VERB$="SEAF" THEN GOTO 6340 'use OVO5/select pr to test (F) 10156 IF VERB$="SEAM" THEN GOTO 6340 'use OVO5/select pr to monitor 10158 REPLY$=EMSG1$ 'INVALID VERB FORMAT message 10159 GOTO 4750 'return w error