;* SOS *
;
;assemble it with the MASTERSEKA V1.6 (by CORSAIR !!!)
;and crunch it with DEFJAM PACKER.

;save (with seka)		amiga+shift a (=assemble)
;				SEKA>		wi ram:intro	<ret>
;				BEG>		beg 		<ret>
;				END>		end 		<ret>
;
;crunch	(with defjam packer)	MEGA CRUNCH:			<ret>
;				LOW-MEM:	40000		<ret>
;				HIGH-MEM:	47000		<ret>
;				SCAN-WIDTH:	400		<ret>
;				LOAD TYPE:	o		<ret>
;				FILENAME:	ram:intro	<ret>
;				LOAD-ADRESSE:	40000		<ret>
;				LOAD TYPE:			<ret>
;				PRESS RETURN:			<ret>
;				JMP ADR:	40000		<ret>
;				FLAG REG:	10		<ret>
;				PRO-DECRUNCHER:			<ret>
;				FILENAME:	ram:intro	<ret>
;				SAVE AGAIN:			<ret>
;				RUN NOW:			<ret>

;------ registres divers
	music:		= 1		;1=music on	0=music off
	nb:		= 5
	scry:		= 104
	lg_col:		= 6*15*2
;------ registres bp
	bp1:		= $60000
	bp1a:		= bp1+[scry*48]
	bp_log:		= $70000
	vide:		= $78000
;------ registres sprites
	spr1:		= $4e000
	spr2:		= spr1+1000
;------
	jmp		beg
	org		$40000
	load		$40000

;************** macro

sin_mac:	macro
		move	d3,d2
		add	(a0)+,d2
		move	#\1,$44(a6)
		move	d1,$50+2(a6)
		move	d2,$54+2(a6)
		move	d2,$4c+2(a6)
		move	d5,$58(a6)
		endm

;************** programme principal

beg:		lea	$dff000,a5
		move	$02(a5),old_dma
		move	$1c(a5),old_int
		or	#$8000,old_dma
		or	#$8000,old_int
		move	#$7fff,$96(a5)
		move	#$7fff,$9a(a5)
;===============
		move	#%1100000000101000,$9a(a5)
if music=1
		bsr.l	bpinit
endif
		move.l	$6c.w,old_irq+2
		move.l	#new_irq,$6c.w
		move.l	#init,$80.w
		trap	#0
		move.l	old_irq+2(pc),$6c.w
;===============
		lea	$dff000,a5
		move.l	4.w,a6
		move.l	(a6),a6
		move.l	(a6),a1
		move.l	38(a1),$80(a5)
		move	#$000f,$96(a5)
		move	old_dma(pc),$96(a5)
		move	old_int(pc),$9a(a5)
		bset	#1,$bfe001
		moveq	#0,d0
		rts
;===============
old_dma:	dc.w	0
old_int:	dc.w	0

;************** irq

new_irq:	movem.l	d0-d7/a0-a6,-(sp)
if music=1
		bsr.L	bpmusic
endif
		bsr.l	anim_cop
		movem.l	(sp)+,d0-d7/a0-a6
old_irq:	jmp	0

;************** init

init:		lea	end(pc),a0
		lea	$7f000,a1
vide_bp:	clr.l	(a0)+
		cmp.l	a0,a1
		bne.s	vide_bp
;===============
		lea	sin(pc),a0
		move	#200-1,d0
init_sin:	move	(a0),d1
		mulu	#48,d1
		move	d1,400*3(a0)
		move	d1,400*2(a0)
		move	d1,400*1(a0)
		move	d1,(a0)+
		dbf	d0,init_sin
;===============
		lea	copb1(pc),a0
		lea	col1(pc),a1
		lea	col2(pc),a2
		lea	col3(pc),a3
		lea	col4(pc),a4
		lea	col5(pc),a5
		move.l	#$2807fffe,d1
		moveq	#0,d2
		move	#$d5-1,d0
init_copb1:	move.l	d1,(a0)+
		move.l	#$1820000,(a0)+
		move.l	#$1820000,(a0)+
		move	#$182,(a0)+
		move	(a1),(a0)+
		move	#$184,(a0)+
		move	(a2),(a0)+
		move	#$188,(a0)+
		move	(a3),(a0)+
		move	#$190,(a0)+
		move	(a4),(a0)+
		move	#$1a0,(a0)+
		move	(a5),(a0)+
		add.l	#$01000000,d1
		addq	#1,d2
		cmp	#3,d2
		bne.s	pas_nx_col
		moveq	#0,d2
		addq	#2,a1
		addq	#2,a2
		addq	#2,a3
		addq	#2,a4
		addq	#2,a5
pas_nx_col:	dbf	d0,init_copb1
;===============
		lea	copb1+4(pc),a0
		move.l	#$f00000+[bp1a/$ffff],$00*32+0(a0)
		move.l	#$f20000+[bp1a&$ffff],$00*32+4(a0)
		move.l	#$e00000+[bp1a/$ffff],$11*32+0(a0)
		move.l	#$e20000+[bp1a&$ffff],$11*32+4(a0)
		move.l	#$e40000+[bp1a/$ffff],$22*32+0(a0)
		move.l	#$e60000+[bp1a&$ffff],$22*32+4(a0)
		move.l	#$e80000+[bp1a/$ffff],$33*32+0(a0)
		move.l	#$ea0000+[bp1a&$ffff],$33*32+4(a0)
		move.l	#$ec0000+[bp1a/$ffff],$44*32+0(a0)
		move.l	#$ee0000+[bp1a&$ffff],$44*32+4(a0)
		move.l	#$f00000+[bp1a/$ffff],$55*32+0(a0)
		move.l	#$f20000+[bp1a&$ffff],$55*32+4(a0)
		move.l	#$e00000+[bp1a/$ffff],$66*32+0(a0)
		move.l	#$e20000+[bp1a&$ffff],$66*32+4(a0)
		move.l	#$e40000+[bp1a/$ffff],$77*32+0(a0)
		move.l	#$e60000+[bp1a&$ffff],$77*32+4(a0)
		move.l	#$e80000+[bp1a/$ffff],$88*32+0(a0)
		move.l	#$ea0000+[bp1a&$ffff],$88*32+4(a0)
		move.l	#$ec0000+[bp1a/$ffff],$99*32+0(a0)
		move.l	#$ee0000+[bp1a&$ffff],$99*32+4(a0)
		move.l	#$f00000+[bp1a/$ffff],$aa*32+0(a0)
		move.l	#$f20000+[bp1a&$ffff],$aa*32+4(a0)
		move.l	#$e00000+[bp1a/$ffff],$bb*32+0(a0)
		move.l	#$e20000+[bp1a&$ffff],$bb*32+4(a0)
		move.l	#$e40000+[bp1a/$ffff],$cc*32+0(a0)
		move.l	#$e60000+[bp1a&$ffff],$cc*32+4(a0)
