org  $70000
load $70000     		; in case of fastmem

RUN:
move.l 4,a6
jsr -132(a6)			; stop multitasking
bsr.L getgfx

move.l #Bitplane,d0		; insert bitplane in copperlist
move.w d0,BP+6
swap d0
move.w d0,BP+2

move.l #sprite0,d0		; insert sprites in copperlist
move.w d0,sp0+6
swap d0
move.w d0,sp0+2

move.l #sprite1,d0
move.w d0,sp1+6
swap d0
move.w d0,sp1+2

move.l #sprite2,d0
move.w d0,sp2+6
swap d0
move.w d0,sp2+2

move.l #sprite3,d0
move.w d0,sp3+6
swap d0
move.w d0,sp3+2

move.l #sprite4,d0
move.w d0,sp4+6
swap d0
move.w d0,sp4+2

move.l #sprite5,d0
move.w d0,sp5+6
swap d0
move.w d0,sp5+2

move.l #sprite6,d0
move.w d0,sp6+6
swap d0
move.w d0,sp6+2

move.l #sprite7,d0
move.w d0,sp7+6
swap d0
move.w d0,sp7+2

move.l #copper,newcop
bsr.L changecop


LOOP:
bsr.L pause			; to smoothen the spritemovement

MOVESPEED:
cmp.b #$3,mspeed		; speed = 3 ??
bne.S test			; no 
bsr.S datamover
clr.w mspeed

TEST:
add.b #1,mspeed			; add speed
btst #6,$bfe001			; test left button
bne.S LOOP

QUIT:
move.w #$ffff,$dff096
move.l gfxbase,a0
move.w #$0080,$dff096
move.l oldcopper,50(a0)		; restart old copperlist
move.w #$8080,$dff096		; (never stop copper by rewriting
move.l 4,a6			; the 512K vector !!!!!!!!!)
jsr -138(a6)
clr.l d0			; to keep CLI happy .....
rts

mspeed:    dc.w $0000
xmidvalue: dc.w $6a00		; Variables used to place
ymidvalue: dc.w $3a00		; sprites midscreen
	  
DATAMOVER:
cmp.l #$1000,PosCount		; check if end of datablock
blo.S NoClear
clr.l PosCount

NoClear:
lea Datablock,a0
add.l PosCount,a0

add.l #$10,PosCount		; add up to next location ....


clr.l d0			; CLR to prevent flag occurance
move.b (a0),d0			; 
divu #2,d0			; - I DIV both Y and X pos.data
add.b ymidvalue,d0		;   because I use sprites
move.b d0,Sprite0		; 
				; - Do not DIV if you are using 
move.b 1(a0),d0			;   Blitter Objects
divu #2,d0			; 
add.b xmidvalue,d0		; midvalues is for centering sprites
move.b d0,Sprite0+1		; 

clr.l d0			; repeated for eight sprites
move.b 2(a0),d0
divu #2,d0
add.b ymidvalue,d0
move.b d0,Sprite1

move.b 3(a0),d0
divu #2,d0
add.b xmidvalue,d0
move.b d0,Sprite1+1

clr.l d0
move.b 4(a0),d0
divu #2,d0
add.b ymidvalue,d0
move.b d0,Sprite2

move.b 5(a0),d0
divu #2,d0
add.b xmidvalue,d0
move.b d0,Sprite2+1

clr.l d0
move.b 6(a0),d0
divu #2,d0
add.b ymidvalue,d0
move.b d0,Sprite3

move.b 7(a0),d0
divu #2,d0
add.b xmidvalue,d0
move.b d0,Sprite3+1

clr.l d0
move.b 8(a0),d0
divu #2,d0
add.b ymidvalue,d0
move.b d0,Sprite4

move.b 9(a0),d0
divu #2,d0
add.b xmidvalue,d0
move.b d0,Sprite4+1

clr.l d0
move.b 10(a0),d0
divu #2,d0
add.b ymidvalue,d0
move.b d0,Sprite5

move.b 11(a0),d0
divu #2,d0
add.b xmidvalue,d0
move.b d0,Sprite5+1

clr.l d0
move.b 12(a0),d0
divu #2,d0
add.b ymidvalue,d0
move.b d0,Sprite6

move.b 13(a0),d0
divu #2,d0
add.b xmidvalue,d0
move.b d0,Sprite6+1

clr.l d0
move.b 14(a0),d0
divu #2,d0
add.b ymidvalue,d0
move.b d0,Sprite7

move.b 15(a0),d0
divu #2,d0
add.b xmidvalue,d0
move.b d0,Sprite7+1

