;POUR CHARGER LES DATAS TAPEZ:
;RI		RETURN
;PIC.RAW	RETURN
;IMAGE		RETURN RETURN
;
;
;PUIS TAPEZ
;G BEGIN	RETURN RETURN
;
;SUPPRIMEZ LES LIGNES SUIVANTES SI VOTRE VERSION DU SEKA
;NE COMPORTE PAS LA COMMANDE Y

>EXTERN "SUPERHIRES_RAW",IMAGE

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
;==================================
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

BSR.L MET_ADRESSES		;MET ADRESSE IMAGE DANS NOUVELLE LISTE COPPER

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

WAIT:
CMP.B #$E0,$DFF006		;ATTENDANT 200 IEME LIGNE RASTER
BNE.S WAIT			;SINON RETOURNE A WAIT

BTST	#6,$BFE001		;ATTENDANT PRESSION SUR BOUTON GAUCHE SOURIS
BNE.S	WAIT			;SINON RETOURNE A WAIT
 				;SI OUI  FIN
END: 				;FIN:	
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)

	
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
;====================
MET_ADRESSES:			;CHARGE ADRESSE DE L'IMAGE DANS LA COPPER LIST
MOVE.L #IMAGE,D0 		;MET ADRESSE DE L'IMAGE DANS D0 (MOT LONG =
				;PAR EXEMPLE $0005 0000 = D0
MOVE.W D0,LO1			;MET $0000 DANS LO1
SWAP D0				;INVERSE D0 = $0000 0005
MOVE.W D0,HI1			;MET $0005 DANS HI1
SWAP D0				;INVERSE D0 = $0005 0000
ADD.L #256*160,D0		;AJOUTE LA LONGUEUR D'UN PLAN DANS D0
				;ET RECOMMENCE POUR LE PLAN SUIVANT
MOVE.W D0,LO2
SWAP D0
MOVE.W D0,HI2

RTS
;====================
EVEN				;NOTRE LISTE COPPER
NEWCOPPER:   
	DC.W	$008E,$2881	;DIMENSIONS DE L'ECRAN
	DC.W	$0090,$28D1	;256 LIGNES

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

	;POINTEURS ADRESSE DES PLANS DE L'IMAGE

	DC.W $00E0
HI1:	DC.W 0				;PLAN 1		
	DC.W $00E2
LO1:	DC.W 0 
	DC.W $00E4
HI2:	DC.W 0				;PLAN 2
	DC.W $00E6
LO2:	DC.W 0

	;REGISTRE POUR CHOISIR RESOLUTION	

	DC.W	$0100,$2240		;2 PLANS SUPER HIRES

	;8;BIT 15 HIRES		:0	HAUTE RESOLUTION  	NON = 0 
;2	;4;BIT 14 BPU2		:0      NBRE DE PLANS     	0   SI 1 = +4 PLANS
	;2;BIT 13 BPU1		:1	      2			1   SI 1 = +2 PLANS
	;1;BIT 12 BPU0		:0				0   SI 1 = +1 PLANS

	;8;BIT 11 HOMOD		:0	MODE HAM 		NON = 0
;2	;4;BIT 10 DBPLF		:0	DUAL PLAYFIELD		NON = 0
	;2;BIT 09 COLOR		:1	COULEURS  		OUI = 1
	;1;BIT 08 GAUD		:0

	;8;BIT 07 INUTILISE	:0				0
;4	;4;BIT 01 SUPER HIRES	:1				1
	;2;BIT 05 INUTILISE	:0				0
	;1;BIT 04 INUTILISE	:0				0

	;8;BIT 03 LPEN		:0	CRAYON OPTIQUE		NON = 0
