' The background screen is stored in scr% in .PI1 format.
' The font is stored in fontscr% in .PI1 format each character is
' 16 x 16 pixels in size.
DIM xco%(60),yco%(60) ! reserve space to store the co-ords of the top left
' corner of each character in the font.
'
@get_rez ! Find out what screen resolution we are currently using
IF rez%=1 THEN ! If we are in med_rez then change to low_rez
VOID XBIOS(5,L:-1,L:-1,0)
ENDIF
'
@set_coords ! This procedure works out the co-ords of the top left corner
' of each character in the font and stores them in arrays xco%() & yco%()
'
@read_string ! This procedure reads in the message to be scrolled and stores
' the ascii code for each character in array c%()
'
@show_pic ! this procedure copies lines 1-180 of the background screen onto
' the physical screen 20 lines from the top.
'
' ******************************** MAIN LOOP *******************************
HIDEM
ADD fontscr%,34 ! Add 34 to fontscr% as the first 34 bytes contains the colour
' palette.
i%=1 ! This points to the first character of our text.
DO
FOR loop%=16 TO 1 STEP -2 ! The font is 16 pixels wide so we scroll the screen in
' 8 steps of 2 pixels.
t%=c%(i%)
'
' This bit copies the part of the required font character on to the righthand
' side of the screen.
RC_COPY fontscr%,xco%(t%),yco%(t%),18-(loop%),16 TO XBIOS(2),302+(loop%),0
'
' This bit scrolls the top 16 lines of the screen 2 pixels to the left
RC_COPY XBIOS(2),2,0,319,16 TO XBIOS(2),0,0
VSYNC ! Wait for a VBL to prevent flickering.
'
NEXT loop% ! We now have put one complete character on the screen.
INC i% ! So we point to the next character in our text.
IF i%=l% ! If we've reached the end of the message start it again
i%=1
ENDIF
EXIT IF INKEY$=" " !Drop out of main loop if a key is pressed.
LOOP
IF rez%=1 THEN ! If we started in med rez then change back to med rez.
VOID XBIOS(5,L:-1,L:-1,1)
ENDIF
CLS
END
PROCEDURE set_coords
c%=0
FOR loopy%=0 TO 32 STEP 16
FOR loopx%=0 TO 304 STEP 16
xco%(c%)=loopx%
yco%(c%)=loopy%
INC c%
NEXT loopx%
NEXT loopy%
RETURN
PROCEDURE read_string
READ text$
READ text2$
text$=text$+text2$
text$=text$+STRING$(20,".")
text$=text$+STRING$(20," ")
l%=LEN(text$)
DIM c%(l%)
FOR loop%=1 TO l%
c%(loop%)=(ASC(MID$(text$,loop%,1))-32)
NEXT loop%
DATA "THIS IS BYTEMAN'S HORIZONTAL TEXT SCROLLING ROUTINE WRITTEN IN GFA BASIC V 3.5 ESPECIALLY FOR THE ICTARI USER GROUP..................... THE MEMBERS OF ICTARI ARE LEE BALL MICHAEL BARNARD NICK BATES JAMES COLLETT DAVID GUNBY"
DATA " IAN HANCOCK MICHAEL HERMAN ROBERT HOLBROOK PAUL LADDIE (THATS ME !) RAYMOND REID SIMON RIGBY JAMES TAYLOR AND JONATHAN WHITE"