;===============
		lea	col_ht(pc),a0
		lea	tx_col_ht(pc),a1
		move	6*2-2(a1),d2
		move	d2,d1
		mulu	#15,d1
		moveq	#6-1,d0
cree_col_ht:	move	(a1)+,d4
		move	d4,d3
		sub	d2,d4
		move	d3,d2
		moveq	#15-1,d3
calc_col_ht:	add	d4,d1
		move	d1,6*15*2(a0)
		move	d1,(a0)+
		dbf	d3,calc_col_ht
		dbf	d0,cree_col_ht
;===============
		lea	spr1,a0
		lea	spr2,a1
		lea	spr+0(pc),a2
		lea	spr+2(pc),a3
		move.l	#$8cd19100,(a0)+
		move.l	#$8cd99100,(a1)+
		moveq	#5-1,d0
init_spr:	move	(a2),(a0)+
		move	(a3),(a1)+
		move	(a2),(a0)+
		move	(a3),(a1)+
		addq	#4,a2
		addq	#4,a3
		dbf	d0,init_spr
		clr.l	(a0)
		clr.l	(a1)
;===============
		move.l	#ht_cop3+2,cop_adr
		move.l	#bs_cop3+2,cop_adr+4
		move.l	#new_copper3,$dff080
		move	#$87e0,$dff096

;************** irq debut

		moveq	#$92-$27,d1
irq_beg:	bsr	wait
		subq.b	#1,ht_cop3-4
		addq.b	#1,bs_cop3-4
		addq.b	#1,spr1
		addq.b	#1,spr1+2
		addq.b	#1,spr2
		addq.b	#1,spr2+2
		subq	#1,d1
		bne.s	irq_beg
;===============
		move.l	#ht_cop1+2,cop_adr
		move.l	#bs_cop1+2,cop_adr+4
		move.l	#new_copper,$dff080

;************** irq scroll

irq_scr:	move.l	$dff004,d0
		and.l	#$1ff00,d0
		cmp.l	#$10000,d0
		bne.s	irq_scr
		bsr.L	scr
		btst	#6,$bfe001
		bne.s	irq_scr

;************** irq train

pages:		lea	bp1,a0
		lea	bp1+[96*256],a1
vide_bp2:	clr.l	(a0)+
		cmp.l	a0,a1
		bne.s	vide_bp2
		move.l	pos_txt(pc),a2
		cmp.b	#-1,(a2)
		beq.L	f_irq_train
		bsr.L	aff_page
;===============
		bsr.L	train_prg
		moveq	#48/2,d1
irq_page_on:	bsr	wait
		lea	adr_bp2+6(pc),a0
		subq	#2,(a0)
		subq	#2,8(a0)
		subq	#1,d1
		bne.s	irq_page_on
;===============
irq_train:	cmp.l	#txt+[40*20],pos_txt
		bne.s	pas_train
		bsr.L	train_prg
pas_train:	btst	#6,$bfe001
		bne.s	irq_train
;===============
		moveq	#48/2,d1
irq_page_off:	bsr	wait
		lea	adr_bp2+6(pc),a0
		addq	#2,(a0)
		addq	#2,8(a0)
		subq	#1,d1
		bne.s	irq_page_off
		bra.L	pages
;===============
wait:		move.l	$dff004,d0
		and.l	#$1ff00,d0
		cmp.l	#$08000,d0
		bne.s	wait
wait2:		move.l	$dff004,d0
		and.l	#$1ff00,d0
		cmp.l	#$10000,d0
		bne.s	wait2
		rts

;************** irq fin

f_irq_train:	move.l	#ht_cop3+2,cop_adr
		move.l	#bs_cop3+2,cop_adr+4
		move.l	#new_copper3,$dff080
		moveq	#$92-$27,d1
irq_fin:	bsr	wait
		addq.b	#1,ht_cop3-4
		subq.b	#1,bs_cop3-4
		subq.b	#1,spr1
		subq.b	#1,spr1+2
		subq.b	#1,spr2
		subq.b	#1,spr2+2
		subq	#1,d1
		bne.s	irq_fin
		rte

;************** train programme

train_prg:	lea	train(pc),a2
		move.b	#$5f,d2
		move.b	$bfec01,d0
		cmp.b	old_touche,d0
		beq.s	pas_touche
		move.b	d0,old_touche
nx_key:		cmp	#-1,(a2)
		beq.s	pas_touche
		cmp.b	d2,d0
		bne.s	pas_fkey
		move	6(a2),d0
		bpl.s	pas_on_off
		eor	#1,6(a2)
		bra.s	pas_fkey
pas_on_off:	cmp	4(a2),d0
		beq.s	max
		add	#1,6(a2)
		bra.s	pas_fkey
max:		move	2(a2),d0
		move	d0,6(a2)
pas_fkey:	subq	#2,d2
		addq	#8,a2
		bra.s	nx_key
;===============
pas_touche:	lea	train(pc),a2
nx_menu:	cmp	#-1,(a2)
		beq.s	dernier_menu
		bsr.s	put_train
		addq	#8,a2
		bra.s	nx_menu
		rts
put_train:	lea	bp1+[96*9+38],a3
		move	(a2),d0
		mulu	#96*9,d0
		add	d0,a3
		move	6(a2),d0
		cmp	#-1,d0
		beq.s	menu_on
		cmp	#-2,d0
		beq.s	menu_off
		moveq	#0,d2
		move	d0,d2
		divu	#100,d2
		add	#'0',d2
		bsr.L	aff_font
		clr	d2
		swap	d2
		divu	#10,d2
		add	#'0',d2
		bsr.L	aff_font
		clr	d2
		swap	d2
		add	#'0',d2
		bsr.L	aff_font
dernier_menu:	rts
menu_on:	move.b	#' ',d2
		bsr.L	aff_font
		move.b	#'o',d2
		bsr.L	aff_font
		move.b	#'n',d2
		bsr.L	aff_font
		rts
menu_off:	move.b	#'o',d2
		bsr.L	aff_font
		move.b	#'f',d2
		bsr.s	aff_font
		move.b	#'f',d2
		bsr.s	aff_font
		rts

;************** affiche font

aff_page:	lea	copb2(pc),a0
		lea	degra(pc),a1
		move.l	#$3901fffe,d1
		moveq	#20-1,d0
init_copb2:	move.l	d1,(a0)+
		move	#$182,(a0)+
		move	(a1),(a0)
		sub	#$555,(a0)+
		move	#$184,(a0)+
		move	(a1),(a0)+
		move	#$186,(a0)+
		move	(a1)+,(a0)+
		add.l	#$09000000,d1
		dbf	d0,init_copb2
;===============
		move.l	#ht_cop2+2,cop_adr
		move.l	#bs_cop2+2,cop_adr+4
		move.l	#new_copper2,$dff080
