;POUR CHARGER LES DATAS TAPEZ:
;
;RI		RETURN
;IMAGEB.HI3	RETURN
;BITPLANE1	RETURN RETURN
;
;RI		RETURN
;BIG		RETURN
;BITPLANE4	RETURN RETURN
;
;RI		RETURN
;FONT_RAW	RETURN
;FONT		RETURN RETURN
;
;RI		RETURN
;MODULE		RETURN
;MT_DATA	RETURN RETURN
;
;PUIS TAPEZ
;G BEGIN	RETURN RETURN
;
;SUPPRIMEZ LES LIGNES SUIVANTES SI VOTRE VERSION DU SEKA
;NE COMPORTE PAS LA COMMANDE Y

>EXTERN "IMAGEB.HI3",BITPLANE1
>EXTERN "BIG",BITPLANE4
>EXTERN "MODULE",MT_DATA
>EXTERN "FONT.LO3",FONT

org $25000	;EMPLACEMENT EN MEMOIRE
load $25000	;DE NOTRE PROGRAMME

BEGIN:
JMP START
;=====================================================================
EXECBASE=4
OPENLIBRARY=-408
CLOSELIBRARY=-414
SUPERSTATE=-150
USERSTATE=-156	
FORBID=-132
PERMIT=-138
ADDINTSERVER=-168
REMINTSERVER=-174
Open=-30
Close=-36
Read=-42

;=====================================================================
BLTCON0=$DFF040		
BLTCON1=$DFF042
BLTAFWM=$DFF044
BLTALWM=$DFF046
BLTCPTH=$DFF048
BLTCPTL=$DFF04A
BLTBPTH=$DFF04C
BLTBPTL=$DFF04E
BLTAPTH=$DFF050
BLTAPTL=$DFF052
BLTDPTH=$DFF054
BLTDPTL=$DFF056
BLTSIZE=$DFF058
BLTCMOD=$DFF060
BLTBMOD=$DFF062
BLTAMOD=$DFF064
BLTDMOD=$DFF066
BLTCDAT=$DFF070
BLTBDAT=$DFF072
BLTADAT=$DFF074
DMACONR=$DFF002
;==================================
BITPLANE1=$35000
BITPLANE2=BITPLANE1+[80*256]
BITPLANE3=BITPLANE2+[80*256]

BITPLANE4=BITPLANE3+[80*256]
BITPLANE5=BITPLANE4+[160*256]
BITPLANE6=BITPLANE5+[160*256]

FONT=BITPLANE6+[160*256]

MT_DATA=FONT+19216

FINDATA=MT_DATA+96050
;==================================
START:    
MOVEM.L D0-D7/A0-A6,-(A7)	;SAUVE REGISTRES
MOVE.L EXECBASE,A6		;CHARGE ADRESSE EXECBASE DANS A6
JSR FORBID(A6)    		;SAUTE SOUS PROGRAMME: INTERDIT MULTITACHE
JSR OPENLIB  			;SAUTE SOUS PROGRAMME: OUVERTURE LIBRAIRIES


MOVE.L #TEXT,PTEXT		;ON MET LE POINTEUR DE LETTRE SUR LE DEBUT
MOVE.W #0,COMPT			;DU TEXTE. ET LE COMPTEUR A 0

BSR.L INIT_MUSIQUE		;INITIALISATION DE LA MUSIQUE

BSR.L SETCOPPER			;SAUTE SOUS PROGRAMME: MET EN PLACE LISTE COPPER
BSR.s NEWIRQ3			;SAUTE SOUS PROGRAMME: MET EN PLACE ROUTINE D'INTERRRUPTION

WAIT:
MOVE.W $DFF006,D0
AND.W #$FF00,D0
CMP.W #$FF00,D0
BNE.S WAIT

BTST	#6,$BFE001		;ATTENDANT PRESSION SUR BOUTON GAUCHE SOURIS
BNE.S	WAIT			;SINON RETOURNE A WAIT
 				;SI OUI  FIN
END: 				;FIN:	
BSR.L STOP_MUSIQUE		;ARRET DE LA MUSIQUE
BSR.s STOPIRQ3        		;SAUTE SOUS PROGRAMME: STOPPE INTERRUPTION
BSR.L CLRCOPPER       		;SAUTE SOUS PROGRAMME: RESTAURE ANCIENNE LISTE COPPER
BSR.L CLOSELIB        		;SAUTE SOUS PROGRAMME: FERME LIBRAIRIES 
MOVE.L EXECBASE,A6		;CHARGE ADRESSE EXECBASE DANS A6
JSR PERMIT(A6)      		;AUTORISE MULTITACHE
                      
MOVEM.L (A7)+,D0-D7/A0-A6	;RESTAURE REGISTRES
RTS
;========================
NEWIRQ3:			;MET EN PLACE NOTRE ROUTINE 
MOVE.L	EXECBASE,A6		;D'INTERRUPTION
lea	irqstr,a1
move.l	#5,d0
jsr	addintserver(a6)
move.l	d0,irq
beq.s	irqerror
rts
irqerror:
rts
;==========================
STOPIRQ3:			;RESTAURE ANCIENNE ROUTINE
movem.l	a0-a6/d0-d7,-(sp)	;D'INTERRUPTION
	tst.l	irq
	beq.s	irqoff1
	move.l	execbase,a6
	lea	irqstr,a1
	move.l	#32,d0
	jsr	remintserver(a6)
irqoff1:movem.l	(sp)+,a0-a6/d0-d7
	rts
irqstr:
	dc.l	0,0
	dc.b	2,-127
	dc.l	0,irqdat,interrupt
irqdat:	dc.l	0,0,0,0
irq:	dc.l	0
;============================
interrupt:			;NOTRE ROUTINE D'INTERRUPTION	
movem.l	a0-a6/d0-d7,-(sp)

BSR.L SCROLLING
BSR.L MT_MUSIC
BSR.L SCROLLINGTEXT

