NMPROC: VAL "TB" < NOM DU PROCESSEUR. IDP "INTERPOLATEUR - EMETTEUR - RELEASE 22/02/1980" IDP "JOHN F. COLONNA" EOT #SIP DEFINITION CMS5# EOT #SIP DEF PROCESSEUR# PROG WORD IMAGE < ENTRY POINT DU PROCESSEUR. WORD 0 PIMAGE: EQU $ LRP L < A NOTER : P='12 !!! BR -2,L < ENTRE DANS LE PROCESSEUR 'TN'. PAGE EOT #SIP DEFINITION ITEM# ITEM1: EQU ZERO+PILE-LTNI ITEM2: EQU ZERO+PILE-LTNI-LTNI PAGE EOT #SIP IMAGE 256# NOM: EQU ZERO+PILE+5-LNOM-2 < NOM DE L'IMAGE VIDEO. IMAG: EQU NOM+LNOM+2 < IMAGE VIDEO PROPREMENT DITE. IF ORDI-"S",XWOR%,,XWOR% ENTIM: EQU IMAG-LENTIM < EN-TETE IMAGE (TRACE VIDEO SOLAR). XWOR%: VAL 0 < < VALIDATION DU FORMAT DE L'IMAGE (CARREE) : < X20: VAL 1024/DY < NBRE DE LIGNES/IMAGE. X21: VAL CNMPL*16 < NBRE DE POINTS/LIGNE. IF X20-X21,,X100, IF ATTENTION : L'IMAGE N'EST PAS CARREE !!! X100: VAL 0 < < D E F I N I T I O N D E S C O U P L E S : < DSEC XY XD: WORD 0 < X POINT DE DEPART. YD: WORD 0 < Y POINT DE DEPART. XA: WORD 0 < X POINT D'ARRIVEE. YA: WORD 0 < Y POINT D'ARRIVEE. PAGE < < < L O C A L : < < < < BUFFERS DE GRANDE TAILLE : < TABLE BUF: DZS 128 < BUFFER SGF. SECTOR: EQU BUF MND: BYTE 16;'6D ASCI "#POINTS DEPART= " MNA: BYTE 17;'6D ASCI "#POINTS ARRIVEE=" MTRAJ: BYTE 8;'6D ASCI "TRAJET? " MCON: BYTE 13;'6D ASCI "NBRE DE PAS=" MPAS: BYTE 11;'6D ASCI "PAS A PAS?" MOAB: BYTE 20;'6D ASCI "OAB INTERMEDIAIRES? " MCONV: BYTE 18;'6D ASCI "CONVERSION VIDEO? " MNT: BYTE 27;'6D ASCI "NBRE COPIES/TEMPORISATION=" MPAUS: BYTE 7;'6D BYTE '07;'07;'07;'07;'07;'07 MTR: BYTE 16;'6D ASCI "TRANSFORMATION? " MERA: BYTE 12;'6D ASCI "EFFACEMENT? " X100: VAL 0 LOCAL LOC: EQU $ < < RELAIS A METTRE IMPERATIVEMENT EN TETE DU LOCAL : < (AFIN D'ETRE AISEMENT APPELABLE PAR LES ROUTINES < DE TRANSFORMATIONS CONTENUES DANS L'ITEM2) < < RESET '80 (00) ARESET: WORD RESET < MISE D'UN POINT A 0. < SET '81 (01) ASET: WORD SET < MISE D'UN POINT A 1. < INVER '82 (10) AINVER: WORD INVER < INVERSION D'UN POINT. < TEST '83 (11) ATEST: WORD TEST < TEST D'UN POINT. < < MESSAGES ET BUFFERS : < REP: WORD 0 MINT: BYTE 2;'6D ASCI "> " BDISP: BYTE 4;0 ASCI "1234" MERR: BYTE 3;'6D ASCI "??" MDEL: BYTE 8;'6D ASCI "DELETE? " MCOP: BYTE 6;'6D ASCI "COPY? " MSAVE: BYTE 6;'6D ASCI "SAVE? " MNOM: BYTE 5;'6D ASCI "NOM>" MAN: ASCI "!ASSIGN A=N," FA: ASCI "FA" IDAN: BYTE 0;'04 < IDESC DANS L'OCTET0. MBN: ASCI "!ASSIGN B=N," FB: ASCI "FB" IDBN: BYTE 0;'04 < IDESC DANS L'OCTET0. MAO: ASCI "!ASSIGN A=O,FA" IDAO: BYTE 0;'04 < IDESC DANS L'OCTET0. MBO: ASCI "!ASSIGN B=O,FB" IDBO: BYTE 0;'04 < IDESC DANS L'OCTET0. MAC: ASCI "!ASSIGN A=" BYTE "R";'04 MBC: ASCI "!ASSIGN B=" BYTE "R";'04 < < INTERFACE SEGMENT GRAPHIQUE : < Y: VAL 0 < COORDONNEE Y. X: VAL 1 < COORDONNEE X. NSEG: WORD 0 < SEGMENT INVALIDE INITIALEMENT. SEG: DZS 4 < SEGMENT GRAPHIQUE. LSEG: VAL $-NSEG*2 SEGORG: EQU SEG < POINT ORIGINE. SEGEXT: EQU SEG+2 < POINT EXTREMITE. TRAJ: DZS 4 < POUR EDITER LES TRAJECTOIRES < DES POINTS EN GRAPHIQUE. < < DEMANDES A CMS4 : < DEMMEM: WORD '0004 < DEMANDE D'ALOCATION 8K MOTS. RELMEM: WORD '0004 < DEMANDE DE RETOUR A 4K MOTS. WORD '4000 WORD '2000 DEMCCI: WORD '0001 < APPEL DU CCI. DEMSGN: WORD '0402 < DEMANDE D'ACCES AU SGN OVERLAY. WORD BRANCH-ZERO*2 < @OCTET DE LA BRANCHE. WORD ZERO-BRANCH+PILE-LTNI-LTNI*2 WORD -1 DEMOUT: WORD '0202 < SORTIE D'UN MESSAGE. WORD MINT-ZERO*2 WORD 2 DEMIN: WORD '0101 < ENTREE SUR LE TERMINAL. WORD REP-ZERO*2 WORD 1 DEMCON: WORD '0101 < ENTREE DU NBRE DE PAS. WORD REP-ZERO*2 WORD 2 < 2 CHIFFRES HEXAS. SGFW: WORD '0B02 < ECRITURE SGF UN ENREGISTREMENT. WORD BUF-ZERO*2 WORD 256 WORD 0 SGFR: WORD '0B09 < LECTURE DELETE SGF SUR '0B. WORD BUF-ZERO*2 WORD 256 WORD 0 SGFO1: WORD '0B04 < OUVERTURE CLEF '1.0' NEW (4) , < (5 POUR OLD). WORD 1 WORD 0 SGFC: WORD '0B07 < FERMETURE CLEF '1.0' SAVE (7) , < (6 SI RELEASE). DEMDA: WORD '0302 < DELETE NOM DU FICHIER FA. WORD FA-ZERO*2 WORD 4 WORD -1 DEMDB: WORD '0302 < DELETE LE NOM DU FICHIER FB. WORD FB-ZERO*2 WORD 4 WORD -1 CCII: WORD '0002 < ACCES CCI INTERPRETATIF. WORD 0 < @OCTET DE LA CARTE CONTROLE. WORD 80 < LONGUEUR MAX. DEMNOM: WORD '0101 < ENTREE D'UN NOM D'IMAGE. WORD NOM-ZERO*2 WORD LNOM*2 SGN: WORD '0502 < LECTURE PUIS ECRITURE D'UNE < IMAGE VIDEO. WORD NOM-ZERO*2 WORD LIMAG+LNOM+2*2 WORD 2*LNOM SLEEP: WORD '0005 < DEMANDE DE TEMPORISATION. WORD 0 WORD 15 < 15 SECONDES DE TEMPO. ERASE: WORD '0205 < EFFACEMENT DE L'ECRAN. CG: WORD '0204 < CLOSE GRAPHIQUE. OG: WORD '0203 < OPEN GRAPHIQUE. WG: WORD '020A < ECRITURE D'1N SEGMENT. WORD SEG-ZERO*2 WORD 8 COPY: WORD '0207 < DEMANDE DE HARD-COPY. BYTE '1B;'17;'8D;'1D POINTI: WORD '0207 < MISE EN MODE POINTILLE SUR 4014. BYTE '1B;'61;'04;0 CONTI: WORD '0207 < MISE EN MODE CONTINU SI 4014. BYTE '1B;'60;'04;0 DTRAJ: WORD '020A < AFFICHAGE DE LA TRAJECTOIRE. WORD TRAJ-ZERO*2 WORD 8 DEMSEG: WORD '0008 < LECTURE DE LA ZDC DU SYSTEME. WORD NSEG-ZERO*2 WORD LSEG WORD 'FFC0 < VALIDATION DES OCTETS. DELSEG: WORD '000A < ECRITURE EN ZDC DU SYSTEME. WORD NSEG-ZERO*2 WORD SEG-NSEG*2 WORD 'C000 < VALIDATION DES OCTETS. STOGS: WORD '000A < ECRITURE DANS LA ZDC. WORD NSEG-ZERO*2 WORD LSEG WORD 'FFC0 GETGS: WORD '0008 WORD NSEG-ZERO*2 WORD SEG-NSEG*2 WORD 'C000 IF ORDI-"S",XWOR%,,XWOR% STABIL: WORD '8A01 < DEMANDE STABILISATION IMAGE VIDEO. WORD IMAG-ZERO*2 WORD LIMAG*2 WORD TVPV < SUR LE PROCESSEUR VERT. XWOR%: VAL 0 < < CONSTANTES : < IF ORDI-"T",XWOR%,,XWOR% ACNSYS: ASCI ":SYS" XWOR%: VAL 0 NGE: WORD "GE" < NOM DU PROCESSEUR 'GE'. KIN: WORD -1 < COMPTAGE DES ENTRIES. VIDEO: WORD 1 < 1=GRAPHIQUE SEUL, < -1=GRAPHIQUE AVEC CONVERSION < VIDEO. EFFAC: WORD 1 < 0=ERASE SYSTEMATIQUE ECRAN, < 1=NON (IMPLICITE EN VIDEO). ITRAJ: WORD 0 < =0 : TRACE DES TRAJECTOIRES DES < POINTS EN MODE GRAPHIQUE. ICOP: WORD 1 < 0=HARD-COPY, 1=NON. NCOPY: WORD 1 < NBRE DE COPIES IMPLICITE. DELTA: WORD 0 < INDEX ZONE DE RANGEMENT D'UN < SEGMENT GRAPHIQUE A TRACER. IBUF: WORD 0 < INDEX BUFFER SGF. NAR: WORD 0 < NBRE DE POINTS IMAGE ARRIVEE. NDE: WORD 0 < NBRE DE POINTS IMAGE DEPART. SNDE: WORD 0 < NBRE DE POINTS REEL DE DEPART. < (AU CAS OU ELLE SERAIT REEXPLOREE) ND: WORD 0 < VALEUR TEMPORAIRE DE NDE POUR < RATTRAPAGE EVENTUEL DE NAR. NC: WORD 0 < DECOMPTEUR DES POINTS LORS D'UNE < INTERPOLATION. NMOTS: WORD LTNI < NBRE DE MOTS A RAZER DANS ITEM1. IRAZ: WORD 1 < 1=INUTILE DE RAZER ITEM1 , < 0 : IL FAUT RAZER L'ITEM1 CAR IL < A ETE ALTERE... IMAG2: WORD IMAG-ZERO*2 < @OCTET IMAGE VIDEO. ALIMAG: WORD LIMAG < LONGUEUR IMAGE VIDEO. NMPL: WORD CNMPL < NBRE DE MOTS DE 16 BITS/LIGNE. NLIG: WORD 1024/RDY-1 < NBRE DE LIGNES-1 D'UNE IMAGE. DICOX: WORD 0 < X DU POINT VIDEO COURANT M. DICOY: WORD 0 < Y DU POINT VIDEO COURANT M. DICOX1: WORD 0 < X DE L'ORIGINE VIDEO COURANTE M1. DICOY1: WORD 0 < Y DE L'ORIGINE VIDEO COURANTE M1. DICOX2: WORD 0 < X EXTREMITE VIDEO COURANTE M2. DICOY2: WORD 0 < Y EXTREMITE VIDEO COURANTE M2. NVP1: WORD '0A < POUR LA GESTION DES NVP DU < SGF EN BASCULE. PAS: WORD 0 < 0 : INTERPOLATION EN PAS A PAS, < 1 SINON (MODE CONTINU. IOAB: WORD 0 < 0=ENVOYER 'OAB' APRES CHAQUE < DESSINS INTERMEDIAIRES, < 1=NE PAS L'ENVOYER. CONS: WORD 16 < PAS D'INTERPOLATION. < (AUSSI DECOMPTEUR DES TOURS < A EFFECTUER). < < RELAIS DIVERS : < IF ORDI-"T",XWOR%,,XWOR% ASP3: WORD SP3 < STABILISATION IMAGE VIDEO. XWOR%: VAL 0 AVIS: WORD VIS < STABILISATION IMAGE VIDEO. AENTER: WORD ENTER < ENVOI MESSAGE, PUIS LECTURE < REPONSE O/N, ET ITERATION... AHEX: WORD HEX < CONVERSION HEXA-->BINAIRE. ADISP: WORD DISP < CONVERSION BINAIRE-->ASCI. APRINT: WORD PRINT < EMISSION D'UN MESSAGE. AGOSGN: WORD GOSGN < ACCES AU SGN POUR LECTURE/ < ECRITURE D'UNE IMAGE VIDEO. ACCI: WORD CCI < ACCES AU CCI INTERPRETATIF. ADF: WORD DF < TENTATIVE DELETE FICHIERS FA & FB AWR: WORD WR < ECRITURE/LECTURE SGF. ASTBUF: WORD STBUF < RANGEMENT DOUBLET DANS LE < BUFFER SGF ET ECRITURE < EVENTUELLE. AMAJL: WORD MAJL < INSERTION DE L'IMAGE DEPART DANS < LA LISTE D'ARRIVEE. AGET: WORD GET < RECUPERATION SEGMENT GRAPHIQUE. AITEM2: WORD ITEM2+LTN < ENTRY POINT DU MODULE EVENTUEL < DE TRANSFORMATION. ATRANS: WORD TRANS < ROUTINE INTERFACE DE TRANSFO. APAUS: WORD PAUS < ROUTINE DE PAUSE. AOVL: WORD OVL < CHARGEMENT DES OVERLAYS. AGOGE: WORD GOGE < RETOUR A 'GE'. AE30: WORD E30 < BOUCLE D'INTERPOLATION. ADRAW: WORD DRAW < TRACE D'UN SEGMENT GRAPHIQUE. ASEND: WORD SEND < ENVOI D'UN SEGMENT EN ZDC. AOAB: WORD OAB < ENVOI DE 'OAB'. AMCOPY: WORD MCOPY < HARD-COPY + TEMPORISATION. IF ORDI-"T",XWOR%,,XWOR% ADICO: WORD DICO < PARCOURS DICHOTOMIQUE D'UN < SEGMENT VIDEO. XWOR%: VAL 0 AREP: WORD REP,X < RELAI VERS LE BUFFER REP. ATYP: WORD ITEM2+IINDIC < ACCES AU TYPE DE L'ITEM2. ABDISP: WORD BDISP,X < RELAI BUFFER DE CONVERSION HEXA. ABUF: WORD BUF+1,X < REALI DU BUFFER SGF. AI1: WORD ITEM1-1,X < RELAI DE RAZ DE L'ITEM1. AIMAG: WORD IMAG-1,X < RELAI IMAGE VIDEO POUR JDX. AEOT: WORD NOM+LNOM ALONG: WORD NOM+LNOM+1 < POUR L'INDICATEUR TYPE 'VIDEO'. AMND: WORD MND AMNA: WORD MNA AMPAS: WORD MPAS AMCON: WORD MCON AMTRAJ: WORD MTRAJ AMCONV: WORD MCONV AMNT: WORD MNT AMTR: WORD MTR AMPAUS: WORD MPAUS AMERA: WORD MERA AMOAB: WORD MOAB < < PILES DE TRAVAIL : < APILE: WORD PILE-1 < PILE DE SMC (RETOUR A 'GE'). STACK: DZS 30 PROG PAGE IF ORDI-"T",XWOR%,,XWOR% TIMAG: WORD IMAG < @RELATIVE IMAGE VIDEO. EOT #SIP SP3# XWOR%: VAL 0 VIS: EQU $ < ENTRY ESCLAVE. CPZ VIDEO < QUEL LE MODE DE SORTIE ??? JG VIS1 < GRAPHIQUE PUR : RIEN A FAIRE ... IF ORDI-"T",XWOR%,,XWOR% LA ASP3 < ACCES A L'ADRESSE DE LA < ROUTINE MAITRE. JAE VIS1 < ON N'EST PAS SOUS :SYS. WORD '1EC5 < OK , ON EST SOUS :SYS. XWOR%: VAL 0 IF ORDI-"S",XWOR%,,XWOR% PSR X LAD STABIL SVC 0 < STABILISATION IMAGE VIDEO. PLR X XWOR%: VAL 0 VIS1: EQU $ RSR PAGE < < < C O N V E R S I O N H E X A ---> B I N A I R E : < < < ARGUMENT : < Y=NBRE DE CARACTERES A DECODER , < REP=CHAINE DE CARACTERES. < < < RESULTATS : < B=0 : OK ET (A)=VALEUR BINAIRE DECODEE , < B=1#0 : LA CHAINE D'ENTREE EST ERRONNEE. < LES INDICATEURS SONT POSITIONNES SUR (B). < < HEX: EQU $ LXI 0 < INDEX DU BUFFER DE REPONSE. LBI 0 < INITIALISATION DE B. E55: EQU $ LBY &AREP < A=CARACTERE COURANT DU BUFFER. CPI '0D < FIN DE MESSAGE ??? JE HEX1 < OUI , OK. CPI '04 < FIN DE MESSAGE ??? JE HEX1 < OUI , OK. ADRI -'30,A JAL E472 < ERREUR CARACTERE NON RECONNU. CPI 9 < EST-CE UN CHIFFRE ??? JLE E51 < OUI , C'EST UN CHIFFRE. ADRI -'41+'39+1,A < NON. CPI 'A < VALIDATION. JL E472 < ERREUR : CARACTERE NON RECONNU. CPI 'F < VALIDATION. JG E472 < ERREUR : CARACTERE NON RECONNU. E51: EQU $ SCRS 4 < MISE DES 4 BITS EN TETE DE A. SCLD 4 < ET CONCATENATION A B. ADRI 1,X < PROGRESSION DE L'INDEX. CPR X,Y < EST-CE FINI ??? JNE E55 < NON , ON CONTINUE. HEX1: EQU $ LR B,A < A=VALEUR BINAIRE DE (REP). LBI 0 < B=0 : RETOUR OK. E473: EQU $ CPZR B < POSITIONNEMENT DES INDICATEURS. RSR < < RETOURS EN ERREUR : < E472: EQU $ LBI 1 < B#0. JMP E473 < PAR ICI LA SORTIE ... PAGE < < < C O N V E R S I O N B I N A I R E ----> A S C I H E X A : < < < ARGUMENT : < B=VALEUR A CONVERTIR DANS BDISP. < < DISP: EQU $ LXI 1 < INDEX DE RANGEMENT DANS BISP. LYI 1+4 < BORNE SUPERIEURE DE (X). DISP1: EQU $ LAI 0 < CLEAR A. SLLD 4 < DECONCATENATION D'UN CHIFFRE. CPI 9 < EST-CE UN CHIFFRE ??? JLE DISP2 < OUI, CHIFFRE DECIMAL. ADRI '41-'39-1,A < CAS DES LETTRES A,B,C,D,E,F. DISP2: EQU $ ADRI '30,A < CONVERSION ASCI. STBY &ABDISP < ET MISE DANS LE BUFFER BDISP. ADRI 1,X < AU SUIVANT. CPR X,Y < EST-CE FINI ??? JNE DISP1 < ET NON .... RSR < ET OUI ... PAGE < < < E M I S S I O N D ' U N M E S S A G E : < < < ARGUMENT : < A=@MESSAGE EN MOT. < < PRINT: EQU $ PSR C,X LR A,C < C=@MOT DU MESSAGE. ADR A,A < CONVERSION OCTET. ADRI 1,A < ADRESSE OCTET DU MESSAGE. STA DEMOUT+1 < MAJ AMDEM. LBY 0,C < RECUPERATION LONGUER MESSAGE. STA DEMOUT+2 < MAJ CODEM. LAD DEMOUT SVC 0 < EMISSION DU MESSAGE. PLR C,X RSR PAGE < < < H A R D - C O P Y E T T E M P O R I S A T I O N : < < MCOPY: EQU $ CPZ ICOP < FAUT-IL HARD-COPIER ??? JNE MCOPY2 < NON. LX NCOPY < OUI , (X)=NBRE DE COPIES. MCOPY1: EQU $ PSR X < SAVE LE DECOMPTE DES COPIES. LAD COPY SVC 0 < HARD-COPY. LAD SLEEP SVC 0 < TEMPORISATION. PLR X < RESTAURE LE DECOMPTE DES COPIES. JDX MCOPY1 < A LA SUIVANTE. MCOPY2: EQU $ RSR PAGE < < < P A U S E : < < < FONCTION : < BLOQUER LE PROGRAMME JUSQU'A LA < RECEPTION D'UN 'N'. < < PAUS: EQU $ LAD CG SVC 0 < REMISE EVENTUELLE EN ALPHA. PAUS1: EQU $ LA AMPAUS BSR AENTER < ENVOI MESSAGE ET LECTURE DE < LA REPONSE. JE PAUS1 < ON BOUCLE SI OUI 'O'. RSR < SINON 'N' ON ARRETE... PAGE < < < L E C T U R E / E C R I T U R E I M A G E : < < < ARGUMENT : < A=@MESSAGE A EMETTRE. < < GOSGN2: EQU $ LR Y,A < RESTAURE A=@MESSAGE. GOSGN: EQU $ STZ IRAZ < IRAZ=0 : IL FAUDRA RAZER ITEM1. LR A,Y < SAVE Y=@MESSAGE. BSR APRINT < EMISSION DU MESSAGE ARGUMENT. LAD DEMNOM SVC 0 < ENTREE DU NOM DEMANDE. LAI '04 STBY &AEOT < INSERTION D'UN EOT A PRIORI. LAD SGN SVC 0 < LECTURE/ECRITURE DE L'IMAGE < DEMANDEE. JNE GOSGN2 < ERREUR SGN. LBY SGN < ACCES AU NVP D'ACCES SGN. CPI '05 < EST-CE UN LOAD ??? JNE GOSGN1 < NON. LA &ALONG < OUI , ACCES AU TYPE. JAGE GOSGN2 < ERREUR : CE N'EST PAS UNE < IMAGE VIDEO. CPI -3 < SUITE DE LA VALIDATION. JL GOSGN2 < CE N'EST PAS UNE IMAGE VIDEO ... GOSGN1: EQU $ LR Y,A < RESTAURE A=@MESSAGE. RSR PAGE < < < A C C E S A U C C I I N T E R P R E T A T I F : < < < ARGUMENT : < A=@MOT DE LA CARTE CONTROLE. < < CCI: EQU $ SLLS 1 < CONVERSION EN UNE ADRESSE OCTET. STA CCII+1 < MAJ DE L'AMDEM. LAD CCII SVC 0 < ENVOI DE LA CARTE CONTROLE. RSR < < < T E N T A T I V E D E D E L E T E < D E S F I C H I E R S F A & F B : < < DF: EQU $ LAD MAO BSR ACCI < !ASSIGN A=O,FA. LAD MAC BSR ACCI < !ASSIGN A=R. LAD DEMDA SVC 0 < DESTRUCTION DU NOM FA. LAD MBO BSR ACCI < !ASSIGN B=O,FB. LAD MBC BSR ACCI < !ASSIGN B=R. LAD DEMDB SVC 0 < DESTRUCTION DU NOM FB. RSR PAGE < < < I N T E R F A C E D E T R A N S F O R M A T I O N : < < < FONCTION : < IL EST POSSIBLE DE PROGRAMMER A L'AIDE < DE 'GC' UN MODULE DE TRANSFORMATION < EN ASSEMBLEUR (ITEM1) ; LE BINAIRE < RESULTANT EST DANS L'ITEM2 : L'ADRESSE < DE SON POINT D'ENTREE EST DANS SON < MOT0. < < < ARGUMENT : < B=1 : IMAGE D'ARRIVEE, < =2 : IMAGE DE DEPART, < B=-1 : AVANT IMAGE D'ARRIVEE SI VIDEO, < =-2 : AVANT IMAGE DE DEPART SI VIDEO, < X,Y=CORRDONNEES D'UN POINT BLANC SI VIDEO, < A=@DEMSEG SI VIDEO ET SI B<0. < A=@SEGMENT COURANT SI GRAPHIQUE. < < TRANS: EQU $ CPZ AITEM2 < Y-A-T'IL UNE TRANSFORMATION < A OPERER ??? JE NTRANS < NON. PSR C,L < PRUDENCE ...!!! BSR &AITEM2 < ET OUI, A LA GRACE DE DIEU !!! PLR C,L NTRANS: EQU $ RSR PAGE < < < R E C U P E R A T I O N D ' U N S E G M E N T < G R A P H I Q U E : < < < FONCTION : < MET DANS 'SEG' LES COORDONEES D'1N < SEGMENT GRAPHIQUE, ET DE PLUS INDIQUE < PAR (A)=0 , SI LE SEGMENT DONNE EST < EN FAIT REDUIT A UN POINT DOUBLE A < L'ORIGINE (FIN DE TRACE). < < < ARGUMENT : < B=1 : IMAGE D'ARRIVEE, < =2 : IMAGE DE DEPART. < < GET: EQU $ LAD DEMSEG SVC 0 < ACCES AU SEGMENT COURANT. CPZ NSEG < TEST DE VALIDATION DU SEGMENT. JE GET < INVALIDE : ON REBOUCLE LE TEST. STZ NSEG < OK, ON INDIQUE QU'ON L'A PRIS < EN COMPTE. LAD DELSEG SVC 0 < LORSQU'ON L' , ON LE DELETE ... LA SEGORG+X OR SEGORG+Y OR SEGEXT+X OR SEGEXT+Y < (A)=0 SI ORG=EXT=O. PSR A < SAVE LE RESULTAT DU TEST DE < FIN DE DESSIN ('OAB'). LAD SEG < A=@SEGMENT COURANT. BSR ATRANS < TRANSFORMATION EVENTUELLE. PLR A < RESTAURE (A)=TEST DE FIN DE DESSIN RSR PAGE < < < T R A C E D ' U N S E G M E N T : < < DRAW: EQU $ LAD OG < LORSQU'ON VIENT DE TRAITER SVC 0 < UNE EXTREMITE, ON TRACE LE LAD WG < SEGMENT CORRESPONDANT. SVC 0 RSR < < < E N V O I D U S E G M E N T C O U R A N T < D A N S L A Z D C : < < SEND: EQU $ LAD GETGS SVC 0 < ACCES AU MOT DE VALIDATION < COURANT. CPZ NSEG JNE SEND < LE SEGMENT PRECEDENT N'A PAS < ENCORE ETE VALIDE, < ON ATTENDE !! DC NSEG < OK, NSEG=-1 (VALIDE). LAD STOGS SVC 0 < ENVOI DU SEGMENT COURANT. RSR < < < E N V O I D E ' O A B ' : < < OAB: EQU $ STZ SEG+0 < GENERATION D'UN STZ SEG+1 < SEGMENT REDUIT STZ SEG+2 < A UN POINT DOUBLE STZ SEG+3 < REDUIT A L'ORIGINE. BSR ASEND < ENVOI DE 'OAB' DANS LA ZDC. RSR PAGE IF ORDI-"T",XWOR%,,XWOR% < < < T R A C E D I C H O T O M I Q U E D ' U N S E G M E N T : < < DICO: EQU $ LA DICOX1 < A=X1. AD DICOX2 < A=X1+X2. SLRS 1 < A=(X1+X2)/2. STA DICOX < X DU MILIEU DE M1M2. LA DICOY1 < A=Y1. AD DICOY2 < A=Y1+Y2. SLRS 1 < A=(Y1+Y2)/2. STA DICOY < Y DU MILIEU DE M1M2. < < POSITION DE M PAR RAPPORT A M1 : < SB DICOY1 < A=Y-Y1. JANE DICO31 < M#M1. LA DICOX < A=X. SB DICOX1 < A=X-X1. JAE DICO32 < M=M1. < < POSITION DE M PAR RAPPORT A M2 : < DICO31: EQU $ LA DICOY < A=Y. SB DICOY2 < A=Y-Y2. JANE DICO30 < M#M2 ET M#M1. LA DICOX < A=X. SB DICOX2 < A=X-X2. JANE DICO30 < M#M2 ET M#M1. < < CAS OU M=M1 OU M=M2 : < DICO32: EQU $ LX DICOX LY DICOY BSR ASET < AFFICHAGE DU POINT M=(M1+M2)/2. RSR < ARRET PROVISOIRE DE LA DICHOTOMIE < DESCENDANTE. < < CAS OU M#M1 ET M#M2 : < DICO30: EQU $ LA DICOX2 < A=X2. LB DICOY2 < B=Y2. PSR A,B < SAVE LE POINT M2 COURANT. LA DICOX < A=X. STA DICOX2 < X2<--X. LA DICOY < A=Y. STA DICOY2 < Y2<--Y. BSR ADICO < DICHOTOMIE SUR LE SEGMENT M1M. LX DICOX2 < X=X2. LY DICOY2 < Y=Y2. BSR ASET < AFFICHAGE DU POINT M2 STX DICOX1 < X1<--X2. STY DICOY1 < Y1<--Y2. PLR A,B < RESTAURATION DU POINT M2 APRES < LE CHANGEMENT DU POINT M1. STA DICOX2 < RESTAURE X2. STB DICOY2 < RESTUARE Y2. JMP DICO < VERS LA POURSUITE DE LA DICHOTOMIE. XWOR%: VAL 0 PAGE < < < M I S E D ' U N P O I N T A 1 : < < < ARGUMENTS : < X ET Y CONTIENNENT L'X ET L'Y DU POINT. < C=@IMAG. < < SET: EQU $ PSR B,X,C LR Y,A MP NMPL < CONVERSION DE L'Y DU POINT EN < NUMERO DE MOT. ADR B,C LR X,A SLRS 4 ADR A,C < C=@MOT CONTENANT LE POINT (X,Y). LAI 'F ANDR A,X < CALCUL DE X MODULO 16. < X=NUMERO DU BIT DANS LE MOT. LA 0,C < A=MOT CONTENANT LE POINT (X,Y). SBT 0,X < MISE DU POINT A 1. STA 0,C < MISE A JOUR DE CE MOT. PLR B,X,C RSR < < < E F F A C E M E N T D ' U N P O I N T : < < < ARGUMENTS : VOIR 'SET'. < < RESET: EQU $ PSR B,X,C LR Y,A MP NMPL ADR B,C LR X,A SLRS 4 ADR A,C < C=@MOT CONTENANT LE POINT (X,Y). LAI 'F ANDR A,X < X=NUMERO DU BIT REPRESENTANT < LE POINT DANS LE MOT ((C)). LA 0,C RBT 0,X < EFFACEMENT DU POINT (X,Y). STA 0,C < MISE A JOUR DE L'IMAGE. PLR B,X,C RSR < < < I N V E R S I O N V I D E O D ' U N P O I N T : < < < ARGUMENTS : VOIR 'SET'. < < INVER: EQU $ PSR B,X,C LR Y,A MP NMPL ADR B,C LR X,A SLRS 4 ADR A,C LAI 'F ANDR A,X LA 0,C IBT 0,X < INVERSION VIDEO DU POINT (X,Y). STA 0,C PLR B,X,C RSR < < < T E S T D ' U N P O I N T : < < < ARGUMENTS : VOIR 'SET'. < < < RESULTAT : < CARRY POSITIONNE PAR LE POINT (0/1). < < TEST: EQU $ PSR B,X,C LR Y,A MP NMPL ADR B,C LR X,A SLRS 4 ADR A,C LAI 'F ANDR A,X LA 0,C TBT 0,X < TEST DU POINT (X,Y). PLR B,X,C RSR PAGE < < < I N S E R T I O N D ' U N P O I N T D E D E P A R T < D A N S L A L I S T E D ' A R R I V E E : < < < ARGUMENT : < X ET Y CONTIENNENT LE POINT DE DEPART A INSERER. < < MAJL: EQU $ LR X,B < B=X DU POINT BLANC. LX IBUF < X=INDEX COURANT BUFFER SGF. STB &ABUF < SAVE LA COORDONNEE X DU POINT. ADRI 1,X < PROGRESSION INDEX BUFFER. STY &ABUF < SAVE LA COORDONNEE Y DU POINT. ADRI 3,X < PROGRESSION INDEX BUFFER. IC NDE < COMPTAGE DES POINTS BLANCS. LA NDE CP NAR JLE E17 < L'IMAGE DE DEPART A POUR LE < MOMENT, MOINS DE POINTS QUE < L'IMAGE D'ARRIVEE. < < CAS OU L'IMAGE DE DEPART A PLUS DE POINTS QUE L'IMAGE D'ARRIVEE : < ADRI -2,X < RETOUR SUR LE COUPLE (X,Y) < DE L'IMAGE D'ARRIVEE. STZ &ABUF < ON LE PLACE A L'ORIGINE. ADRI 1,X < PROGRESSION INDEX BUFFER. STZ &ABUF < MISE DE L'Y A L'ORIGINE. ADRI 1,X < PROGRESSION INDEX BUFFER. E17: EQU $ BSR AWR < LECTURE/ECRITURE SGF. LR B,X < PUIS RESTAURE COORDONNEE X. RSR PAGE < < < R A N G E M E N T D A N S L E B U F F E R S G F : < < < FONCTION : < CETTE ROUTINE RANGE LE COUPLE (X,Y) DANS < LE BUFFER SGF SUIVANT L'INDEX 'IBUF' ; < LORSQUE LE BUFFER EST PLEIN, UNE ECRITURE < DE L'ENREGISTREMENT SGF EST FAITE. < < STBUF: EQU $ PSR A,X < SAVE. LR X,A < MISE DE LA COORDONEE X DANS A. LX IBUF < X=INDEX COURANT DE BUFSGF. STA &ABUF < RANGEMENT DE LA COORDONNEE X. ADRI 1,X STY &ABUF < RANGEMENT DE LA COORDONNEE Y. ADRI 1,X LR X,A < ACCES A L'INDEX COURANT. CPI 4*31 < EST-ON AU BOUT DU BUFFER ??? JL STBUF1 < NON , RIEN A FAIRE .... < < ECRITURE DE L'ENREGISTREMENT COURANT : < LAD SGFW SVC 0 LAI 0 < AFIN DE REINITIALISER L'INDEX < COURANT DU BUFFER SGF. STBUF1: EQU $ STA IBUF < MISE A JOUR DE 'IBUF'. PLR A,X < RESTAURE. RSR < RETOUR .... PAGE < < < L E C T U R E / E C R I T U R E S G F : < < WR: EQU $ LR X,A CPI 4*31 < VALIDATION INDEX BUFFER. JL E18 < OK , IL TIENT ENCORE. LAD SGFW SVC 0 < ECRITURE DE L'ENREGISTREMENT < COURANT DE '0A. LAD SGFR SVC 0 < PUIS LECTURE-DELETE DE L'ENREGIS- < TREMENT COURANT DE '0B. LAI 0 < REINITIALISATION DE L'INDEX. E18: EQU $ STA IBUF < MISE A JOUR DE L'INDEX BUFFER. RSR PAGE < < < E N T R E E D ' U N E R E P O N S E : < < < REPONSES RECONNUES : < O : B=0, < N : B=1, < W : RETOUR TEMPORAIRE AU CCI, < F : ABORTE DE TA. < < < ARGUMENT : < A=@MOT DU MESSAGE A EMETTRE AU PREALABLE. < < < RESULTAT : < B=0 : OUI , < =1 : NON. < INDICATEURS POSITIONNES SUR (B). < < ENTER: EQU $ LR A,Y < Y=SAVE @MESSAGE. BSR APRINT < EMISSION DU MESSAGE PREALABLE. LAD DEMIN SVC 0 < ENTREE D'UN CARACTERE REPONSE. LBY REP < ACCES A LA REPONSE. CPI "W" < DEMANDE DE PASSAGE AU CCI ??? JNE ENTER2 < NON. < < RETOUR TEMPORIARE AU CCI : < LAD DEMCCI SVC 0 < APPEL DU CCI. LR Y,A < AU RETOUR PAR !GO, ON RESTAURE < A=@MESSAGE A EMETTRE. JMP ENTER < ET ON RECOMMENCE. < < AUTRES COMMANDES : < ENTER2: EQU $ CPI "F" < EST-CE UNE DEMANDE D'ABORT ??? JE ALTMOD < ET OUI, COMME UN ALT-MODE .... LBI 0 < 0=OUI A PRIORI. CPI "O" < EST-CE OUI ??? JE ENTER1 < OK , FIN... LBI 1 < 1=(ON A PRIORI. CPI "N" < EST-CE NON ??? LR Y,A < RESTAURE A=@MESSAGE. JNE ENTER < RIEN COMPRIS, ON RECOMMENCE. ENTER1: EQU $ CPZR B < POSITIONNEMENT DES INDICATEURS. RSR PAGE < < ERREURS LORS DU CCI INTERPRETATIF : < CCIER: EQU $ LAD MERR BSR APRINT < ENVOI MESSAGE D'ERREUR. X100: VAL 0 < < < R E T O U R A ' G E ' : < < GOGE: EQU $ CPZ IOAB < A-T'ON ENVOYE LES 'OAB' < INTERMEDIAIRES ??? JE FOAB < OUI, INUTILE ICI, BSR AOAB < NON, ON L'ENVOIE ICI. FOAB: EQU $ CPZ PAS JE ALTMOD < DANS LE CAS DU MODE PAS-A-PAS, < SI LE HARD-COPY EST DEMANDE, < IL A DEJA ETE FAIT LORS DE < LA DERNIERE ITERATION... BSR AMCOPY < HARD-COPY EVENTUELLE+TEMPO. ALTMOD: EQU $ LAD CG SVC 0 < REMISE EN ALPHA-NUMERIQUE, AU < CAS OU L'ON AURAIT FAIT DU < GRAPHIQUE ... LAI BRANCH-ZERO LR A,W < REINITIALISE W=@BRANCH. < < PREPARATION DE L'3VERLAY : < LAI '06 STBY DEMSGN < DEMSGN EST MISE EN MODE 'LOAD < SOUS :SYS '. LA NGE STA 0,W < LE NOM DE 'GE' EST MIS EN TETE DE < LA BRANCHE D'OVERLAY. LA APILE LR A,K < REINITIALISATION DE K SUR LA < PILE DE SMC. LAD RELMEM SVC 0 < RETOUR A 4K MOTS. BSR ADF < DELETE FICHIERS FA ET FB. LAD DELSEG SVC 0 < TENTATIVE SYSTEMATIQUE DE < DELETE DU SEGMENT ':GS'. < < RAZ EVENTUEL DE L'ITEM1 : < CPZ IRAZ < L'ITEM1 A-T'IL ETE ALTERE ??? JNE NRAZ < NON, RIEN A FAIRE... LX NMOTS < OUI, X=NBRE DE MOTS A RAZER. RAZ: EQU $ STZ &AI1 < RAZ MOT A MOT. JDX RAZ NRAZ: EQU $ < < TENTATIVE(S) DE CHARGEMENT DE 'GE' : < GOGE2: EQU $ LAD DEMSGN < A=@DEMSGN , W=@BRANCH. BSR AOVL < TENTATIVE DE LOAD 'GE'. LAD DEMCCI SVC 0 < RETOUR AU CCI SI ERREUR , JMP GOGE2 < ET NOUVELLE TENTATIVE SI !GO. < < < I N T E R P O L A T E U R G R A P H I Q U E < E M E T T E U R D A N S L A Z D C : < < < CE PROCESSEUR EST IDENTIQUE AU PROCES- < SEUR 'TA' EN MODE GRAPHIQUE, A LA DIFFERENCE < PRES SUIVANTE : LE SEGMENT COURANT AFFICHE < EST ENVOYE SIMULTANEMENT DANS LA < ZDC, OU IL PEUT ETRE RECUPERE PAR < 'GG', 'GV', 'TA',... < < WORD IMAG WORD LOC+'80 WORD BRANCH IMAGE: EQU $ LRP K ADRI -1,K PLR C,L,W < INITIALISATIONS DES 3 BASES. LAD STACK-1 LR A,K < INITIALISATION DE K SUR LA PILE < DE TRAVAIL DE 'TN'. IC KIN < DECOMPTE DES ENTRIES. JG ALTMOD < RETOUR A GE SI ALT-MODE ... IF ORDI-"T",XWOR%,,XWOR% < < TEST DU NUMERO DE COMPTE D'APPEL : < WORD '1E25 < (A,B)=<ACN>. CP ACNSYS < EST-CE :SYS ??? JNE E4000 < NON. LR B,A < PEUT-ETRE ... CP ACNSYS+1 < EST-CE :SYS ??? JE E4001 < ET OUI , ON POURRA STABILISER ... E4000: EQU $ STZ ASP3 < NON , PSA DE STABILISATION... E4001: EQU $ XWOR%: VAL 0 < < ACCES A L'IDESC UTILISATEUR : < WORD '1E45 < A=IDESC. ADRI '30,A < CONVERSION EN UN CHIFFRE ASCI. STBY IDAN < MAJ NOM FA. STBY IDBN < MAJ NOM FB. STBY IDAO < MAJ NOM FA. STBY IDBO < MAJ DU NOM FB. < < TENTATIVE DE DELETE DES FICHIERS FA & FB : < BSR ADF < < OUVERTURE DE NOUVEAUX FICHIERS FA & FB : < LAD MAN BSR ACCI < !ASSIGN A=N,FA. JNE CCIER < ON ABORTE ICI SI ERREUR. LAD MBN BSR ACCI < !ASSIGN B=N,FB. JNE CCIER < ON ABORTE ICI SI ERREUR. LAD MDEL BSR AENTER < FAUT-IL DELETER ':GS' AU < PREALABLE ??? JNE E202 < NON. LAD DELSEG SVC 0 < OUI. E202: EQU $ LA AMTRAJ BSR AENTER < FAUT-IL TRACER LES TRAJECTOIRES < DES POINTS ??? STB ITRAJ < B=0 SI OUI, B=1 SI NON. LA AMERA BSR AENTER < FAUT-IL EFFACER L'ECRAN AVAANT < CHAQUE INTERPOLATION ??? STB EFFAC < SAVE LA REPONSE OUI/NON. LAD MCOP BSR AENTER < FAUT-IL FAIRE UN HARD-COPY < APRES CHAQUE INTERPOLATION ??? STB ICOP < SAVE LA REPONSE OUI/NON. CPZR B < Y-AURA-T'IL HARD-COPY ??? JNE E602 < NON , RIEN DE PLUS. E601: EQU $ LA AMNT < SI OUI, ON PEUT CHANGER LE BSR APRINT < NBRE DE COPIES AINSI QUE LA < TEMPORISATION (S'ADAPTANT AINSI < AU HARD-COPY ET A LA CAMERA 16). LAD DEMCON SVC 0 < ENTREE DU NBRE DE COPIES ET < DE LA TEMPORISATION EN SECONDES < SOUS FORME DE 2 CHIFFRES HEXAS. LYI 2 < 2 CHIFFRES A CONVERTIR. BSR AHEX < TENTATIVE DE CONVERSION BINAIRE. JNE E601 < ERREUR DE CARACTERES. JAL E601 < ERREUR DE VALEUR. JAE E602 < SI LA VALEUR ENTREE EST NULLE, < OU SI LE MESSAGE EST VIDE, ON < CONSERVE LES VALEURS IMPLICITES. SCLD 12 < EXTRACTION DANS B DU NBRE DE < COPIES (A NOTER : (B)=0). SCLS 4 < MISE DE LA TEMPORISATION DANS A. JAE E603 < TEMPO NULLE, ON GARDE LA VALEUR < IMPLICITE. STA SLEEP+2 < SINON, ON CHANGE LA TEMPO. E603: EQU $ CPZR B JE E602 < LE NBRE DE COPIES EST NUL, ON < CONSERVE LE NBRE IMPLICITE. STB NCOPY < SINON, ON CHANGE LE NBRE. E602: EQU $ LA AMCONV BSR AENTER < FAUT-IL CONVERTIR CHAQUE < GRAPHISME EN IMAGE VIDEO ??? JG E201 < NON , GRAPHIQUE PUR. LB VIDEO < OUI , CONVERSION DEMANDEE. NGR B,B < ON FAIT : VIDEO=-1. STB VIDEO E200: EQU $ LAD DEMMEM SVC 0 < ALLOCATION 8K MOTS. JMP E170 E201: EQU $ < < CHOIX DU MODE D'INTERPOLATION : < E170: EQU $ LA AMPAS BSR AENTER < ENVOI MESSAGE ET REPONSE. STB PAS < SAVE L'INDICATEUR : 0=PAS A PAS. E310: EQU $ < < ENVOI DE OAB INTERMEDIAIRES ??? < LA AMOAB BSR AENTER < ENVOI DU MESSAGE, ET LECTURE STB IOAB < REPONSE DANS IOAB. < < ENTREE DU NBRE D'ITERATIONS : < E50: EQU $ LA AMCON BSR APRINT < ENVOI D'1N MESSAGE. LAD DEMCON SVC 0 < ENTREE D'1N NBRE HEXA SOUS FORME < DE 2 CARACTERES. LYI 2 < 2 CARACTERES A DECODER. BSR AHEX < DECODAGE DE (REP). JNE E50 < ERREUR , CE N'EST PAS DE < L'HEXADECIMAL ... JALE E50 < ERREUR : NBRE NEGATIF OU NUL. STA CONS < SAVE LA VALEUR DE CONS. < < FAUT-IL TRANSFORMER PAR (ITEM2) : < LA AMTR BSR AENTER < ENVOI MESSAGE ET LECTURE REPONSE. JE TRANS1 < OUI. STZ AITEM2 < NON , ET ON FAIT AITEM2=0. JMP TRANS2 TRANS1: EQU $ LBY &ATYP < OUI : IL FAUT VALIDER L < TYPE DE L'ITEM2. CPI "P" < EST-CE UN PROGRAMME BINAIRE ??? JNE CCIER < NON, ON ABORTE... TRANS2: EQU $ < < < A C C E S I M A G E D ' A R R I V E E : < < LAD ERASE SVC 0 < EFFACEMENT DE L'ECRAN PREALABLE. LAD SGFO1 SVC 0 < OUVERTURE DE LA CLEF '1.0'. E102: EQU $ LBI 1 < B=1 : IMAGE D'ARRIVEE. BSR AGET < RECUPERATION D'UN SEGMENT. JAE E103 < C'EST FINI : ORG=EXT=O. LXI 0 LYI 0 BSR ASTBUF < INSERTION D'UN POINT DE DEPART < PROVISOIRE A L'ORIGINE. LX SEGORG+X < ORIGINE DU SEGMENT. LY SEGORG+Y < ORIGINE DU SEGMENT. BSR ASTBUF < INSERTION DE L'ORIGINE. IC NAR < COMPTAGE DE L'ORIGINE SEGMENT. LXI 0 LYI 0 BSR ASTBUF < INSERTION D'UN COUPLE PROVISOIRE < A L'ORIGINE (DEPART). LX SEGEXT+X < EXTREMITE DU SEGMENT. LY SEGEXT+Y < EXTREMITE DU SEGMENT. BSR ASTBUF < INSERTION DE L'EXTREMITE DU < SEGMENT. IC NAR < COMPTAGE DE L'EXTREMITE. BSR ADRAW < TRACE DE L'IMAGE D'ARRIVEE. JMP E102 < SEGMENT SUIVANT. < < FIN DE L'IMAGE D'ARRIVEE : < E103: EQU $ LXI 0 LYI 0 BSR ASTBUF < RANGEMENT D'UN VOUPLE (0,0). LXI -1 LYI -1 BSR ASTBUF < MARQUE DE FIN D'IMAGE (-1,-1). CPZ IBUF < Y-A-T'IL UN BUFFER SGF A MOITIE < PLEIN ??? JE E4 < NON,IL EST VIDE. LAD SGFW SVC 0 < OUI, ON L'ECRIT. E4: EQU $ LAD SGFC SVC 0 < PUIS ON FERME LA CLEF '1.0'. BSR APAUS < UNE PETITE PAUSE NE FERA PAS < DE MAL ... < < < C H A R G E M E N T I M A G E D E D E P A R T : < < CPZ VIDEO < TEST DU MODE ??? JG E110 < CAS DU GRAPHIQUE PUR. < < MISE DE LA DEMANDE SGN EN SAVE : < E47: EQU $ LAI '04 STBY SGN < NVP DE STORE. < < PREPARATIFS SGF : < E110: EQU $ IC SGFO1 < FONCTION=5 : OPEN OLD. LAD SGFO1 SVC 0 < OPEN OLD '1.0' SUR '0B. LAI '0A STBY SGFO1 < POUR OPEN SUR '0A. STBY SGFW < POUR ECRITURE SUR '0A. LAD SGFR < LECTURE DU 1ER SECTEUR DE LA < LISTE DESCRIPTIVE DE L'IMAGE < D'ARRIVEE. SVC 0 DC SGFO1 < FONCTION=4 : OPEN NEW. LAD SGFO1 SVC 0 < OPEN NEW CLEF '1.0' SUR '0A. STZ IBUF < REINITI IBUF. < < E X P L O R A T I O N D E L ' I M A G E D E D E P A R T < LAD ERASE SVC 0 < EFFACEMENT PREALABLE. E121: EQU $ LBI 2 < B=2 : IMAGE DE DEPART. BSR AGET < RECUPERATION DU SEGMENT COURANT. JAE E122 < FIN DE LISTE : ORG=EXT=O. LX SEGORG+X LY SEGORG+Y BSR AMAJL < INSERTION DE L'ORIGINE DANS LA < LISTE D'ARRIVEE. LX SEGEXT+X LY SEGEXT+Y BSR AMAJL < INSERTION DE L'EXTREMITE DANS < LA LISTE D'ARRIVEE. BSR ADRAW < TRACE DE L'IMAGE DE DEPART. JMP E121 < AU SEGMENT SUIVANT. < < ON A ATTEINT LA FIN DE L'IMAGE DE DEPART : < E122: EQU $ LA NDE STA ND < NBRE DE POINTS BLANCS TROUVES. STA SNDE < CAS DE LA 1ERE FOIS EN VIDEO < (FOIS=0) OU GRAPHIQUE (FOIS=-1) ., < ON SAVE LE NBRE DE POINTS REEL < DE L'IMAGE DE DEPART. E21: EQU $ CP NAR JGE E19 < L'IMAGE DE DEPART A AU MOINS < AUTANT DE POINTS QUE L'IMAGE < D'ARRIVEE. E751: EQU $ LX IBUF < X=INDEX COURANT BUFFER SGF. STZ &ABUF < CREATION D'UN COUPLE DE < DEPART A L'ORIGINE. ADRI 1,X < PROGRESSION INDEX BUFFER. STZ &ABUF < COORDONNEE Y. ADRI 3,X < PROGRESSION INDEX BUFFER. IC ND < COMPTAGE DES POINTS DE L'IMAGE < DE DEPART, PLUS CEUX QUE L'ON < RAJOUTE A L'ORIGINE. BSR AWR < LECTURE/ECRITURE SGF. LA ND < A=NBRE DE POINTS COURANT DEPART. JMP E21 < ET ON RECOMMENCE. < < FIN DE L'IMAGE DE DEPART : < E19: EQU $ CPZ IBUF < UN BUFFER INCOMPLET EST-IL < EN COURS DE REMPLISSAGE ??? JE E22 < NON, C'EST FINI. LAD SGFW SVC 0 < OUI, ECRITURE ENREGISTREMENT < COURNAT SUR '0A. < < OPERATIONS SGF : < E22: EQU $ DC SGFC < MISE DU CLOSE EN RELEASE '06. LAD SGFC SVC 0 < CLOSE-RELEASE SUR '0B. LAI '0A STBY SGFC IC SGFC < REMISE DU CLOSE EN SAVE '07. LAD SGFC SVC 0 < CLOSE-SAVE SUR '0A. < < ETAT DES DEMANDES SGF : < SGFC : CLOSE-SAVE SUR '0A (7=SAVE , 6=RELEASE). < SGFW : ECRITURE SUR '0A. < SGFR : LECTURE-DELETE SUR '0B. < SGFO1 : OPEN-NEW SUR '0A (4=NEW , 5=OLD). < LAD CG SVC 0 < RETOUR EN ALPHA EVENTUEL. CPZ EFFAC < DOIT-ON EFFACER ??? JNE E410 < NON, ALORS PAS D'EDITION... < < EDITION DU NBRE DE POINTS DE DEPART : < E700: EQU $ LA AMND BSR APRINT LB SNDE BSR ADISP < CONVERSION HEXA. LAD BDISP BSR APRINT < < EDITION DU NBRE DE POINTS D'ARRIVEE : < LA AMNA BSR APRINT LB NAR BSR ADISP < CONVERSION HEXA. LAD BDISP BSR APRINT < < LAISSONS LE TEMPS DE LIRE (A CAUSE DE L'ERASE A SUIVRE) : < BSR APAUS < ET ENCORE UNE TITE PAUSE... < < < I N T E R P O L A T I O N : < < E410: EQU $ IC CONS < AFIN DE NE PAS FAIRE TROP DE DC. E30: EQU $ DC CONS < DECOMPTE DES ITERATIONS A FAIRE. JLE E250 < C'EST FINI : RETOUR A 'GE'. LA ND JANE E70 < OK , NBRE DE POINTS#0 ... E250: EQU $ BR AGOGE < ON ARRETE LA SI ND=0. E70: EQU $ STA NC < INITIALISATION DU DECOMPTEUR DE < POINTS A INTERPOLER. IC SGFO1 < OPEN-OLD. LA NVP1 STBY SGFO1 < MISE EN PLACE NVP OPEN-OLD. LAD SGFO1 SVC 0 < OPEN OLD SUR '0A PAR EXEMPLE. DC SGFO1 < OPEN-NEW. LA NVP1 STBY SGFR < POUR LECTURE SUR '0A PAR EXEMPLE. IBT 15 < CHANGEMENT DE NVP. STBY SGFO1 < POUR OPEN NEW SUR '0B PAR EXEMPLE STBY SGFW < POUR ECRITURE SUR '0B PAR EXEMPLE LAD SGFO1 SVC 0 < OPEN NEW SUR '0B PAR EXEMPLE. STZ IBUF < REINIT INDEX BUFFER. LAD SGFR SVC 0 < LECTURE DU 1ER ENREGISTREMENT < SUR '0A PAR EXEMPLE. CPZ EFFAC < FAUT-IL EFFACER LA VISU ??? JNE E210 < NON. < < EFFACEMENT DE L'ECRAN. < LAD ERASE SVC 0 E210: EQU $ CPZ VIDEO < TEST DU MODE D'INTERPOLATION. JG E31 < RIEN D'AUTRE SI GRAPHIQUE PUR. < < RAZ DE L'IMAGE VIDEO COURANTE : < E160: EQU $ LX ALIMAG < X=NRE DE MOTS A RAZER. E38: EQU $ STZ &AIMAG < RAZ MOT PAR MOT. JDX E38 < AU PRECEDENT. < < INTERPOLATION DE L'2MAGE DE DEPART COURANTE : < USE W,XD E31: EQU $ LX IBUF < X=INDEX COURANT BUFFER SGF. LAD &ABUF LR A,W < W=@DU QUADRUPLET COURANT. LX XD < X POINT DE DEPART. LY YD < Y POINT DE DEPART. STX TRAJ+0+X < AU CAS OU IL FAUDRAIT EDITER STY TRAJ+0+Y < LA TRAJECTOIRE DES POINTS. LA XA < X POINT D'ARRIVEE. SBR X,A < A=XA-XD. SARD 16 < EXTENSION 32 BITS. DV CONS ADR A,X < X=XD+(XA-XD)/CONS. LA YA < Y POINT D'ARRIVEE. SBR Y,A < A=YA-YD. SARD 16 < EXTENSION 32 BITS. DV CONS ADR A,Y < Y=YD+(YA-YD)/CONS. STX XD < CHANGEMENT DE POINT DE DEPART. STY YD < CHANGEMENT DE POINT DE DEPART. CPZ ITRAJ < FAUT-IL TRACER LA TRAJECTOIRE ??? JNE E6000 < NON. < < TRACE DE LA TRAJECTOIRE DES POINTS : < STX TRAJ+2+X STY TRAJ+2+Y LAD OG SVC 0 < OPEN GRAPHIQUE. LAD POINTI SVC 0 < MISE DU TRACE EN MODE POINTILLE < SI L'ON EST SUR 4014. LAD DTRAJ SVC 0 < AFFICHAGE D'UNE TRAJECTOIRE. LAD CONTI SVC 0 < RETOUR AU MODE CONTINU SUR 4014. LX TRAJ+2+X < RESTAURE X (A CAUSE DES SVC). E6000: EQU $ LAD SEG < A=@SEG COURANT. AD DELTA < TRANSLATION ORIGINE/EXTREMITE. LR A,W < W=@POINT COURANT (ORG/EXT). STX X,W < X DU POINT COURANT. STY Y,W < Y DU POINT COURANT. LA DELTA IBT 14 < DELTA VAUT EN BASCULE 0/2. STA DELTA < MAJ DE DELTA. JANE E131 < ON VIENT DE TRAITER L'ORIGINE < D'UN SEGMENT. BSR ADRAW < TRACE DU SEGMENT COURANT. BSR ASEND < EMISSION DU SEGMENT COURANT < DANS LA ZDC. CPZ VIDEO JG E131 < CAS DU GRAPHIQUE PUR. < < CONVERSION GRAPHIQUE--> VIDEO : < IF ORDI-"S",XWOR%,,XWOR% < < T R A C E V I D E O D U S E G M E N T E N S O L A R. < < (C'EST LE SYSTEME CMS5 QUI SE CHARGERA DE L'INTERPOLATION !). < < < PROLOGUE: SAUVEGARDE DES REGISTRES UTILISES ET SAUVEGARDE DANS LA PILE < (QUI EST GRANDE !) DE LA ZONE QU'ON VA UTILISER POUR CONSTRUIRE L'EN-TETE < DE L'IMAGE. < PSR A,B,X,W < LR K,B ADRI 1,B < ZONE RECEPTRICE. LRM A,X,W WORD ENTIM < ZONE EMETTRICE (A SAUVER DANS LA PILE). WORD LENTIM < LONGUEUR EN-TETE IMAGE. WORD ENTIM < POUR BASER L'EN-TETE. MOVE ADRI LENTIM,K < MISE A JOUR DE 'K'. < < ICI, ON A SAUVEGARDE LA ZONE DE CONSTRUCTION DE L'EN-TETE DANS LA PILE, < ON VA CONSTRUIRE L'EN-TETE ET FAIRE LA DEMANDE D'INTERPOLATION VIDEO. < LRM A,B,X WORD SEGORG+Y < ZONE EMETTRICE: COORDONNEES (Y1,X1), < (Y2,X2) SEGMENT COURANT. CE SONT DES < COORDONNEES GRAPHIQUES. WORD ENTIM+DEPY1 < ZONE RECEPTRICE. WORD 4 < LONGUEUR. MOVE STZ DEPMOD,W IC DEPMOD,W < MODE TRACE 'SBT'. LRM A,X WORD ENTIM-ZERO*2 < ADRESSE OCTET EN-TETE IMAGE. WORD LENTIM+LIMAG*2 < LONGUEUR OCTETS EN-TETE + IMAGE. STA STABIL+1 STX STABIL+2 LAD STABIL < DEMANDE INTERPOLATION ET AFFICHAGE. SVC 0 LRM A,X WORD IMAG-ZERO*2 < RESTAURATION ADRESSE ET WORD LIMAG*2 < LONGUEUR IMAGE DANS LA DEMANDE. STA STABIL+1 STX STABIL+2 < < EPILOGUE (FAIRE COMME SI ON N'AVAIT RIEN TOUCHE...). < ADRI -LENTIM,K < RESTAURATION DE 'K'. LR K,A ADRI 1,A < ZONE EMETTRICE. LRM B,X WORD ENTIM < ZONE RECEPTRICE (A RESTAURER). WORD LENTIM < LONGUEUR. MOVE < PLR A,B,X,W XWOR%: VAL 0 IF ORDI-"T",XWOR%,,XWOR% PSR X,Y < < CALCUL DES EXTREMITES M1 ET M2 DU SEGMENT VIDEO : < LA SEGORG+X < A=X(ORIGINE GRAPHIQUE). SLRS DEDX < REDUCTION VIDEO. STA DICOX1 < RANGEMENT DE X1. LA SEGORG+Y < A=Y(ORIGINE GRAPHIQUE). SLRS DEDY < REDUCTION VIDEO. NGR A,A AD NLIG < INVERSION DUE AU FAIT QUE LES < AXES Y VIDEO ET GRAPHIQUE SONT < INVERSES. STA DICOY1 < RANGEMENT Y1. LA SEGEXT+X < A=X(EXTREMITE GRAPHIQUE). SLRS DEDX < REDUCTION VIDEO. STA DICOX2 < RANGEMENT DE X2. LA SEGEXT+Y < A=Y(EXTREMITE GRAPHIQUE). SLRS DEDY < REDUCTION VIDEO. NGR A,A AD NLIG < INVERSION DES AXES Y. STA DICOY2 < RANGEMENT DE Y2. < < TRACE DICHOTOMIQUE DU SEGMENT : < LX DICOX1 < X=X1. LY DICOY1 < Y=Y1. BSR ASET < AFFICHAGE DU POINT M1. BSR ADICO < TRACE DU SEGMENT M1M2. LX DICOX2 < X=X2. LY DICOY2 < Y=Y2. BSR ASET < AFFICHAGE DU POINT M2. PLR X,Y XWOR%: VAL 0 E240: EQU $ JMP E131 E131: EQU $ LA IBUF ADRI 4,A < PROGRESSION INDEX BUFFER. CPI 4*31 < ET VALIDATION DE CE DERNIER ... JL E33 < OK. LAD SGFW < ECRITURE DE L'ENREGISTREMENT < COURANT SUR '0B PAR EXEMPLE. SVC 0 LAD SGFR SVC 0 < LECTURE DE L'ENREGISTREMENT < SUIVANT SUR '0A PAR EXEMPLE. LAI 0 < REINIT INDEX BUFFER. E33: EQU $ STA IBUF < MAJ IBUF. DC NC < DECOMPTAGE DES POINTS A < INTERPOLER. JG E31 < IL Y EN A ENCORE ... < < CAS OU LA FIN DE LISTE EST RENCONTREE : < E32: EQU $ CPZ IOAB < ENVOI OAB INTERMEDIARES ??? JNE NOAB < NON. BSR AOAB < ENVOI DE 'AOB'. NOAB: EQU $ CPZ IBUF < Y-A-T'IL UN BUFFER EN COURS < DE REMPLISSAGE ??? JE E34 < NON , RIEN A FAIRE ... LAD SGFW < OUI , SVC 0 < ECRITURE DU DERNIER ENREGIS- < TREMENT SUR '0B PAR EXEMPLE. E34: EQU $ LA NVP1 STBY SGFC DC SGFC < CLOSE RELEASE. LAD SGFC SVC 0 < CLOSE RELEASE '0A PAR EXEMPLE. IC SGFC < CLOSE SAVE. LA NVP1 IBT 15 STA NVP1 < PERMUTATION DES NVP SGF. STBY SGFC LAD SGFC SVC 0 < CLOSE SAVE '0B PAR EXEMPLE. E80: EQU $ BSR AVIS < DIFFUSION EVENTUELLE IMAGE INTERM. CPZ PAS < TEST DU MODE D'INTERPOLATION. JNE EE30 < MODE CONTINU : ON REBOUCLE.... BSR AMCOPY < HARD-COPY EVENTUELLE+TEMPO. BSR APAUS < PETITE PAUSE... E220: EQU $ CPZ VIDEO JG EE30 < CAS DU GRAPHIQUE PUR : VERS < L'INTERPOLATION SUIVANTE. < < CAS DE L'INTERPOLATION VIDEO : < E140: EQU $ LAD CG SVC 0 < RETOUR EVENTUEL EN ALPHA-NUMERIK. LAD MSAVE BSR AENTER < CAS DU MODE PAS A PAS , FAUT- < IL SAUVER L'IMAGE COURANTE ??? JNE EE30 < NON , ALORS ON CONTINUE. LAI -3 STA &ALONG < L'IMAGE RECOIT LE TYPE 'VIDEO'. LAD MNOM BSR AGOSGN < OUI , ALORS ON LUI DONNE UN < NOM , ET ON LA STORE. EE30: BR AE30 < BOUCLE D'INTERPOLATION. PAGE < < < I M P L A N T A T I O N : < < X12: EQU ZERO+PILE-LTNI-LTNI X10: VAL X12-$ ZEROV: EQU ZERO+X10 < ERREUR D'ASSEMBLAGE SI MAUVAISE < IMPLANTATION !!! DZS X10+1 < HYGIENE ... EOT #SIP GEN PROCESSEUR#