		section	framework,code_c

*-------------- Colour Copperbar test...

barlen		equ	9

Kill_OS:	move.l	(AbsExecBase).w,a6	; get execbase
		lea	Gfxlib(pc),a1		; point to graphics.library
		jsr	OldOpenLibrary(a6)	; open graphics library
		move.l 	d0,Gfxbase		; save gfxbase address
		jsr	Forbid(a6)		; () turn off multitasking
		lea	(_Custom).l,a5		; custom base address in a5
		move.w	dmaconr(a5),dmasav	; save dma
		move.w	intenar(a5),intsav	; save intena
		move.w	adkconr(a5),adksav	; save adkcon
		move.w	#$7fff,intena(a5)	; turn off intena
		move.l  #Copperlist,cop1lch(a5)	; install custom copperlist
		clr.w	copjmp1(a5)		; clear second copperlist
		move.w	#$c020,intena(a5)	; return INTENA:
		move.w  #$87c0,dmacon(a5)	; return DMA:Cop/Blit/Sprite
		move.l	#screen+0,d0		; get screen ptr in d0 
		move.w	d0,pl1l			; find bpl1ptl (low word) 
		swap	d0			; swap to get high word
		move.w	d0,pl1h			; find bpl1pth (high word)

wait:		cmpi.b	#255,$dff006
		bne.s	wait
		bsr	changecop
		btst	#left,(_ciaa).l		; left mouse wait
		bne.s	wait			; loop until pressed

Help_OS:	lea	(_Custom).l,a5		; custom base address in a5
		move.l	GFXbase(pc),a1		; get gfxbase in a1
		move.l	SysCop1(a1),cop1lch(a5)	; restore old system copper
		move.w	dmasav,d0		; get saved dma value
		or.w	#$8000,d0
		move.w	d0,dmacon(a5)		; restore old dma
		move.w	adksav,d0		; get saved adkcon value
		or.w	#$8000,d0
		move.w	d0,adkcon(a5)		; restore old adkcon
		move.w	intsav,d0		; get saved intena value
		or.w	#$8000,d0
		move.w	d0,intena(a5)		; restore old interna
		move.l	(AbsExecBase).w,a6	; get execbase
		jsr	Permit(a6)		; permit multitasking
		move.l	GFXbase(pc),a1		; get gfxbase in a1
		jsr	CloseLibrary(a6)	; close gfx library
		moveq.l	#0,d0			; no cli return code
		rts
    	
changecop:	not.b	flag
		bne.s	ccrts
		lea	copcols(pc),a0
		moveq	#33-2,d0		; 100 lines
		move.l	barptr,a1		; start of list
		move.l	a1,temptr		; updates temporary pointer
		moveq	#0,d1
ccloop		move.b	(a1)+,7(a0)		; update colour
		lea	8(a0),a0
 		addq.b	#1,d1
	 	cmp.b	#barlen,d1		; end of sub-bar?
 		bne.s	ccdbra
		move.l	temptr,a1
		addq.l	#1,a1
		cmp.l	#barend,temptr
		bne.s	ccd2
	
		lea	bardata(pc),a1
ccd2		move.l	a1,temptr
		moveq	#0,d1
ccdbra  	dbra	d0,ccloop
		addq.l	#1,barptr
		move.l	barptr,d0
		cmp.l	#barend,d0		; have we got to the bottom
		bne.s	ccrts			; of the bar list. if so,
		move.l	#bardata,barptr		; reset to start of list	
ccrts		rts				; return to interrupt
  

bardata:	dc.b	$00,$01,$02,$03,$04,$05,$06,$07,$08,$09,$0A,$0B,$0C,$0D,$0D,$0E,$0E,$0F
		dc.b	$0F,$0F,$0E,$0E,$0E,$0D,$0C,$0B,$0A,$09,$08,$07,$06,$05,$04,$03,$02,$01
		ds.b 20
		even
barend		DC.B 0,1,2,3,4,5,6,7,8,9,10,11,12,13,13,14,14,15,15,15
		DC.B 14,14,13,13,12,11,10,9,8,7,6,5,4,3,2,1
		dc.b 255
		even
flag		dc.w	0

CopperList:	dc.w	diwstrt,$2C81
		dc.w	diwstop,$2CC1
		dc.w	ddfstrt,$0038
		dc.w	ddfstop,$00D0
		dc.w	bplcon0,$1200		; (1 bitplane Lo-Res)
		dc.w	bpl1mod,0		; (no moduo)
		dc.w	bpl2mod,0		; (no moduo)
		dc.w	color00,0		; colour 0 (black)
		dc.w	color01,$fff		; colour 1 (white)
		dc.w	spr0pth,0,spr0ptl,0,spr1pth,0,spr1ptl,0
		dc.w	spr2pth,0,spr2ptl,0,spr3pth,0,spr3ptl,0
		dc.w	spr4pth,0,spr4ptl,0,spr5pth,0,spr5ptl,0
		dc.w	spr6pth,0,spr6ptl,0,spr7pth,0,spr7ptl,0
		dc.w	bpl1pth