movem.l	(sp)+,a0-a6/d0-d7
rts
;============================
OPENLIB:  			;OUVERTURE DE LA LIBRAIRIE GRAPHIQUE
move.l execbase,a6      	;MET ADRESSE EXECBASE DANS A6
lea gfxname,a1			;MET NOM DE LA LIBRAIRIE DANS A1
move.l #$0,d0           	;MET 0 DANS D0
jsr openlibrary(a6)		;OUVRE LIBRAIRIE
tst d0				;TESTE D0
beq.s error			;SI = A 0   VA A ERROR = SORTIE
move.l d0,gfxbase       	;SI NON, MET ADRESSE D0 DANS GFXBASE
add.l #$32,d0			;AJOUTE $32 A CETTE ADRESSE
move.l d0,coppertr      	;MET D0=ADRESSE ACTUELLE LISTE COPPER
rts				;DANS COPPERTR
even
gfxname: dc.b 'graphics.library',0 	;NOM DE LA LIBRAIRIE
even
gfxbase: dc.l 0				;POINTEUR POUR LA GRAPHICS LIBRARY
coppertr: dc.l 0			;POINTEUR POUR ADRESSE LISTE COPPER
;====================
CLOSELIB: 			;FERMETURE LIBRAIRIE
move.l execbase,a6      	;MET ADRESSE EXECBASE DANS A6
move.l gfxbase,a1		;MET NOM DE LA LIBRAIRIE DANS A1
jsr closelibrary(a6)		;FERME LIBRAIRIE
rts
;====================
ERROR:				;SI ERREUR
illegal				;SORTIE
rts
;====================
SETCOPPER:			;MET EN PLACE NOTRE LISTE COPPER
move.l coppertr,a0		;MET ADRESSE ACTUEL COPPER DANS A0
move.l (a0),oldcopper		;MET CONTENU DANS OLDCOPPER
move.l #newcopper,(a0)		;MET NOTRE LISTE COPPER DANS A0
move.w #$81c0,$dff096		;ACTIVE LISTE COPPER
rts		
oldcopper: dc.l 0
;====================
CLRCOPPER:			;RESTAURE ANCIENNE LISTE COPPER
move.l coppertr,a0		;MET ANCIENNE ADRESSE DANS A0
move.l oldcopper,(a0)		;MET CONTENU DANS A0
move.w #$80a0,$dff096		;REACTIVE ANCIENNE COPPER
rts
;====================
WAIT_BLITTER:			;ROUTINE POUR ATTENDRE QUE LE BLITTER
BTST #14,DMACONR		;EST FINI SON PRECEDENT TRAVAIL
BNE.S WAIT_BLITTER
RTS
;===================
SCROLLINGTEXT:			;ROUTINE DU SCROLLING
BSR.L SEARCH_CHAR		;AFFICHE UN NOUVEAU CARACTERE
BSR.L SCROLLTEXT		;SCROLLE LE FOND DU SCROLL
RTS
;===================	
SCROLLTEXT:			
LEA BITPLANE4,A0 		;ON POINTE A0 SUR LE FOND DU SCROLL
ADD.L #160*224,A0

MOVEQ #2,D1
SCROLLT1:	
BSR.L WAIT_BLITTER		;ON ATTEND QUE LE BLITTER EST FINI SON 
				;PRECEDENT TRAVAIL

LEA -2(A0),A1			;ON POINTE A1 SUR 16 PIXELS AVANT 
				;LE FOND DU SCROLL. 2 = 16 PIXELS

MOVE.L A0,BLTAPTH		;MET ADRESSE DE A0 DANS SOURCE BLITTER A
MOVE.L A1,BLTDPTH		;MET ADRESSE DE A1 DANS DESTINATION BLITTER D
MOVE.W #160-50,BLTAMOD  	;MET 0 DANS MODULO SOURCE A
MOVE.W #160-50,BLTDMOD		;MET 0 DANS MODULO DESTINATION D
MOVE.L #$FFFFFFFF,BLTAFWM	;MASQUE DU 1ER ET DU DERNIER MOT
MOVE.L #$C9F00000,BLTCON0    	;MET MIMTERN ET DECALAGE DANS BLTCON0
				;$C = $F - $4 = 16 - 4 = 12
				;4 PIXELS DE DECALAGE VERS LA GAUCHE

				;$9 -> POUR 1 SOURCE BLITTER
				;$F0 -> MINTERM POUR COPIE DIRECTE
				;$0000 -> MIS A 0 CAR SOURCE B INITULISE	

MOVE.W #[32*64]+25,BLTSIZE	;MET TAILLE A SCROLLER DANS BLTSIZE
				;TAILLE = [HAUTEUR * 64]+[LARGEUR/2]

ADD.L #160*256,A0
DBF D1,SCROLLT1

RTS
;============
SEARCH_CHAR:
ADDQ #1,COMPT			;AJOUTE 1 AU COMPTEUR
CMP.W #8,COMPT           	;COMPARE A 8 CAR 8 * 4 PIXELS DE DECALAGE
				;EGALE A 32 SOIT LA LARGEUR D'UNe LETTRE
BNE.L SEARCHAR3			;SI PAS EGAL A 8 ON SORT
MOVE.W #0,COMPT			;SI OUI ON REMET COMPTEUR A 0
				;ET ON CONTINU

MOVE.L PTEXT,A0          	;MET POINTEUR TEXTE DANS A0
CLR.L D0			;ON EFFACE CONTENU DE D0
MOVE.B (A0),D0			;MET LE CONTENU DU POINTEUR TEXTE DANS D0
LEA COMPTEUR_CHAR,A1		;EN POINTE A1 SUR LA TABLE DES LETTRES
CLR.L D1			;ON EFFACE CONTENU DE D1
MOVE.B #-1,D1			;ON MET -1 DANS D1

SEARCHAR1:

ADD.B #1,D1     		;ON AJOUTE 1 A D1         
CMP.B (A1)+,D0			;ON COMPARE LES LETTRES DE LA TABLE
				;AVEC CELLE CONTENU DANS D0
BNE SEARCHAR1			;SI PAS LA MEME ON RECOMMENCE AVEC LA
				;LETTRE SIUVANTE DANS LA TABLE
				;SI C'EST LA MEME ON CONTINU
MULU #4,D1              	;ON MULTIPLIE D1 PAR 4
LEA TABLE_CHAR,A0       	;ON POINTE A0 SUR LE DEBUT DE LA TABLE
				;D'ADRESSE DES IMAGES DES LETTRES
MOVE.L (A0,D1),A2       	;ET ON MET L'ADRESSE DE LA LETTRE DANS A2

LEA BITPLANE4,A3		;ON POINTE A3 SUR LA POSITION SCROLL+44
ADD.L #[160*224]+44,A3        	;SOIT A 44*8 PIXELS A DROITE DU 
				;COIN SUPERIEUR DROIT DU FOND DE SCROLL
				;SOIT DANS LA PARTIE INVISIBLE DU SCROLL	

MOVE.W #2,D1
SEARCHAR2:
BSR.L WAIT_BLITTER        	;ON ATTENDS LE BLITTER	
MOVE.L A2,BLTAPTH       	;ON MET ADRESSE DE A2 DANS SOURCE BLITTER A
MOVE.L A3,BLTDPTH       	;ON MET ADRESSE DE A3 DANS DESTINATION BLITTER D

