* SOS *
;	+--+------------------------------+--+
;	|//|         BOB ROUTINES         |\\|
;	+--+------------------------------+--+

*************** EXTERNAL DATA FILES ***************
>EXTERN "grafik/bob",bob

****************** SYMBOLS ******************
Scr=$70000
bpl=44
bytes=5*bpl
Size=bytes*256
*************** PROGRAM ***************
JMP START

ORG  $18000
LOAD $18000

Start:
	move.l 4.w,a6
	jsr -132(a6)		;Forbid Multitasking
	move.w $dff01c,OldInts
	move.w #$7fff,$dff09a	;disable all system INTs
	lea Bob+[512*5],a0
	lea Palette+2(PC),a1
	moveq #31,d7
lup:	move.w (a0)+,(a1)
	addq.w #4,a1
	dbf d7,lup
	bsr Init
	bsr BobInit
	bsr Cls
	lea Cop0(PC),a0
	bsr StartCop

	lea $DFF000,a6		;CUSTOM BASE ADDR used in all bob rtns!

	lea Bob,a0
	lea Kontur,a1
	moveq #4,d2
	moveq #64,d3
	bsr FixMask

	lea Kontur+6,a0
	moveq #16,d7
lip:	clr.w (a0)
	add.w #8,a0
	dbf d7,lip

	move.l #DestSV,SavePtr	;new frame:set ptr to start of table
	move.l #BkgrBuff,BkgrPtr;new frame:save bkgr to start of savebuff
	move.w #0,x

mLoop:	bsr WaitRaster
	cmp.b #0,ScrReg+3
	bne.s nowr
	sub.b #$01,ScrReg+3
	bra.s ct
nowr:	sub.b #$11,ScrReg+3
ct:	move.b ScrReg+3,d4
	and.w #$f,d4
	move.w d4,BS0102
	moveq #-1,d7
	bsr ClrBobs

	move.l #DestSV,SavePtr	;new frame:set ptr to start of table
	move.l #BkgrBuff,BkgrPtr;new frame:save bkgr to start of savebuff

	lea Bob,a0
	lea Kontur,a1
	move.w #124,d0		;x
	moveq #59,d1		;y
	moveq #4,d2		;words wide
	moveq #64,d3		;pxls high
	bsr PutBob

	lea BobCoords(PC),a0
	move.w #124,(a0)+	;x
	move.w #59,(a0)+	;y
	move.w #65,(a0)+	;x
	move.w x,(a0)+		;y
	
	lea Kontur,a0		;bob1
	lea Kontur,a1		;bob2
	moveq #0,d0		;bob1-nr*4
	moveq #4,d1		;bob2-nr*4
	moveq #64,d2		;pxls wide for bob 1
	moveq #64,d3		;pxls high for bob 1
	moveq #64,d4		;pxls wide for bob 2
	moveq #64,d5		;pxls high for bob 2
	bsr ChkColl

	lea Bob,a0
	tst.b d7
	beq.s NoColl
	lea FillBob,a0
NoColl:	lea Kontur,a1
	move.w #65,d0
	move.w x,d1		;y
	moveq #4,d2		;words wide
	moveq #64,d3		;pxls high
	bsr PutBob
	addq.w #1,x
	move.w #8,$dff180
rBut:	btst #10,$16(a6)
	beq.s rBut
	btst #6,$bfe001
	bne.L mLoop

Slut:	move.l OldCop,a0
	bsr StartCop
	move.w OldInts,d0
	bset #15,d0
	move.w d0,$dff09a
	move.l 4.w,a6
	jsr -138(a6)		;Permit Multitasking
	moveq #0,d0
	rts
*********************************************
SetCold:
	move.l 4.w,a6
	move.l a0,42(a6)
	lea 34(a6),a0
	clr.w d1
	moveq #22,d7
chklup:	add.w (a0)+,d1
	dbf d7,chklup
	not.w d1
	move.w d1,82(a6)
	rts
