'=========================================================================== ' Subject: SCREEN SAVER FOR TEXT MODE Date: 01-31-99 (12:43) ' Author: Wayne L. Code: QB, QBasic, PDS ' Origin: twenyaw@netactive.co.za Packet: TEXT.ABC '=========================================================================== DECLARE SUB RowRoll (TxT$, Fg%, Bg%, Row%, Colm%, Tic!) DECLARE SUB Saver () ' ' Thanks to all that have helped me in QB who made it simple to understand. ' To everyone else that I have not mentioned whose code and programming ' skills helped me write this program. ' ' Written with QB4.5 using Pentuim 166 - ' This utility is for anyone to use - * FREEWARE * ' If someone can improve the code, decrease its size or ' who may have any comments please send me email. . . . ' ' To:- twenyaw@netactive.co.za ' DEFINT A-Z SCREEN 0, 0, 0: COLOR 7, 1: CLS ReStart: RESTORE NotesTxT FOR f = 1 TO 19 READ TempTxT$ About$ = LEFT$(RIGHT$(TempTxT$, LEN(TempTxT$) - 4), 80) Fg = VAL(LEFT$(TempTxT$, 2)): Bg = VAL(MID$(TempTxT$, 3, 2)) About$ = About$ + SPACE$(80 - LEN(About$)) RollSpeed! = 16 CALL RowRoll(About$, Fg, Bg, 2 + f, 1, RollSpeed!) IF INKEY$ <> "" THEN GOTO ToSaver NEXT 'f ToSaver: Saver GOTO ReStart NotesTxT: DATA "1412 This can be a HEADING . . . . .","0101 " DATA "1101 This is a simple TEXT base DEMO which you can use in your programs." DATA "1101 " DATA "1101 This program has two SUBS - " DATA "1101 " DATA "1201 SUB RowRoll (TxT$, Fg, Bg, Row, Colm, Tic!)" DATA "1101 TxT$ - LENGTH of the text$ must not be longer than 80 characters." DATA "1101 Fg - the text color , Bg - the background color." DATA "1101 Row - Well what row (1-25) & Colm - Which column (1-80)" DATA "1101 Tic! - the speed of the text scrolling from left to right " DATA "1101 " DATA "1503 Another HEADING or INFO line . . . . . . . . . ." DATA "0701 " DATA "1201 SUB Saver" DATA "0701 " DATA "0701 A simple TEXT SCREEN SAVER with no paramaters." DATA "0701 " DATA "1001 [ESC] - will end the DEMO !" SUB RowRoll (TxT$, Fg, Bg, Row, Colm, Tic!) Tic! = Tic! * 100 COLOR Fg, Bg: LOCATE Row, Colm: PRINT SPACE$(LEN(TxT$)); FOR f = 1 TO LEN(TxT$) LOCATE Row, LEN(TxT$) - f + Colm: PRINT LEFT$(TxT$, f); FOR g! = 1 TO Tic! NEXT 'g NEXT 'f END SUB SUB Saver StSaver: DO IF INKEY$ <> "" THEN EXIT SUB Direct = (RND * 2) + 1 Row = INT(RND * 22) + 2: Colm = INT(RND * 80) + 1 LOOP WHILE CHR$(SCREEN(Row, Colm)) = " " c1$ = CHR$(SCREEN(Row, Colm)): LOCATE Row, Colm: PRINT " "; DO IF Direct = 1 THEN c2$ = CHR$(SCREEN(Row + 1, Colm, 1)) + CHR$(SCREEN(Row + 1, Colm, 0)) ELSE c2$ = CHR$(SCREEN(Row - 1, Colm, 1)) + CHR$(SCREEN(Row - 1, Colm, 0)) END IF xcol = ASC(c2$): Bg = INT(xcol / 16): Fg = xcol MOD 16 IF Direct = 1 THEN Row = Row + 1 ELSE Row = Row - 1 LOCATE Row, Colm: COLOR 12, 1: PRINT c1$; FOR h! = 1 TO 9900: NEXT 'h IF Row >= 25 THEN LOCATE Row, Colm: PRINT " "; : GOTO StSaver IF Row <= 1 THEN LOCATE Row, Colm: PRINT " "; : GOTO StSaver LOCATE Row, Colm: COLOR Fg, Bg: PRINT RIGHT$(c2$, 1); IF INKEY$ = CHR$(27) THEN COLOR 7, 0: CLS : PRINT "Thank you.": SYSTEM IF INKEY$ <> "" THEN EXIT SUB LOOP IF INKEY$ = "" THEN GOTO StSaver END SUB