`
`graph3.bas
`
`DEFINT A-Y
`DEFSNG Z
`PRINT : PRINT : PRINT
`
`PRINT "4600/S010 Support Code 4/10/95"
`zcon = 180 / 3.141S92654#
`zkl = .005: zk2 = .995‘
`
`Energy averaging constants
`
`DIM s$(512), s(512), c$(S12), bit(S12)
`DIM r(2S6)
`DIM xkindex(11), xkcor(11), kaindex(11), kacor(11)
`DIM hotxkindex(11), hotxkmag(11)
`DIM xkmag(11), kamag(11)
`DIM index(16), mag(16), cor(16)
`DIM rr(256, 10)
`
`DATA 1,2,4,8,&h10,&h20,&h40,&h8O
`DATA %h190,&h200,&h400,&h800,&h1000,&h2000,&h4000,&h8000
`DIM p 15
`
`FOR I = 0 TO 15: READ p(I): NEXT I
`aa$ = "## \
`\ \
`\"
`
`'
`
`id = 3
`DIM v(500)
`peaks = 10
`DIM nc(id, peaks), nm(id, peaks)
`DIM 1c(id, peaks)
`DIM 1m(id, peaks)
`DIM y1(id), zx(id), zy(id)
`DIM 1p1(id), Tp2(id)
`DIM rTx(id),
`rTy(id)
`DIM rc(peaks)
`
`# of p1ots
`
`_
`j$) = NOT (I — vAL(j$))
`DEF FNA (I,
`DEF fnb (I, 3) = vAL("&H" + CHR$(I) + cHR$(J))
`DEF FNC (I, j, k, 1) = vAL("&H” + CHR$(I) + cHR$(j) + cHR$(k) + cHR$(T))
`DEF FND (I) = CSNGCI) / dZ56
`DEF fnx$ (I) = RIGHT$("000O" + HEx$(I), 4)
`DEF fnx (X) = zx(id) * X + x1
`DEF fny (Y) = (Y) * zy(id) + y1(id)
`DEF Fnzz$ (z) = sTR$(INT(z * 10!) / 10!)
`DEF fnq$ (Z1, Z2) = "{" + fnzz$(z1) + ”," + fnzz$(z2) + "}"
`DEF Fnzz (I) = vAL(MID$(v$, 1))
`DEF fnz (I) = (fnzz(I) —
`(40!
`* INT(fnzz(I) / 100!))) / 60!
`ivl = vARPTR(iv):
`iv2 = ivl + 1
`
`* 69.1722
`
`‘ Constants
`‘The fo11owing 2 e1ements are doub1ed in order to compensate for the
`'2 bytes storaged for each index in memory.
`mhz16 = 0
`mpy = 1:
`
`IF mhz16 THEN mpy = 2
`
`xkbase = &H1000
`KABASE = &H3000
`HOTXKBASE = &H5000
`
`stoTer = 90
`fu1Tstick = 31
`tc1ose = 20
`Teft = (33.3 ~ 16.2) * xcpts / 100‘
`Page 1
`
`'
`
`I XIBIT I ‘
`
`find size of smart mute
`
`K40 Exhibit 1012, pg. 1
`|PR2013-00240
`
`K40 Exhibit 1012, pg. 1
`IPR2013-00240
`
`
`
`'
`
`'
`
`graph3.bas
`rite = (66.6 — 16.2) * xcpts / 100'
`msize = 1 + (rite — 1eft) / 16
`Lastspd = 1
`
`GOSUB dis
`
`regions.
`
`Start next transfer
`OPEN "R", #3, "Locked Loc", 30
`FIELD #3, 10 AS d$, 8 As t$, 4 AS 1at$, 4 As Tong$.
`2 AS peak1$, 2 AS Peak2$
`OI? ZLO8k(25, 2), LPeak1(25), LPeak2(25), Tdate$(25), TTime$(25)
`1X=
`FOR I = 1 TO 25
`
`GET #3, I: ZLOck(I, 1) = cvs(1at$): zLock(I, 2) = cvs(1ong$)
`LPeak1(I)
`cvI(peak1$): LPeak2(I) = cvI(Peak2$)
`I!H
`Tdate$(I)
`d$: TTime$(I) = t$
`IF zLock(I, 1) THEN fidx = I
`
`NEXT I
`
`OPEN "cOM2:9600,n,8,1,RB10000,bin,Rs,opO,cd0,dsO" FOR RANDOM AS #2
`OPEN ”COM1:19200,n,8,1,RB1000O,bin,RS,opO,cd0,ds0" FOR RANDOM AS #1
`OUT &H2FB, &HB
`IF dc THEN OPEN "RoadData.txt” FOR APPEND AS #4
`'DO WHILE i <> 13
`A
`‘
`IF LOc(2) THEN
`'
`i = Asc(INPUT$(1, #2))
`'
`'LOOP
`‘OPEN ”vdat.txt" FOR OUTPUT AS #4
`
`END IF
`
`Read a record from interface and extract the software version #
`
`CLS
`grec:
`
`PRINT #1, "A";
`
`'
`
`skomod
`
`WHILE LOC(2) > 128
`ON ERROR GOTO errorhand1er2
`LINE INPUT #2, v$
`Terminate the error support
`ON ERROR GOTO 0'
`"$GPGGA") THEN
`IF INsTR(v$,
`ziat = fnz(20): z1ong = —fnz(32): Sr$ = v$
`1ocked = 0
`FOR I = 1 TO fidx
`za = ZLOck(I, 1)
`
`— z1at:
`
`zB
`
`ll
`
`ZLock(I, 2)
`
`—
`
`z1ong: zdist = SQR(za * za + ZB * ZB)
`~
`
`NEXT I
`
`END IF
`
`IF zdist < .25 THEN Tocked = 1: Pindex = I
`
`fnzz(I + 2)
`
`END
`
`IF INsTR(v$,
`
`"$GPVTG") THEN I = INsTR(v$, "M"): zveiocity =
`
`WEND
`SELECT CASE INKEY$
`CASE cHR$(&HO): PRINT " Program Execution Ended": CLOSE :
`
`CASE "1": STOP
`H
`II
`
`IF 1ocked = 0 AND ActiveTimer THEN
`fidx = fidx + 1:
`IF fidx > 25 THEN fidx
`ZLock(fidx, 1) = z1at: ZLOck(fidx, 2) =
`z1ong: LSET 1at$ = MKS$(z1at): LSET 1ong$ = MKS$(z1Ong)
`LPeak1(fidx) = peaklz LPeak2(fidx) = Peak2:
`LSET peak1$ = MKI$(peak1): LSET Peak2$ = MKI$(Peak2)
`Tdate$(fidx) = OATE$: TTime$(fidx) = TIME$:
`RSET d$ = Tdate$(fidx): RSET t$ = TTime$(fidx)
`PUT #3, fidx: Wocked = 1
`Page 2
`
`H
`
`O
`
`K40 Exhibit 1012, pg. 2
`|PR2013-00240
`
`K40 Exhibit 1012, pg. 2
`IPR2013-00240
`
`
`
`graph3.bas
`END IF
`
`CASE "U"
`
`END SELECT
`GOSUB record
`IF fiaga AND 15 THEN ActiveTimer = 4
`
`IF 1ocked THEN ZLock(Pindex, 1) = 5
`
`IF ActiveTimer THEN
`IF ACtiveTimer = 4 AND Tocked = 0 THEN SOUND 800, 2'
`Ring be11 if uniocked signa1 detected
`ActiveTimer = ActiveTimer — 1
`IF dc THEN PRINT #4, DATE$; ","; TIME$; ",";
`words — 1: PRINT #4, r(I); ",";
`: NEXT I: PRINT #4, Sr$, zVe1ocity
`END IF
`
`: FOR I = 0 TO
`
`‘IF check <> 0 THEN PRINT "Fiber checksum error "; fnx$(check): GOTO grec
`‘IF scheck <> 0 THEN PRINT "Seria1 Transfer error”; fnx$(scheck): GOTO grec
`
`GOSUB dispiay
`skomod
`GOTO grec‘
`IF timeout <> 0 THEN GOTO grec
`
`CLS
`
`_
`_
`PRINT : PRINT : PRINT : PRINT
`PRINT "Software in target is version "; HEX$(version)
`
`CLOSE #2
`lllllllllllllllllllllllllllllll
`
`q:
`dis:
`
`Reai
`
`time dispiay
`
`Iillllllllllllllilllll
`
`CLS 0
`biack = 0: biue = 1: green = 2: cyan = 3
`red = 4: magenta = 5: BROWN = 6: white = 7
`ray = 8: 1b1ue = 9:
`igreen = 10:
`icyan = 11
`red = 12:
`imagenta = 13: ye11ow = 14: hiwhite = 15
`
`foreground = white
`background = b1ack
`border = b1ue
`
`SCREEN 12
`
`xchars = 80: ychars = 30
`ycsize = 16: xcsize — 8
`sizex = xchars * xcsize ~ 1
`sizey = ychars * ycsize — 1
`VIEW (1, 1)—(sizex — 1, sizey — 1)‘, background‘, border
`WINDOW (1, 1)—(sizex — 1, sizey — 1)
`
`(sizex + 1) \ 2
`xcenter
`i!!|
`(sizey + 1) \ 2
`ycenter
`xchar2 = xchars \ 2
`DEF fnr (r) = xcsize * Cr ~ 1)‘ FNR Maps char position to screen coor
`DEF Fns (5) = ycsize * (ychars — s)'FNS Maps char position
`COLOR foreground‘, background
`
`fu11 = fnr(xchar2 — 1): zfu11 = fu11
`
`ipavg = -1
`bad = O
`sbad = O
`tbad = 0
`textdone = O
`piotdone = O
`textc = 8
`
`Page 3
`
`K40 Exhibit 1012, pg. 3
`|PR2013-00240
`
`K40 Exhibit 1012, pg. 3
`IPR2013-00240
`
`
`
`graph3.bas
`Horizonta1 character position
`
`textd = 13'
`1meter = -1
`x1ed = -1
`kied = -1
`ka1ed = -1
`1as1ed = -1
`
`LINE (xcenter, ycenter + 200)-(xcenter, sizey), 1magenta
`RETURN
`
`||"I****%******
`disp1ay:
`'
`
`GOSUB record
`
`Setup 2 r(Set10)
`
`' Get next record of data
`
`'
`
`‘
`
`IF p46OO THEN
`# points in x/k sweep
`xcpts = 2 * 2688 '
`# points in Ka sweep
`kacpts = xcpts '
`convert index to ms
`zf1t = 125 / xcpts'
`hotxkcpts = 2 * 1276 * ((29 + 62.5) / 62.5)
`ELSE
`
`xcpts = 2 * 2048
`kacpts = xcpts
`hotxkcpts = 1111
`END IF
`
`'IF check <> 0 THEN bad = (bad + 1) AND 255: GOTO disp1ay
`‘IF scheck <> 0 THEN sbad = (sbad + 1) AND 255: GOT0 disp1ay
`
`a$ = INKEY$
`IF a$ = CHR$(27) THEN END
`IF a$ = ”*" THEN dhistory = 1
`IF (a$ = " ") THEN page2 = -1 ELSE page2 = O
`
`IF xdetect THEN xdetect = -1
`f1aga AND 1:
`xdetect
`HH
`IF kdetect THEN kdetect = -1: xdetect = 0
`f1aga AND 2:
`kdetect
`kadetect = flaga AND &HC:
`IF kadetect THEN kadetect = -1
`kaouter = f1aga AND 8
`ka1nner = f1aga AND 4
`
`IF train THEN train = -1
`train = 1count AND 32:
`emergency = 1count AND 64:
`IF emergency THEN emergency = -1
`roadhaz = 1count AND 128:
`IF roadhaz THEN roadhaz = -1
`
`anydetect = xdetect OR kdetect OR kadetect OR hotkdetect OR hotxdetect
`
`row = 3
`
`LOCATE row, 1
`row = row + 1
`IF so1o THEN PRINT "S010":
`IF e460O THEN PRINT "P 4600":
`row = row + 1
`
`state$(1) = "Bad RAM"
`state$(0) = "RAM ok "
`state = f1agb AND 1: Tstate = ram
`GOSUB estate:
`ram = state:
`row = row + 1
`state$(1) = "City Mode
`"
`state$(0) = "Highway Mode"
`state = F1agi1 AND 8: Tstate = city
`H
`GOSUB dstate: city
`state:
`row = row + 1
`state$(1) = "Muted
`"
`state$(O) = "Not Muted "
`state = f1agi1 AND 2: 1state = muted
`GOSUB dstate: muted = state:
`row = row + 1
`Page 4
`
`K40 Exhibit 1012, pg. 4
`|PR2013-00240
`
`K40 Exhibit 1012, pg. 4
`IPR2013-00240
`
`
`
`state$(1)
`state$(O)
`
`graph3.baS
`
`"
`”Automute
`III
`_ "Not Automute "
`state = f1agi1 AND 32: Tstate = amuted
`GOSUB dstate: amuted = state:
`row = row + 1
`state$(0) = "Not Dark Mode"
`State$(1) = "Dark Mode
`"
`State = f1agi1 AND 4: Tstate = darken
`GOSUB dstate: darken = state:
`row = row + 1
`State$(O) = "Transient
`"
`state$(1) = "Not Transient"
`state = f1agc AND 4: Tstate = transientd
`GOSUB dstate:
`transientd = state:
`row = row + 1
`State$(O) = "
`"
`«
`State$(1) = "unpaired"
`state = fTagb AND 4: Tstate = unp
`GOSUB dstate: unp = state:
`row = row + 1
`LOCATE row, 1
`ELSE PRINT "
`";
`IF xdetect THEN PRINT "X
`ELSE PRINT "
`";
`IF kdetect THEN PRINT "K
`" ELSE PRINT "
`IF kadetect THEN PRINT "Ka
`row = row + 1: LOCATE row, 1
`"
`IF train THEN PRINT "Train
`IF emergency THEN PRINT "Emergency Vehic1e"
`IF roadhaz THEN PRINT "Road Hazzard
`"
`IF NOT (train AND emergency AND roadhaz) THEN PRINT ”
`
`";
`";
`
`"
`
`"
`
`row = row + 1: LOCATE row, 1
`IF hotxdetect THEN PRINT "Hot X ”;
`ELSE PRINT ”
`IF hotkdetect THEN PRINT "Hot K " ELSE PRINT "
`
`";
`
`”
`
`row = row + 1
`LOCATE row, 1
`PRINT USING "In/Ot/Hot \\ \\ \\"; HEx$(swcntinner); HEX$(swcntouter);
`HEX$(Swcnthotxk)
`row = row + 1
`
`PRINT USING "Fb/Sr/Tm \\ \\ \\"; HEX$(bad); HEx$(sbad); HEx$(tbad)
`row = row + 1
`
`PRINT "Smart "; HEX$(smartSpec);
`row = row + 2
`
`"
`
`"
`
`IF Tocked = 0 THEN PRINT "Not Locked" ELSE PRINT USING "Locked De1tI:###";
`(ABS(LPeak1(Pindex) + LPeak2(P1ndex)
`— peakl — Peak2)) / 2
`row = row + 1: PRINT "At" + fnq$(z1at, z1ong):
`row = row + 1
`State$(0) = "Above Speed
`"
`state$(1) = "No A1ert beTow Spd"
`IF zVe1ocity < .2 THEN state = 1
`state = 0: Tstate = Lastspd:
`GOSUB dstate: Lastspd = state:
`row = row + 1
`FOR I = 1 To fidx
`PRINT USING "L#"; I;
`PRINT fnq$(zLock(I, 1), zLock(I, 2))
`IF zdist < 9 THEN PRINT USING "d:#.#"; zdist; ELSE PRINT
`PRINT USING " Frq:#### ####"; LPeak1(I); LPeak2(I)
`row = row + 1
`
`Nd
`
`"
`
`NEXT I
`
`row = 1
`S$ = "x/k & Ka Outer Band Stick": Tastx = 1xk1evn: Tastax = 1axk1evn
`max = 45:
`r = xk1evn: GOSUB tabar: Txk1evn = X: 1axk1evn = ax
`row = row + 1
`s$ = "Ka Inner Band Stick": Tastx = 1ka1evn: Tastax = 1aka1evn
`r = kaTevn
`GOSUB tabar: 1ka1evn = X: 1aka1evn = ax
`
`Page 5
`
`K40 Exhibit 1012, pg. 5
`|PR2013-00240
`
`K40 Exhibit 1012, pg. 5
`IPR2013-00240
`
`
`
`graph3.bas
`IIllIIlllllIIIIllllIIIllll1edlSlIlIIIllllilllllllllllllllllllll
`
`nOtx:
`
`200
`xoff
`IIN
`ycsize
`yoff
`ys = yoff + 14
`xs = 12
`30
`xspace
`xdisp = 20
`IF textdone THEN GOTO notx
`LOCATE ychars — 1, 21: PRINT "Meter";
`LOCATE ychars —
`, 48: PRINT "X";
`LOCATE ychars —
`, 56: PRINT "K";
`LOCATE ychars —
`, 63: PRINT ”Ka";
`LOCATE ychars ~
`, 71: PRINT "Laser";
`
`E-‘P-‘P-‘l—‘
`
`j = disp1ay1
`ip = j AND &HlF
`
`IF 1meter = ip THEN GOTO notnew
`ii = 1
`FOR I = 0 TO 4
`
`iii = ii AND j
`GOSUB Ted
`ii = ii * 2
`
`NEXT I
`
`Imeter ; ip
`
`iii = 0"""""""""< ——————————— ——patCh
`
`notnew:
`
`skipx:
`
`skipk:
`
`skipka:
`
`iii = &H20 AND disp1ay1'
`IF x1ed = iii THEN GOTO skipx
`I = 8
`GOSUB 1ed
`x1ed = iii
`
`iii = &H4O AND disp1ay1 '
`IF k1ed = iii THEN GOTO skipk
`I = 11
`GOSUB 1ed
`k1ed = iii
`
`iii = &H8O AND disp1ay1'
`IF ka1ed = iii THEN GOTO skipka
`I = 14
`GOSUB Ted
`kaied = iii
`
`iii = 1 AND disp1ay2'
`IF 1as1ed = 111 THEN GOTO Skipkb
`I = 17
`GOSUB 1ed
`1as1ed = iii
`
`x band indicator
`
`k band indicator
`
`Ka Band indicator
`
`Laser indicator
`
`"'
`skipkb:
`lllllllllllllllllllllllIIIIIIIIIIIIIIIIlllllillllllIIIIIIIIIIIIIIIIIIII
`
`Determine sweep type
`_1lIIIlllllllllllllllllllllilIIIIIII
`""" xkdata = r(set4) AND 1:
`IF xkdata <> 0 THEN xkdata = -1
`
`# Chars 1eft on bottom
`bchars = 1'
`vsize = ycsize * Cychars — bchars —
`row — 4 — 2) \ 3
`v = vsize — 7'
`VertiCa1 size
`Page 6
`
`K40 Exhibit 1012, pg. 6
`|PR2013-00240
`
`K40 Exhibit 1012, pg. 6
`IPR2013-00240
`
`
`
`x1 = 160'
`h = sizex — x1 — 35'
`iindex = 0'
`maxv = &H80'
`
`graph3.bas
`Horizonta1 offset
`Horizonta1 size
`Initia1 index
`max va1ue
`
`'*%%*********%*%*k#***%***%***Hand1e Xlk & Ka Outer data disp1ay here
`Fina1 index
`findex = xcpts'
`Ca1cu1ate indicies of xk band
`segment of sweep
`IF p46OO THEN
`axleft = CSNG(findex) * CSNG((lO0 — (33.3 + 16.2 — 5)) / 100)
`axrite = CSNG(findex) * CSNG((lO0 — (66.66 + 16.2 + 5)) / 100)
`
`ELSE
`
`ax1eft = CSNG(findex) * CSNG((33.3 + 16.2 — 5) / 100)
`axrite = CSNG(findex) * CSNG((66.66 + 16.2 + 5) / 100)
`
`END IF
`
`pl = 0: p2 = O
`a1ert = xdetect OR kdetect
`IF a1ert <> 0 THEN pl = peakl — xkbase: p2 = Peak2 — xkbase' horizontai detect
`positions
`pc1ose = tciose
`id = 1: yl(id) = (bchars + 2) * ycsize‘
`1abe1$ = "x/k"
`FOR I = 0 TO 11
`index(I) = xkindex(I)
`mag(I) = xkmag(I)
`cor(I) = xkcor(I)
`NEXT I
`f1oor = O
`dthresh = xkthresh
`GOSUB tp1ot
`Immww¢¢¢¢¢¢¢¢¢¢¢+¢¢¢+¢+¢¢¢¢¢¢
`» n o « n n « n » « n » » » A n n n n n n n n n n » ««Han
`
`e
`
`'Ka Inner‘ data disp1ay here
`
`Vertical offset
`
`xx = kapeak
`findex = kacpts‘
`
`Fina1 index
`
`Ca1cu1ate indicies of Ka 'fa1se region‘
`
`IF p46OO THEN
`f1 = findex * CsNG((3.8) / 100): fr =
`ELSE
`
`CSNG(findex) *
`
`CSNG((63.8) / 100)
`
`fr = findex * CSNG((lOO — 3.8) / 100):
`
`f1 = CSNG(findex) * CSNG((100 — 63.8)
`
`END IF
`
`fi = (fr — fl) \ 4
`
`/ 100)
`
`horizonta1 detect positions
`
`vertica1 offset
`
`pl = 0: p2 = 0'
`pglose = tclose
`i
`= 2
`y1(id) = (bchars + 4) * ycsize + v'
`1abe1$ = "Ka"
`aiert = kadetect
`IF kadetect <> 0 THEN pl = peakl ~ KABASE: p2 = Peak2 — KABASE
`FOR I = 0 TO 11
`index(I) = kaindex(I)
`mag(I) = kamag(I)
`cor(I) = kacor(I)
`
`NEXT I
`"""f1oor = 25
`dthresh = kathresh
`GOSUB tp1ot
`'******%***%*******%*********Hand1e ‘Hot ¥k' data diSp1ay here
`""'IF (tstflag AND 64) = 0 THEN GOTO Sklphot
`Page 7
`
`K40 Exhibit 1012, pg. 7
`|PR2013-00240
`
`K40 Exhibit 1012, pg. 7
`IPR2013-00240
`
`
`
`'
`
`graph3.bas
`
`IF 5010 THEN GOTO skiphot
`Fina1 index
`findex = hotxkcpts'
`Ca1cu1ate indicies of hotxk 'usefu1 region‘
`f1 = findex * CSNG(29 / (29 + 62.5)): fr = findex
`fi = (fr — f1) \ 4
`p1 = 0: p2 = 0'
`Fpc1ose = tciose
`id = 3: y1(id) = (bchars + 6) * ycsize + 2 * v'
`1abe1$ = "Hot"
`A—w————————————»
`a1ert = kadetect
`IF hotxkdetect <> 0 THEN pl = peakl ~ HOTXKBASE: p2 = Peak2 — HOTXKBASE
`FOR I = 0 TO 11
`index(I) = hotxkindex(I)
`mag(I) = hotxkmag(I): cor(I) = 0
`»
`NEXT I
`"""f1oor =25
`dthresh = hotxkthresh
`GOSUB tp1ot
`
`horizonta1 detect positions
`
`Vertica1 offset
`
`skiphot: p1otdone = -1:
`RETURN‘
`GOTO dispTay
`‘ ‘k-2‘.‘"3‘:’k‘:‘.“!.“.':'!:*;‘:*!:'3.“.’:'2':'.’.'*."."3:*!:"k7":'k7‘:~!:‘!:*k1:9:*3:-I:'!:'3:‘2':*.":‘3‘::‘:*.':z‘.*‘!:‘!:-.':'3'.“k'!:'!r‘k‘k'3:*k=":7':‘k*k';':7'.‘"k‘k*k‘k*k*k7'.‘7‘<*k‘k7‘.“e’:*k‘k’k*}.“k='.‘i.‘€:
`
`textdone = -1
`skomod
`
`END
`
`Ted:
`
`DispTay LED's
`X = xoff + I * xdisp
`IF T11 THEN
`LINE (X, yoff)—(X + xs, ys),
`
`ELSE
`
`red, BF
`
`END IF
`
`RETURN
`
`LINE (X, yoff)—(X + xs, ys), background, BF
`LINE (X, yoFF)—(X + xs, ys),
`red, B
`
`Dispiay Decima1 va1ue 'v' of string s$
`
`t1ine:
`
`pdat:
`
`IF textdone THEN GOTO pdat
`LOCATE row, 1
`PRINT s$;
`textd + 1
`LOCATE row,
`PRINT USING "#####"; v;
`RETURN
`
`Same as t1ine but with wider string
`
`tt1ine:
`
`pzdat:
`
`IF textdone THEN GOTO pzdat
`LOCATE row, 1
`PRINT s$;
`textd + 1
`LOCATE row,
`IF v THEN
`
`PRINT USING ”#####"; v;
`ELSE
`—";
`END IF
`
`PRINT ”
`
`RETURN
`
`I
`
`Two condition text dispTay
`
`dstate:
`
`IF textdone = 0 THEN GOTO odat
`IF state = Tstate THEN RETURN
`
`Page 8
`
`K40 Exhibit 1012, pg. 8
`|PR2013-00240
`
`K40 Exhibit 1012, pg. 8
`IPR2013-00240
`
`
`
`odat:
`rest:
`
`IF state <> 0 THEN state = 1
`LOCATE row, 1
`PRINT state$(state)
`RETURN
`
`graph3.bas
`
`Two condition text dispTay
`
`estate:
`
`qdat:
`
`IF textdone = 0 THEN GOTO qdat
`IF state = Tstate THEN RETURN
`IF state <> 0 THEN state = 1
`PRINT state$(state)
`RETURN
`
`Two condition text disp1ay
`
`pstate:
`
`podat:
`
`IF textdone = 0 THEN GOTO podat
`IF state = Tstate THEN RETURN
`IF state <> 0 THEN state = 1
`LOCATE row, 1
`PRINT state$(state);
`RETURN
`
`state4:
`
`Four condition text dispTay
`IF textdone = 0 THEN GOTO rest
`IF state = Tstate THEN RETURN
`GOTO rest
`
`DispTay Hex vaTue 'v' of string s$
`
`hTine:
`
`pdat1:
`
`IF textdone THEN GOTO pdatl
`LOCATE row, 1
`PRINT s$
`textc + 2
`LOCATE row,
`PRINT HEx$(v);
`"
`"
`RETURN
`
`Sca1e bar graphs
`
`scaie:
`
`IF textdone THEN RETURN
`X = zfu11 * ca1ibrate / max + xcenter
`Y = fns(row) + ycsize
`LINE (xcenter, Y)—(X, Y), Tbiue
`t1 = Y — 2:
`t2 = Y + hh
`red, BF
`t2),
`LINE (X ~ to1er,
`t1)—(x,
`LINE (xcenter + 1, Y)—(xcenter + 1, Y — 4), Tb1ue
`X = X / xcsize + 2
`LOCATE POW, X
`PRINT Tegend$;
`RETURN
`
`‘
`
`ReaT time bar graph disp1ay
`
`tbar:
`
`pbar:
`
`IF textdone THEN GOTO pbar
`X = xchar2 — LEN(s$)
`LOCATE row, X
`PRINT s$
`
`'PRINT fnx$(r): RETURN
`IF r < 1 THEN r = 1'
`IF r > max THEN r = max
`X = zfu11 * r / max
`
`' On first pass print associated
`string
`
`'
`
`' Print the bar here
`
`This improves appearance of bar
`
`Page 9
`
`K40 Exhibit 1012, pg. 9
`|PR2013-00240
`
`K40 Exhibit 1012, pg. 9
`IPR2013-00240
`
`
`
`graph3.bas
`Y = fns(row) + 6: yy = Y + 3
`xx = xcenter + X + 1
`IF 1astx < X THEN
`LINE (xcenter + 1, Y)—(xx, yy), bcoior, BF
`
`ELSE
`
`LINE (xx, Y)—(xcenter + fuii + 1, yy), background, BF
`
`END IF
`RETURN
`
`Reai
`
`time bar graph dispiay with averaged bar
`
`IF textdone THEN GOTO apbar
`X = xchar2 — LEN(s$)
`LOCATE row, X
`PRINT s$
`
`'
`
`' On first pass print associated
`string
`
`IF r < 1 THEN r = 1'
`IF r > max THEN r = max
`X = zfu11 * r / max
`Y = fns(row) + 8: yy = Y + 2
`xx = xcenter + X + 1
`IF iastx < X THEN
`
`' Print the bar here
`This improves appearance of bar
`
`ELSE
`
`END IF
`
`LINE (xcenter + 1, Y)~(xx, yy), 1b1ue, BF
`
`LINE (xx, Y)—(xcenter + fu11 + 1, yy), background, BF
`
`Dispiay averaged bar
`ax = CSNGCX) *
`.1 + .9 * CSNG(1astax)
`Y = fns(row) + 4: yy = Y + 2
`xx = xcenter + ax + 1
`IF iastax < ax THEN
`LINE (xcenter + 1, Y)—(xx, yy), ye11ow, BF
`
`ELSE
`
`LINE (xx, Y)m(xcenter + fu11 + 1, yy), background, BF
`
`END IF
`
`RETURN
`
`Piot 16 eiement array with indicies index() and magnitudes mag()
`Assumes index vaiues are ordered
`RANDOMLY!
`
`id: verticai p1ot number
`p1,p2:
`indicies of stick enabie peaks
`aiert: true if active aiert for this dispiay
`v: Verticai size
`h: Horizontai size
`y1(id): Verticai offset
`x1: Horizontai offset
`findex: Finai
`index number
`iindex: Initai
`index number
`maxv: Max vaiue of data in piot
`fioor: X axis assigned this vaiue to reduce viewed noise
`1abe1$: Labei
`dthresh: dynamic threshoid
`
`tabar:
`
`apbar:
`
`'
`
`I I II I II II II I I II II I II
`
`.
`.
`.
`.
`pair:
`pciosez Iiiuminate region within ciose of pair
`-2:‘!.‘*ki:~k'ki:~k:':7'.‘*.’:i.'*k*k*k*ki:'k‘.%%"ki:=‘:'!:=‘:1':**k*k***k7':*k**k*k*‘k:':=':%r*i.‘%'*k*1':2’:-.’:‘:‘:>’:*!:*k*.’:*.“:=‘:='::':*.‘::’:=‘%*k*.’:7'.‘:'::'€7‘»“k'!.'7‘.‘-!:'!r'!::'.“
`
`tpiotz
`
`vaiues
`
`x2 = x1 + h: y2 = y1(id) + v
`zx(id) = h / (findex — iindex): zy(id)
`
`II
`
`V / maxv'
`
`find mapping
`
`Page 10
`
`K40 Exhibit 1012, pg. 10
`|PR20130024O
`
`K40 Exhibit 1012, pg. 10
`IPR2013-00240
`
`
`
`graph3.bas
`
`rTy(id)
`r1x(id)
`
`HII y1(id) + v \ 2
`x1 + h '
`
`'
`
`Location of right
`TabeT
`
`I
`
`IF pTotdone THEN GOTO tupdate
`LOCATE ychars — r1y(id) \ ycsize,
`PRINT 1abe1$;
`LINE (X1 — 1, y1(id) — 1)—(x2 + 1, y2 + 1), hiwhite, B‘
`
`r1x(id) \ xcsize + 2
`
`draw
`
`box in p1ot area
`
`yyl = fny(0) + vsize — 16: yy2 = yyl + 16
`IF (id = 2) OR (id = 3) THEN
`sx
`fnx(f1): LINE (sx, yy1)—(sx, yy2), hiwhite
`sx
`fnx(fr): LINE (sx, yyl)-(sx, yy2), hiwhite
`
`HH
`
`END IF
`
`IF (id = 1) THEN
`5x = fnx(ax1eft): LINE (sx, yy1)~(sx, yy2), hiwhite
`sx = Fnx(axrite): LINE (sx, yy1)—(sx, yy2), hiwhite
`
`END IF
`
`nc0 = fnx(O)
`FOR I = 1 To peaks
`Tc(id, I) = ncO: Tm(id, I) = y1(id)' init previous set to 0
`NEXT I
`
`thresh(id) = fny(O)'
`
`Init position for dynamic thresho1d
`
`tupdate:
`
`'
`
`DispTay dynamic thresho1d
`Y = dthresh — fToor:
`IF Y < 0 THEN Y = 0
`Y = fny(Y)
`co1 = background
`IF Y > thresh(id) THEN co1 = red
`LINE (x1 — 10,
`thresh(id))—(x1 — 5, Y), C01, BF' growth
`thresh(id) = Y
`
`' Bubb1e Sort the peak tab1e
`FOR j = peaks ~ 2 TO 0 STEP -1
`
`FOR I = 0 To j
`IF index(I) < indeX(I + 1) THEN
`SWAP index(I),
`index(I + 1)
`SWAP mag(I), mag(I + 1)
`
`END IF
`
`NEXT I
`
`NEXT j
`
`FOR I = 0 TO peaks — 1'
`r = index(I)
`IF r < iindex THEN r = iindex
`IF r > findex THEN r = findex
`nc(id, I + 1) = fnx(r) — iindex
`rc(I) = r
`r = mag(I) — f1oor:
`
`Map peaks into disp1ay array
`
`NEXT I
`
`IF r < 0 THEN r = 0
`IF r > maxv THEN r = maxv
`nm(id, I + 1) = fny(r)
`
`Check to see if any mapped peaks have matched x—screen_coordinates
`If so,
`remove one of them or d1spTay anomoT1es wTTT occur
`
`FOR I = 1 TO peaks — 1
`
`Page 11
`
`K40 Exhibit 1012, pg. 11
`|PR20130024O
`
`K40 Exhibit 1012, pg. 11
`IPR2013-00240
`
`
`
`graph3.bas
`IF nc(id, I) <> nc(id,
`I + 1) THEN GOTO rich
`IF nc(id, I) = ncO THEN GOTO rich
`‘GOTO see
`II
`nc(id, I + 1)
`
`nc0
`
`rich:
`
`NEXT I
`
`Draw new peaks
`FOR I = 1 T0 peaks‘
`IF nc(id, I) ~ ncO THEN GOTO edone
`
`Does_this e1ement match 01d e1ement?
`FOR j = 1 TO peaks‘
`IF nc(1d, I) <> 1c(1d,
`j) THEN GOTO nomatch
`
`' Modify bar by either increasing or decreasing
`
`IF (nm(id, I) > Tm(id, j)) THEN
`LINE (nc(id, I), Tm(id, j))-(nc(id, I), nm(id, I)), ye11ow‘ growth
`ELSE
`
`LINE (nc(id, I), 1m(id, j))-(nc(id, I), nm(id, I)), background‘ dec1ine
`END IF
`
`Tc(id,
`
`j) 2 ncO'
`GOTO edone‘
`
`remove 01d index
`this eTement comp1eted
`
`nomatch:
`
`NEXT j
`
`If no e1ement matches, draw new eTement
`LINE (nc(id, I), y1(id))—(nc(id, I), nm(id, I)), ye11ow
`edone:
`NEXT I
`
`Remove 01d peaks
`FOR I = 1 TO peaks‘
`IF Tc(id, I) <> ncO THEN
`LINE (1c(id, I), y1(id))—(Tc(id, I), 1m(id, I)), background
`_
`END IF _
`1c(id, I) : nc(id, I)
`1m(id, I) = nm(1d, I)‘
`
`Update aged array
`
`NEXT I
`
`'********************pTot comp1eted, now add supporting information
`
`'
`
`Show Average, Transient, & Phase Information************************
`tpr = 3
`' Bar height
`yyl = fny(O) + vsize + 1: yy2 = yyl + tpr:
`jp = 1
`yy3 = yy2 + 2: yy4 = yy3 + tpr
`ysl = fny(O) + vsize + 1: ys2 = ysl + 8
`xx1 = X1: xx2 = X1 + h
`—
`LINE (xx1, ys1)—(xx2, ys2), background, BF
`FOR I = 0 TO 3'peaks — 1'
`Map peaks into dispTay array
`"""""""
`j = nc(id,
`i + 1)‘ x~coordinate
`j = fnx(cor(I))
`j < Xl + 10 THEN GOTO drt
`"""IF xkcor(i) THEN
`= Tred
`" """"""""'IF FCCT) AND &H8000 THEN C = hiwhite
`LINE (j
`- ip. yy1)—<j + jp, yy2), c, BF
`IIIIIIIIIIIIIIENDIF
`
`""""""""""'IF rc(i) AND &H2000 THEN LINE (j
`yy4), Tgreen, BF
`drt:
`NEXT I
`
`— jp, yy3)—(j + jp,
`
`GOTO skiparound
`
`'
`'
`
`Show_Automute Smartmute deactivated regions
`IF id <> 1 THEN GOTO nosmute
`
`Page 12
`
`*.':*.‘:'.’:'.':‘k9:-!::':i.**k'k*i.“k€.‘i.‘:'.“k7‘:*%’*~k‘.’:i.‘
`
`K40 Exhibit 1012, pg. 12
`|PR20130024O
`
`K40 Exhibit 1012, pg. 12
`IPR2013-00240
`
`
`
`'
`
`'
`
`'
`
`'
`
`ytl = ysl — 6: yt2 = ysl — 4
`IF ((r(set3)) AND 2) = 0 THEN ‘ only c1ear background if no data
`LINE (xxl, ytl)—(xx2, yt2), background, BF‘ erase old stuff
`END IF
`
`graph3.bas
`
`FOR i = 0 To 15
`vv = r(smutexk) AND p(i)'
`IF vv THEN
`3 = left + i
`
`jmsize = Fnx(msize) — fnx(O)
`
`regional bit value
`
`* msize‘
`
`Find index of disabled
`
`'
`
`‘
`
`'
`
`'
`
`'
`
`regions
`
`'
`
`x~coordinate
`'
`j = fnx(j)
`LINE (j, yt1)—(j + jmsize, yt2),
`lblue, BF
`
`'
`
`END IF
`
`'
`'NEXT 1
`‘nosmute:
`skiparound:
`IF id <> 2 THEN GOTO fomp
`yy5 = yyl - 2: yy6 = yy5 —
`fspace = fnx(fi) — fnx(O)
`ccut = 12'
`
`3
`
`when timer<ccut, switch to dark green
`
`ic1 = background:
`green
`
`IF regtim(O) THEN ic1 = 1green:
`
`IF regtim(O) < ccut THEN ic1
`
`xx5 = Fnx(f1): xx6 = xx5 + fspace
`LINE (xx5, yy5)—(xx6, yy6), icl, BF
`
`H
`
`ll
`
`icl = background:
`green
`
`IF regtim(1) THEN icl = Tgreen:
`
`IF regtim(l) < ccut THEN ic1
`
`xxS = XX6: XX6 = xx6 + fspace
`LINE (xxS, yyS)—(xx6, yy6),
`ic1, BF
`
`ic1 = background:
`green
`
`IF regtim(2) THEN icT = Tgreen:
`
`IF regtim(2) < ccut THEN ic1 =
`
`xxS = xx6: xx6 = xx6 + Fspace
`LINE (xx5, yy5)-(xx6, yy6), ici, BF
`
`ici = background:
`green
`
`IF regtim(3) THEN icl = Tgreen:
`
`IF regtim(3) < ccut THEN ic1
`
`H
`
`XXS = xx6: xx6 = xx6 + fspace
`LINE (xx5, yy5)-CXX6, yy6),
`ic1, BF
`
`fomp:
`
`'
`stickx:
`
`Show stick enable regions
`
`— pl) < pclose THEN GOTO transit
`IF ABS(1pl(id)
`ppl = 0: pp2 = 0
`SWAP pl, ppl: SWAP p2, pp2'
`GOSUB transit‘
`SwAP pl, ppl: SwAP p2, pp2'
`
`If bars moved, shift off screen
`Draw the bar
`& redisplay so they don't interract
`
`Show alert position indicators
`yyl = ylcid) — 8
`IF alert AND NOT Cnewwalert) THEN
`PSET (fnx(pl), yyl), green: PSET (fnx(p2), yyl), green
`END IF
`newwa1ert = a1ert
`
`transit:
`"
`
`IF pl <= 10 THEN GOTO ignore
`bl = yl(id) — 6: b2 = yl(id) — 2'
`ul = pl — pciose: u2 = pl + pclose
`v1 = 1p1(id) — pclose: v2 = 1p1(id) + pclose
`GOSUB xbar
`
`Page 13
`
`vertica1 bar dimensions
`
`K40 Exhibit 1012, pg. 13
`|PR20130024O
`
`K40 Exhibit 1012, pg. 13
`IPR2013-00240
`
`
`
`graph3.bas
`
`ignore:
`'
`
`IF p2 <= 10 THEN GOTO capture
`ul = p2 — pc1ose: u2 = p2 + pciose
`v1 = Tp2(id)
`— pc1ose: v2 = 1p2(id) + pc1ose
`GOSUB xbar
`capture: 1pl(id) = pl: 1p2(id) = p2
`RETURN
`
`'
`
`subroutine for erasing bars
`
`eraseb:
`pl = 0: p2 = O: GOTO stickx
`
`xbar:
`
`noover:
`
`record:
`
`retry:
`
`‘subroutine for Drawing one of two stick region bars
`
`IF u2 <= v1 THEN
`
`' no overTap
`
`LINE (fnx(v1), bl)—(fnx(v2), b2), background, BF
`IF U1 < 0 THEN RETURN
`LINE (fnx(u1), b1)~(fnx(u2), b2), Tred, BF
`RETURN
`END IF
`
`IF (u2 > V1) AND (u1 < V1) THEN
`LINE (fnx(u2), bl)-(fnx(v2), b2), background, BF
`LINE {Fnx(u1), b1)—(Fnx(v1), b2), Tred, BF
`RETURN
`END IF
`
`IF (U1 = V1) THEN RETURN
`
`IF Cul < V2) AND (u2 > V2) THEN
`LINE (fnx(vl), bl)—(fnx(ul), b2), background, BF
`LINE (fnx(v2), b1)—(fnx(u2), b2), Tred, BF
`RETURN
`END IF
`
`IF ul >= v2 THEN GOTO noover
`STOP
`
`RETURN
`
`END
`
`' Request data from interface
`
`timeout = 0'
`GOTO Findsync‘
`
`transfer request is generated by
`setting para11e1 bit high,1ow.
`This is previousTy done to improve throughput
`
`tbad = 255 AND (tbad + 1)
`timeout = O
`'LPRINT CHR$(l)'
`'LPRINT CHR$(0)'
`WHILE LOC(l)
`I = ASC(INPUT$(l, #1))‘
`
`WEND
`
`Set paraT1e1 port bit high
`Set para11e1 port bit Tow
`
`skomod
`skomod
`
`C1ean out buffer
`
`PRINT #1,
`
`"A";
`
`'
`
`skomod
`
`WHILE LOC(l) < 164
`
`IF INKEY$ = cHR$(13) THEN STOP
`Page 14
`
`K40 Exhibit 1012, pg. 14
`|PR20130024O
`
`K40 Exhibit 1012, pg. 14
`IPR2013-00240
`
`
`
`WEND
`
`graph3.bas
`
`"'
`"'
`
`FOR q = 1 To 1000: NEXT q
`GOTO record
`
`_
`f1ndsync:
`
`'
`'
`
`Locate the sync
`IF (xdetect = 0) THEN STOP
`IF p1eve1 = 4 THEN STOP
`I = 0: WHILE I <> &HAA
`GOSUB reads
`IF timeout THEN GOTO retry
`
`WEND
`GOSUB reads
`
`IF timeout THEN GOTO retry
`IF I <> &HAA THEN GOTO findsync
`‘GOSUB readword: check = iv‘
`Read checksum
`"""""""'IF check <> 0 THEN PRINT "——"; HEx$(check)
`IF timeout THEN GOTO retry
`‘GOSUB readword: words = iv‘
`Read # of words
`words = 162 / 2'skOmOd
`
`which gives # bytes
`bytes = 2 * words‘
`IF timeout THEN GOTO retry
`IF words > 256 THEN GOTO findsync
`
`DO checksum ca1cu1atiOn
`& FTTT the 'r(' array
`
`scheck = 0: NN = O
`'CLS
`IF dhistory = 0 THEN
`FOR n = 0 TO words — 1'
`GOSUB reads‘
`scheck z scheck + I
`r(NN) = I:
`rr(NN, HISTORY) = I: NN = NN + 1
`IF timeout THEN GOTO retry
`GOSUB reads
`rr(NN, HISTORY) = I: NN = NN + 1
`FCNN) = I:
`PRINT HEX$(r(nn));
`" ";
`IF timeout THEN GOTO retry
`
`""
`
`NEXT n
`‘GOSUB readword
`scheck = (scheck AND 255)
`
`~ (iv AND 255)
`
`IF user hit "*", p1ay back the Tast ten sweeps
`'
`LOCATE 1, 1
`INPUT BLAT
`:
`PRINT "history: ”; HISTORY;
`IF BLAT <> 0 THEN HISTORY = BLAT
`FOR n = 0 To words — 1
`r(NN) = rr(NN, HISTORY): NN = NN + 1
`FCNN) = rr(NN, HISTORY): NN = NN + 1
`NEXT n
`
`ELSE
`
`END IF
`
`IF HISTORY > 10 THEN HISTORY = O
`HISTORY = HISTORY + 1:
`IIIIIIllIIIIIlllllllllIllIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII
`"'GOTO findsync
`
`llllllIIM§9lFW?l:fg:l?fF?¥IjvF?lPr?9f?mlY?rE??]?§llIlllll
`
`p=<_3
`version = r(p): p = p + 2
`IF version = 81 THEN so1o = 1
`IF version = 70 THEN p46OO = 1
`LOCATE 18, 1
`ie = 0
`FOR I = 0 TO 11
`
`Page 15
`
`K40 Exhibit 1012, pg. 15
`|PR20130024O
`
`K40 Exhibit 1012, pg. 15
`IPR2013-00240
`
`
`
`3
`graph3.bas
`xkmag(I) = r(p + 3 T I)
`POKE ivl,
`r(p + 3 *
`POKE iv2,
`r(p + 3
`‘
`IF iv < 0 THEN
`ELSE
`
`xkindex(I) = iv — xkbase
`END IF
`
`NEXT I
`
`,
`
`p = p + 36
`FOR I = 0 TO 3
`r(p + 2 * I + 1)
`POKE ivl,
`r(p + 2 * I)
`POKE iv2,
`~ xkbase
`xkcor(I) = (iv AND &H7FFF)
`IF xkcor(I) < 0 THEN xkcor(I) = 0
`
`NEXT I
`FOR i = 0 TO 1
`_
`_
`IF xdetect OR kdepect THEN
`PRINT USING aa$; 1; HEX$(xkcor(1)); HEX$(xkcor(1))
`ELSE
`
`PRINT USING aa$;
`END IF
`
`i; HEx$Ckacor(i)); HEx$Ckacor(i))
`
`NEXT 1
`
`p=p+8
`FOR I = 0 TO 11
`
`kamag(I) = r(p + 3 * I)
`POKE ivl,
`r(p + 3 * I + 2)
`POKE iv2,
`r(p + 3 * I + 1)
`kaindex(I) = (IV AND &H7FFF)
`
`- KABASE
`
`NEXT I
`
`p = p + 36
`FOR I = 0 TO 3
`r(p + 2 * I + 1)
`POKE ivl,
`r(p + 2 * I)
`POKE iv2,
`— KABASE
`kacor(I) = (iv AND &H7FFF)
`IF kacor(I) < 0 THEN kacor(I) = 0
`
`NEXT I
`
`p=p+8
`FOR I = 0 TO 7
`
`hotxkmag(I) = r(p + 3 * I)
`POKE ivl,
`r(p + 3 * I + 2)
`POKE iv2,
`r(p + 3 * I + 1)
`hotxkindex(I) = (TV AND &H7FFF)
`
`- HOTXKBASE
`
`NEXT I
`
`p = p + 24
`
`smartspec = r(p): p = p + 3
`
`f1aga = r(p): p = p + 1
`f1agb = r(p): p = p + 1
`fTagc = F(p): p = p + 1
`
`FOR I = 0 TO 3
`regtim(I) = r(p): p = p + 1
`
`NEXT I
`
`Tcount = r(p):
`‘IF p4600 THEN PRINT "1aser : "; Tcount;
`'p=p+1
`
`"
`
`"
`
`r(p + 1): POKE iv2, r(p)
`POKE ivl,
`peakl = iv: p = p + 2
`POKE ivl,
`r(p + 1): POKE iv2,
`Peak2 = iv: p - p + 2
`IF peakl < PeaR2 THEN SWAP peakl, Peak2
`Page 16
`
`r(p)
`
`K40 Exhibit 1012, pg. 16
`|PR20130024O
`
`K40 Exhibit 1012, pg. 16
`IPR2013-00240
`
`
`
`graph3.bas
`
`Swcntouter = r(p): p = p + 1
`Swcntinner = r(p): p = p + 1
`Swcnthotxk = r(p): p = p + 3
`
`D
`+ 1
`xkthresh = r(p): p =
`hotxkthresh = r(p): p = p + 1
`+ 2
`kathresh = r(p): p = p
`
`+
`
`xk1evn = r(p): p = p
`kaTevn = O: p = p + 1
`maxage = r(p): p = p + 1
`diSp1ay1 = r(138): p = p + 1
`p1eveT = r(p): p = p + 1
`
`1
`
`ie = 0
`FOR I = 0 TO 5
`IF ie <= 4 THEN
`
`IF NOT (hotdetect) AND NOT (kainner) THEN ind = xkindex(I): mag = xkmag(I)
`IF hotdetect THEN ind = hotxkindex(I): mag = hotxkmag(I)
`IF kainner THEN ind = kaindex(I): mag = kamag(I)
`IF ind > 16 THEN
`'PRINT USING aa$; 1; HEX$(ind); NEx$(mag);
`pp(ie) = ind
`ie = ie + 1
`
`END IF
`
`END IF
`NEXT I
`
`'
`
`'
`
`'
`
`FOR I = 0 TO 3
`IF kadetect THEN
`ho1d(I) = kacor(I)
`
`END IF
`
`NEXT I
`
`'PRINT USING aa$; i; HEX$(kacor(i)); HEx$(ho1d(i))
`
`— pp(O)) * zf1t)
`zt = ABS(CSNG(pp(1)
`PRINT USING "p—p De1ta ### ## ms"; zt
`
`PRINT USING ”k/p1eveT ##
`diSp1ay2 = r(p): p = p + 1
`FOR I 5 0 TO 3
`
`"; pTeveT
`
`r(p + 1)
`POKE ivl, r(p): POKE iv2,
`center(I) = (iv AND &H7FFF)
`— xkbase: p = p + 2
`
`NEXT I
`
`tstfiag = r(p): p = p + 1: p = 150
`f1agi1 = r(p): p = p + 1
`f1agi2 = r(p): p = p + 1
`
`'IF flagiz AND 8 THEN PRINT "Linearize
`f1agi3 = r(p): p = p + 1
`
`" ELSE PRINT "N0 Linearize"
`
`'LPRINT CHR$(1)'
`'LPRINT CHR$(0)'
`PRINT #1, "A";
`'
`
`Set para11eT port bit high
`Set para11e1 port bit Tow
`Skomod
`
`Skomod
`Skomod
`
`RETURN
`
`' Read two bytes from SeriaT interface & form word
`
`readword:
`GOSUB reads: POKE ivl, I
`IF timeout THEN RETURN
`GOSUB reads: POKE TV2, I
`RETURN
`
`Page 17
`
`K40 Exhibit 1012, pg. 17
`|PR20130024O
`
`K40 Exhibit 1012, pg. 17
`IPR2013-00240
`
`
`
`graph3.bas
`
`reads:
`
`Tout:
`
`Read byte via seria1 interface
`
`time = 32000
`‘ERR = 0: ON ERROR RESUME NEXT
`
`TIMER ON
`timeout = 0
`ON TIMER(2) GOSUB TimerTimeout
`WHILE LOC(l) = 0
`‘time = time — 1:
`0 THEN
`‘IF time
`HH
`-1:
`‘timeout
`""LOCATE 15, O: PRINT "timeout # ";
`IF timeout THEN
`RETURN
`END IF
`
`tbad; WORDS; N
`
`WEND
`
`RETURN
`
`TIMER OFF
`timeout = 0
`ON ERROR GOTO errorhand1er
`I = ASC(INPUT$(l, #1))
`ON ERROR GOTO 0'
`
`Terminate the error support
`
`N
`
`-1
`
`TimerTimeout:
`timeout
`RETURN
`errorhand1er:
`sbad = sbad + 1
`timeout = -1
`RESUME Tout
`errorhand1er2:
`bad = bad + 1
`RESUME grec
`
`Page 18
`
`K40 Exhibit 1012, pg. 18
`|PR20130024O
`
`K40 Exhibit 1012, pg. 18
`IPR2013-00240