Init:
	move.l 4.w,a6
	lea ResetRutin,a0
;	bsr SetCold
	lea GfxName(PC),a1
	jsr -408(a6)
	move.l d0,a0
	move.l 38(a0),OldCop
	rts
ResetRutin:
	move.l #ResetRutin,a0		;initialiserar ColdCapture igen
	bsr SetCold
Reset:	lea ClrStart,a0
	move.l #$80000-ClrStart,d7
	lsr.l #4,d7			;16 bytes clearas nedan
	subq.w #1,d7
RRclr:	clr.l (a0)+
	clr.l (a0)+
	clr.l (a0)+
	clr.l (a0)+
	dbf d7,RRclr
	lea 0.w,a0
	bsr SetCold
	jmp (a5)

ClrStart:			;START CLEARING HERE AT RESET

WaitRaster:
	cmp.b #$ff,$dff006
	bne.s WaitRaster
	rts
StartCop:
	bsr WaitRaster
SCwr2:	cmp.b #$38,$dff006
	bne.s SCwr2
	move.l a0,$dff080
	move.w #0,$dff088
	rts
BlitWait:
	btst #14,2(a6)
	bne.s BlitWait
	rts
*********************************************

Cls:
	movem.l d0-d7/a0-a6,-(SP)
	lea $dff000,a6
	bsr BlitWait
	move.l #scr,$54(a6)
	move.w #0,$66(a6)
	move.l #$1000000,$40(a6)
	move.w #$8400,$96(a6)
	move.w #32768,$58(a6)
	bsr BlitWait
	move.w #$400,$96(a6)
	movem.l (SP)+,d0-d7/a0-a6
	rts

BobInit:
	movem.l d0-d1/d7/a0,-(SP)
	lea BobYtbl,a0
	moveq #0,d0
	move.w BShgt,d7
	subq.w #1,d7
BIlupY:	move.w d0,d1
	mulu BSbytWid,d1
	move.l d1,(a0)+
	addq.w #1,d0
	dbf d7,BIlupY
	movem.l (SP)+,d0-d1/d7/a0
	rts

FixMask:				;Make Outline for bob masking
	movem.l d0-d3/a0,-(SP)		;a0=bob,a1=outl,d2=wordWid,d3=hgt
	move.w d2,d0
	mulu d3,d0
	add.w d0,d0			;d0=bpl size
	lsl.w #6,d3
	add.w d2,d3			;d3=bltsize
FMbw0:	btst #14,2(a6)
	bne.s FMbw0
	move.l a1,$4c(a6)
	move.l a0,$50(a6)
	move.l a1,$54(a6)
	move.l #0,$62(a6)		;Set a & b mod
	move.w #0,$66(a6)		;& c mod
	move.l #-1,$44(a6)
	move.l #$9f00000,$40(a6)
	move.w #$8400,$96(a6)		;BLITTER SETUP
	move.w d3,$58(a6)		;1st bpl=copy
	move.w #$dfc,d2			;rest=or
	move.w BobDpth,d1
	subq.w #1,d1
FMbw1:	btst #14,2(a6)
	bne.s FMbw1
	move.l a1,$4c(a6)
	move.l a0,$50(a6)
	move.l a1,$54(a6)
	move.w d2,$40(a6)
	move.w d3,$58(a6)
	add.w d0,a0
	dbf d1,FMbw1
	move.w #$400,$96(a6)
	movem.l (SP)+,d0-d3/a0
	rts

ClrBobs:
	movem.l d0-d2/d7/a0-a2,-(SP)
	lea DestSv,a0
	move.l SavePtr,a1		;end adr
	cmp.l a0,a1
	beq.s CBSret
	move.w BobDpth,d2		;const:bpls to clear -1
CBSbw0:	btst #14,2(a6)
	bne.s CBSbw0
	move.l #$1000000,$40(a6)
	move.w #$8400,$96(a6)		;BLITTER SETUP(wow ba!)