MOVE.W #40-4,BLTAMOD  		;ON MET 40-4 DANS MODULO SOURCE A
				;CAR NOTRE LETTRE FAIT 32 PIXELS DE LARGE SOIT
				;4 MOTS (4*8=32) ET L'IMAGE QUI LA CONTIENT
				;FAIT 320 PIXELS DE LARGE SOIT 40 MOTS
	
MOVE.W #160-4,BLTDMOD   	;ON MET 160-4 DANS MODULO DESTINATION D
				;CAR LE FOND DE SCROLL FAIT 400 PIXELS DE LARGE
				;SOIT 50 MOTS

MOVE.L #$FFFFFFFF,BLTAFWM	;MASQUE DU 1ER ET DU DERNIER MOT

MOVE.L #$09F00000,BLTCON0	;$0 -> PAS DE DECALAGE DE LA SOURCE A
				;$9 -> POUR 1 SOURCE BLITTER A
				;$F0 -> MINTERM POUR COPIE DIRECTE

MOVE.W #[32*64]+2,BLTSIZE	;MET TAILLE A SCROLLER DANS BLTSIZE
				;TAILLE = [HAUTEUR * 64]+[LARGEUR/2]

ADD.L #40*160,A2
ADD.L #160*256,A3

DBF D1,SEARCHAR2

ADD.L #1,PTEXT          	;ON AJOUTE 1 AU POINTEUR DE TEXTE
MOVE.L PTEXT,A0			;ON MET POINTEUR DE TEXTE DANS A0
TST.B (A0)              	;SI PAS EGAL A 0
BNE SEARCHAR3			;ON VA A SEARCHAR3
MOVE.L #TEXT,PTEXT		;SINON ON REMET POINTEUR DE TEXTE AU DEBUT
				;DU TEXTE A SCROLLER

SEARCHAR3:
RTS

EVEN
COMPT: DC.W 0			;COMPTEUR 
PTEXT: DC.L 0			;POINTEUR DE TEXTE
;=================================================================
COMPTEUR_CHAR: DC.B 'ABCDEFGHIJ'	;TABLE DES CARACTERES
	       DC.B 'KLMNOPQRST'	;TELS QU'ILS SONT DISPOSES
	       DC.B 'UVWXYZ0123'	;DANS NOTRE IMAGE	
	       DC.B '456789@?!.'
	       DC.B '()#       '
         
EVEN
FONT1=FONT		;ADRESSES DES LETTRES PAR LIGNES
FONT2=FONT+[1*32*40] 
FONT3=FONT+[2*32*40]
FONT4=FONT+[3*32*40]
FONT5=FONT+[4*32*40]
EVEN 
TABLE_CHAR: 		;ADRESSES DES LETTRES

DC.L FONT1,FONT1+4,FONT1+8,FONT1+12,FONT1+16,FONT1+20
DC.L FONT1+24,FONT1+28,FONT1+32,FONT1+36
DC.L FONT2,FONT2+4,FONT2+8,FONT2+12,FONT2+16,FONT2+20
DC.L FONT2+24,FONT2+28,FONT2+32,FONT2+36
DC.L FONT3,FONT3+4,FONT3+8,FONT3+12,FONT3+16,FONT3+20
DC.L FONT3+24,FONT3+28,FONT3+32,FONT3+36
DC.L FONT4,FONT4+4,FONT4+8,FONT4+12,FONT4+16,FONT4+20
DC.L FONT4+24,FONT4+28,FONT4+32,FONT4+36
DC.L FONT5,FONT5+4,FONT5+8,FONT5+12,FONT5+16,FONT5+20
DC.L FONT5+24,FONT5+28,FONT5+32,FONT5+36
EVEN

EVEN		;TEXTE A SCROLLER

TEXT: 
DC.B '             '
DC.B 'VOICI DONC NOTRE DEMO QUI PREND FORME   UNE JOLIE MUSIQUE ET'
DC.B 'UN SCROLLING TEXT SONT INDISPENSABLES       '
DC.B 'JE TIENS A REMERCIER BAB DE PHOENIX POUR SA SUPERBE MUSIQUE'
DC.B '       BON   JE VOUS LAISSE REPRENDRE VOTRE SOUFFLE'
DC.B 'CAR ON ATTAQUE LA SUITE C EST A DIRE LA MISE EN PLACE '
DC.B 'DES SPRITES MULTIPLEXES'
DC.B '    ',0
FIN:
even
;====================
FLAGSCROLL: DC.W 0
CP0: DC.W 0
CP1: DC.W 0
CP2: DC.W 0
CP3: DC.W 0
CP4: DC.W 0
CP5: DC.W 0
CP6: DC.W 0
EVEN
DELAY_A: DC.W 0
EVEN
SCROLLING:

BSR.L SCROLL0	;1/2

BSR.L SCROLL1	;1/3

BSR.L SCROLL3	;1 PIXELS

BSR.L SCROLL4	;2 PIXELS

BSR.L SCROLL5	;3 PIXELS	
BSR.L SCROLL5
BSR.L SCROLL5
	
BSR.L SCROLL10	;4

BSR.L SCROLL11	;5
BSR.L SCROLL11
BSR.L SCROLL11
BSR.L SCROLL11
BSR.L SCROLL11

BSR.L SCROLL12 	;6
BSR.L SCROLL12
BSR.L SCROLL12
BSR.L SCROLL12
BSR.L SCROLL12
BSR.L SCROLL12

BSR.L SCROLL13
BSR.L SCROLL13
BSR.L SCROLL13
BSR.L SCROLL13
BSR.L SCROLL13
BSR.L SCROLL13
BSR.L SCROLL13
BSR.L SCROLL13

BSR.s SCROLLARBRE

RTS
;====================
SCROLLARBRE:
SUB.W #1,DELAY_A
CMP.W #-1,DELAY_A
BGT.S FINSCROLL_A
MOVE.W #$F,DELAY_A
ADDQ #2,ELO1
ADDQ #2,ELO2
ADDQ #2,ELO3
ADDQ #2,CPTSCROLL_A
CMP.W #120,CPTSCROLL_A
BNE.S FINSCROLL_A
MOVE.W #0,CPTSCROLL_A
SUB.W #120,ELO1
SUB.W #120,ELO2
SUB.W #120,ELO3
FINSCROLL_A: 
MOVE.W DELAY_A,D1
MOVE.W #$FFF0,D0
AND.W D0,DELAY5
ADD.W D1,DELAY5
AND.W D0,DELAY6
ADD.W D1,DELAY6
AND.W D0,DELAY7
ADD.W D1,DELAY7
AND.W D0,DELAY8
ADD.W D1,DELAY8
AND.W D0,DELAY0
ADD.W D1,DELAY0
AND.W D0,DELAY1
ADD.W D1,DELAY1
AND.W D0,DELAY2
ADD.W D1,DELAY2
AND.W D0,DELAY3
ADD.W D1,DELAY3
AND.W D0,DELAY4
ADD.W D1,DELAY4
RTS
EVEN
CPTSCROLL_A: DC.W 0
EVEN