;===============
		lea	bp1+[96*18+4],a3
		moveq	#20-1,d0
nx_li:		moveq	#40-1,d1
nx_car:		move.b	(a2)+,d2
		bsr.s	aff_font
		dbf	d1,nx_car
		add	#96*8+8+48,a3
		dbf	d0,nx_li
		add.l	#40*20,pos_txt
		rts
;===============
aff_font:	lea	font2-1(pc),a0
		lea	ordre2(pc),a1
ch_font2:	addq	#1,a0
		cmp.b	(a1)+,d2
		bne.s	ch_font2
		move.b	56*6(a0),96*6(a3)
		move.b	56*5(a0),96*5(a3)
		move.b	56*4(a0),96*4(a3)
		move.b	56*3(a0),96*3(a3)
		move.b	56*2(a0),96*2(a3)
		move.b	56*1(a0),96*1(a3)
		move.b	(a0),(a3)+
		rts

;************** anime copper

anim_cop:	move	pos_ht(pc),d1
		addq	#2,d1
		cmp	#lg_col,d1
		bne.s	pas_f_ht
		moveq	#0,d1
pas_f_ht:	move	d1,pos_ht
		move	pos_bs(pc),d2
		subq	#2,d2
		bne.s	pas_f_bs
		move	#lg_col,d2
pas_f_bs:	move	d2,pos_bs
;===============
		move.l	cop_adr+4(pc),a0
		move.l	cop_adr(pc),a1
		lea	col_ht(pc),a2
		lea	col_ht(pc),a3
		add	d1,a2
		add	d2,a3
		moveq	#56-1,d0
put_ht:		move	(a3)+,(a0)
		move	(a2)+,(a1)
		addq	#4,a0
		addq	#4,a1
		dbf	d0,put_ht
		rts

;************** scr

scr:		eor.b	#$01,bp_scr+1
		lea	copb1+4(pc),a0
		eor.b	#$01,$00*32+3(a0)
		eor.b	#$01,$11*32+3(a0)
		eor.b	#$01,$22*32+3(a0)
		eor.b	#$01,$33*32+3(a0)
		eor.b	#$01,$44*32+3(a0)
		eor.b	#$01,$55*32+3(a0)
		eor.b	#$01,$66*32+3(a0)
		eor.b	#$01,$77*32+3(a0)
		eor.b	#$01,$88*32+3(a0)
		eor.b	#$01,$99*32+3(a0)
		eor.b	#$01,$aa*32+3(a0)
		eor.b	#$01,$bb*32+3(a0)
		eor.b	#$01,$cc*32+3(a0)
		eor.b	#$01,chg1+3
		eor.b	#$01,chg2+3
		eor.b	#$01,chg3+3
;===============
		lea	$dff000,a6
		move	pos_sin(pc),d0
		addq	#2,d0
		cmp	#200*2,d0
		blo.s	pas_f_sin
		sub	#200*2,d0
pas_f_sin:	move	d0,pos_sin
		move.l	#$09000000,$40(a6)
		clr.l	$64(a6)
		move.l	bp_scr(pc),$54(a6)
		move	#52+16*64+24,$58(a6)
;===============
pas_fin_col:	lea	sin(pc),a0
		add	d0,a0
		move.l	#$0dfc0000,$40(a6)
		move.l	#$ffffffff,$44(a6)
		move.l	#$002e002e,$60(a6)
		move.l	#$002e002e,$64(a6)
		move.l	#bp_log,d1
		move.l	bp_scr(pc),d3
		move.l	#16*64+1,d5
		move.l	d1,$50(a6)
		move.l	d3,$54(a6)
		move.l	d3,$4c(a6)
		moveq	#23-1,d4
put_sin:	sin_mac	$8000
		sin_mac	$4000
		sin_mac	$2000
		sin_mac	$1000
		sin_mac	$0800
		sin_mac	$0400
		sin_mac	$0200
		sin_mac	$0100
		sin_mac	$0080
		sin_mac	$0040
		sin_mac	$0020
		sin_mac	$0010
		sin_mac	$0008
		sin_mac	$0004
		sin_mac	$0002
		sin_mac	$0001
		addq	#2,d1
		addq	#2,d3
		dbf	d4,put_sin
;===============
ok_scr:		move.l	#$c9f00000,$40(a6)
		move.l	#$ffffffff,$44(a6)
		clr.l	$64(a6)
		move.l	#bp_log,$50(a6)
		move.l	#bp_log-2,$54(a6)
		move	#17*64+24,$58(a6)
		subq.b	#1,nb_scr
		beq.s	nv_car
		rts
nv_car:		move.b	#16/4,nb_scr
		move.l	compt(pc),a0
		move.b	(a0)+,d0
		bne.s	pas_fin_scr
		lea	scrtxt(pc),a0
		move.b	(a0)+,d0
pas_fin_scr:	move.l	a0,compt
		cmp.b	#'1',d0
		beq.s	ptt_ft
		cmp.b	#':',d0
		beq.s	ptt_ft
		cmp.b	#'.',d0
		beq.s	ptt_ft
		cmp.b	#',',d0
		beq.s	ptt_ft
		cmp.b	#'!',d0
		beq.s	ptt_ft
		cmp.b	#'"',d0
		bne.s	pas_ptt_ft
ptt_ft:		move.b	#8/4,nb_scr
pas_ptt_ft:	lea	ordre(pc),a0
		lea	adr_font-4(pc),a1
ch_font:	addq	#4,a1
		cmp.b	(a0)+,d0
		bne.s	ch_font
		move.l	#$09f00000,$40(a6)
		move.l	#$ffffffff,$44(a6)
		move.l	#$0026002e,$64(a6)
		move.l	(a1),$50(a6)
		move.l	#bp_log+46,$54(a6)
		move	#16*64+1,$58(a6)
fin_scr:	rts

;************** brian postma replay routine

if music=1

bpinit:		lea	samples(pc),a0
		lea	bpsong,a1
		clr.b	numtables
		cmp	#'v.',26(a1)
		bne.s	bpnotv2
		cmp.b	#'2',28(a1)
		bne.s	bpnotv2
		move.b	29(a1),numtables
bpnotv2:	move.l	#512,d0
		move	30(a1),d1
		moveq	#1,d2
		mulu	#4,d1
		subq	#1,d1
findhighest:	cmp	(a1,d0.w),d2
		bge.s	nothigher
		move	(a1,d0.w),d2
nothigher:	addq.l	#4,d0
		dbf	d1,findhighest
		move	30(a1),d1
		mulu	#16,d1
		move.l	#512,d0
		mulu	#48,d2
		add.l	d2,d0
		add.l	d1,d0
		add.l	#bpsong,d0
		move.l	d0,tables
		moveq	#0,d1
		move.b	numtables,d1
		lsl.l	#6,d1
		add.l	d1,d0
		move.l	#14,d1
		add.l	#32,a1