CBSlup:	move.l (a0)+,d0			;bltsize + modulo
	move.l (a0)+,a2			;destaddr
	move.w d2,d1			;bpls to clear -1
CBSbw1:	btst #14,2(a6)
	bne.s CBSbw1
	move.w d0,$66(a6)
	swap d0
CBSbw2:	btst #14,2(a6)
	bne.s CBSbw2
	move.l a2,$54(a6)
	move.w d0,$58(a6)
	add.l BSbpl,a2
	dbf d1,CBSbw2
	cmp.l a1,a0
	bge.s CBSret
	dbf d7,CBSlup
	move.w #$400,$96(a6)
CBSret:	movem.l (SP)+,d0-d2/d7/a0-a2
	rts

RestBobs:
	movem.l d0-d4/d7/a0-a3,-(SP)
	move.l SavePtr,a0
	lea DestSV,a1		;end adr
	cmp.l a0,a1
	beq.s RBSret
	move.l BSbpl,d0			;const:bobscr bpl size
	move.w BkgrDpth,d4		;const:bpls to rest -1
RBSbw0:	btst #14,2(a6)
	bne.s RBSbw0
	move.w #0,$64(a6)
	move.l #-1,$44(a6)
	move.l #$9f00000,$40(a6)
	move.w #$8400,$96(a6)		;BLITTER SETUP
RBSlup:	move.l -(a0),a3			;src addr
	move.l -(a0),a2			;destaddr
	move.l -(a0),d2			;bltsize + modulo
	move.w -(a0),d1			;bkgr-bob bpl size
	move.w d4,d3			;bpls to restore -1
RBSbw1:	btst #14,2(a6)
	bne.s RBSbw1
	move.w d2,$66(a6)		;set dest modulo
	swap d2				;d2.w=bltsize
RBSbw2:	btst #14,2(a6)
	bne.s RBSbw2
	move.l a3,$50(a6)
	move.l a2,$54(a6)
	move.w d2,$58(a6)		;restore 1 bpl
	add.w d1,a3
	add.l d0,a2
	dbf d3,RBSbw2			;next bpl please
	cmp.l a1,a0
	ble.s RBSret
	dbf d7,RBSlup
	move.w #$400,$96(a6)
RBSret:	movem.l (SP)+,d0-d4/d7/a0-a3
	rts

PutBob:					;Put bob at x,y in (Bobscr:)-bpl
	movem.l d0-d5/d7/a0-a3,-(SP)	;a0=bobadr,a1=konturadr,d0=x,d1=y
	moveq #-2,d7			;bob- & maskmodulo if not clipped
	sub.w BS0102,d0			;with respect to ev. scrolling
	move.l Bobscr,a2		;d2=wordWidth,d3=PxlHt
	move.l SavePtr,a3		;ptr to next free destadr-ptr-LW
	move.w d3,d5
	mulu d2,d5
	add.w d5,d5			;d5=bob bpl size
	tst.w d1
	bpl.s PB_up
	neg.w d1
	sub.w d1,d3			;sub yclip from hgt
	mulu d2,d1
	add.w d1,d1
	add.w d1,a0			;add yclip*bytwid to bob
	add.w d1,a1			;...and to outline
	clr.w d1			;set y=0
PB_up:	move.w d1,d4
	add.w d3,d4
	sub.w BShgt,d4
	bmi.s PB_dn
	sub.w d4,d3			;cut hgt with that amount
PB_dn:	lea BobYtbl(PC),a4
	add.w d1,d1
	add.w d1,d1
	move.l (a4,d1.w),d1
	add.l d1,a2
	move.w d0,d4
	asr.w #4,d4
	add.w d4,d4			;byte-x
	cmp.w #-2,d4
	bge.L PB_lt
	neg.w d4
	subq.w #2,d4
	add.w d4,d7			;inc modulo with amount outside
	add.w d4,a0			;add to bobadr
	add.w d4,a1			;add to maskadr
	lsr.w #1,d4
	sub.w d4,d2			;and decrease width
	moveq #-2,d4
