* routine récursive de calcul de
* factoriel
* par Golio Junior pour Falk'mag 6
section TEXT
move.l #10,d0
bsr fact
* retour système
move.w #0,-(sp)
trap #1
* fonction qui calcul factoriel de
* manière récursive
* entrée :
* d0.l : factoriel à calculer
* sortie :
* d1.l : résultat de la factoriel
fact
tst.l d0
* factoriel de 0?
bne fact_s1
* non alors on
* continue
move.l #1,d1
* oui, alors c'est
* égal à 1
rts
fact_s1
cmp.l #1,d0
* factoriel de 1?
bne fact_s2
* non alors on
* continue
move.l #1,d1
* oui, alors c'est
* égal à 1
rts
fact_s2
move.l d0,-(sp)
* on calcul
* factoriel de d0-1
* donc on sauve d0
subq.l #1,d0
* d0=d0-1
bsr fact
* calcul de la
* factoriel
* d1 contient la
* factoriel de d0-1
move.l (sp)+,d0
* récupération de d0
mulu.l d0,d1
* calcul de
* factoriel d0
rts
* remplissage de surface grâce à un
* germe
* par Golio Junior pour Falk'mag 6
* Définition de l'image
Video_mode equ %000100100
* 40 col, 200 lig, 65536 cou, TV Pal
Taille_ecran equ 320*200*2
ecran_largeur equ 320
ecran_hauteur equ 200
Pas_Fond equ 1
Fond_offset equ 128
include "principa.s"
prg_init
clr.w couleur
* couleur de remplissage
rts
prg
move.l adr_ecran,a0
* adresse écran
adda.l
#(117*ecran_largeur+89)*2,a0
* adresse du germe de
* remplissage
move.w (a0),d0
* d0 : couleur de la
* surface à colorier
move.w couleur,d1
* d1 : couleur de
* remplissage
bsr remplir
* coloriage !
add.w #%0001000001000011,couleur
* passage à la couleur
* suivante
and.w #%1111111111011111,couleur
rts
remplir
cmp.w (a0),d0
* le point courant est-il
* à colorier?
bne pas_exploration
* non alors c'est fini!
move.w d1,(a0)
* sinon on le colorie
move.l a0,-(sp)
* sauvegarde de l'adresse
* du point courant
lea (a0,2),a0
* point à droite
bsr remplir
* coloriage
move.l (sp)+,a0
* récupération de
* l'adresse du point
* courant
move.l a0,-(sp)
* ....
lea (a0,-2),a0
* point à gauche
bsr remplir
move.l (sp)+,a0
move.l a0,-(sp)
* ....
lea (a0,ecran_largeur*2),a0
* point en bas
bsr remplir
move.l (sp)+,a0
move.l a0,-(sp)
* ....
lea (a0,-ecran_largeur*2),a0
* point en haut
bsr remplir
move.l (sp)+,a0
pas_exploration
rts
section DATA
Fond incbin "68030.tpi"
* fond d'écran
section BSS
couleur ds.w 1
* couleur de remplissage
include "principh.s"
Golio Junior