
	section "code",code_p
	
start	movem.l	d0-a6,-(a7)			;save regs.

	bsr.w	mt_init				;init sound
	bsr.w	init_drawsample

; GET OLD COPPERLIST

	move.l	4.w,a6
	lea	gfxname(pc),a1
	jsr	-408(a6)
	move.l	d0,a1
	move.l	38(a1),oldcopper
	jsr	-414(a6)
	
; SAVE SYSTEM

	lea	$dff000,a6
	move.w	$1c(a6),d0
	or.w	#$8000,d0		;set 'setbit'
	move.w	d0,oldintar
	move.l	$6c.w,oldvblanc		;save system vblanc
	move.w	#$7fff,$9a(a6)		;stop all system-things

; INIT LEERSPRITES

	lea	spritecop,a0
	move.l	#leersprite,d0
	moveq	#7,d7
.sloop	move.w	d0,6(a0)
	swap	d0
	move.w	d0,2(a0)
	swap	d0
	addq.l	#8,a0
	dbf	d7,.sloop


	move.l	#newcopper,$80(a6)		;start copper
	move.w	#$83f0,$96(a6)
	move.l	#newint,$6c.w
	move.w	#$c020,$9a(a6)			;start vblanc

buttwait

	bsr.b	drawsample
	
	btst	#6,$bfe001
	bne.b	buttwait

	bsr.w	mt_end				;sound ende

	move.w	#$7fff,$9a(a6)
	move.l	oldvblanc(pc),$6c.w
	move.w	oldintar(pc),$9a(a6)		;start system vblanc
	move.w	#$400,$96(a6)			;clr blitternasty bit
	move.l	oldcopper(pc),$80(a6)		;save systemcopper
nomenu
	movem.l	(a7)+,d0-a6			;get regs.
	moveq	#0,d0				;no error return
	rts					;say bye bye !!!!

;------------------------------------------------------------------------------
;--- INTERUPT HANDLER ---------------------------------------------------------
;------------------------------------------------------------------------------

newint
	movem.l	d0-a6,-(a7)
	lea	$dff000,a6
	move.w	#$20,$9c(a6)			;intreq löschen
	bsr.w	mt_music
	bsr.w	checksound
	movem.l	(a7)+,d0-a6
	rte

;------------------------------------------------------------------------------
;--- DRAW SAMPLE --------------------------------------------------------------
;------------------------------------------------------------------------------
; WRITTEN IN 1991/92 BY MC68000/TECH ------------------------------------------
;------------------------------------------------------------------------------

viewlength=320			;no. of samples/voice
screenbreite=40			;bytes
shifter=3			;shifter for ysize (lsr.w) 
doubley=0			;double y pixel (1=an)
xyswap=0			;swap x and y

; GENERATE MULTIPLIKATIONTABELLE FÜR WAVE_SHOW

init_drawsample
	lea	multab(pc),a0
	moveq	#0,d0
	move.w	#255,d7
.wloop	move.w	d0,(a0)+
	add.w	#screenbreite,d0
	dbf	d7,.wloop			;create multab
	rts

drawsample
	moveq	#-1,d0
waitraster
	cmp.b	6(a6),d0
	bne.b	waitraster

; TRIPPLE BUFFERING

	lea	screen(pc),a0
	movem.l	(a0),d0-d2
	movem.l	d0-d1,4(a0)
	move.l	d2,(a0)

; SHOW 1.SCREEN 

	lea	planecop,a0
	move.w	d2,6(a0)
	swap	d2
	move.w	d2,2(a0)

; CLEAR 2.SCREEN

.wb	btst	#14,2(a6)
	bne.b	.wb
	move.l	#$01000000,$40(a6)
	move.w	#0,$66(a6)
	move.l	d0,$54(a6)
	move.w	#256*64+[screenbreite/2],$58(a6)
	move.l	d1,a1
	
; DRAW 3.SCREEN

	lea	multab(pc),a0
	lea	mt_chan1temp(pc),a2		;adresse st-structur
	lea	ss_sample1(pc),a4		;adresse showsample
	moveq	#0,d5				;y adder
	moveq	#0,d3				;x start
	bsr.b	.drawit

	lea	48(a2),a2			;adresse st-structur
	lea	30(a4),a4			;adresse showsample
	moveq	#64,d5
	moveq	#0,d3				;x start
	bsr.b	.drawit

	lea	48(a2),a2			;adresse st-structur
	lea	30(a4),a4			;adresse showsample
	move.w	#128,d5
	moveq	#0,d3
	bsr.b	.drawit

	move.w	#192,d5
	moveq	#0,d3
	lea	48(a2),a2			;adresse st-structur
	lea	30(a4),a4			;adresse showsample

