move.l #start,$80
	trap #0             
	rts 

start:
	move.w #%0000000111100000,$dff096
	lea copper,a0 
	move.l a0,$dff080
	clr.w $dff088
	move.w #%1000010111000000,$dff096

clearscskj:
	move #16800,d0
	move.l #$70000,a1
cloop:
	move #0,(a1)+
	dbra d0,cloop

	jsr init 
	jmp stirr

scroll:
	move.l #$70000,$dff050 
	move.l #$70000-2,$dff054
	move #32,$dff064
	move #32,$dff066
	move.l #$ffffffff,$dff044
	move fart1,$dff040
	move #%0000000000000000,$dff042       
	move #%0001000101011000,$dff058
	jsr waitblit

	move.l #$715e0,$dff050 
	move.l #$715e0-2,$dff054
	move #%0001000101011000,$dff058
	jsr waitblit

	move.l #$72bc0,$dff050 
	move.l #$72bc0-2,$dff054
	move #%0001000101011000,$dff058
	jsr waitblit
	rts

waitblit:
	btst #14,$dff002
	bne waitblit   
	rts

sync:
	move.l $dff004,d0
	ror.l #8,d0
	cmp #300,d0
	bne sync    
	jsr scroll

plasert:
	add #1,teller
	move teller,d0
	move fart2,d1
	cmp d0,d1
	bne test
	jsr txt 
	move #0,teller

test:
	btst #6,$bfe001
	bne sync 

stopp:
	move.l #$22f8,$dff080
	clr.w $dff088
	move.w #%1000010111100000,$dff096   
	move.l #$fc07fa,$80
	move #0,SR 
	bchg	#1,$bfe001
	rts

copper:
	DC.W	$008E,$2C81
	DC.W	$0090,$48f1

	DC.W	$0092,$0038
	DC.W	$0094,$00d0

Hi1:	DC.W	$00E0,$0005
Lo1:	DC.W	$00E2,$0000
Hi2:	DC.W	$00E4,$0005
Lo2:	DC.W	$00E6,$1F40
Hi3:	DC.W	$00E8,$0005
Lo3:	DC.W	$00EA,$3E80
;Hi4:	DC.W	$00EC,$0004
;Lo4:	DC.W	$00EE,$5DC0
;Hi5:	DC.W	$00F0,$0004
;Lo5:	DC.W	$00F2,$7D00

	DC.W	$100,$3200
	DC.W	$102,$00

MODULO:	DC.W	$108,0
	DC.W	$10A,0

PIC_COLORS:
DC.W	$180,$000,$182,$fff,$184,$000,$186,$da0
DC.W	$188,$b60,$18A,$830,$18C,$610,$18E,$400
DC.W	$190,$000,$192,$000,$194,$000,$196,$000
DC.W	$198,$000,$19A,$000,$19C,$000,$19E,$000
DC.W	$1A0,$000,$1A2,$000,$1A4,$000,$1A6,$000
DC.W	$1A8,$000,$1AA,$000,$1AC,$000,$1AE,$000
DC.W	$1B0,$000,$1B2,$000,$1B4,$000,$1B6,$000
DC.W	$1B8,$000,$1BA,$000,$1BC,$000,$1BE,$000

dc.w	$f221,$fffe,$180,$ff0
dc.w	$f521,$fffe,$180,$000

    dc.w $008e,$1e71   
    dc.w $0090,$35f1
    dc.w $0092,$0038
    dc.w $0094,$00d0
    dc.w $100,$0000   
palcopper:
	dc.w $ffe1,$fffe,$01fe,$0000,$0011,$fffe

dc.w $0a01,$ff00
   dc.w $092,$30
   dc.w $094,$d0 
   dc.w $00e0,$0007
   dc.w $00e2,$0000
   dc.w $00e4,$0007
   dc.w $00e6,$15e0
   dc.w $00e8,$0007
   dc.w $00ea,$2bc0
   dc.w $100,$3200
   dc.w $102,$55
   dc.w $108,$26
   dc.w $10a,$26

