NMPROC: VAL "LP" < NOM DU PROCESSEUR. IDP "LP - RELEASE 16/02/1980" IDP "JOHN F. COLONNA" EOT #SIP DEFINITION CMS5# IF ORDI-"S",XWOR%,,XWOR% NBTVIN: VAL TVIN=0 NBTVIN: VAL 15-NBTVIN < NUMERO DU BIT TVIN. XWOR%: VAL 0 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 (INTERPOLATION VIDEO SOLAR) XWOR%: VAL 0 RECORD: EQU IMAG+LIMAG < IMAGE DYNAMIQUE (IMAGE 2). < < 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 PAGE < < < L O C A L : < < < < MESSAGES : < M4: BYTE 11;'6D ASCI "#SEGMENTS=" M5: BYTE 13;'6D ASCI "#SEG GENERES" M9: BYTE 5;'6D ASCI "NOM=" M10: BYTE 6;'6D ASCI "VISU? " M11: BYTE 7;'6D ASCI "VIDEO?" M12: BYTE 10;'6D ASCI "COMPTAGE? " M13: BYTE 11;'6D ASCI "PAS A PAS?" M15: BYTE 11;'6D ASCI "SEGMENT 1=" M16: BYTE 11;'6D ASCI "SEGMENT 2=" M17: BYTE 20;'6D ASCI "OAB INTERMEDIAIRES? " M18: BYTE 13;'6D ASCI "POINT-POINT?" < < CARTES CONTROLES : < MBN: ASCI "!ASSIGN B=N," FB: ASCI "FB" IDBN: BYTE 0;'04 LNFIC: VAL 19 < NBRE DE MOTS D'UN NOM. MFIC: ASCI "!ASSIGN A=" MOFIC: ASCI "O," LMFIC: VAL $-MFIC < LONGUEUR DU DEBUT DE !ASSIGN. MNFIC: DZS LNFIC < NOM DU FICHIER. BYTE '04;0 < PAR PRUDENCE. MBO: ASCI "!ASSIGN B=O,FB" IDBO: BYTE 0;'04 MAC: ASCI "!ASSIGN A=" BYTE "S";'04 MBCS: ASCI "!ASSIGN B=" BYTE "S";'04 MBC: ASCI "!ASSIGN B=" BYTE "R";'04 < < BUFFERS SGF : < MAXBUF: VAL 128-4/4*4 LOCAL LOC: EQU $ < < SEGMENT GRAPHIQUE : < NOMSEG: WORD 0 < VALIDATION EN ZDC. SEG: DZS 4 LONSEG: VAL $-NOMSEG*2 X: VAL 1 Y: VAL 0 CURSOR: BYTE "F";0 DZS 2 < < MESSAGES ET BUFFERS : < MINT: BYTE 2;'6D ASCI "> " MDIS: BYTE 5;"=" REP: DZS 2 MERR: BYTE 3;'6D ASCI "??" M1: BYTE 11;'6D ASCI "ENVOI ZDC?" M2: BYTE 7;'6D ASCI "SEUIL=" M3: BYTE 5;'6D ASCI "SGF?" AM4: WORD M4 AM5: WORD M5 M6: BYTE 7;'6D ASCI "VIDEO?" M7: BYTE 9;'6D ASCI "CURSEUR?" M8: BYTE 5;'6D ASCI "ZDC?" AM9: WORD M9 AM10: WORD M10 AM11: WORD M11 AM12: WORD M12 AM13: WORD M13 M14: BYTE 1;">" AM15: WORD M15 AM16: WORD M16 AM17: WORD M17 AM18: WORD M18 < < DEMANDES A CMS4 : < DEMMEM: WORD '0004 < DEMANDE D'ALOCATION 8K MOTS. RELMEM: WORD '0004 < DEMANDE DE RETOUR A 4K MOTS. WORD '6000 < ALLOCATION 12K MOTS. 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 DEMH: WORD '0101 < ENTREE 4 CARACTERES. WORD REP-ZERO*2 WORD 4 DEMIN: WORD '0101 < ENTREE SUR LE TERMINAL. WORD REP-ZERO*2 WORD 1 DEMREP: EQU DEMIN DEMNOM: WORD '0101 < ENTREE DU NOM D'UN FICHIER WORD MNFIC-ZERO*2 < A LIRE POUR EMISSION. WORD LNFIC*2 DEMSGF: WORD '0008 < RECUPEARTION DE BUFESC. WORD BUFCO WORD LBUFES*2 WORD 0 < ZDC INVALIDE. DEMCOP: WORD '0402 < DEMANDE DE STORE D'UN NOM EN WORD BUFCON < VUE DE FAIRE UN CHANGEMENT WORD LBUFES-LMFIC*2 < DE NOM D'UN FICHIER. WORD -1 DEMNO1: WORD '0101 < ENTREE DU NOM A DONNER WORD BUFCON < AU FICHIER TEMPORAIRE WORD LNFIC*2 < FB. OG: WORD '0103 < OPEN GRAPHIQUE. CU: WORD '0106 < MISE EN FONCTION CURSEUR. WORD 0 LCU: WORD '0109 < LECTURE GRAPHIQUE. WORD CURSOR-ZERO*2 WORD 6 CG: WORD '0104 < CLOSE GRAPHIQUE. WG: WORD '020A < ECRITURE GRAPHIQUE. WORD SEG-ZERO*2 WORD 8 STOGS: WORD '000A < ENVOI EN ZDC. WORD NOMSEG-ZERO*2 WORD LONSEG WORD 'FFC0 GETGS: WORD '0008 < LECTURE ZDC. WORD NOMSEG-ZERO*2 WORD SEG-NOMSEG*2 WORD 'C000 DEMGS: WORD '0008 < LECTURE SEGMENT ZDC. WORD NOMSEG-ZERO*2 WORD LONSEG WORD 'FFC0 DELGS: WORD '000A < ECRITURE VALIDATION ZDC. WORD NOMSEG-ZERO*2 WORD SEG-NOMSEG*2 WORD 'C000 SGFW1: WORD '0B02 < ECRITURE SGF. WORD BUF1O WORD 256 WORD 0 SGFR1: WORD '0B09 < LECTURE DELETE SGF. WORD BUF1O WORD 256 WORD 0 SGFO1: WORD '0B04 < OPEN NEW=4, OLD=5. WORD 1 < CLEF 1.0 WORD 0 SGFC1: WORD '0B07 < CLOSE SAVE=7, RELEASE=6. SGFR2: WORD '0A08 < LECTURE SAVE. WORD BUF2O WORD 128*2 SGFO2: WORD '0A05 < OPEN OLD 1.0. WORD 1 WORD 0 SGFC2: WORD '0A07 < CLOSE SAVE 1.0. DEMDB: WORD '0302 < DELETE NOM 'FB'. WORD FB-ZERO*2 WORD 4 WORD -1 CCII: WORD '0002 < ACCES CCI INTERPRETATIF. WORD 0 WORD 80 IF ORDI-"S",XWOR%,,XWOR% STABIL: WORD '8A01 < DEMANDE DE STABILISATION ET / OU < TRACE VIDEO. WORD IMAG-ZERO*2 WORD LIMAG*2 WORD 0 < PAS DE COULEUR A PRIORI... INIMAG: WORD '8A01 < DEMANDE ENTREE IMAGE. WORD RECORD-ZERO*2 WORD LIMAG*2 WORD TVIN+TVPV XWOR%: VAL 0 < < RELAIS DIVERS : < AIMAG1: WORD IMAG-1,X < ACCES A L'IMAGE STATIQUE. AIMAG2: WORD RECORD-1,X < ACCES A L'IMAGE DYNAMIQUE. AIMA1: WORD IMAG < @IMAGE STATIQUE. AIMA2: WORD RECORD < @IMAGE DYNAMIQUE A PRIORI. ANOM: WORD NOM < ACCES AU 1ER MOT DU NOM DE < L'IMAGE STATIQUE (IMAGE 1). AI2: WORD ITEM2-1,X < ACCES A L'EN-TETE ITEM2. AREP: WORD REP,X ABDISP: EQU AREP AMBN: WORD MBN AIDBN: WORD IDBN AMBCS: WORD MBCS AMFIC: WORD MFIC AMBO: WORD MBO AIDBO: WORD IDBO AMAC: WORD MAC AMBC: WORD MBC ASGF1: WORD BUFSGF+1,X < ACCES 1ER BUFFER SGF. ASGF2: WORD BUF2M+1,X < ACCES 2EME BUFFER SGF. ACCI: WORD CCI < ACCES CCI INTERPRETATIF. ADF: WORD DF < DELETE FICHIERS 'FA' ET 'FB'. ASTBU1: WORD STBUF1 < STORE DANS 1ER BUFFER SGF. ALBU1: WORD LBUF1 < ACCES X,Y DANS BUFFER SGF 1. ALBU2: WORD LBUF2 < ACCES X,Y DANS BUFFER SGF 2. AOVL: WORD OVL < ROUTINE DE CHARGEMENT OVERLAYS. AGOGE: WORD GOGE < RETOUR A 'GE'. IF ORDI-"T",XWOR%,,XWOR% ASP1: WORD SP1 < ROUTINE MAITRE ENREGISTREMENT TV. ASP2: WORD SP2 < ROUTINE MAITRE DIFFUSION TV. ASP3: WORD SP3 < STABILISATION IMAGE VIDEO. AWAIT: WORD WAIT < ATTENTE DE CHANGEMENT DE TRAME. XWOR%: VAL 0 ATRAME: WORD TRAME < LECTURE D'UNE TRAME VIDEO. AGRAVE: WORD GRAVE < CALCUL CENTRE DE GRAVITE < D'UNE TRAME. IF ORDI-"T",XWOR%,,XWOR% ADICO: WORD DICO < TRACE DICHOTOMIQUE. XWOR%: VAL 0 ATRACE: WORD TRACE < TRACE SEGMENT VIDEO. AGRVI: WORD GRVI < TRACE VIDEO A PARTIR DE 'SEG'. IF ORDI-"T",XWOR%,,XWOR% ASET: WORD SET < MISE DE (X,Y) A 1. XWOR%: VAL 0 APRINT: WORD PRINT < EMISSION D'UN MESSAGE. ADRAW: WORD DRAW < AFFICHAGE UN SEGMENT GRAPHIQUE. AINTER: WORD INTER < ADRESSE D'INTERROGATION. AINTEA: WORD INTERA ASEND: WORD SEND < ENVOI EN ZDC. ASENDP: WORD SENDP < ENVOI D'UN SEGMENT OU DE 2 < COUPLES DE POINTS, ET DES OAB < INTERMEDIAIRES EVENTUEL... ASENDT: WORD SENDT < SEND+TEST DE FIN. ASENDS: WORD SENDS < ENVOI 1 SEGMENT AU SGF. AINSGF: WORD INSGF < INITIALISATION ACCES SGF. AEDIT: WORD EDIT < EMISSION DU BON NOMBRE DE < SEGMENTS. AENTER: WORD ENTER < ENTREE REPONSE O/N. IF ORDI-"S",XWOR%,,XWOR% AENTCL: WORD ENTCL < ENTREE REPONSE O/N/1/2/3. XWOR%: VAL 0 AHEX: WORD HEX < CONVERSION HEXA-->BINAIRE. ADISP: WORD DISP < EDITION HEXADECIMALE. ALOC12: WORD LOC12 < PASSAGE 4K --> 12K. AOAB: WORD ZOAB < ENVOI EVENTUEL OAB INTERMEDAIRES. ASOAB: WORD SOAB < INTERROGATION 'FAUT-IL ENVOYER < LES 'OAB' INTERMEDIARES ???'. ASPOIN: WORD SPOIN < FAUT-IL ENVOYER UN SEGMENT OU < 2 POINTS DOUBLES ??? < < CONSTANTES ET INDICATEURS : < NGE: WORD "GE" < NOM DE L'OVERLAY 'GE'. ACNSYS: ASCI ":SYS" < ACN DU SYSTEME. NMOTS: WORD 2*LTNI < LONGUEUR TOTALE DES 2 ITEMS. ALIMAG: WORD LIMAG < LONGUEUR MOTS DE L'IMAGE VIDEO. KIN: WORD -1 < COMPTEUR DES ENTRIES DANS 'TN'. IF ORDI-"T",XWOR%,,XWOR% WAITR: WORD 10000 < NBRE DE 'JDX $' A EFFECTUER POUR < TEMPORISER LE RECORD VIDEO. XWOR%: VAL 0 KPT: WORD 0 < NOMBRE DE POINTS D'UNE TRAME. XC: DZS 2 < SIGMA(X). YC: DZS 2 < SIGMA(Y). MOTC: WORD 0 < MOT COURANT DE L'IMAGE. XMOTC: WORD 0 < X(MOT COURANT DE L'IMAGE). NLIG: WORD 1024/DY-1 < NBRE DE LIGNES IMAGE. NPPL: WORD CNMPL*16-1 < NBRE DE POINTS/LIGNE-1. NMPL: WORD CNMPL < NBRE DE MOTS/LIGNE. MASKI: WORD 0 < VALEUR A DONNER A L'IMAGE < LORS DE LA COMMANDE 'Z'. XG: WORD 0 < CENTRE DE GRAVITE VIDEO. YG: WORD 0 < CENTRE DE GRAVITE VIDEO. SEUIL: WORD 5 < SEUIL AU DELA DUQUEL L'IMAGE < EST DECRETEE NON VIDE. ITEST: WORD 1 < 0 : TEST SUR LA VALEUR 0 DES POINTS, < 1 : TEST SUR VALEUR 1 DES POINTS. IZDC: WORD 1 < 0=EMETTRE EN ZDC, 1=NON. IOAB: WORD 0 < 0 : ENVOYER UN 'OAB' DERRIERE < CHAQUE SEGMENT EMIS... IPOINT: WORD 0 < 0 : ENVOYER 2 SEGMENTS EN ZDC < (ORG,ORG) ET (EXT,EXT), < 1 : ENVOYER 1 SEUL SEGMENT EN ZDC < (ORG,EXT). ISGF: WORD 1 < 0=ACCES AU SGF, 1=NON. IVISU: WORD 0 < 0='DRAW' ACTIF, 1=NON ACTIF. IVIDEO: WORD 1 < 0='GRVI' ACTIF, 1='GRVI' INHIBE. IBUF1: WORD 0 < INDEX COURANT 1ER BUFFER SGF. KPT1: WORD 0 < NBRE DE POINTS DANS 'FA'. < < CONSTANTES D'EMISSION DES SEGMENTS : < PASX: WORD 0 < PAS DE DECOUPAGE D'UN PASY: WORD 0 < SEGMENT LORSQU'IL EN MANQUE... MODE: WORD 0 < 0 : NSEG=NSEG1, < <0 : NSEG>NSEG1 : IL MANQUE < DES SEGMENTS, < >0 : NSEG<NSEG1 : IL Y A < TROP DE SEGMENTS. N1: WORD 0 < MODE>0 : EN PRENDRE 1 TOUS < LES N1 SEGMENTS. SN1: WORD 0 < DECOMPTEUR DE N1. N2: WORD 0 < MODE<0 : ENVOYER N2 SEGMENTS < POUR 1. SN2: WORD 0 < SN2=N2 SI SN3<=0, < SN2=N2+1 SI SN3>0. SSN2: WORD 0 < DECOMPTEUR DE SN2. N3: WORD 0 < MODE<0 : RAJOUTER N3 SEGMENTS. SN3: WORD 0 < DECOMPTEUR DE N3. NSEG: WORD 0 < NBRE DE SEGMENTS DEMANDES. SNSEG: WORD 0 < DECOMPTEUR DE NSEG. NSEG1: WORD 0 < NBRE DE SEGMENTS OBTENUS PAR 'G'. ISEG: WORD 0 < 0=COMPTER LES SEGMENTS POUR 'R'. NSEG2: WORD 0 < COMPTEUR DES SEGMENTS SOUS 'R'. NUS1: WORD 0 < 1ER SEGMENT UTILISE POUR 'R'. NUS2: WORD 0 < 2EME SEGMENT UTILISE POUR 'R'. IPAS: WORD 0 < EXECUTION PAS A PAS DE 'R' ??? < < CONSTANTES DICHOTOMIQUES : < 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. < < PILES DE TRAVAIL : < APILE: WORD PILE-1 < PILE DE SMC (RETOUR A 'GE'). LSTACK: VAL 60 < LONGUEUR DE LA PILE DE TRAVAIL. ASTACK: WORD STACK-1 SAVS: DZS 4 < ZONE DE SAUVEGARDE DE 'SEG'. PAGE PROG IF ORDI-"T",XWOR%,,XWOR% EOT #SIP SP1# EOT #SIP SP3# EOT #SIP SP2# < < < A T T E N T E C H A N G E M E N T T R A M E : < < WAIT: EQU $ PSR A,B,X,Y < TRES PRUDENT CE MONSIEUR... LAI NSPTV SBT 0 < ACCES PAR NSP. WORD '1E15 < B=@DCT-TV. ADRI 2,B < B=@X(DCT-TV). LR B,A < DEMANDE DE X(DCT-TV). WORD '1E15 < B=X(DCT-TV). LR B,Y < SAVE Y=X(DCT-TV). LX WAITR < INITIALISATION D'UN DECTECTEUR < DE TIME-OUT SUR LA TV. WIDEO: EQU $ JDX NTOUT JMP TOUT < CAS D'UN TIME-OUT, ON ARRETE. NTOUT: EQU $ WORD '1E15 < B=X(DCT-TV). CPR B,Y < X(DCT-TV) A-T'IL CHANGE, ET < DONC A-T'ON CHANGE DE TRAME ??? JE WIDEO < NON, ON ATTEND. TOUT: EQU $ PLR A,B,X,Y RSR < < < E N T R E E D ' U N E T R A M E : < < TRAME: EQU $ LA ASP1 WORD '1EC5 < ENTREE D'UNE TRAME. BSR AWAIT < ATTENTE DE FIN DE TRAME. LA ASP2 WORD '1EC5 < ARRET DE L'ENREGISTREMENT. LA ASP3 WORD '1EC5 < DIFFUSION IMAGE STATIQUE. RSR XWOR%: VAL 0 IF ORDI-"S",XWOR%,,XWOR% < < < E N T R E E D ' U N E T R A M E : < < TRAME: EQU $ LAD INIMAG < ENTREE IMAGE. SVC 0 LAD STABIL < VISUALISATION DE LA TRAME STATIQUE. SVC 0 RSR XWOR%: VAL 0 PAGE < < < P A S S A G E A 1 2 K : < < LOC12: EQU $ LAD DEMMEM SVC 0 < PASSAGE 12K. RSR PAGE IF ORDI-"S",XWOR%,,XWOR% < < T R A C E V I D E O D ' U N 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 !). < TRACE: EQU $ < < 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 SEG < 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. PSR X SVC 0 PLR X LRM A,B 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 RSR XWOR%: VAL 0 IF ORDI-"T",XWOR%,,XWOR% PAGE < < < 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 < TRACE 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 < TRACE 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. < < < T R A C E D ' U N S E G M E N T V I D E O : < < TRACE: EQU $ PSR X,Y,C < < TRACE DICHOTOMIQUE DU SEGMENT : < LX DICOX1 < X=X1. LY DICOY1 < Y=Y1. PSR X,Y < SAVE M1. BSR ASET < TRACE DU POINT M1. BSR ADICO < TRACE DU SEGMENT M1M2. LX DICOX2 < X=X2. LY DICOY2 < Y=Y2. BSR ASET < TRACE DU POINT M2. PLR X,Y STX DICOX1 < RESTORE M1. STY DICOY1 < RESTORE M1. PLR X,Y,C RSR XWOR%: VAL 0 < < < G R A P H I Q U E - V I D E O : < < < ARGUMENT : < SEG=SEGMENT GRAPHIQUE A TRACER EN VIDEO. < < GRVI: EQU $ CPZ IVIDEO < GRVI ACTIF ??? JNE GRVI1 < NON, RIEN A TRACER. PSR X IF ORDI-"T",XWOR%,,XWOR% LA ASP3 WORD '1EC5 < STABILISATION IMAGE STATIQUE. < < ORIGINE DU SEGMENT COURANT : < LA SEG+0+X SLRS DEDX STA DICOX1 < X(ORIGINE). LA SEG+0+Y SLRS DEDY NGR A,A AD NLIG STA DICOY1 < Y(ORIGINE). < < EXTREMITE DU SEGMENT COURANT : < LA SEG+2+X SLRS DEDX STA DICOX2 LA SEG+2+Y SLRS DEDY NGR A,A AD NLIG STA DICOY2 < < TRACE VIDEO : < XWOR%: VAL 0 BSR ATRACE PLR X GRVI1: EQU $ RSR PAGE IF ORDI-"T",XWOR%,,XWOR% < < < M I S E D ' U N B I T A 1 : < < < ARGUMENTS : < X ET Y CONTIENNENT X ET Y DU POINT. < C=@IMAG (IMAGE VIDEO). < < SET: EQU $ PSR B,X,C LR Y,A MP NMPL < CONVERSION DE L'Y DU POINT EN < UN 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 < POSITIONNEMENT DU POINT. STA 0,C < MISE A JOUR DE CE MOT. PLR B,X,C RSR XWOR%: VAL 0 PAGE < < < C E N T R E D E G R A V I T E T R A M E : < < < RESULTAT : < A=0 : TRAME VIDE, < =1 : TRAME NON VIDE, ET ALORS : < X,Y=CENTRE DE GRAVITE GRAPHIQUE, < XG,YG=CENTRE DE GRAVITE VIDEO. < < GRAVE: EQU $ STZ KPT < RAZ NBRE DE POINTS TRAME. STZ XC < RAZ SIGMA(X). STZ XC+1 STZ YC < RAZ SIGMA(Y). STZ YC+1 < < BALAYAGE DE L'IMAGE : < LX ALIMAG < INDEX MOT DE L'IMAGE. GRAV1: EQU $ LA &AIMAG2 JAE GRAV4 < MOT COURANT NUL, SANS INTERET. STA MOTC < SAVE SI #0. PSR X < SAVE L'INDEX COURANT. LR X,A ADRI -1,A < INDEX PAR RAPPORT A 0. SLLS 4 SLRD 8 LR A,Y < Y=Y(TOUS LES POINTS DE MOTC). LAI 0 SLLD 8 STA XMOTC < XMOTC=X(1ER POINT DE MOTC). GRAV3: EQU $ LA MOTC JAE GRAV2 < MOTC=0, ON A FINI POUR LUI. IC KPT < COMPTAGE DES POINTS A 1. DBT < RECHERCHE DU 1ER A 1. RBT 0,X < ET RAZ IMMEDIAT. STA MOTC < MAJ DE MOTC. LA XMOTC ADR A,X < X(1ER MOT A 1 DE MOTC). LA XC LB XC+1 ADR X,B < CUMUL SIGMA(X). ADCR A STA XC STB XC+1 LA YC LB YC+1 ADR Y,B < CUMUL SIGMA(Y). ADCR A STA YC STB YC+1 JMP GRAV3 < AU POINT SUIVANT. GRAV2: EQU $ PLR X < RESTAURE INDEX COURANT. GRAV4: EQU $ JDX GRAV1 < MOT PRECEDENT. < < CALCUL DES COORDONNEES DU CENTRE DE GRAVITE : < LA KPT CP SEUIL < TRAME VIDE ??? LAI 0 < OUI, A PRIORI. JL GRAV5 < ET OUI, PRESQUE VIDE.... LA XC LB XC+1 DV KPT STA XG < XG=SIGMA(X)/KPT. SLLS DEDX < CADRAGE GRAPHIQUE. LR A,X < X=CENTRE DE GRAVITE GRAPHIQUE. LA YC LB YC+1 DV KPT STA YG < YG=SIGMA(Y)/KPT. SB NLIG NGR A,A < INVERSION AXE DES Y. SLLS DEDY < CADRAGE GRAPHIQUE. LR A,Y < Y=CENTRE DE GRAVITE GRAPHIQUE. LAI 1 < TRAME NON VIDE. GRAV5: EQU $ RSR 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 CG < RETOUR A PRIORI EN ALPHA, SVC 0 < A CAUSE DE 'DRAW'. LAD DEMOUT SVC 0 < EMISSION DU MESSAGE. PLR C,X RSR < < < T R A C E S E G M E N T G R A P H I Q U E : < < DRAW: EQU $ CPZ IVISU < TRACE VALIDE ??? JNE NVISU < NON, RIEN A FAIRE... PSR X LAD OG SVC 0 < OPEN GRAPHIQUE. LAD WG SVC 0 < ECRITURE GRAPHIQUE DE 'SEG'. PLR X NVISU: EQU $ RSR < < < I N T E R R O G A T I O N : < < < ARGUMENT : < A=@MESSAGE A EMETTRE. < < < RESULTAT : < B=0 : REPONSE=OUI, < 1 : REPONSE=NON, < CARRY POSITIONNE PAR UN 'CPZR B'. < < INTER1: EQU $ LR Y,A < RESTAURE A=@MESSAGE. ENTER: EQU $ LR A,Y < SAVE Y=@MESSAGE. BSR APRINT < EMISSION DU MESSAGE (A). PSR X LAD DEMREP SVC 0 < ENTREE DE LA REPONSE. PLR X LBI 0 < B=0 (OUI A PRIORI). LBY REP < A=CARACTERE REPONDU. CPI "O" JE INTER2 < OUI. LBI 1 < B=1 (NON A PRIORI). CPI "N" JNE INTER1 < INCOMPREHENSIBLE... INTER2: EQU $ CPZR B < POSITIONNEMENT CODES CONDITION. RSR IF ORDI-"S",XWOR%,,XWOR% < < < E N T R E E R E P O N S E O / N / 1 / 2 / 3 : < < < ARGUMENT : < A=@ MESSAGE A EMETTRE. < < < RESULTAT : < B=0 : REPONSE OUI/1/2/3. < B=1 : REPONSE NON. < DEMANDE INIMAG POSITIONNEE. < < ENTCL1: EQU $ LR Y,A < RESTAURE A=@ MESSAGE. ENTCL: EQU $ LR A,Y < SAVE Y=@ MESSAGE. BSR APRINT < EMISSION DU MESSAGE (A). PSR X LAD DEMREP SVC 0 < ENTREE DE LA REPONSE. PLR X LBY REP < A=CARACTERE REPONDU. LBI 0 < B=0 (NON A PRIORI). CPI "N" JE ENTCL2 < REPONSE NON. LBI TVPV < B=TVPV (OUI A PRIORI). CPI "O" JE ENTCL2 < REPONSE OUI. ADRI -'30,A < A=1/2/3 (REPONSE 1/2/3). JALE ENTCL1 < NON - A REVOIR CPI 3 JG ENTCL1 < NON - A REVOIR. LR A,B < OK - B RECOIT A. ENTCL2: EQU $ SBT 16+NBTVIN < ENTREE IMAGE A PRIORI. STB INIMAG+3 < POSITIONNER LE NUMERO DE PROCESSEUR. LR B,A < POSITIONNER B. RBT NBTVIN LBI 0 JANE ENTCL3 LBI 1 ENTCL3: EQU $ CPZR B < POSITIONNEMENT CODES CONDITION. RSR XWOR%: VAL 0 < < < E N V O I E N Z D C : < < SEND: EQU $ CPZ IZDC < EMISSION ZDC ??? JNE SEND2 < NON, RIEN A FAIRE... PSR X LAD GETGS SEND1: EQU $ SVC 0 < ACCES A LA VALIDATION COURANTE. CPZ NOMSEG < SEGMENT PRECEDENT ACQUITTE ??? JNE SEND1 < NON, ON ATTEND. DC NOMSEG < OUI, NOMSEG=-1. LAD STOGS SVC 0 < ENVOI DU SEGMENT COURANT. PLR X SEND2: EQU $ RSR < ET C'EST TOUT... < < < E N V O I 1 O U 2 S E G M E N T S : < < < FONCTION : < SUIVANT LA VALEUR DE IPOINT, CETTE < ROUTINE EMET EN ZDC 1 OU 2 SEGMENTS : < IPOINT=0 : (ORG,ORG)OAB(EXT,EXT)OAB, < IPOINT=1 : (ORG,EXT)OAB, < LES 'OAB' ETANT CONDITIONNES PAR < LA VALEUR DE 'IOAB'. < < SENDP: EQU $ CPZ IZDC < ZDV VALIDEE ??? JNE SENDP2 < NON, DONC RIEN A FAIRE... < < SAUVEGARDE DU 'SEG' ARGUMENT A PRIORI : < PSR A,B,X LAD SAVS LR A,B LAD SEG LXI 4 MOVE < SEG --> SAVS. < < ENVOI EN ZDC : < CPZ IPOINT < 1 OU 2 SEGMENTS ??? JNE SENDP1 < 1 SEUL (ORG,EXT). LA SEG+2+X < 2 (ORG,ORG) ET (EXT,EXT). LB SEG+2+Y PSR A,B < SAVE L'EXTREMITE DE SEG. LA SEG+0+X LB SEG+0+Y STA SEG+2+X < EXT <-- ORG. STB SEG+2+Y BSR ASEND < ENVOI EN ZDC... BSR AOAB < OAB INTERMEDIAIRES... PLR A,B < RESTAURE L'EXTREMITE DE SEG. STA SEG+0+X < ORG <-- EXT. STB SEG+0+Y STA SEG+2+X < RESTAURE EXT. STB SEG+2+Y SENDP1: EQU $ BSR ASEND < ENVOI EN ZDC... BSR AOAB < OAB INTERMEDIAIRES... < < RESTAURATION DU SEG ARGUMENT : < LAD SEG LR A,B LAD SAVS LXI 4 MOVE < SAVS --> SEG. PLR A,B,X SENDP2: EQU $ RSR < < < F A U T - I L E N V O Y E R D E S < O A B I N T E R M E D I A I R E S ? ? < < SOAB: EQU $ LBI 1 < B=1 : NON A PRIORI. CPZ IZDC < L'EMISSION ZDC EST-ELLE VALIDE ??? JNE SOAB1 < NON, DONC PAS D'OAB... LA AM17 BSR AENTER < INTERROGATION UTILISATEUR... SOAB1: EQU $ STB IOAB < SAVE LA REPONSE... RSR < < < F A U T - I L E N V O Y E R < 1 O U 2 S E G M E N T S ?? < < SPOIN: EQU $ LBI 1 < B=1 : NON A PRIORI... CPZ IZDC < L'EMISSION ZDC EST-ELLE VALIDE ??? JNE SPOIN1 < NON.. LA AM18 < OUI. BSR AENTER < INTERROGATION UTILISATEUR... SPOIN1: EQU $ STB IPOINT < SAVE LA REPONSE. RSR < < < E N V O I O A B I N T E R M E D I A I R E S : < < < FONCTION : < SI L'INDICATEUR IOAB EST VALIDE (0), < ON ENVOIE DERRIERE CHAQUE SEGMENT EMIS < EN ZDC UN 'OAB'. L'APPLICATION EST LA < SUIVANTE (IDEM A 'VT') : < 1- ON CREE UNE BIBLIOTHEQUE GRAPHIQUE < CONTENANT : < >PROG(:A:B D I D :A:B <TRACE < GRAPHIQUE QUELCONQUE> < 2- CETTE BIBLIOTHEQUE EST APPELEE < DANS UNE ITERATION SOUS 'GV' : < %X( $BIBLI; ?PROG; ), < AINSI A CHAQUE APPEL DE 'PROG' ON < INTRODUIT UN SEGMENT DONT L'EXTREMITE < EST MATERIALISEE PAR <TRACE GRAPHIQUE < QUELCONQUE>. < < ZOAB: EQU $ CPZ IOAB < FAUT-IL EMETTRE LES OAB ??? JNE OAB1 < NON, STZ SEG+0+X < OUI. STZ SEG+0+Y STZ SEG+2+X STZ SEG+2+Y BSR ASEND OAB1: EQU $ RSR PAGE < < < E N V O I D ' U N B O N N O M B R E < D E S E G M E N T S : < < EDIT: EQU $ CPZ ISGF < ACCES SGF ??? JE NSGF2 < OUI. NFIN2: EQU $ RSR < NON... NSGF2: EQU $ CPZ KPT1 < Y-AT'IL EU DES SEGMENTS GENERES ??? JE NFIN2 < NON, RIEN A FAIRE... LXI -1 LYI -1 BSR ASTBU1 < MARQUAGE DE FIN DE LISTE... CPZ IBUF1 < LE BUFFER SGF EST-IL NON VIDE ??? JE CLOS1 < NON, IL EST VIDE. STZ IBUF1 < REINITIALISATION INDEX BUFFER. LAD SGFW1 < OUI, IL CONTIENT QUELQUE CHOSE, SVC 0 < ON LE VIDE... CLOS1: EQU $ LA SGFC1 SBT 15 STA SGFC1 < MISE DE SGFC1 EN SAVE. LAD SGFC1 SVC 0 < CLOSE SAVE DE 1.0. < < NOMBRE DE SEGMENTS GENERES : < LA AM5 BSR APRINT LA KPT1 < NBRE DE POINTS. SLRD 16+1 STB NSEG1 < NOMBRE DE SEGMENTS. BSR ADISP < CONVERSION HEXADECIMALE DE (B). LAD MDIS BSR APRINT < EDITION DE NSEG1. < < ENTREE DU NBRE DE SEGMENTS DEMANDES : < NP1: EQU $ LA AM4 BSR APRINT LAD DEMH SVC 0 < ENTREE DU NOMBRE. LYI 4 BSR AHEX < DECODAGE DE 4 CARACTERES. JNE NP1 < ERREUR DE SYNATXE. JALE NP1 < REFUS DES NOMBRE <=0. STA NSEG < SAVE LE NOMBRE DE SEGMENTS < REELLEMENT DEMANDES. STA SNSEG < DECOMPTEUR DE NSEG. < < ET MAINTENANT DOIT-ON EMETTRE EN ZDC ??? < LAD M1 BSR AENTER STB IZDC < SAVE LA REPONSE... BSR ASPOIN < ENVOI 1 OU 2 SEGMENTS ??? BSR ASOAB < OAB INTERMEDAIRES ??? LA NSEG1 SB NSEG STA MODE < MODE MEMORISE LA POSITION < DE NSEG PAR RAPPORT A NSEG1. < < VALEUR DE MODE : < MODE=0 : NSEG=NSEG1, JUSTE LE NON NOMBRE, < MODE<0 : NSEG1<NSEG, IL EN MANQUE, < MODE>0 : NSEG1>NSEG, IL Y EN A TROP. < JAE NP4 < OK, LE BON NOMBRE. JAL NP5 < IL N'Y EN A PAS ASSEZ. < < PREPARATION 'TROP DE SEGMENTS' : < LA NSEG1 SARD 16 DV NSEG < DIVISION PAR EXCES NSEG1/NSEG. STA N1 < EN PRENDRE 1 SUR N1. STZ SN1 IC SN1 < SN1=1, AFIN DE PRENDRE LE < 1ER SEGMENT. JMP NP4 < < PREPARATION 'PAS ASSEZ DE SEGMENTS' : < NP5: EQU $ LAI 0 LB NSEG DV NSEG1 < DIVISION PAR DEFAUT NSEG/NSEG1. STA N2 < ENVOYER N2 SEGMENTS POUR 1, STB N3 < EN AJOUTER N3 AU DEBUT. STB SN3 < DECOMPTEUR DE N3. < < INITIALISATIONS : < NP4: EQU $ LAI MAXBUF STA IBUF1 < AFIN DE FORCER LA 1ERE LECTURE. LA SGFO1 SBT 15 STA SGFO1 < MISE EN OLD DE SGFO1. LAD SGFO1 SVC 0 NP2: EQU $ < < BOUCLE D'EMISSION DES SEGMENTS : < LA IBUF1 CPI MAXBUF < VALIDATION INDEX BUFFER. JL NP3 < OK, BUFFER NON VIDE... LAD SGFR1 SVC 0 < LECTURE SI BUFFER VIDE. LAI 0 < REINITIALISATION DE IBUF1. NP3: EQU $ LR A,X < X=INDEX COURANT BUFFER SGF. CPZ MODE JG NP6 < CAS 'TROP DE SEGMENTS'. JL NP7 < CAS 'PAS ASSEZ DE SEGMENTS'. < < CAS 'JUSTE ASSEZ DE SEGMENTS' : < NP9: EQU $ BSR ALBU1 < A,B=COORDONNEES ORIGINE SEGMENTS. STA SEG+0+X STB SEG+0+Y BSR ALBU1 < A,B=COORDONNEES EXTREMITE SEGMENT. STA SEG+2+X STB SEG+2+Y BSR ASENDT < SEND+TEST DE FIN (NSEG=0). < < FIN D'UNE ITERATION : < NP10: EQU $ STX IBUF1 < SAVE INDEX COURANT BUFFER. JMP NP2 < VERS LE TOUR SUIVANT... < < CAS 'TROP DE SEGMENTS' : < NP6: EQU $ DC SN1 < EST-CE LE MOMENT D'EMETTRE ??? JG NP8 < NON. LA N1 STA SN1 < REINITIALISATION DE SN1, LORSQU'ON < EMET UN SEGMENT. JMP NP9 < VERS L'EMISSION... NP8: EQU $ < PAS D'EMISSION. ADRI 4,X < ON SAUTE LE SEGMENT COURANT. JMP NP10 < < CAS 'PAS ASSEZ DE SEGMENTS' : < NP7: EQU $ BSR ALBU1 < A,B=ORIGINE SEGMENT COURANT. STA DICOX1 STB DICOY1 BSR ALBU1 < A,B=EXTREMITE SEGMENT COURANT. STA DICOX2 STB DICOY2 STA DICOX < SAVE L'EXTREMITE REELLE STB DICOY < DU SEGMENT COURANT. LA N2 DC SN3 < DECOMPTE DES SEGMENTS A RAJOUTER AU DEBUT JL NP20 < C'EST FINI POUR EUX... ADRI 1,A < SI SN3>0, ON ENVERRA UN SEGMENT < DE PLUS. NP20: EQU $ STA SN2 < SN2=N2 (+1 SI SN3>0). STA SSN2 < POUR LE DECOMPTE DES ITERATIONS. LA DICOX2 SB DICOX1 SARD 16 DV SN2 STA PASX < PASX=(DICO2-DICOX1)/SN2. LA DICOY2 SB DICOY1 SARD 16 DV SN2 STA PASY < PASY=(DICOY2-DICOY1)/SN2. NP21: EQU $ < ENVOI DES SEGMENTS. DC SSN2 < DECOMPTE DES ITERATIONS. JE NP30 < C'EST FINI... LA DICOX1 STA SEG+0+X < ORIGINE. AD PASX STA SEG+2+X < EXTREMITE. LA DICOY1 STA SEG+0+Y < ORIGINE. AD PASY STA SEG+2+Y < EXTREMITE. BSR ASENDT < SEND+TEST DE FIN (NSEG=0). LA SEG+2+X STA DICOX1 < CHANGEMENT ORIGINE, LA SEG+2+Y STA DICOY1 < CHANGEMENT ORIGINE. JMP NP21 < ITERATION SUIVANTE... < < CAS 'PAS ASSEZ DE SEGMENTS', TRAITEMENT DU DERNIER SOUS-SEGMENT : < NP30: EQU $ LA DICOX1 STA SEG+0+X LA DICOY1 STA SEG+0+Y LA DICOX < POUR LUI, ON PREND L'EXTREMITE STA SEG+2+X < REELLE DU SEGMENT. LA DICOY STA SEG+2+Y BSR ASENDT < SEND+TEST DE FIN (NSEG=0). JMP NP10 < C'EST FINI POUR CE SEGMENT. < < FIN DES OPERATIONS : < NFIN: EQU $ LA SGFC1 RBT 15 < MISE DE SGFC1 EN DELETE. STA SGFC1 LAD SGFC1 SVC 0 < DELETE DE 1.0. RSR < < < S E N D E T T E S T D E F I N : < < SENDT: EQU $ BSR ASENDP < EMISSION EN ZDC. DC SNSEG JE SENDT1 < C'EST FINI. RSR < CE N'EST PAS FINI. SENDT1: EQU $ ADRI -1,K < ANNULATION DU BSR D'APPEL. JMP NFIN < ON ARRETE ICI L'EMISSION. PAGE < < < S T O R E S G F 1 : < < < ARGUMENT : < X,Y=COORDONNEES D'UN POINT EN GRAPHIQUE. < < STBUF1: EQU $ CPZ ISGF < ACCES SGF ??? JNE NSTBU1 < NON. PSR A,X LR X,A LX IBUF1 < X=INDEX COURANT BUFFER 1. STA &ASGF1 < SAVE COORDONNEE X. ADRI 1,X < PROGRESSION INDEX. STY &ASGF1 < SAVE COORDONNEE Y. ADRI 1,X < PROGRESSION INDEX. LR X,A CPI MAXBUF < VALIDATION INDEX. JL STBUF2 < OK, BUFFER NON PLEIN. LAD SGFW1 SVC 0 < ECRITURE D'UN BUFFER PLEIN... LAI 0 < ET RAZ INDEX COURANT. STBUF2: EQU $ STA IBUF1 < SAVE INDEX COURANT BUFFER 1. PLR A,X NSTBU1: EQU $ RSR < < < I N I T I A L I S A T I O N A C C E S S G F : < < INSGF: EQU $ STZ KPT1 < RAZ DU NBRE DE POINTS. CPZ ISGF < ACCES SGF ??? JNE NSGF10 < NON. STZ IBUF1 < REINITIALISATION INDEX BUFFER. LA SGFO1 RBT 15 < MISE DE SGFO1 EN NEW. STA SGFO1 LAD SGFO1 SVC 0 < OPEN NEW 1.0. NSGF10: EQU $ RSR < < < E N V O I 1 S E G M E N T A U S G F : < E T T R A C E D U S E G M E N T : < < < ARGUMENT : < SEG=LE SEGMENT A ENVOYER. < < SENDS: EQU $ CPZ ISGF < SGF ACTIF ??? JNE NSGF3 < NON, RIEN A FAIRE. LAI -1 < OUI, ON INHIBE LES WORD '1EB5 < ALT-MODES SOLITAIRES. LX SEG+0+X LY SEG+0+Y BSR ASTBU1 < ENVOI ORIGINE. IC KPT1 < COMPTAGE ORIGINE. LX SEG+2+X LY SEG+2+Y BSR ASTBU1 < ENVOI EXTREMITE. IC KPT1 < COMPTAGE EXTREMITE. LAI PIMAGE-ZERO WORD '1EB5 < REAUTORISATION ALT-MODES. NSGF3: EQU $ BSR ADRAW < TRACE SEGMENT SI VALIDE. RSR < < < A C C E S S G F 1 : < < < RESULTAT : < A,B=X,Y D'UN POINT. < < LBUF1: EQU $ LA &ASGF1 < COORDONNEE X. ADRI 1,X < PROGRESSION INDEX BUFFER. LB &ASGF1 < COORDONNEE Y. ADRI 1,X < PROGRESSION INDEX BUFFER. RSR < < < A C C E S S G F 2 : < < < RESULTAT : < A,B=X,Y D'UN POINT. < < LBUF2: EQU $ LA &ASGF2 < COORDONNEE X. ADRI 1,X < PROGRESSION INDEX BUFFER. LB &ASGF2 < COORDONNEE Y. ADRI 1,X < PROGRESSION INDEX BUFFER. RSR < < < A C C E S C C I I N T E R P R E T A T I F : < < < ARGUMENT : < A=@CARTE A EMETTRE. < < CCI: EQU $ SLLS 1 < A=@OCTET CARTE, STA CCII+1 < MAJ DEMANDE. LAD CCII SVC 0 < ACCES CCI INTERPRETATIF. RSR < < < T E N T A T I V E D E L E T E F I C H I E R S < F A & F B : < < DF: EQU $ LA AMAC BSR ACCI < CLOSE SAVE DE '0A. LA AMBCS BSR ACCI < CLOSE SAVE DE '0B. LA AMBO BSR ACCI LA AMBC BSR ACCI LAD DEMDB SVC 0 RSR PAGE < < < C O N V E R S I O N B I N A I R E A S C I : < < < ARGUMENT : < B=VALEUR A CONVERTIR. < < DISP: EQU $ PSR X LXI 0 < INDEX BUFFER. LYI 4 < MAX(X). DISP1: EQU $ LAI 0 < CLEAR A. SLLD 4 < DECONCATENATION B. CPI 9 < EST-CE UN CHIFFRE DECIMAL ??? JLE DISP2 < OUI... ADRI "A"-"9"-1,A < CONVERSION LETTRE. DISP2: EQU $ ADRI '30,A < CONVERSION ASCI. STBY &ABDISP < MISE EN BUFFER. ADRI 1,X < SUIVANT. CPR X,Y < EST-CE FINI ??? JNE DISP1 < NON... PLR X RSR < OUI... < < < C O N V E R S I O N A S C I --> B I N A I R E : < < < RESULTAT : < A=VALEUR CONVERTIE S'IL N'Y A PAS < D'ERREUR, LES CODES DE CONDITION < L'INDIQUANT. < < HEX: EQU $ PSR B,X LXI 0 < X=INDEX DE 'REP'. LBI 0 < B=CUMUL COURANT. HEX1: EQU $ LBY &AREP < A=CARACTERE COURANT DE 'REP'. CPI '04 < EST-CE 'EOT' ??? JE HEX5 < OUI, FIN DE CONVERSION. CPI '0D < EST-CE 'R/C' ??? JE HEX5 < OUI, FIN DE CONVERSION. ADRI -'30,A < CONVERSION BIANIRE. JAL HEX2 < ERREUR. CPI 9 < EST-CE UN CHIFFRE DECIMAL ??? JLE HEX3 < OUI. ADRI -"A"+"9"+1,A < NON. CPI 'A < VALIDATION HEXDECIMALE ??? JL HEX2 < ERREUR. CPI 'F < VALIDATION HEXADECIMALE ??? JG HEX2 < ERREUR. HEX3: EQU $ SCRS 4 < CUMUL PARTIEL DE LA SCLD 4 < VALEUR A CONVERTIR. ADRI 1,X < PASSAGE AU CARACTERE SUIVANT. CPR X,Y < EST-CE FINI ??? JNE HEX1 < NON. HEX5: EQU $ LR B,A < OUI, A=RESULTAT. LBI 0 < B=0 : OK. HEX4: EQU $ CPZR B < POSITIONNEMENT DES CODES < DE CONDITION SUR ERREUR. PLR B,X RSR HEX2: EQU $ < CAS DES ERREURS. LBI 1 < B=1#0 : ERREUR. JMP HEX4 < VERS LA SORTIE... PAGE < < < R E T O U R A ' G E ' : < < GOGE: EQU $ < < < A L T - M O D E S : < < ALTMOD: EQU $ < < RAZ DES ITEMS 1 ET 2 : < LX NMOTS < X=NBRE DE MOTS A RAZER. GOGE1: EQU $ STZ &AI2 JDX GOGE1 STZ &ANOM < INVALIDATION DU NOM DE < L'2MAGE 1 A CAUSE DE 'TV'/'TI' < QUI POURRAIT VOULOIR L'UTILISER < ENSUITE !!! < < 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. BSR ADF < DELETE DES FICHIERS.... < < 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. < < < R E T O U R A U C C I : < < GOCCI: EQU $ LAD DEMCCI SVC 0 < RETOUR CCI, JMP INTER < ET RETOUR 'TN' SI !GO. PAGE < < < R A Z I M A G E S T A T I Q U E : < < RAZ: EQU $ BSR ALOC12 < PASSAGE A 12K. LX ALIMAG < X=NBRE DE MOTS A TRAITER. LA MASKI < A=VALEUR INITIALE. RAZ1: EQU $ STA &AIMAG1 < INITIALISATION IMAGE STATIQUE. JDX RAZ1 DSPI1: EQU $ LB STABIL+2 LRM A WORD LIMAG*2 STA STABIL+2 LAD STABIL SVC 0 < VISUALISATION... STB STABIL+2 JMP INTERA < VERS LE RETOUR A 4K... < < < D I S P L A Y T R A M E C O U R A N T E : < < DSPI: EQU $ BSR ALOC12 < PASSAGE A 12K... JMP DSPI1 < < < I N I T I A L I S A T I O N I M A G E S T A T I Q U E : < < GETI: EQU $ BSR ALOC12 < PASSAGE A 12K... LA STABIL+3 LY STABIL+2 LR A,B SBT NBTVIN STA STABIL+3 LRM A WORD LIMAG*2 STA STABIL+2 LAD STABIL SVC 0 < ENTREE D'UNE TRAME. STB STABIL+3 STY STABIL+2 JMP INTERA < VERS LE RETOUR A 4K... < < < C H A M G E M E N T D U N O M < D U F I C H I E R ' F B ' : < < NOFIC: EQU $ CPZ ISGF < SGF VALIDE ??? JNE ERROR < NON, ERREUR... LAI PIMAGE-ZERO WORD '1EB5 < RESATAURE 'PRESC' A PRIORI. LAI '7D WORD '1EA5 < RESTAURE ALT-MODE A PRIORI. LA AM9 BSR APRINT < ENVOI MESSAGE 'NOM='. LAD DEMNO1 SVC 0 < ENTREE DU NOM DEMANDE. LAI '1B < CTRL-SHIFT-K. WORD '1EA5 < CHANGEMENT CARACTERE D'ABORT. LAI -1 WORD '1EB5 < INHIBITION DU PRESC. LAD DEMCOP SVC 0 < COPIE DU NOM INTERNE DU < FICHIER SUR LE NOM DEMANDE. JNE NOFIC < ERREUR, ON REDEMANDE NOM. LAD DEMDB SVC 0 < OK, ON DELETE LE NOM 'FB'. LXI -1 LYI -1 BSR ASTBU1 < INDICATEUR DE FIN DE LISTE. CPZ IBUF1 < BUF1 EST-IL NON VIDE ??? JE NOFIC1 < NON... LAD SGFW1 SVC 0 < OUI, ON LE VIDE. NOFIC1: EQU $ LA AMBCS BSR ACCI < ET CLOSE SAVE '0B. LAI PIMAGE-ZERO WORD '1EB5 < RESTAURE LE 'PRESC'. LAI '7D WORD '1EA5 < RESTAURE LE ALT-MODE. JMP INTERC < ON VA REINITIALISER LES < ASSIGNATIONS. < < < I N V E R S I O N E T A T T R A C E : < < VISU: EQU $ LA AM10 BSR AENTER < GRAPHIQUE VISU ??? STB IVISU LA AM11 IF ORDI-"T",XWOR%,,XWOR% BSR AENTER < SORTIE VIDEO ??? XWOR%: VAL 0 IF ORDI-"S",XWOR%,,XWOR% BSR AENTCL < SORTIE VIDEO ??? LA INIMAG+3 < POSITIONNER LE PROCESSEUR DE SORTIE. RBT NBTVIN STA STABIL+3 XWOR%: VAL 0 STB IVIDEO BR AINTER < VERS L'INTERROGATION. PAGE < < < S I M U L A T I O N D ' U N C U R S E U R < G R A P H I Q U E D E V I S U : < < < FONCTION : < CE PROCESSEUR PERMET L'ENTREE < DE SEGMENTS : < 1- A PARTIR DE LA ZDC, < 2- A PARTIR DU CURSEUR DE LA VISU, < 3- A PARTIR DE LA CAMERA EN UTILISANT LE < LE CENTRE DE GRAVITE DE L'IMAGE COMME < SIMULATEUR DE CURSEUR VISU. < A PARTIR DE LA IL CREE DES FICHIERS QUI < PEUVENT ETRE RENDUS PERMANENTS ('N'), < ET RELUS AFIN D'ETRE EMIS PAR LA ZDC, < ET RECUPERES PAR UN AUTRE PROCESSEUR, ET < EN PARTICULIER LUI-MEME AFIN DE FAIRE DES < COPIES, DES INSERTIONS, DES SUPPRES- < SIONS,... DANS DES FICHIERS. < < WORD IMAG WORD LOC+'80 WORD BRANCH IMAGE: EQU $ LRP K ADRI -1,K PLR C,L,W < INITIALISATIONS DES 3 BASES. LA ASTACK LR A,K < INITIALISATION DE K SUR LA PILE < DE TRAVAIL DE 'TN'. IC KIN < DECOMPTE DES ENTRIES. < < T R A I T E M E N T D E S A L T - M O D E S : < JG INTERA < ALT-MODES : REALLOCATION MEMOIRE... < < < 1 E R E E N T R Y < < TABLO: EQU $ < < VALIDATION DU DEMANDEUR : < WORD '1E25 < (A,B)=<ACN> DU DEMANDEUR. CP ACNSYS < EST-CE :SYS ??? JNE GOGE < NON , RETOUR ... LR B,A CP ACNSYS+1 < EST-CE :SYS ??? JNE GOGE < NON , RETOUR .... < < ACCES AU SGF ??? < LAD M3 BSR AENTER < INTERROGATION ??? STB ISGF < SAVE REPONSE. JNE NSGF1 < NON, RIEN A FAIRE... WORD '1E45 < OUI, A=IDESC. ADRI '30,A < CONVERSION ASCI DE L'IDESC. STBY &AIDBN < CALCUL DU NOM DE FICHIER STBY &AIDBO < EN FONCTION DE L'IDESC. BSR ADF < TENTATIVE DE DELETE INITIAL... INTERC: EQU $ LA AMBN BSR ACCI < OPEN '0B. JNE GOGE < ABORT SI IMPOSSIBLE (ASSIGNATION ???) LAD DEMSGF < SAVE LA CORRESPONDANCE SVC 0 < 'FB' --> NOM DIRECT DU FICHIER. < EN VUE DE LA COMMANDE 'N'). BSR AINSGF < INITIALISATION ACCES SGF1. NSGF1: EQU $ BSR AINSGF < INITIALISATION ACCES SGF. INTERA: EQU $ < ENTRY ALT-MODES. LAD RELMEM SVC 0 < PASSAGE A 4K A PRIORI. < < INTERROGATION DE L'UTILISATEUR : < INTER: EQU $ LAD MINT BSR APRINT < ENVOI DE L'INVITATION. LAD DEMIN SVC 0 < LECTURE DE LA REPONSE. LBY REP < A=CARACTERE REPONSE UTILISATEUR. < < REPONSES RECONNUES : < F : RETOUR A 'GE' , < G : ENTREE D'UN CONTOUR, < W : RETOUR AU CCI. < Z : RAZ DE L'IMAGE STATIQUE. < D : DSPILAY LA TRAME COURANTE. < I : RECUPERATION D'UNE TRAME EN MEMOIRE 'TV', < O : ENVOI D'UN 'OAB' EN ZDC. < V : INVERSION DE L'ETAT D'ECRITURE GRAPHIQUE SU VISU. < R : LECTURE D'UN FICHIER EXISTANT. < N : MISE EN PERMANENT DU FICHIER 'FB'. < S : EDIT. < CPI "W" JE GOCCI < RETOUR TEMPORAIRE AU CCI. CPI "G" JE CONT < ENTREE CONTOUR. CPI "Z" JE RAZ < INITAILISATION IMAGE STATIQUE. CPI "I" JE GETI < RECUPERATION D'UNE TRAME EN 'MEMTV'... CPI "D" JE DSPI < DSPILAY LA TRAME COURANTE. CPI "V" JE VISU < INVERSION ETAT SORTIE VISU. CPI "R" JE RFIC < LECTURE D'UN FICHIER. CPI "N" JE NOFIC < CHANGEMENT DE NOM DE 'FB'. CPI "O" JE OAB < VERS L'ENVOI D'UN 'OAB' EN ZDC. CPI "S" JE SEDIT < EDITION DE LA LISTE COURANTE. CPI "F" JNE ERROR < ????!?!??! BR AGOGE < RETOUR A "GE". ERROR: EQU $ LAD MERR BSR APRINT < ENVOI MESSAGE D'EREUR... JMP INTER < RIEN COMPRIS, INTERROGATION... < < < E N V O I ' O A B ' : < < OAB: EQU $ CPZ IZDC < ACCES ZDC VALIDE ??? JNE ERROR < NON, 'O' NON RECONNUE... STZ SEG+0+X STZ SEG+0+Y STZ SEG+2+X STZ SEG+2+Y BSR ASEND < ENVOI EN ZDC... BR AINTER < ET C'EST TOUT... PAGE < < < E N T R E E C O N T O U R : < < CONT: EQU $ LAD M8 BSR AENTER < ENTREE PAR ZDC ??? JE ACZDC < OUI. LAD M6 IF ORDI-"T",XWOR%,,XWOR% BSR AENTER < ENTREE VIDEO ??? XWOR%: VAL 0 IF ORDI-"S",XWOR%,,XWOR% BSR AENTCL < ENTREE VIDEO ??? XWOR%: VAL 0 JE ACVIDE < OUI. LAD M7 BSR AENTER JE ACCUR < VERS L'ENTREE CURSEUR... JMP INTER < VERS L'INTERROGATION.... < < E N T R E E V I D E O : < ACVIDE: EQU $ BSR ALOC12 < PASSAGE A 12K. < < ENTREE DU SEUIL IMAGE VIDE : < SE1: EQU $ LAD M2 BSR APRINT < ENVOI MESSAGE. LAD DEMH SVC 0 < ENTREE SEUIL PRESUME. LYI 4 < Y=4 CARACTERES A DECODER. BSR AHEX < DECODAGE BINAIRE. JNE SE1 < ERREUR DE SYNTAXE. JALE SE1 < REFUS DE SEUIL<=0. STA SEUIL < OK, BON SEUIL. < < ENTREE DES TRAMES SUCCESSIVES : < CONT1: EQU $ BSR ATRAME < ENTREE UNE TRAME. BSR AGRAVE < CALCUL DE SON CENTRE DE GRAVITE. JAE CONT1 < ELLE EST VIDE, ON ATTEND... CONT4: EQU $ STX SEG+0+X STY SEG+0+Y < ORIGINE SEGMENT COURANT. IF ORDI-"T",XWOR%,,XWOR% LA XG STA DICOX1 < PREPARATION DICHOTOMIE. LA YG STA DICOY1 XWOR%: VAL 0 CONT2: EQU $ BSR ATRAME < ENTREE UNE TRAME. BSR AGRAVE < CLCUL DE SON CENTRE DE GRAVITE. JAE CONT2 < ELLE EST VIDE, ON ATTEND.... STX SEG+2+X STY SEG+2+Y < EXTREMITE SEGMENT COURANT. < < STORE SGF EVENTUEL : < BSR ASENDS < < TRACE VIDEO STATIQUE : < IF ORDI-"T",XWOR%,,XWOR% LA XG STA DICOX2 LA YG STA DICOY2 XWOR%: VAL 0 BSR ATRACE LX SEG+2+X < L'EXTREMITE COURANTE VA DEVENIR LY SEG+2+Y < L'ORIGINE DU SEGMENT SUIVANT. JMP CONT4 < ET ON BOUCLE JUSQU'A < RECEVOIR UN ALT-MODE... < < E N T R E E Z D C : < ACZDC: EQU $ CPZ IVIDEO JNE ACZDC1 < PAS DE TRACE VIDEO. BSR ALOC12 < OUI, IL FAUT DONC 12K... ACZDC1: EQU $ LAD DEMGS SVC 0 < ACCES SEGMENT COURANT ZDC. CPZ NOMSEG < TEST DE LA VALIDATION ??? JE ACZDC1 < INVALIDE. STZ NOMSEG LAD DELGS SVC 0 < OK, ACQUITTEMENT. LA SEG+0+X OR SEG+0+Y OR SEG+2+X OR SEG+2+Y < EST-CE LA FIN DE LISTE ZDC ??? JAE INTERA < OUI, ON ARRETE ICI L'ENTREE... BSR ASENDS < NON, ON ENVOI AU SGF... BSR AGRVI < TRACE VIDEO EVENTUEL. JMP ACZDC1 < VRS LE SEGMENT ZDC SUIVANT. < < E N T R E E C U R S E U R : < ACCUR: EQU $ CPZ IVIDEO JNE ACCUR1 < PAS DE TRACE VIDEO. BSR ALOC12 < OUI, IL FAUT DONC 12K. ACCUR1: EQU $ LAD OG SVC 0 < OPEN GRAPHIQUE. LAD CU SVC 0 < MISE EN FONCTION CURSEUR. LAD LCU SVC 0 < LECTURE GRAPHIQUE. LBY CURSOR < A=CARACTERE DE DEBLOCAGE. < < COMMANDES RECONNUES : < A : ORIGINE SEGMENT, < B : EXTREMITE CHAINEE, < S : EXTREMITE ETOILEE, < F : FIN DE CURSEUR. < CPI "A" JE RUNA CPI "B" JE RUNB CPI "S" JE RUNS CPI "F" JNE ACCUR1 < RIEN COMPRIS... JMP INTERA < COMMANDE 'F', RETOUR 4K. < < A : ORIGINE SEGMENT : < RUNA: EQU $ LX CURSOR+1+X LY CURSOR+1+Y STX SEG+0+X STY SEG+0+Y JMP ACCUR1 < < B : EXTREMITE CHAINEE SEGMENT, < S : EXTREMITE ETOILEE SEGMENT : < RUNB: EQU $ RUNS: EQU $ LX CURSOR+1+X LY CURSOR+1+Y STX SEG+2+X STY SEG+2+Y BSR ASENDS < ENVOI AU SGF EVENTUEL... BSR AGRVI < TRAVE VIDEO EVENTUEL. LBY CURSOR < A=CARACTERE DE DEBLOCAGE. CPI "B" JE RUNA < B : IL FAUT CHAINER. JMP ACCUR1 < S : IL NE FAUT PAS CHAINER. < < < E D I T I O N L I S T E C O U R A N T E : < < SEDIT: EQU $ BSR AEDIT BSR AINSGF < REINITIALISATION SGF... BR AINTER < VERS L'INTERROGATION. PAGE < < < L E C T U R E D ' U N F I C H I E R : < < < FONCTION : < CE MODULE RELIT UN FICHIER < DE NOM DONNE ET L'EMET EN ZDC; ON < PEUT AINSI COPIER DES FICHIERS... < < RFIC: EQU $ LA AM9 BSR APRINT < ENVOI MESSAGE 'NOM='. LAD DEMNOM SVC 0 < ENTREE DU NOM DU FICHIER. LA AMAC BSR ACCI < DESASSIGNATION EN SAVE DE '0A. LA AMFIC BSR ACCI < ESSAI D'OUVERTURE 'OLD' SUR '0A. JNE RFIC4 < ERREUR, VERS L'INTERROGATION. LAD SGFO2 SVC 0 < OUVERTURE DE 1.0 EN OLD. JE RFIC1 < OK, REUSSIT... LA AMAC < SINON, ON REFERME BSR ACCI < EN SAVE... RFIC4: EQU $ BR AINTER < REINTERROGATION.... < < INITIALISATIONS DE LA LECTURE DU FICHIER : < RFIC1: EQU $ CPZ IVIDEO JNE RFIC8 < PAS DE SORTIE VIDEO. BSR ALOC12 < SORTIE VIDEO : PASSAGE A 12K. RFIC8: EQU $ LA AM15 BSR APRINT LAD DEMH SVC 0 < ENTREE #1ER SEGMENT. LYI 4 BSR AHEX < DECODAGE BINAIRE. JNE RFIC8 < ERREUR DE SYNTAXE. JALE RFIC8 < NUMERO NON RECONNU. STA NUS1 < OK. RFIC9: EQU $ LA AM16 BSR APRINT LAD DEMH SVC 0 < ENTREE #2EME SEGMENT. LYI 4 BSR AHEX < DECODAGE BINAIRE. JNE RFIC9 < ERREUR DE SYNTAXE. JALE RFIC9 < NUMERO NON RECONNU. CP NUS1 < VALIDATION 2EME/ AU 1ER... JL RFIC8 < 2EME<1ER : ERREUR... STA NUS2 < OK. STZ NSEG2 < RAZ DU COMPTEUR DE SEGMENTS. LB IVISU CPZR B < Y-A-T'IL TRACE VISU ??? JNE RFIC6 < NON, DONC PAS DE COMPTAGE... LA AM12 BSR AENTER < FAUT-IL COMPTER ??? RFIC6: EQU $ STB ISEG < SAVE LA REPONSE. LAD M1 BSR AENTER < EMISSION ZDC ??? STB IZDC < SAVE LA REPONSE... BSR ASPOIN < ENVOI 1 OU 2 SEGMENT ??? BSR ASOAB < OAB INTERMEDIARES ??? LA AM13 BSR AENTER < PAS A PAS ??? STB IPAS < SAVE LA REPONSE. LXI MAXBUF < X=INDEX BUFFER 2. < < TRAITEMENT DES SEGMENTS : < RFIC2: EQU $ LR X,A < VALIDATIION INDEX BUFFER. CPI MAXBUF JL RFIC3 < OK. LAD SGFR2 < ON, LE BUFFER EST TOUT SVC 0 < EXPLORE, AU SUIVANT... JNE NRFIC < FIN DE FICHIER, STOP !!! LAI 0 < OK, REINITIALISATION DE L'INDEX. RFIC3: EQU $ LR A,X < X=INDEX BUFFER 2. BSR ALBU2 STA SEG+0+X < ORIGINE STB SEG+0+Y < SEGMENT COURANT. ANDR B,A < FIN DE LISTE ??? CPI -1 JE NRFIC < OUI, ON ABANDONNE. BSR ALBU2 STA SEG+2+X < EXTREMITE STB SEG+2+Y < SEGMENT COURANT. IC NSEG2 < COMPTAGE SEGMENT. LA NSEG2 < OU EN EST-ON ??? CP NUS2 < A-T'ON DEPASSE NUS2 ??? JG NRFIC < OUI, ON ARRETE ICI. CP NUS1 < A-T'ON ATTEINT NUS1 ??? JL RFIC2 < NON, ON ATTEND D'Y ARRIVER... BSR ADRAW < TRACE EVENTUEL... BSR AGRVI < AFFICHAGE VIDEO EVENTUEL. CPZ ISEG < FAUT-IL COMPTER ??? JNE RFIC5 < NON... LB NSEG2 < OUI, B=NUMERO COURANT. BSR ADISP < CONVERSION ASCI DE (B). LAD MDIS BSR APRINT < EDITION DE (NSEG2) AU BOUT DU SEGMENT < COURANT. RFIC5: EQU $ CPZ IPAS < PAS A PAS ??? JNE RFIC7 < NON... LAD M14 < OUI, BSR AENTER < ALORS FAUT-IL PRENDRE EN < COMPTE LE SEGMENT COURANT ??? JNE RFIC2 < NON, AU SUIVANT... RFIC7: EQU $ BSR ASENDP < ENVOI EN ZDC... JMP RFIC2 < AU SEGMENT SUIVANT. < < FIN DE FICHIER : < NRFIC: EQU $ LAD SGFC2 SVC 0 < CLOSE SAVE 1.0. LA AMAC BSR ACCI < DESASSIGNATION EN SAVE DE '0A. BR AINTEA < VERS L'INTERROGATION ET 4K. 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 ... PAGE < < < B U F F E R S G F 2 : < < BUF1M: EQU $ BUFSGF: EQU BUF1M XBUF: VAL BUF1M-ZERO*2 BUF1O: EQU ZERO+XBUF < @OCTET DE BUF1M. < < < B U F F E R S G F 2 : < < BUF2M: EQU BUF1M+128 XBUF: VAL BUF2M-ZERO*2 BUF2O: EQU ZERO+XBUF < @OCTET DE BUF2M. < < < P I L E D E T R A V A I L : < < STACK: EQU BUF2M+128 < < < B U F F E R D E C H A N G E M E N T N O M : < < BUFCM: EQU STACK+LSTACK XBUF: VAL BUFCM-ZERO*2 < @OCTET DE BUFCM. BUFCO: EQU ZERO+XBUF XBUF: VAL BUFCM-ZERO+LMFIC*2 BUFCON: EQU ZERO+XBUF < @OCTET DE BUFCON. < < < 2 E M E V A L I D A T I O N : < < X10: VAL BUFCM-ZERO+LBUFES+2 X10: VAL PILE-X10 ZEROW: EQU ZERO+X10 < ERREUR D'ASSEMBLAGE SI < RECOUVREMENT DE LA PILE < DE SMC... DZS X10+1 EOT #SIP GEN PROCESSEUR#