SCROLL0:
ADDQ #1,CP0
CMP.W #2,CP0
BNE.L FINSCROLL0
MOVE.W #0,CP0
SUB.W #$10,DELAY6
SUB.W #$10,DELAY2
SUB.W #$10,DELAY0
CMP.W #-1,DELAY0
BGT.L FINSCROLL0
MOVE.W #$F0,DELAY0
MOVE.W #$F0,DELAY6
MOVE.W #$F0,DELAY2
ADDQ #2,LO10
ADDQ #2,LO20
ADDQ #2,LO30
ADDQ #2,LO16
ADDQ #2,LO26
ADDQ #2,LO36
ADDQ #2,LO14
ADDQ #2,LO24
ADDQ #2,LO34
ADDQ #2,CPTSCROLL0
CMP.W #40,CPTSCROLL0
BNE.S FINSCROLL0
MOVE.W #0,CPTSCROLL0
SUB.W #40,LO10
SUB.W #40,LO20
SUB.W #40,LO30
SUB.W #40,LO16
SUB.W #40,LO26
SUB.W #40,LO36
SUB.W #40,LO14
SUB.W #40,LO24
SUB.W #40,LO34
FINSCROLL0: 
RTS
EVEN
CPTSCROLL0: DC.W 0
EVEN

;===================
SCROLL1:
ADDQ #1,CP1
CMP.W #3,CP1
BNE.S FINSCROLL1
MOVE.W #0,CP1

SUB.W #$10,DELAY1
CMP.W #-1,DELAY1
BGT.S FINSCROLL1
MOVE.W #$F0,DELAY1
ADDQ #2,LO15
ADDQ #2,LO25
ADDQ #2,LO35
ADDQ #2,CPTSCROLL1
CMP.W #40,CPTSCROLL1
BNE.S FINSCROLL1
MOVE.W #0,CPTSCROLL1
SUB.W #40,LO15
SUB.W #40,LO25
SUB.W #40,LO35
FINSCROLL1: 

RTS
EVEN
CPTSCROLL1: DC.W 0
EVEN
;===================

SCROLL3:
SUB.W #$10,DELAY7
SUB.W #$10,DELAY3
CMP.W #-1,DELAY3
BGT.S FINSCROLL3
MOVE.W #$F0,DELAY3
MOVE.W #$F0,DELAY7
ADDQ #2,LO13
ADDQ #2,LO23
ADDQ #2,LO33
ADDQ #2,LO17
ADDQ #2,LO27
ADDQ #2,LO37
ADDQ #2,CPTSCROLL3
CMP.W #40,CPTSCROLL3
BNE.S FINSCROLL3
MOVE.W #0,CPTSCROLL3
SUB.W #40,LO13
SUB.W #40,LO23
SUB.W #40,LO33
SUB.W #40,LO17
SUB.W #40,LO27
SUB.W #40,LO37
FINSCROLL3: 
RTS
EVEN
CPTSCROLL3: DC.W 0
EVEN
;===================
SCROLL4:
SUB.W #$20,DELAY8
SUB.W #$20,DELAY4
CMP.W #0,DELAY4
BGT.S FINSCROLL4
MOVE.W #$F0,DELAY4
MOVE.W #$F0,DELAY8
ADDQ #2,LO12
ADDQ #2,LO22
ADDQ #2,LO32
ADDQ #2,LO18
ADDQ #2,LO28
ADDQ #2,LO38
ADDQ #2,CPTSCROLL4
CMP.W #40,CPTSCROLL4
BNE.S FINSCROLL4
MOVE.W #0,CPTSCROLL4
SUB.W #40,LO12
SUB.W #40,LO22
SUB.W #40,LO32
SUB.W #40,LO18
SUB.W #40,LO28
SUB.W #40,LO38
FINSCROLL4: 
RTS
EVEN
CPTSCROLL4: DC.W 0
EVEN
;===================
SCROLL5:
SUB.W #$10,DELAY9
SUB.W #$10,DELAY5
CMP.W #-1,DELAY5
BGT.S FINSCROLL5
MOVE.W #$F0,DELAY5
MOVE.W #$F0,DELAY9
ADDQ #2,LO11
ADDQ #2,LO21
ADDQ #2,LO31
ADDQ #2,LO19
ADDQ #2,LO29
ADDQ #2,LO39
ADDQ #2,CPTSCROLL5
CMP.W #40,CPTSCROLL5
BNE.S FINSCROLL5
MOVE.W #0,CPTSCROLL5
SUB.W #40,LO11
SUB.W #40,LO21
SUB.W #40,LO31
SUB.W #40,LO19
SUB.W #40,LO29
SUB.W #40,LO39
FINSCROLL5: 
RTS
EVEN
CPTSCROLL5: DC.W 0
EVEN
;===================
SCROLL10:
SUB.W #$40,DELAY10
CMP.W #0,DELAY10
BGT.S FINSCROLL10
MOVE.W #$F0,DELAY10
ADDQ #2,LO110
ADDQ #2,LO210
ADDQ #2,LO310
ADDQ #2,CPTSCROLL10
CMP.W #40,CPTSCROLL10
BNE.S FINSCROLL10
MOVE.W #0,CPTSCROLL10
SUB.W #40,LO110
SUB.W #40,LO210
SUB.W #40,LO310
FINSCROLL10: 
RTS
EVEN
CPTSCROLL10: DC.W 0
EVEN
;===================
SCROLL11:
SUB.W #$10,DELAY11
CMP.W #-1,DELAY11
BGT.S FINSCROLL11
MOVE.W #$F0,DELAY11
ADDQ #2,LO111
ADDQ #2,LO211
ADDQ #2,LO311
ADDQ #2,CPTSCROLL11
CMP.W #40,CPTSCROLL11
BNE.S FINSCROLL11
MOVE.W #0,CPTSCROLL11
SUB.W #40,LO111
SUB.W #40,LO211
SUB.W #40,LO311
FINSCROLL11: 
RTS
EVEN
CPTSCROLL11: DC.W 0
EVEN
;===================
SCROLL12:
SUB.W #$10,DELAY12
CMP.W #-1,DELAY12
BGT.S FINSCROLL12
MOVE.W #$F0,DELAY12
ADDQ #2,LO112
ADDQ #2,LO212
ADDQ #2,LO312
ADDQ #2,CPTSCROLL12
CMP.W #40,CPTSCROLL12
BNE.S FINSCROLL12
MOVE.W #0,CPTSCROLL12
SUB.W #40,LO112
SUB.W #40,LO212
SUB.W #40,LO312
FINSCROLL12: 
RTS
EVEN
CPTSCROLL12: DC.W 0
EVEN
;===================
SCROLL13:
SUB.W #$10,DELAY13
CMP.W #-1,DELAY13
BGT.S FINSCROLL13
MOVE.W #$F0,DELAY13
ADDQ #2,LO113
ADDQ #2,LO213
ADDQ #2,LO313
ADDQ #2,CPTSCROLL13
CMP.W #40,CPTSCROLL13
BNE.S FINSCROLL13
MOVE.W #0,CPTSCROLL13
SUB.W #40,LO113
SUB.W #40,LO213
SUB.W #40,LO313
FINSCROLL13: 
RTS
EVEN
CPTSCROLL13: DC.W 0
EVEN
;======================
EVEN
;CETTE ROUTINE PERMET DE JOUER TOUS LES MODULES DE SOUNDTRACKERS
;DE LA VERSION 1.0 A LA VERSION 2.6  AINSI QUE CERTAINS MODULES
;NOISETRACKER.