initloop:	move.l	d0,(a0)+
		cmp.b	#$ff,(a1)
		beq.s	bpissynth
		move	24(a1),d2
		mulu	#2,d2
		add.l	d2,d0
bpissynth:	add.l	#32,a1
		dbf	d1,initloop
		rts
bpmusic:	bsr.l	bpsynth
		subq.b	#1,arpcount
		moveq	#3,d0
		lea	bpcurrent(pc),a0
		move.l	#$dff0a0,a1
bploop1:	move.b	12(a0),d4
		ext	d4
		add	d4,(a0)
		tst.b	$1e(a0)
		bne.s	bplfo
		move	(a0),6(a1)
bplfo:		move.l	4(a0),(a1)
		move.w	8(a0),4(a1)
		tst.b	11(a0)
		bne.s	bpdoarp
		tst.b	13(a0)
		beq.s	not2
bpdoarp:	tst.b	arpcount
		bne.s	not0
		move.b	11(a0),d3
		move.b	13(a0),d4
		and	#240,d4
		and	#240,d3
		lsr	#4,d3
		lsr	#4,d4
		add	d3,d4
		add.b	10(a0),d4
		bsr.l	bpplayarp
		bra.s	not2
not0:		cmp.b	#1,arpcount 
		bne.s	not1
		move.b	11(a0),d3
		move.b	13(a0),d4
		and	#15,d3
		and	#15,d4
		add	d3,d4
		add.b	10(a0),d4
		bsr.l	bpplayarp
		bra.s	not2
not1:		move.b	10(a0),d4
		bsr.l	bpplayarp
not2:		lea	$10(a1),a1
		lea	$20(a0),a0
		dbf	d0,bploop1
		tst.b	arpcount
		bne.s	arpnotzero
		move.b	#3,arpcount
arpnotzero:	subq.b	#1,bpcount
		beq.s	bpskip1
		rts
bpskip1:	move.b	bpdelay,bpcount
bpplay:		bsr.s	bpnext
		move	dma,$dff096
		moveq	#3,d0
		move.l	#$dff0a0,a1
		moveq	#1,d1
		lea	bpcurrent(pc),a2
		lea	bpbuffer(pc),a5
bploop2:	btst	#15,(a2)
		beq.s	bpskip7
		bsr.l	bpplayit
bpskip7:	asl	#1,d1
		lea	$10(a1),a1
		lea	$20(a2),a2
		lea	$24(a5),a5
		dbf	d0,bploop2
		rts
bpnext:		clr	dma
		lea	bpsong,a0
		move.l	#$dff0a0,a3
		moveq	#3,d0
		moveq	#1,d7
		lea	bpcurrent(pc),a1
bploop3:	moveq	#0,d1
		move	bpstep,d1
		lsl	#4,d1
		move.l	d0,d2
		lsl.l	#2,d2
		add.l	d2,d1
		add.l	#512,d1
		move	(a0,d1.w),d2
		move.b	2(a0,d1.w),st
		move.b	3(a0,d1.w),tr
		subq	#1,d2
		mulu	#48,d2
		moveq	#0,d3
		move	30(a0),d3
		lsl	#4,d3
		add.l	d2,d3
		move.l	#$00000200,d4
		move.b	bppatcount,d4
		add.l	d3,d4
		move.l	d4,a2
		add.l	a0,a2
		moveq	#0,d3
		move.b	(a2),d3
		tst.b	d3
		bne.s	bpskip4
		bra.l	bpoptionals
bpskip4:	clr	12(a1)
		move.b	1(a2),d4
		and.b	#15,d4
		cmp.b	#10,d4
		bne.s	bp_do1
		move.b	2(a2),d4
		and.b	#240,d4
		bne.s	bp_not1
bp_do1:		add.b	tr,d3
		ext	d3
bp_not1:	move.b	d3,10(a1)
		lea	bpper(pc),a4
		lsl	#1,d3
		move	-2(a4,d3.w),(a1)
		bset	#15,(a1)
		move.b	#$ff,2(a1)
		moveq	#0,d3
		move.b	1(a2),d3
		lsr.b	#4,d3
		and.b	#15,d3
		tst.b	d3
		bne.s	bpskip5
		move.b	3(a1),d3
bpskip5: 	move.b	1(a2),d4
		and.b	#15,d4
		cmp.b	#10,d4
		bne.s	bp_do2
		move.b	2(a2),d4
		and.b	#15,d4
		bne.s	bp_not2
bp_do2:		add.b	st,d3
bp_not2:	cmp	#1,8(a1)
		beq.s	bpsamplechange
		cmp.b	3(a1),d3
		beq.s	bpoptionals
bpsamplechange:	move.b	d3,3(a1)
		or	d7,dma
bpoptionals: 	moveq	#0,d3
		moveq	#0,d4
		move.b	1(a2),d3
		and.b	#15,d3
		move.b	2(a2),d4
		cmp.b	#0,d3
		bne.s	notopt0
		move.b	d4,11(a1)
notopt0:	cmp.b	#1,d3
		bne.s	bpskip3
		move	d4,8(a3)
		move.b	d4,2(a1)
bpskip3:	cmp.b	#2,d3
		bne.s	bpskip9
		move.b	d4,bpcount
		move.b	d4,bpdelay
bpskip9:	cmpi.b	#3,d3
		bne.s	bpskipa
		tst.b	d4
		bne.s	bpskipb
		bset	#1,$bfe001
		bra.s	bpskip2
bpskipb:	bclr	#1,$bfe001
bpskipa:	cmp.b	#4,d3
		bne.s	noportup
		sub	d4,(a1)
		clr.b	11(a1)
noportup:	cmp.b	#5,d3
		bne.s	noportdn
		add	d4,(a1)
		clr.b	11(a1)
noportdn:	cmp.b	#6,d3
		bne.s	notopt6
		move.b	d4,bprepcount
notopt6:	cmp.b	#7,d3
		bne.s	notopt7
		subq.b	#1,bprepcount
		beq.s	notopt7
		move	d4,bpstep
notopt7:	cmp.b	#8,d3
		bne.s	notopt8
		move.b	d4,12(a1)
notopt8:	cmp.b	#9,d3
		bne.s	notopt9
		move.b	d4,13(a1)
notopt9:
bpskip2:	lea	$10(a3),a3
		lea	$20(a1),a1
		asl	#1,d7
		dbf	d0,bploop3
		addq.b	#3,bppatcount
		cmpi.b	#48,bppatcount
		bne.s	bpskip8
		move.b	#0,bppatcount
		addq	#1,bpstep
		lea	bpsong,a0
		move	30(a0),d1
		cmp	bpstep,d1
		bne.s	bpskip8
		move	#0,bpstep
bpskip8:	rts
bpplayit:	bclr	#15,(a2)
		tst.l	(a5)
		beq.s	noeg1
		moveq	#0,d3
		move.l	(a5),a4
		moveq	#7,d7