pl1h:		dc.w 	0
		dc.w 	bpl1ptl
pl1l:		dc.w 	0


copcols	dc.w	$2C09,$FFFE,$0180,$0000
	dc.w	$2D09,$FFFE,$0180,$0000
	dc.w	$2E09,$FFFE,$0180,$0000
	dc.w	$2F09,$FFFE,$0180,$0000
	dc.w	$3009,$FFFE,$0180,$0000
	dc.w	$3109,$FFFE,$0180,$0000
	dc.w	$3209,$FFFE,$0180,$0000
	dc.w	$3309,$FFFE,$0180,$0000
	dc.w	$3409,$FFFE,$0180,$0000
	dc.w	$3509,$FFFE,$0180,$0000

	dc.w	$3609,$FFFE,$0180,$0000
	dc.w	$3709,$FFFE,$0180,$0000
	dc.w	$3809,$FFFE,$0180,$0000
	dc.w	$3909,$FFFE,$0180,$0000
	dc.w	$3A09,$FFFE,$0180,$0000
	dc.w	$3B09,$FFFE,$0180,$0000
	dc.w	$3C09,$FFFE,$0180,$0000
	dc.w	$3D09,$FFFE,$0180,$0000
	dc.w	$3E09,$FFFE,$0180,$0000
	dc.w	$3F09,$FFFE,$0180,$0000

	dc.w	$4009,$FFFE,$0180,$0000
	dc.w	$4109,$FFFE,$0180,$0000
	dc.w	$4209,$FFFE,$0180,$0000
	dc.w	$4309,$FFFE,$0180,$0000
	dc.w	$4409,$FFFE,$0180,$0000
	dc.w	$4509,$FFFE,$0180,$0000
	dc.w	$4609,$FFFE,$0180,$0000
	dc.w	$4709,$FFFE,$0180,$0000
	dc.w	$4809,$FFFE,$0180,$0000
	dc.w	$4909,$FFFE,$0180,$0000

	dc.w	$4a09,$FFFE,$0180,$0000
	dc.w	$4b09,$FFFE,$0180,$0000
	dc.w	$4c09,$FFFE,$0180,$0000



		dc.w	$FFFF,$FFFE		;end copper (impossible pos)

dmasav:		dc.w	0
adksav:		dc.w	0
intsav:		dc.w	0
GFXlib:		dc.b	"graphics.library"
		even
GFXBase:	ds.l	2
		even
temptr: 	dc.l	bardata			
		even
barptr: 	dc.l	bardata
		even
Screen:		dcb.b	20480,0		;reserve some memory for screen area

Level3Vector	equ $6c
SysCop1		equ $26
_ciaa:		equ $bfe001
_ciab:		equ $bfd000
left		equ 6