; ZEICHNEN --------------------------------------------------------------------

.drawit
	moveq	#0,d0
	tst.w	10(a4)				;neuer ausschlag ???
	beq.b	.nonewaus

	move.l	14(a4),(a4)			;sample adress
	clr.w	4(a4)				;showadder
	move.w	18(a4),6(a4)			;period
	move.w	20(a4),8(a4)			;samplelenght
	clr.w	10(a4)				;clr anschlag
.nonewaus
	move.w	4(a4),d0			;showadder
	add.w	6(a4),d0			;add period
	move.w	d0,4(a4)			;new showadder sichern
	cmp.w	8(a4),d0			;showadder > samplelenght
	blo.b	.nolenght

	cmp.w	#2,28(a4)			;check replenght
	blo.b	.noloop				;<=2 (=kein loop) ???
	move.l	24(a4),(a4)			;set loopstart	
	move.w	28(a4),d1			;looplenght
	sub.w	#viewlength,d1
	move.w	d1,8(a4)			;=new samplelenght
	move.l	(a4),a3
	clr.w	4(a4)				;show adder = 0
	bra.b	.nolenght	
.noloop
	lea	leersample(pc),a3
	move.l	a3,(a4)				;sampleadress = leersample
	clr.l	4(a4)				;showadder & viewadder = 0
	clr.w	8(a4)				;samplelenght = 0
	bra.b	.newlenght
.nolenght
	move.l	(a4),a3				;sampleadress
	add.l	d0,a3				;add showadder
.newlenght
	moveq	#64,d4				;max volume
	sub.b	19(a2),d4			;act.vol. - max vol.
	add.w	d4,d4

	if viewlength<=128
	moveq	#viewlength-1,d7		;anzahl samples
	else
	move.w	#viewlength-1,d7
	endc
	
	move.w	#128,d6				;sample + screenadder 
.drawloop
	moveq	#0,d1				
	move.b	(a3)+,d1			;sample
	ext.w	d1				;sample byte auf wordsize
	beq.w	.addready			;= 0 ???
	bpl.b	.ispos				;ist positiv

	add.w	d4,d1				;add volume
	ble.b	.addready
	moveq	#0,d1
	bra.b	.addready
.ispos
	sub.w	d4,d1				;sub volume
	bge.b	.addready
	moveq	#0,d1

.addready
	add.w	d6,d1

	if shifter>0
	lsr.w	#shifter,d1
	endc

	move.w	d3,d0				;x
	addq.w	#1,d3				;x + 1
	add.w	d5,d1				;y adder

	if xyswap=1
	exg	d0,d1
	endc

	cmp.w	#255,d1
	bcc.b	.nodraw

	move.w	d0,d2
	lsr.w	#3,d0
	add.w	d1,d1
	add.w	(a0,d1.w),d0
	not.w	d2
	bset	d2,(a1,d0.w)			;set pixel in plane
	if doubley=1
	if screenbreite>127
	add.w	#screenbreite,d0
	bset	d2,(a1,d0.w)
	else
	bset	d2,screenbreite(a1,d0.w)
	endc
	endc

.nodraw	
	dbf	d7,.drawloop
	rts

; AUSWETUNG (ÜBER VBLANC NACH SOUNDREPLAYER) ----------------------------------

checksound
	move.b	mt_counter(pc),d0
	bne.b	.nochange			;mt_counter = 0 -> new note

	lea	mt_chan1temp(pc),a0		;adresse st-structur
	lea	ss_sample1(pc),a1		;adresse showsample
	lea	mt_periodtable(pc),a2
	lea	sample_rate(pc),a3
	moveq	#48,d0
	moveq	#30,d1
	moveq	#35*2,d4
	moveq	#3,d7
.checkit
	tst.w	(a0)
	beq.b	.nomodify
	move.w	(a0),10(a1)			;save anschlag
	move.l	4(a0),14(a1)			;sampleadress
	move.w	16(a0),d3			;period
	move.w	#viewlength,d5
	moveq	#0,d2
.checkloop
	cmp.w	(a2,d2.w),d3
	bge.b	.leavecheckloop
	addq.w	#2,                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      