Scroll v1.0 - 1/1

 BBS: Inland Empire Archive
Date: 02-24-93 (16:26)             Number: 296
From: CHRIS TRACY                  Refer#: NONE
  To: ALL                           Recvd: NO  
Subj: Scroll v1.0 - 1/1              Conf: (2) Quik_Bas
Well... This is a little routine i wrote to scroll an array on the screen...
It's quite fast, even though it uses PRINT and locate and
all that fun stuff... The original version used PrtScrn, an
ASM routine from the Q4T library, but i adapted it to use
PRINT... Basically, you set the screen location (you just
define a box) and colors and the array and the ending key,
and it will scroll very nicely for just about any number of
elements (up to 32766, which is BASIC's limitations anywaz,
well... depening on a few things...)... It is very handy
for scrolling like an ASCII chart for instance... Note, I
wrote this TO scroll an ascii chart, and of course, print
messed up the control characters... So, if you use an
optional PRINT statement, it will print the REAL ASCII code
(like PDQPrint, PrintQ, or PrtScrn)... Oh well, here it is!

 Part one of SCROLL.BAS...
________O_/________________________| SNIP |______________________\_O_______
        O \                        | HERE |                      / O

DECLARE SUB Scroll (Arry$(), Elements%, UpR%, Brw%, LfC%, Rgc%, Fore%,_
 Back%, EndCode$)

SUB Scroll (Arry$(), Elements%, UpR%, Brw%, LfC%, Rgc%,
Fore%, Back%, EndCode$)
' Scroll v1.0 - By Chris Tracy
' QBS Publishing - SURE!!! Yes!!!
' Arry$()        - This is the array (of type STRING) to be scrolled.
'                  NOTE: The first element MUST be 0.
' Elements%      - The number of elements to use.
' Upr%           - The upper row (1-25) to scroll on.
' Brw%           - The bottom row (1-25) to scroll on.
' Lfc%           - The left column (1-80) to scroll on.
' Rgc%           - The right column (1-80) to scroll on.
' Fore%          - The foreground color of the text to be scrolled.
' Back%          - The background color of the text to be scrolled.
' EndCode$       - This is the ending code's code to use. Use it like this:
'                  Scroll Arry$(), 130, 1,25,1,79,7,0,CHR$(27)
'                  The CHR$(27) would make ESCape the ending code. To use
'                  another character, for instance, the F1 key is
'                  CHR$(0) + ";" so just use that instead of CHR$(27).
' This source code is released into the public domain. You can use it in
' any of your programs for free, I don't care...
LOCATE , , 0                                      ' Turn the cursor OFF!
GOSUB Update:                                     ' This updates the list...
        WHILE LEN(I$) = 0: I$ = INKEY$: WEND      ' Wait for a key
        SELECT CASE I$                            ' What was it?
        CASE CHR$(0) + "G"                        ' Must be HOME ...
                ElementToStart% = 0                    ' Reset starting
                Num = 0                                ' points and update
                GOSUB Update:                          ' the scroll
        CASE CHR$(0) + "O"                        ' Or maybe END ...
                ElementToStart% = Elements% - (Brw% - UpR%) ' set the start
                Num = Elements%                             ' point to the
                GOSUB Update:                         ' last ones & update
        CASE CHR$(0) + "Q"                        ' PGDN ...
                ElementToStart% = ElementToStart% + (Brw% - UpR%)
                IF ElementToStart% + (Brw% - UpR%) > Elements% THEN
                        Num = Elements% - (Brw% - UpR%)
                        ElementToStart% = Elements% - (Brw% - UpR%)
                END IF
                GOSUB Update:
                IF ElementToStart% <> 0 THEN
                        Num = Num + (Brw% - UpR%)
                END IF
        CASE CHR$(0) + "I"                        ' PGUP ...
                ElementToStart% = ElementToStart% - (Brw% - UpR%)
                IF ElementToStart% < 0 THEN
                        Num = 0
                        ElementToStart% = 0
                END IF
                GOSUB Update:
                IF ElementToStart% <> 0 THEN
                        Num = Num - (Brw% - UpR%)
                END IF
        CASE CHR$(0) + "P"                         ' Down arrow key
                ElementToStart% = ElementToStart% + 1
                IF ElementToStart% + (Brw% - UpR%) > Elements% THEN
                        ElementToStart% = ElementToStart% - 1
                        GOTO Repeat:
                END IF
                GOSUB Update:

Continued on next message...

--- T.A.G. 2.6d Standard
 * Origin: DangerBase ][ Programming Staff 412-438-4101 (1:2615/4@FIDONET.ORG)
Outer Court
Echo Basic Postings

Books at Amazon:

Back to BASIC: The History, Corruption, and Future of the Language

Hackers: Heroes of the Computer Revolution (including Tiny BASIC)

Go to: The Story of the Math Majors, Bridge Players, Engineers, Chess Wizards, Scientists and Iconoclasts who were the Hero Programmers of the Software Revolution

The Advent of the Algorithm: The Idea that Rules the World

Moths in the Machine: The Power and Perils of Programming

Mastering Visual Basic .NET