clr.l d0
move.b sprite0,d0		; calc the y-height byte and insert
add.b #$10,d0
move.b d0,sprite0+2

clr.l d0
move.b sprite1,d0
add.b #$10,d0
move.b d0,sprite1+2

clr.l d0
move.b sprite2,d0
add.b #$10,d0
move.b d0,sprite2+2

clr.l d0
move.b sprite3,d0
add.b #$10,d0
move.b d0,sprite3+2

clr.l d0
move.b sprite4,d0
add.b #$10,d0
move.b d0,sprite4+2

clr.l d0
move.b sprite5,d0
add.b #$10,d0
move.b d0,sprite5+2

clr.l d0
move.b sprite6,d0
add.b #$10,d0
move.b d0,sprite6+2

clr.l d0
move.b sprite7,d0
add.b #$10,d0
move.b d0,sprite7+2
rts

PosCount: dc.l 0

COPPER:
dc.w $0100,$1200
dc.w $008e,$2c02
dc.w $0090,$f4ff
dc.w $0092,$38
dc.w $0094,$d0
dc.w $0096,$83a0		; enable sprite DMA when raster = $01
dc.w $0108,$0000
dc.w $010a,$0000
BP:
dc.w $00e0,$0000
dc.w $00e2,$0000
SP0:
dc.w $0120,$0000
dc.w $0122,$0000
SP1:
dc.w $0124,$0000
dc.w $0126,$0000
SP2:
dc.w $0128,$0000
dc.w $012a,$0000
SP3:
dc.w $012c,$0000
dc.w $012e,$0000
SP4:
dc.w $0130,$0000
dc.w $0132,$0000
SP5:
dc.w $0134,$0000
dc.w $0136,$0000
SP6:
dc.w $0138,$0000
dc.w $013a,$0000
SP7:
dc.w $013c,$0000
dc.w $013e,$0000

dc.w $01a2,$0d8b		; sprite colors
dc.w $01a4,$0e89
dc.w $01a6,$0f79

dc.w $01aa,$0d8b
dc.w $01ac,$0e89
dc.w $01ae,$0f79

dc.w $01b2,$0d8b
dc.w $01b4,$0e89
dc.w $01b6,$0f79

dc.w $01ba,$0d8b
dc.w $01bc,$0e89
dc.w $01be,$0f79

dc.w $0180,$0000

dc.w $ff11,$fffe
dc.w $0096,$0020		;disable sprite DMA when raster = $ff

dc.w $ffff,$fffe

gfxbase: dc.l 0
gfxname: dc.b 'graphics.library',0,0

getgfx:
move.l 4,a6
move.l #gfxname,a1
jsr -408(a6)
move.l d0,gfxbase
rts

changecop:
move.l gfxbase,a0
move.w #$0080,$dff096
move.l 50(a0),oldcopper		; here is the vector for the current
move.l newcop,50(a0)		; copperlist (the CLI screen),
move.w #$83a0,$dff096		; remember it for stopping the copper
rts

oldcopper: dc.l 0
newcop:    dc.l 0

PAUSE:
cmp.b #$ff,$dff006		; wait for raster
bne.S pause
rts

sprite0:
dc.w $0000,$0000
dc.w $0000,$03E0
dc.w $0000,$0FF8
dc.w $0180,$1E7C
dc.w $07C0,$3C3E
dc.w $0FE0,$381E
dc.w $1F80,$787F
dc.w $1F00,$78FF
dc.w $1E04,$71FF
dc.w $081C,$77FF
dc.w $001C,$7FFF
dc.w $0078,$3FFE
dc.w $03F0,$3FFE
dc.w $03E0,$1FFC
dc.w $0080,$0FF8
dc.w $0000,$03E0
dc.w $0000,$0000
dc.w $0000,$0000
dc.w $0000,$0000

sprite1:
dc.w $0000,$0000
dc.w $0000,$03E0
dc.w $0000,$0FF8
dc.w $0180,$1E7C
dc.w $07C0,$3C3E
dc.w $0FE0,$381E
dc.w $1F80,$787F
dc.w $1F00,$78FF
dc.w $1E04,$71FF
dc.w $081C,$77FF
dc.w $001C,$7FFF
dc.w $0078,$3FFE
dc.w $03F0,$3FFE
dc.w $03E0,$1FFC
dc.w $0080,$0FF8
dc.w $0000,$03E0
dc.w $0000,$0000
dc.w $0000,$0000
dc.w $0000,$0000

