***************************************************************************
*     File Select V1.0   		by   Fabrice Lienhardt		  *
*					     7 rue de Leicester		  *
*					     67000 Strasbourg (France)	  *
*   (This is public domain)						  *
*   100% assembler - Written with Devpac Assembler			  *
***************************************************************************

	incdir	":include/"		:Open libraries
	include	exec/exec_lib.i
	include	intuition/intuition.i
	include	intuition/intuition_lib.i
	include	graphics/graphics_lib.i
	include libraries/dos_lib.i
	include libraries/dos.i

	lea	intname,a1
	CALLEXEC OldOpenLibrary		:Open Intuition
	tst.l	d0
	beq	int_error		:quit if error
	move.l	d0,_IntuitionBase

	lea	grafname,a1
	CALLEXEC OldOpenLibrary		:Open Graphics
	tst.l	d0
	beq	gfx_error		:quit if error
	move.l	d0,_GfxBase

	lea.l	dosname,a1
	CALLEXEC OldOpenLibrary		:Open Dos
	tst.l	d0
	beq	dos_error		:quit if error
	move.l	d0,_DOSBase

***************************************************************************

	move.l #$10000,d1		:if possible FASTRAM
	move.l #1734,d0			:ram with 34*51 characters
	CALLEXEC AllocMem		:allocate memory for buffer (oblig.!)
	tst.l d0
	beq mem_error			:if error, quit
	move.l d0,filebuffer

	lea.l	NewScreen,a0
	CALLINT	OpenScreen		:Open Screen for my example
	move.l	d0,screenhd

*					:Prepare text in filewindow
	lea.l gadload,a6		:or gadsave or gaddelete !!!!
	move.l a6,gad78text
	lea.l titleload,a6		:or titlesave or titledelete !!!
	move.l a6,filetitle
	bsr fileselect			:and call routine fileselect

	nop				:-----------------------------------
	nop				:Results:
	nop				: address of filename in register a0
	nop				:		 or a0 = 0 if cancel
	nop				:-----------------------------------
	nop				:etc etc etc....(your routines to
	nop				: load or save or delete a file).
	nop
	nop				:for my example, print the filename
	nop				:in CLI window	
	move.l a0,d6	
 	CALLDOS Output
	move.l d0,d1
	move.l d0,d7
	move.l #fileselmsg,d2
	move.l #60,d3
	CALLDOS Write
	tst.l d6
	beq nofileselected
	move.l d7,d1
	move.l #fisel,d2
	move.l #17,d3
	CALLDOS Write
	move.l d6,a5
	moveq #0,d3
nbchar:
	addq #1,d3
	tst.b (a5)+
	bne nbchar
	addq #1,d3
	subq #1,a5
	move.b #$0d,(a5)+
	move.b #$0a,(a5)
	move.l d7,d1
	move.l #filename,d2
	CALLDOS Write
	bra the_end			:close all and return to CLI

nofileselected:
	move.l d7,d1
	move.l #nofilesel,d2
	move.l #18,d3
	CALLDOS Write
	
the_end:
	move.l	screenhd,a0
	CALLINT CloseScreen		:Close Screen
scr_error:
	move.l filebuffer,a1
	move.l #1734,d0
	CALLEXEC FreeMem		:free memory for file buffer
mem_error:
	move.l _DOSBase,a1
	CALLEXEC CloseLibrary		:Close dos library
dos_error:
	move.l	_GfxBase,a1
	CALLEXEC CloseLibrary		:Close gfx library
gfx_error:
	move.l	_IntuitionBase,a1
	CALLEXEC CloseLibrary		:Close int library
int_error:
	rts

***************************************************************************
* Sub-routine to select a filename in a directory -------------------------
***************************************************************************

* Sorry but I am to lazy to traduce all comments in English !!!
* It were be traduced in version 1.1 !!!
	
fileselect:		
	lea.l filewindow,a0	
	CALLINT	OpenWindow		:Open window Load-Save-Delete
	move.l d0,filewinhd

	move.l d0,a0
	move.l wd_RPort(a0),fileRPort	:Determination RastPort
	move.l wd_UserPort(a0),fileUPort:Determination UserPort

filedrive:
	bsr filerefreshfile		:effacer fichier
	move.b #0,flaglock		:lock encore ferme
	move.l #filedrawer,d1		:adresse du drawer
	move.l #$fffffffe,d2		:mode lecture
	CALLDOS Lock			:Lock
	tst.l d0
	beq lockerr			:si erreur afficher
	move.b #1,flaglock		:lock ouvert
	move.l d0,lockhd

	move.l lockhd,d1
	move.l #fileinfo,d2		:buffer = fileinfo
	CALLDOS Examine			:Examiner titre disquette
	tst.l d0			:erreur?
	beq lockerr			:si oui determiner pourquoi

	bra filelecture

lockerr:
	bsr fileunlock			:sinon refermer lock car erreur
	bsr fileinitmover		:initialiser mover
	lea.l fileafferr1,a0
	move.b #1,affstatus
	bsr fileaffstatus		:'No disk in drive'
	move.b #1,flaglect
	move.l screenhd,a0
	CALLINT ScreenToFront		:revenir ecran apres erreur
	bra fileinitbcle

filelecture:
	bsr fileinitmover		:initialiser prop gadget
	move.b #0,flaglect		:lecture possible = nouv. disk

fileinitbcle:
	move.b #0,d
	move.b #0,f
filebigbcle:
	move.l fileUPort,a0
	CALLEXEC GetMsg			:lire si message dans port
	tst.l d0
	beq filenomsg			:si non continuer
	move.l d0,a1
	move.l im_Class(a1),d4
	move.l im_Code(a1),d5
	move.l im_IAddress(a1),a4
	CALLEXEC ReplyMsg
	bra filelectgadget

filenomsg:
	tst.b flaglect			:lecture directory en cours?
	bne filenolect

	move.l lockhd,d1
	move.l #fileinfo+2,d2
	CALLDOS ExNext			:si oui continuer a lire
	tst.l d0
	bne filenoend			:si terminer alors fileend
	bsr fileclrstatus
	move.b d,d0
	add.b f,d0
	tst.b d0
	beq filezero			:si fin et pas de fichiers?
	bra fileend
filezero:
	move.b #1,flaglect		:alors arreter lecture 
	bsr fileunlock			:unlock si possible
	bra filebigbcle