PB_lt:	move.w BSbytClip,d1
	sub.w d2,d1
	sub.w d2,d1			;sub width in bytes
	cmp.w d1,d4
	ble.s PB_rt
	sub.w d4,d1			;-amount that sticks out
	neg.w d1
	add.w d1,d7			;inc modulo
	lsr.w #1,d1
	sub.w d1,d2			;and dec width
PB_rt:	add.w d4,a2			;a2=destaddr
	and.w #15,d0
	lea BobXtbl(PC),a4
	add.w d0,d0
	move.w (a4,d0.w),d0
	addq.w #1,d2			;one extra word
	move.w BSbytWid,d4
	sub.w d2,d4
	sub.w d2,d4			;d4=scr mod
	lsl.w #6,d3
	add.w d2,d3			;d3=bltsize
	move.w d3,(a3)+			;size
	move.w d4,(a3)+			;mod
	move.l a2,(a3)+			;addr
	move.l a3,SavePtr
PBbw0:	btst #14,2(a6)
	bne.s PBbw0
	move.w d0,$42(a6)		;bshift
	or.w #$fca,d0
	move.w d0,$40(a6)		;minterm+ashift
	move.w d4,$60(a6)		;scr mod
	move.w d7,$62(a6)		;bob mod
	move.w d7,$64(a6)		;mask mod
	move.w d4,$66(a6)		;scr mod
	move.l #$ffff0000,$44(a6)
	move.w #$8400,$96(a6)		;BLITTER SETUP
	move.w BobDpth,d1
PBbw1:	btst #14,2(a6)
	bne.s PBbw1
	move.l a2,$48(a6)		;scr
	move.l a0,$4c(a6)		;bob
	move.l a1,$50(a6)		;mask
	move.l a2,$54(a6)		;scr
	move.w d3,$58(a6)		;BLIT on bpl
	add.w d5,a0
	add.l BSbpl,a2
	dbf d1,PBbw1			;next bpl please
PBbw2:	btst #14,2(a6)
	bne.s PBbw2
	move.w #$400,$96(a6)
	movem.l (SP)+,d0-d5/d7/a0-a3
	rts

BkgrBob:				;Put bob at x,y in (Bobscr:)-bpl
	movem.l d0-d7/a0/a2-a5,-(SP)	;a0=bobadr,a1=konturadr,d0=x,d1=y
	moveq #-2,d7			;bob- & maskmodulo if not clipped
	sub.w BS0102,d0			;with respect to ev. scrolling
	move.l Bobscr,a2		;d2=wordWidth,d3=PxlHt
	move.l SavePtr,a3		;ptr to next free destadr-ptr-LW
	move.w d3,d5
	mulu d2,d5
	add.w d5,d5			;d5=bob bpl size
	tst.w d1
	bpl.s BB_up
	neg.w d1
	sub.w d1,d3			;sub yclip from hgt
	mulu d2,d1
	add.w d1,d1
	add.w d1,a0			;add yclip*bytwid to bob
	add.w d1,a1			;...and to outline
	clr.w d1			;set y=0
BB_up:	move.w d1,d4
	add.w d3,d4
	sub.w BShgt,d4
	bmi.s BB_dn
	sub.w d4,d3			;cut hgt with that amount
BB_dn:	lea BobYtbl(PC),a4
	add.w d1,d1
	add.w d1,d1
	move.l (a4,d1.w),d1
	add.l d1,a2
	move.w d0,d4
	asr.w #4,d4
	add.w d4,d4			;byte-x
	cmp.w #-2,d4
	bge.s BB_lt
	neg.w d4
	subq.w #2,d4
	add.w d4,d7			;inc modulo with amount outside
	add.w d4,a0			;add to bobadr
	add.w d4,a1			;add to maskadr
	lsr.w #1,d4
	sub.w d4,d2			;and decrease width
	moveq #-2,d4