;0	;4;BIT 02 LACE		:0	MODE INTERLACE		NON = 0
	;2;BIT 01 ERSY		:0	SYNCHRO EXTERNE		NON = 0
	;1;BIT 00 INUTILISE	:0				0
	

	;DECALAGE ECRAN - INUTILISE ICI

	DC.W	$0102,$0000

	;PRIORITE DES PLANS ET SPRITES - INUTILISE ICI

	DC.W 	$0104,$0000

	;MODULOS DES PLANS

	DC.W	$0108,0	;MODULOS PLANS PAIRS
	DC.W 	$010A,0	;MODULOS PLANS IMPAIRS

	;POINTEURS DES SPRITES - MIS A 0 SI PAS DE SPRITES

	DC.W	$0120,$0000,$0122,$0000
	DC.W	$0124,$0000,$0126,$0000
	DC.W	$0128,$0000,$012A,$0000	;PAS DE SPRITES
	DC.W	$012C,$0000,$012E,$0000
	DC.W	$0130,$0000,$0132,$0000
	DC.W	$0134,$0000,$0136,$0000
	DC.W	$0138,$0000,$013A,$0000
	DC.W	$013C,$0000,$013E,$0000

	;REGISTRES DES COULEURS

	
	;             %0000 00 00 00 00 00 00

	;DC.W	$0180,%0000 10 10 10 10 10 10	;COULEUR 00
	;DC.W	$0182,%0000 00 10 00 10	00 10	;COULEUR 01
	;DC.W	$0184,%0000 11 10 11 10	11 10	;COULEUR 02
	;DC.W	$0186,%0000 01 10 01 10	01 10	;COULEUR 03

	;DC.W	$0188,%0000 10 00 10 00 10 00	;COULEUR 04
	;DC.W	$018A,%0000 00 00 00 00	00 00	;COULEUR 05
	;DC.W	$018C,%0000 11 00 11 00	11 00	;COULEUR 06
	;DC.W	$018E,%0000 01 00 01 00	01 00	;COULEUR 07

	;DC.W	$0190,%0000 10 11 10 11 10 11	;COULEUR 08
	;DC.W	$0192,%0000 00 11 00 11	00 11	;COULEUR 09
	;DC.W	$0194,%0000 11 11 11 11	11 11	;COULEUR 10
	;DC.W	$0196,%0000 01 11 01 11	01 11	;COULEUR 11

	;DC.W	$0198,%0000 10 01 10 01 10 01	;COULEUR 12
	;DC.W	$019A,%0000 00 01 00 01	00 01	;COULEUR 13
	;DC.W	$019C,%0000 11 01 11 01	11 01	;COULEUR 14
	;DC.W	$019E,%0000 01 01 01 01	01 01	;COULEUR 15

	DC.W	$0180,%0000101010101010	;COULEUR 00
	DC.W	$0182,%0000001000100010	;COULEUR 01
	DC.W	$0184,%0000111011101110	;COULEUR 02
	DC.W	$0186,%0000011001100110	;COULEUR 03
	DC.W	$0188,%0000100010001000	;COULEUR 04
	DC.W	$018A,%0000000000000000	;COULEUR 05
	DC.W	$018C,%0000110011001100	;COULEUR 06
	DC.W	$018E,%0000010001000100	;COULEUR 07
	DC.W	$0190,%0000101110111011	;COULEUR 08
	DC.W	$0192,%0000001100110011	;COULEUR 09
	DC.W	$0194,%0000111111111111	;COULEUR 10
	DC.W	$0196,%0000011101110111	;COULEUR 11
	DC.W	$0198,%0000100110011001	;COULEUR 12
	DC.W	$019A,%0000000100010001	;COULEUR 13
	DC.W	$019C,%0000110111011101	;COULEUR 14
	DC.W	$019E,%0000010101010101	;COULEUR 15

	;INSTRUCTIONS POUR AVOIR UN ECRAN PAL (256 LIGNES DE HAUT)

	DC.W $FFDF,$FFFE

	DC.L $FFFFFFFE ;FIN LISTE COPPER
	EVEN

IMAGE:  BLK.B 160*256*2,0 ;RESEVATION MEMOIRE POUR IMAGE

;DIMENSIONS DE L'IMAGE
;		1280 PIXELS DE LARGE SOIT 160 MOTS
;		256 PIXELS DE HAUT
;		2 PLANS SOIT 4 COULEURS SUPER HIRES

FINDEMO:
