PAGE
LOCAL
LOC: EQU $
TRX1: DZS 1 < COORDONNEE X ORIGINE SEGMENT.
TRY1: DZS 1 < COORDONNEE Y ORIGINE SEGMENT.
TRX2: DZS 1 < COORDONNEE X EXTREMITE SEGMENT.
TRY2: DZS 1 < COORDONNEE Y EXTREMITE SEGMENT.
TRDX: DZS 1 < DELTA X.
TRDY: DZS 1 < DELTA Y.
TRDXF: DZS 2 < DELTA X EN FLOTTANT.
<
TRCFA: DZS 2 < COEFFICIENT A FLOTTANT.
TRCFB: DZS 2 < COEFFICIENT B FLOTTANT.
TRNPF: DZS 2 < NOMBRE DE PAS POUR LE TRACE (POUR
< FAIRE VARIER X). CETTE VALEUR = MAX
< (DELTAX,DELTAY).
TRXC: DZS 2 < X COURANT FLOTTANT.
TRYC: DZS 2 < Y COURANT FLOTTANT.
NMPL: WORD 16 < NOMBRE DE MOTS PAR LIGNE.
F05: FLOAT 0.5
< POUR ARRONDIS (CF S/P 'FIX').
< !!!!!! ^^^ A PARAMETRER.
<
ATRP: WORD TRP < TRACE POINT.
ATRPF: WORD TRPF < TRACE POINT DONT LES COORDONNEES SONT
< FLOTTANTES.
AFIX: WORD FIX < PASSAGE FLOAT-->FIX AVEC ARRONDI.
<
DMDIFF: WORD '8A01 < DIFFUSION IMAGE RESIDENTE.
WORD 'FEF*2
WORD '400*8
WORD '0001 < OUT ROUGE.
PAGE
PROG
TR: EQU $
<
< T R A C E D ' U N S E G M E N T E N V I D E O.
<
< LES COORDONNEES (X1,Y1),(X2,Y2) SONT EN
< 'TRX1' ET 'TRX2' DU LOCAL; ET 'C' = ADRESSE IMAGE.
<
PSR A,B,X,Y < SAUVEGARDES...
PSR L,W
LRM L,W
WORD LOC+'80 < BASE DU LOCAL.
WORD TRX1 < POUR PLUS TARD.
<
< CALCUL DELTAX ET DELTAY.
<
LA TRX2
SB TRX1
STA TRDX < DELTAX.
FLT
FST TRDXF < DELTAX FLOTTANT.
<
LA TRY2
SB TRY1
STA TRDY
JAE TR1
CPZ TRDX
JNE TR2
<
< ICI, DELTAX = 0 ET DELTAY # 0 : LIGNE VERTICALE.
<
ADRI 1,W < POUR FAIRE VARIER Y DANS LA BOUCLE.
LX TRDY
TR3: EQU $
LAI 1 < PAS DE VARIATION = 1 A PRIORI.
CPZR X
JGE TR31
NGR A < PAS DE VARIATION = -1.
NGR X < COUNT POSITIF.
TR31: EQU $
BSR ATRP < TRACE POINT.
XM 0,W
AD 0,W < INCREMENTATION +/- 1.
XM 0,W
JDX TR31 < POINT SUIVANT.
BSR ATRP < POINT EXTREME.
JMP TRFIN < C'EST FINI.
TR1: EQU $
<
< ICI, DELTAY = 0, VOYONS DELTAX.
<
CPZ TRDX
JNE TR4
<
< ICI, DELTAX = 0 ET DELTAY = 0, TRACER 1 POINT SEULEMENT.
<
BSR ATRP < TRACE POINT.
JMP TRFIN < C'EST FINI.
TR4: EQU $
<
< ICI, DELTAX #0 ET DELTAY = 0 : LIGNE HORIZONTALE.
<
LX TRDX
JMP TR3 < ET VOILA.
TR2: EQU $
<
< ICI, DELTAX # 0 ET DELTAY # 0 : IL FAUT DONC CALCULER L'EQUATION
< DE LA DROITE.
<
FLD TRDXF < DELTAX FLOTTANT.
FST TRCFA
LA TRDY
FLT
FDV TRCFA
JNV $+2
ACTD
FST TRCFA < A = DELTAY / DELTAX.
<
LA TRX1
FLT
FMP TRCFA
FST TRCFB
LA TRY1
FLT
FSB TRCFB
FST TRCFB < B = Y1 - AX1.
<
< T R A C E D U S E G M E N T
<
< ON TRACERA LE SEGMENT EN CALCULANT N POINTS AVEC
< N = MAX (DELTAX,DELTAY) EN VALEUR ABSOLUE.
<
LA TRDX < DELTAX.
JAGE $+2
NGR A < VALEUR ABSOLUE.
LR A,Y
LA TRDY
JAGE $+2
NGR A
CPR Y,A
JGE $+2
LR Y,A
LR A,X < 'A'='X'=MAX(DELTAX,DELTAY) EN
< VALEUR ABSOLUE.
FLT
FST TRNPF < NOMBRE DE PAS EN FLOTTANT.
LYI 0 < 'Y' = NUMERO DE PAS (DE 0 A N).
<
TR5: EQU $
LR Y,A < NUMERO DU PAS COURANT.
FLT
FMP TRDXF
FDV TRNPF
FST TRXC < (NUMERO PAS * DELTAX)/NB PAS.
LA TRX1
FLT
FAD TRXC
FST TRXC < X COURANT FLOTTANT.
<
FMP TRCFA
FAD TRCFB
FST TRYC < Y COURANT = A X + B.
BSR ATRPF < TRACE POINT.
ADRI 1,Y < PAS SUIVANT.
CPR X,Y
JLE TR5 < POINT SUIVANT.
JMP TRFIN < C'EST FINI.
<
TRFIN: EQU $
PLR L,W
PLR A,B,X,Y
RSR
PAGE
TRP: EQU $
<
< T R A C E D ' U N P O I N T.
<
< - ARGUMENTS:
< 'TRX1','TRY1' COORDONNEES X,Y DU POINT.
< 'C' ADRESSE MOT DE L'IMAGE.
< 'L' BASE DU LOCAL.
<
PSR A,B,X,C < SAUVEGARDES.
<
LA TRY1 < COORDONNEE Y.
MP NMPL < * NB MOTS PAR LIGNE.
ADR B,C
<
LA TRX1 < COORDONNEE X.
SLRS 4 < --> NB MOTS.
ADR A,C
<
LAI 'F
AND TRX1 < NUMERO BIT DANS LE MOT.
LR A,X
<
LA 0,C
SBT 0,X < SET BIT.
STA 0,C
LAD DMDIFF < DEMANDE DE DIFFUSION.
SVC 0
<
PLR A,B,X,C < RESTAURATIONS.
RSR
TRPF: EQU $
<
< T R A C E D ' U N P O I N T D O N T L E S
<
< C O O R D O N N E E S S O N T E N F L O T T A N T.
<
< - ARGUMENTS:
< 'TRXC' 'TRYC' : X ET Y FLOTTANTS.
<
PSR A,B,X,Y
LX TRX1 < SAUVER 'TRX1' ...
LY TRY1 < ... ET 'TRY1'.
<
FLD TRXC < X COURANT FLOTTANT.
BSR AFIX
STA TRX1 < X COURANT EN FIXE.
FLD TRYC < Y COURANT FLOTTANT.
BSR AFIX
STA TRY1 < Y COURANT EN FIXE.
BSR ATRP < TRACE POINT.
STX TRX1 < RESTAURATION 'TRX1' ...
STY TRY1 < ... ET 'TRY1'.
PLR A,B,X,Y
RSR
FIX: EQU $
<
< C O N V E R S I O N F L O A T - - > F I X A P R E S A R R O N D I
<
FAD F05 < ARRONDI.
FIX
RSR
Copyright © Jean-François COLONNA, 2022-2024.
Copyright © CMAP (Centre de Mathématiques APpliquées) UMR CNRS 7641 / École polytechnique, Institut Polytechnique de Paris, 2022-2024.