eg1loop:	move.l	4(a5,d3.w),(a4)+
		addq	#4,d3
		dbf	d7,eg1loop
noeg1:		move	(a2),6(a1)
		moveq.l	#0,d7
		move.b	3(a2),d7
		move.l	d7,d6
		lsl.l	#5,d7
		lea	bpsong,a3
		cmp.b	#$ff,(a3,d7.w)
		beq.s	bpplaysynthetic
		clr.l	(a5)
		clr.b	$1a(a2)
		clr	$1e(a2)
		add.l	#24,d7
		lsl.l	#2,d6
		move.l	#samples,a4
		move.l	-4(a4,d6),d4
		beq.s	bp_nosamp
		move.l	d4,(a1)
		move	(a3,d7),4(a1)
		move.b	2(a2),9(a1)
		cmpi.b	#$ff,2(a2)
		bne.s	skipxx
		move	6(a3,d7),8(a1)
skipxx: 	move	4(a3,d7),8(a2)
		moveq	#0,d6
		move	2(a3,d7),d6
		add.l	d6,d4
		move.l	d4,4(a2)
		cmp	#1,8(a2)
		bne.s	bpskip6
bp_nosamp:	move.l	#null,4(a2)
		bra.s	bpskip10
bpskip6:	move	8(a2),4(a1)
		move.l	4(a2),(a1)
bpskip10:	or	#$8000,d1
		move	d1,$dff096
		rts
bpplaysynthetic:move.b	#$1,$1a(a2)
		clr	$e(a2)
		clr	$10(a2)
		clr	$12(a2)
		move	22(a3,d7.w),$14(a2)
		addq	#1,$14(a2)
		move	14(a3,d7.w),$16(a2)
		addq	#1,$16(a2)
		move	#1,$18(a2)
		move.b	17(a3,d7.w),$1d(a2)
		move.b	9(a3,d7.w),$1e(a2)
		move.b	4(a3,d7.w),$1f(a2)
		move.b	19(a3,d7.w),$1c(a2)
		move.l	tables,a4
		moveq	#0,d3
		move.b	1(a3,d7.w),d3
		lsl.l	#6,d3
		add.l	d3,a4
		move.l	a4,(a1)
		move.l	a4,4(a2)
		move	2(a3,d7.w),4(a1)
		move	2(a3,d7.w),8(a2)
		tst.b	4(a3,d7.w)
		beq.s	bpadsroff
		move.l	tables,a4
		moveq.l	#0,d3
		move.b	5(a3,d7.w),d3
		lsl.l	#6,d3
		add.l	d3,a4
		moveq	#0,d3
		move.b	(a4),d3
		add.b	#128,d3
		lsr	#2,d3
		cmp.b	#$ff,2(a2)
		bne.s	bpskip99
		move.b	25(a3,d7.w),2(a2)
bpskip99:	moveq	#0,d4
		move.b	2(a2),d4
		mulu	d4,d3
		lsr	#6,d3
		move	d3,8(a1)
		bra.s	bpflipper
bpadsroff:	move.b	2(a2),9(a1)
		cmp.b	#$ff,2(a2)
		bne.s	bpflipper
		move.b	25(a3,d7.w),9(a1)
bpflipper:	move.l	4(a2),a4
		move.l	a4,(a5)
		moveq	#0,d3
		moveq	#7,d4
eg2loop:	move.l	(a4,d3.w),4(a5,d3.w)
		addq	#4,d3
		dbf	d4,eg2loop
		tst.b	17(a3,d7.w)
		beq.l	bpskip10
		tst.b	19(a3,d7.w)
		beq.l	bpskip10
		moveq	#0,d3
		move.b	19(a3,d7.w),d3
		lsr.l	#3,d3
		move.b	d3,$1c(a2)
		subq.l	#1,d3
eg3loop:	neg.b	(a4)+
		dbf	d3,eg3loop
		bra.l	bpskip10
bpplayarp:	lea	bpper(pc),a4
		ext	d4
		asl	#1,d4
		move	-2(a4,d4.w),6(a1)
		rts
bpsynth:	move.l	#3,d0
		lea	bpcurrent(pc),a2
		lea	$dff0a0,a1
		lea	bpsong,a3
		lea	bpbuffer(pc),a5
bpsynthloop:	tst.b	$1a(a2)
		beq.s	bpnosynth
		bsr.s	bpyessynth
bpnosynth:	lea	$24(a5),a5
		lea	$20(a2),a2
		lea	$10(a1),a1
		dbf	d0,bpsynthloop
		rts
bpyessynth:	moveq	#0,d7
		move.b	3(a2),d7
		lsl	#5,d7
		tst.b	$1f(a2)
		beq.s	bpendadsr
		subq	#1,$18(a2)
		bne.s	bpendadsr
		moveq	#0,d3
		move.b	8(a3,d7.w),d3
		move	d3,$18(a2)
		move.l	tables,a4
		move.b	5(a3,d7.w),d3
		lsl.l	#6,d3
		add.l	d3,a4
		move	$12(a2),d3
		moveq	#0,d4
		move.b	(a4,d3.w),d4
		add.b	#128,d4
		lsr	#2,d4
		moveq	#0,d3
		move.b	2(a2),d3
		mulu	d3,d4
		lsr	#6,d4
		move	d4,8(a1)
		addq	#1,$12(a2)
		move	6(a3,d7.w),d4
		cmp	$12(a2),d4
		bne.s	bpendadsr
		clr	$12(a2)
		cmp.b	#1,$1f(a2)
		bne.s	bpendadsr
		clr.b	$1f(a2)
bpendadsr:	tst.b	$1e(a2)
		beq.s	bpendlfo
		subq	#1,$16(a2)
		bne.s	bpendlfo
		moveq	#0,d3
		move.b	16(a3,d7.w),d3
		move	d3,$16(a2)
		move.l	tables,a4
		move.b	10(a3,d7.w),d3
		lsl.l	#6,d3
		add.l	d3,a4
		move	$10(a2),d3
		moveq	#0,d4
		move.b	(a4,d3.w),d4
		ext	d4
		ext.l	d4
		moveq	#0,d5
		move.b	11(a3,d7.w),d5
		tst.b	d5
		beq.s	bpnotx
		divs	d5,d4
bpnotx:		move	(a2),d5
		add	d4,d5
		move	d5,6(a1)
		addq	#1,$10(a2)
		move	12(a3,d7.w),d3
		cmp	$10(a2),d3
		bne.s	bpendlfo
		clr	$10(a2)
		cmp.b	#1,$1e(a2)
		bne.s	bpendlfo
		clr.b	$1e(a2)