filenoend:
	lea.l fileinfo+8,a0		:Tri de la memoire buffer
	move.b (a0),d7			:d7,premiere lettre du titre
	cmp.b #$5b,d7
	bcc filenomajuscule		:test si majuscule pour tri
	add.b #$20,d7			:egalite majuscule-minuscule
filenomajuscule:
	tst.l fileinfo+4
	bpl filedir			:si positif alors directory
	move.b #1,affstatus
	lea.l fileinfo+8,a0
	bsr fileaffstatus		:afficher titre
	add.b #1,f			:sinon incrementer nb fichiers
	moveq #1,d6			:et preparer couleur
	moveq #1,d1
	add.b d,d1			:debut des fichiers = d+1
	move.b f,d2
	add.b d,d2			:fin fichiers = f+d
	bra filesavename		:puis comparer et memoriser
filedir:
	move.b #3,affstatus
	lea.l fileinfo+8,a0
	bsr fileaffstatus		:afficher titre
	add.b #1,d			:si dir alors incrementer nb dir
	moveq #3,d6			:et preparer couleur
	moveq #1,d1			:debut des fichiers = 1
	move.b d,d2			:fin fichiers = d
filesavename:
	cmp.b d1,d2			:dernier fichier atteint?
	beq filemove			:si oui alors deplacer buffer
	move.l d1,d3
	subq #1,d3
	mulu #34,d3			:offset nom (d1) dans buffer
	move.l filebuffer,a0
	add.l d3,a0
	move.b (a0),d3			:d3 = premiere lettre nom (d1)
	cmp.b #$5b,d3
	bcc filenomajuscule2		:test si majuscule pour tri
	add.b #$20,d3			:egalite majuscule-minuscule
filenomajuscule2:
	cmp.b d7,d3
	bcs filenolower			:pas inferieur alors continuer
	bra filemove			:sinon deplacer buffer
filenolower:
	addq #1,d1
	bra filesavename		:passer a nom suivant et boucler
filemove:
	moveq #1,d3
	add.b d,d3			:transfert des titres dans buffer
	add.b f,d3
	mulu #34,d3
	move.l filebuffer,a0
	add.l a0,d3
	move.l d3,a3			:a3 = (f+d+1)*34 ad fin transfert
	sub.l #34,d3
	move.l d3,a2			:a2 = a3-34 adresse debut transfert
	moveq #1,d3
	add.b f,d3
	add.b d,d3
	sub.b d1,d3			:d3 = (f+d+1-d1) nb de transferts
filetransfert:
	moveq #8,d4
filetrans:
	move.l -(a2),-(a3)		:transfert 32 octets
	subq #1,d4
	bne filetrans
	move.w -(a2),-(a3)		:+2 octets
	subq #1,d3
	bne filetransfert
	clr.l d3			:preparer sauvegarde nom
	move.l d1,d3
	subq #1,d3
	mulu #34,d3
	lea.l fileinfo+8,a0		:adresse debut source
	move.l filebuffer,a1
	add.l d3,a1			:adresse debut destination
	moveq #8,d4
filecopyname:
	move.l (a0)+,(a1)+		:recopie du nom titre
	subq #1,d4
	bne filecopyname
	move.b #0,(a1)+			:placer fin nom 
	move.b d6,(a1)			:placer couleur 

	move.b f,d0
	add.b d,d0
	cmp.b #50,d0
	bne filebigbcle
	lea.l fileafferr3,a0		:si > 50 titres arreter et
	move.b #1,affstatus		:'Directory truncated'
	bsr fileaffstatus
fileend:
	move.b #1,flaglect
	bsr fileunlock			:plus de lectures a effectuer
	lea.l gadget79,a0
	move.l filewinhd,a1
	move.l #0,a2
	moveq #5,d0
	moveq #0,d1			:mettre tous les parametres
	moveq #0,d2
	moveq #0,d3
	clr.l d5
	move.b f,d5
	add.b d,d5
	cmp.b #11,d5
	bcs filenogreater		:preparer prop gadget
	move.l #$ffff,d4
	divu d5,d4
	and.l #$0000ffff,d4
	mulu #10,d4			:taille mover = $ffff*10/(f+d)
	bra fileprop
filenogreater:
	move.l #$ffff,d4
fileprop:
	CALLINT ModifyProp		:modifier le prop gadget
	move.b #1,fileaffstart		:--affichage a partir du 1er titre--
	clr.l d2			:affichage des noms de fichier
	move.b f,d2
	add.b d,d2			:calculer nombre de fichiers presents
	cmp.b #11,d2
	bcs minusdix
	moveq #10,d2			:si > 10 alors forcer a 10
minusdix:
	move.l fileRPort,a0
	lea.l affnames,a1		:initialiser parametres
	moveq #0,d0
	moveq #0,d1
	move.l filebuffer,a3		:afficher 10 premiers titres
filenamesbcle:
	moveq #8,d0	
	lea.l names,a2
filecopynames:
	move.l (a3)+,(a2)+		:32 caracteres a copier
	subq #1,d0
	bne filecopynames
	move.w (a3),(a2)+		:+2 caracteres
	addq #1,a3
	move.b (a3)+,affnames		:placer couleur pour dir ou file
	movem.l a0-a3/d0-d2,-(sp)	:sauver parametres
	CALLINT PrintIText		:afficher nom du fichier
	movem.l (sp)+,a0-a3/d0-d2	:recuperer parametres
	addq #8,d1
	subq #1,d2
	bne filenamesbcle
	bra filebigbcle

filenolect:
	clr.l d0
	move.b f,d0
	add.b d,d0
	cmp.b #11,d0			:si <10 reboucler
	bcs filebigbcle			:calcul position mover
	sub.b #10,d0
	mulu filemoverpos,d0
	divu #$ffff,d0
	and.l #$0000ffff,d0
	addq #1,d0			:d0 = 1er titre a  afficher
	cmp.b fileaffstart,d0
	beq filebigbcle			:si pas changements, pas scroller
	bcc filescrolld
	bsr filescrolldown		:sinon scroller vers le bas 
	bra filebigbcle
filescrolld:
	bsr filescrollup		:ou vers le haut
	bra filebigbcle

