'HTML DECODER VERSION 307
'GREATLY IMPROVED OVER V2.0
'BY TOSHIHIRO HORIE
DEFINT A-Z
VERNO = 307
N = 1: 'buffer size=1 byte
VERSION$ = STR$(VERNO / 100)
a$ = STRING$(N, 123)
b$ = STRING$(N, 123): 'byte buffers
c$ = STRING$(N, 123)
D$ = STRING$(N, 123)
PROGRAMNAME$ = "HTML VIEWER v" + LTRIM$(VERSION$) + " by T. Horie Today:" + DATE$
CMD$ = COMMAND$: ' command line string
SCREEN 0: CLS : COLOR 7, 0
IF CMD$ = "" THEN
COLOR 15, 1
PRINT PROGRAMNAME$
COLOR 7, 0
SHELL "DIR *.HTM/W"
END
END IF
IF INSTR(CMD$, ".HTM") = 0 THEN CMD$ = CMD$ + ".HTM"
OPEN CMD$ FOR BINARY AS #1
CLS : LOCATE 1, 1: COLOR 15, 3
PRINT PROGRAMNAME$
COLOR 14, 4: LOCATE 1, (80 - LEN(CMD$)): PRINT CMD$;
LOCATE 1, 50: COLOR 15, 1: PRINT STR$(LOF(1)) + " bytes"
VIEW PRINT 2 TO 25: a& = 1
DO
GET #1, a&, a$
IF a$ = CHR$(10) THEN
IF POS(0) < 16 AND POS(0) < 1 THEN
PRINT CHR$(250);
ELSE
PRINT " "
END IF
END IF
IF a$ > CHR$(31) THEN
IF a$ = "<" THEN
GET #1, (a& + 1), b$
GET #1, (a& + 2), c$
b$ = UCASE$(b$): c$ = UCASE$(c$)
IF b$ = "B" AND c$ = "R" THEN 'bright? / break
COLOR 15, 0: PRINT : a& = a& + 2
ELSEIF b$ = "H" AND c$ = "T" THEN 'HTML Magic marker
a& = a& + 4
ELSEIF b$ = "H" AND c$ = "E" THEN 'Head
COLOR 0, 3: a& = a& + 4
ELSEIF b$ = "B" AND c$ = "O" THEN 'body
PRINT "<< BODY >>": a& = a& + 4
ELSEIF b$ = "B" AND c$ = "L" THEN 'blockquote
PRINT "[==quote==]:": a& = a& + 10
ELSEIF b$ = "P" AND c$ = "R" THEN 'preformatted block
a& = a& + 3
ELSEIF b$ = "B" AND c$ = ">" THEN '??? |> marker
COLOR 15, 0: PRINT CHR$(16);
COLOR 7, 0: a& = a& + 1
'--------------------------------------LISTS------
ELSEIF b$ = "O" AND c$ = "L" THEN 'ordered list
COLOR 15, 0
PRINT "Numbered List 1,2,3..."
COLOR 7, 0
a& = a& + 2
ELSEIF b$ = "U" AND c$ = "L" THEN 'unordered list
'or underline
a& = a& + 2
ELSEIF b$ = "L" AND c$ = "I" THEN 'list item
COLOR 15, 0: PRINT " " + CHR$(254);
COLOR 7, 0
a& = a& + 3
'-------------------------------------------------
ELSEIF b$ = "C" AND c$ = "O" THEN 'code
COLOR 10, 0: a& = a& + 4
ELSEIF b$ = "B" AND c$ = "L" THEN 'blink
COLOR 31, 1: a& = a& + 5
ELSEIF b$ = "E" AND c$ = "M" THEN 'emphasized
COLOR 15, 4: a& = a& + 3
ELSEIF b$ = "S" AND c$ = "T" THEN 'strong
COLOR 14, 4: a& = a& + 6
ELSEIF b$ = "F" AND c$ = "O" THEN 'form
GET #1, (a& + 3), D$
IF D$ = "R" THEN
COLOR 14, 4
PRINT "[FORM]-[ ]"
ELSEIF D$ = "N" THEN
'fontsize - not working well
COLOR 15, 1
cnt = 0
DO
a& = a& + 1
cnt = cnt + 1
GET #1, a&, D$
IF cnt > 80 THEN EXIT DO
LOOP UNTIL D$ = ">"
END IF
'----------------------------DATA-SECTIONS?-------
ELSEIF b$ = "D" AND c$ = "L" THEN 'begin section?
PRINT STRING$(70, 205): a& = a& + 2
ELSEIF b$ = "D" AND c$ = "T" THEN 'next section 1?
PRINT CHR$(15): a& = a& + 2
ELSEIF b$ = "D" AND c$ = "D" THEN 'next section 2?
PRINT CHR$(22): a& = a& + 2
'---------------------------------TABLES----------
ELSEIF b$ = "T" AND c$ = "R" THEN 'advance row
PRINT "#": a& = a& + 2
ELSEIF b$ = "T" AND c$ = "D" THEN 'advance column in table
PRINT "_._";
WHILE a$ <> ">"
a& = a& + 1
GET #1, (a& + 1), a$
WEND
'--------------------------------------------------
ELSEIF b$ = "H" AND c$ = "R" THEN 'rule ----
PRINT CHR$(249) + STRING$(77, 196) + CHR$(249)
a& = a& + 2
ELSEIF b$ = "T" AND c$ = "I" THEN '===title====
a& = a& + 5
tstring$ = "`"
WHILE a$ <> ">"
a& = a& + 1
GET #1, (a& + 1), a$
tstring$ = tstring$ + a$
WEND
lent = LEN(tstring$)
tstring$ = LEFT$(tstring$, (lent - 8)) + "'"
a& = a& + 1: COLOR 11, 1: lent2 = lent
IF lent2 > 80 THEN lent2 = 80
PRINT STRING$(lent2, "=") + CHR$(13) + tstring$ + CHR$(13) + STRING$(lent2, "=");
COLOR 7, 0: PRINT
ELSEIF b$ = "I" AND c$ = "M" THEN
'IMAGE reference
COLOR 14, 1
PRINT "IMG";
WHILE a$ <> ">"
a& = a& + 1
GET #1, (a& + 1), a$
IF a$ = CHR$(34) THEN
COLOR 0, 7: cnt = 0
imgs$ = ""
DO
a& = a& + 1
GET #1, (a& + 1), a$
imgs$ = imgs$ + a$
cnt = cnt + 1
IF cnt = 80 THEN EXIT DO
IF a$ = ">" THEN EXIT DO
IF INSTR(UCASE$(imgs$), "COUNTER") > 0 THEN
imgs$ = "[01234] - Counter"
END IF
LOOP UNTIL a$ = CHR$(34)
PRINT imgs$;
COLOR 7, 0
END IF
WEND
COLOR 7, 0
ELSEIF b$ = "I" THEN
COLOR 13, 0: a& = a& + 2
ELSEIF b$ = "U" THEN
COLOR 0, 7: a& = a& + 2
ELSEIF b$ = "P" THEN
PRINT : PRINT " ";
a& = a& + 2
ELSEIF b$ = "H" AND c$ = "5" THEN
COLOR 15, 3
a& = a& + 3
ELSEIF b$ = "H" AND c$ = "4" THEN
COLOR 9, 0
a& = a& + 3
ELSEIF b$ = "H" AND c$ = "3" THEN
COLOR 14, 0
a& = a& + 3
ELSEIF b$ = "H" AND c$ = "2" THEN
COLOR 12, 0
a& = a& + 3
ELSEIF b$ = "H" AND c$ = "1" THEN
COLOR 2, 0
a& = a& + 3
ELSEIF b$ = "/" THEN
WHILE a$ <> ">"
a& = a& + 1
GET #1, (a& + 1), a$
WEND
'COLOR 7, 1: PRINT "/";
ELSE
IF b$ = "C" AND c$ = "I" THEN
'source citation
COLOR 15, 0: PRINT "Source:";
COLOR 2, 0
a& = a& + 5
ELSEIF b$ = "L" AND c$ = "I" THEN
PRINT
a& = a& + 2
ELSEIF b$ = "P" THEN
PRINT
COLOR 15, 3: PRINT CHR$(16);
COLOR 7, 0
PRINT " ";
a& = a& + 2
ELSEIF b$ = "A" THEN
'hypertext reference
WHILE a$ <> ">"
a& = a& + 1
GET #1, (a& + 1), a$
WEND
a& = a& + 1
COLOR 15, 1: PRINT "*";
ELSEIF b$ = "C" AND c$ = "E" THEN
'CENTERED TEXT - LOCATE KLUDGE USED
a& = a& + 6
CSTRING$ = ""
WHILE a$ <> ">"
a& = a& + 1
GET #1, (a& + 1), a$
CSTRING$ = CSTRING$ + a$
WEND
a& = a& + 1
COLOR 7, 0
cpos = 40 - LEN(CSTRING$) \ 2
IF cpos < 1 THEN cpos = 1
LOCATE , cpos
PRINT CSTRING$;
ELSE
COLOR 14, 2
END IF
END IF
ELSEIF a$ = ">" THEN
COLOR 7, 0
ELSEIF a$ = "&" THEN
SOUND 50, .3
GET #1, (a& + 1), b$
GET #1, (a& + 2), c$
GET #1, (a& + 3), D$
IF b$ = "q" AND c$ = "u" THEN 'quote
PRINT CHR$(34);
a& = a& + 5
ELSEIF b$ = "c" AND c$ = "o" THEN 'copyright
PRINT "(c)";
a& = a& + 5: 'Note: len("copy")+1
ELSEIF b$ = "a" AND c$ = "m" AND D$ = "p" THEN 'ampersand
PRINT "&";
a& = a& + 4
ELSEIF b$ = "t" AND c$ = "i" AND D$ = "l" THEN 'tilde
PRINT "~";
a& = a& + 5
ELSEIF b$ = "a" AND c$ = "a" AND D$ = "c" THEN
PRINT " "; : a& = a& + 7
ELSEIF b$ = "e" AND c$ = "a" AND D$ = "c" THEN '‚ (eacute)
PRINT "‚"; : a& = a& + 7
ELSEIF b$ = "i" AND c$ = "a" AND D$ = "c" THEN
PRINT "¡"; : a& = a& + 7
ELSEIF b$ = "e" AND c$ = "o" AND D$ = "c" THEN
PRINT CHR$(164); : a& = a& + 7
ELSEIF b$ = "u" AND c$ = "a" AND D$ = "c" THEN
PRINT "£"; : a& = a& + 7
ELSEIF b$ = "l" AND c$ = "t" THEN
PRINT "<"; : a& = a& + 2
ELSEIF b$ = "g" AND c$ = "t" THEN
PRINT ">"; : a& = a& + 2
END IF
ELSE
IF POS(0) > 70 AND a$ = " " THEN
PRINT a$
ELSE
PRINT a$;
END IF
END IF
END IF
a& = a& + N
U$ = INKEY$
IF U$ = " " THEN
'PAUSE
DO
LOOP WHILE INKEY$ = ""
'......................................PAGE UP WITH UP ARROW
ELSEIF U$ = CHR$(0) + CHR$(72) THEN
a& = a& - N - 2048
COLOR 7, 0: CLS : COLOR 7, 0
IF a& < 1 THEN a& = 1
'.....................................PAGE DOWN WITH DOWN ARROW
ELSEIF U$ = CHR$(0) + CHR$(80) THEN
a& = a& - N + 1024
COLOR 7, 0: CLS : COLOR 7, 0
IF a& > LOF(1) THEN a& = LOF(1) - N
'.....................................ESCAPE
ELSEIF U$ = CHR$(27) THEN END
END IF
LOOP UNTIL EOF(1)
COLOR 7, 0
END