bpendlfo:	tst.b	$1d(a2)
		beq.l	bpendeg
		subq	#1,$14(a2)
		bne.l	bpendeg
		tst.l	(a5)
		beq.s	bpendeg
		moveq.l	#0,d3
		move.b	24(a3,d7.w),d3
		move	d3,$14(a2)
		move.l	tables,a4
		move.b	18(a3,d7.w),d3
		lsl.l	#6,d3
		add.l	d3,a4
		move	$e(a2),d3
		moveq	#0,d4
		move.b	(a4,d3.w),d4
		move.l	(a5),a4
		add.b	#128,d4
		lsr.l	#3,d4
		moveq	#0,d3
		move.b	$1c(a2),d3
		move.b	d4,$1c(a2)
		add.l	d3,a4
		move.l	a5,a6
		add.l	d3,a6
		addq.l	#4,a6
		cmp.b	d3,d4
		beq.s	bpnexteg
		bgt.s	bpishigh
bpislow:	sub.l	d4,d3
		subq.l	#1,d3
bpegloop1a:	move.b	-(a6),d4
		move.b	d4,-(a4)
		dbf	d3,bpegloop1a
		bra.s	bpnexteg
bpishigh:	sub.l	d3,d4
		subq.l	#1,d4
bpegloop1b:	move.b	(a6)+,d3
		neg.b	d3
		move.b	d3,(a4)+
		dbf	d4,bpegloop1b
bpnexteg:	addq	#1,$e(a2)
		move	20(a3,d7.w),d3
		cmp	$e(a2),d3
		bne.s	bpendeg
		clr	$e(a2)
		cmp.b	#1,$1d(a2)
		bne.s	bpendeg
		clr.b	$1d(a2)
bpendeg:	rts

;************** donnees music

null:		dc.w	0
bpcurrent:	dc.w	0,0
		dc.l	null
		dc.w	1
		dc.b	0,0,0,0
		dc.w	0,0,0
		dc.w	0,0,0
		dc.b	0,0
		dc.b	0,0
		dc.b	0,0
		dc.w	0,0
		dc.l	null
		dc.w	1,0,0
		dc.w	0,0,0,0,0,0,0,0,0
		dc.w	0,0
		dc.l	null
		dc.w	1,0,0
		dc.w	0,0,0,0,0,0,0,0,0
		dc.w	0,0
		dc.l	null
		dc.w	1,0,0
		dc.w	0,0,0,0,0,0,0,0,0
bpstep:		dc.w	0
bppatcount:	dc.b	0
st:		dc.b	0
tr:		dc.b	0
bpcount:	dc.b	1
bpdelay:	dc.b	6
arpcount:	dc.b	1
bprepcount:	dc.b	1
numtables:	dc.b	0
		even
dma:		dc.w	0
tables:		dc.l	0
bpbuffer:	blk.b	144,0
		dc.w	6848,6464,6080,5760,5440,5120,4832,4576,4320,4064,3840,3616
		dc.w	3424,3232,3040,2880,2720,2560,2416,2288,2160,2032,1920,1808
		dc.w	1712,1616,1520,1440,1360,1280,1208,1144,1080,1016,0960,0904
bpper:		dc.w	0856,0808,0760,0720,0680,0640,0604,0572,0540,0508,0480,0452
		dc.w	0428,0404,0380,0360,0340,0320,0302,0286,0270,0254,0240,0226
		dc.w	0214,0202,0190,0180,0170,0160,0151,0143,0135,0127,0120,0113
		dc.w	0107,0101,0095,0090,0085,0080,0076,0072,0068,0064,0060,0057
samples:	blk.l	15,0

endif

;************** copper list

new_copper:	dc.l	$1800111,$1820000,$1840000,$1860000	;00
		dc.l	$1880000,$18a0000,$18c0000,$18e0000	;04
		dc.l	$1900000,$1920000,$1940000,$1960000	;08
		dc.l	$1980000,$19a0000,$19c0000,$19e0000	;12
		dc.l	$1a00000,$1a20000,$1a40000,$1a60fff	;16
		dc.l	$1a80000,$1aa0000,$1ac0000,$1ae0000	;20
		dc.l	$1b00000,$1b20000,$1b40000,$1b60000	;24
		dc.l	$1b80000,$1ba0000,$1bc0000,$1be0000	;28
;===============
		dc.w	$120,spr1/$ffff,$122,spr1
		dc.w	$124,spr2/$ffff,$126,spr2
		dc.l	$1280000,$12a0000,$12c0000,$12e0000
		dc.l	$1300000,$1320000,$1340000,$1360000
		dc.l	$1380000,$13a0000,$13c0000,$13e0000
;===============
		dc.l	$08e2881,$090fdd1,$0920028,$09400d8
		dc.l	$1005000,$1020000,$10400ff,$1080002
		dc.l	$10a0002
;===============
		dc.w	$e0,vide/$ffff,$e2,vide
chg1:		dc.w	$e4,bp1a/$ffff,$e6,bp1a+[51*48]
chg2:		dc.w	$e8,bp1a/$ffff,$ea,bp1a+[34*48]
chg3:		dc.w	$ec,bp1a/$ffff,$ee,bp1a+[17*48]
		dc.l	$2707fffe
ht_cop1:	blk.l	56,$1800000
		dc.l	$1800000
;===============
copb1:		blk.l	$d5*8	;bp_hi,bp_lo,pos,col0,col1,col2,col4,col8,col16
		dc.l	$fd07fffe
bs_cop1:	blk.l	56,$1800000
		dc.l	$1800111
		dc.l	-2

;************** copper list2

new_copper2:	dc.l	$1800111,$1820888,$1840fff,$1860fff	;00
		dc.w	$120,spr1/$ffff,$122,spr1
		dc.w	$124,spr2/$ffff,$126,spr2
		dc.l	$1280000,$12a0000,$12c0000,$12e0000
		dc.l	$1300000,$1320000,$1340000,$1360000
		dc.l	$1380000,$13a0000,$13c0000,$13e0000
;===============
		dc.l	$08e2881,$090fdd1,$0920028,$09400d8
		dc.l	$1002000,$1020001,$10400ff,$1080032
		dc.l	$10a0032
;===============
adr_bp2:	dc.w	$e0,bp1/$ffff,$e2,bp1+48
		dc.w	$e4,bp1/$ffff,$e6,bp1+96+48
		dc.l	$2707fffe
ht_cop2:	blk.l	56,$1800000
		dc.l	$1800000
copb2:		blk.l	20*4
		dc.l	$fd07fffe
bs_cop2:	blk.l	56,$1800000
		dc.l	$1800111
		dc.l	-2

;************** copper list3

new_copper3:	dc.l	$1800111,$1820888,$1840fff,$1860fff	;00
		dc.l	$1a00000,$1a20000,$1a40000,$1a60fff	;16
		dc.w	$120,spr1/$ffff,$122,spr1
		dc.w	$124,spr2/$ffff,$126,spr2
		dc.l	$1280000,$12a0000,$12c0000,$12e0000
		dc.l	$1300000,$1320000,$1340000,$1360000
		dc.l	$1380000,$13a0000,$13c0000,$13e0000