filelectgadget:
	moveq #0,d0
	move.w gg_GadgetID(a4),d0	:d0 = ID du gadget
	cmp.w #61,d0
	beq filedf0			:Lecture de tous les gadgets
	cmp.w #62,d0
	beq filedf1
	cmp.w #63,d0
	beq filedh0
	cmp.w #64,d0
	beq fileparent
	cmp.w #65,d0
	beq filedrawers
	cmp.w #66,d0
	beq filetitre
	cmp.w #67,d0
	beq filetitre
	cmp.w #68,d0
	beq filetitre
	cmp.w #69,d0
	beq filetitre
	cmp.w #70,d0
	beq filetitre
	cmp.w #71,d0
	beq filetitre
	cmp.w #72,d0
	beq filetitre
	cmp.w #73,d0
	beq filetitre
	cmp.w #74,d0
	beq filetitre
	cmp.w #75,d0
	beq filetitre
	cmp.w #76,d0
	beq filestring
	cmp.w #77,d0
	beq filecancel
	cmp.w #78,d0
	beq fileload
	and.l #$10000,d4
	beq filediskremoved
	and.l #$8000,d4
	beq filediskinsert
	bra filebigbcle

filedf0:
	bsr filereinit			:Unlock-clr titres-no oldname
	bsr fileclrstatus
	lea.l filedrawer,a0
	move.l #'df0:',(a0)+		:recommencer avec df0:
	move.b #$00,(a0)
	bsr filerefresh
	bra filedrive	
filedf1:
	bsr filereinit			:Unlock-clr titres-no oldname
	bsr fileclrstatus
	lea.l filedrawer,a0
	move.l #'df1:',(a0)+		:recommencer avec df1:
	move.b #$00,(a0)
	bsr filerefresh
	bra filedrive	
filedh0:
	bsr filereinit			:Unlock-clr titres-no oldname
	bsr fileclrstatus
	lea.l filedrawer,a0
	move.l #'dh0:',(a0)+		:recommencer avec dh0:
	move.b #$00,(a0)
	bsr filerefresh
	bra filedrive	

filecancel:
	bsr fileunlock			:unlock si necessaire
	move.l filewinhd,a0
	CALLINT CloseWindow		:Close fileselect Window
	move.l #0,a0
	rts				:puis quitter

fileload:
	bsr fileunlock			:unlock si necessaire
	lea.l filename,a0		:preparer a0
	tst.b (a0)
	beq filenoload 			:si pas de nom alors erreur
	move.l filewinhd,a0
	CALLINT CloseWindow		:Close fileselect Window
	lea.l filename,a0
	rts
filenoload:
	lea.l fileafferr2,a0		:'no file specified'
	move.b #1,affstatus		:couleurs jaune
	bsr fileaffstatus		:afficher
	bra filebigbcle

fileparent:
	lea.l filedrawer,a0
	moveq #38,d0
fileparentex:
	cmp.b #'/',(a0,d0)		:recherche d'un slash a partir de fin
	beq fileparentexist
	cmp.b #':',(a0,d0)
	beq fileparentexist2
	subq #1,d0			:si pas trouve passer a suite
	bne fileparentex		:et reboucler
	bra filebigbcle			:si inexistant ne rien faire
fileparentexist:
	move.b #0,(a0,d0)		:si trouve tronquer
	bra fileparexit
fileparentexist2:
	addq #1,d0
	tst.b (a0,d0)
	beq filebigbcle			:si juste dfx: alors rien a faire
	move.b #0,(a0,d0)		:ne pas effacer :
fileparexit:
	bsr filereinit			:Unlock-clr titres-no oldname
	bsr fileclrstatus
	bsr filerefresh
	bra filedrive	
	 
filestring:
	bra fileload

filetitre:
	add.b fileaffstart,d0		:d0 = position - 66(gadget) -1 (off)
	sub.b #67,d0			:d0 de 0 a x
	move.b f,d1
	add.b d,d1
	cmp.b d1,d0
	bcc filebigbcle			:si champ non defini alors erreur
	mulu #34,d0
	move.l filebuffer,a0
	add.l d0,a0			:adresse du buffer fichier
	move.b 33(a0),d7
	cmp.b #03,d7			:d7 = couleur
	beq fileseldir			:directory
	lea.l filename,a1		:sinon fichier
	move.l a0,a2
filetittst:
	move.b (a1)+,d5
	cmp.b (a2),d5			:comparaison si deja recopie
	bne filefirst			:si non recopier titre dans string 
	tst.b (a2)+
	bne filetittst
	bra fileload			:si oui alors deja recopie et load
filefirst:
	moveq #8,d0
	lea.l filename,a1
filecopyfile:
	move.l (a0)+,(a1)+		:recopie du nom fichier dans string
	subq #1,d0
	bne filecopyfile
	bsr filerefreshfile
	bra filebigbcle
fileseldir:
	moveq #7,d0			:cas ou titre directory
	lea.l filedrawer,a1
filetstend:
	tst.b (a1)+			:recherche fin du drawer 
	bne filetstend
	subq #2,a1
	cmp.b #':',(a1)
	beq filenoslash
	addq #1,a1
	move.b #'/',(a1)+		:slash de separation pour sous-dir
filenewdrawer:
	move.b (a0),(a1)+		:copie du nouveau drawer
	tst.b (a0)
	beq filenewend
	addq #1,a0
	bra filenewdrawer
filenoslash:
	addq #1,a1
	bra filenewdrawer
filenewend:
	bsr filereinit			:Unlock-clr titres-no oldname
	bsr fileclrstatus
	bsr filerefresh
	bra filedrive	
	
filedrawers:
	bsr filereinit			:Unlock-clr titres-no oldname
	bsr fileclrstatus
	bra filedrive			:accepter nouveau drawer et lock

filediskremoved:
	nop
filediskinsert:
	nop
	bra filebigbcle

****************************************************************************
* Sous programmes file -----------------------------------------------------
****************************************************************************


filerefresh:
	move.l #0,gadget65
	lea.l gadget65,a0
	move.l filewinhd,a1
	move.l #0,a2
	CALLINT RefreshGadgets		:rafraichir drawer uniquement
	lea.l gadget66,a0
	move.l a0,gadget65
	rts

filerefreshfile:
	move.l #0,gadget76
	lea.l gadget76,a0
	move.l filewinhd,a1
	move.l #0,a2
	CALLINT RefreshGadgets		:rafraichir file uniquement
	lea.l gadget77,a0
	move.l a0,gadget76
	rts

fileunlock:
	tst.b flaglock			:unlock a effectuer?
	beq filenounlock		:sinon revenir
	move.b #0,flaglock		:si oui remettre flag a 0
	move.l lockhd,d1
	CALLDOS UnLock			:et unlock
