'=========================================================================== ' Subject: SMODEM LOG FILE VIEWER Date: 04-19-98 (16:21) ' Author: Viktor Rootselainen Code: QB, QBasic, PDS ' Origin: viktor@pcb.mpoli.fi Packet: MODEM.ABC '=========================================================================== 'SREAD.BAS v1.0 Smodem log file reader by Viktor Rootselainen 1998 'If you use this code please give credit. DEFINT A-Z '$DYNAMIC DECLARE SUB BigFile () DECLARE SUB GetFile () DECLARE SUB PrintText () DECLARE SUB SaveText () COMMON SHARED lastrow, Slog$, LongFile DIM SHARED TxtLine$(2000), LineColr(2000), Filebuf AS STRING * 160 Slog$ = "Smodem.$$$" IF LEN(COMMAND$) THEN Slog$ = COMMAND$ LOCATE , , 0: WIDTH 80, 25: usecolor = 1 CLS : GetFile: CLS : row = 0 FOR i = 1 TO 20: k$ = INKEY$: NEXT 'clear keyboard buffer IF LongFile THEN OPEN "I", 3, "smodem.txt" REDIM SHARED Seeks&(1 TO 16384) CurSeek& = 1: lastrow = 0 DO UNTIL EOF(3) LINE INPUT #3, text$ lastrow = lastrow + 1: Seeks&(lastrow) = CurSeek& CurSeek& = CurSeek& + LEN(text$) + 2 LOOP END IF printscr: COLOR 7, 0 IF LongFile THEN IF row < 1 THEN row = 1 SEEK #3, Seeks&(row) FOR i = 2 TO 24 IF NOT EOF(3) THEN LINE INPUT #3, text$ ELSE text$ = "" Strg$ = SPACE$(80): LSET Strg$ = text$ LOCATE i, 1: PRINT Strg$; NEXT i ELSE FOR i = 2 TO 24 LOCATE i, 1: PRINT STRING$(80, 32); IF usecolor THEN COLOR LineColr(i + row - 1) LOCATE i, 1: PRINT TxtLine$(i + row - 1); NEXT END IF COLOR 15, 1: LOCATE 25, 1: PRINT " "; CHR$(25); CHR$(24); " Home, End, Page down, Page up - move| ESC - exit| P - print"; : IF LongFile = 0 THEN PRINT "| S - save text"; ELSE PRINT SPC(17); main: DO k$ = INKEY$: inkey = INP(&H60) IF k$ = CHR$(0) + CHR$(72) THEN IF row > 0 THEN row = row - 1: GOTO printscr IF k$ = CHR$(0) + CHR$(80) THEN IF row < lastrow - 23 THEN row = row + 1: GOTO printscr IF k$ = CHR$(0) + CHR$(71) THEN IF row <> 0 THEN row = 0: GOTO printscr IF k$ = CHR$(0) + CHR$(79) THEN IF row < lastrow - 23 THEN row = lastrow - 23: GOTO printscr IF k$ = CHR$(0) + CHR$(73) THEN IF row - 23 > 0 THEN row = row - 23: GOTO printscr ELSE IF row <> 0 THEN row = 0: GOTO printscr END IF IF k$ = CHR$(0) + CHR$(81) THEN IF row < lastrow - 46 THEN row = row + 23: GOTO printscr ELSE IF row <> lastrow - 23 THEN row = lastrow - 23: GOTO printscr END IF IF UCASE$(k$) = "C" THEN usecolor = usecolor XOR 1: GOTO printscr IF LongFile = 0 AND UCASE$(k$) = "S" THEN SaveText: SLEEP 1 IF UCASE$(k$) = "P" THEN PrintText: SLEEP 1 dat$ = MID$(DATE$, 4, 2) + "." + LEFT$(DATE$, 2) + "." + RIGHT$(DATE$, 4) txt$ = dat$ + " | " + TIME$ + " Smodem log file reader v1.0 " + "line" + STR$(row + 23) + " /" + STR$(lastrow) COLOR 15, 1: LOCATE 1, 1: PRINT txt$; SPC(80 - LEN(txt$)); LOOP WHILE NOT k$ = CHR$(27) COLOR 7, 0: CLS : END filerr: LOCATE 1, 1: PRINT "Can't open file - "; Slog$ INPUT "Input Smodem log file: ", Slog$: : IF LEN(Slog$) THEN CLS : RESUME END printerr: LOCATE 1, 1: PRINT "Printer error:"; ERR: SLEEP 1 CLOSE 1: RESUME printscr progerr: CLS : COLOR 7, 0: LOCATE 1, 1: PRINT "Program error:"; ERR END REM $STATIC SUB BigFile rowstotal = LOF(1) / 160 + 1 PRINT "File Name to save (Enter=Smodem.txt): "; : INPUT "", File$ File$ = LTRIM$(RTRIM$(File$)): IF LEN(File$) = 0 THEN File$ = "Smodem.txt" LOCATE 4, 1: PRINT "Please wait - converting "; UCASE$(Slog$); " to "; File$ PRINT "Press ESC to abort": PRINT : PRINT "Line" OPEN File$ FOR OUTPUT AS 2 DO WHILE NOT EOF(1) GET #1, , Filebuf: a$ = Filebuf: row = row + 1: tmp$ = "" FOR i = 1 TO LEN(a$) b$ = MID$(a$, i, 2): z$ = LEFT$(b$, 1) IF ASC(z$) >= 1 AND ASC(z$) <= 15 THEN GOTO skip2 IF z$ = CHR$(0) THEN GOTO skip2 tmp$ = tmp$ + z$ skip2: NEXT: k$ = INKEY$ txt$ = RTRIM$(tmp$): PRINT #2, txt$ IF k$ = CHR$(27) THEN PRINT "Aborted!": CLOSE : EXIT SUB LOCATE 7, 5: PRINT row; "of"; rowstotal LOOP: lastrow = row PRINT "Smodem log file ("; LTRIM$(STR$(LOF(1))); " bytes) converted to Smodem.txt ("; LTRIM$(STR$(LOF(2))); " bytes)" CLOSE : SLEEP 2 END SUB SUB GetFile ON ERROR GOTO filerr: OPEN Slog$ FOR INPUT AS 1: CLOSE 1 ON ERROR GOTO progerr OPEN Slog$ FOR BINARY SHARED AS 1 LEN = LEN(Filebuf) rowstotal = LOF(1) / 160 + 1 LOCATE 1, 14: PRINT "Smodem log file reader v1.0 by Viktor Rootselainen 1998" IF rowstotal > 720 THEN PRINT : PRINT "The file is too big to load it in memory.": LongFile = 1: BigFile: EXIT SUB LOCATE 3, 1: PRINT "Please wait - loading "; UCASE$(Slog$): PRINT "Line" DO WHILE NOT EOF(1) GET #1, , Filebuf: a$ = Filebuf: row = row + 1 FOR i = 1 TO LEN(a$) b$ = MID$(a$, i, 2): z$ = LEFT$(b$, 1): C$ = RIGHT$(b$, 1) IF ASC(z$) >= 1 AND ASC(z$) <= 15 THEN GOTO skip IF z$ = CHR$(0) THEN GOTO skip TxtLine$(row) = TxtLine$(row) + z$ LineColr(row) = ASC(C$) skip: NEXT LOCATE 4, 5: PRINT row; "of"; rowstotal LOOP: CLOSE : lastrow = row END SUB SUB PrintText ON ERROR GOTO printerr LOCATE 1, 1: PRINT STRING$(80, 32) OPEN "LPT1:" FOR OUTPUT AS 1 IF LongFile THEN SEEK #3, Seeks&(1) FOR i = 1 TO lastrow IF NOT EOF(3) THEN LINE INPUT #3, text$ ELSE text$ = "" txt$ = SPACE$(80): LSET txt$ = text$: txt$ = RTRIM$(txt$) PRINT #1, txt$ NEXT i ELSE FOR i = 1 TO lastrow txt$ = RTRIM$(TxtLine$(i)) PRINT #1, txt$ NEXT END IF LOCATE 1, 1: PRINT "Smodem log printed" ON ERROR GOTO progerr: CLOSE 1 END SUB SUB SaveText LOCATE 1, 1: PRINT STRING$(80, 32) LOCATE 1, 1: PRINT "File Name to save (ENTER=Smodem.txt): "; : INPUT "", File$ File$ = LTRIM$(RTRIM$(File$)): IF LEN(File$) = 0 THEN File$ = "Smodem.txt" OPEN File$ FOR OUTPUT AS 1 FOR i = 1 TO lastrow: txt$ = RTRIM$(TxtLine$(i)): PRINT #1, txt$: NEXT LOCATE 1, 1: PRINT "Smodem log file saved to text file "; File$; " ("; LTRIM$(STR$(LOF(1))); " bytes)" CLOSE END SUB