_custom:	equ $dff000
bltddat:	equ $000
dmaconr:	equ $002
vposr:		equ $004
vhposr:		equ $006
dskdatr:	equ $008
joy0dat:	equ $00a
joy1dat:	equ $00c
clxdat:		equ $00e
adkconr:	equ $010
pot0dat:	equ $012
pot1dat:	equ $014
potgor:		equ $016
serdatr:	equ $018
dskbytr:	equ $01a
intenar:	equ $01c
intreqr:	equ $01e
dskpth:		equ $020
dskptl:		equ $022
dsklen:		equ $024
dskdat:		equ $026
refptr:		equ $028
vposw:		equ $02a
vhposw:		equ $02c
copcon:		equ $02e
serdat:		equ $030
serper:		equ $032
potgo:		equ $034
joytest:	equ $036
strequ:		equ $038
strvbl:		equ $03a
strhor:		equ $03c
strlong:	equ $03e
bltcon0:	equ $040
bltcon1:	equ $042
bltafwm:	equ $044
bltalwm:	equ $046
bltcpth:	equ $048
bltcptl:	equ $04a
bltbpth:	equ $04c
bltbptl:	equ $04e
bltapth:	equ $050
bltaptl:	equ $052
bltdpth:	equ $054
bltdptl:	equ $056
bltsize:	equ $058
bltcmod:	equ $060
bltbmod:	equ $062
bltamod:	equ $064
bltdmod:	equ $066
bltcdat:	equ $070
bltbdat:	equ $072
bltadat:	equ $074
dsksync:	equ $07e
cop1lch:	equ $080
cop1lcl:	equ $082
cop2lch:	equ $084
cop2lcl:	equ $086
copjmp1:	equ $088
copjmp2:	equ $08a
copins:		equ $08c
diwstrt:	equ $08e
diwstop:	equ $090
ddfstrt:	equ $092
ddfstop:	equ $094
dmacon:		equ $096
clxcon:		equ $098
intena:		equ $09a
intreq:		equ $09c
adkcon:		equ $09e
aud0pth:	equ $0a0
aud0ptl:	equ $0a2
aud0len:	equ $0a4
aud0per:	equ $0a6
aud0vol:	equ $0a8
aud0dat:	equ $0aa
aud1pth:	equ $0b0
aud1ptl:	equ $0b2
aud1len:	equ $0b4
aud1per:	equ $0b6
aud1vol:	equ $0b8
aud1dat:	equ $0ba
aud2pth:	equ $0c0
aud2ptl:	equ $0c2
aud2len:	equ $0c4
aud2per:	equ $0c6
aud2vol:	equ $0c8
aud2dat:	equ $0ca
aud3pth:	equ $0d0
aud3ptl:	equ $0d2
aud3len:	equ $0d4
aud3per:	equ $0d6
aud3vol:	equ $0d8
aud3dat:	equ $0da
bpl1pth:	equ $0e0
bpl1ptl:	equ $0e2
bpl2pth:	equ $0e4
bpl2ptl:	equ $0e6
bpl3pth:	equ $0e8
bpl3ptl:	equ $0ea
bpl4pth:	equ $0ec
bpl4ptl:	equ $0ee
bpl5pth:	equ $0f0
bpl5ptl:	equ $0f2
bpl6pth:	equ $0f4
bpl6ptl:	equ $0f6
bplcon0:	equ $100
bplcon1:	equ $102
bplcon2:	equ $104
bpl1mod:	equ $108
bpl2mod:	equ $10a
bpl1dat:	equ $110
bpl2dat:	equ $112
bpl3dat:	equ $114
bpl4dat:	equ $116
bpl5dat:	equ $118
bpl6dat:	equ $11a
spr0pth:	equ $120
spr0ptl:	equ $122
spr1pth:	equ $124
spr1ptl:	equ $126
spr2pth:	equ $128
spr2ptl:	equ $12a
spr3pth:	equ $12c
spr3ptl:	equ $12e
spr4pth:	equ $130
spr4ptl:	equ $132
spr5pth:	equ $134
spr5ptl:	equ $136
spr6pth:	equ $138
spr6ptl:	equ $13a
spr7pth:	equ $13c
spr7ptl:	equ $13e
spr0pos:	equ $140
spr0ctl:	equ $142
spr0data:	equ $144
spr0datb:	equ $146
spr1pos:	equ $148
spr1ctl:	equ $14a
spr1data:	equ $14c
spr1datb:	equ $14e
spr2pos:	equ $150
spr2ctl:	equ $152
spr2data:	equ $154
spr2datb:	equ $156
spr3pos:	equ $158
spr3ctl:	equ $15a
spr3data:	equ $15c
spr3datb:	equ $15e
spr4pos:	equ $160
spr4ctl:	equ $162
spr4data:	equ $164
spr4datb:	equ $166
spr5pos:	equ $168
spr5ctl:	equ $16a
spr5data:	equ $16c
spr5datb:	equ $16e
spr6pos:	equ $170
spr6ctl:	equ $172
spr6data:	equ $174
spr6datb:	equ $176
spr7pos:	equ $178
spr7ctl:	equ $17a
spr7data:	equ $17c
spr7datb:	equ $17e
color00:	equ $180
color01:	equ $182
color02:	equ $184
color03:	equ $186
color04:	equ $188
color05:	equ $18a
color06:	equ $18c
color07:	equ $18e
color08:	equ $190
color09:	equ $192
color10:	equ $194
color11:	equ $196
color12:	equ $198
color13:	equ $19a
color14:	equ $19c
color15:	equ $19e
color16:	equ $1a0
color17:	equ $1a2
color18:	equ $1a4
color19:	equ $1a6
color20:	equ $1a8
color21:	equ $1aa
color22:	equ $1ac
color23:	equ $1ae
color24:	equ $1b0
color25:	equ $1b2
color26:	equ $1b4
color27:	equ $1b6
color28:	equ $1b8
color29:	equ $1ba
color30:	equ $1bc
color31:	equ $1be
open:		equ -30
close:		equ -36
read:		equ -42
write:		equ -48
input:		equ -54
output:		equ -60
seek:		equ -66
deletefile:	equ -72
rename:		equ -78
lock:		equ -84
unlock:		equ -90
duplock:	equ -96
examine:	equ -102
exnext:		equ -108
info:		equ -114
createdir:	equ -120
currentdir:	equ -126
ioErr:		equ -132
CreateProc:	equ -138
exit:		equ -144
loadseg:	equ -150
unloadseg:	equ -156
getpacket:	equ -162
queupacket:	equ -168
deviceproc:	equ -174
setcomment:	equ -180
setprotection:	equ -186
datestamp:	equ -192
delay:		equ -198
waitforchar:	equ -204
parentdir:	equ -210
IsInteractive:	equ -216
Execute:	equ -222

AbsExecBase:	equ 4
forbid		equ -132
permit		equ -138
allocmem:	equ -198
freemem:	equ -210
getmsg:		equ -372
replymsg:	equ -378
waitport:	equ -384
closelibrary:	equ -414
opendevice:	equ -444
closedevice:	equ -450
doio:		equ -456
oldopenlibrary	equ -408
openlibrary:	equ -552