filenounlock:
	rts

filereinit:
	bsr fileunlock			:refermer lock avant new drawer
	move.l fileRPort,a1
	moveq #0,d0
	CALLGRAF SetAPen		:couleur remplissage
	move.l fileRPort,a1
	moveq #12,d0
	move.l #51,d1
	move.l #267,d2
	move.l #130,d3
	CALLGRAF RectFill		:efface zone titres
	bsr fileinitmover		:reinitialiser	mover
	move.b #$0,filename		:detruire ancien nom fichier
	rts

fileclrstatus:
	move.l fileRPort,a1
	moveq #0,d0
	CALLGRAF SetAPen		:couleur remplissage
	move.l fileRPort,a1
	moveq #65,d0
	move.l #172,d1
	move.l #291,d2
	move.l #180,d3
	CALLGRAF RectFill		:efface zone Status
	rts

fileaffstatus:
	move.l a0,-(sp)
	bsr fileclrstatus		:dabord effacer status
	move.l (sp)+,a0
	lea.l affstat,a1		:copie de texte pour message erreur
	moveq #8,d0
filecopyerr:
	move.l (a0)+,(a1)+		:32 caracteres a copier
	subq #1,d0
	bne filecopyerr
	move.l fileRPort,a0
	lea.l affstatus,a1
	moveq #0,d0
	moveq #0,d1
	CALLINT PrintIText		:afficher nom fichier ou erreur 
	rts
	
fileinitmover:
	lea.l gadget79,a0
	move.l filewinhd,a1
	move.l #0,a2
	moveq #5,d0
	moveq #0,d1			:remettre tous les parametres org.
	moveq #0,d2
	moveq #0,d3
	move.l #$ffff,d4
	CALLINT ModifyProp		:modifier le prop gadget
	rts

filescrolldown:
	moveq #4,d0
filewait2:
	cmpi.b #1,$dff006
	bne filewait2
	move.l d0,-(sp)
	move.l	fileRPort,a1		:preparer scrollraster
	move.l 	#0,d0
	move.l	#-2,d1
	move.l	#12,d2
	move.l	#51,d3
	move.l	#267,d4
	move.l	#130,d5
	CALLGRAF ScrollRaster		:scroller texte 1 ligne en bas
	move.l (sp)+,d0
	subq #1,d0
	bne filewait2			:scroller 8 bits vers le bas
	move.l filebuffer,a0
	clr.l d0
	sub.b #1,fileaffstart
	move.b fileaffstart,d0
	subq #1,d0
	mulu #34,d0
	add.l d0,a0			:a0 = adresse debut nouveau titre
	lea.l affdown,a1		:copie de texte pour titre suivant
	moveq #8,d0
filecopyd:
	move.l (a0)+,(a1)+		:32 caracteres a copier
	subq #1,d0
	bne filecopyd
	move.b (a0)+,(a1)+		:copie du 0
	move.b (a0),afftitd		:copie de la couleur
	move.l fileRPort,a0
	lea.l afftitd,a1
	moveq #0,d0
	moveq #0,d1
	CALLINT PrintIText		:afficher nom fichier ou erreur 
	rts

filescrollup:
	moveq #4,d0
filewait3:
	cmpi.b	#1,$dff006	
	bne.l	filewait3
	move.l d0,-(sp)
	move.l	fileRPort,a1		:preparer scrollraster
	move.l 	#0,d0
	move.l	#2,d1
	move.l	#12,d2
	move.l	#51,d3
	move.l	#267,d4
	move.l	#130,d5
	CALLGRAF ScrollRaster		:scroller texte 1 ligne en haut
	move.l (sp)+,d0
	subq #1,d0
	bne filewait3			:scroller 8 bits vers le haut
	move.l filebuffer,a0
	clr.l d0
	add.b #1,fileaffstart
	move.b fileaffstart,d0
	add.b #8,d0
	mulu #34,d0
	add.l d0,a0			:a0 = adresse debut nouveau titre
	lea.l affup,a1			:copie de texte pour titre suivant
	moveq #8,d0
filecopyu:
	move.l (a0)+,(a1)+		:32 caracteres a copier
	subq #1,d0
	bne filecopyu
	move.b (a0)+,(a1)+		:copie du 0
	move.b (a0),afftitu		:copie de la couleur
	move.l fileRPort,a0
	lea.l afftitu,a1
	moveq #0,d0
	moveq #0,d1
	CALLINT PrintIText		:afficher nom fichier ou erreur 
	rts

****************************************************************************
* Declaration des variables systeme et handles -----------------------------
****************************************************************************

_IntuitionBase	dc.l 0			:Bases des librairies
_DOSBase	dc.l 0
_GfxBase	dc.l 0

intname		INTNAME			:Nom des librairies
		even
grafname	GRAFNAME
		even
dosname		DOSNAME
		even

filewinhd	dc.l 0
filebuffer	dc.l 0
lockhd		dc.l 0

fileRPort	dc.l 0
fileUPort	dc.l 0

		cnop 0,4
fileinfo	ds.l 260

f		dc.w 0
d		dc.w 0
fileaffstart	dc.w 0
flaglect	dc.w 0
flaglock	dc.w 0

filename	ds.b 34
filedrawer	dc.b 'df0:'
		ds.w 17

****************************************************************************
* Declaration des structures ecran et fenetres -----------------------------
****************************************************************************

NewScreen	dc.w	0,0		:Positions X et Y
		dc.w	640,200		:largeur, hauteur
		dc.w	2		:Nb de bitplanes
		dc.b	2,1		:couleurs
		dc.w	$8002		:viewmodes
		dc.w	15		:type
		dc.l	0		:font
		dc.l	titrescreen	:title
		dc.l	0		:gadgets
		dc.l	0		:bitmap
titrescreen 	dc.b	'Fileselect V1.0  by  F.Lienhardt   1988',0
		even

filewindow	dc.w	168		:Position X
		dc.w	14		:Position Y
		dc.w 	304		:Largeur
		dc.w 	186		:Hauteur
		dc.b 	1,3		:Couleurs
		dc.l 	$18060		:IDCMP-flags
		dc.l 	$1000		:Type
		dc.l 	gadget61	:Pointeur gadget61
		dc.l 	0		:Checkmark
filetitle	dc.l 	0		:Nom fenetre
screenhd	dc.l 	0		:Affichage dans ecran
		dc.l 	0		:Pointeur Bitmaps
		dc.w	0,0,0,0		:Dimensions max et min	
		dc.w 	15		:Screen-Type
		even