BB_lt:	move.w BSbytClip,d1
	sub.w d2,d1
	sub.w d2,d1			;sub width in bytes
	cmp.w d1,d4
	ble.s BB_rt
	sub.w d4,d1			;-amount that sticks out
	neg.w d1
	add.w d1,d7			;inc modulo
	lsr.w #1,d1
	sub.w d1,d2			;and dec width
BB_rt:	add.w d4,a2			;a2=destaddr
	and.w #15,d0
	lea BobXtbl(PC),a4
	add.w d0,d0
	move.w (a4,d0.w),d0
	addq.w #1,d2			;one extra word
	move.w d3,d6
	mulu d2,d6
	add.w d6,d6
	move.w d6,(a3)+			;save bkgr-bob bpl size
	lsl.w #6,d3
	add.w d2,d3			;d3=bltsize
	move.w BSbytWid,d4
	sub.w d2,d4
	sub.w d2,d4			;d4=scr mod
	move.w d3,(a3)+			;size
	move.w d4,(a3)+			;mod
	move.l a2,(a3)+			;addr
	move.l BRestAdd,a4
	cmp.l #0,a4
	beq.s BBsvBG
BBnosv:	add.l a2,a4			;a4=where to get restore-bkgr
	move.l a4,(a3)+			;save bkgrptr
	bra.s BBsav
BBsvBG:	move.l BkgrPtr,a4
	move.l a4,(a3)+			;save bkgrptr
	move.l a2,a5
BBbw0:	btst #14,2(a6)
	bne.s BBbw0
	move.w d4,$64(a6)
	move.w #0,$66(a6)
	move.l #-1,$44(a6)
	move.l #$9f00000,$40(a6)
	move.w #$8400,$96(a6)		;BLITTER SETUP
	move.w BkgrDpth,d1
BBbw1:	btst #14,2(a6)
	bne.s BBbw1
	move.l a5,$50(a6)
	move.l a4,$54(a6)
	move.w d3,$58(a6)
	add.w d6,a4			;add bpl size
	add.l BSbpl,a5
	dbf d1,BBbw1			;next bpl pliis
	move.l a4,BkgrPtr		;next free mem-pos
BBsav:	move.l a3,SavePtr
BBbw2:	btst #14,2(a6)
	bne.s BBbw2
	move.w d0,$42(a6)		;bshift
	or.w #$fca,d0
	move.w d0,$40(a6)		;minterm+ashift
	move.w d4,$60(a6)		;scr mod
	move.w d7,$62(a6)		;bob mod
	move.w d7,$64(a6)		;mask mod
	move.w d4,$66(a6)		;scr mod
	move.l #$ffff0000,$44(a6)
	move.w BobDpth,d1
BBbw3:	btst #14,2(a6)
	bne.s BBbw3
	move.l a2,$48(a6)		;scr
	move.l a0,$4c(a6)		;bob
	move.l a1,$50(a6)		;mask
	move.l a2,$54(a6)		;scr
	move.w d3,$58(a6)		;BLIT one bpl
	add.w d5,a0
	add.l BSbpl,a2
	dbf d1,BBbw3			;next bpl please
BBbw4:	btst #14,2(a6)
	bne.s BBbw4
	move.w #$400,$96(a6)
	movem.l (SP)+,d0-d7/a0/a2-a5
	rts