sprite2:
dc.w $0000,$0000
dc.w $0000,$03E0
dc.w $0000,$0FF8
dc.w $0180,$1E7C
dc.w $07C0,$3C3E
dc.w $0FE0,$381E
dc.w $1F80,$787F
dc.w $1F00,$78FF
dc.w $1E04,$71FF
dc.w $081C,$77FF
dc.w $001C,$7FFF
dc.w $0078,$3FFE
dc.w $03F0,$3FFE
dc.w $03E0,$1FFC
dc.w $0080,$0FF8
dc.w $0000,$03E0
dc.w $0000,$0000
dc.w $0000,$0000
dc.w $0000,$0000

sprite3:
dc.w $0000,$0000
dc.w $0000,$03E0
dc.w $0000,$0FF8
dc.w $0180,$1E7C
dc.w $07C0,$3C3E
dc.w $0FE0,$381E
dc.w $1F80,$787F
dc.w $1F00,$78FF
dc.w $1E04,$71FF
dc.w $081C,$77FF
dc.w $001C,$7FFF
dc.w $0078,$3FFE
dc.w $03F0,$3FFE
dc.w $03E0,$1FFC
dc.w $0080,$0FF8
dc.w $0000,$03E0
dc.w $0000,$0000
dc.w $0000,$0000
dc.w $0000,$0000

sprite4:
dc.w $0000,$0000
dc.w $0000,$03E0
dc.w $0000,$0FF8
dc.w $0180,$1E7C
dc.w $07C0,$3C3E
dc.w $0FE0,$381E
dc.w $1F80,$787F
dc.w $1F00,$78FF
dc.w $1E04,$71FF
dc.w $081C,$77FF
dc.w $001C,$7FFF
dc.w $0078,$3FFE
dc.w $03F0,$3FFE
dc.w $03E0,$1FFC
dc.w $0080,$0FF8
dc.w $0000,$03E0
dc.w $0000,$0000
dc.w $0000,$0000
dc.w $0000,$0000

sprite5:
dc.w $0000,$0000
dc.w $0000,$03E0
dc.w $0000,$0FF8
dc.w $0180,$1E7C
dc.w $07C0,$3C3E
dc.w $0FE0,$381E
dc.w $1F80,$787F
dc.w $1F00,$78FF
dc.w $1E04,$71FF
dc.w $081C,$77FF
dc.w $001C,$7FFF
dc.w $0078,$3FFE
dc.w $03F0,$3FFE
dc.w $03E0,$1FFC
dc.w $0080,$0FF8
dc.w $0000,$03E0
dc.w $0000,$0000
dc.w $0000,$0000
dc.w $0000,$0000

sprite6:
dc.w $0000,$0000
dc.w $0000,$03E0
dc.w $0000,$0FF8
dc.w $0180,$1E7C
dc.w $07C0,$3C3E
dc.w $0FE0,$381E
dc.w $1F80,$787F
dc.w $1F00,$78FF
dc.w $1E04,$71FF
dc.w $081C,$77FF
dc.w $001C,$7FFF
dc.w $0078,$3FFE
dc.w $03F0,$3FFE
dc.w $03E0,$1FFC
dc.w $0080,$0FF8
dc.w $0000,$03E0
dc.w $0000,$0000
dc.w $0000,$0000
dc.w $0000,$0000

sprite7:
dc.w $0000,$0000
dc.w $0000,$03E0
dc.w $0000,$0FF8
dc.w $0180,$1E7C
dc.w $07C0,$3C3E
dc.w $0FE0,$381E
dc.w $1F80,$787F
dc.w $1F00,$78FF
dc.w $1E04,$71FF
dc.w $081C,$77FF
dc.w $001C,$7FFF
dc.w $0078,$3FFE
dc.w $03F0,$3FFE
dc.w $03E0,$1FFC
dc.w $0080,$0FF8
dc.w $0000,$03E0
dc.w $0000,$0000
dc.w $0000,$0000
dc.w $0000,$0000

BitPlane: blk.b $2800,0		; a screen showing nothing but sprites

Datablock: blk.b $1001,0	; to keep the moverdata


; THIS LITTLE PROGGY WAS MADE FOR SHOWING YOU HOW TO USE THE 
; DATABLOCS FROM THE SINUSCREATOR  (C) EXPERIMENT IV OF
; THE ARCADIA TEAM ..    PS->  GREET US LIKE THIS:

; GREETINGS TO     ARCADIA TEAM
;		   ------------

; NOT LIKE:

; GREETINGS TO         TAT	(specially not like this !!!!!)
; OR                  T.A.T

; WELL,          THE ARCADIA TEAM       IS OK
;		 ----------------