;===============
		dc.l	$08e2881,$090fdd1,$0920028,$09400d8
		dc.l	$1001000,$1020001,$10400ff,$1080002
		dc.l	$10a0002
;===============
		dc.w	$e0,bp1/$ffff,$e2,bp1
		dc.l	$9207fffe
ht_cop3:	blk.l	56,$1800000
		dc.l	$1800000
		dc.l	$9207fffe
bs_cop3:	blk.l	56,$1800000
		dc.l	$1800111
		dc.l	-2

;************** donnees divers

		even
spr:		dc.l	%11110111101111011110111101011110
		dc.l	%10000100101001010000100101010010
		dc.l	%10000100101111011110111101011110
		dc.l	%10000100101010000010100101010100
		dc.l	%11110111101001011110100101010010
degra:		dc.w	$b85,$c96,$da7,$eb8,$fc9,$fda,$feb,$ffc,$ffd,$ffe
		dc.w	$eff,$dff,$cff,$bef,$adf,$9cf,$8be,$7ad,$69c,$58b
cop_adr:	dc.l	ht_cop3+2
		dc.l	bs_cop3+2
old_touche:	dc.b	0
;===============
		even
bp_scr:		dc.l	bp1a+$10000
pos_sin:	dc.w	0
sin:		dc.w	052,052,052,052,052,052,052,051,051,051
		dc.w	051,050,050,050,050,049,049,048,048,047
		dc.w	047,046,046,045,045,044,044,043,042,042
		dc.w	041,041,040,039,038,038,037,036,035,035
		dc.w	034,033,032,031,031,030,029,028,027,027
		dc.w	026,025,024,023,023,022,021,020,019,019
		dc.w	018,017,016,015,015,014,013,013,012,011
		dc.w	010,010,009,009,008,007,007,006,006,005
		dc.w	005,004,004,003,003,003,002,002,002,001
		dc.w	001,001,001,001,000,000,000,000,000,000
		dc.w	000,000,000,000,000,000,001,001,001,001
		dc.w	001,002,002,002,003,003,003,004,004,005
		dc.w	005,006,006,007,007,008,009,009,010,010
		dc.w	011,012,013,013,014,015,015,016,017,018
		dc.w	019,019,020,021,022,023,023,024,025,026
		dc.w	027,027,028,029,030,031,031,032,033,034
		dc.w	035,035,036,037,038,038,039,040,041,041
		dc.w	042,042,043,044,044,045,045,046,046,047
		dc.w	047,048,048,049,049,050,050,050,050,051
		dc.w	051,051,051,052,052,052,052,052,052,052
		blk.w	200*3
;===============
pos_ht:		dc.w	0
pos_bs:		dc.w	2
tx_col_ht:	dc.w	$001,$011,$010,$110,$100,$101
col_ht:		blk.w	6*15*2

;************** donnees colors

col1:		;vert
		blk.w	5,$242
		dc.w	$242,$353,$464,$575,$686,$797,$8a8,$9b9
		dc.w	$aca,$bdb,$cec,$dfd,$cec,$bdb,$aca,$9b9
		dc.w	$8a8,$797,$686,$575,$464,$353,$242
		blk.w	nb+1,$242
		dc.w	$242,$353,$464,$575,$686,$797,$8a8,$9b9
		dc.w	$aca,$bdb,$cec,$dfd,$cec,$bdb,$aca,$9b9
		dc.w	$8a8,$797,$686,$575,$464,$353,$242
		blk.w	nb,$242
		dc.w	$242,$353,$464,$575,$686,$797,$8a8,$9b9
		dc.w	$aca,$bdb,$cec,$dfd,$cec,$bdb,$aca,$9b9
		dc.w	$8a8,$797,$686,$575,$464,$353,$242
col2:		;bleu 2
		dc.w	$789,$678,$567,$456,$345,$234
		blk.w	nb,$234
		dc.w	$234,$345,$456,$567,$678,$789,$89a,$9ab
		dc.w	$abc,$bcd,$cde,$def,$cde,$bcd,$abc,$9ab
		dc.w	$89a,$789,$678,$567,$456,$345,$234
		blk.w	nb,$234
		dc.w	$234,$345,$456,$567,$678,$789,$89a,$9ab
		dc.w	$abc,$bcd,$cde,$def,$cde,$bcd,$abc,$9ab
		dc.w	$89a,$789,$678,$567,$456,$345,$234
		blk.w	nb+1,$234
		dc.w	$234,$345,$456,$567,$678,$789,$89a,$9ab
		dc.w	$abc,$bcd,$cde,$def,$cde,$bcd,$abc,$9ab
		dc.w	$89a,$789,$678,$567,$456,$345,$234
col3:		;beige
		dc.w	$edc,$dcb,$cba,$ba9
		dc.w	$a98,$987,$876,$765,$654,$543,$432
		blk.w	nb+1,$432
		dc.w	$432,$543,$654,$765,$876,$987,$a98,$ba9
		dc.w	$cba,$dcb,$edc,$fed,$edc,$dcb,$cba,$ba9
		dc.w	$a98,$987,$876,$765,$654,$543,$432
		blk.w	nb,$432
		dc.w	$432,$543,$654,$765,$876,$987,$a98,$ba9
		dc.w	$cba,$dcb,$edc,$fed,$edc,$dcb,$cba,$ba9
		dc.w	$a98,$987,$876,$765,$654,$543,$432
		blk.w	nb,$432
		dc.w	$432,$543,$654,$765,$876,$987,$a98,$ba9
		dc.w	$cba,$dcb,$edc,$fed,$edc,$dcb,$cba,$ba9
		dc.w	$a98,$987,$876,$765,$654,$543,$432
col4:		;rose
		dc.w	$a89,$b9a
		dc.w	$cab,$dbc,$ecd,$fde,$ecd,$dbc,$cab,$b9a
		dc.w	$a89,$978,$867,$756,$645,$534,$423
		blk.w	nb,$423
		dc.w	$423,$534,$645,$756,$867,$978,$a89,$b9a
		dc.w	$cab,$dbc,$ecd,$fde,$ecd,$dbc,$cab,$b9a
		dc.w	$a89,$978,$867,$756,$645,$534,$423
		blk.w	nb+1,$423
		dc.w	$423,$534,$645,$756,$867,$978,$a89,$b9a
		dc.w	$cab,$dbc,$ecd,$fde,$ecd,$dbc,$cab,$b9a
		dc.w	$a89,$978,$867,$756,$645,$534,$423
