PAGE PROG < < G E N E R A T I O N D E P R I M I T I V E S G R A P H I Q U E S < < D E T Y P E < 1 2 3 4 5 6 > E X P R I M A N T L E S < < D E P L A C E M E N T S A E F F E C T U E R E N T R E D E U X < < P O I N T S. < < CE S/P TRADUIT EN TERMES DE PRIMITIVES <1,2,3,4,5,6> < (VOIR LE PROCESSEUR 3D) LES DEPLACEMENTS A EFFECTUER < ENTRE DEUX POINTS P1 ET P2 DE COORDONNEES RESPECTIVES < (X1,Y1,Z1),(X2,Y2,Z2). CES COORDONNEES SONT PLACEES < DANS UNE TABLE DE 6 MOTS BASEE PAR 'W'. < < LES DEPLACEMENTS SONT: < - SUR L'AXE DES X : 1 ET 4 < - SUR L'AXE DES Y : 2 ET 5 < - SUR L'AXE DES Z : 3 ET 6 < < ARGUMENTS: < < 'W'=ADRESSE MOT DE LA TABLE CONTENANT LES COORDONNEES. < < RESULTAT: < < 'A'=ADRESSE MOT DE LA SEQUENCE GENEREE, DELIMITEE < PAR UN $. < < NOTA: SEUL LE REGISTRE 'A' EST DETRUIT. < ZZSEQ: DZS 512 < SEQUENCE GENEREE. ZZSEQF: EQU $ < ZZPILE: DZS 20 LOCAL ZZLOC: EQU $ < LOCAL DU S/P 'ZZGEN'. ZZASEQ: WORD ZZSEQ < RELAI MOT SUR 'ZZSEQ'. ZZPCS: DZS 1 < POINTEUR COURANT (OCTET) SUR 'ZZSEQ'. ZZAOS: WORD ZZSEQ-ZERO*2 < RELAI OCTET SUR ZZSEQ. ZZAOSF: WORD ZZSEQF-ZERO*2 < RELAI SUR FIN DE 'ZZSEQ'. < (POUR VALIDATIONS) < ZZINF: WORD '8000 < L' "INFINI". < ZZK: DZS 1 < UNITE COURANTE.. ZZPRIM: DZS 1 < PRIMITIVE COURANTE. ZZACAL: WORD ZZCAL < S/P DE CALCUL ET GENERATION. PROG ZZGEN: EQU $ PSR B,X,Y < SAUVEGARDES. PSR C,L,W LR A,W < ADRESSE TABLE DES COORDONNEES. LRM L WORD ZZLOC+'80 < 'L' (LOCAL). < < RAZ SEQUENCE GENEREE. < STZ &ZZASEQ LRM A,B,X WORD ZZSEQ < EMETTEUR. WORD ZZSEQ+1 < RECEPTEUR. WORD ZZSEQF-ZZSEQ-1 < LONGUEUR. < < INITIALISATION POINTEUR SUR 'ZZSEQ' < LA ZZAOS STA ZZPCS < POINTEUR COURANT OCTET. < < ACQUISITION ET EXPLOITATION DES COORDONNEES. < LA X,W < X1. LB X+DIM,W < X2. LXI "1" < PRIMITIVE. LY DX < UNITES EN X. BSR ZZACAL < LA Y,W < Y1. LB Y+DIM,W < Y2. LXI "2" < PRIMITIVE. LY DY < UNITES EN Y. BSR ZZACAL < LA Z,W < Z1. LB Z+DIM,W < Z2. LXI "3" < PRIMITIVE. LY DZ < UNITES EN X. BSR ZZACAL < < DELIMITEUR '$' DE FIN DE SEQUENCE. < LX ZZPCS < POINTEUR COURANT (FORCEMENT < VALIDE). LAI "$" STBY &ZZINF < < FIN DU SOUS-PROGRAMME. < LA ZZASEQ < A=ADRESSE DE LA SEQUENCE GENEREE. PLR C,L,W PLR B,X,Y < RESTAURATIONS. RSR ZZCAL: EQU $ < < S/P DE GENERATION DES PRIMITIVES. < < ARGUMENTS: < 'A'=X1/Y1/Z1 < 'B'=X2/Y2/Z2 < 'X'="1"/"2"/"3" < 'Y'=UNITES X/Y/Z < 'ZZPCS'=POINTEUR COURANT SUR 'ZZSEQ'. < < RESULTAT: SEQUENCE DANS 'ZZSEQ' < < NOTA: SI DEBORDEMENT, RETOUR CCI... < PSR A,B,X,Y < SAUVEGARDES. < STY ZZK < UNITE COURANTE. STX ZZPRIM < PRIMITIVE COURANTE. < SBR B,A < CALCUL X2-X1 (OU Y2-Y1...)1- NGR A,A SARD 16 < ON ETEND LE SIGNE. DV ZZK < DIVISION PAR UNITE. LR A,X < 'X'=NOMBRE DE PRIMITIVES A GENERER < (POSITIF OU NEGATIF). LA ZZPRIM < PRIMITIVE A PRIORI. CPZR X JE ZZCALF < RIEN A GENERER. JG ZZCAL1 < DEPLACEMENT POSITIF. ADRI DIM,A < "1" DEVIENT "4", ETC. NGR X,X < 'X' SERA POSITIF. ZZCAL1: EQU $ PSR X < SAVE INDEX DE BOUCLE. LX ZZPCS < POINTEUR COURANT. STBY &ZZINF < ON PLACE LA PRIMITIVE. IC ZZPCS < INCREMENTAION DU POINTEUR. LR A,Y < SAVE PRIMITIVE. LA ZZPCS CP ZZAOSF < VALIDATION POINTEUR. < (IL NE FAUT PAS OUBLIER QU'ON < AURA UN "$" A PLACER EN FIN DE SEQUENCE. LR Y,A < RECUPERATION PRIMITIVE. JL ZZCAL2 < OK. WORD '1E16 < DEBORDEMENT: RETOUR CCI... ZZCAL2: EQU $ PLR X < RECUP INDEX DE BOUCLE. JDX ZZCAL1 < SUIVANT! < ZZCALF: EQU $ PLR A,B,X,Y < RESTAURATIONS. RSR