BLTDDaT=0
dmaconr=2
vposr=4
vhposr=6
dskdatr=8
joy0dat=10
joy1dat=12
clxdat=14
adkconr=16
pot0dat=18
pot1dat=20
potgor=22
serdatr=24
dksbytr=26
intenar=28
intreqr=30
dskpth=32
dskptl=34
dsklen=36
dskdat=38
refptr=40
vposw=42
vhposw=44
copcon=46
serdat=48
serper=50
potgo=52
joytest=54
strequ=56
strvbl=58
strhor=60
strlong=62
bltcon0=64
bltcon1=66
bltafwm=68
bltalwm=70
bltcpth=72
bltcptl=74
bltbpth=76
bltbptl=78
bltapth=80
bltaptl=82
bltdpth=84
bltdptl=86
bltsize=88
bltcmod=96
bltbmod=98
bltamod=100
bltdmod=102
bltcdat=112
bltbdat=114
bltadat=116
dsksync=126
cop1lch=128
cop1lcl=130
cop2lch=132
cop2lcl=134
copjmp1=136
copjmp2=138
copins=140
diwstrt=142
diwstop=144
ddfstrt=146
ddfstop=148
dmacon=150
clxcon=152
intena=154
intreq=156
adkcon=158
aud0lch=160
aud0lcl=162
aud0len=164
aud0per=166
aud0vol=168
aud0dat=170
aud1lch=176
aud1lcl=178
aud1len=180
aud1per=182
aud1vol=184
aud1dat=186
aud2lch=192
aud2lcl=194
aud2len=196
aud2per=198
aud2vol=200
aud2dat=202
aud3lch=208
aud3lcl=210
aud3len=212
aud3per=214
aud3vol=216
aud3dat=218
bpl1pth=224
bpl1ptl=226
bpl2pth=228
bpl2ptl=230
bpl3pth=232
bpl3ptl=234
bpl4pth=236
bpl4ptl=238
bpl5pth=240
bpl5ptl=242
bpl6pth=244
bpl6ptl=246
bplcon0=256
bplcon1=258
bplcon2=260
bpl1mod=264
bpl2mod=266
bpl1dat=272
bpl2dat=274
bpl3dat=276
bpl4dat=278
bpl5dat=280
bpl6dat=282
spr0pth=288
spr0ptl=290
spr1pth=292
spr1ptl=294
spr2pth=296
spr2ptl=298
spr3pth=300
spr3ptl=302
spr4pth=304
spr4ptl=306
spr5pth=308
spr5ptl=310
spr6pth=312
spr6ptl=314
spr7pth=316
spr7ptl=318
spr0pos=320
spr0ctl=322
spr0data=324
spr0datb=326
spr1pos=328
spr1ctl=330
spr1data=332
spr1datb=334
spr2pos=336
spr2ctl=338
spr2data=340
spr2datb=342
spr3pos=344
spr3ctl=346
spr3data=348
spr3datb=350
spr4pos=352
spr4ctl=354
spr4data=356
spr4datb=358
spr5pos=360
spr5ctl=362
spr5data=364
spr5datb=366
spr6pos=368
spr6ctl=370
spr6data=372
spr6datb=374
spr7pos=376
spr7ctl=378
spr7data=380
spr7datb=382
color00=384
color01=386
color02=388
color03=390
color04=392
color05=394
color06=396
color07=398
color08=400
color09=402
color10=404
color11=406
color12=408
color13=410
color14=412
color15=414
color16=416
color17=418
color18=420
color19=422
color20=424
color21=426
color22=428
color23=430
color24=432
color25=434
color26=436
color27=438
color28=440
color29=442
color30=444
color31=446
pra=$bfe001
prb=$bfe101
ddra=$bfe201
ddrb=$bfe301
talo=$bfe401
tahi=$bfe501
tblo=$bfe601
tbhi=$bfe701
sdr=$bfec01
icr=$bfed01
cra=$bfee01
crb=$bfef01


null=0
cust=$dff000
npause=4
startddf=48 ;48 en mode scrolling / 56 en mode non-scrolling
stopddf=216 ;208
startdiw=$2c6b ; 2181
enddiw=$2cd7 ;2cc1
s_wait=$2e
; ----- exec.library     -----
openlibrary= 	-408
closelibrary= 	-414
forbid= 	-132
permit= 	-138
; ----- dos.library   	 -----
open=		-30
close=		-36
read=		-42
write=		-48
examine=	-102
; ----- absolute address -----

allocentry=-222
freeentry=-228

nbr_alloc=13