col5:		;bl3
		dc.w	$324,$435,$546,$657,$768,$879,$98a,$a9b
		dc.w	$bac,$cbd,$dce,$edf,$dce,$cbd,$bac,$a9b
		dc.w	$98a,$879,$768,$657,$546,$435,$324
		blk.w	nb,$324
		dc.w	$324,$435,$546,$657,$768,$879,$98a,$a9b
		dc.w	$bac,$cbd,$dce,$edf,$dce,$cbd,$bac,$a9b
		dc.w	$98a,$879,$768,$657,$546,$435,$324
		blk.w	nb,$324
		dc.w	$324,$435,$546,$657,$768,$879,$98a,$a9b
		dc.w	$bac,$cbd,$dce,$edf,$dce,$cbd,$bac,$a9b
		dc.w	$98a,$879,$768,$657,$546,$435,$324

;************** donnees scroll

		even
compt:		dc.l	scrtxt
pos_txt:	dc.l	txt
nb_scr:		dc.b	4
tps_scr:	dc.b	0
;===============
		even
adr_font:	dc.l	li1+00,li1+02,li1+04,li1+06,li1+08
		dc.l	li1+10,li1+12,li1+14,li1+16,li1+18
		dc.l	li1+20,li1+22,li1+24,li1+26,li1+28
		dc.l	li1+30,li1+32,li1+34,li1+36,li1+38
		dc.l	li2+00,li2+02,li2+04,li2+06,li2+08
		dc.l	li2+10,li2+12,li2+14,li2+16,li2+18
		dc.l	li2+20,li2+22,li2+24,li2+26,li2+28
		dc.l	li2+30,li2+32,li2+34,li2+36,li2+38
		dc.l	li3+00,li3+02,li3+04,li3+06,li3+08
		dc.l	li3+10,li3+12,li3+14,li3+16,li3+18
		dc.l	li3+20,li3+22,li3+24,li3+26,li3+28
		dc.l	li3+30,li3+32,li3+34,li3+36,li3+38
ordre:		dc.b	'abcdefghijklmnopqrst'
		dc.b	'uvwxyz 0123456789:.,'
		dc.b	'!?"-()'
ordre2:		dc.b	'abcdefghijklmnopqrstuvwxyz '
		dc.b	'0123456789()[]<>=+-/*!?&.,'
		dc.b	"'",'"A'
;===============
scrtxt:		dc.b	'yoohoo hords of fans !!!'
		dc.b	'                   '
		dc.b	'angels - defjam -  are back with a new crack :'
		dc.b	'                   '
		dc.b	'botties from krysalis'
		dc.b	'                   '
		dc.b	'write us at: walch bp 10 , 4504 obercorn , luxemburg'
		dc.b	'        defjam : po box 138 , 6460 na kerkrade , holland       '
		dc.b	'           plk : a 007543 , 4100 duisburg 18 , germany'
		dc.b	'         john tjorn , pobox 2568 , 4300 sandnes , norway'
		dc.b	'                  bp 2 , 8830 beder , denmark'
		dc.b    '         greetings to all our friend and contacts'
		dc.b	'                   '
		dc.b	'see ya soon in our next productions'
		dc.b	'                   '
		dc.b	'                   ',0
;===============
		even
train:		blk.w	4,-1		;that means: no trainer

;if option on/off 	: dc.w	line,0,0,n  n=-1:on  n=-2:off
;if option with numbers	: dc.w	line,min,max,begin (line>=1)
;		dc.w	08,00,00,-1	;l08,opt on/off,begin=on
;		dc.w	09,00,00,-2	;l09,opt on/off,begin=off
;		dc.w	10,01,11,02	;l10,opt numbers max=11,min=1,beg=2

;you can put max 10 options (coz there are only 10 function keys!!)
;and at the end, you put:	blk.w	4,-1
;if you want no option, you directly insert:	blk.w	4,-1 (as in this example)

;=> the result of the trainer option is where you put it !!
;=> this means, for example, that if you write this:
;=> train:	dc.w	08,00,00,-1
;=>		dc.w	09,00,00,-2
;=>		dc.w	10,01,11,02
;=> when leaving the intro (after modifing the options) it is:
;=> train:	dc.w	08,00,00,-2 <---- on turned to off
;=>		dc.w	09,00,00,-1 <---- off turned to on
;=>		dc.w	10,01,11,04 <---- 02 turned to 04
;=> so you just have to write :
;=>		move	train+6+[X*8](pc),d0
;=> and d0 contains the result of the option number X (X>=0)

;===============

txt:		dc.b	'****************************************';01
		dc.b	'*                                      *';02
		dc.b	'*     a n g e l s    d e f j a m       *';03
		dc.b	'*                                      *';04
		dc.b	'*    t h e   b e s t   c o o p  ! !    *';05
		dc.b	'*                                      *';06
		dc.b	'*                                      *';07
		dc.b	'*        present a new release         *';08
		dc.b	'*                                      *';09
		dc.b	'*               name                   *';10
		dc.b	'*                                      *';11
		dc.b	'*                                      *';12
		dc.b	'*  cracked by .............mr.perfect  *';13
		dc.b	'*                                      *';14
		dc.b	'*  original supplied by ....... stone  *';15
		dc.b	'*                                      *';16
		dc.b	'*                                      *';17
		dc.b	'* press left mouse button to continue. *';18
		dc.b	'*                                      *';19
		dc.b	'****************************************';20

		dc.b	'****************************************';01
		dc.b	'*             usa boards               *';02
		dc.b	'* amiga east ............ 804 499 2266 *';03
		dc.b	'* wreck house ........... 201 751 2175 *';04
		dc.b	'* maniacs madhouse ...... 319 355 7857 *';05
		dc.b	'* panic zone ............ 617 449 4706 *';06
		dc.b	'* vertigo ............... 813 831 8466 *';07
		dc.b	'* the guild canada ...... 418 681 4910 *';08
		dc.b	'*                                      *';09
		dc.b	'*             euro boards              *';10
		dc.b	'* reign in blood ..... +49 203 4060981 *';11
		dc.b	'* the dutch pirate ..... +31 117 23666 *';12
		dc.b	'* timezone lux ......... +352 58 39 01 *';13
		dc.b	'* dulcet tones ....... +44 382 739 192 *';14
		dc.b	'* software house ...... +45 69 750 750 *';15
		dc.b	'* insider bbs ......... +39 564 415697 *';16
		dc.b	'*                                      *';17
		dc.b	'*                                      *';18
		dc.b	'*                                      *';19
		dc.b	'****************************************';20

;you can put as many pages as you want, but they all must be 40*20 chars,
;and after the last page, you insert:
		dc.b	-1
;if you want no page after the intro, you direcly insert:	dc.b	-1

;************** donnees finales

		even
font:		incbin	'vf.1bp'
li1:		= font
li2:		= li1+[40*16]
li3:		= li2+[40*16]
font2:		incbin	'vcc.1bp'
bpsong:		incbin	'bp.commandohi'
end:		= bpsong+[end-bpsong*music]+4 & -4
;you can use every brian postam sound monitor module !!
* END *
