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