' BASIC Anywhere Machine test program for the PCOPY statement
' Page 0 is always the active screen and always the one displayed
' All commands to print text and to draw graphics work only on the
' active screen
' Pages 1 and 2 are the only other pages.
'
' Syntax: PCOPY (x1,y1) - (x2,y2), source_page, destination_page
' Or, for full page copy: PCOPY source_page, destination_page
' ------------------------------------------------------------—
CONST 📄active = 0, 📄background = 1, 📄msg = 2
CONST screen_height = 228, screen_width = 5 * 228
' 🟠🟠🟠Main Program
SCREEN _NEWIMAGE(screen_width, screen_height, 7)
GOSUB ➔SetupBackground
GOSUB ➔SetupMsg
➔IterationStart:
GOSUB ➔DisplayBillboard
GOSUB ➔PrepNextBillboard
GOTO ➔IterationStart
' 🟠🟠🟠Subroutines
➔SetupBackground:
FOR z = 0 TO 4
c = 1
FOR i = 0 TO 227 STEP 10
LINE (228*z,i) - (i+228*z,0), c
LINE (228*(z+1),i) - (i + 228*z,227), c
c = c + 1 : IF c = 16 THEN c = 1
NEXT i
NEXT z
PCOPY 📄active, 📄background
CLS
RETURN
➔SetupMsg:
msg$ = "Howdy Doody ! "
PRINT msg$
FOR j = 0 TO 8
LOCATE 10 + j, 1
FOR k = 0 TO 8*LEN(msg$)
IF POINT(k,j) = 0 THEN PRINT " "; ELSE PRINT "*";
NEXT k
PRINT
NEXT j
LOCATE 1,1 : PRINT SPACE$(70)
PCOPY 📄active, 📄msg
CLS
RETURN
➔DisplayBillboard:
PCOPY 📄background, 📄active
PCOPY (0, 71) - (1139, 143), 📄msg, 📄active
_DELAY 0.001
RETURN
➔PrepNextBillboard:
PCOPY 📄background, 📄active
SCROLL +15,0,TRUE
PCOPY 📄active, 📄background
PCOPY 📄msg, 📄active
SCROLL (0, 71) - (1139, 143), -5,0,TRUE
PCOPY 📄active, 📄msg
RETURN