;;
ChkColl:
	movem.l d0-d6/a0-a5,-(SP)
	lea CollArea,a2
	lea BobCoords(PC),a3
	move.w (a3,d0.w),d6		;x1
	move.w 2(a3,d0.w),d7		;y1
	move.w (a3,d1.w),d0		;x2
	move.w 2(a3,d1.w),d1		;y2
	lea BobXtbl(PC),a3
	lea BobYtbl(PC),a4
	add.w d2,d0
	cmp.w d6,d0
	ble.L CC_coll
	sub.w d2,d0
	add.w d4,d6
	cmp.w d6,d0
	bge.L CC_coll
	add.w d3,d1
	cmp.w d7,d1
	ble.L CC_coll
	sub.w d3,d1
	add.w d5,d7
	cmp.w d7,d1
	bge.L CC_coll
CCBLIT:	btst #14,2(a6)
	bne.s CCBLIT
	move.l a2,$54(a6)
	move.w #0,$66(a6)
	move.l #$1000000,$40(a6)
	move.w #$8400,$96(a6)
	move.w #128*64+9,$58(a6)
	sub.w d4,d6
	sub.w d5,d7			;everything restored
	sub.w d0,d6
	clr.w d0
	tst.w d6
	bpl.s CC_1
	sub.w d6,d0			;d0=bob1 X-offs
	clr.w d6			;d4=bob2 X-offs
CC_1:	sub.w d1,d7
	clr.w d1
	tst.w d7
	bpl.s CC_2
	sub.w d7,d1			;d1=bob1 Y-offs
	clr.w d7			;d5=bob2 Y-offs
CC_2:	lsr.w #4,d2			;width in words
	lsl.w #6,d3
	addq.w #1,d2			;one extra word
	add.w d2,d3			;d3=src bltsize
	neg.w d2
	add.w d2,d2
	add.w CollWid,d2		;d2=modulo
	mulu CollWid,d1
	add.w d1,a2			;dest addr calced
CCbw1:	btst #14,2(a6)
	bne.s CCbw1
	move.w #-2,$64(a6)
	move.l #$ffff0000,$44(a6)
	move.w #0,$42(a6)		;BLITINIT

	move.w d2,$66(a6)
	move.w d0,d2
	lsr.w #4,d0
	add.w d0,d0
	add.w d0,a2
	and.w #15,d2
	add.w d2,d2
	move.w (a3,d2.w),d2		;ashift
	or.w #$9f0,d2
	move.w d2,$40(a6)		;+minterm
	move.l a0,$50(a6)
	move.l a2,$54(a6)
	move.w d3,$58(a6)		;copy bob1 to area
	lea CollArea,a2
	lsr.w #4,d4			;width in words
	lsl.w #6,d5
	addq.w #1,d4			;one extra word
	add.w d4,d5			;d5=bob2 bltsize
	move.w CollWid,d0
	sub.w d4,d0
	sub.w d4,d0			;d0=dst mod
	mulu CollWid,d7
	add.w d7,a2
CCbw3:	btst #14,2(a6)
	bne.s CCbw3
	move.w d0,$62(a6)
	move.w d0,$66(a6)
	move.w d6,d2
	lsr.w #4,d6
	add.w d6,d6
	add.w d6,a2			;dest addr calced
	and.w #15,d2
	add.w d2,d2
	move.w (a3,d2.w),d2		;ashift
	or.w #$dc0,d2			;+minterm
	move.w d2,$40(a6)
	move.l a2,$4c(a6)
	move.l a1,$50(a6)
	move.l a2,$54(a6)
	move.w d5,$58(a6)		;blit a*b=1
CCbw4:	btst #14,2(a6)
	bne.s CCbw4
	btst #13,2(a6)
	bne.s CC_coll
	moveq #-1,d7
	bra.s CCrts
CC_coll:moveq #0,d7
CCrts:	move.w #$400,$96(a6)
	movem.l (SP)+,d0-d6/a0-a5
	rts

************ C O P P E R *************
;@
Cop0:
dc.w $008e,$2881		;320 x 256
dc.w $0090,$28c1
dc.w $0092,$30
dc.w $0094,$d0
ScrReg:
dc.w $0102,0
dc.w $0104,0
dc.w $0108,4*bpl+2
dc.w $010a,4*bpl+2