INIT_MUSIQUE:			;INITIALISATION DE LA MUSIQUE
mt_init:move.l	mt_rdata(pc),a0
	cmp.l	#"M.K.",$438(a0)
	bne	mt_st20
	lea	mt_forst23(pc),a2
	move.l	a2,mt_forst
	bra	ok1st23
mt_st20:
	lea	mt_forst20(pc),a2
	move.l	a2,mt_forst
ok1st23:	
	add.l	(a2),a0
	moveq	#$7f,d0
	moveq	#0,d1
mt_init1:
	move.l	d1,d2
	subq.w	#1,d0
mt_init2:
	move.b	(a0)+,d1
	cmp.b	d2,d1
	bgt.s	mt_init1
	dbf	d0,mt_init2
	addq.b	#1,d2

mt_init3:
	move.l	mt_rdata(pc),a0
	lea	mt_sample1(pc),a1
	asl.l	#8,d2
	asl.l	#2,d2
	add.l	4(a2),d2
	add.l	a0,d2
	move.l	8(a2),d0
mt_init4:
	move.l	d2,(a1)+
	moveq	#0,d1
	move.w	42(a0),d1
	asl.l	#1,d1
	add.l	d1,d2
	add.l	#$1e,a0
	dbf	d0,mt_init4

	lea	mt_sample1(PC),a0
	moveq	#0,d0
mt_clear:
	move.l	(a0,d0.w),a1
	clr.l	(a1)
	addq.w	#4,d0
	cmp.w	#$7c,d0
	bne.s	mt_clear

	clr.w	$dff0a8
	clr.w	$dff0b8
	clr.w	$dff0c8
	clr.w	$dff0d8
	clr.l	mt_partnrplay
	clr.l	mt_partnote
	clr.l	mt_partpoint
	move.l	mt_rdata(pc),a1
	add.l	12(a2),a1
	move.b	(a1),mt_maxpart+1
	rts

STOP_MUSIQUE:			;ARRET DE LA MUSIQUE
mt_end:	clr.w	$dff0a8
	clr.w	$dff0b8
	clr.w	$dff0c8
	clr.w	$dff0d8
	move.w	#$f,$dff096
	rts

PLAY_MUSIQUE:			;JOUE LA MUSIQUE
mt_music:
	addq.w	#1,mt_counter
mt_cool:cmp.w	#6,mt_counter
	bne.s	mt_notsix
	clr.w	mt_counter
	bra	mt_rout2

mt_notsix:
	lea	mt_aud1temp(PC),a6
	tst.b	3(a6)
	beq.s	mt_arp1
	lea	$dff0a0,a5		
	bsr.s	mt_arprout
mt_arp1:lea	mt_aud2temp(PC),a6
	tst.b	3(a6)
	beq.s	mt_arp2
	lea	$dff0b0,a5
	bsr.s	mt_arprout
mt_arp2:lea	mt_aud3temp(PC),a6
	tst.b	3(a6)
	beq.s	mt_arp3
	lea	$dff0c0,a5
	bsr.s	mt_arprout
mt_arp3:lea	mt_aud4temp(PC),a6
	tst.b	3(a6)
	beq.s	mt_arp4
	lea	$dff0d0,a5
	bra.s	mt_arprout
mt_arp4:rts

mt_arprout:
	move.b	2(a6),d0
	and.b	#$0f,d0
	tst.b	d0
	beq	mt_arpegrt
	cmp.b	#$01,d0
	beq.s	mt_portup
	cmp.b	#$02,d0
	beq.s	mt_portdwn
	cmp.b	#$0a,d0
	beq.s	mt_volslide
	rts

mt_portup:
	moveq	#0,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:
	moveq	#0,d0
	move.b	3(a6),d0
	add.w	d0,22(a6)
	cmp.w	#$538,22(a6)
	bmi.s	mt_ok2
	move.w	#$538,22(a6)
mt_ok2:	move.w	22(a6),6(a5)
	rts

mt_volslide:
	moveq	#0,d0
	move.b	3(a6),d0
	lsr.b	#4,d0
	tst.b	d0
	beq.s	mt_voldwn
	add.w	d0,18(a6)
	cmp.w	#64,18(a6)
	bmi.s	mt_ok3
	move.w	#64,18(a6)
mt_ok3:	move.w	18(a6),8(a5)
	rts
mt_voldwn:
	moveq	#0,d0
	move.b	3(a6),d0
	and.b	#$0f,d0
	sub.w	d0,18(a6)
	bpl.s	mt_ok4
	clr.w	18(a6)
mt_ok4:	move.w	18(a6),8(a5)
	rts

mt_arpegrt:
	move.w	mt_counter(PC),d0
	cmp.w	#1,d0
	beq.s	mt_loop2
	cmp.w	#2,d0
	beq.s	mt_loop3
	cmp.w	#3,d0
	beq.s	mt_loop4
	cmp.w	#4,d0
	beq.s	mt_loop2
	cmp.w	#5,d0
	beq.s	mt_loop3
	rts

mt_loop2:
	moveq	#0,d0
	move.b	3(a6),d0
	lsr.b	#4,d0
	bra.s	mt_cont
