'=========================================================================== ' Subject: HTML DECODER Date: 11-24-95 (00:00) ' Author: Toshihiro Horie Code: QB, QBasic, PDS ' Origin: www.ocf.berkeley.edu/~horie Packet: HTML.ABC '=========================================================================== '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