NMPROC: VAL "TN" < NOM SDU PROCESSEUR. IDP "SIMULATEUR DE TABLEAU NOIR - RELEASE 01/06/1979" 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 < ADRESSE ITEM1 ITEM2: EQU ZERO+PILE-LTNI-LTNI < ADRESSE ITEM2 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 RECORD: EQU IMAG+LIMAG < IMAGE VIDEO DYNAMIQUE. < < 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 : < < IF ORDI-"T",XWOR%,,XWOR% LG: VAL 3*16 < LONGUEUR MOTS DES GRILLES. A: VAL '9249 B: VAL '2492 C: VAL '4924 < < TABLES DE COULEUR : < GR: WORD A;B;C;A;B;C;A;B;C;A;B;C;A;B;C;A GV: WORD C;A;B;C;A;B;C;A;B;C;A;B;C;A;B;C GB: WORD B;C;A;B;C;A;B;C;A;B;C;A;B;C;A;B WORD A;B;C;A;B;C;A;B;C;A;B;C;A;B;C;A WORD C;A;B;C;A;B;C;A;B;C;A;B;C;A;B;C G: DZS LG NG: DZS LG XWOR%: VAL 0 LOCAL LOC: EQU $ < < MESSAGES ET BUFFERS : < MINT: BYTE 2;'6D ASCI "> " REP: WORD 0 MERR: BYTE 3;'6D ASCI "??" M1: BYTE 19;'6D ASCI "ALT-MODE IMMEDIAT!" M2: BYTE 18;'6D ASCI "ALT-MODE DIFFERE! " M3: BYTE 3;" " ASCI "ON" < < 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 DEMIN: WORD '0101 < ENTREE SUR LE TERMINAL. WORD REP-ZERO*2 WORD 1 IF ORDI-"S",XWOR%,,XWOR% NBTVIN: VAL TVIN=0 NBTVIN: VAL 15-NBTVIN STABIL: WORD '8A01 < DEMANDE DIFFUSION IMAGE STATIQUE. WORD IMAG-ZERO*2 WORD LIMAG*2 WORD TVPV < SUR LE VERT A PRIORI. INIMAG: WORD '8A01 < DEMANDE LECTURE IMAGE DYNAMIQUE. WORD RECORD-ZERO*2 WORD LIMAG*2 WORD TVPV+TVIN < SUR LE VERT A PRIORI. 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. AOP: WORD OP < INSTRUCTION VARIABLE OR/AND/EOR. AOPI: WORD OPI < INSTRUCTION VARIABLE ID. A < AOP, MAIS UTILISEE LORS DES < OPERATIONS SOUS ALT-MODES < IMMEDIATS. IF ORDI-"T",XWOR%,,XWOR% AOP2: WORD OP2 < IDEM DANS LE CAS ALT-MODES XWOR%: VAL 0 < IMMEDIATS ET COULEUR. 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. ATIMAG: WORD TIMAG XWOR%: VAL 0 IF ORDI-"S",XWOR%,,XWOR% ADIF: WORD DIFFUS < DIFFUSION D'UNE IMAGE STATIQUE. ADIF3: WORD DIFF3 < DIFFUSION DES 3 IMAGES. AENR: WORD ENREG < LECTURE UNE IMAGE DYNAMIQUE. XWOR%: VAL 0 APRINT: WORD PRINT < EMISSION D'UN MESSAGE. ABACK1: WORD TABLO2 < 1ER RETOUR ALT-MODE, ABACK2: WORD BACK2 < 2EME RETOUR ALT-MODE, AINTER: WORD INTER < ADRESSE D'INTERROGATION. < < 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 NITER: WORD 1 < A PIORI UNE SEULE ITERATION. XNITER: WORD 0 < DECOMPTEUR INITIALISE PAR < NITER; ON N'UTILISE PAS X < AFIN DE NE PAS UTILISER LA < PILE POUR SIMPLIFIER LE < TRAITEMENT DES ALT-MODES... SNITER: WORD 0 < SAVE XNITER. KMAJ: WORD 0 < COMPTEUR UTILISE POUR SAVOIR < A PEU PRES OU APPARAIT UN < ALT-MODE ISOLE... SAVE: WORD 0 < POUR SAUVEGARDER LE CONTENU < DE A POUR ASSURER UNE REPRISE < CORRECTE LORS DES ALT-MODES. XSAVE: WORD 0 < SAVE LE CONTENU DE X. IF ORDI-"T",XWOR%,,XWOR% YSAVE: WORD 0 < SAVE DU REGISTRE Y. XWOR%: VAL 0 IF ORDI-"S",XWOR%,,XWOR% NBCOMP: DZS 1 < NOMBRE DE COMPOSANTES A ENTRER. XWOR%: VAL 0 ALTM: WORD 0 < POUR SAVOIR SI UN ALT-MODE < DOIT ETRE PRIS EN COMPTE < A LA FIN D'UNE BOUCLE DE < TRAITEMENT. IALTM: WORD 1 < 1 : ALT-MODES PRIS EN COMPTE < IMMEDIATEMENT, < 0 : ALT-MODES DIFFERES JUSQU' < A LA FIN DU TRAITEMENT < D'UNE TRAME ENTIERE; < IALTM EST MIS A 0 LORS DE < L'ENTRY DANS LE PROGRAMME. MASKI: WORD 0 < MASQUE D'INVERSION VIDEO (0/-1). < < CONSTANTES DE COULEUR : < IF ORDI-"T",XWOR%,,XWOR% WORK1: WORD 0 < VARIABLE DE TRAVAIL. WORK2: WORD 0 < VARIABLE DE TRAVAIL. ICOL: WORD 0 < 0: NOIR ET BLANC. MOT0: WORD '8880 < MOT DE COULEUR. IGR: WORD 0 < 0 : GR ABSENTE. IGV: WORD 0 < 0 : GV ABSENTE. IGB: WORD 0 < 0 : GB ABSENTE. AGR: WORD GR+LG,X < ACCES A GR. AGV: WORD GV+LG,X < ACCES A GV. AGB: WORD GB+LG,X < ACCES A GB. AG: WORD G+LG,X < ACCES GRILLE GLOBAL G. ANG: WORD NG+LG,X < ACCES A .NOT.G. XWOR%: VAL 0 IF ORDI-"S",XWOR%,,XWOR% COL2: EQU $-1 < IMPORTANT : LES INDIC. DOIVENT SE < SUIVRE OBLIGATOIREMENT !!!!!!!!!! IRO: WORD 0 < ENTREE ROUGE ABSENTE. IVO: WORD 1 < SORTIE VERTE PRESENTE. IBO: WORD 0 < SORTIE BLEUE ABSENTE. COL1: DZS 1 < TRES IMPORTANT !!!!!!1!!!!!!! IRI: WORD 0 < ENTREE ROUGE ABSENTE. IVI: WORD 1 < ENTREE VERTE PRESENTE. IBI: WORD 0 < ENTREE BLEUE ABSENTE. ICOL1: WORD COL1,X ICOL2: WORD COL2,X XWOR%: VAL 0 < < PILES DE TRAVAIL : < APILE: WORD PILE-1 < PILE DE SMC (RETOUR A 'GE'). STACK: DZS 10 < PILE TEMPORAIRE DE TRAVAIL. 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 XWOR%: VAL 0 IF ORDI-"S",XWOR%,,XWOR% < < < D I F F U S I O N D E L ' I M A G E S T A T I Q U E : < < < ARGUMENT: < A=NUMERO DU PROCESSEUR DE DIFFUSION. < < DIFFUS: EQU $ STA STABIL+3 PSR X LAD STABIL SVC 0 PLR X RSR < < < D I F F U S I O N S U R L E S C O M P O S A N T E S < A C T I V E E S : < < DIFF3: EQU $ CPZ IRO < ROUGE VOULU ??? JE DIFF31 < NON LAI TVPR < OUI - LE FAIRE. BSR ADIF DIFF31: EQU $ CPZ IVO < VERT VOULU ??? JE DIFF32 < NON LAI TVPV < OUI - LE FAIRE. BSR ADIF DIFF32: EQU $ CPZ IBO < BLEU VOULU ??? JE DIFF33 < NON LAI TVPB < OUI - LE FAIRE. BSR ADIF DIFF33: EQU $ RSR < < < E N T R E E D E L ' I M A G E D Y N A M I Q U E : < < < ARGUMENT: < A=NUMERO DU PROCESSEUR D'ENTREE. < < ENREG: EQU $ SBT NBTVIN < POSITIONNER L'INDICATEUR IN. STA INIMAG+3 PSR X LAD INIMAG SVC 0 PLR X RSR XWOR%: VAL 0 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 < < < R E T O U R A ' G E ' : < < GOGE: 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. LAD RELMEM SVC 0 < RETOUR A 4K MOTS. < < 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. < < < D E F I N I T I O N D E S C O U L E U R S : < < IF ORDI-"T",XWOR%,,XWOR% RKOLOR: EQU $ LA IGR IBT 15 < INVERSION ETAT ROUGE. STA IGR JMP KOLOR VKOLOR: EQU $ LA IGV IBT 15 < INVERSION ETAT VERT. STA IGV JMP KOLOR BKOLOR: EQU $ LA IGB IBT 15 < INVERSION ETAT BLEU. STA IGB < < MISE A JOUR : < KOLOR: EQU $ JAE KOL1 < ON ENLEVE UNE COULEUR... PSR A LAD M3 BSR APRINT < ENVOI D'UN MESSAGE 'ON'. PLR A JMP KOL2 < ON RAJOUTE UNE COULEUR. KOL1: EQU $ < ON ENLEVE UNE COULEUR. LA IGR OR IGV OR IGB < A=0 : IL N'Y A PLUS DE COULEUR. KOL2: EQU $ < ON RAJOUTE UNE COULEUR. STA ICOL < ICOL=0 : NOIR ET BLANC. JAE KOL3 < ON EST EN NOIR ET BLANC. LA MOT0 < ON EST EN COULEUR. KOL3: EQU $ STA 0,C < MISE EN PLACE DU MOT DE COULEUR. LXI -LG < < GENERATION DE LA GRILLE GLOBALE : < KOL6: EQU $ LA IGR MP &AGR STB WORK1 < WORK1=GR.AND.IGR LA IGV MP &AGV STB WORK2 < WORK2=GV.AND.IGV LA IGB MP &AGB LR B,A < A=GB.AND.IGB OR WORK1 < CUMUL GR.AND.IGR OR WORK2 < CUMUL GV.AND.IGV STA &AG < GRILLE GLOBALE. EORI -1 STA &ANG < ET NEGATION DE G. JIX KOL6 BR AINTER < VERS L'INTERROGATION... XWOR%: VAL 0 IF ORDI-"S",XWOR%,,XWOR% INCOL: EQU $ LAD DEMIN < ENTREE DE LA COMPOSANTE. SVC 0 LBY REP < VERIFICATION. ADRI -'30,A JAL RETERR < ERREUR ... CPI 7 JG RETERR < ERREUR ... LR A,B < SI C'EST 0 OU 4, ANDI 3 JANE INCOL1 ADRI TVPV,B < ON PASSE SUR TVPV OUT OU IN. INCOL1: EQU $ LR B,X < INVERSER LA COMPOSANTE. LA &ICOL2 IBT 15 STA &ICOL2 BR AINTER < VERS L'INTERROGATION. XWOR%: VAL 0 < < < P R O C E S S E U R D E S I M U L A T I O N < D ' U N T A B L E A U N O I R : < < < FONCTION : < CE PROCESSEUR MANIPULE 2 IMAGES : < 1- IMAGE 1 (IMAG) : CETTE IMAGE EST INITIALISEE < ET UTILISEE ENSUITE PAR 'TV'/'TI' , < 2- IMAGE 2 (RECORD) : CETTE IMAGE DYNAMIQUE EST < ENREGISTREE EN PERMANENCE PAR LA CAMERA VIDEO ; < < 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. < < T R A I T E M E N T D E S A L T - M O D E S : < JLE TABLO < CAS DE LA 1ERE ENTREE. CPZ IALTM < DIFFERE OU IMMEDIAT ??? JE INTER < IMMEDIAT... < < CAS DES ALT-MODES A DIFFERER : < IC ALTM < ON FAIT ALTM#0, CELA SERVIRA < SI LE ALT-MODE EST APPARU < A L'INTERIEUR DE LA BOUCLE < DE TRAITEMENT D'IMAGE. LA KMAJ JAE INTER < PAS DE PROBLEME ON VA INTERROGER. TBT 15 < TEST DE LA PARITE DE KMAJ. JC TABLO5 < KMAJ IMPAIR. < < CAS OU LE ALT-MODE EST APPARU APRES 'BACK2' : < LA SNITER STA XNITER < RESTORE XNITER. LA SAVE < RESTORE (A), LX XSAVE < RESTORE (X). IF ORDI-"T",XWOR%,,XWOR% LY YSAVE < RESTORE (Y). XWOR%: VAL 0 BR ABACK2 < VERS LA REPRISE DU TRAITEMENT. < < CAS OU LE ALT-MODE EST APPARU ENTRE BACK1 ET BACK2 : < TABLO5: EQU $ IF ORDI-"T",XWOR%,,XWOR% CPZR X < LE ALT-MODE EST-IL APPARU ENTRE < LES 2 'XR X,Y' ??? JG KOL4 < NON : X>0, Y<=0. XR X,Y < OUI, ON RESTAURE... KOL4: EQU $ XWOR%: VAL 0 BR ABACK1 < RIEN DE SPECIAL... < < < 1 E R E E N T R Y < T A B L E A U N O I R : < < 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 .... LAD DEMMEM SVC 0 < DEMANDE D'ALLOCATION 12K. IF ORDI-"T",XWOR%,,XWOR% LA AIMA2 < MISE EN PLACE DE L'ADRESSE STA &ATIMAG < DE L'IMAGE D'ENREGISTREMENT. XWOR%: VAL 0 JMP XALTM < ALLONS METTRE 'TN' EN MODE < ALT-MODES IMMEDIATS. < < INTERROGATION DE L'UTILISATEUR : < INTER: EQU $ STZ ALTM < RAZ DES ALT-MODES... IF ORDI-"T",XWOR%,,XWOR% LA ASP3 WORD '1EC5 < STABILISATION IMAGE 1. XWOR%: VAL 0 IF ORDI-"S",XWOR%,,XWOR% BSR ADIF3 < DIFFUSION IMAGE 1. XWOR%: VAL 0 LAD MINT BSR APRINT < ENVOI DE L'INVITATION. LAD DEMIN SVC 0 < LECTURE DE LA REPONSE. LAI 1 STA NITER < A PRIRI NITER=1. LBY REP < A=CARACTERE REPONSE UTILISATEUR. < < REPONSES RECONNUES : < F : RETOUR A 'GE' , < = : @DYNAMIQUE=@STATIQUE (IMAGES) , < # : @DYNAMIQUE#@STATIQUE (IMAGES) , < 0 : PAS D'INVERSION VIDEO SUR IMAGE DYNAMIQUE , < 1 : INVERSION VIDEO SUR IMAGE DYNAMIQUE , < N : PAS D'OPERATIONS INTER-IMAGES , < O : 'OR' ENTRE IMAGES STATIQUE ET DYNAMIQUE , < A : 'AND' ENTRE LES 2 IMAGES , < E : 'EOR' ENTRE LES 2 IMAGES. < C : 'EOR' ITERE 2 FOIS ENTRE LES 2 IMAGES, < PERMET DONC DE SIMULER UN CURSEUR. < X : INVERSION DES ALT-MODES DIFFERES/IMMEDIATS. < W : RETOUR AU CCI. < Z : RAZ DE L'IMAGE STATIQUE. IF ORDI-"T",XWOR%,,XWOR% < R : INVERSION ETAT ROUGE, < V : INVERSION ETAT VERT, < B : INVERSION ETAT BLEU. XWOR%: VAL 0 IF ORDI-"S",XWOR%,,XWOR% < V : INVERSION DE LA COMPOSANTE COULEUR < DONT ON RENTRE LE NUMERO DERRIERE : < 0 : EQUIVALENT A 2. < 1 : INVERSION DE L'ETAT SORTIE ROUGE. < 2 : INVERSION DE L'ETAT SORTIE VERT. < 3 : INVERSION DE L'ETAT SORTIE BLEU. < 4 : EQUIVALENT A 6. < 5 : INVERSION DE L'ETAT ENTREE ROUGE. < 6 : INVERSION DE L'ETAT ENTREE VERT. < 7 : INVERSION DE L'ETAT ENTREE BLEU. < L'ETAT INITIAL EST : < ENTREE ET SORTIE VERT ACTIVES, < LES AUTRES INACTIVES. XWOR%: VAL 0 < CPI "W" JE GOCCI < RETOUR TEMPORAIRE AU CCI. CPI "F" JE GOGE < RETOUR A 'GE'. IF ORDI-"T",XWOR%,,XWOR% CPI "R" JE RKOLOR < INVERSION ETAT ROUGE. CPI "V" JE VKOLOR < INVERSION ETAT VERT. CPI "B" JE BKOLOR < INVERSION ETAT BLEU. XWOR%: VAL 0 IF ORDI-"S",XWOR%,,XWOR% CPI "V" JE INCOL < INVERSION COMPOSANTE. XWOR%: VAL 0 CPI "X" JE XALTM < INVERSION DU ALT-MODE. LBI 'B2 < 'OR' A PRIORI. CPI "O" JE TABLO3 < DEMANDE D'UN 'OR'. LBI 'B3 < 'AND' A PRIORI. CPI "A" JE TABLO3 < 'AND' ENTRE LES 2 IMAGES. LBI 'B4 < 'EOR' A PRIORI. CPI "E" JE TABLO3 < 'EOR' ENTRE LES 2 IMAGES. IF ORDI-"T",XWOR%,,XWOR% LBI '1D < 'NOP' A PRIORI , XWOR%: VAL 0 IF ORDI-"S",XWOR%,,XWOR% LBI '24 < 'NOP' A PRIORI , XWOR%: VAL 0 CPI "N" JE TABLO3 < PAS D'OPERATIONS INTER-IMAGES. LBI 0 < PAS D'INVERSION VIDEO A PRIORI. CPI "0" JE GMASK < PAS D'INVERSION VIDEO DYNAMIQUE. LBI -1 < INVERSION VIDEO A PRIORI. CPI "1" JE GMASK < INVERSION VIDEO DYNAMIQUE. LB AIMA1 < @DYNAMIQUE=@STATIQUE A PRIORI. CPI "=" JE GADR < @DYNAMIQUE=@STATIQUE. LB AIMA2 < @DYNAMIQUE#@STATIQUE A PRIORI. CPI "#" JE GADR < @DYNAMIQUE#@STATIQUE. CPI "Z" JE RAZ < INITAILISATION IMAGE STATIQUE. CPI "C" JE CURSOR < SIMULATION D'UN CURSEUR. RETERR: EQU $ LAD MERR BSR APRINT < ENVOI MESSAGE D'EREUR... JMP INTER < RIEN COMPRIS, INTERROGATION... < < INVERSION DES ALT-MODES IMMEDIATS/DIFFERES : < XALTM: EQU $ LAD M1 < MODE IMMEDIAT A PRIORI. LB IALTM IBT 15+16 < INVERSION DU MODE. STB IALTM CPZR B < QUEL EST LE NOUVEAU MODE ??? JE XALTM1 < MODE IMMEDAIAT. LAD M2 < NON, MODE DIFFERE. XALTM1: EQU $ BSR APRINT < ENVOI D'UN MESSAGE... JMP INTER < VERS L'INTERROGATION... < < MISE EN PLACE DE L'@IMAGE DYNAMIQUE : < GADR: EQU $ IF ORDI-"T",XWOR%,,XWOR% STB &ATIMAG < @RELATUIVE DE L'IMAGE DYNAMIQUE. XWOR%: VAL 0 IF ORDI-"S",XWOR%,,XWOR% SLLD 1 STB INIMAG+1 XWOR%: VAL 0 JMP INTER < < MISE EN PLACE DE L'INVERSION VIDEO DYNAMIQUE : < GMASK: EQU $ STB MASKI JMP INTER < < SIMULATION D'UN CURSEUR PAR 2 'EOR' SUCCESSIFS : < CURSOR: EQU $ LAI 2 STA NITER < NITER=2. LBI 'B4 < CODE DE L'EOR'. < < MISE EN PLACE DE L'OPERATION INTER-IMAGES : < TABLO3: EQU $ LR B,A < A=CODE DE L'OPERATION DEMANDEE. STBY &AOP < MISE EN PLACE DE L'INSTRUCTION < VARIABLE INTER-IMAGES. STBY &AOPI < DE MEME POUR LE MODE IMMEDIAT. IF ORDI-"T",XWOR%,,XWOR% STBY &AOP2 < DE MEME IMMEDIAT+COULEUR. XWOR%: VAL 0 LB MASKI < B=MASQUE D'INVERSION VIDEO 0/-1. < < BOUCLE DE SIMULATION DU TABLEAU NOIR : < TABLO1: EQU $ IF ORDI-"S",XWOR%,,XWOR% LAI 3 < ON FAIT LES TROIS COMPOSANTES. STA NBCOMP TABL30: EQU $ LA NBCOMP < DOIT-ON ENTRER CETTE COMPOSANTE ??? LR A,X CPZ &ICOL1 JE TABL31 < NON BSR AENR < ENTREE IMAGE DYNAMIQUE. XWOR%: VAL 0 STZ KMAJ < KMAJ=0. < < ENTREE D'UNE IMAGE DYNAMIQUE : < IF ORDI-"T",XWOR%,,XWOR% LA ASP1 WORD '1EC5 < ENREGISTREMENT MAITRE DE L'2MAGE < DYNAMIQUE (IMAGE 2). BSR AWAIT < ATTENTE DE CHANGEMENT DE TRAME. < RECORD DE L'IMAGE 2. < < VISUALISATION ET MISE A JOUR DE L'2MAGE 1 (STATIQUE) : < LA ASP2 WORD '1EC5 < DIFFUSION MAITRE DE L'IMAGE 1. < < MISE A JOUR : < XWOR%: VAL 0 CPZ IALTM < TEST DU MODE COURANT... JE TABL10 < CAS DU MODE IMMEDIAT... IF ORDI-"T",XWOR%,,XWOR% BSR AWAIT < ATTENTE DE CHANGEMENT DE TRAME. XWOR%: VAL 0 < < CAS DU ALT-MODE DIFFERE : < LA NITER STA XNITER < INITIALISATION COMPTEUR. TABLO4: EQU $ LA XNITER STA SNITER < SAVE XNITER. LXI 1 < X=INDEX MOT. IF ORDI-"T",XWOR%,,XWOR% CPZ ICOL < EST-ON EN COULEUR ??? JE COL2 < NON, X=1. LXI 2 < OUI, X=2, ON SAUTE LE MOT < DE COULEUR... LYI -LG+1 < Y=INDEX D'ACCES A GR/GV/GB. COL2: EQU $ XWOR%: VAL 0 TABLO2: EQU $ IC KMAJ < KMAJ IMPAIR. LA &AIMAG2 < ACCES A L'IMAGE DYNAMIQUE. EOR MASKI < INVERSION VIDEO EVENTUELLE DE < L'IMAGE DYNAMIQUE. IF ORDI-"T",XWOR%,,XWOR% < < COLORIAGE EVENTUEL : < CPZ ICOL < NOIR ET BLANC ??? JE COL3 < ET OUI... XR X,Y < SAVE (X), ET X=INDEX GR/GV/GB. AND &AG < A=IMAGE DYNAMIQUE COLORIEE. LR A,B < ET SAVE DANS B. LA &ANG XR X,Y STY YSAVE < SAVE (Y). AND &AIMAG1 < A=RESIDU IMAGE STATIQUE. ORR B,A < A=MODIFICATION A APPORTER < A L'IMAGE STATIQUE. COL3: EQU $ XWOR%: VAL 0 OP: OR &AIMAG1 < QUE L'ON MODIFIE PAR L'IMAGE < STATIQUE EVENTUELLEMENT ... STX XSAVE < SAVE (X), STA SAVE < SAVE (A). IC KMAJ < KMAJ PAIR. BACK2: EQU $ < POINT DE RETOUR 2 DES ALT-MODES. STA &AIMAG1 < MAJ DE L'2MAGE 1. IF ORDI-"T",XWOR%,,XWOR% ADRI 1,Y CPZR Y JL COL1 LYI -LG < REINITIALISATION A CHAQUE < PASSAGE A 0. COL1: EQU $ XWOR%: VAL 0 ADRI 1,X < INDEX MOT. LR X,A CP ALIMAG < EST-ON AU BOUT ??? JLE TABLO2 < NON, AU SUIVANT. DC XNITER < DECOMPTE DES ITERATIONS. JG TABLO4 < ENCORE UNE... IF ORDI-"S",XWOR%,,XWOR% BSR ADIF3 < DIFFUSION IMAGE. TABL31: EQU $ DC NBCOMP < COMPOSANTE SUIVANTE. JG TABL30 XWOR%: VAL 0 STZ KMAJ < KMAJ=0... CPZ ALTM < FAUT-IL ARRETER LE TRAITEMENT ??? JE TABLO1 < NON, ON BOUCLE JUSQU'A CE < QU'UN ALT-MODE NE VIENNE < ARRETER TOUT CELA. BR AINTER < ET OUI, ARRET.... < < CAS DU ALT-MODE IMMEDIAT : < TABL10: EQU $ IF ORDI-"T",XWOR%,,XWOR% CPZ ICOL < COULEUR OU NOIR ET BLANC ??? JNE TABL20 < COULEUR... XWOR%: VAL 0 < < CAS DU ALT-MODE IMMEDIAT ET NOIR ET BLANC : < LX ALIMAG < X=NBRE DE MOTS A TRAITER... TABL11: EQU $ LA &AIMAG2 < ACCES IMAGE DYNAMIQUE. EORR B,A < INVERSION EVENTUELLE. OPI: OR &AIMAG1 < INSTRUCTION VARIABLE DE < MISE A JOUR DE L'IMAGE < STATIQUE. STA &AIMAG1 < MAJ IMAGE STATIQUE. JDX TABL11 < MOT PRECEDENT... IF ORDI-"S",XWOR%,,XWOR% BSR ADIF3 < DIFFUSION IMAGE. DC NBCOMP < COMPOSANTE SUIVANTE. JG TABL30 XWOR%: VAL 0 JMP TABLO1 < ET ON ITERE JUSQU'A CE < QU'UN ALT-MODE IMMEDIAT < N'APPARAISSE... < < < R A Z I M A G E S T A T I Q U E : < < RAZ: EQU $ LX ALIMAG < X=NBRE DE MOTS A RAZER. LA MASKI < A=VALEUR A DONNER A L'IMAGE < STATIQUE. RAZ1: EQU $ STA &AIMAG1 < INITIALISATION IMAGE < STATIQUE. JDX RAZ1 IF ORDI-"T",XWOR%,,XWOR% CPZ ICOL < NOIR ET BLANC OU COULEUR ??? JE RAZ2 < NOIR ET BALNC. LA MOT0 < DANS LE CAS DE LA COULEUR, IL STA 0,C < FAUT RESTAURER LE MOT DE COULEUR. RAZ2: EQU $ XWOR%: VAL 0 IF ORDI-"S",XWOR%,,XWOR% BSR ADIF3 < DIFFUSION IMAGE. XWOR%: VAL 0 BR AINTER < ET C'EST TOUT... IF ORDI-"T",XWOR%,,XWOR% < < CAS DU ALT-MODE IMMEDIAT ET COULEUR : < TABL20: EQU $ LXI 2 < POUR DEPASSER LE MOT DE COULEUR.... LYI -LG+1 < INDEX DES GRILLES. TABL21: EQU $ LA &AIMAG2 < A=IMAGE DYNAMIQUE. EOR MASKI < INVERSION EVENTUELLE. XR X,Y < X=INDEX GRILLE. AND &AG < A=DYNAMIQUE COLORIEE. LR A,B < SAVE DANS B. LA &ANG XR X,Y < X=INDEX IMAGES. AND &AIMAG1 < A=RESIDU IMAGE STATIQUE. ORR B,A OP2: OR &AIMAG1 < MODIFICATION IMAGE STATIQUE. STA &AIMAG1 < MAJ IMAGE STATIQUE. ADRI 1,Y < INDEX GRILLE. CPZR Y JL TABL25 < Y<0. LYI -LG < Y=-LG SI Y=0. TABL25: EQU $ ADRI 1,X LR X,A < INDEX IMAGES. CP ALIMAG < EST-CE FINI ??? JLE TABL21 < NON... JMP TABLO1 < VERS LA TRAME SUIVANTE... XWOR%: VAL 0 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#