mt_loop3:
	moveq	#$00,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:
	add.w	d0,d0
	moveq	#0,d1
	move.w	16(a6),d1
	lea	mt_arpeggio(PC),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:
	move.l	mt_rdata(pc),a0
	move.l	a0,a3
	add.l	#$0c,a3
	move.l	a0,a2
	move.l	mt_forst,a4
	add.l	(a4),a2
	add.l	16(a4),a0
	move.l	mt_partnrplay(PC),d0
	moveq	#0,d1
	move.b	(a2,d0),d1
	asl.l	#8,d1
	asl.l	#2,d1
	add.l	mt_partnote(PC),d1
	move.l	d1,mt_partpoint
	clr.w	mt_dmacon

	lea	$dff0a0,a5
	lea	mt_aud1temp(PC),a6
	bsr	mt_playit
	lea	$dff0b0,a5
	lea	mt_aud2temp(PC),a6
	bsr	mt_playit
	lea	$dff0c0,a5
	lea	mt_aud3temp(PC),a6
	bsr	mt_playit
	lea	$dff0d0,a5
	lea	mt_aud4temp(PC),a6
	bsr	mt_playit
	move.w	#$01f4,d0
mt_rls:	dbf	d0,mt_rls

	move.w	#$8000,d0
	or.w	mt_dmacon,d0
	move.w	d0,$dff096

	lea	mt_aud4temp(PC),a6
	cmp.w	#1,14(a6)
	bne.s	mt_voice3
	move.l	10(a6),$dff0d0
	move.w	#1,$dff0d4
mt_voice3:
	lea	mt_aud3temp(PC),a6
	cmp.w	#1,14(a6)
	bne.s	mt_voice2
	move.l	10(a6),$dff0c0
	move.w	#1,$dff0c4
mt_voice2:
	lea	mt_aud2temp(PC),a6
	cmp.w	#1,14(a6)
	bne.s	mt_voice1
	move.l	10(a6),$dff0b0
	move.w	#1,$dff0b4
mt_voice1:
	lea	mt_aud1temp(PC),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(PC),d0
	add.l	#$10,d0
	move.l	d0,mt_partnote
	cmp.l	#$400,d0
	bne.s	mt_stop
mt_higher:
	clr.l	mt_partnote
	addq.l	#1,mt_partnrplay
	moveq	#0,d0
	move.w	mt_maxpart(PC),d0
	move.l	mt_partnrplay(PC),d1
	cmp.l	d0,d1
	bne.s	mt_stop
	clr.l	mt_partnrplay
mt_stop:tst.w	mt_status
	beq.s	mt_stop2
	clr.w	mt_status
	bra.s	mt_higher
mt_stop2:
	rts

mt_playit:
	move.l	(a0,d1.l),(a6)
	addq.l	#4,d1
	moveq	#0,d2
	move.b	2(a6),d2
	and.b	#$f0,d2
	lsr.b	#4,d2

	move.b	(a6),d0
	and.b	#$f0,d0
	or.b	d0,d2
	tst.b	d2
	beq.s	mt_nosamplechange

	moveq	#0,d3
	lea	mt_samples(PC),a1
	move.l	d2,d4
	lsl.l	#2,d2
	mulu	#$1e,d4
	move.l	(a1,d2),4(a6)
	move.w	(a3,d4.l),8(a6)
	move.w	2(a3,d4.l),18(a6)
	move.w	4(a3,d4.l),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.l),8(a6)
	move.w	6(a3,d4.l),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.l),14(a6)
	move.w	18(a6),8(a5)
mt_nosamplechange:
	move.w (a6),d0
	andi.w #$fff,d0			;it's the bug
	tst.w	d0			;of the real
	beq.s	mt_retrout		;source replay
	move.w	(a6),16(a6)
	move.w	20(a6),$dff096
	move.l	4(a6),(a5)
	move.w	8(a6),4(a5)
	move.w	(a6),d0
	andi.w #$fff,d0			;second bug
	move.w d0,6(a5)			;of the source
	move.w	20(a6),d0
	or.w	d0,mt_dmacon

mt_retrout:
	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	#$0b,d0
	beq.s	mt_posjmp
	cmp.b	#$0c,d0
	beq.s	mt_setvol
	cmp.b	#$0d,d0
	beq.s	mt_break
	cmp.b	#$0e,d0
	beq.s	mt_setfil
	cmp.b	#$0f,d0
	beq.s	mt_setspeed
	rts

mt_posjmp:
	not.w	mt_status
	moveq	#0,d0
	move.b	3(a6),d0
	subq.b	#1,d0
	move.l	d0,mt_partnrplay
	rts

mt_setvol:
	move.b	3(a6),8(a5)
	rts

mt_break:
	not.w	mt_status
	rts

mt_setfil:
	moveq	#0,d0
	move.b	3(a6),d0
	and.b	#1,d0
	rol.b	#1,d0
	and.b	#$fd,$bfe001
	or.b	d0,$bfe001
	rts

mt_setspeed:
	move.b	3(a6),d0
	and.b	#$0f,d0
	beq.s	mt_back
	clr.w	mt_counter
	move.b	d0,mt_cool+3
mt_back:rts

mt_aud1temp:
	blk.w	10,0
	dc.w	1
	blk.w	2,0
mt_aud2temp:
	blk.w	10,0
	dc.w	2
	blk.w	2,0
mt_aud3temp:
	blk.w	10,0
	dc.w	4
	blk.w	2,0
mt_aud4temp:
	blk.w	10,0
	dc.w	8
	blk.w	2,0
mt_partnote:	dc.l	0
mt_partnrplay:	dc.l	0
mt_counter:	dc.w	0
mt_partpoint:	dc.l	0
mt_samples:	dc.l	0
mt_sample1:	blk.l	31,0
mt_maxpart:	dc.w	0
mt_dmacon:	dc.w	0
mt_status:	dc.w	0
mt_forst:	dc.l	0

mt_forst20:	dc.l 472,600,14,470,600
mt_forst23:	dc.l $3b8,$438,$1e,$3b6,$43c
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_rdata:	dc.l mt_data
;====================
EVEN				;NOTRE LISTE COPPER
NEWCOPPER:   

DC.W $008E,$2881,$0090,$28c1
DC.W $0092,$0030
DC.W $0094,$00D0

DC.W $100,0
DC.W $104,0
DC.W $102,0

DC.W $120,0
DC.W $122,0

DC.W $0180,$0000	;COULEURS DES ARBRES
DC.W $0182,$0462
DC.W $0184,$0351
DC.W $0186,$0240
DC.W $0188,$0130
DC.W $018A,$0553
DC.W $018C,$0442
DC.W $018E,$0331

DC.W $0190,$0000 	;COULEURS DU FOND
DC.W $0192,$0CCC
DC.W $0194,$0BBB
DC.W $0196,$0AAA
DC.W $0198,$0999
DC.W $019A,$0888
DC.W $019C,$0777      
DC.W $019E,$0222

DC.W $102,0		;DECALAGE A 0

DC.W $2901,$FFFE,$100,$0200	;RESOLUTION A 0

