' BITBLT.LST
' __________
DIM s%(8),d%(8),p%(8)
'
a$="This is a demo for a very long line thro"
b$="ugh which we will scroll. This is easily"
c$=" done by changing the GET parameters ! H"
d$="ave you become curious on how to do it ?"
DEFTEXT 1,0,0,32
TEXT 0,24,a$
TEXT 0,56,b$
TEXT 0,88,c$
TEXT 0,120,d$
'
' Read graphics data > destination
GET 0,0,639,127,graphic$
d%=VARPTR(graphic$)
'
PRINT AT(30,13);"Press key!"
VOID INP(2)
'
'
@bitblt_sd(XBIOS(2),640,400,1,d%+6,2560,32)
FOR y%=0 TO 127 STEP 32
  @bitblt_p(0,y%,639,31,y%*20,0,3)
NEXT y%
'
d%=VARPTR(graphic$)
' Change GET parameters
DPOKE d%,640*4-1
DPOKE d%+2,128/4-1
'
' scroll
CLS
FOR y%=64 TO 350 STEP 64
  FOR x%=320 TO -640*3 STEP -1
    PUT x%,y%,graphic$
  NEXT x%
NEXT y%
'
EDIT
'
PROCEDURE bitblt_sd(s0%,s1%,s2%,s5%,d0%,d1%,d2%)
  s%(0)=s0%
  s%(1)=s1%
  s%(2)=s2%
  s%(3)=s1%/16
  s%(5)=s5%
  d%(0)=d0%
  d%(1)=d1%
  d%(2)=d2%
  d%(3)=d1%/16
  d%(5)=s5%
RETURN
'
PROCEDURE bitblt_p(p0%,p1%,p2%,p3%,p4%,p5%,p8%)
  p%(0)=p0%
  p%(1)=p1%
  p%(2)=p0%+p2%
  p%(3)=p1%+p3%
  p%(4)=p4%
  p%(5)=p5%
  p%(6)=p4%+p2%
  p%(7)=p5%+p3%
  p%(8)=p8%
  BITBLT s%(),d%(),p%()
RETURN
