'=========================================================================== ' Subject: TEXT VIEWER W/HYPERLINKS Date: 06-30-98 (14:25) ' Author: The ABC Programmer Code: QB, PDS ' Origin: voxel@edmc.net Packet: TEXT.ABC '=========================================================================== '--------------------------8<----CUT HERE---->8------------------------------- Cut and save as test.txt or whatever name pleases you... This is just a sample of the ^|14Colors ^|07man! ^$Exit To Main Menu^$ 1.^$testlink Testlink will not show^$ 2.^$notshown Move cursor here!!!^$ ^|15H^|14ellow ^|28How dare you flash ^|31me! Please visit my homepage ^$homepage http://www.edmc.net/~voxel/^$ This "text viewer/hyperlink program" was brought to you by William Yu. No other person gives you more bugs or headaches, than with his programs. Please use and distribute freely, because I know this doesn't work properly and the whole world is just waiting to e-mail me about it! '--------------------------8<----CUT HERE---->8------------------------------- '********************************************************************* ' HYPERV.BAS by William Yu (07-18-95) ' The not so BASIC text viewer... with hyperlinks (sort of). ' This text viewer runs as is, or with special markers (like in HTML) ' Only problem is, this viewer doesn't work properly, go figure ;-) ' Anyway, I haven't done anything with this thing in 3 years, so if ' you want to expand on it, by all means, it's public domain, do ' whatever you want with it. '********************************************************************* DEFINT A-Z '$DYNAMIC DECLARE SUB DrawBox (X%, Y%, XX%, YY%, C%, BC%, Solid%, CharSet%) DECLARE SUB ViewText (FileName$, FOREGROUND, BACKGROUND) DECLARE SUB PrintChar (CharValue) TYPE RegType ax AS INTEGER bx AS INTEGER cx AS INTEGER dx AS INTEGER bp AS INTEGER si AS INTEGER di AS INTEGER flags AS INTEGER END TYPE DECLARE SUB INTERRUPT (IntNo AS INTEGER, InRegs AS RegType, OutRegs AS RegType) CLS : SCREEN 0, 0, 0, 0 FOREGROUND = 7: BACKGROUND = 1 IF COMMAND$ = "" THEN PRINT "USAGE: HYPERV [FileName.Ext]" PRINT A$ = INPUT$(1) CALL ViewText("test.txt", FOREGROUND, BACKGROUND) ELSE CALL ViewText(COMMAND$, FOREGROUND, BACKGROUND) END IF REM $STATIC SUB DrawBox (X%, Y%, XX%, YY%, C%, BC%, Solid%, CharSet%) '================================== ' Available Character Sets '---------------------------------- ' "É", "Í", "»", "º", "È", "¼" ' "Ú", "Ä", "¿", "³", "À", "Ù" ' "Õ", "Í", "¸", "³", "Ô", "¾" ' "Ö", "Ä", "·", "º", "Ó", "½" ' "Û", "ß", "Û", "Û", "ß", "ß" '================================== IF CharSet% = 1 THEN Char1$ = "Ú" CharHoz$ = "Ä" Char2$ = "¿" CharVert$ = "³" Char3$ = "À" Char4$ = "Ù" END IF COLOR C%, BC% A = (XX% - X%) - 1 LOCATE Y%, X%: PRINT Char1$; STRING$(A, CharHoz$); Char2$ FOR I = Y% + 1 TO YY% - 1 LOCATE I, X%: PRINT CharVert$; IF Solid% = 1 THEN PRINT SPACE$(A); LOCATE I, XX%: PRINT CharVert$; NEXT I LOCATE YY%, X%: PRINT Char3$; STRING$(A, CharHoz$); Char4$; END SUB SUB PrintChar (CharValue) DIM InRegs AS RegType, OutRegs AS RegType InRegs.ax = &H200 InRegs.dx = ASC(CHR$(CharValue)) CALL INTERRUPT(&H21, InRegs, OutRegs) END SUB SUB ViewText (FileName$, FOREGROUND, BACKGROUND) DIM TEXT$(1525) CALL DrawBox(1, 2, 80, 25, 15, BACKGROUND, 1, 1) LOCATE 1, 1, , 2, 4: COLOR 15, 7: PRINT STRING$(80, 0) COLOR 0 LOCATE 1, 2: PRINT "<"; : COLOR 15: PRINT "ESC"; : COLOR 0: PRINT "> Menu" LOCATE 1, 67: PRINT "³ Line: ³" LOCATE 3, 80: COLOR 0, 7: PRINT CHR$(24) FOR X = 4 TO 23 LOCATE X, 80: COLOR 7, 0: PRINT CHR$(178) NEXT X LOCATE 4, 80: COLOR 0: PRINT " " LOCATE 24, 80: COLOR 0, 7: PRINT CHR$(25); OPEN FileName$ FOR INPUT AS #1 THELENGTH& = LOF(1) LONEBLOCK& = THELENGTH& / 77 ACULBLOCK& = LONEBLOCK& WHOLELENGTH& = 0 B = 3 PCOPY 0, 3 CALL DrawBox(3, 11, 77, 14, 15, 3, 1, 1) COLOR 15: LOCATE 11, 8: PRINT "Loading "; FileName$ COLOR 8: LOCATE 11, 44: PRINT " Blocks: " COLOR 0 LOCATE 12, 4: PRINT "0%" LOCATE 12, 6: PRINT STRING$(33, CHR$(250)) LOCATE 12, 73: PRINT "100%" LOCATE 12, 42: PRINT STRING$(31, CHR$(250)) LOCATE 12, 39: PRINT "50%" COLOR 7, 8: LOCATE 13, 4: PRINT STRING$(73, "²") I = 1: LOCATE , , 0 DO LINE INPUT #1, TEXT$(I) LENGTHOFTEXT = LEN(TEXT$(I)) Pb = INSTR(TEXT$(I), CHR$(12)) IF Pb THEN TEXT$(I) = STRING$(78, "-") END IF Tb = INSTR(TEXT$(I), CHR$(9)) IF Tb THEN DO TEXT$(I) = LEFT$(TEXT$(I), Tb - 1) + SPACE$(4) + MID$(TEXT$(I), Tb + 1) Tb = INSTR(TEXT$(I), CHR$(9)) LOOP WHILE Tb END IF WHOLELENGTH& = WHOLELENGTH& + LENGTHOFTEXT IF WHOLELENGTH& >= ACULBLOCK& AND B <> 76 THEN DO B = B + 1 LOCATE 13, B: COLOR 12: PRINT "Û" ACULBLOCK& = ACULBLOCK& + LONEBLOCK& LOOP UNTIL ACULBLOCK& > WHOLELENGTH& END IF LOCATE 11, 53: COLOR 0, 3: PRINT WHOLELENGTH&; : COLOR 8: PRINT "of"; : COLOR 0: PRINT THELENGTH& I = I + 1 LOOP UNTIL EOF(1) OR I = 1501 CLOSE #1 IF I = 1501 THEN CALL DrawBox(20, 6, 60, 9, 12, 4, 1, 1) LOCATE 7, 22: COLOR 10, 4: PRINT "ATTENTION: "; : COLOR 15: PRINT "About"; COLOR 14: PRINT RTRIM$(STR$(INT((WHOLELENGTH& / THELENGTH&) * 100))); "%"; COLOR 15: PRINT " of this file has" LOCATE 8, 33: PRINT "been successfully loaded." DO LOOP UNTIL INKEY$ <> "" ELSE LOCATE 13, 4: COLOR 12: PRINT STRING$(73, "Û") END IF PCOPY 3, 0 MAX = I BLOCK = INT(MAX / 20) INITBLOCK = BLOCK + 1 BLOCKX = 4 DO TEXT$(I) = "" I = I + 1 LOOP UNTIL MAX + 22 COLOR FOREGROUND, BACKGROUND FOR I = 1 TO 22 LOCATE I + 2, 2 CL = INSTR(TEXT$(I), "^|") ENT = INSTR(TEXT$(I), "^$") IF INSTR(CL + 1, TEXT$(I), "^|") = 0 THEN CL = 0 IF INSTR(ENT + 2, TEXT$(I), "^$") = 0 THEN ENT = 0 IF CL THEN COLOR FOREGROUND, BACKGROUND PRINT LEFT$(TEXT$(I), CL - 1); COLR = VAL(MID$(TEXT$(I), CL + 2, 2)) COLOR COLR CL2 = INSTR(CL + 1, TEXT$(I), "^|") PRINT MID$(TEXT$(I), CL + 4, CL2 - CL - 4); COLR = VAL(MID$(TEXT$(I), CL2 + 2, 2)) IF UCASE$(MID$(TEXT$(I), CL2 + 2, 2)) = "BC" THEN COLR = FOREGROUND COLOR COLR PRINT MID$(TEXT$(I), CL2 + 4, 78 - CL2 + 5); COLOR FOREGROUND ELSEIF ENT THEN ENT2 = INSTR(ENT + 2, TEXT$(I), "^$") COLOR FOREGROUND PRINT LEFT$(TEXT$(I), ENT - 1); COLOR 15 LENT = ENT2 - (ENT + 10) PRINT MID$(TEXT$(I), ENT + 10, LENT); COLOR FOREGROUND PRINT MID$(TEXT$(I), ENT2 + 2, 78 - ENT2 + 11); ELSE COLOR FOREGROUND IF TEXT$(I) <> STRING$(78, "-") THEN PRINT LEFT$(TEXT$(I), 78); ELSE CALL PrintChar(12) LOCATE , 3: PRINT SPACE$(76); END IF END IF NEXT I I = 2 LOCATE 1, 74: COLOR 15, 7: PRINT I - 1 LOCATE 3, 2, 1: TXTRIGHT = 1 POINTERX = 3: POINTERY = 2 COLOR 15, BACKGROUND DO V$ = INKEY$ IF V$ = CHR$(0) + "P" THEN GOSUB POINTERDOWN IF V$ = CHR$(0) + "H" THEN GOSUB POINTERUP IF V$ = CHR$(0) + "M" THEN GOSUB POINTERRIGHT IF V$ = CHR$(0) + "K" THEN GOSUB POINTERLEFT IF V$ = CHR$(0) + "Q" THEN GOSUB TEXTPAGEDOWN IF V$ = CHR$(0) + "I" THEN GOSUB TEXTPAGEUP IF V$ = CHR$(0) + "O" THEN I = MAX: GOSUB TEXTPAGEDOWN: LOCATE BLOCKX, 80: COLOR 7, 0: PRINT CHR$(178) LOCATE 23, 80: COLOR 0, 0: PRINT " "; : COLOR 15, 1 BLOCKX = 23 DO IF I >= BLOCK THEN BLOCK = BLOCK + INITBLOCK END IF LOOP UNTIL I < BLOCK LOCATE POINTERX, POINTERY, 1 END IF IF V$ = CHR$(0) + "G" THEN TXTRIGHT = 1 I = 1: BLOCK = INITBLOCK LOCATE 1, 74: COLOR 15, 7: PRINT " 1 " GOSUB TEXTPAGEUP LOCATE BLOCKX, 80: COLOR 7, 0: PRINT CHR$(178) BLOCKX = 4 LOCATE BLOCKX, 80: COLOR 0, 0: PRINT " " LOCATE POINTERX, POINTERY, 1 END IF IF V$ = CHR$(27) THEN GOSUB MENU LOOP POINTERDOWN: I = I + 1 LOCATE 1, 74, 0: COLOR 15, 7: PRINT I - 1 LOCATE POINTERX, POINTERY, 1 IF I >= BLOCK AND BLOCKX <> 23 THEN LOCATE BLOCKX, 80, 0: COLOR 7, 0: PRINT CHR$(178); : BLOCKX = BLOCKX + 1 LOCATE BLOCKX, 80, 0: COLOR , 0: PRINT " "; : COLOR , 1 LOCATE POINTERX, POINTERY, 1 BLOCK = BLOCK + INITBLOCK END IF ALMO = INSTR(TEXT$(I - 2), "^$") IF INSTR(ALMO + 2, TEXT$(I - 2), "^$") = 0 THEN ALMO = 0 IF ALMO THEN ALMO2 = INSTR(ALMO + 2, TEXT$(I - 2), "^$") LOCATE , 2, 0 COLOR FOREGROUND, BACKGROUND PRINT LEFT$(TEXT$(I - 2), ALMO - 1); COLOR 15, BACKGROUND LENT = ALMO2 - (ALMO + 10) PRINT MID$(TEXT$(I - 2), ALMO + 10, LENT); COLOR FOREGROUND, BACKGROUND PRINT MID$(TEXT$(I - 2), ALMO2 + 2, 78 - ALMO2 + 11); LL = LEN(TEXT$(I - 2)) IF LL < 90 THEN PRINT SPACE$(78 - (LEN(TEXT$(I - 2)) - 12)); END IF IF POINTERX = 24 THEN GOSUB TEXTDOWN ELSE POINTERX = POINTERX + 1 ALMO = INSTR(TEXT$(I - 1), "^$") IF INSTR(ALMO + 2, TEXT$(I - 1), "^$") = 0 THEN ALMO = 0 IF ALMO THEN ALMO2 = INSTR(ALMO + 2, TEXT$(I - 1), "^$") LOCATE POINTERX, 2, 0 COLOR FOREGROUND, BACKGROUND PRINT LEFT$(TEXT$(I - 1), ALMO - 1); L = 2 + (ALMO - 1) DO CHAR$ = MID$(TEXT$(I - 1), ALMO + 10, 1) ALMO = ALMO + 1 L = L + 1 LOOP UNTIL CHAR$ <> " " LOCATE , L - 1 COLOR 15, 4 LENT = ALMO2 - (ALMO + 9) PRINT MID$(TEXT$(I - 1), ALMO + 9, LENT); COLOR FOREGROUND, BACKGROUND PRINT MID$(TEXT$(I - 1), ALMO2 + 2, 78 - ALMO2 + 11); LL = LEN(TEXT$(I - 1)) IF LL < 90 THEN PRINT SPACE$(78 - (LL - 12)); END IF COLOR 7: LOCATE POINTERX, POINTERY, 1 RETURN POINTERUP: I = I - 1 LOCATE 1, 74, 0: COLOR 15, 7: IF I <> 1 THEN PRINT I - 1 ELSE PRINT I LOCATE POINTERX, POINTERY, 1 IF I <= BLOCK - INITBLOCK AND BLOCKX <> 4 THEN LOCATE BLOCKX, 80, 0: COLOR 7, 0: PRINT CHR$(178); : BLOCKX = BLOCKX - 1 LOCATE BLOCKX, 80, 0: COLOR , 0: PRINT " "; : COLOR , 1 LOCATE POINTERX, POINTERY, 1 BLOCK = BLOCK - INITBLOCK END IF LOCATE , 2, 0 ALMO = INSTR(TEXT$(I), "^$") IF INSTR(ALMO + 2, TEXT$(I), "^$") = 0 THEN ALMO = 0 IF ALMO THEN ALMO2 = INSTR(ALMO + 2, TEXT$(I), "^$") COLOR FOREGROUND, BACKGROUND PRINT LEFT$(TEXT$(I), ALMO - 1); COLOR 15, BACKGROUND LENT = ALMO2 - (ALMO + 10) PRINT MID$(TEXT$(I), ALMO + 10, LENT); COLOR FOREGROUND, BACKGROUND PRINT MID$(TEXT$(I), ALMO2 + 2, 78 - ALMO2 + 11); LL = LEN(TEXT$(I)) IF LL < 90 THEN PRINT SPACE$(78 - (LEN(TEXT$(I)) - 12)); END IF IF POINTERX = 3 THEN GOSUB TEXTUP ELSE POINTERX = POINTERX - 1 LOCATE POINTERX, 2, 0 ALMO = INSTR(TEXT$(I - 1), "^$") IF INSTR(ALMO + 2, TEXT$(I - 1), "^$") = 0 THEN ALMO = 0 IF ALMO THEN ALMO2 = INSTR(ALMO + 2, TEXT$(I - 1), "^$") COLOR FOREGROUND, BACKGROUND PRINT LEFT$(TEXT$(I - 1), ALMO - 1); L = 2 + (ALMO - 1) DO CHAR$ = MID$(TEXT$(I - 1), ALMO + 10, 1) ALMO = ALMO + 1 L = L + 1 LOOP UNTIL CHAR$ <> " " LOCATE , L - 1 COLOR 15, 4 LENT = ALMO2 - (ALMO + 9) PRINT MID$(TEXT$(I - 1), ALMO + 9, LENT); COLOR FOREGROUND, BACKGROUND PRINT MID$(TEXT$(I - 1), ALMO2 + 2, 78 - ALMO2 + 11); LL = LEN(TEXT$(I - 1)) IF LL < 90 THEN PRINT SPACE$(78 - (LEN(TEXT$(I - 1)) - 12)); END IF COLOR 7: LOCATE POINTERX, POINTERY, 1 RETURN POINTERRIGHT: IF POINTERY = 79 THEN TXTRIGHT = TXTRIGHT + 1 GOSUB TEXTRIGHT ELSE POINTERY = POINTERY + 1 END IF COLOR 7: LOCATE POINTERX, POINTERY, 1 RETURN POINTERLEFT: IF POINTERY = 2 AND TXTRIGHT = 1 THEN RETURN IF POINTERY = 2 THEN TXTRIGHT = TXTRIGHT - 1: GOSUB TEXTRIGHT ELSE POINTERY = POINTERY - 1 END IF COLOR 7: LOCATE POINTERX, POINTERY, 1 RETURN TEXTRIGHT: I = I - (POINTERX - 2) X = 3 COLOR FOREGROUND, BACKGROUND: LOCATE , , 0 DO SP = 0 A = LEN(TEXT$(I)) - (TXTRIGHT - 1) IF A < 78 THEN SP = 78 - A IF A <= 0 THEN SP = 78 LOCATE X, 2 CL = INSTR(TEXT$(I), "^|") IF INSTR(CL + 1, TEXT$(I), "^|") = 0 THEN CL = 0 ENT = INSTR(TEXT$(I), "^$") IF INSTR(ENT + 2, TEXT$(I), "^$") = 0 THEN ENT = 0 IF CL OR ENT THEN ELSE IF TEXT$(I) <> STRING$(78, "-") THEN PRINT MID$(TEXT$(I), TXTRIGHT, 78); SPACE$(SP); ELSE IF TXTRIGHT = 1 THEN CALL PrintChar(12) ELSE PRINT " "; END IF END IF X = X + 1 I = I + 1 LOOP UNTIL X = 25 I = I - (24 - POINTERX) RETURN TEXTDOWN: IF I > MAX + 1 THEN I = I - 1: RETURN I = I - 22 X = 3 COLOR FOREGROUND, BACKGROUND: LOCATE , , 0 DO SP = 0 A = LEN(TEXT$(I)) - (TXTRIGHT - 1) IF A < 78 THEN SP = 78 - A IF A <= 0 THEN SP = 78 LOCATE X, 2 CL = INSTR(TEXT$(I), "^|") ENT = INSTR(TEXT$(I), "^$") IF INSTR(CL + 1, TEXT$(I), "^|") = 0 THEN CL = 0 IF INSTR(ENT + 2, TEXT$(I), "^$") = 0 THEN ENT = 0 IF CL THEN COLOR FOREGROUND, BACKGROUND PRINT LEFT$(TEXT$(I), CL - 1); COLR = VAL(MID$(TEXT$(I), CL + 2, 2)) COLOR COLR CL2 = INSTR(CL + 1, TEXT$(I), "^|") PRINT MID$(TEXT$(I), CL + 4, CL2 - CL - 4); COLR = VAL(MID$(TEXT$(I), CL2 + 2, 2)) IF UCASE$(MID$(TEXT$(I), CL2 + 2, 2)) = "BC" THEN COLR = FOREGROUND COLOR COLR PRINT MID$(TEXT$(I), CL2 + 4, 78 - CL2 + 5); LL = LEN(TEXT$(I)) IF LL < 82 THEN PRINT SPACE$(78 - (LEN(TEXT$(I)) - 8)); COLOR FOREGROUND ELSEIF ENT THEN ENT2 = INSTR(ENT + 2, TEXT$(I), "^$") COLOR FOREGROUND PRINT LEFT$(TEXT$(I), ENT - 1); COLOR 15 LENT = ENT2 - (ENT + 10) PRINT MID$(TEXT$(I), ENT + 10, LENT); COLOR FOREGROUND PRINT MID$(TEXT$(I), ENT2 + 2, 78 - ENT2 + 11); LL = LEN(TEXT$(I)) IF LL < 90 THEN PRINT SPACE$(78 - (LEN(TEXT$(I)) - 12)); ELSE IF TEXT$(I) <> STRING$(78, "-") THEN PRINT MID$(TEXT$(I), TXTRIGHT, 78); SPACE$(SP); ELSE IF TXTRIGHT = 1 THEN CALL PrintChar(12): LOCATE , 3: PRINT SPACE$(76); ELSE PRINT SPACE$(78); END IF END IF END IF X = X + 1 I = I + 1 LOOP UNTIL X = 25 RETURN TEXTUP: IF I = 1 THEN I = I + 1: RETURN I = I - 1 X = 3 COLOR FOREGROUND, BACKGROUND: LOCATE , , 0 DO SP = 0 A = LEN(TEXT$(I)) - (TXTRIGHT - 1) IF A < 78 THEN SP = 78 - A IF A <= 0 THEN SP = 78 LOCATE X, 2 CL = INSTR(TEXT$(I), "^|") ENT = INSTR(TEXT$(I), "^$") IF INSTR(CL + 1, TEXT$(I), "^|") = 0 THEN CL = 0 IF INSTR(ENT + 2, TEXT$(I), "^$") = 0 THEN ENT = 0 IF CL THEN COLOR FOREGROUND, BACKGROUND PRINT LEFT$(TEXT$(I), CL - 1); COLR = VAL(MID$(TEXT$(I), CL + 2, 2)) COLOR COLR CL2 = INSTR(CL + 1, TEXT$(I), "^|") PRINT MID$(TEXT$(I), CL + 4, CL2 - CL - 4); COLR = VAL(MID$(TEXT$(I), CL2 + 2, 2)) IF UCASE$(MID$(TEXT$(I), CL2 + 2, 2)) = "BC" THEN COLR = FOREGROUND COLOR COLR PRINT MID$(TEXT$(I), CL2 + 4, 78 - CL2 + 5); LL = LEN(TEXT$(I)) IF LL < 82 THEN PRINT SPACE$(78 - (LEN(TEXT$(I)) - 8)); COLOR FOREGROUND ELSEIF ENT THEN ENT2 = INSTR(ENT + 2, TEXT$(I), "^$") COLOR FOREGROUND PRINT LEFT$(TEXT$(I), ENT - 1); COLOR 15 LENT = ENT2 - (ENT + 10) PRINT MID$(TEXT$(I), ENT + 10, LENT); COLOR FOREGROUND PRINT MID$(TEXT$(I), ENT2 + 2, 78 - ENT2 + 11); LL = LEN(TEXT$(I)) IF LL < 90 THEN PRINT SPACE$(78 - (LEN(TEXT$(I)) - 12)); ELSE IF TEXT$(I) <> STRING$(78, "-") THEN PRINT MID$(TEXT$(I), TXTRIGHT, 78); SPACE$(SP); ELSE IF TXTRIGHT = 1 THEN CALL PrintChar(12): LOCATE , 3: PRINT SPACE$(76); ELSE PRINT SPACE$(78); END IF END IF END IF X = X + 1 I = I + 1 LOOP UNTIL X = 25 I = I - 21 RETURN TEXTPAGEDOWN: IF MAX < 23 THEN RETURN IF I >= MAX - 22 THEN I = MAX - 22: POINTERX = 24 ELSE I = I + (24 - POINTERX) END IF X = 3 COLOR FOREGROUND, BACKGROUND: LOCATE , , 0 DO SP = 0 A = LEN(TEXT$(I)) - (TXTRIGHT - 1) IF A < 78 THEN SP = 78 - A IF A <= 0 THEN SP = 78 LOCATE X, 2 CL = INSTR(TEXT$(I), "^|") ENT = INSTR(TEXT$(I), "^$") IF INSTR(CL + 1, TEXT$(I), "^|") = 0 THEN CL = 0 IF INSTR(ENT + 2, TEXT$(I), "^$") = 0 THEN ENT = 0 IF CL THEN COLOR FOREGROUND, BACKGROUND PRINT LEFT$(TEXT$(I), CL - 1); COLR = VAL(MID$(TEXT$(I), CL + 2, 2)) COLOR COLR CL2 = INSTR(CL + 1, TEXT$(I), "^|") PRINT MID$(TEXT$(I), CL + 4, CL2 - CL - 4); COLR = VAL(MID$(TEXT$(I), CL2 + 2, 2)) IF UCASE$(MID$(TEXT$(I), CL2 + 2, 2)) = "BC" THEN COLR = FOREGROUND COLOR COLR PRINT MID$(TEXT$(I), CL2 + 4, 78 - CL2 + 5); LL = LEN(TEXT$(I)) IF LL < 82 THEN PRINT SPACE$(78 - (LEN(TEXT$(I)) - 8)); COLOR FOREGROUND ELSEIF ENT THEN ENT2 = INSTR(ENT + 2, TEXT$(I), "^$") COLOR FOREGROUND PRINT LEFT$(TEXT$(I), ENT - 1); COLOR 15 LENT = ENT2 - (ENT + 10) PRINT MID$(TEXT$(I), ENT + 10, LENT); COLOR FOREGROUND PRINT MID$(TEXT$(I), ENT2 + 2, 78 - ENT2 + 11); LL = LEN(TEXT$(I)) IF LL < 90 THEN PRINT SPACE$(78 - (LEN(TEXT$(I)) - 12)); ELSE IF TEXT$(I) <> STRING$(78, "-") THEN PRINT MID$(TEXT$(I), TXTRIGHT, 78); SPACE$(SP); ELSE IF TXTRIGHT = 1 THEN CALL PrintChar(12): LOCATE , 3: PRINT SPACE$(76); ELSE PRINT SPACE$(78); END IF END IF END IF X = X + 1 I = I + 1 LOOP UNTIL X = 25 I = I - (24 - POINTERX) IF I <> MAX THEN DO IF I >= BLOCK AND BLOCKX <> 23 THEN LOCATE BLOCKX, 80, 0: COLOR 7, 0: PRINT CHR$(178); : BLOCKX = BLOCKX + 1 LOCATE BLOCKX, 80, 0: COLOR , 0: PRINT " "; : COLOR , 1 LOCATE POINTERX, POINTERY, 1 BLOCK = BLOCK + INITBLOCK END IF LOOP UNTIL I < BLOCK + INITBLOCK END IF ALMO = INSTR(TEXT$(I - 1), "^$") IF INSTR(ALMO + 2, TEXT$(I - 1), "^$") = 0 THEN ALMO = 0 IF ALMO THEN ALMO2 = INSTR(ALMO + 2, TEXT$(I - 1), "^$") LOCATE POINTERX, 2, 0 COLOR FOREGROUND, BACKGROUND PRINT LEFT$(TEXT$(I - 1), ALMO - 1); L = 2 + (ALMO - 1) DO CHAR$ = MID$(TEXT$(I - 1), ALMO + 10, 1) ALMO = ALMO + 1 L = L + 1 LOOP UNTIL CHAR$ <> " " LOCATE , L - 1 COLOR 15, 4 LENT = ALMO2 - (ALMO + 9) PRINT MID$(TEXT$(I - 1), ALMO + 9, LENT); COLOR FOREGROUND, BACKGROUND PRINT MID$(TEXT$(I - 1), ALMO2 + 2, 78 - ALMO2 + 11); LL = LEN(TEXT$(I - 1)) IF LL < 90 THEN PRINT SPACE$(78 - (LEN(TEXT$(I - 1)) - 12)); END IF LOCATE 1, 74, 0: COLOR 15, 7: PRINT I - 1 LOCATE POINTERX, POINTERY, 1 RETURN TEXTPAGEUP: IF I <= 45 THEN POINTERX = 3: I = 1 ELSE I = I - (20 + POINTERX) END IF X = 3 COLOR FOREGROUND, BACKGROUND: LOCATE , , 0 DO SP = 0 A = LEN(TEXT$(I)) - (TXTRIGHT - 1) IF A < 78 THEN SP = 78 - A IF A <= 0 THEN SP = 78 LOCATE X, 2 CL = INSTR(TEXT$(I), "^|") ENT = INSTR(TEXT$(I), "^$") IF INSTR(CL + 1, TEXT$(I), "^|") = 0 THEN CL = 0 IF INSTR(ENT + 2, TEXT$(I), "^$") = 0 THEN ENT = 0 IF CL THEN COLOR FOREGROUND PRINT LEFT$(TEXT$(I), CL - 1); COLR = VAL(MID$(TEXT$(I), CL + 2, 2)) COLOR COLR CL2 = INSTR(CL + 1, TEXT$(I), "^|") PRINT MID$(TEXT$(I), CL + 4, CL2 - CL - 4); COLR = VAL(MID$(TEXT$(I), CL2 + 2, 2)) IF UCASE$(MID$(TEXT$(I), CL2 + 2, 2)) = "BC" THEN COLR = FOREGROUND COLOR COLR PRINT MID$(TEXT$(I), CL2 + 4, 78 - CL2 + 5); LL = LEN(TEXT$(I)) IF LL < 82 THEN PRINT SPACE$(78 - (LEN(TEXT$(I)) - 8)); COLOR FOREGROUND ELSEIF ENT THEN ENT2 = INSTR(ENT + 2, TEXT$(I), "^$") COLOR FOREGROUND PRINT LEFT$(TEXT$(I), ENT - 1); COLOR 15 LENT = ENT2 - (ENT + 10) PRINT MID$(TEXT$(I), ENT + 10, LENT); COLOR FOREGROUND PRINT MID$(TEXT$(I), ENT2 + 2, 78 - ENT2 + 11); LL = LEN(TEXT$(I)) IF LL < 90 THEN PRINT SPACE$(78 - (LEN(TEXT$(I)) - 12)); ELSE IF TEXT$(I) <> STRING$(78, "-") THEN PRINT MID$(TEXT$(I), TXTRIGHT, 78); SPACE$(SP); ELSE IF TXTRIGHT = 1 THEN CALL PrintChar(12): LOCATE , 3: PRINT SPACE$(76); ELSE PRINT SPACE$(78); END IF END IF END IF X = X + 1 I = I + 1 LOOP UNTIL X = 25 I = I - (24 - POINTERX) DO IF I <= BLOCK - INITBLOCK AND BLOCKX <> 4 THEN LOCATE BLOCKX, 80, 0: COLOR 7, 0: PRINT CHR$(178); : BLOCKX = BLOCKX - 1 LOCATE BLOCKX, 80, 0: COLOR , 0: PRINT " "; : COLOR , 1 LOCATE POINTERX, POINTERY, 1 BLOCK = BLOCK - INITBLOCK END IF LOOP UNTIL I > BLOCK - INITBLOCK ALMO = INSTR(TEXT$(I - 1), "^$") IF INSTR(ALMO + 2, TEXT$(I - 1), "^$") = 0 THEN ALMO = 0 IF ALMO THEN ALMO2 = INSTR(ALMO + 2, TEXT$(I - 1), "^$") LOCATE POINTERX, 2, 0 COLOR FOREGROUND, BACKGROUND PRINT LEFT$(TEXT$(I - 1), ALMO - 1); L = 2 + (ALMO - 1) DO CHAR$ = MID$(TEXT$(I - 1), ALMO + 10, 1) ALMO = ALMO + 1 L = L + 1 LOOP UNTIL CHAR$ <> " " LOCATE , L - 1 COLOR 15, 4 LENT = ALMO2 - (ALMO + 9) PRINT MID$(TEXT$(I - 1), ALMO + 9, LENT); COLOR FOREGROUND, BACKGROUND PRINT MID$(TEXT$(I - 1), ALMO2 + 2, 78 - ALMO2 + 11); LL = LEN(TEXT$(I - 1)) IF LL < 90 THEN PRINT SPACE$(78 - (LEN(TEXT$(I - 1)) - 12)); END IF LOCATE 1, 74, 0: COLOR 15, 7: PRINT I - 1 LOCATE POINTERX, POINTERY, 1 RETURN MENU: CALL DrawBox(1, 2, 80, 4, 15, 3, 1, 1) END RETURN END SUB