DC.W $108,120-2	;MODULO IMAGE DES ARBRES
DC.W $10A,40-2	;MODULO IMAGE DE FOND

DC.W $102
DELAY5: DC.W $F0	

	DC.W $00E4,BITPLANE1/65536			
	DC.W $00E6
LO11: 	DC.W BITPLANE1 & 65535 
	DC.W $00EC,BITPLANE2/65536
	DC.W $00EE
LO21: 	DC.W BITPLANE2 & 65535
	DC.W $00F4,BITPLANE3/65536  
	DC.W $00F6
LO31: 	DC.W BITPLANE3 & 65535

	DC.W $00E0
EHI1:	DC.W BITPLANE4+[2*160]/65536			
	DC.W $00E2
ELO1:	DC.W BITPLANE4+[2*160] & 65535 
	DC.W $00E8
EHI2:	DC.W BITPLANE5+[2*160]/65536			
	DC.W $00Ea
ELO2:	DC.W BITPLANE5+[2*160] & 65535	
	DC.W $00F0
EHI3:	DC.W BITPLANE6+[2*160]/65536
	DC.W $00F2
ELO3:	DC.W BITPLANE6+[2*160] & 65535

DC.W $2901+[$100*1],$FFFE,$100,$6600	;RESOLUTION DUAL PLAYFIELD

DC.W $180,$00F

	DC.W $2901+[$100*28],$FFFE,$102
DELAY4: DC.W $f0
	DC.W $00E4,BITPLANE1+[80*28]/65536			
	DC.W $00E6
LO12: 	DC.W BITPLANE1+[80*28] & 65535 
	DC.W $00EC,BITPLANE2+[80*28]/65536
	DC.W $00EE
LO22: 	DC.W BITPLANE2+[80*28] & 65535
	DC.W $00F4,BITPLANE3+[80*28]/65536  
	DC.W $00F6
LO32: 	DC.W BITPLANE3+[80*28] & 65535

DC.W $2901+[$100*70],$FFFE,$102
DELAY3: DC.W $f0

	DC.W $00E4,BITPLANE1+[80*70]/65536			
	DC.W $00E6
LO13: 	DC.W BITPLANE1+[80*70] & 65535 
	DC.W $00EC,BITPLANE2+[80*70]/65536
	DC.W $00EE
LO23: 	DC.W BITPLANE2+[80*70] & 65535
	DC.W $00F4,BITPLANE3+[80*70]/65536  
	DC.W $00F6
LO33: 	DC.W BITPLANE3+[80*70] & 65535

DC.W $2901+[$100*94],$FFFE,$102
DELAY2: DC.W $f0

	DC.W $00E4,BITPLANE1+[80*94]/65536			
	DC.W $00E6
LO14: 	DC.W BITPLANE1+[80*94] & 65535 
	DC.W $00EC,BITPLANE2+[80*94]/65536
	DC.W $00EE
LO24: 	DC.W BITPLANE2+[80*94] & 65535
	DC.W $00F4,BITPLANE3+[80*94]/65536  
	DC.W $00F6
LO34: 	DC.W BITPLANE3+[80*94] & 65535

DC.W $2901+[$100*103],$FFFE,$102
DELAY1: DC.W $F0

	DC.W $00E4,BITPLANE1+[80*103]/65536			
	DC.W $00E6
LO15: 	DC.W BITPLANE1+[80*103] & 65535 
	DC.W $00EC,BITPLANE2+[80*103]/65536
	DC.W $00EE
LO25: 	DC.W BITPLANE2+[80*103] & 65535
	DC.W $00F4,BITPLANE3+[80*103]/65536  
	DC.W $00F6
LO35: 	DC.W BITPLANE3+[80*103] & 65535

DC.W $2901+[$100*105],$FFFE,$180,$11F
DC.W $2901+[$100*107],$FFFE,$180,$22F
DC.W $2901+[$100*108],$FFFE,$180,$33F

DC.W $2901+[$100*110],$FFFE,$102
DELAY0: DC.W $F0

	DC.W $00E4,BITPLANE1+[80*110]/65536			
	DC.W $00E6
LO10: 	DC.W BITPLANE1+[80*110] & 65535 
	DC.W $00EC,BITPLANE2+[80*110]/65536
	DC.W $00EE
LO20: 	DC.W BITPLANE2+[80*110] & 65535
	DC.W $00F4,BITPLANE3+[80*110]/65536  
	DC.W $00F6
LO30: 	DC.W BITPLANE3+[80*110] & 65535

DC.W $0190,$0000 
DC.W $0192,$0FF0
DC.W $0194,$0DC0
DC.W $0196,$0A80
DC.W $0198,$0850
DC.W $019A,$0630
DC.W $019C,$0410      
DC.W $019E,$0222


DC.W $2901+[$100*111],$FFFE,$180,$44F
DC.W $2901+[$100*113],$FFFE,$180,$55f
DC.W $2901+[$100*115],$FFFE,$180,$66f
DC.W $2901+[$100*117],$FFFE,$180,$77f
DC.W $2901+[$100*119],$FFFE,$180,$88f
DC.W $2901+[$100*121],$FFFE,$180,$99f
DC.W $2901+[$100*123],$FFFE,$180,$aaf
DC.W $2901+[$100*125],$FFFE,$180,$bbf
DC.W $2901+[$100*127],$FFFE,$180,$ccf
DC.W $2901+[$100*129],$FFFE,$180,$ddf
DC.W $2901+[$100*131],$FFFE,$180,$eef
DC.W $2901+[$100*133],$FFFE,$180,$fff
DC.W $2901+[$100*135],$FFFE,$180,$ffe
DC.W $2901+[$100*137],$FFFE,$180,$ffd
DC.W $2901+[$100*139],$FFFE,$180,$ffc
DC.W $2901+[$100*141],$FFFE,$180,$ffb
DC.W $2901+[$100*143],$FFFE,$180,$ffa
DC.W $2901+[$100*145],$FFFE,$180,$ff9
DC.W $2901+[$100*147],$FFFE,$180,$ff8
DC.W $2901+[$100*149],$FFFE,$180,$ff7
DC.W $2901+[$100*151],$FFFE,$180,$ff6
DC.W $2901+[$100*153],$FFFE,$180,$ff5
DC.W $2901+[$100*155],$FFFE,$180,$ff4
DC.W $2901+[$100*157],$FFFE,$180,$ff3
DC.W $2901+[$100*159],$FFFE,$180,$ff2
DC.W $2901+[$100*161],$FFFE,$180,$ff1
DC.W $2901+[$100*163],$FFFE,$180,$ff0
DC.W $2901+[$100*165],$FFFE,$180,$fe0
DC.W $2901+[$100*167],$FFFE,$180,$fd0
DC.W $2901+[$100*169],$FFFE,$180,$fc0
DC.W $2901+[$100*171],$FFFE,$180,$fb0
DC.W $2901+[$100*173],$FFFE,$180,$fa0
DC.W $2901+[$100*175],$FFFE,$180,$f90
DC.W $2901+[$100*177],$FFFE,$180,$f80
DC.W $2901+[$100*179],$FFFE,$180,$f70
DC.W $2901+[$100*181],$FFFE,$180,$f60
DC.W $2901+[$100*183],$FFFE,$180,$f50
DC.W $2901+[$100*185],$FFFE,$180,$f40
DC.W $2901+[$100*187],$FFFE,$180,$f30
DC.W $2901+[$100*189],$FFFE,$180,$f20
DC.W $2901+[$100*191],$FFFE,$180,$f10