***************************************************************************
* Declaration des gadgets fenetre load
***************************************************************************

* Gadget61 (Boolean Df0) ---------------------------------------------------

gadget61	dc.l gadget62		:Gadget suivant
		dc.w 24			:Position X
		dc.w 15			:Position Y
		dc.w 40			:Longueur Hit-Box
		dc.w 9			:Hauteur Hit-Box
		dc.w 0			:Flags
		dc.w 1			:Activation flags
		dc.w 1			:Gadget-typ	   -Boolean-
		dc.l border61		:Gadget-image
		dc.l 0			:Select gadget
		dc.l gadtext61		:Text
		dc.l 0			:Exclude
		dc.l 0			:Special Info
		dc.w 61	 		:Gadget-ID
		dc.l 0			:User Data
border61	dc.w 0,0		:Offset
		dc.b 1,1		:Couleurs
		dc.b 1			:Modus
		dc.b 5			:Nb coordonnees
		dc.l coord61		:Coordonnes Border
		dc.l 0			:Structure suivante
coord61		dc.w -1,-1		:
		dc.w 40,-1		:
		dc.w 40,9		:Coordonnees
		dc.w -1,9		:
		dc.w -1,0		:
gadtext61	dc.b 1,1		:Couleurs
		dc.b 0			:Modus JAM1
		even			:Position Parite
		dc.w 0			:Position X
		dc.w 1			:Position Y
		dc.l 0			:Font
		dc.l gad61text		:Text
		dc.l 0			:Texte suivant

* Gadget62 (Boolean Df1) ---------------------------------------------------

gadget62	dc.l gadget63		:Gadget suivant
		dc.w 88			:Position X
		dc.w 15			:Position Y
		dc.w 40			:Longueur Hit-Box
		dc.w 9			:Hauteur Hit-Box
		dc.w 0			:Flags
		dc.w 1			:Activation flags
		dc.w 1			:Gadget-typ	   -Boolean-
		dc.l border62		:Gadget-image
		dc.l 0			:Select gadget
		dc.l gadtext62		:Text
		dc.l 0			:Exclude
		dc.l 0			:Special Info
		dc.w 62	 		:Gadget-ID
		dc.l 0			:User Data
border62	dc.w 0,0		:Offset
		dc.b 1,1		:Couleurs
		dc.b 1			:Modus
		dc.b 5			:Nb coordonnees
		dc.l coord62		:Coordonnes Border
		dc.l 0			:Structure suivante
coord62		dc.w -1,-1		:
		dc.w 40,-1		:
		dc.w 40,9		:Coordonnees
		dc.w -1,9		:
		dc.w -1,0		:
gadtext62	dc.b 1,1		:Couleurs
		dc.b 0			:Modus JAM1
		even			:Position Parite
		dc.w 0			:Position X
		dc.w 1			:Position Y
		dc.l 0			:Font
		dc.l gad62text		:Text
		dc.l 0			:Texte suivant

* Gadget63 (Boolean Dh0) ----------------------------------------------------

gadget63	dc.l gadget64		:Gadget suivant
		dc.w 152		:Position X
		dc.w 15			:Position Y
		dc.w 40			:Longueur Hit-Box
		dc.w 9			:Hauteur Hit-Box
		dc.w 0			:Flags
		dc.w 1			:Activation flags
		dc.w 1			:Gadget-typ	   -Boolean-
		dc.l border63		:Gadget-image
		dc.l 0			:Select gadget
		dc.l gadtext63		:Text
		dc.l 0			:Exclude
		dc.l 0			:Special Info
		dc.w 63	 		:Gadget-ID
		dc.l 0			:User Data
border63	dc.w 0,0		:Offset
		dc.b 1,1		:Couleurs
		dc.b 1			:Modus
		dc.b 5			:Nb coordonnees
		dc.l coord63		:Coordonnes Border
		dc.l 0			:Structure suivante
coord63		dc.w -1,-1		:
		dc.w 40,-1		:
		dc.w 40,9		:Coordonnees
		dc.w -1,9		:
		dc.w -1,0		:
gadtext63	dc.b 1,1		:Couleurs
		dc.b 0			:Modus JAM1
		even			:Position Parite
		dc.w 0			:Position X
		dc.w 1			:Position Y
		dc.l 0			:Font
		dc.l gad63text		:Text
		dc.l 0			:Texte suivant

* Gadget64 (Boolean Parent) -------------------------------------------------

gadget64	dc.l gadget65		:Gadget suivant
		dc.w 216		:Position X
		dc.w 15			:Position Y
		dc.w 64			:Longueur Hit-Box
		dc.w 9			:Hauteur Hit-Box
		dc.w 0			:Flags
		dc.w 1			:Activation flags
		dc.w 1			:Gadget-typ	   -Boolean-
		dc.l border64		:Gadget-image
		dc.l 0			:Select gadget
		dc.l gadtext64		:Text
		dc.l 0			:Exclude
		dc.l 0			:Special Info
		dc.w 64	 		:Gadget-ID
		dc.l 0			:User Data
border64	dc.w 0,0		:Offset
		dc.b 1,1		:Couleurs
		dc.b 0			:Modus
		dc.b 5			:Nb coordonnees
		dc.l coord64		:Coordonnes Border
		dc.l 0			:Structure suivante
coord64		dc.w -1,-1		:
		dc.w 64,-1		:
		dc.w 64,9		:Coordonnees
		dc.w -1,9		:
		dc.w -1,0		:
gadtext64	dc.b 1,1		:Couleurs
		dc.b 0			:Modus JAM1
		even			:Position Parite
		dc.w 0			:Position X
		dc.w 1			:Position Y
		dc.l 0			:Font
		dc.l gad64text		:Text
		dc.l 0			:Texte suivant

* Gadget65 (String du Drawer) ----------------------------------------------

gadget65	dc.l gadget66		:Gadget suivant
		dc.w 74			:Position X
		dc.w 31			:Position Y
		dc.w 216		:Longueur Hit-Box
		dc.w 10			:Hauteur Hit-Box
		dc.w 0			:Flags
		dc.w 1			:Activation flags
		dc.w 4			:Gadget-typ	   -String-
		dc.l border65		:Gadget-image
		dc.l 0			:Select gadget
		dc.l gadtext65		:Text
		dc.l 0			:Exclude
		dc.l strinfo65		:Special Info
		dc.w 65			:Gadget-ID
		dc.l 0			:User Data