Fontcolors:
dc.w $180,$000,$182,$540,$184,$650,$186,$760
dc.w $188,$870,$18a,$980,$18c,$a90,$18e,$a91

	dc.w $320,$320

sett:
	move.l #font,d0                        ;p1    
	add.l d1,d0
	move.l d0,$dff050 
	move.l #$70000+42+80,$dff054
	move #36,$dff064
	move #36+40,$dff066
	move.l #$ffffffff,$dff044
	move #$09f0,$dff040
	move #%0000000000000000,$dff042       
	move #2050,$dff058	;h0yde pa font??(BPlane1)
	jsr waitblit

	move.l #font,d0
	add.l #6640,d0                     ;font/ant. bitpl
	add.l d1,d0
	move.l d0,$dff050 
	move.l #$715e0+42+80,$dff054
	move #2050,$dff058	;h0yde pa font??(BPlane2)
	jsr waitblit

	move.l #font,d0
	add.l #13280,d0                     ;font/ant. bitpl
	add.l d1,d0
	move.l d0,$dff050 
	move.l #$72bc0+42+80,$dff054
	move #2050,$dff058	;h0yde pa font??(BPlane3)
	jsr waitblit
	rts


init:
	lea text,a0
	lea bdata,a1
	rts       

txt:
	clr.l d0
	clr.l d1        

	lea bdata,a1
	move.b (a0)+,d0 
	move.b d0,d1
	cmp.b #$20,d1           ; sjekker space
	beq videre 
	cmp.b #$0,d1            ; sjekker slutt 
	beq init
punktum:
	cmp.b #$2e,d1
	bne skraa
	move #5292,d1
	jmp fertig     
skraa:
	cmp.b #$2a,d1
	bne utegn
	move #5280,d1
	jmp fertig
utegn:
	cmp.b #$21,d1
	bne tfart
	move #5296,d1
	jmp fertig

tfart:
	cmp.b #$31,d1
	bne tfart2
	move #$f9f0,fart1
	move #32,fart2  
	jmp txt
tfart2:
	cmp.b #$32,d1
	bne tfart3
	move #$c9f0,fart1
	move #8,fart2
	jmp txt      

tfart3:
	cmp.b #$33,d1
	bne bokstaver
	move #$89f0,fart1
	move #4,fart2
	jmp txt      

bokstaver:
	sub.b #$61,d1
	add d1,d1
	add d1,a1
	move (a1),d1 

fertig:
	jsr sett
videre:
	rts   

text:
;	dc.b '1         '
	dc.b '3this is      1the giants   3 '
	dc.b 'publishing their latest intro!  '
	dc.b 'the brain behind this is 2  thunder cat and mr.pride  '
	dc.b '  3 '
	dc.b ' credits about this intro! '
	dc.b ' 2 coding by thunder cat and mr.pride '
        dc.b ' ...  grafix made by dr.venom ...  '
	dc.b 'music by gladiator/it ... scroll routine by jilsoft of'
	dc.b ' it ... font by alcatraz ...3.........................'
	dc.b ' '
	dc.b ' '
	dc.b ' '
	dc.b ' '
	dc.b ' '
	dc.b '       '
	dc.b '3greetings in no order to '
	dc.b '         2it!   '
	dc.b '         3crush!    '
	dc.b '         opec   '
	dc.b ' 1freedom force         '
	dc.b '        2bcc        3'
	dc.b ' wizcat     '
	dc.b ' softaid    '
	dc.b ' new wave    '
	dc.b ' ecc    '
	dc.b ' cpu     '
	dc.b ' black bytes     '
	dc.b ' dire fist    '
	dc.b ' 1random fashion          '
	dc.b '  1zkf           3 '
	dc.b ' northpoint   '
	dc.b ' micro mission    '
	dc.b ' hifi    '
	dc.b ' electrobugs    '
	dc.b ' hawks   '
	dc.b ' tronic   '
	dc.b ' vhs 1149   '
	dc.b ' cryptoburners   '
	dc.b ' taw   '
	dc.b ' f.a.m.   '
	dc.b ' tommy   '
	dc.b ' raw deal inc.   '
	dc.b ' mr. nasty   '
	dc.b ' cst  '
	dc.b ' the disk rapers   '
	dc.b ' the band   '
	dc.b ' tas   '
	dc.b ' the moonpredators   '
	dc.b ' '
	dc.b ' '
	dc.b ' '
	dc.b ' '
	dc.b ' '
	dc.b ' '
	dc.b '         plus all the people we may have forgotten !   '
	dc.b '                               ' 

	dc.b 0,0
	even         

