	10 .	Crer le fichier source (.S)




Le noyau VISUAL

Le noyau (niveau 0 de la pile) est le coeur du V.A. car votre source 
projet.S doit toujours commencer par :

lea mon_app,a1
include visual40.s

"mon_app" tant le nom que vous aurez donn  votre objet principal 
dans le fichier projet.OBJ.

Par consquent chacune de vos routines sera appele par un JSR et de-
vra donc se terminer par un RTS.
La question est : que-fais-je quand je reois un AP_TERM ou quiva-
lent vu que je suis une sous-routine ? Eh bien, vous sautez au label : VI-
SUAL40_END qui fermera et quittera pour vous votre application.
Notez que le fait que la pile ne soit pas correcte au moment de faire 
AP_EXIT ne fait absolument rien puisque l'on quitte.
Notez aussi qu'il ne faut jamais le faire en cas d'un AC_CLOSE parce 
que la pile est commune  tous les accessoires et qu'en plus vous 'plante-
riez' le systme, car un accessoire ne doit jamais sortir !

Votre fichier source .S doit normalement, avant que vous ayez tap 
une ligne de programme,  ressembler fortement  quelque chose comme 
a :

	output j:\projet\project.acx

OPT_FULL_PATHNAMES
OPT_DEBUG

	lea objet_application,a1

	include project.def
	include visual40.s
	include project.hs
	include project.obj

	comment HEAD=7
	section TEXT

	; Exemple de programme Visual Assembleur 4.0
	; Proprit : marche aussi bien an accessoire qu'en programme

	; ce programme rpond aux quatre lois de l'ouverture :
	; 1) ligne de commande
	; 2) si pas de ligne de commande : slecteur de fichiers
	;    et si annule, CTRL+O -> redemande
	; 3) en accessoire : un click appelle le slecteur
	; 4) en accessoire, supporte le VA_START

my_inits:	tst GWVA_APP_OBJ_IS_ACC_PRG
		bne.s .prg
		rts

.prg:		tst d0
		bne.s open_object		; cmd line present

acc_open:
menu_open:
	lea texte,a0			; 35 chars max.
	lea mask,a1			; 18 caracteres max
	lea 0,a2
	bsr FILE_SELECTOR
	tst d0
	ble .annule
	move.l a1,a0
	bra.s open_object
.annule:	rts

menu_information:
	lea objet_fenetre_info,a0
	bra GWVA_WIND_OBJ_PRG_CREATE_OPEN_ONE_WIND

routine_menu_quit:
app_term:
acc_close:
	tst GWVA_APP_OBJ_IS_ACC_PRG
	bne VISUAL40_END
	rts

other_message:
	cmp.w #VA_START,d0
	beq.s .va_start
	rts

.va_start:	move.l 6(a0),a0

	save.l a0
	bsr GWVA_APP_OBJ_PRG_ACC_OPEN_VSTATION
	load.l a0
	tst d7
	bge open_object
	rts		; pas b infinie si jamais 1 vstation se libre ?

open_object:		; ici : a0 pointeur sur un pathname !
	; le programme ...
	rts

	section DATA

texte:	dc.b 'File to Load : ',0
mask:	dc.b '*.S,*.BAK',0

END