border65	dc.w 0,0		:Offset
		dc.b 1,1		:Couleurs
		dc.b 0			:Modus JAM1
		dc.b 5			:Nb coordonnees
		dc.l coord65		:Coordonnees Border
		dc.l bordere65		:Structure suivante
coord65		dc.w -2,-2		:
		dc.w 216,-2		:
		dc.w 216,9		:Coordonnees
		dc.w -2,9		:
		dc.w -2,-2		:
bordere65	dc.w 0,0		:Offset
		dc.b 1,1		:Couleurs
		dc.b 0			:Modus JAM1
		dc.b 2			:Nb coordonnees
		dc.l coorde65		:Coordonnees Border
		dc.l 0			:Structure suivante
coorde65	dc.w -69,14		:Coordonnees
		dc.w 224,14		:
strinfo65	dc.l filedrawer		:Pointeur sur buffer text
		dc.l 0			:Pointeur sur buffer undo
		dc.w 4			:Position curseur 
		dc.w 39			:Nombre caracteres max
		dc.w 0			:Afficher a partir posit. 0
		dc.w 0,0,0,0,0		:Definitions diverses
		dc.l 0			:Pointeur RastPort
		dc.l 0			:Valeur du Nb saisi (Integer)
		dc.l 0			:Configuration Clavier d'origine
gadtext65	dc.b 1,0		:Couleurs
		dc.b 0			:Modus JAM1
		even			:Position Parite
		dc.w -68		:Position X
		dc.w 0			:Position Y
		dc.l 0			:Font
		dc.l gad65text		:Text
		dc.l 0			:Texte suivant

* Gadget66 (Boolean Titre1) -------------------------------------------------

gadget66	dc.l gadget67		:Gadget suivant
		dc.w 12			:Position X
		dc.w 51			:Position Y
		dc.w 256		:Longueur Hit-Box
		dc.w 8			:Hauteur Hit-Box
		dc.w 0			:Flags
		dc.w 1			:Activation flags
		dc.w 1			:Gadget-typ	   -Boolean-
		dc.l border66		:Gadget-image
		dc.l 0			:Select gadget
		dc.l 0			:Text
		dc.l 0			:Exclude
		dc.l 0			:Special Info
		dc.w 66	 		:Gadget-ID
		dc.l 0			:User Data
border66	dc.w 0,0		:Offset
		dc.b 1,1		:Couleurs
		dc.b 2			:Modus
		dc.b 5			:Nb coordonnees
		dc.l coord66		:Coordonnes Border
		dc.l 0			:Structure suivante
coord66		dc.w -1,-1		:
		dc.w 256,-1		:
		dc.w 256,80		:Coordonnees
		dc.w -1,80		:
		dc.w -1,0		:

* Gadget67 (Boolean Titre2) ------------------------------------------------

gadget67	dc.l gadget68		:Gadget suivant
		dc.w 12			:Position X
		dc.w 59			:Position Y
		dc.w 256		:Longueur Hit-Box
		dc.w 8			:Hauteur Hit-Box
		dc.w 0			:Flags
		dc.w 1			:Activation flags
		dc.w 1			:Gadget-typ	   -Boolean-
		dc.l 0			:Gadget-image
		dc.l 0			:Select gadget
		dc.l 0			:Text
		dc.l 0			:Exclude
		dc.l 0			:Special Info
		dc.w 67			:Gadget-ID
		dc.l 0			:User Data

* Gadget68 (Boolean Titre3) ------------------------------------------------

gadget68	dc.l gadget69		:Gadget suivant
		dc.w 12			:Position X
		dc.w 67			:Position Y
		dc.w 256		:Longueur Hit-Box
		dc.w 8			:Hauteur Hit-Box
		dc.w 0			:Flags
		dc.w 1			:Activation flags
		dc.w 1			:Gadget-typ	   -Boolean-
		dc.l 0			:Gadget-image
		dc.l 0			:Select gadget
		dc.l 0			:Text
		dc.l 0			:Exclude
		dc.l 0			:Special Info
		dc.w 68			:Gadget-ID
		dc.l 0			:User Data

* Gadget69 (Boolean Titre4) ------------------------------------------------

gadget69	dc.l gadget70		:Gadget suivant
		dc.w 12			:Position X
		dc.w 75			:Position Y
		dc.w 256		:Longueur Hit-Box
		dc.w 8			:Hauteur Hit-Box
		dc.w 0			:Flags
		dc.w 1			:Activation flags
		dc.w 1			:Gadget-typ	   -Boolean-
		dc.l 0			:Gadget-image
		dc.l 0			:Select gadget
		dc.l 0			:Text
		dc.l 0			:Exclude
		dc.l 0			:Special Info
		dc.w 69			:Gadget-ID
		dc.l 0			:User Data

* Gadget70 (Boolean Titre5) ------------------------------------------------

gadget70	dc.l gadget71		:Gadget suivant
		dc.w 12			:Position X
		dc.w 83			:Position Y
		dc.w 256		:Longueur Hit-Box
		dc.w 8			:Hauteur Hit-Box
		dc.w 0			:Flags
		dc.w 1			:Activation flags
		dc.w 1			:Gadget-typ	   -Boolean-
		dc.l 0			:Gadget-image
		dc.l 0			:Select gadget
		dc.l 0			:Text
		dc.l 0			:Exclude
		dc.l 0			:Special Info
		dc.w 70			:Gadget-ID
		dc.l 0			:User Data

* Gadget71 (Boolean Titre6) ------------------------------------------------

gadget71	dc.l gadget72		:Gadget suivant
		dc.w 12			:Position X
		dc.w 91			:Position Y
		dc.w 256		:Longueur Hit-Box
		dc.w 8			:Hauteur Hit-Box
		dc.w 0			:Flags
		dc.w 1			:Activation flags
		dc.w 1			:Gadget-typ	   -Boolean-
		dc.l 0			:Gadget-image
		dc.l 0			:Select gadget
		dc.l 0			:Text
		dc.l 0			:Exclude
		dc.l 0			:Special Info
		dc.w 71			:Gadget-ID
		dc.l 0			:User Data

* Gadget72 (Boolean Titre7) ------------------------------------------------

gadget72	dc.l gadget73		:Gadget suivant
		dc.w 12			:Position X
		dc.w 99			:Position Y
		dc.w 256		:Longueur Hit-Box
		dc.w 8			:Hauteur Hit-Box
		dc.w 0			:Flags
		dc.w 1			:Activation flags
		dc.w 1			:Gadget-typ	   -Boolean-
		dc.l 0			:Gadget-image
		dc.l 0			:Select gadget
		dc.l 0			:Text
		dc.l 0			:Exclude
		dc.l 0			:Special Info
		dc.w 72			:Gadget-ID
		dc.l 0			:User Data

* Gadget73 (Boolean Titre8) ------------------------------------------------

gadget73	dc.l gadget74		:Gadget suivant
		dc.w 12			:Position X
		dc.w 107		:Position Y
		dc.w 256		:Longueur Hit-Box
		dc.w 8			:Hauteur Hit-Box
		dc.w 0			:Flags
		dc.w 1			:Activation flags
		dc.w 1			:Gadget-typ	   -Boolean-
		dc.l 0			:Gadget-image
		dc.l 0			:Select gadget
		dc.l 0			:Text
		dc.l 0			:Exclude
		dc.l 0			:Special Info
		dc.w 73			:Gadget-ID
		dc.l 0			:User Data

* Gadget74 (Boolean Titre9) ------------------------------------------------

gadget74	dc.l gadget75		:Gadget suivant
		dc.w 12			:Position X
		dc.w 115		:Position Y
		dc.w 256		:Longueur Hit-Box
		dc.w 8			:Hauteur Hit-Box
		dc.w 0			:Flags
		dc.w 1			:Activation flags
		dc.w 1			:Gadget-typ	   -Boolean-
		dc.l 0			:Gadget-image
		dc.l 0			:Select gadget
		dc.l 0			:Text
		dc.l 0			:Exclude
		dc.l 0			:Special Info
		dc.w 74			:Gadget-ID
		dc.l 0			:User Data

* Gadget75 (Boolean Titre10) ------------------------------------------------

gadget75	dc.l gadget76		:Gadget suivant
		dc.w 12			:Position X
		dc.w 123		:Position Y
		dc.w 256		:Longueur Hit-Box
		dc.w 8			:Hauteur Hit-Box
		dc.w 0			:Flags
		dc.w 1			:Activation flags
		dc.w 1			:Gadget-typ	   -Boolean-
		dc.l 0			:Gadget-image
		dc.l 0			:Select gadget
		dc.l 0			:Text
		dc.l 0			:Exclude
		dc.l 0			:Special Info
		dc.w 75			:Gadget-ID
		dc.l 0			:User Data

* Gadget76 (String du FileName) ---------------------------------------------

gadget76	dc.l gadget77		:Gadget suivant
		dc.w 76			:Position X
		dc.w 137		:Position Y
		dc.w 216		:Longueur Hit-Box
		dc.w 8			:Hauteur Hit-Box
		dc.w 0			:Flags
		dc.w 1			:Activation flags
		dc.w 4			:Gadget-typ	   -String-
		dc.l border76		:Gadget-image
		dc.l 0			:Select gadget
		dc.l gadtext76		:Text
		dc.l 0			:Exclude
		dc.l strinfo76		:Special Info
		dc.w 76			:Gadget-ID
		dc.l 0			:User Data
border76	dc.w 0,0		:Offset
		dc.b 1,1		:Couleurs
		dc.b 0			:Modus JAM1
		dc.b 5			:Nb coordonnees
		dc.l coord76		:Coordonnees Border
		dc.l border76b		:Structure suivante
coord76		dc.w -1,-1		:
		dc.w 220,-1		:
		dc.w 220,8		:Coordonnees
		dc.w -1,8		:
		dc.w -1,0		:
border76b	dc.w 0,0		:Offset
		dc.b 1,1		:Couleurs
		dc.b 0			:Modus JAM1
		dc.b 2			:Nb coordonnees
		dc.l coord76b		:Coordonnees Border
		dc.l 0			:Structure suivante
coord76b	dc.w -71,13		:Coordonnees
		dc.w 222,13		:
strinfo76	dc.l filename		:Pointeur sur buffer text
		dc.l 0			:Pointeur sur buffer undo
		dc.w 0			:Position curseur 
		dc.w 33			:Nombre caracteres max
		dc.w 0			:Afficher a partir posit. 0
		dc.w 0,0,0,0,0		:Definitions diverses
		dc.l 0			:Pointeur RastPort
		dc.l 0			:Valeur du Nb saisi (Integer)
		dc.l 0			:Configuration Clavier d'origine
gadtext76	dc.b 1,1		:Couleurs
		dc.b 0			:Modus JAM1
		even			:Position Parite
		dc.w -68		:Position X
		dc.w 0			:Position Y
		dc.l 0			:Font
		dc.l gad76text		:Text
		dc.l 0			:Texte suivant

* Gadget77 (Boolean CANCEL) -------------------------------------------------

gadget77	dc.l gadget78		:Gadget suivant
		dc.w 38			:Position X
		dc.w 156		:Position Y
		dc.w 64			:Longueur Hit-Box
		dc.w 10			:Hauteur Hit-Box
		dc.w 0			:Flags
		dc.w 1			:Activation flags
		dc.w 1			:Gadget-typ	   -Boolean-
		dc.l border77		:Gadget-image
		dc.l 0			:Select gadget
		dc.l gadtext77		:Text
		dc.l 0			:Exclude
		dc.l 0			:Special Info
		dc.w 77			:Gadget-ID
		dc.l 0			:User Data
gadtext77	dc.b 1,1		:Couleurs
		dc.b 0			:Modus JAM1
		even			:Position Parite
		dc.w 0			:Position X
		dc.w 1			:Position Y
		dc.l 0			:Font
		dc.l gad77text		:Text
		dc.l 0			:Texte suivant
border77	dc.w 0,0		:Offset
		dc.b 1,1		:Couleurs
		dc.b 0			:Modus JAM1
		dc.b 5			:Nb coordonnees
		dc.l coord77		:Coordonnees Border
		dc.l 0			:Structure suivante
coord77		dc.w -1,-1		:
		dc.w 64,-1		:
		dc.w 64,10		:Coordonnees
		dc.w -1,10		:
		dc.w -1,0		:

* Gadget78 (Boolean LOAD) ---------------------------------------------------