debut:		move.l	4.w,a6
		lea	dosname,a1		;open dos.library
		jsr	openlibrary(a6)
		move.l	d0,dosbase


	;ouvre une fenetre
		move.l	#window1,d1		;ouvre une fenetre
		move.l	#1005,d2
		move.l	dosbase,a6
		jsr	open(a6)
		move.l	d0,handle
	;ecris texte ph1
		move.l	handle,d1
		move.l	#ph1,d2
		move.l	#ph1_end-ph1,d3
		jsr	write(a6)

	;reserve memoire
		move.l	4.w,a6
		lea	memlist(pc),a0
		jsr	allocentry(a6)
		move.l	d0,list
		bclr	#31,d0
		bne	error

	;met les adresses allocatee dans memlist
		moveq	#nbr_alloc-1,d7	;nombre d'entry
		move.l	d0,a0
		add.w	#16,a0
		lea	memlist+16(pc),a1
initadr:	move.l	(a0)+,(a1)+
		move.l	(a0)+,(a1)+
		dbra	d7,initadr

		bra.s	run1



intro_len=15804
muzax_len=19784
future1_len=91524
menu_len=20172
histoire_len=108656
age_len=86308
grotte_len=98528
ruines_len=98356
gameover_len=6592
fame_len=3040
strange_sound_len=10850
future2_len=96460
theend_len=14004
;**************************
list:		dc.l	0	
memlist:	blk.b	14,0
		dc.w	nbr_alloc
intro:		dc.l	$4,intro_len
muzax:		dc.l	$4,muzax_len
future1:	dc.l	$4,future1_len
menu:		dc.l	$4,menu_len
histoire:	dc.l	$4,histoire_len
age:		dc.l	$4,age_len
grotte:		dc.l	$4,grotte_len
ruines:		dc.l	$4,ruines_len
future2:	dc.l	$4,future2_len
gameover:	dc.l	$4,gameover_len
fame:		dc.l	$4,fame_len
strange_sound:	dc.l	$4,strange_sound_len
theend:		dc.l	$4,theend_len
;************************

run1:		bsr	read_files

		bsr	begin

	;libere les memoires utilisee
		move.l	4.w,a6
		move.l	list(pc),a0
		jsr	freeentry(a6)

		move.l	handle,d1
		move.l	dosbase,a6
		jsr	close(a6)

		move.l	4.w,a6
		move.l	dosbase,a1
		jsr	closelibrary(a6)

		clr.l	d0	
		rts


error:		move.w	#$f00,color00+$dff000
		bra.s	error

;lire plusieurs fichiers
;adr.nom du fichier.l,dest.l,taille.l
read_files:	lea	load_tab(pc),a2		
read_files2:	move.l	dosbase(pc),a6
		move.l	#1005,d2
		move.l	(a2)+,d1	;fichier
		jsr	open(a6)
		move.l	d0,file
		move.l	d0,d1
		move.l	(a2)+,a1	;destination
		move.l	(a1),d2
		move.l	(a2)+,d3	;longueur
		jsr	read(a6)
		move.l	file,d1
		jsr	close(a6)
		tst.l	(a2)
		bne.s	read_files2
		rts

load_tab:
		dc.l	muzax_name,muzax,muzax_len
		dc.l	intro_name,intro,intro_len
		dc.l	future1_name,future1,future1_len
		dc.l	menu_name,menu,menu_len
		dc.l	histoire_name,histoire,histoire_len
		dc.l	age_name,age,age_len
		dc.l	grotte_name,grotte,grotte_len
		dc.l	ruines_name,ruines,ruines_len
		dc.l	future2_name,future2,future2_len
		dc.l	gameover_name,gameover,gameover_len
		dc.l	fame_name,fame,fame_len
		dc.l	strange_sound_name,strange_sound,strange_sound_len
		dc.l	theend_name,theend,theend_len
		dc.l	0			;fin


dosbase:	dc.l	0
dosname:	dc.b	"dos.library",0
file:		dc.l	0
muzax_name:	dc.b	"df0:muzax",0
even
intro_name:	dc.b	"df0:intro",0
even
future1_name:	dc.b	"df0:future1",0
even
menu_name:	dc.b	"df0:menu",0
even
histoire_name:	dc.b	"df0:histoire",0
even
grotte_name:	dc.b	"df0:grotte",0
even
ruines_name:	dc.b	"df0:ruines",0
even
age_name:	dc.b	"df0:age",0
even
future2_name:	dc.b	"df0:future2",0
even
gameover_name:	dc.b	"df0:gameover",0
even
fame_name:	dc.b	"df0:fame",0
even
strange_sound_name:
		dc.b	"df0:strange_sound",0
