' Funky QBASIC program for analysing/animating ' BNRIDER log data and producing brain scans ' LastMod 10/17/97 ' animate = 1 '0 to just dump the data machine = 4000 'smaller for slower machines maxlogs = 2000 'max lines in input data maxdumps = 35 'max bit-net dumps in data DIM dat$(maxlogs) DIM dump$(maxdumps, 8) DIM stat(7, 8) again: PRINT: INPUT "input logfile name "; f$ IF f$ = "" THEN GOTO done readfile: : ON ERROR GOTO nofile OPEN f$ FOR INPUT AS #1 : ON ERROR GOTO closefile CLS dp = 1: traindata = 0 readloop: INPUT #1, a$ dat$(dp) = a$ dp = dp + 1 GOTO readloop closefile: CLOSE #1: RESUME search nofile: CLOSE #1: RESUME nofile1 nofile1: PRINT "file not found": GOTO again othererror: CLOSE #1: PRINT "error"; ERR: SYSTEM search: ON ERROR GOTO othererror IF animate THEN LOCATE 4, 8: PRINT "------------" FOR j = 1 TO 7 LOCATE 4 + j, 8: PRINT "|"; LOCATE 4 + j, 19: PRINT "|"; NEXT j LOCATE 12, 8: PRINT "------------" LOCATE 5, 29: PRINT "-----------" LOCATE 6, 29: PRINT "| |" LOCATE 7, 29: PRINT "-----------" END IF n = 0: good = 0: bad = 0 FOR i = 1 TO dp - 7 IF dat$(i) = "10101010" AND dat$(i + 8) = "01010101" THEN n = n + 1: ratio = INT((good / (good + bad)) * 100) FOR j = 1 TO 7 dump$(n, j) = dat$(i + j) IF animate THEN LOCATE 4 + j, 10 FOR k = 1 TO 8 IF MID$(dump$(n, j), k, 1) = "1" THEN PRINT "*"; ELSE PRINT " "; END IF NEXT k END IF NEXT j r$ = STR$(ratio): m$ = STR$(good + bad) r$ = RIGHT$(" " + RIGHT$(r$, LEN(r$) - 1) + "% ", 9) m$ = "(" + RIGHT$(m$, LEN(m$) - 1) + ")" dump$(n, 8) = r$ + m$ IF animate THEN IF traindata THEN LOCATE 14, 7: PRINT dump$(n, 8);" "; FOR bla = 1 TO machine: NEXT bla END IF good = 0: bad = 0 i = i + 8 'oops ELSE IF dat$(i) <> "11111111" THEN IF animate THEN FOR bla = 1 TO machine / 10: NEXT bla LOCATE 6, 31 FOR k = 2 TO 8 IF MID$(dat$(i), k, 1) = "1" THEN PRINT "*"; ELSE PRINT " "; END IF NEXT k END IF IF dat$(i + 1) = "11111111" THEN bad = bad + 1 traindata = 1 IF animate THEN LOCATE 9, 30: PRINT "Bad Move"; ELSE good = good + 1 IF animate AND traindata THEN LOCATE 9, 30: PRINT "OK "; END IF END IF END IF NEXT i crudemenu: IF animate THEN LOCATE 17, 8: PRINT "1) play 2) chart 3) new 4) quit"; waitforkey: a$ = INKEY$: IF a$ = "" THEN GOTO waitforkey IF a$ = "1" THEN CLS: GOTO search IF a$ = "2" THEN CLS: GOTO makemaps IF a$ = "3" THEN CLS: GOTO again IF a$ = "4" THEN SYSTEM GOTO waitforkey END IF ' make arranged brain maps... makemaps: IF n > 0 THEN PRINT: INPUT "output file name (opt)"; d$ IF d$ <> "" THEN OPEN d$ FOR OUTPUT AS #1 cols = 6 IF n < 31 THEN r = n - INT(n / 6) * 6 IF r THEN r = 6 - r IF r > 0 THEN r1 = n - INT(n / 4) * 4 IF r1 THEN r1 = 4 - r1 IF r1 < r THEN cols = 4: r = r1 r1 = n - INT(n / 5) * 5 IF r1 THEN r1 = 5 - r1 IF r1 < r THEN cols = 5 END IF END IF rows = INT((n - 1) / cols) + 1 IF n < cols THEN cols = n sp$ = "-----------": s$ = "" FOR i = 1 TO cols: s$ = s$ + sp$: NEXT i s$ = " " + s$ + LEFT$(sp$, 1) FOR r = 1 TO rows PRINT s$: IF d$ <> "" THEN PRINT #1, s$ FOR j = 1 TO 7 FOR k = 1 TO cols s = (r - 1) * cols + k PRINT " | "; : IF d$ <> "" THEN PRINT #1, " | "; a$ = dump$(s, j) FOR i = 1 TO 8 IF MID$(a$, i, 1) = "1" THEN b$ = "*" ELSE b$ = " " PRINT b$; : IF d$ <> "" THEN PRINT #1, b$; NEXT i NEXT k PRINT " | ": IF d$ <> "" THEN PRINT #1, " | " NEXT j NEXT r PRINT s$: IF d$ <> "" THEN PRINT #1, s$ PRINT : IF d$ <> "" THEN PRINT #1, " " ' tally sums and print average map... IF d$ = "" THEN PRINT "---- press any key ---": PRINT wait1: IF INKEY$ = "" THEN GOTO wait1 END IF PRINT "Connection Sums and Average..." IF d$ <> "" THEN PRINT #1, "Connection Sums and Average..." PRINT " ------------" IF d$ <> "" THEN PRINT #1, " ------------" FOR j = 1 TO 7: FOR k = 1 TO 8 sums(j, k) = 0: NEXT k: NEXT j FOR i = 1 TO n FOR j = 1 TO 7 FOR k = 1 TO 8 IF MID$(dump$(i, j), k, 1) = "1" THEN sums(j, k) = sums(j, k) + 1 END IF NEXT k NEXT j NEXT i FOR j = 1 TO 7 b$ = "" FOR k = 1 TO 8 a$ = RIGHT$(" " + STR$(sums(j, k)), 4) IF sums(j, k) >= n / 2 THEN b$ = b$ + "*" ELSE b$ = b$ + " " PRINT a$; : IF d$ <> "" THEN PRINT #1, a$; NEXT k PRINT " | "; b$; " |" IF d$ <> "" THEN PRINT #1, " | "; b$; " |" NEXT j PRINT " ------------" IF d$ <> "" THEN PRINT #1, " ------------" ' print good/bad rations if train patterns present IF traindata = 1 THEN IF d$ = "" THEN PRINT "---- press any key ---": PRINT wait2: IF INKEY$ = "" THEN GOTO wait2 END IF PRINT "Performance... (moves)": PRINT IF d$ <> "" THEN PRINT #1, "Performance... (moves)": PRINT #1, " " FOR i = 1 TO n a$ = " " + RIGHT$(" " + STR$(i), 4) + ": " + dump$(i, 8) PRINT a$: IF d$ <> "" THEN PRINT #1, a$ NEXT i END IF END IF PRINT CLOSE #1 IF animate THEN PRINT "---- any key for menu ---" wait3: IF INKEY$ = "" THEN GOTO wait3 CLS: GOTO crudemenu END IF GOTO again done: SYSTEM