gadget78	dc.l gadget79		:Gadget suivant
		dc.w 204		:Position X
		dc.w 156		:Position Y
		dc.w 64			:Longueur Hit-Box
		dc.w 10			:Hauteur Hit-Box
		dc.w 0			:Flags
		dc.w 1			:Activation flags
		dc.w 1			:Gadget-typ	   -Boolean-
		dc.l border78		:Gadget-image
		dc.l 0			:Select gadget
		dc.l gadtext78		:Text
		dc.l 0			:Exclude
		dc.l 0			:Special Info
		dc.w 78			:Gadget-ID
		dc.l 0			:User Data
gadtext78	dc.b 1,2		:Couleurs
		dc.b 0			:Modus JAM1
		even			:Position Parite
		dc.w 1			:Position X
		dc.w 1			:Position Y
		dc.l 0			:Font
gad78text	dc.l 0			:Text
		dc.l gadtext78b		:Texte suivant
border78	dc.w 0,0		:Offset
		dc.b 1,1		:Couleurs
		dc.b 1			:Modus JAM1
		dc.b 5			:Nb coordonnees
		dc.l coord78		:Coordonnees Border
		dc.l border78b		:Structure suivante
coord78		dc.w -1,-1		:
		dc.w 64,-1		:
		dc.w 64,10		:Coordonnees
		dc.w -1,10		:
		dc.w -1,0		:
border78b	dc.w 0,0		:Offset
		dc.b 1,1		:Couleurs
		dc.b 2			:Modus JAM1
		dc.b 5			:Nb coordonnees
		dc.l coord78b		:Coordonnees Border
		dc.l 0			:Structure suivante
coord78b	dc.w -140,15		:
		dc.w 88,15		:
		dc.w 88,25		:Coordonnees
		dc.w -140,25		:
		dc.w -140,16		:
gadtext78b	dc.b 3,3		:Couleurs
		dc.b 0			:Modus JAM1
		even			:Position Parite
		dc.w -204		:Position X
		dc.w 16			:Position Y
		dc.l 0			:Font
		dc.l gad78btext		:Text
		dc.l 0			:Texte suivant

* Gadget79 (Proportional Mover) ---------------------------------------------

gadget79	dc.l 0			:Gadget suivant
		dc.w 276		:Position X
		dc.w 50			:Position Y
		dc.w 20			:Largeur Hit-Box
		dc.w 82			:Hauteur Hit-Box
		dc.w 4			:Flags
		dc.w 0			:Activation flags
		dc.w 3			:Gadget-typ	   -Prop-
		dc.l moverimage79	:Gadget-image
		dc.l 0			:Select gadget
		dc.l 0			:Text
		dc.l 0			:Exclude
		dc.l propinfo79		:Special Info
		dc.w 79			:Gadget-ID
		dc.l 0			:User Data
moverimage79	dc.w 0,0		:Offset
		dc.w 7			:Dimensions	
filemoversize	dc.w 3			:
		dc.w 1			:Nb bitplanes
		dc.l moverdata79	:Donnees image
		dc.b 1,1		:Couleurs
		dc.l 0			:Structure suivante
moverdata79	dc.b 0			:
		dc.b 0			:Donnees image
		dc.b 0			:-pas de donnees-
		dc.b 0			:
propinfo79	dc.w 5			:Flags -AUTOKNOB FREEVERT-
		dc.w 0			:Position x mover
filemoverpos	dc.w 0			:Position y mover
		dc.w 0			:Valeur decalage horizontal
filemoverstep	dc.w $ffff		:Valeur decalage vertical
		dc.w 0			:Largeur Box
		dc.w 0			:Hauteur Box
		dc.w 0			:Decalage absolu horizontal
		dc.w 0			:Decalage absolu vertical
		dc.w 0			:Bord gauche Box
		dc.w 0			:Bord droit Box
		even

* Structure pour affichage status ------------------------------------------

affstatus	dc.b 1,1		:Couleurs
		dc.b 0			:Modus JAM1
		even			:Position Parite
		dc.w 66			:Position X
		dc.w 172		:Position Y
		dc.l 0			:Font
		dc.l affstat		:Text
		dc.l 0			:Texte suivant
affstat		ds.l 8

* Structure pour affichage noms de fichier ---------------------------------

affnames	dc.b 1,1		:Couleurs
		dc.b 0			:Modus JAM1
		even			:Position Parite
		dc.w 12			:Position X
		dc.w 51			:Position Y
		dc.l 0			:Font
		dc.l names		:Text
		dc.l 0			:Texte suivant
names		ds.w 17

* Structure pour affichage noms de fichier ---------------------------------

afftitd		dc.b 1,1		:Couleurs
		dc.b 0			:Modus JAM1
		even			:Position Parite
		dc.w 12			:Position X
		dc.w 51			:Position Y
		dc.l 0			:Font
		dc.l affdown		:Text
		dc.l 0			:Texte suivant
affdown		ds.w 17
		
* Structure pour affichage noms de fichier ---------------------------------

afftitu		dc.b 1,1		:Couleurs
		dc.b 0			:Modus JAM1
		even			:Position Parite
		dc.w 12			:Position X
		dc.w 123		:Position Y
		dc.l 0			:Font
		dc.l affup		:Text
		dc.l 0			:Texte suivant
affup		ds.w 17

*************************************************************************
*************************************************************************

fileafferr1	dc.b 'No disk present - Bad drawer',0
		even
fileafferr2	dc.b 'No file specified',0
		even
fileafferr3	dc.b 'Directory truncated',0
		even
titleload	dc.b '               Load file',0
		even
titlesave	dc.b '               Save file',0
		even
titledelete	dc.b '              Delete file',0
		even
gad61text	dc.b ' df0 ',0
		even
gad62text	dc.b ' df1 ',0
		even
gad63text	dc.b ' dh0 ',0
		even
gad64text	dc.b ' Parent ',0
		even
gad65text	dc.b ' Drawer: ',0
		even
gad76text	dc.b 'Filename',0
		even
gad77text	dc.b ' Cancel ',0
		even
gadload		dc.b '  Load  ',0
		even
gadsave		dc.b '  Save  ',0
		even
gaddelete	dc.b ' Delete ',0
		even
gad78btext	dc.b ' Status ',0
		even
nofilesel	dc.b 'No file selected',$0d,$0a
		even
fileselmsg	dc.b $0d,$0a,'Fileselect V1.0 by F.Lienhardt - (info in file read.me)',$0d,$0a,$0a
		even
fisel		dc.b 'File selected : ',0
		even