DC.W $2901+[$100*193],$FFFE,$102
DELAY6: DC.W $F0

DC.W $180,0

	DC.W $00E4,BITPLANE1+[80*193]/65536
	DC.W $00E6
LO16: 	DC.W BITPLANE1+[80*193] & 65535 
	DC.W $00EC,BITPLANE2+[80*193]/65536
	DC.W $00EE
LO26: 	DC.W BITPLANE2+[80*193] & 65535
	DC.W $00F4,BITPLANE3+[80*193]/65536
	DC.W $00F6
LO36: 	DC.W BITPLANE3+[80*193] & 65535

DC.W $0190,$0000 
DC.W $0192,$0780
DC.W $0194,$0670
DC.W $0196,$0560
DC.W $0198,$0450
DC.W $019A,$0340
DC.W $019C,$0230      
DC.W $019E,$0890

DC.W $2901+[$100*196],$FFFE,$102
DELAY7: DC.W $F0

	DC.W $00E4,BITPLANE1+[80*196]/65536
	DC.W $00E6
LO17: 	DC.W BITPLANE1+[80*196] & 65535 
	DC.W $00EC,BITPLANE2+[80*196]/65536
	DC.W $00EE
LO27: 	DC.W BITPLANE2+[80*196] & 65535
	DC.W $00F4,BITPLANE3+[80*196]/65536
	DC.W $00F6
LO37: 	DC.W BITPLANE3+[80*196] & 65535

DC.W $2901+[$100*199],$FFFE,$102
DELAY8: DC.W $F0

	DC.W $00E4,BITPLANE1+[80*199]/65536
	DC.W $00E6
LO18: 	DC.W BITPLANE1+[80*199] & 65535 
	DC.W $00EC,BITPLANE2+[80*199]/65536
	DC.W $00EE
LO28: 	DC.W BITPLANE2+[80*199] & 65535
	DC.W $00F4,BITPLANE3+[80*199]/65536
	DC.W $00F6
LO38: 	DC.W BITPLANE3+[80*199] & 65535


DC.W $2901+[$100*204],$FFFE,$102
DELAY9: DC.W $F0

	DC.W $00E4,BITPLANE1+[80*204]/65536
	DC.W $00E6
LO19: 	DC.W BITPLANE1+[80*204] & 65535 
	DC.W $00EC,BITPLANE2+[80*204]/65536
	DC.W $00EE
LO29: 	DC.W BITPLANE2+[80*204] & 65535
	DC.W $00F4,BITPLANE3+[80*204]/65536
	DC.W $00F6
LO39: 	DC.W BITPLANE3+[80*204] & 65535

DC.W $2901+[$100*210],$FFFE,$102
DELAY10: DC.W $F0

	DC.W $00E4,BITPLANE1+[80*210]/65536
	DC.W $00E6
LO110: 	DC.W BITPLANE1+[80*210] & 65535 
	DC.W $00EC,BITPLANE2+[80*210]/65536
	DC.W $00EE
LO210: 	DC.W BITPLANE2+[80*210] & 65535
	DC.W $00F4,BITPLANE3+[80*210]/65536
	DC.W $00F6
LO310: 	DC.W BITPLANE3+[80*210] & 65535

DC.W $FFDF,$FFFE


DC.W $2901+[$100*216],$FFFE,$102
DELAY11: DC.W $F0

	DC.W  $00E4,BITPLANE1+[80*216]/65536
	DC.W  $00E6
LO111: 	DC.W BITPLANE1+[80*216] & 65535 
	DC.W  $00EC,BITPLANE2+[80*216]/65536
	DC.W  $00EE
LO211: 	DC.W BITPLANE2+[80*216] & 65535
	DC.W  $00F4,BITPLANE3+[80*216]/65536
	DC.W  $00F6
LO311: 	DC.W BITPLANE3+[80*216] & 65535

DC.W $2901+[$100*223],$FFFE

DC.W $00E0,BITPLANE4+[160*224]/65536			
DC.W $00E2,BITPLANE4+[160*224] & 65535 
DC.W $00E8,BITPLANE5+[160*224]/65536			
DC.W $00Ea,BITPLANE5+[160*224] & 65535	
DC.W $00F0,BITPLANE6+[160*224]/65536
DC.W $00F2,BITPLANE6+[160*224] & 65535

DC.W $0180,$0000
DC.W $0182,$0FFF
DC.W $0184,$0CCE
DC.W $0186,$0AAC
DC.W $0188,$077B
DC.W $018A,$055A
DC.W $018C,$0000
DC.W $018E,$0000


DC.W $2901+[$100*225],$FFFE,$102
DELAY12: DC.W $F0

	DC.W  $00E4,BITPLANE1+[80*225]/65536
	DC.W  $00E6
LO112: 	DC.W BITPLANE1+[80*225] & 65535 
	DC.W  $00EC,BITPLANE2+[80*225]/65536
	DC.W  $00EE
LO212: 	DC.W BITPLANE2+[80*225] & 65535
	DC.W  $00F4,BITPLANE3+[80*225]/65536
	DC.W  $00F6
LO312: 	DC.W BITPLANE3+[80*225] & 65535

DC.W $2901+[$100*240],$FFFE,$102
DELAY13: DC.W $F0

	DC.W  $00E4,BITPLANE1+[80*240]/65536
	DC.W  $00E6
LO113: 	DC.W BITPLANE1+[80*240] & 65535 
	DC.W  $00EC,BITPLANE2+[80*240]/65536
	DC.W  $00EE
LO213: 	DC.W BITPLANE2+[80*240] & 65535
	DC.W  $00F4,BITPLANE3+[80*240]/65536
	DC.W  $00F6
LO313: 	DC.W BITPLANE3+[80*240] & 65535

DC.L $FFFFFFFE 				;FIN LISTE COPPER
EVEN
FINDEMO:
