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#
Copyright © Jean-François COLONNA, 2022-2024.
Copyright © CMAP (Centre de Mathématiques APpliquées) UMR CNRS 7641 / École polytechnique, Institut Polytechnique de Paris, 2022-2024.