;STRETCH ;BY LLOYD BURCHILL ;(c) 1986, ANTIC PUBLISHING Module byte key=764,IR card scr=88,dlist=560 define dlspace="14592" define dlsend= "14592 +575" ;a 580 byte long space is needed ;that includes no addresses on ;a 1K boundary ;(excepting first byte) card array memline(192) Proc Stretch(card lines,card vstart) ;Parameters: ;'lines' is number of scan lines the image should occupy on the screen ;'vstart' is scan line of original image that will appear at top of screen Byte pointer p card pointer q card bigline,addr,inc,temp inc=24576/lines bigline=(inc rsh 1)+(vstart lsh 7) p=dlspace+3 q=dlspace+4 do temp=bigline rsh 7 addr=memline(temp) p^=IR+64 p==+3 q^=addr q==+3 bigline==+inc if bigline>24576 or p>dlsend then exit fi od p^=65 Return Proc Sinit() ;initialize card a setblock(dlspace,3,112) for a=0 to 191 do memline(a)=scr+a*40 od ;change to 'a*20' to use mode 14 stretch(192,0) dlist =dlspace Return Proc Load() ;load disk picture byte pointer p Close(5) Open(5,"D1:PICTURE",4,0) for p=scr to scr+7679 do p^=GetD(5) od p=712 p^=GetD(5) for p=708 to 710 do p^=GetD(5) od Close(5) Return Proc Drawing() ;example picture byte t,u,v,w,x,y,z for w=0 to 30 do color=rand(16) x=rand(76) y=rand(180) for z=0 to 3 do Plot(x+z,y) Drawto(x+z,y+12) od od for x=0 to 14 do color=x+1 Plot(0,x) Drawto(79-x,95) Drawto(0,191-x) Plot(0,29-x) Drawto(52+x,95) Drawto(0,163+x) od for w=0 to 15 do z=10+ rand(70) y=rand(192-z) u=rand(20) v=rand(50-u)+15 t=10+rand(21) for x=0 to 14 do color=(15-x)*t/30 Plot(v-x,y+z) Drawto(v-10+u,y) Drawto(v+x,y+z) od od Return Proc Rubber_Band() ;main procedure byte pad1=624,pad2=625,mode card h do IR=15 ;use 15 for modes 8,9,10,11 ;use 14 for mode 15, "graphics 7 1/2" ;use 12 for mode 14 (160 x 192 x 2 colors) Graphics(0) Poke (752,1) PrintE ("�oad your own picture") PrintE ("�emo mode") do until key=0 OR key=58 od mode=key Poke(764,255) if mode=58 then Graphics(9) Poke(712,128) Drawing() elseif mode=0 then Graphics(8) Poke(712,128) IR=14 Load() fi ;Use either Load() or Drawing() ;and adjust graphics call ;according to preference Sinit() do h=pad1 if pad2<192 then Stretch(h lsh 1 ,pad2) fi until key<>255 od until 0=1 od Return
Back to previous page