even
theend_name:	dc.b	"df0:theend",0
even
window1:	dc.b	"con:0/10/400/100/*UBI SOFT PRESENTS*",0
even
ph1:	dc.b	$9b,"1;30;41",$6d,"-< I L Y A D >- ",$0a,$0d
	dc.b	$9b,"3;31;40;",$6d,"Version Resident Memory "
	dc.b	"by O.Regis",$0a,$0d
	dc.b	"need 1.5 megabyte or more !! ",$a,$d
even
ph1_end:
even
even
handle:		dc.l	0


v:
begin:
		movem.l	d0-d7/a0-a6,-(sp)
		lea	cust,a6
		lea	v(pc),a5

		move.w	#6*50,d0	;5 secondes attentes
wbwait1:	move.w	d1,color00(a6)
		add.w	#333,d1
		tst.b	vhposr(a6)
		bne.s	wbwait1

wbwait2:	move.w	d1,color00(a6)
		add.w	#123,d1
		cmp.b	#255,vhposr(a6)
		bne.s	wbwait2
		dbra	d0,wbwait1

		move.l	$6c.w,oldirq3-v(a5)
		move.w	intenar(a6),oldint-v(a5)
		move.w	#$7fff,intena(a6)
		move.w	dmaconr(a6),olddma-v(a5)
		move.w	#$7fff,dmacon(a6)
		or.w	#$8000,oldint-v(a5)
		or.w	#$8000,olddma-v(a5)

		bsr	start

		move.w	#$7fff,intena(a6)
		move.w	#$7fff,dmacon(a6)
		move.l	oldirq2(pc),$68
		move.l	oldirq3(pc),$6c 
		move.w	oldint(pc),intena(a6)
		move.w	olddma(pc),dmacon(a6)
		move.w	copjmp1(a6),d0
		movem.l	(sp)+,d0-d7/a0-a6
		rts

oldirq3:	dc.l	0
oldirq2:	dc.l	0
oldint:		dc.w	0
olddma:		dc.w	0

start:


		bsr	load_muzak
		bsr	load_strange_sound

		clr.w	$13014	;init first !!
		move.l	fame(pc),a0
		jsr	0(a0)	;init hall_of_fame !!
		move.w	#1,$13014	;c'est bon maintenent

start2:		bsr	execute_intro

		bsr	execute_level1

do_menu:	tst.w	$1300e
		beq.s	execute_gameover
*************
*VRAIMENT DANS LE JEU MAINTENENT CAR LE MENU APPARAIT
*************

		bsr.L	execute_menu
		move.w	$1300e,d0
		cmp.w	#1,d0
		beq.s	execute_histoire
		cmp.w	#2,d0
		beq.s	execute_age
		cmp.w	#3,d0
		beq.s	execute_grotte
		cmp.w	#4,d0
		beq.s	execute_ruines
		cmp.w	#5,d0
		beq.s	execute_future2
		bra.s	start2



execute_gameover:
		move.l	gameover(pc),a0
		jsr	0(a0)
		move.l	fame(pc),a0
		jsr	0(a0)
		bra.L	start2


execute_future2:
		move.l	future2(pc),a0
		jsr	0(a0)

		tst.w	$1300e
		beq.s	execute_gameover		

		move.l	theend(pc),a0
		jsr	0(a0)

		move.l	fame(pc),a0
		jsr	0(a0)

		bra.s	start2

execute_ruines:
		move.l	ruines(pc),a0
		jsr	0(a0)
		bra.s	do_menu

execute_grotte:
		move.l	grotte(pc),a0
		jsr	0(a0)
		bra.s	do_menu

execute_age:
		move.l	age(pc),a0
		jsr	0(a0)
		bra.L	do_menu

execute_histoire:
		move.l	histoire(pc),a0
		jsr	0(a0)
		bra.L	do_menu


execute_menu:	move.l	menu(pc),a0
		jsr	0(a0)
		rts

execute_level1:	move.l	future1(pc),a0
		jsr	0(a0)
		rts

execute_intro:	move.l	intro(pc),a0
		jsr	0(a0)
		rts

load_muzak:	move.l	muzax(pc),a0
		lea	$e000,a1
		move.w	#muzax_len/4,d7
lmuz2:		move.l	(a0)+,(a1)+
		dbra	d7,lmuz2
		rts

load_strange_sound:
		move.l	strange_sound(pc),a0
		lea	$8508,a1
		move.w	#strange_sound_len/4,d7
lstr2:		move.l	(a0)+,(a1)+
		dbra	d7,lstr2
		rts
	