bdata:
	dc.w 0,4,8,12,16,20,24,28,32,36
	dc.w 1320,1324,1328,1332,1336,1340,1344,1348,1352,1356
	dc.w 2640,2644,2648,2652,2656,2660,2664,2668,2672,2676

	teller: dc.w 0
	fart1:  dc.w $f9f0
	fart2:  dc.w 32


font=$60000
bitmap=$50000



stirr:
;*********************************
;* SoundTracker VI - Playroutine *
;*                               *
;* Improved by Unknown of D.O.C  *
;* for SoundTracker IV and VI... *
;*********************************

mt_speed=$1f4

bsr.s	mt_init
move.w	#$4000,$dff09a
move.l	$00006c,mt_oldirq+2
move.l	#mt_newirq,$00006c
move.w	#$c000,$dff09a

mt_wait:
btst	#6,$bfe001
jsr     sync

move.w	#$000f,$dff096
move.w	#$4000,$dff09a
move.l	mt_oldirq+2,$00006c
move.w	#$c000,$dff09a
clr.l	d0
rts

mt_init:
move.l	#mt_snd1,mt_sample1
move.l	#mt_snd2,mt_sample2
move.l	#mt_snd3,mt_sample3
move.l	#mt_snd4,mt_sample4
move.l	#mt_snd5,mt_sample5
move.l	#mt_snd6,mt_sample6
move.l	#mt_snd7,mt_sample7
move.l	#mt_snd8,mt_sample8
move.l	#mt_snd9,mt_sample9
move.l	#mt_snda,mt_sample10
move.l	#mt_sndb,mt_sample11
move.l	#mt_sndc,mt_sample12
move.l	#mt_sndd,mt_sample13
move.l	#mt_snde,mt_sample14
move.l	#mt_sndf,mt_sample15
move.l	#mt_sample1,a0
clr.l	d0
mt_clear:
move.l	(a0,d0),a1
clr.l	(a1)
addq	#4,d0
cmp.l	#$3c,d0
bne.s	mt_clear

move.w	#0,$dff0a8
move.w	#0,$dff0b8
move.w	#0,$dff0c8
move.w	#0,$dff0d8
clr.l	mt_partnrplay
clr.l	mt_partnote
clr.l	mt_partpoint

move.b	mt_muzakdata+$1d6,mt_maxpart+1
move.b	mt_muzakdata+$1d7,mt_kn1+1
rts

mt_newirq:
movem.l	d0-d7/a0-a6,-(a7)
bsr.s	mt_music
movem.l	(a7)+,d0-d7/a0-a6
mt_oldirq:
jmp	$000000

mt_music:
addq.l	#1,mt_counter
mt_cool:
cmp.l	#6,mt_counter
bne.s	mt_notsix
clr.l	mt_counter
bra.L	mt_rout2

mt_notsix:
lea	mt_aud1temp,a6
tst.b	3(a6)
beq.s	mt_arp1
move.l	#$dff0a0,a5		
bsr.s	mt_arprout

mt_arp1:
lea	mt_aud2temp,a6
tst.b	3(a6)
beq.s	mt_arp2
move.l	#$dff0b0,a5
bsr.s	mt_arprout

mt_arp2:
lea	mt_aud3temp,a6
tst.b	3(a6)
beq.s	mt_arp3
move.l	#$dff0c0,a5
bsr.s	mt_arprout

mt_arp3:
lea	mt_aud4temp,a6
tst.b	3(a6)
beq.s	mt_arp4
move.l	#$dff0d0,a5
bra.s	mt_arprout
mt_arp4:
rts

mt_arprout:
tst.w	24(a6)
beq.s	mt_noslide

clr.w	d0
move.b	25(a6),d0
lsr.b	#4,d0
tst.b	d0
beq.s	mt_voldwn2
bsr.L	mt_pushvol1
bra.s	mt_noslide

mt_voldwn2:
clr.w	d0
move.b	25(a6),d0
bsr.L	mt_pushvol2

mt_noslide:
move.b	2(a6),d0
and.b	#$0f,d0
tst.b	d0
beq.L	mt_arpegrt
cmp.b	#3,d0
beq.L	mt_arpegrt
cmp.b	#4,d0
beq.L	mt_arpegrt
cmp.b	#5,d0
beq.L	mt_arpegrt
cmp.b	#1,d0
beq.s	mt_portup
cmp.b	#6,d0
beq.s	mt_portup
cmp.b	#7,d0
beq.s	mt_portup
cmp.b	#8,d0
beq.s	mt_portup
cmp.b	#2,d0
beq.s	mt_portdwn
cmp.b	#9,d0
beq.s	mt_portdwn
cmp.b	#10,d0
beq.s	mt_portdwn
cmp.b	#11,d0
beq.s	mt_portdwn
cmp.b	#13,d0
beq.s	mt_volup
rts

mt_portup:
clr.w	d0
move.b	3(a6),d0
sub.w	d0,22(a6)
cmp.w	#$71,22(a6)
bpl.s	mt_ok1
move.w	#$71,22(a6)
mt_ok1:
move.w	22(a6),6(a5)
rts

mt_portdwn:
clr.w	d0
move.b	3(a6),d0
add.w	d0,22(a6)
cmp.w	#$358,22(a6)
bmi.s	mt_ok2
move.w	#$358,22(a6)
mt_ok2:
move.w	22(a6),6(a5)
rts

mt_volup:
clr.w	d0
move.b	3(a6),d0
lsr.b	#4,d0
tst.b	d0
beq.s	mt_voldwn
mt_pushvol1:
add.w	d0,$12(a6)
cmp.w	#$40,$12(a6)
bmi.s	mt_ok3
move.w	#$40,$12(a6)
mt_ok3:
move.w	$12(a6),8(a5)
rts

mt_voldwn:
clr.w	d0
move.b	3(a6),d0
mt_pushvol2:
and.b	#$0f,d0
sub.w	d0,$12(a6)
bpl.s	mt_ok4
clr.w	$12(a6)
mt_ok4:
move.w	$12(a6),8(a5)
rts

mt_arpegrt:
cmp.l	#1,mt_counter
beq.s	mt_loop2
cmp.l	#2,mt_counter
beq.s	mt_loop3
cmp.l	#3,mt_counter
beq.s	mt_loop4
cmp.l	#4,mt_counter
beq.s	mt_loop2
cmp.l	#5,mt_counter
beq.s	mt_loop3
rts

mt_loop2:
clr.l	d0
move.b	3(a6),d0
lsr.b	#4,d0
bra.s	mt_cont

mt_loop3:
clr.l	d0
move.b	3(a6),d0
and.b	#$0f,d0
bra.s	mt_cont

mt_loop4:
move.w	16(a6),d2
bra.s	mt_endpart

mt_cont:
lsl.w	#1,d0
clr.l	d1
move.w	16(a6),d1
lea	mt_arpeggio,a0
mt_loop5:
move.w	(a0,d0),d2
cmp.w	(a0),d1
beq.s	mt_endpart
addq.l	#2,a0
bra.s	mt_loop5

mt_endpart:
move.w	d2,6(a5)
rts

mt_rout2:
lea	mt_muzakdata,a0
move.l	a0,a3
add.l	#$0c,a3
move.l	a0,a2
add.l	#$1d8,a2
add.l	#$258,a0
move.l	mt_partnrplay,d0
clr.l	d1
move.b	(a2,d0),d1
mulu	#$0400,d1
add.l	mt_partnote,d1
move.l	d1,mt_partpoint
clr.w	mt_dmacon

move.l	#$dff0a0,a5
lea	mt_aud1temp,a6
bsr.L	mt_playit

move.l	#$dff0b0,a5
lea	mt_aud2temp,a6
bsr.L	mt_playit

move.l	#$dff0c0,a5
lea	mt_aud3temp,a6
bsr.L	mt_playit

move.l	#$dff0d0,a5
lea	mt_aud4temp,a6
bsr.L	mt_playit

move.l	#mt_speed,d0
mt_rls:
dbf	d0,mt_rls

move.l	#$8000,d0
add.w	mt_dmacon,d0
move.w	d0,$dff096

move.l	#mt_aud4temp,a6
cmp.w	#1,14(a6)
bne.s	mt_voice3
move.l	10(a6),$dff0d0
move.w	#1,$dff0d4
mt_voice3:
move.l	#mt_aud3temp,a6
cmp.w	#1,14(a6)
bne.s	mt_voice2
move.l	10(a6),$dff0c0
move.w	#1,$dff0c4
mt_voice2:
move.l	#mt_aud2temp,a6
cmp.w	#1,14(a6)
bne.s	mt_voice1
move.l	10(a6),$dff0b0
move.w	#1,$dff0b4
mt_voice1:
move.l	#mt_aud1temp,a6
cmp.w	#1,14(a6)
bne.s	mt_voice0
move.l	10(a6),$dff0a0
move.w	#1,$dff0a4

mt_voice0:
move.l	mt_partnote,d0
add.l	#$10,d0
move.l	d0,mt_partnote
cmp.l	#$400,d0
bne.s	mt_stop
clr.l	mt_partnote
addq.l	#1,mt_partnrplay
clr.l	d0
move.w	mt_maxpart,d0
move.l	mt_partnrplay,d1
cmp.l	d0,d1
bne.s	mt_stop
clr.l	mt_partnrplay
mt_stop:
rts

mt_playit:
move.l	(a0,d1),(a6)
addq.l	#4,d1
clr.l	d2
move.b	2(a6),d2
and.b	#$f0,d2
lsr.b	#4,d2
tst.b	d2
beq.s	mt_nosamplechange

clr.l	d3
lea	mt_samples,a1
move.l	d2,d4
mulu	#4,d2
mulu	#$1e,d4
move.l	(a1,d2),4(a6)
move.w	(a3,d4),8(a6)
move.w	2(a3,d4),18(a6)
move.w	4(a3,d4),d3
tst.w	d3
beq.s	mt_displace
move.l	4(a6),d2
add.l	d3,d2
move.l	d2,4(a6)
move.l	d2,10(a6)
move.w	6(a3,d4),8(a6)
move.w	6(a3,d4),14(a6)
move.w	18(a6),8(a5)
bra.s	mt_nosamplechange
mt_displace:
move.l	4(a6),d2
add.l	d3,d2
move.l	d2,10(a6)
move.w	6(a3,d4),14(a6)
move.w	18(a6),8(a5)
mt_nosamplechange:
tst.w	(a6)
beq.s	mt_retrout
move.w	(a6),16(a6)
move.w	20(a6),$dff096
move.l	4(a6),(a5)
move.w	8(a6),4(a5)
move.w	(a6),6(a5)
move.w	20(a6),d0
or.w	d0,mt_dmacon

mt_retrout:
move.w	20(a6),d0
lsl.w	#4,d0
add.w	20(a6),d0
move.w	d0,$dff09e

tst.w	(a6)
beq.s	mt_nonewper
move.w	(a6),22(a6)

mt_nonewper:
move.b	2(a6),d0
and.b	#$0f,d0
cmp.b	#14,d0
bne.s	mt_noset
move.w	2(a6),24(a6)
rts

