home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Power-Programmierung
/
CD1.mdf
/
xbase
/
library
/
dbase
/
banner
/
banner.prg
Wrap
Text File
|
1987-02-07
|
3KB
|
99 lines
******************************************************************************
* (C) JOHN A. BRISTOR ,1987
* ALL RIGHTS RESERVED
*
* 8414 Williamsburg Circle
* Pensacola, FL 32514
* Voice (904) 478-7658
* Data (704) 264-7381 FIDO : 151/305
*
* BANNER.PRG : Procedure SC428 from Screen Control Procedure Archives
*
* BANNER.PRG : Standard "running" left to right message scroller.
*
* This is a standard routine for displaying scrolling messages from left
* to right.
*
* PARAMETERS :
* PBANNER --> String containing message
* MIN. Length - 2 chars
* MAX. Length - 78 chars
*
* PWAIT ----> Whether routine waits for keypress or not.
* VALUES - Y or N
*
* PTIMER ---> Variable for time delay length
* EXAMPLE - 15 works good for 8mhz, 80286 CPU
*
* PLINE ----> Line (Row) on screen used for scrolling message
* MIN - 0
* MAX - 24
*
* EXAMPLE of how to call procedure from another program
*
* STORE "Y" TO PWAIT
* STORE "Press any key to continue..." TO PBANNER
* STORE 15 TO PTIMER
* STORE 23 TO PLINE
* SET PROCEDURE TO BANNER
* DO PRESS1 WITH PBANNER,PWAIT,PTIMER,PLINE
* CLOSE PROCEDURE
*
*
* COMPILER - Clipper, Winter'85, Autumn'86
* LINKING - Must be Linked with SCRL.OBJ (SCRL.ASM by Thomas E. Link
*
*****************************************************************************
PROCEDURE PRESS1
PARAMETERS QBANNER,QWAIT,QTIMER,QLINE,QLAST
STORE LEN(QBANNER) TO NUMCHARS
STORE (80-LEN(QBANNER))/2 TO STARTPT
STORE "N" TO PRESSFLAG
DO WHILE LASTKEY() = QLAST .AND. PRESSFLAG = "N"
IF QWAIT = "N"
STORE "Y" TO PRESSFLAG
ENDIF
FOR KOUNT = NUMCHARS TO 1 STEP -1
STORE SUBSTR(QBANNER,KOUNT,1) TO PCHAR
IF PCHAR = "." .AND. (NUMCHARS - KOUNT) <=3
SET COLOR TO W*/N
ENDIF
@ 23, 0 SAY PCHAR
SET COLOR TO W/N
call ascroll with chr(2),chr(1),chr(15),chr(QLINE),chr(0),chr(QLINE),chr(79)
DO DELAY WITH QTIMER
INKEY(.03)
IF LASTKEY() <> QLAST .AND. QWAIT = "Y"
RETURN
ENDIF
NEXT KOUNT
FOR I = 1 to 79
IF I = STARTPT .AND. QWAIT = "Y"
FOR NEAT = 1 TO INT(QTIMER/2)
DO DELAY WITH QTIMER*4
INKEY(.03)
IF LASTKEY() <> QLAST
RETURN
ENDIF
NEXT NEAT
ENDIF
call ascroll with chr(2),chr(1),chr(15),chr(QLINE),chr(0),chr(QLINE),chr(79)
DO DELAY WITH QTIMER
INKEY(.03)
IF LASTKEY() <> QLAST .AND. QWAIT = "Y"
RETURN
ENDIF
NEXT I
ENDDO
STORE " " TO QWAIT
RETURN
PROCEDURE DELAY
PARAMETERS ZTIMER
FOR TIMER = 1 TO ZTIMER
NEXT TIMER
RETURN