SprPtrs:
dc.w $120,$0
dc.w $122,$0
dc.w $124,$0
dc.w $126,$0
dc.w $128,$0
dc.w $12a,$0
dc.w $12c,$0
dc.w $12e,$0
dc.w $130,$0
dc.w $132,$0
dc.w $134,$0
dc.w $136,$0
dc.w $138,$0
dc.w $13a,$0
dc.w $13c,$0
dc.w $13e,$0

Palette:
dc.w $180,$
dc.w $182,$f
dc.w $184,$d
dc.w $186,$b
dc.w $188,$9
dc.w $18a,$7
dc.w $18c,$5
dc.w $18e,$4
dc.w $190,$fff
dc.w $192,$ddf
dc.w $194,$bbf
dc.w $196,$99f
dc.w $198,$77f
dc.w $19a,$55f
dc.w $19c,$44f
dc.w $19e,$33f
dc.w $1a0,$
dc.w $1a2,$
dc.w $1a4,$
dc.w $1a6,$
dc.w $1a8,$
dc.w $1aa,$
dc.w $1ac,$
dc.w $1ae,$
dc.w $1b0,$
dc.w $1b2,$
dc.w $1b4,$
dc.w $1b6,$
dc.w $1b8,$
dc.w $1ba,$
dc.w $1bc,$
dc.w $1be,$

BplPek:
dc.w $e0,7
dc.w $e2,0
dc.w $e4,7
dc.w $e6,bpl
dc.w $e8,7
dc.w $ea,bpl*2
dc.w $ec,7
dc.w $ee,bpl*3
dc.w $f0,7
dc.w $f2,bpl*4
;dc.w $f4,7
;dc.w $f6,bpl*5

dc.w $0100,$5200

dc.w $ffff,$fffe	;end of clist
even
************ DC-DATA ************
even
***************** VARIABLER *****************
x:dc.w 0
Ptr:		dc.l 0
StackPtr:	dc.l 0
OldCop:		dc.l 0
OldInts:	dc.w 0		;so that not cleared
rr:		dc.b 0
GfxName:	dc 'graphics.library',0
even
************ BOB VARIABLES ************
BobScr:		dc.l Scr	;bob dest
BS0102:		dc.w 0
BSBpl:		dc.l Bpl	;bob screen:diff between bitplane-adrs
BSbytWid:	dc.w bytes	;bob screen:nr of bytes/pixelrow
BSbytClip:	dc.w bpl-2	;visible width in bytes, incl.0102(clip)
BShgt:		dc.w 256	;bob screen pixel height

BrestAdd:	dc.l 0		;RestBob destptr-addvalue if twin screen
BobDpth:	dc.w 4		;bob bpls -1
SavePtr:	dc.l DestSV	;ptr to next free saveadr (adr+bltsize)
BkgrDpth:	dc.w 4		;bkgr bpls -1 (restore)
BkgrPtr:	dc.l BkgrBuff	;ptr to next free bkgr-save-mempos
BobXtbl:	dc.w $0000,$1000,$2000,$3000,$4000,$5000,$6000,$7000
		dc.w $8000,$9000,$a000,$b000,$c000,$d000,$e000,$f000
CollWid:	dc.w 18
BobCoords:	blk.w 2*128,0
FillBob:		;:
blk.w 8*64*5,-1
********** LOADED DATA **********
Data:
BobYtbl=$20000
CollArea=BobYtbl+[256*4]	;:bobscr is 256 pxl high
Bob=CollArea+[128*18]		;coll-detect area. Max bob size=64x64
Kontur=Bob+[8*64*5]+64
Stop=Kontur+[8*64]
*********** WORKSPACE ***********
DestSV=Stop			;savetbl for bobrtns (MAX 128 BOBS!)
BkgrBuff=DestSV+[14*128]	;buff for bkgr-chunks,10k
StopW=BkgrBuff+10000
* END *