mt_noset:
tst.b	3(a6)
bne.s	mt_noclr
clr.w	24(a6)
mt_noclr:
cmp.b	#3,d0
beq.s	mt_modvol
cmp.b	#6,d0
beq.s	mt_modvol
cmp.b	#9,d0
beq.s	mt_modvol
cmp.b	#4,d0
beq.s	mt_modper
cmp.b	#7,d0
beq.s	mt_modper
cmp.b	#10,d0
beq.s	mt_modper
cmp.b	#5,d0
beq.s	mt_modvolper
cmp.b	#8,d0
beq.s	mt_modvolper
cmp.b	#11,d0
beq.s	mt_modvolper
cmp.b	#15,d0
beq.s	mt_chgspeed
cmp.b	#12,d0
bne.s	mt_nochnge
move.b	3(a6),8(a5)
mt_nochnge:
rts

mt_chgspeed:
move.b	3(a6),d0
and.b	#$0f,d0
beq.s	mt_nochnge
clr.l	mt_counter
move.b	d0,mt_cool+5
rts

mt_modvol:
move.w	20(a6),d0
bra.s	mt_push

mt_modper:
move.w	20(a6),d0
lsl.w	#4,d0
bra.s	mt_push

mt_modvolper:
move.w	20(a6),d0
lsl.w	#4,d0
add.w	20(a6),d0

mt_push:
add.w	#$8000,d0
move.w	d0,$dff09e
rts

mt_aud1temp:
dc.w $0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000
dc.w $0000,$0000,$0001,$0000,$0000
mt_aud2temp:
dc.w $0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000
dc.w $0000,$0000,$0002,$0000,$0000
mt_aud3temp:
dc.w $0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000
dc.w $0000,$0000,$0004,$0000,$0000
mt_aud4temp:
dc.w $0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000
dc.w $0000,$0000,$0008,$0000,$0000
mt_partnote:
dc.l 0
mt_partnrplay:
dc.l 0
mt_counter:
dc.l 0
mt_partpoint:
dc.l 0
mt_samples:
dc.w $0000,$0000
mt_sample1:
dc.l 0
mt_sample2:
dc.l 0
mt_sample3:
dc.l 0
mt_sample4:
dc.l 0
mt_sample5:
dc.l 0
mt_sample6:
dc.l 0
mt_sample7:
dc.l 0
mt_sample8:
dc.l 0
mt_sample9:
dc.l 0
mt_sample10:
dc.l 0
mt_sample11:
dc.l 0
mt_sample12:
dc.l 0
mt_sample13:
dc.l 0
mt_sample14:
dc.l 0
mt_sample15:
dc.l 0
mt_maxpart:
dc.w $0000
mt_kn1:
dc.w $0000
mt_dmacon:
dc.w $0000

mt_arpeggio:
dc.w $0358,$0328,$02fa,$02d0,$02a6,$0280,$025c
dc.w $023a,$021a,$01fc,$01e0,$01c5,$01ac,$0194,$017d
dc.w $0168,$0153,$0140,$012e,$011d,$010d,$00fe,$00f0
dc.w $00e2,$00d6,$00ca,$00be,$00b4,$00aa,$00a0,$0097
dc.w $008f,$0087,$007f,$0078,$0071,$0000,$0000,$0000

mt_muzakdata:	blk.b   25176,0

mt_snd1:	blk.b	8900,0
mt_snd2:	blk.b	6600,0
mt_snd3:	blk.b	9900,0
mt_snd4:	blk.b	1900,0
mt_snd5:	blk.b	3900,0
mt_snd6:	blk.b	4000,0
mt_snd7:	blk.b	9900,0
mt_snd8:	blk.b	6500,0
mt_snd9:	blk.b	9900,0
mt_snda:	blk.b	7400,0
mt_sndb:	blk.b	2,0
mt_sndc:	blk.b	2,0
mt_sndd:	blk.b	2,0
mt_snde:	blk.b	2,0
mt_sndf:	blk.b	2,0

slutt:

