NMPROC: VAL "VA" < NOM DU PROCESSEUR.
IDP "VA - RELEASE 01/06/1979"
IDP "JOHN F. COLONNA"
PROG
PAGE
EOT #SIP DEFINITION CMS5#
EOT #SIP DEF PROCESSEUR#
PROG
WORD IMAGE < ENTRY POINT DU GENERATEUR.
WORD 0
PIMAGE: EQU $ < P='12 !!!
LRP L
BR -2,L < ENTRY DANS LE PROCESSEUR.
EOT #SIP DEFINITION ITEM#
ITEM1: EQU ZERO+PILE-LTNI < @ITEM1.
PAGE
EOT #SIP IMAGE 256#
IMAG: EQU ZERO+PILE+5 < IMAGE VIDEO.
NOM: EQU ITEM1 < LE NOM DE L'IMAGE VIDEO RECOUVRE
< L'EN-TETE DE L'ITEM1.
EOT: EQU IMAG-2
LONG: EQU IMAG-1 < DOIT CONTENIR -1,-2,-3 SI
< L'IMAGE EST BIEN VIDEO.
PAGE
<
<
< L O C A L :
<
<
LOCAL
LOC: EQU $
<
< LISTE DES CARACTERES DE REPRESENTATION DE COMPTAGE :
<
MCAR2: BYTE 35;'6D
ASCI "#VOISINS"
BYTE "=";'6D
ASCI "0123456789"
BYTE " ";'6D
LCAR2: EQU $
ASCI " ." < 0 1 VOISINS,
ASCI ":-" < 2 3 VOISINS,
ASCI "+=" < 4 5 VOISINS,
ASCI "H*" < 6 7 VOISINS,
BYTE "$";'40 < 8 9 VOISINS.
LLCAR2: VAL $-LCAR2*2
BYTE " ";'6D
IF LLCAR2-10,,X100,
IF ERREUR D'ASSEMBLAGE VOLONTAIRE !!!
X100: VAL 0
<
< BUFFER ET MESSAGES :
<
CURSOR: BYTE "N";0 < CURSEUR GRAPHIQUE DE LA VISU :
< OCTET0=CARACTERE DE DEBLOCAGE ,
< (NON A PRIORI...)
WORD 0 < MOT1=Y(CURSEUR GRAPHIQUE) ,
WORD 0 < MOT2=X(CURSEUR GRAPHIQUE).
SEG: WORD 0;0 < POUR (TY,TX) DE POSITIONNEMENT.
Y: VAL 0
X: VAL 1
MNOM: BYTE 5;'6D
ASCI "NOM>"
MINT: BYTE 2;'6D;">";0
REP: WORD 0 < REPONSE DE REDUCTION.
WORD 0 < POUR LES ENTREES DE SEUILS.
AMRED: WORD MRED
AMPAS: WORD MPAS
AMEFFA: WORD MEFFAC
AMCOPY: WORD MCOPY
AMTR: WORD MTR
AMMAT: WORD MMAT-1,X
MDEL: BYTE 7;'6D
ASCI "DX/DY="
AMPERX: WORD MPERX
AMPERY: WORD MPERY
AP: WORD MF < MESSAGES DE PERMUTATION BITS X/Y.
MERR: BYTE 3;'6D;"?";"?"
MCAR: WORD 0 < CARACTERE DE MATERIALISATION
< D'UN POINT VIDEO.
<
< DEMANDES A CMS4 :
<
DEMIN: WORD '0101 < LECTURE DU NOM DE L'IMAGE.
WORD NOM-ZERO*2
WORD LNOM*2
DEMREP: WORD '0101 < LECTURE DU FACTEUR DE REDUCTION.
WORD REP-ZERO*2
WORD 1 < 1 CARACTERE.
DEMSE: WORD '0101 < ENTREE DES SEUILS.
WORD REP-ZERO*2
WORD 3 < SOUS FORME DE 3 CARACTERES
< HEXADECIMAUX.
DEMOUT: WORD '0202 < EDITION MESSAGE.
WORD 0 < @OCTET DU MESSAGE.
WORD 0 < LONGUEUR DU MESSAGE.
DEMCAR: WORD '0B02 < EMISSION DU CARACTERE
WORD MCAR-ZERO*2 < REPRESENTATIF D'UN POINT
WORD 1 < VIDEO.
CAR2I: WORD '0101 < ENTREE DE LCAR2.
WORD LCAR2-ZERO*2
WORD LLCAR2
ERASE: WORD '0B05 < EFFACEMENT ECRAN VISU.
OG: WORD '0B03 < OPEN GRAPHIQUE VISU EMISSION.
CG: WORD '0B04 < CLOSE GRAPHIQUE VISU EMISSION.
WG: WORD '0B0A < AFFICHAGE SEGMENT COURANT.
WORD SEG-ZERO*2
WORD 4
COPY: WORD '0B07 < ECRITURE DIRECTE HARD-COPY.
BYTE '1B;'17;'8D;'04 < ESC,CTRL-W,R/C.
DEMMEM: WORD '0004 < DEMANDE D'ALLOCATION 8K MOTS.
WORD 0
WORD '4000
RELMEM: WORD '0004 < DEMANDE DE RETOUR A 4K MOTS.
WORD 0
WORD '2000
DEMCCI: WORD '0001 < DEMANDE DE RETOUR AU CCI.
SLEEP: WORD '0005 < DEMANDE MISE EN SOMMEIL.
WORD 0
WORD 15 < POUR 15 SECONDES.
SGN: WORD '0002 < ACCES A L'IMAGE VIDEO.
WORD NOM-ZERO*2
WORD IMAG-NOM+LIMAG*2
WORD EOT-NOM*2 < DEPLACEMENT D'ACCES A LA VALEUR.
DEMSGN: WORD '0402 < DEMANDE SGN OVERLAY.
WORD BRANCH-ZERO*2
WORD ZERO-BRANCH+PILE-LTNI-LTNI*2
WORD -1
IF ORDI-"S",XWOR%,,XWOR%
STABIL: WORD '8A01 < STABILISATION IMAGE VIDEO.
WORD IMAG-ZERO*2
WORD LIMAG*2
WORD TVPV < SUR LE PROCESSEUR VERT.
XWOR%: VAL 0
<
< RELAIS DIVERS :
<
IF ORDI-"T",XWOR%,,XWOR%
ASP3: WORD SP3 < ROUTINE MAITRE DE STABILISATION
< DE L'IMAGE VIDEO.
XWOR%: VAL 0
AGOGE: WORD GOGE < RETOUR A 'GE'.
AOVL: WORD OVL < CHARGEMENT DES OVERLAYS.
APRINT: WORD PRINT < EDITION D'UN MESSAGE.
ARCOPY: WORD RCOPY < ROUTINE DE HARD-COPY EVENTUEL
< ET TEMPORISATION ASSOCIEE.
AGETS: WORD GETS < RECUPERATION DES SEUILS.
ACARD: WORD CARD < ROUTINE DIRECTIONS CARDINALES.
ATEST: WORD TEST < TEST DU POINT COURANT (X,Y).
AEXIST: WORD EXIST < EXISTENCE ET VALEUR D'UN POINT.
AINCX: WORD INCX < INCREMENTATION DE X.
AINCY: WORD INCY < INCREMENTATION DE Y.
ADECX: WORD DECX < DECREMENTATION DE X.
ADECY: WORD DECY < DECREMENTATION DE Y.
ATRF: WORD TRF < ROUTINE D'OPERATION MATRICIELLE
< SUR LES COORDONNEES X,Y.
ASEG: WORD SEG < RELAI VERS LA LISTE DES
< COORDONNEES Y,X DU POINT
< COURANT.
ALCAR1: WORD LCAR1,X
ALCAR2: WORD LCAR2,X
LOCAR1: WORD LLCAR1 < LONGUEUR DE LCAR1.
< CARACTERES DE REPRESENTA-
< TION DES POINTS VIDEO.
I1: WORD ITEM1 < @EN-TETE DE L'ITEM1.
ASI1: WORD SI1 < @ZONE DE SAVE DE L'EN-TETE ITEM1.
SI1: DZS LNOM+2 < ZONE DE SAVE EN-TETE ITEM1.
AIMAG: WORD IMAG-1,X < POUR ACCES A L'IMAGE PAR JDX.
ALONG: WORD LONG < POUR VALIDER L'IMAGE VIDEO.
AREP: WORD REP,X < POUR CONVERSION DES SEUILS.
AE1003: WORD E1003 < CAS DES POINTS NOIRS (0).
AE1001: WORD E1001 < SUITE BALAYAGE VERTICAL.
AE1002: WORD E1002 < POURSUITE DU BALYAGE.
< (HORIZONTAL)
AMESS: WORD 0 < SAVE L'ADRESSE DU MESSAGE A
< L'ENTREE DE GETS EN VUE DES
< ERREURS DE SYNTAXE ...
<
< CONSTANTE D'UN ITEM 'TEXTE' :
<
AITEM1: WORD ITEM1+LTN,X < ACCES AU CONTENU DE ITEM1.
XITEM1: WORD 0 < INDEX COURANT DE ITEM1.
KITEM1: WORD 0 < CARACTERE D'ARRET D'EXPLORATION
< DE L'ITEM (OCTET0 DE ITEM1).
TITEM1: WORD SI1+IINDIC < ACCES AU TYPE DE L'ITEM1
< DANS LA ZONE DE SAUVE-
< GARDE DE SON EN-TETE.
NCP: WORD NBCAR*NBLIG < NBRE DE CARACTERES/PAGE.
<
< CONSTANTES :
<
KIN: WORD -1 < COMPTEUR DES ENTREES DANS 'VG'.
IS: WORD 0 < IS=0 : L'EN-TETE DE L'ITEM1 N'A
< PAS ETE SAUVEGARDEE.
IF ORDI-"T",XWOR%,,XWOR%
ACNSYS: ASCI ":SYS"
XWOR%: VAL 0
IMOD: WORD 0 < MODE DE REPRODUCTION :
< -1 : A L'AIDE DE ITEM1,
< 0 : PAR CONFIGURATION,
< 1 : PAR COMPTAGE.
REDUC: WORD 0 < FACTEUR DE REDUCTION=0/-1/-2.
KPOINT: WORD 0 < COMPTEUR DES POINTS VOISINS DU
< POINT COURANT RENCONTRES DANS
< LES DIRECTIONS CARDINALES.
NGE: WORD "GE" < NOM DE L'OVERLAY 'GE'.
ALIMAG: WORD LIMAG < NBRE DE MOTS OCCUPES PAR L'IMAGE.
NMPL: WORD CNMPL < NBRE DE MOTS DE 16 BITS/LIGNE.
NLIG: WORD 1024/DY-1 < NBRE DE LIGNES/IMAGE -1.
NPOINT: WORD CNMPL*16-1 < NBRE DE POINTS/LIGNE-1.
M101: WORD '0101 < POUR FAIRE A=B='01.
DELTAX: WORD 0 < DELTAX=ABS(X-X(1ER POINT)).
DELTAY: WORD 0 < DELTAY=ABS(Y-Y(1ER POINT)).
SEUIL: WORD 0 < SEUIL DE TEST DE DELTAX+DELTAY.
SEUILX: WORD 0 < SEUIL DE TEST DE DELATX.
SEUILY: WORD 0 < SEUIL DE TEST DE DELTAY.
PLIG: WORD 1 < PAS DE PASSAGE D'UNE LIGNE
< A L'AUTRE.
PCOL: WORD 1 < PAS DE PASSAGE D'UN POINT A
< A L'AUTRE SUR UNE LIGNE.
DELX: WORD 1 < PAS IMPLICITE DE VARIATION DE X.
DELY: WORD 1 < PAS IMPLICITE DE VARIATION DE Y.
PATER: WORD 0 < MOT CONTENANT LA CONFIGU-
< RATION DES VOISINS D'UN
< POINT COURANT.
<
< ACCES EVENTUEL AU CURSEUR GRAPHIQUE :
<
OGT: WORD '0B03 < NE PAS UTILISER OG , CAR SINON
< RISQUE D'ERREUR SUR LE NVP
< SI ON NE RENTRE PAS DE
< TRANSFORMATION !!!
CU: WORD '0B06 < MISE EN FONCTION DU CURSEUR
WORD 0 < GRAPHIQUE : IL FAUT AMDEM=0 !!!
LG: WORD '0B09 < LECTURE DU CURSEUR GRAPHIQUE.
WORD CURSOR-ZERO*2
WORD 6
<
< PERMUTATION DES BITS D'UN MOT X/Y :
<
INDPEX: WORD 1 < 1 : NE PAS PERMUTER LES BITS(X) ,
< 0 : LES PERMUTER SUIVANT 'PERX'.
INDPEY: WORD 1 < DE MEME POUR LES BITS(Y).
APERX: WORD PERX-1,X < MATRICE DE PERMUTATION DES
< BITS D'UNE COORDONNEE X.
APERY: WORD PERY-1,X < DE MEME POUR LES COORDONNEES Y.
<
< MATRICE DE TRANSFORMATION :
<
MAT: EQU $
DM22: WORD 0
M22: WORD 0
DM21: WORD 0
M21: WORD 0
DM12: WORD 0
M12: WORD 0
DM11: WORD 0
M11: WORD 0
TY: WORD 0 < VECTEUR TRANSLATION SUR LES Y.
TX: WORD 0 < VECTEUR TRANSLATION SUR LES X.
AMAT: WORD MAT-1,X < POUR INITIALISER LA MATRICE.
INDTR: WORD 0 < 0 : APPLIQUER LA MATRICE DE
< TRANSFORMATION SUR L'IMAGE
< GRAPHIQUE ; 1 : NON.
SAVEX: WORD 0 < SAVE X A L'INITIALISATION DE
< LA MATRICE DE TRANSFORMATION.
C1023: WORD 1024-1 < X/Y MAX DE L'ECRAN.
<
< PILES DE TRAVAIL :
<
APILE: WORD PILE-1 < PILE DE SODOME.
STACK: DZS 10 < PILE DE TRAVAIL.
<
< SUITE DES MESSAGES (ICI A CAUSE DE SEG-ZERO UTILISEE DANS UN CPI) :
<
MMOD: BYTE 45;'6D
ASCI "MODE (0=TEXTE, 1=CONFIGURATION, 2=COMPTAGE)="
MCHG: BYTE 6;'6D
ASCI "CHGT? "
MEFFAC: BYTE 7;'6D
ASCI "ERASE?"
MCOPY: BYTE 6;'6D
ASCI "COPY? "
MTRAX: BYTE 4;'6D
ASCI "TX= "
MTRAY: BYTE 4;'6D
ASCI "TY= "
MTR: BYTE 7;'6D
ASCI "TRANS?"
MSLA: BYTE 1;"/"
MM11: BYTE 5;'6D
ASCI "M11="
MM12: BYTE 5;'6D
ASCI "M12="
MM21: BYTE 5;'6D
ASCI "M21="
MM22: BYTE 5;'6D
ASCI "M22="
MMAT: EQU $
WORD MSLA;MM22
WORD MSLA;MM21
WORD MSLA;MM12
WORD MSLA;MM11
WORD MTRAY;MTRAX
MPAS: BYTE 9;'6D
ASCI "PAS L/C="
MRED: BYTE 7;'6D
ASCI "REDUC="
MPERX: BYTE 4;'6D
ASCI "PX? "
MPERY: BYTE 4;'6D
ASCI "PY? "
M0: BYTE 3;'6D
ASCI "0="
M1: BYTE 3;'6D
ASCI "1="
M2: BYTE 3;'6D
ASCI "2="
M3: BYTE 3;'6D
ASCI "3="
M4: BYTE 3;'6D
ASCI "4="
M5: BYTE 3;'6D
ASCI "5="
M6: BYTE 3;'6D
ASCI "6="
M7: BYTE 3;'6D
ASCI "7="
M8: BYTE 3;'6D
ASCI "8="
M9: BYTE 3;'6D
ASCI "9="
MA: BYTE 3;'6D
ASCI "A="
MB: BYTE 3;'6D
ASCI "B="
MC: BYTE 3;'6D
ASCI "C="
MD: BYTE 3;'6D
ASCI "D="
ME: BYTE 3;'6D
ASCI "E="
MF: BYTE 3;'6D
ASCI "F="
LMESS: VAL MF-ME < LONGUEUR DE TOUS LES MESSAGES
< RELATIFS AU PERMUTATIONS X/Y.
< LISTE DES CARACTERES DE REPRESENTATION :
<
LCAR1: EQU $
ASCI " ." < 000 000 000 000 000 001
ASCI ".-" < 000 000 010 000 000 011
ASCI ".-" < 000 000 100 000 000 101
ASCI "--" < 000 000 110 000 000 111
ASCI ".:" < 000 001 000 000 001 001
ASCI ",;" < 000 001 010 000 001 011
ASCI ";;" < 000 001 100 000 001 101
ASCI "--" < 000 001 110 000 001 111
ASCI ".:" < 000 010 000 000 010 001
ASCI ":;" < 000 010 010 000 010 011
ASCI ";+" < 000 010 100 000 010 101
ASCI ";+" < 000 010 110 000 010 111
ASCI "-+" < 000 011 000 000 011 001
ASCI "++" < 000 011 010 000 011 011
ASCI "++" < 000 011 100 000 011 101
ASCI "++" < 000 011 110 000 011 111
ASCI ".:" < 000 100 000 000 100 001
ASCI ":;" < 000 100 010 000 100 011
ASCI ":;" < 000 100 100 000 100 101
ASCI "++" < 000 100 110 000 100 111
ASCI ".-" < 000 101 000 000 101 001
ASCI "++" < 000 101 010 000 101 011
ASCI "+=" < 000 101 100 000 101 101
ASCI "==" < 000 101 110 000 101 111
ASCI "-;" < 000 110 000 000 110 001
ASCI ";=" < 000 110 010 000 110 011
ASCI "==" < 000 110 100 000 110 101
ASCI "==" < 000 110 110 000 110 111
ASCI "-=" < 000 111 000 000 111 001
ASCI "+=" < 000 111 010 000 111 011
ASCI "+=" < 000 111 100 000 111 101
ASCI "==" < 000 111 110 000 111 111
ASCI ".:" < 001 000 000 001 000 001
ASCI ":;" < 001 000 010 001 000 011
ASCI ";+" < 001 000 100 001 000 101
ASCI "++" < 001 000 110 001 000 111
ASCI ":)" < 001 001 000 001 001 001
ASCI "))" < 001 001 010 001 001 011
ASCI "/)" < 001 001 100 001 001 101
ASCI "//" < 001 001 110 001 001 111
ASCI ":/" < 001 010 000 001 010 001
ASCI "//" < 001 010 010 001 010 011
ASCI "//" < 001 010 100 001 010 101
ASCI "//" < 001 010 110 001 010 111
ASCI "++" < 001 011 000 001 011 001
ASCI "!!" < 001 011 010 001 011 011
ASCI "//" < 001 011 100 001 011 101
ASCI "/<" < 001 011 110 001 011 111
ASCI ";<" < 001 100 000 001 100 001
ASCI "<<" < 001 100 010 001 100 011
ASCI "/<" < 001 100 100 001 100 101
ASCI "/<" < 001 100 110 001 100 111
ASCI "++" < 001 101 000 001 101 001
ASCI "++" < 001 101 010 001 101 011
ASCI "++" < 001 101 100 001 101 101
ASCI "//" < 001 101 110 001 101 111
ASCI "=+" < 001 110 000 001 110 001
ASCI "++" < 001 110 010 001 110 011
ASCI "+<" < 001 110 100 001 110 101
ASCI "<<" < 001 110 110 001 110 111
ASCI "+<" < 001 111 000 001 111 001
ASCI "+<" < 001 111 010 001 111 011
ASCI "/<" < 001 111 100 001 111 101
ASCI "<<" < 001 111 110 001 111 111
ASCI ".:" < 010 000 000 010 000 001
ASCI ":;" < 010 000 010 010 000 011
ASCI ":;" < 010 000 100 010 000 101
ASCI ";+" < 010 000 110 010 000 111
ASCI ":;" < 010 001 000 010 001 001
ASCI ";;" < 010 001 010 010 001 011
ASCI ">>" < 010 001 100 010 001 101
ASCI ">>" < 010 001 110 010 001 111
ASCI ":;" < 010 010 000 010 010 001
ASCI "!!" < 010 010 010 010 010 011
ASCI "!!" < 010 010 100 010 010 101
ASCI "))" < 010 010 110 010 010 111
ASCI "++" < 010 011 000 010 011 001
ASCI "++" < 010 011 010 010 011 011
ASCI "))" < 010 011 100 010 011 101
ASCI ">>" < 010 011 110 010 011 111
ASCI ":;" < 010 100 000 010 100 001
ASCI "<<" < 010 100 010 010 100 011
ASCI "((" < 010 100 100 010 100 101
ASCI "(<" < 010 100 110 010 100 111
ASCI "++" < 010 101 000 010 101 001
ASCI "++" < 010 101 010 010 101 011
ASCI "++" < 010 101 100 010 101 101
ASCI "++" < 010 101 110 010 101 111
ASCI "++" < 010 110 000 010 110 001
ASCI "++" < 010 110 010 010 110 011
ASCI "(<" < 010 110 100 010 110 101
ASCI "<<" < 010 110 110 010 110 111
ASCI "+<" < 010 111 000 010 111 001
ASCI "++" < 010 111 010 010 111 011
ASCI "<<" < 010 111 100 010 111 101
ASCI "<<" < 010 111 110 010 111 111
ASCI "-+" < 011 000 000 011 000 001
ASCI ";;" < 011 000 010 011 000 011
ASCI ";+" < 011 000 100 011 000 101
ASCI "//" < 011 000 110 011 000 111
ASCI "==" < 011 001 000 011 001 001
ASCI "++" < 011 001 010 011 001 011
ASCI "++" < 011 001 100 011 001 101
ASCI ">>" < 011 001 110 011 001 111
ASCI "+?" < 011 010 000 011 010 001
ASCI "??" < 011 010 010 011 010 011
ASCI ">?" < 011 010 100 011 010 101
ASCI ">>" < 011 010 110 011 010 111
ASCI "=<" < 011 011 000 011 011 001
ASCI "))" < 011 011 010 011 011 011
ASCI ">>" < 011 011 100 011 011 101
ASCI "//" < 011 011 110 011 011 111
ASCI "/<" < 011 100 000 011 100 001
ASCI "+<" < 011 100 010 011 100 011
ASCI "<<" < 011 100 100 011 100 101
ASCI "<<" < 011 100 110 011 100 111
ASCI "=?" < 011 101 000 011 101 001
ASCI "++" < 011 101 010 011 101 011
ASCI "<<" < 011 101 100 011 101 101
ASCI "ZZ" < 011 101 110 011 101 111
ASCI "=?" < 011 110 000 011 110 001
ASCI "<<" < 011 110 010 011 110 011
ASCI "<<" < 011 110 100 011 110 101
ASCI "&&" < 011 110 110 011 110 111
ASCI "=?" < 011 111 000 011 111 001
ASCI "??" < 011 111 010 011 111 011
ASCI "??" < 011 111 100 011 111 101
ASCI "ZZ" < 011 111 110 011 111 111
ASCI ".:" < 100 000 000 100 000 001
ASCI ":;" < 100 000 010 100 000 011
ASCI ":;" < 100 000 100 100 000 101
ASCI "\\" < 100 000 110 100 000 111
ASCI "-\" < 100 001 000 100 001 001
ASCI ">>" < 100 001 010 100 001 011
ASCI ">>" < 100 001 100 100 001 101
ASCI ">>" < 100 001 110 100 001 111
ASCI "=\" < 100 010 000 100 010 001
ASCI "\\" < 100 010 010 100 010 011
ASCI ">>" < 100 010 100 100 010 101
ASCI "LL" < 100 010 110 100 010 111
ASCI "=\" < 100 011 000 100 011 001
ASCI "\\" < 100 011 010 100 011 011
ASCI "!L" < 100 011 100 100 011 101
ASCI "LL" < 100 011 110 100 011 111
ASCI ":\" < 100 100 000 100 100 001
ASCI "\\" < 100 100 010 100 100 011
ASCI "!L" < 100 100 100 100 100 101
ASCI "LL" < 100 100 110 100 100 111
ASCI "=\" < 100 101 000 100 101 001
ASCI "\\" < 100 101 010 100 101 011
ASCI ">>" < 100 101 100 100 101 101
ASCI "44" < 100 101 110 100 101 111
ASCI "=\" < 100 110 000 100 110 001
ASCI "\\" < 100 110 010 100 110 011
ASCI "!L" < 100 110 100 100 110 101
ASCI "LL" < 100 110 110 100 110 111
ASCI "=\" < 100 111 000 100 111 001
ASCI "**" < 100 111 010 100 111 011
ASCI ">>" < 100 111 100 100 111 101
ASCI ">L" < 100 111 110 100 111 111
ASCI "-\" < 101 000 000 101 000 001
ASCI "++" < 101 000 010 101 000 011
ASCI "??" < 101 000 100 101 000 101
ASCI "22" < 101 000 110 101 000 111
ASCI "=?" < 101 001 000 101 001 001
ASCI "77" < 101 001 010 101 001 011
ASCI "72" < 101 001 100 101 001 101
ASCI "22" < 101 001 110 101 001 111
ASCI "+?" < 101 010 000 101 010 001
ASCI "??" < 101 010 010 101 010 011
ASCI ">>" < 101 010 100 101 010 101
ASCI "FE" < 101 010 110 101 010 111
ASCI "??" < 101 011 000 101 011 001
ASCI "22" < 101 011 010 101 011 011
ASCI "FE" < 101 011 100 101 011 101
ASCI "EE" < 101 011 110 101 011 111
ASCI "=?" < 101 100 000 101 100 001
ASCI "??" < 101 100 010 101 100 011
ASCI "FE" < 101 100 100 101 100 101
ASCI "EE" < 101 100 110 101 100 111
ASCI "=?" < 101 101 000 101 101 001
ASCI "YY" < 101 101 010 101 101 011
ASCI "YH" < 101 101 100 101 101 101
ASCI "YU" < 101 101 110 101 101 111
ASCI "=\" < 101 110 000 101 110 001
ASCI "TT" < 101 110 010 101 110 011
ASCI "FE" < 101 110 100 101 110 101
ASCI "EE" < 101 110 110 101 110 111
ASCI "=?" < 101 111 000 101 111 001
ASCI "YY" < 101 111 010 101 111 011
ASCI "FE" < 101 111 100 101 111 101
ASCI "EE" < 101 111 110 101 111 111
ASCI "-\" < 110 000 000 110 000 001
ASCI "=\" < 110 000 010 110 000 011
ASCI "!\" < 110 000 100 110 000 101
ASCI "==" < 110 000 110 110 000 111
ASCI "=\" < 110 001 000 110 001 001
ASCI "??" < 110 001 010 110 001 011
ASCI "FE" < 110 001 100 110 001 101
ASCI "EE" < 110 001 110 110 001 111
ASCI "=\" < 110 010 000 110 010 001
ASCI "TT" < 110 010 010 110 010 011
ASCI "FE" < 110 010 100 110 010 101
ASCI "FE" < 110 010 110 110 010 111
ASCI "=\" < 110 011 000 110 011 001
ASCI "TZ" < 110 011 010 110 011 011
ASCI "FE" < 110 011 100 110 011 101
ASCI "EE" < 110 011 110 110 011 111
ASCI "=\" < 110 100 000 110 100 001
ASCI "TZ" < 110 100 010 110 100 011
ASCI "!L" < 110 100 100 110 100 101
ASCI "LL" < 110 100 110 110 100 111
ASCI "=?" < 110 101 000 110 101 001
ASCI "YY" < 110 101 010 110 101 011
ASCI "FE" < 110 101 100 110 101 101
ASCI "EE" < 110 101 110 110 101 111
ASCI "=\" < 110 110 000 110 110 001
ASCI "KK" < 110 110 010 110 110 011
ASCI "FE" < 110 110 100 110 110 101
ASCI "$$" < 110 110 110 110 110 111
ASCI "=H" < 110 111 000 110 111 001
ASCI "YH" < 110 111 010 110 111 011
ASCI "FE" < 110 111 100 110 111 101
ASCI "EE" < 110 111 110 110 111 111
ASCI "-?" < 111 000 000 111 000 001
ASCI "=?" < 111 000 010 111 000 011
ASCI "TC" < 111 000 100 111 000 101
ASCI "TC" < 111 000 110 111 000 111
ASCI "=\" < 111 001 000 111 001 001
ASCI "22" < 111 001 010 111 001 011
ASCI "22" < 111 001 100 111 001 101
ASCI "22" < 111 001 110 111 001 111
ASCI "TT" < 111 010 000 111 010 001
ASCI "TT" < 111 010 010 111 010 011
ASCI "TE" < 111 010 100 111 010 101
ASCI "TE" < 111 010 110 111 010 111
ASCI "TT" < 111 011 000 111 011 001
ASCI "PP" < 111 011 010 111 011 011
ASCI "TE" < 111 011 100 111 011 101
ASCI "MM" < 111 011 110 111 011 111
ASCI "=?" < 111 100 000 111 100 001
ASCI "TT" < 111 100 010 111 100 011
ASCI "FE" < 111 100 100 111 100 101
ASCI "EE" < 111 100 110 111 100 111
BYTE "=";'25 < 111 101 000 111 101 001
ASCI "MM" < 111 101 010 111 101 011
ASCI "MM" < 111 101 100 111 101 101
ASCI "MM" < 111 101 110 111 101 111
BYTE '25;'25 < 111 110 000 111 110 001
ASCI "PP" < 111 110 010 111 110 011
ASCI "FE" < 111 110 100 111 110 101
ASCI "EE" < 111 110 110 111 110 111
ASCI "##" < 111 111 000 111 111 001
BYTE "#";'40 < 111 111 010 111 111 011
ASCI "#$" < 111 111 100 111 111 101
BYTE '40;'40 < 111 111 110 111 111 111
XLCAR1: VAL $-LCAR1*2
LLCAR1: EQU ZERO+XLCAR1
PROG
PAGE
IF ORDI-"T",XWOR%,,XWOR%
TIMAG: WORD IMAG < @RELATIVE IMAGE VIDEO.
EOT #SIP SP3#
XWOR%: VAL 0
PAGE
<
<
< I N C R E M E N T A T I O N / D E C R E M E N T A T I O N
< D E X E T D E Y :
<
<
INCX: EQU $
XR A,X
AD DELX < X<--(X)+(DELX).
XR A,X
JMP TRAXY
DECX: EQU $
XR A,X
SB DELX < X<--(X)-(DELX).
XR A,X
JMP TRAXY
INCY: EQU $
XR A,Y
AD DELY < Y<--(Y)+(DELY).
XR A,Y
JMP TRAXY
DECY: EQU $
XR A,Y
SB DELY < Y<--(Y)-(DELY).
XR A,Y
TRAXY: EQU $
RSR
PAGE
<
<
< D E P L A C E M E N T S C A R D I N A U X :
<
<
< ARGUMENT :
< A=@MESSAGE A EMETTRE.
<
<
< RESULTAT :
< B=0 : ALLER DANS LA DIRECTION DEMANDEE PAR
< LE MESSAGE ,
< =1 : NE PAS Y ALLER.
< INDICATEURS POSITIONNES PAR 'CPZR B'.
<
<
CARD1: EQU $ < CAS DES ERREURS DE REPONSES.
LA AMESS < RESTAURE : A=@MESSAGE.
CARD: EQU $ < ENTREE NORMALE.
STA AMESS < SAVE L'@MESSAGE EN CAS D'ERREUR.
BSR APRINT < ENVOI DU MESSAGE ARGUMENT.
LAD DEMREP
SVC 0 < ENTREE DE LA REPONSE.
LBY REP < A=REPONSE UTILISATEUR.
<
< REPONSES RECONNUES :
< N : NE PAS Y ALLER (B=1) ,
< O : ALLER DANS LA DIRECTION DU MESSAGE (B=0).
<
LBI 0 < OUI A PRIORI ...
CPI "O"
JE CARD2 < OK , ON Y VA ...
LBI 1 < NON A PRIORI.
CPI "N"
JNE CARD1 < ERREUR : REINITERROGATION ...
CARD2: EQU $
CPZR B < POUR TEST EN RETOUR DE (B).
RSR < RENVOIE B.
PAGE
<
<
< R E C U P E R A T I O N D E S S E U I L S :
<
<
< FONCTION :
< CETTE ROUTINE PERMET D'ENTRER
< DES NOMBRE HEADECIMAUX AVEC
< EMISSION PREALABLE D'UN MESSAGE ,
< ET ITERATION SUR FAUTE DE SYNTAXE.
< LES SEUILS SONT EXPRIMES EN NOMBRE DE
< POINTS ET DE LIGNE TELEVISION !!!!
<
<
< ARGUMENT :
< A=@MESSAGE DE DEMANDE DU SEUIL.
<
<
< RESULTAT :
< A=SEUIL DEMANDE.
<
<
GETS3: EQU $ < ENTRY POUR ERREUR DE SYNTAXE.
LA AMESS < RESTAURE : A=@MESSAGE.
GETS: EQU $ < ENTRY NORMALE.
STA AMESS < SAVE L'@MESSAGE AU CAS OU
< UNE ERREUR DE SYNTAXE DANS LES
< SEUILS AURAIT LIEU.
BSR APRINT < EMISSION DU MESSAGE.
LAD DEMSE
SVC 0 < ENTRREE DES 3 CARACTERES.
LXI 0 < X=INDEX DE PARCOURS DU BUFFER.
LY DEMSE+2 < POUR TEST D'ARRET SUR (X).
LBI 0 < CLEAR LE REGISTRE B.
<
< BOUCLE DE CONVERSION :
<
GETS1: EQU $
LBY &AREP < A=CARACTERE COURANT.
CPI '04
JE GETS4 < ON ARRETE SUR 'EOT'.
CPI '0D
JE GETS4 < ON ARRETE SUR 'R/C'.
ADRI -'30,A
JAL GETS3 < ERREUR DE SYNTAXE.
CPI 9 < EST-CE UN CHIFFRE ???
JLE GETS2 < OUI , OK.
ADRI -'41+'39+1,A
CPI 'A < EST-CE UNE LETTRE ???
JL GETS3 < NON , ERREUR.
CPI 'F < VALIDATION SUPERIEURE ???
JG GETS3 < ERREUR.
GETS2: EQU $ < OK , CHIFFRE HEXADECIMAL.
SCRS 4 < MISE EN TETE DE A.
SCLD 4 < CONCATENATION DANS B.
ADRI 1,X < PROGRESSION DANS LE BUFFER.
CPR X,Y < EST-CE FINI ???
JNE GETS1 < NON , ON CONTINUE ....
GETS4: EQU $ < ARRET SUR 'EOM'.
LR B,A < RENVOIE : A=SEUIL DEMANDE ...
RSR
PAGE
<
<
< O P E R A T I O N S M A T R I C I E L L E S :
<
<
< FONCTION :
< CETTE ROUTINE APPLIQUE SI CELA A
< ETE DEMANDE LES TRANSFORMATIONS
< MATRICIELLES ET PERMUTATIONNELLES
< SUR LES COORDONNEES X ET Y.
<
<
< ARGUMENT :
< X=NBRE DE COORDONNEES A TRANSFORMER.
<
<
TRF: EQU $
CPZ INDTR < FAUT IL TRANSFORMER L'IMAGE
< GRAPHIQUE ???
JNE E6010 < NON , ALLONS L'AFFICHER ...
LAI SEG-ZERO
STA ASEG < REINITIALISATION DU POINTEUR
< DE LISTE GRAPHIQUE.
<
< APPLICATION DE LA TRANSFORMATION A 1 POINT :
<
TR: EQU $
LA &ASEG < Y.
MP M12
DV DM12
PSR A < SAVE A=M12*Y.
IC ASEG
LA &ASEG < X.
MP M11
DV DM11 < A=M11*X.
PLR B < B=M12*Y.
ADR B,A < A=M11*X+M12*Y.
AD TX
PSR A < SAVE A=M11*X+M12*Y+TX.
LA &ASEG < X.
MP M21
DV DM21
PSR A < SAVE A=M21*X.
DC ASEG
LA &ASEG < Y.
MP M22
DV DM22 < A=M22*Y.
PLR B < B=M21*X.
ADR B,A < A=M21*X+M22*Y.
AD TY < A=M21*X+M22*Y+TY.
<
< PERMUTATION DES BITS DE Y TRANSFORMEE :
<
CPZ INDPEY < FAUT-IL PERMUTER ???
JNE PRY1 < NON ...
PSR X < ET OUI , ALORS SAVE X.
LR A,Y < Y=COORDONNEE Y DONT ON PERMUTE
< LES BITS.
LBI 0 < INITIALISATION DE LA COORDONNEE
< Y PERMUTEE.
LXI 16 < 16 BITS DANS UN MOT ....
PRY2: EQU $
LA &APERY < A=COEFFICIENT COURANT DE LA
< MATRICE DE PERMUTATION DES Y.
ANDR Y,A
JAE PRY3 < INTERSECTION VIDE.
SBT 15,X < INTERSECTION NON VIDE.
PRY3: EQU $
JDX PRY2 < AU BIT PRECEDENT.
LR B,A < A=COORDONNEE Y TRANSFORMEE
< ET PERMUTEE ...
PLR X < RESTAURE X.
PRY1: EQU $
CP C1023 < VALIDATION Y.
JLE TR1 < OK POUR LE MAX.
LA C1023 < SI TROP GRAND, ON PREND LE MAX.
TR1: EQU $
JAGE TR3 < OK , POUR LE MIN.
LAI 0 < SI TROP PETIT , ON PREND LE MIN.
TR3: EQU $
STA &ASEG < SAVE L'Y TRANSFORME.
IC ASEG < PASSAGE A L'ENTREE SUIVANTE.
PLR A < RESTAURE A=M11*X+M12*Y+TX.
<
< FAUT-IL PERMUTER LES BITS DE LA COORDONNEE X TRANSFORMEE ???
<
CPZ INDPEX < ALORS ON PERMUTE ???
JNE PRX1 < NON.
PSR X < OUI , ALORS SAVE X.
LR A,Y < Y=COORDONNEE X TRANSFORMEE ,
< DONT ON PERMUTE LES BITS
< SUIVANT LA MATRICE PERX.
LBI 0 < INITIALISATION DE LA COORDONNEE
< X PERMUTEE.
LXI 16 < 16 BITS DANS UN MOT.
PRX2: EQU $
LA &APERX < A=COEFFICIENT COURANT DE LA
< MATRICE DE PERMUTATION.
ANDR Y,A
JAE PRX3 < INTERSECTION VIDE.
SBT 15,X < INTERSECTION NON VIDE.
PRX3: EQU $
JDX PRX2 < AU BIT PRECEDENT.
LR B,A < A=COORDONNEE X TRANSFORMEE
< PUIS PERMUTEE ...
PLR X < ET ENFIN , RESTAURE X.
PRX1: EQU $
CP C1023 < VALIDATION X.
JLE TR2 < OK POUR LE MAX.
LA C1023 < SI TROP GRAND, ON PREND LE MAX.
TR2: EQU $
JAGE TR4 < OK POUR LE MIN.
LAI 0 < SI TROP PETIT , ON PREND LE MIN.
TR4: EQU $
STA &ASEG < SAVE L'X TRANSFORME.
IC ASEG < PASSAGE A 6HENTREE SUIVANTE.
JDX TR < PASSAGE AU POINT SUIVANT.
E6010: EQU $
RSR
PAGE
<
<
< T E S T U N P O I N T :
<
<
< ARGUMENT :
< C=@IMAG ,
< X ET Y CONTIENNENT L'X ET L'Y DU POINT.
<
<
< RESULTAT :
< LE CARY EST POSITIONNE PAR UN 'TBT'.
<
<
TEST: EQU $
PSR B,X,C
LR Y,A < A=Y DU POINT A TESTER.
MP NMPL
ADR B,C
LR X,A < A= X DU POINT A TESTER.
SLRS 4 < DIVISION PAR 16.
ADR A,C < C=@MOT CONTENANT LE POINT.
LAI 'F
ANDR A,X < X=NUMERO DU BIT REPRESENTANT
< LE POINT X,Y DANS LE MOT (C).
LA 0,C
TBT 0,X < TEST DU POINT ARGUMENT.
PLR B,X,C
RSR
PAGE
<
<
< E X I S T E N C E E T V A L E U R
< D U P O I N T C O U R A N T :
<
<
< ARGUMENT :
< X ET Y=COORDONNEES X ET Y DU POINT COURANT.
< B=NUMERO DU VOISIN TESTE (11 ETANT
< LE POINT COURANT) :
< 07 08 09
< 10 11 12
< 13 14 15
<
<
< RESULTAT :
< A=0 : (X,Y) EXISTE ET EST A 1 ,
< A#0 : (X,Y) N'EXISTE PAS , OU
< (X,Y) EXISTE ET EST A 0.
<
<
EXIST: EQU $
LAI 1 < LE POINT (X,Y) N'EXISTE PAS
< A PRIORI ...
CPZR X < VALIDATION COORDONNEE X.
JL NEXIST < (X,Y) N'EXISTE PAS.
CPZR Y < VALIDATION COORDONNEE Y.
JL NEXIST < (X,Y) N'EXISTE PAS.
LR X,A
CP NPOINT < VALIDATION COORDONNEE X.
JG NEXIST < (X,Y) N'EXISTE PAS.
LR Y,A
CP NLIG < VALIDATION COORDONNEE Y.
JG NEXIST < NX,Y) N'EXISTE PAS.
<
< CAS OU LE POINT (X,Y) EXISTE :
<
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 (X,Y) DANS LE MOT ((C)).
LA 0,C < ACCES AU MOT.
TBT 0,X < TEST DU POINT.
PLR B,X,C
JNC NXIST < LE POINT EST A 0...
XR B,X < X=NUMERO DU VOISIN TESTE.
LA PATER < ACCES A LA CONFIGURATION
< COURANTE.
SBT 0,X < MARQUAGE DU VOISIN A 1.
STA PATER < MAJ CONFIGURATION COURANTE.
XR B,X < RESTAURE B ET X.
NXIST: EQU $
LAI 1
SBCR A < A=0 : LE POINT (X,Y) EST A 1.
JANE NEXIST < LE POINT N'EXISTE PAS.
IC KPOINT < SI LE POINT EXISTE ON LE COMPTE.
NEXIST: EQU $
RSR
PAGE
<
<
< E M I S S I O N D ' U N M E S S A G E :
<
<
< FONCTION :
< EDITER UN MESSAGE ; DE PLUS SI
< LE DEMANDEUR EST SOUS :SYS ,
< CETTE ROUTINE STABILISE L'IMAGE
< VIDEO COURANTE.
<
<
< ARGUMENT :
< A=@MOT DU MESSAGE.
<
<
PRINT: EQU $
PSR C < SAVE L'@ IMAG.
LR A,C < C=@MOT DU MESSAGE.
ADR A,A
ADRI 1,A < A=@OCTET DU MESSAGE.
STA DEMOUT+1 < MAJ DE DEMOUT.
LBY 0,C < A=LONGUEUR DU MESSAGE.
STA DEMOUT+2 < MAJ DE DEMOUT.
LAD DEMOUT
SVC 0 < EMISSION MESSAGE.
PLR C < RESTAURE C=@IMAGE VIDEO.
IF ORDI-"T",XWOR%,,XWOR%
LA ASP3 < A=@ROUTINE DE STABILISATION.
JAE PRINT1 < ON N'EST PAS SOUS :SYS !!!
WORD '1EC5 < SOUS :SYS : STABILISATION DE
< L'IMAGE VIDEO.
PRINT1: EQU $
XWOR%: VAL 0
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 ???
<
<
< FONCTION :
< CETTE ROUTINE PERMET D'INTERROGER
< L'UTILISATEUR SUR UN HARD-COPY
< EVENTUEL , ET PERMET EN TOUT CAS
< D'INTERROMPRE L'EMISSION ET PAR LA
< DEMANDE DE COPY D'EMETTRE UN R/C
< FORT UTILE DANS LE CAS OU LES CARACTERES
< GRAPHIQUES SONT RECUPERES PAR UNE
< LIGNE BOUCLEE !!!
<
<
RCOPY: EQU $
<
< FAUT-IL FAIRE UN HARD-COPY DE L'IMAGE :
<
LAD CG
SVC 0 < MISE EN ALPHA DE LA VISU.
< (UTILE DANS LE CAS NVP='02).
HCOPY: EQU $
LA AMCOPY
BSR ACARD < ENVOI D'1N MESSAGE , ET RENVOIIE
< LA REPONSE : B=0 SI OUI.
JNE NCOPY < NON , RETOUR A 'GE'.
LAD COPY
SVC 0
LAD SLEEP
SVC 0 < ET ATTENTE DE 15 SECONDES DE
< FIN DE HARD-COPY.
JMP HCOPY < FAUT-IL EN FAIRE ENCORE UNE ???
NCOPY: EQU $
RSR
PAGE
<
<
< R E P R O D U C T I O N D ' U N E I M A G E V I D E O
< A L ' A I D E D E C A R A C T E R E S
< A L P H A N U M E R I Q U E S :
<
<
< FONCTION :
< LE PROCESSEUR 'VA' PERMET DE REPRODUIRE
< UNE IMAGE VIDEO A L'AIDE DE CARACTERES
< ALPHA-NUMERIQUES SUIVANT 3 MODES :
< 0 : L'ITEM1 DOIT ALORS CONTENIR UN TEXTE
< TERMINE PAR UN CARACTERE DE FIN
< PRECISE DANS LE 1ER CARACTERE;
< LA REPRODUCTION SE FAIT ALORS
< SEQUENTIELLEMENT A L'AIDE DU TEXTE.
< 1 : CHAQUE POINT EST MATERIALISE
< PAR UN CARACTERE FONCTION DE LA
< CONFIGUARTION DES 9 VOISINS
< <Y COMPRIS LE POINT COURANT).
< 2 : IDEM A 1, MAIS FONCTION DU
< NOMBRE DE VOISINS (IDEM).
<
<
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 STACK.
<
< DECOMPTAGE DES ENTREES :
<
IC KIN
JG GOGE < KIN>0 , IL NE S'AGIT PAS DE
< LA 1ERE ENTREE ; ON EST A LA
< SUITE D'UN ALT-MODE.
<
< CAS DE LA 1ERE ENTREE :
<
< SAVE L'EN-TETE DE L'ITEM1 :
<
LB ASI1 < B=@ZONE DE SAVE.
LA I1 < A=@EN-TETE DE L'ITEM1.
LXI LNOM+1
MOVE < SAVE L'EN-TETE DE L'ITEM1.
IC IS < IS=1 : EN-TETE SAUVEGARDEE.
<
< ALLOCATION DE 8K MOTS :
<
LAD DEMMEM
SVC 0
IF ORDI-"T",XWOR%,,XWOR%
<
< ACCES A L'ACN DU DEMANDEUR :
<
WORD '1E25 < (A,B)=ACN DU DEMANDEUR.
CP ACNSYS < EST-CE :SYS ???
JNE E3200 < NON.
LR B,A < PEUT-ETRE ...
CP ACNSYS+1 < EST-CE :SYS ???
JE E3201 < OUI.
E3200: EQU $ < CAS OU L'ON N'EST PAS SOUS :SYS.
STZ ASP3 < PAS DE STABILISATION DE L'IMAGE.
E3201: EQU $ < CAS OU L'ON EST SOUS :SYS.
XWOR%: VAL 0
<
< ACCES ET VALIDATION DE L'IAMGE VIDEO :
<
LAD MNOM
BSR APRINT < ENVOI D'UNE INVITATION.
LAD DEMIN
SVC 0 < ENTREE DU NOM DE L'IMAGE VIDEO.
LAI '05
STBY SGN < NVP DE LOAD SOUS <ACN>.
LAD SGN
SVC 0 < TENTATIVE DE LOAD IMAGE.
JE E1000 < OK , ON A TROUVE L'2MAGE.
LAI '06
STBY SGN < SINON , ON ESSAYE UN NVP DE
< LOAD SOUS :SYS.
LAD SGN
SVC 0 < TENTATIVE DE LOAD SOUS :SYS ...
JE E1000 < OK , ON A TROUVE L'IMAGE.
<
< T R A I T E M E N T D E S E R R E U R S :
<
E1100: EQU $
LAD MERR
BSR APRINT < ENVOI D'UN MESSAGE D'ERREUR.
<
< R E T O U R A ' G E ' :
<
GOGE: EQU $
LAD CG
SVC 0 < REMISE EVENTUELLE DE LA VISU
< D'EMISSION EN APLHA-NUMERIQUE.
<
< RESTAURATION DE L'EN-TETE DE L'ITEM1 :
<
CPZ IS < L'EN-TETE A-T'ELLE ETE
< SAUVEGARDEE ???
JE NIS < NON , RIEN A FAIRE ...
LA ASI1 < A=@ZONE DE SAVE.
LB I1 < B=@EN-TETE DE L'ITEM1.
LXI LNOM+1
MOVE < RESTAURATION DE L'EN-TETE ITEM1.
NIS: EQU $
<
< RESTAURATION DE L'ESPACE MEMOIRE :
<
LA APILE
LR A,K < REINITIALISATION DE K SUR
< LA PILE DE SODOME.
LAD RELMEM
SVC 0 < RETOUR A 4K MOTS.
<
< CHARGEMENT DE L'OVERLAY 'GE' :
<
LA NGE
STA 0,W < MISE EN PLACE DU NOM DE 'GE'
< EN TETE DE LA BRANCHE.
LAI '06
STBY DEMSGN < NVP DE LOAD SOUS :SYS.
E101: EQU $
LAD DEMSGN < A=@DEMSGN ; W=@BRANCH.
BSR AOVL < TENTATIVE D'OVERLAY.
LAD DEMCCI
SVC 0 < SI OVERLAY IMPOSSIBLE , ON
< FAIT UN RETOUR AU CCI.
JMP E101 < PUIS NOUVELLE TENTATIVE SI !GO.
<
< I N I T I A L I S A T I O N :
<
E1000: EQU $
<
< VALIDATION DE L'IMAGE VIDEO :
<
LA &ALONG
CPI -3
JL E1100 < ERREUR : PAS VIDEO !!!
JAGE E1100 < ERREUR : FLOPPY ....
IF ORDI-"S",XWOR%,,XWOR%
LAD STABIL < VISUALISATION IMAGE VIDEO.
SVC 0
XWOR%: VAL 0
<
<
< C O N V E R S I O N G R A P H I Q U E :
<
<
GRAPH: EQU $
<
< CHOIX DU FACTEUR DE REDUCTION :
<
LA AMRED
BSR APRINT < ENVOI D'UNE INVITATION.
LAD DEMREP
SVC 0 < LECTURE DU FACTEUR DE REDUCTION.
<
< FACTEURS DE REDUCTION RECONNUS :
< 0 : GRANDEUR REELLE ,
< 1 : IMAGE/2 ,
< 2 : IMAGE/4.
<
LBY REP < A=CARACTERE LU.
ADRI -'30,A < TRANSLATION NUMERIQUE.
JAL GRAPH < ERREUR : CARACTERE NON RECONNU.
CPI DEDX+DEDY/2 < VALIDATION SUPERIEURE.
JG GRAPH < ERREUR : CARACTERE NON RECONNU.
NGR A,A < OK (0,1,2) : ON L'INVERSE.
STA REDUC < MISE EN PLACE DU FACTEUR DE
< REDUCTION.
<
< FAUT-IL TRANSFORMER L'IMAGE ???
<
LA AMTR
BSR ACARD < ENVOI D'UN MESSAGE ET LECTURE
< DE LA REPONSE (OUI=0).
STB INDTR < SAVE L'INDICATEUR DE TRANSFO.
JNE E6001 < ET NON , ...
E6100: EQU $
<
< ACCES AU CURSEUR GRAPHIQUE DE LA VISU :
<
LAD OGT
SVC 0 < OPEN GRAPHIQUE DE LA VISU '0B/'02
JE E6101 < OK.
LAI '02 < SI NON , CHANGEMENT DE NVP.
STBY OGT
STBY CU
STBY LG
LAD OGT < TRY AGAIN , MAIS SANS REBOUCLAGE,
SVC 0 < AU CAS OU ON SERAIT EN BATCH !!!
E6101: EQU $
LAD CU
SVC 0 < MISE EN FONCTION DU CURSEUR
< GRAPHIQUE.
LAD LG
SVC 0 < ET LECTURE DE CELUI-CI.
LBY CURSOR < A=CARACTERE DE DEBLOCAGE.
LXI 10 < NE PAS L'UTILISER A PRIORI ('N'),
< DONC 10 NBRES A ENTRER.
< REPONSES RECONNUES :
< O : TX ET TY SONT DONNEES PAR LE CURSEUR GRAPHIQUE,
< N : TX ET TY SONT RENTRES AU CLAVIER.
CPI "N" < FAUT-IL UTILISER LE CURSEUR ???
JE E6102 < NON , 10 NBRES A ENTRER.
CPI "O" < EST-CE OUI ???
JNE E6100 < RIEN COMPRIS , REINTERROGATION.
LA CURSOR+1 < OUI : A=Y(CURSEUR) ,
STA TY < CE QUI DONNE TRANSLATION SUR Y.
LA CURSOR+2 < A=X(CURSEUR) ,
STA TX < CE QUI DONNE TRANSLATION SUR X.
LXI 8 < IL N'Y A PLUS QUE LES 8
< COEFFICIENTS DE LA MATRICE
< A ENTRER.
E6102: EQU $
<
< ENTREE DE LA MATRICE DE TRANSFORMATION :
<
IC DEMSE+2 < POUR ENTRER 4 CARACTERES.
E6002: EQU $
STX SAVEX < SAVE X (PAS DE PLACE DANS
< LA PILE !!!)
LA &AMMAT < RECUPERATION DU MESSAGE (X).
BSR AGETS < ENVOI DU MESSAGE ET CONVERSION
< DU COEFFICIENT CORRESPONDANT.
LX SAVEX < RESTAURE X.
STA &AMAT < ET SAVE LE COEFFICIENT.
JDX E6002 < AU SUIVANT.
<
< FAUT-IL PERMUTER LES COORDONNEES TRANSFORMEES X :
<
LA AMPERX
BSR ACARD < ENVOI INTERROGATION ET LECTURE
< DE LA REPONSE DANS B.
STB INDPEX < SAVE LA REPONSE POUR X.
JNE E6300 < NON ...
<
< ENTREE DE LA MATRICE DE PERMUTATION DES BITS DE X TRANSFORMEE :
<
LXI 16 < 1L COEFFICIENTS A ENTRER.
LA AP < A=@1ER MESSAGE A EMETTRE.
E6301: EQU $
STX SAVEX < SAVE LE DECOMPTEUR X.
PSR A < SAVE L'@MESSAGE.
BSR AGETS < ENVOI MESSAGE (A) ET ENTREE
< D'UN COEFFICIENT.
LX SAVEX < RESTAURE X.
STA &APERX < SAVE LE COEFFICIENT.
PLR A < RESTAURE L'@MESSAGE.
ADRI -LMESS,A < PASSAGE AU MESSAGE PRECEDENT.
JDX E6301 < AU PRECEDENT ....
<
< FAUT-IL PERTMUTER LES BITS DES COORDONNEES Y TRANSFORMEES :
<
E6300: EQU $
LA AMPERY < ENVOI INTERROGATION ET ENTREE
< REPONSE DANS B.
BSR ACARD
STB INDPEY < SAVE LA REPONSE.
JNE E6302 < NON ...
<
< ENTREE DE LA MATRICE DE PERMUTATION DES BITS DE Y TRANSFORMEE :
<
LXI 16 < 1L COEFFICIENTS A ENTRER.
LA AP < A=@1ER MESSAGE A EMETTRE.
E6303: EQU $
STX SAVEX < SAVE X.
PSR A < SAVE L'@MESSAGE.
BSR AGETS < EDITION MESSAGE ET ENTREE
< D'UN COEFFICIENT.
LX SAVEX < RESTAURE X.
STA &APERY < SAVE LE COEFFICIENT.
PLR A < RESTAURE L'@MESSAGE.
ADRI -LMESS,A < PASSAGE AU MESSAGE PRECDENT.
JDX E6303 < AU PRECEDENT ...
E6302: EQU $
DC DEMSE+2 < RETOUR A 3 CARACTERES.
LA AMTR
BSR ACARD < FAUT-IL RERENTRER LES PARAMETRES?
JE E6100 < ET OUI , ON RECOMMENCE ...
E6001: EQU $
<
< DEMANDE DU PAS DE PARCOURS DES LIGNES ET DES COLONNES :
<
IC DEMSE+2 < AFIN DE DEMANDER 4 CARACTERES.
PAS2: EQU $ < CAS DES ERREURS DE PAS.
LA AMPAS
BSR AGETS < ENVOI DU MESSAGE ET RENVOI
< DANS A DES 2 PAS CONCATENES.
LB M101 < 2 PAS EGAUX A 1 A PRIPORI.
JAE PAS1 < SI LE RESULTAT EST NUL ON
< PREND DES PAS UNITAIRES A PRIORI.
SLRD 16 < SINON : B<--(A) , ET A=0.
PAS1: EQU $
SCRD 8 < DECONCATENATION.
SCLS 8 < CADRAGE CORRECT DE A.
JAE PAS2 < PAS DE COLONNE=0 : ERREUR.
CPZR B
JE PAS2 < PAS DE LIGNE=0 : ERREUR.
STA PCOL < PAS DE PASSAGE D'UN POINT A
< L'AUTRE D'UNE LIGNE.
STB PLIG < PAS DE PASSAGE D'UNE LIGNE
< A L'+UTRE.
<
< ENTREE DES PAS D'INCREMENTATION/DECREMENTATION DE X ET Y :
<
PAS4: EQU $
LAD MDEL
BSR AGETS < ENVOI D'UN MESSAGE ET LECTURE DES
< 2 CARACTERES REPONSES.
LB M101 < 2 PAS EGAUX A 1 A PRIORI.
JAE PAS3 < ET OUI =1 ...
SLRD 16 < CADRAGE DANS B.
PAS3: EQU $
SCRD 8 < ENTREE DE DELY DANS A.
SCLS 8 < CADRAGE CORRECT DE DELY.
JAE PAS4 < ERREUR , DELY=0.
CPZR B < VALIDATION DE DELX.
JE PAS4 < ERREUR , DELX=0.
STA DELY < OK , MAJ DE DELY.
STB DELX < OK , MAJ DE DELX.
DC DEMSE+2 < RESTAURATION DE CODEM=3.
<
< CHOIX DU MODE DE REPRODUCTION :
<
MOD1: EQU $
LAD MMOD
BSR APRINT < ENVOI D'UNE INVITATION.
LAD DEMREP
SVC 0 < ENTREE DU MODE DEMANDE (0, 1, 2).
LBY REP < A=MODE.
ADRI -'30,A < CONVERSION BINAIRE.
JAL MOD1 < ERREUR.
CPI 2
JG MOD1 < ERREUR.
ADRI -1,A < A=-1/0/+1.
STA IMOD < SAVE LE MODE DEMANDE.
<
< INITIALISATIONS SPECIFIQUES :
<
JAE MOD2 < CAS CONFIGURATION.
JAGE MOD3 < CAS COMPTAGE.
<
< -1 : CAS DES TEXTES :
<
LBY &TITEM1 < ACCES AU TYPE DE ITEM1.
CPI "T" < EST-CE TYPE 'TEXTE' ???
JNE MOD1 < NON, TEXTE REFUSE...
LXI 0 < INDEX DU 1ER CARACTERE.
LBY &AITEM1 < ACCES AU 1ER CARACTERE, QUI
STA KITEM1 < EST LE CARACTERE D'ARRET.
JMP MOD4 < ET C'EST TOUT.
<
< +1 : CAS DU COMPTAGE :
<
MOD3: EQU $
LAD MCHG
BSR ACARD < FAUT-IL CHANGER LES CODES ???
JNE MOD4 < NON, C'EST TOUT...
LAD MCAR2 < OUI, ON ENVOIE AU PREALABLE
BSR APRINT < LES CODES INITIAUX.
LAD CAR2I
SVC 0 < PUI, ON ENTRE LES NOUVEAUX.
JMP MOD4 < ET C'EST TOUT...
<
< 0 : CAS DES CONFIGURATIONS :
<
MOD2: EQU $
<
< FAUT-IL EFFACER L'ECRAN DE LA VISU DE RECEPPTION :
<
MOD4: EQU $
LA AMEFFA
BSR ACARD < B=0 S'IL FAUT EFFACER L'ECRAN.
<
< CHOIX VISU D'EMISSION :
<
E1200: EQU $
LAD OG
SVC 0 < TENTATIVE D'OPEN GRAPHIQUE.
JE E110 < OK.
<
< CHANGEMENT DE VISU D'EMISSION :
<
LAI '02 < ON REMPLACE NVP='0B PAR NVP='02.
STBY ERASE < MAJ DE ERASE.
STBY OG < MAJ DE OG.
STBY CG < MAJ DE CG.
STBY WG < MAJ DE WG.
STBY COPY < MAJ DE COPY.
STBY DEMCAR < MAJ DE DEMCAR.
JMP E1200 < PUIS NOUVELLE TENTATIVE D'OG.
E110: EQU $
CPZR B < FAUT-IL EFFACER L'ECRAN ???
JNE NEFFAC < NON ...
LAD ERASE
SVC 0 < OUI , EFFACEMENT DE L'ECRAN
< DE LA VISU DE RECEPTION.
NEFFAC: EQU $
LAD OG
SVC 0 < RE-OPEN GRAPHIQUE EVENTUEL ,
< AU CAS OU UN ERASE AURAIT
< ETE FAIT SUR LA VISU ...
<
< C O N V E R S I O N V I D E O-
< G R A P H I Q U E :
<
LXI 0 < INDEX DE BALAYAGE VERTICAL (Y).
<
< BOUCLE DE BALYAGE VERTICAL (Y) :
<
E1001: EQU $
LR X,Y < Y=COORDONNEE Y DE BALYAGE.
PSR X < SAVE LA COORDONEE Y (X !!!).
LXI 0 < INDEX DE BALAYAGE HORIZONTAL (X).
<
< BOUCLE DE BALYAGE HORIZONTAL (X) :
<
E1002: EQU $
PSR X,Y < SAVE LES COORDONNES X ET Y
< DU POINT COURANT.
STZ KPOINT < RAZ DU NBRE DE VOISIN DE (X,Y).
STZ PATER < RAZ DE LA CONFIGURATION.
CPZ IMOD < TEST DU MODE CHOISI :
JGE MOD20 < CAS COMPTAGE/CONFIGURATION.
<
< INSERTION D'UN TEXTE :
<
LBI 11 < X,Y (POINT COURANT).
BSR AEXIST
JANE FIN2 < LE POINT COURANT N'EXISTE PAS,
< DONC RIEN A FAIRE....
PSR X < S'IL EXISTE ON SAVE SON X;
< (SON Y EST BON).
JMP MOD8 < VERS L'EDITION...
<
< CAS DES COMPTAGES/CONFIGURATIONS :
<
MOD20: EQU $
BSR ADECX
BSR ADECY
LBI 7 < X-DX,Y-DY.
BSR AEXIST
BSR AINCX
LBI 8 < X,Y-DY.
BSR AEXIST
BSR AINCX
LBI 9 < X+DX,Y-DY.
BSR AEXIST
BSR AINCY
LBI 12 < X+DX,Y.
BSR AEXIST
BSR ADECX
LBI 11 < X,Y (POINT COURANT).
PSR X < SAVE LE POINT
PSR Y < COURANT.
BSR AEXIST
BSR ADECX
LBI 10 < X-DX,Y.
BSR AEXIST
BSR AINCY
LBI 13 < X-DX,Y+DY.
BSR AEXIST
BSR AINCX
LBI 14 < X,Y+DY.
BSR AEXIST
BSR AINCX
LBI 15 < X+DX,Y+DY.
BSR AEXIST
PLR Y < RESTAURE Y(POINT COURANT).
<
< CHOIX DU CARACTERE DE REPRESENTATION :
<
MOD5: EQU $
CPZ IMOD < DISCRIMINATION...
JG MOD6 < CAS DU COMPTAGE.
JE MOD7 < CAS DES CONFIGURATIONS.
WORD '1E16 < E R R E U R P R O G !!!
<
< CAS DES TEXTES :
<
MOD8: EQU $
IC XITEM1 < PROGRESSION INDEX ITEM1.
LA XITEM1
CP NCP < VALIDATION DE XITEM1.
JL MOD9 < OK...
MOD10: EQU $
STZ XITEM1 < REINITIALISATION DE XITEM1.
JMP MOD8 < ET ON RECOMMENCE...
MOD9: EQU $
LR A,X < X=INDEX COURANT ITEM1.
LBY &AITEM1 < A=CARACTERE COURANT.
CP KITEM1 < EST-CE LE CARACTERE DE FIN ???
JNE MOD11 < NON, VERS L'EDITION.
ADRI -1,X < OUI, A-T'ON DEJA EDITE ???
CPZR X
JNE MOD10 < OUI, ON REINITIALISE XITEM1.
DC XITEM1 < NON, C'EST DONC KITEM1
< QUE L'ON VA EDITER...
JMP MOD11 < VERS L'EDITION.
<
< CAS DES CONFIGURATIONS :
<
MOD7: EQU $
LA PATER < A=CONNFIGUARTION DES VOISINS.
CP LOCAR1 < VALIDATION...
JL MOD12 < OK..
WORD '1E16 < E R R E U R P R O G !!!!
MOD12: EQU $
LR A,X
LBY &ALCAR1 < A=CARACTERE CHOISI.
JMP MOD11 < VERS L'EDITION.
<
< CAS DU COMPTAGE :
<
MOD6: EQU $
LA KPOINT < A=NBRE DE VOISINS.
CPI LLCAR2 < VALIDATION...
JL MOD13 < OK...
WORD '1E16 < E R R E U R P R O G !!!
MOD13: EQU $
LR A,X
LBY &ALCAR2 < A=CARACTERE CHOISI.
<
< EDITION :
<
MOD11: EQU $
CPI " "
JLE FIN1 < LES CARACTERES 'SPACE' ET
< CTRL-XXX N'ONT PAS BESOIN
< D'ETRE EDITES...
STBY MCAR < RANGEMENT DU CARACTERE.
<
< MISE DES COORDONNEES AU FORMAT GRAPHIQUE :
<
LX REDUC < X=FACTEUR DE REDUCTION.
LR Y,A < A=COORDONNEE Y.
SB NLIG
NGR A,A
SLLS DEDY,X
STA SEG+Y
PLR A < A=COORDONNEE X.
SLLS DEDX,X
STA SEG+X
LXI 1 < 1 COUPLE (X,Y) A TRANSFORMER.
BSR ATRF
LAD OG
SVC 0 < OPEN GRAPHIQUE.
LAD WG
SVC 0 < POSITIONNEMENT EN X,Y.
LAD CG
SVC 0 < CLOSE GRAPHIQUE.
LAD DEMCAR
SVC 0 < EDITION DU CARACTERE CHOISI.
FIN2: EQU $
<
< CHANGEMENT DE POINT COURANT SUR LA LIGNE :
<
E1003: EQU $
PLR X,Y < RESTAURE LE POINT (X,Y).
LA PCOL < PAS DE PASSAGE D'UN POINT
< A L'AUTRE.
ADR X,A < BALAYGE HORIZONTAL.
CP NPOINT < EST-CE FINI ???
JG E6000 < OUI, CHANGEMENT DE LIGNE.
LR A,X
BR AE1002 < NON , ON CONTINUE A BALAYER.
E6000: EQU $
<
< CHANGEMENT DE LIGNE :
<
PLR X < RESTAURE LE NUMERO DE LIGNE.
LA PLIG < PAS DE PASSAGE D'UNE LIGNE
< A L'AUTRE.
ADR X,A < BALAYAGE VERTICAL.
CP NLIG < EST-CE FINI ???
JG FIN < ET OUI...
LR A,X
BR AE1001 < ET NON , ON CONTINUE A BALAYER.
FIN: EQU $
BSR ARCOPY < HARD-COPIES ET TEMPORISATION ???
BR AGOGE < ET C'EST FINI ...
FIN1: EQU $
ADRI -1,K < IL RESTE EN EFFET UN
JMP FIN2 < REGISTRE X EMPILE.
<
<
< M A T R I C E S D E P E R M U T A T I O N S
< D E S B I T S D E X E T Y :
<
<
PERX: EQU $
PERY: EQU $+16
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'ASSEMBLEGE SI
< MAUVAISE IMPLANTATION.
DZS X10+1
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.