< COMMENTAIRE UNIQUEMENT DESTINE A PERMETTRE L'ACCES PAR 'vi' (introduit le 20061123090420).
INITS: VAL 0 < INITIALISER LA ZONE SCRATCH DK.
INITS: VAL 1 < NE PAS INITIALISER ZONE SCRATCH.
IF TITV,X100,,X100
IDP "TV VERSION SOLAR - RELEASE 13/03/80"
X100: VAL 0
IF TITV,,X100,
IDP "TI VERSION SOLAR - RELEASE 13/03/80"
X100: VAL 0
IDP "IMAGES VIDEOS"
IDP "JOHN F. COLONNA"
PAGE
EOT #SIP DEFINITION CMS5#
PAGE
IF TITV,,XWOR%,
NMPROC: VAL "TI" < NOM DU PROCESSEUR.
XWOR%: VAL 0
IF TITV,XWOR%,,XWOR%
NMPROC: VAL "TV" < NOM DU PROCESSEUR.
XWOR%: VAL 0
EOT #SIP DEF PROCESSEUR#
PROG
WORD IMAGE < ENTRY POINT DU GENERATEUR.
WORD 0
PIMAGE: EQU $ < P='12 !!!
LRP L
BR -2,L < ENTREE DANS LE PROCESSEUR 'TV'.
<
IF ORDI-"S",XWOR%,,XWOR%
MCOOL: DZS 1 < CUMUL DES ARGUMENTS ENVOYES A CU3.
XWOR%: VAL 0
<
EOT #SIP DEFINITION ITEM#
ITEM1: EQU ZERO+PILE-LTNI
ITEM2: EQU ZERO+PILE-LTNI-LTNI
PAGE
<
<
< I M A G E S G R A P H I Q U E E T V I D E O :
<
SIZE: VAL ITEM2-ZERO
<
< PILE DU PROGRAMME :
<
SSTACK: VAL 40 < ELLE EST GRANDE A CAUSE DE
< LA DICHOTOMIE...
IF TITV,X100,,X100
STACK: EQU ZERO+SIZE
<
< BUFFER DE L'IMAGE GRAPHIQUE :
<
BUFFER: EQU STACK+SSTACK
X100: VAL 0
EOT #SIP IMAGE 256#
IF TITV,X100,,X100
NOM: EQU ZERO+PILE+5-LNOM-2 < NOM DE L'IMAGE VIDEO.
IMAG: EQU NOM+LNOM+2 < IMAGE VIDEO.
X100: VAL 0
IF TITV,,X100,
NOM: EQU ITEM1 < NOM EST EN RECOUVREMENT DE
< L'EN-TETE DE L'ITEM1.
IMAG: EQU ZERO+PILE+5
EOT: EQU IMAG-2
LONG: EQU IMAG-1
X100: VAL 0
IF ORDI-"S",XWOR%,,XWOR%
ENTIM: EQU IMAG-LENTIM < EN-TETE IMAGE (INTERPOLATION VIDEO
< PAR CMS5).
XWOR%: VAL 0
<
< VALIDATION DU FORMAT DE L'IMAGE (CARREE) :
<
X20: VAL 1024/DY < NBRE DE LIGNES/IMAGE.
X21: VAL CNMPL*16 < NBRE DE POINTS/LIGNE.
IF X20-X21,,X100,
IF ATTENTION : L'IMAGE N'EST PAS CARREE !!!
X100: VAL 0
IF TITV,X100,,X100
<
< TAILLE MAX DE L'IMAGE GRAPHIQUE EN MOTS :
<
SIZEB: VAL NOM-BUFFER-2 < (-2 PAR PRUDENCE...)
<
< BUFFER DES SECTEURS SCRATCHES :
<
SECTOR: EQU BUFFER < ON L'IMPLANTE EN RECOUVREMENT
< DU BUFFER DE LECTURE GRAPHIQUE.
X100: VAL 0
PAGE
<
<
< L O C A L :
<
<
TABLE
MCDAI: ASCI "!CDA"
BYTE "I";'04
MCDA: ASCI "!CDA"
BYTE '04;0
LOCAL
LOC: EQU $
<
< BUFFERS ET MESSAGES :
<
NPO: BYTE 5;"=" < POUR EDITION DU NBRE DE POINTS.
REP: WORD 0 < REPONSE UTILISATEUR.
WORD 0 < (ET FOND DE L'IMAGE)
< (ET NBRE DE POINTS/IMAGE)
CURSOR: DZS 3 < POUR ENTRER LE CURSEUR GRAPHIQUE:
< OCTET0=CARACTERE DE DEBLOCAGE ,
< MOT1=Y(CURSEUR) ,
< MOT2=X(CURSEUR).
IF TITV,X100,,X100
MNOM: BYTE 5;'6D
ASCI "NOM>"
MINT: BYTE 2;'6D;">";0
MFOND: BYTE 7;'6D
ASCI "FOND= "
ML1: BYTE 5;'6D
ASCI "0-F="
ML2: BYTE 7;'6D
ASCI "10-1F="
MIDEM: BYTE 7;'6D
ASCI "T*T=I?"
MAT: BYTE 2;'6D;"M";0
MX: BYTE 3;"2";"2";"="
BYTE 3;"2";"1";"="
BYTE 3;"1";"2";"="
BYTE 3;"1";"1";"="
BYTE 12;"-" < A T T E N T I O N : DOIT
< ETRE DERRIERE LES 4 COEFFICIENTS
< DE LA MATRICE 'T'.
ASCI "CLASSE X,Y= "
MDIAG: BYTE 5;'6D
ASCI "1/2?"
MTOPO: BYTE 34;'6D
ASCI "0123456789ABCDEFGHIJKLMNOPQRSTUV"
BYTE '6D;0
MORG: BYTE 5;'6D
ASCI "ORG="
MINIT: BYTE 5;'6D
ASCI "REC?"
X100: VAL 0
IF TITV,,X100,
MIT1: BYTE 7;'6D
ASCI "!ITEM1"
X100: VAL 0
MERR: BYTE 3;'6D;"?";"?"
<
< DEMANDES A CMS4 :
<
IF TITV,,X100,
NSC: ASCI "SD "
BYTE '04;0 < EOT DE FIN DE NOM.
DELSC: WORD '0302 < DEMANDE DE DELETE SGN DE LA
< BRANCHE DE SAUVEGARDE DE SC.
WORD NSC-ZERO*2
WORD ZERO-BRANCH+PILE-LTNI-LTNI*2
WORD -1
X100: VAL 0
DEMOUT: WORD '0202 < EMISSION D'UN MESSAGE.
WORD 0 < @OCTET DU MESSAGE.
WORD 0 < LONGUEUR DU MESSAGE.
IF TITV,X100,,X100
DEMIN: WORD '0101 < LECTURE DU NOM DU DESSIN.
WORD NOM-ZERO*2
WORD LNOM*2
DEMINT: WORD '0101 < LECTURE DE LA REPONSE UTILISATEUR.
WORD REP-ZERO*2
WORD 1 < 1 CARACTERE.
DEMFON: WORD '0101 < DEMANDE D'ENTREE DU FOND.
WORD REP-ZERO*2
WORD 4 < 4 CARACTERES OBLIGATOIRES.
LG: WORD '0A00 < LECTURE ALPHA SUR NVP='0A ,
< ASSIGNE A VI1.
WORD BUFFER-ZERO*2
WORD SIZEB*2
X100: VAL 0
IF TITV,X100,,X100
OG: WORD '0203 < OPEN GRAPHIQUE DE LA VISU.
CU: WORD '0106 < MISE EN FONCTION DU CURSEUR
< GRAPHQIE.
WORD 0 < IL FAUT : AMDEM=0 !!!
LCU: WORD '0109 < LECTURE DU CURSEUR GRAPHIQUE.
WORD CURSOR-ZERO*2
WORD 6
X100: VAL 0
IF TITV,,X100,
OG: WORD '0B03 < OG SUR NVP='0B.
CU: WORD '0B06 < CU SUR NVP='0B.
WORD 0 < AMDEM DOIT ETRE NUL !!!
LCU: WORD '0B09 < LCU SUR NVP='0B.
WORD CURSOR-ZERO*2
WORD 6
X100: VAL 0
DEMMEM: WORD '0004 < DEMANDE D'ALLOCATION 8K-MOTS.
RELMEM: WORD '0004 < DEMANDE DE RETOUR A 4K MOTS.
WORD '4000
WORD '2000 < 8K OCTETS.
DEMCCI: WORD '0001 < RETOUR AU CCI.
SLEEP: WORD '0005 < DEMANDE DE TEMPORISATION.
WORD 0
WORD 2 < POUR 2 SECONDES ....
IF TITV,X100,,X100
SGN: WORD '0002 < DEMANDE D'ACCES AU SGN.
WORD NOM-ZERO*2 < @OCTET DE L'IMAGE VIDEO.
WORD LIMAG+LNOM+2*2 < LONGUEUR TOTALE DE L'IMAGE
< VIDEO ET DE SON EN-TETE.
WORD 2*LNOM
X100: VAL 0
IF TITV,,X100,
SGN: WORD '0002 < ACCES SGN POUR LES IMAGES.
WORD NOM-ZERO*2
WORD IMAG-NOM+LIMAG*2
WORD EOT-NOM*2
X100: VAL 0
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
RDK: WORD '0C00 < LECTURE SCRATCH DU DISQUE.
IF TITV,X100,,X100
SECT2: WORD SECTOR-ZERO*2 < @OCTET DU SECTEUR.
X100: VAL 0
IF TITV,,X100,
SECT2: WORD ZSECT2 < @OCTET DU SECTEUR.
X100: VAL 0
WORD 256 < 1 SECTEUR=256 OCTETS.
WORD 0 < @SECTEUR COURANT.
WDK: WORD '0C02 < ECRITURE SCRATCH DU DISQUE.
IF TITV,X100,,X100
WORD SECTOR-ZERO*2 < PEUT CONTENIR UNE @ SE SITUANT
< DANS L'IMAGE VIDEO.
X100: VAL 0
IF TITV,,X100,
WORD ZSECT2
X100: VAL 0
WORD 256 < 1 SECTEUR=256 OCTETS.
WORD 0 < NUMERO DU SECTEUR COURANT.
<
< ACCES AU CCI INTERPRETATIF :
<
ACCI: WORD CCI < S/P D'ENVOI D'UNE CARTE AU 'CCI'...
DEMCC: WORD '0002 < DEMANDE D'ACCES AU 'CCI' INTERPRETATIF.
WORD 0
WORD 80
<
< CONSTANTES DE CONVERSION GRAPHIQUE --> VIDEO :
<
IF TITV,X100,,X100
HY1: WORD 0 < HIGH-Y 1ER POINT.
LY1: WORD 0 < LOW-Y 1ER POINT.
HX1: WORD 0 < HIGH-X 1ER POINT.
LX1: WORD 0 < LOW-X 1ER POINT.
HY2: WORD 0 < HIGH-Y 2EME POINT.
LY2: WORD 0 < LOW-Y 2EME POINT.
HX2: WORD 0 < HIGH-X 2EME POINT.
LX2: WORD 0 < LOW-X 2EME POINT.
HY: WORD 0 < HIGH-Y POINT COURANT.
LY: WORD 0 < LOW-Y POINT COURANT.
HX: WORD 0 < HIGH-X POINT COURANT.
LX: WORD 0 < LOW-X POINT COURANT.
X100: VAL 0
X1: WORD 0 < X 1ER POINT.
Y1: WORD 0 < X 1ER POINT.
X2: WORD 0 < X 2EME POINT.
Y2: WORD 0 < Y 2EME POINT.
X: WORD 0 < X=(X1+X2)/2.
Y: WORD 0 < Y=(Y1+Y2)/2.
<
< RELAIS DIVERS :
<
ASECT: WORD SECTOR-1,X < REALI DE RAZ DU BUFFER SECTEUR.
AIMAG1: WORD IMAG,X < RELAI DE MODIF. DE L'IMAGE VIDEO.
ASECT1: WORD SECTOR,X < RELAI POUR ACCES AU SECTEUR.
AOP: WORD OP < ADRESSE D'1NE INSTRUCTION
< VARIABLE CONTENANT SOIT UN
< 'OR' , SOIT UN 'AND' , SOIT
< ENFIN UN 'EOR'.
AOP2: WORD OP2 < REALI VERS L'INSTRUCTION
< VARIABLE DE CHOIX DES COULEURS
< DE L'IMAGE VIDEO COURANTE...
AREP: WORD REP,X < RELAI DE CONVERSION DU FOND.
IF TITV,X100,,X100
AEOT: WORD NOM+LNOM < ADRESSE DE L'EOT A PRIORI.
ALONG: WORD NOM+LNOM+1 < ADRESSE OU METTRE UN '0000
< PERMETTNAT DE DISTINGUER UNE
< IMAGE VIDEO , D'UN DESSIN DE
< SIMULATION FLOPPY ('DE').
X100: VAL 0
IF TITV,,X100,
AEOT: WORD EOT < ADRESSE DE L'EOT A PRIORI.
ALONG: WORD LONG < ADRESSE DE L'INDICATEUR VIDEO.
X100: VAL 0
AI2: WORD ITEM2-1,X < RELAI VERS ITEM2-1 POUR RAZ.
ABUF: WORD BUFFER,X < RELAI D'ACCES AU BUFFER CARACTERE
AIMAG: WORD IMAG-1,X < RELAI D'ACCES A L'IMAGE-1.
IF TITV,X100,,X100
AGET: WORD GET < RECUPERATION 1 CARACTERE.
ACONV: WORD CONV < ROUTINE DE CONVERSION DES
< CARACTERES DE COORDONNEES EN
< COUPLES DE COORDONNEES Y,X.
X100: VAL 0
IF TITV,,X100,
ANOM: WORD NOM,X < RELAI D'ACCES AU NOM IMAGE.
AI1: WORD ITEM1+LTN,X < RELAI D'ACCES A L'ITEM1.
AINOM: WORD INOM < RECUPERATION NOM DANS L'ITEM1.
ASIMU: WORD SIMU < RECUPERATION CARACTERE DANS ITEM1
X100: VAL 0
APOINT: WORD SET < ROUTINE D'AFFICHAGE D'UN POINT :
< CONTIENT SET/RESET/INVER SUIVANT
< LE FOND DE L'IMAGE CHOISI.
ASET: WORD SET < ROUTINE D'AFFICHAGE UN POINT.
ARESET: WORD RESET < ROUTINE D'EFFACEMENT UN POINT.
AINVER: WORD INVER < INVERSION VIDEO UN POINT.
ATEST: WORD TEST < TEST D'1N POINT 0/1.
LROUT: WORD $+3+1,X;SET;RESET;INVER
AEXIST: WORD EXIST < EXISTENCE ET VALEUR D'UN POINT.
AFILTR: WORD FILTR < MODULE DE FILTRAGE IMAGE.
AVIRT: WORD VIRT < MODULE D'ENTREE TOPOGRAPHIE.
ACOMPT: WORD COMPT < COMPTAGE DES POINTS/IMAGE.
ADEF: WORD DEF < DEFINITION DE LA MATRICE DE
< TRANSFORMATION.
ACOEF: WORD COEF < ENTREE 1 COEEFICIENT MATRICE.
IF ORDI-"T",XWOR%,,XWOR%
ADICO: WORD DICO < PARCOURS DICHOTOMIQUE D'UN
< SEGMENT.
XWOR%: VAL 0
ASEG: WORD SEG < TRACE DU SEGMENT (M1,M2).
AGOGE: WORD GOGE < MODULE DE RETOUR A 'GE'.
AOVL: WORD OVL < CHARGEMENT DES OVERLAYS.
APRINT: WORD PRINT < ROUTINE D'EMISSION MESSAGE.
ADESIR: WORD DESIR < QUESTION-REPONSE UTILISATEUR.
AHEX: WORD HEX < CONVERSION HEXA --> BINAIRE.
AGOSGN: WORD GOSGN < ROUTINE D'ACCES AU SGN.
AE300: WORD E300 < INTERROGATION UTILISATEUR.
AFIN: WORD E2 < ADRESSE DE FIN DE CONVERSION.
AINTER: WORD E410 < 2EME NIVEAU D'INTERROGATION.
AERR: WORD ERROR < ERREUR 2EME NIVEAU INTERRO.
AE770: WORD E770 < INTERACTION GRAPHIQUE.
AOPER: WORD OPER < OPERATION LOGIQUES IMAGES.
AIMAG2: WORD IMAGE2 < ENTRY POUR CHANGEMENT DE NOM.
IF ORDI-"T",XWOR%,,XWOR%
ASP1: WORD SP1 < 1ERE ROUTINE MAITRE.
ASP2: WORD SP2 < 2EME ROUTINE MAITRE.
ASP3: WORD SP3 < MISE EN PLACE DE L'IMAGE COMME
< ZONE VISUALISEE PAR LA VIDEO.
< (SI =0 : CE N'EST PAS :SYS !!!)
XWOR%: VAL 0
IF TITV,,X100,
<
< SAUVEGARDE/RESTAURATION DE L'EN-TETE ITEM1 :
<
I1: WORD ITEM1 < ADRESSE EN-TETE ITEM1.
ASI1: WORD SI1 < ADRESSE ZONE DE SAUVEGARDE.
SI1: DZS LNOM+2 < ZONE DE SAUVEGARDE.
NOMARG: WORD -1 < MEMORISE DANS LE CAS D'UN APPEL
< PAR 'SC', L'INDEX EVENTUEL DE
< L'IMAGE APPELEE PRECEDEMMENT
< PAR 'SC' LUI-MEME...
X100: VAL 0
<
< CONSTANTES :
<
KIN: WORD -2+TITV < COMPTEUR DES ENTRIES DANS TI/TV.
IF TITV,X100,,X100
NGE: WORD "GE" < NOM DU PROCESSEUR 'GE'.
X100: VAL 0
IF TITV,,X100,
WHOCAL: WORD 0 < PERMET DE CONNAITRE LA NATURE
< DE L'OVERLAY DE RETOUR SI ALT
< MODE :
< 0 : APPEL DIRECT PAR GE , OU
< APPEL PAR SC , LUI MEME
< AYANT ETE APPELE PAR GE ,
< 1 : APPEL PAR SC LUI-MEME AYANT
< ETE APPELE PAR EI.
NCALL: WORD $+1,X;"GE";"EI"
X100: VAL 0
ACNSYS: ASCI ":SYS" < NUMERO DE COMPTE DU SYSTEME.
IF TITV,,X100,
NCP: WORD NBCAR*NBLIG < NBRE DE CARACTERES PAR ITEM.
IEG: WORD 0 < INDEX COURANT DE L'ITEM1.
X100: VAL 0
IF TITV,X100,,X100
NMOTS: WORD 2*LTNI < NBRE DE MOTS OCCUPES PAR
< LES ITEMS 1 ET 2.
X100: VAL 0
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 D'UNE IMAGE -1.
NPPL: WORD CNMPL*16-1 < NBRE DE POINTS/LIGNE-1.
IF ORDI-"S",XWOR%,,XWOR%
XWOR%1: VAL 4
XWOR%: VAL 0
IF ORDI-"T",XWOR%,,XWOR%
XWOR%1: VAL '400
XWOR%: VAL 0
TEMPO: WORD XWOR%1*2 < TEMPORISATION PAIRE DE CLIGNOT-
< TEMENT DU PSEUDO-CURSEUR TV.
WAITR: WORD 20000*TITV+'80 < NBRE DE JDX A FAIRE LORS DU
< MASCAGE DES IT DE NIVEAU 7.
INIT: WORD 0 < INDICATEUR D'INITIALISATION
< DE L'IMAGE :
< =0 : INITIALISER ,
< #0 : NE PAS INITIALISER.
PATS: WORD 'FFFF;'FFFF < LISTE SUR 32 BITS DES SECTEURS
< D'UNE IMAGE SCRATCH A PRENDRE
< EN COMPTE (BIT=0 : SECTEUR
< DE MEME RANG A IGNORER).
MIROR: WORD 0 < =0 : MIROIR NORMAL LORS DES
< OPERATIONS LOGIQUES ,
< #0 : &AS DE MIROIR.
INDICS: WORD 0 < INDICATEUR TEMPORAIRE DE PRISE
< EN COMPTE D'UN SECTEUR ;
< =0 : IGNORER LE SECTEUR ,
< =1 : TRAITER LE SECTEUR COURANT.
BANDE: WORD 0 < NUMERO DE LA BANDE COURANTE
< QUE L'ON VIRTUALISE.
ATOPO: WORD TOPO,X < RELAI VERS LA TOPOGRAPHIE
< DES BANDES HORIZONTALES.
TOPO: EQU $
BYTE 0;1;2;3;4;5;6;7;8;9;10;11;12;13;14;15
BYTE 16;17;18;19;20;21;22;23;24;25;26;27;28;29;30;31
IF LIMAG/128-32,,X100,
IF ATTENTION : LA TOPOGRAPHIE N'EST PAS ADAPTEE !!!
X100: VAL 0
XIMAG: WORD 0 < INDEX DE MODIFICATION DE
< L'IMAGE VIDEO.
MASKX: WORD LIMAG-1 < MASQUE DE CALCUL DE XIMAG
< MODULO LIMAG.
SENSX: WORD 0 < CONTIENT L'INCREMENT (+1,-1)
< DE XIMAG.
SECTX: WORD 0 < DONNE L'INDEX INITIAL DE PARCOURS
< D'UN SECTEUR D'IMAGE SCRATCH.
< (0 OU 127).
ITEST: WORD 0 < 0 : TEST SUR VALEUR 0 DES POINTS.
< 1 : TEST SUR VALEUR 1 DES POINTS.
IMAG2: WORD IMAG-ZERO*2 < @OCTET DE L'IMAGE VIDEO.
<
< MATRICE DE TRANSFORMATION :
< (INITIALISEE SUR UNE TRANSPOSITION)
<
C256: WORD 256 < POUR DECONCATENER 2 OCTETS.
XEQUIV: WORD 0 < CLASSE D'EQUIVALENCE DES X.
YEQUIV: WORD 0 < CLASSE D'EQUIVALENCE DES Y.
MSX: WORD 0 < SAVE TEMPORAIRE X DE M(X,Y).
SX: WORD 0 < COORDONNEE REDUITE X TEMPORAIRE.
RSX: WORD 0 < RESIDU DE X TEMPORAIRE.
MSY: WORD 0 < SAVE TEMPORAIRE Y DE M(X,Y).
SY: WORD 0 < COORDONNEE Y REDUITE TEMPORAIRE.
RSY: WORD 0 < RESIDU DE Y TEMPORAIRE.
AMAT: WORD $,X < LE RELAI AMAT DE LA MATRICE ,
< DOIT ETRE SUIVI DANS L'ORDRE
< PAR A22,A21,A12,A11.
A22: WORD 0
A21: WORD 1
A12: WORD 1
A11: WORD 0
SA22: WORD 0 < VALEUR TEMPORAIRE DE A22.
SA21: WORD 0 < VALEUR TEMPORAIRE DE A21.
DIAGON: WORD 1 < #0 : &ARCOURS DIAGONAL DE
< L'IMAGE LORS DE 'T'.
< =0 : PARCOURS ENTIER DE L'IMAGE.
IF ORDI-"S",XWOR%,,XWOR%
<
< ACCES 'DKU' ET COULEURS SOLAR :
<
XALAD1: VAL '0E00 < PREMIER 16*Q-SECTEUR ACCESSIBLE,
XALAD2: VAL '0F00 < PREMIER 16*Q-SECTEUR INACCESSIBLE,
XDKU: VAL 4 < DECALAGE DE GENERATION ADRESSES DKU.
RWDKU: WORD '8A00 < ACCES A 'DKU' SUR NVP='8A.
WORD IMAG-ZERO*2
WORD LIMAG*2
WORD XALAD1-1>XDKU < ADRESSE DE L'IMAGE EN ABSOLU.
STDKU: WORD '8A01 < STABILISATION IMAGE.
WORD IMAG-ZERO*2
WORD LIMAG*2
WORD 0 < SELECTION COULEUR.
AMCOOL: WORD MCOOL < ACCES AU CUMUL DES ARGUMENTS ENVOYES
< A CU3 (COULEUR SOLAR).
DEMCU3: WORD '8B02 < COMMANDE DES REGISTRES DE COULEUR.
WORD MCOOL-ZERO*2
WORD 2
VALAD1: WORD XALAD1 < 'E000 : 1ER SECTEUR ACCESSIBLE,
VALAD2: WORD XALAD2 < 'F000 : 1ER SECTEUR INACESSIBLE.
M0FFF: WORD '0FFF < POUR RAZER LES BITS 0,1,2 ET 3.
XWOR%: VAL 0
<
< PILE DE TRAVAIL :
<
APILE: WORD PILE-1 < @PILE DE SODOME.
ASTACK: WORD STACK-1 < PILE DE TRAVAIL DU PROCESSEUR.
PROG
PAGE
<
<
< 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
<
<
< E F F A C E M E N T D ' U N P O I N T :
<
<
< ARGUMENTS :
< X ET Y CONTIENNENT X ET Y DU POINT.
< C=@IMAG (IMAGE VIDEO).
<
<
RESET: EQU $
PSR B,X,C
LR Y,A
MP NMPL
ADR B,C
LR X,A
SLRS 4
ADR A,C < C=@MOT CONTENANT LE POINT (X,Y).
LAI 'F
ANDR A,X < X=NUMERO DU BIT REPRESENTANT
< LE POINT DANS LE MOT ((C)).
LA 0,C < A=MOT CONTENANT LE POINT (X,Y).
RBT 0,X < EFFACEMENT DU POINT.
STA 0,C < MISE A JOUR DE CE MOT.
PLR B,X,C
RSR
<
<
< I N V E R S I O N V I D E O U N P O I N T :
<
<
< ARGUMENT :
< X ET Y CONTIENNENT X ET Y DU POINT A INVERSER.
< C=@IMAG (IMAGE VIDEO).
<
<
INVER: EQU $
PSR B,X,C
LR Y,A
MP NMPL
ADR B,C
LR X,A
SLRS 4
ADR A,C < C=@MOT CONTENANT LE POINT (X,Y).
LAI 'F
ANDR A,X < X=NUMERO DU BIT REPRESENTANT
< LE POINT DANS LE MOT ((C)).
LA 0,C < A=MOT CONTENANT LE POINT (X,Y).
IBT 0,X < INVERSION VIDEO DU POINT.
STA 0,C < MISE A JOUR DE CE MOT.
PLR B,X,C
RSR
<
<
< T E S T D ' U N P O I N T :
<
<
< FONCTION DE ITEST :
< ITEST=0 : CARY=1 SI POINT=0 ,
< =1 : CARY=1 SI POINT=1.
<
<
< ARGUMENTS :
< X ET Y CONTIENNENT L'X ET L'Y DU POINT ,
< C=@IMAG.
<
<
< RESULTAT :
< CARY POISITIONNE PAR LE POINT (0/1) 9
<
<
TEST: EQU $
PSR B,X,C
LR Y,A < A=COORDONNEE Y DU POINT.
MP NMPL
ADR B,C
LR X,A < A=COORDONNEE X DU POINT.
SLRS 4
ADR A,C < C#MOT CONTENANT LE POINT (X,Y).
LAI 'F
ANDR A,X < X=NUMERO DU POINT DANS LE MOT (C)
LA 0,C
CPZ ITEST < TEST DE LA VALEUR LOGIQUE DU
< POINT.
JNE E1022 < CONVENTION NORMALE (1).
IBT 0,X < CAS DES CONVENTIONS INVERSEES (1)
E1022: EQU $
TBT 0,X < TEST DU POINT.
PLR B,X,C
RSR
PAGE
<
<
< E X I S T E N C E E T V A L E U R P O I N T :
<
<
< ARGUMENT :
< X ET Y CONTIENNENT L'X ET L'Y D'UN POINT.
<
<
< RESULTAT :
< A#0 : M(X,Y) N'EXISTE PAS , OU
< M(X,Y) EXISTE ET M(X,Y)=0.
<
<
< A T T E N T I O N :
< LE TEST D'EXISTENCE NE PORTE QUE
< SUR LA COORSONNEE Y DU POINT !!!
<
<
EXIST: EQU $
LR Y,A
JAL NEXIST < M(X,Y) N'EXISTE PAS : A<0#0 !!!
CP NLIG
JG NEXIST < M(X,Y) N'EXISTE PAS : A>0#0 !!!
<
< CAS OU LE POINT M(X,Y) EXISTE :
<
BSR ATEST < TEST DE LA VALEUR DE M(X,Y).
LAI 1
SBCR A < A=0 SI M(X,Y)=1.
NEXIST: EQU $
RSR
PAGE
<
<
< E N V O I D ' U N E C A R T E A U C C I :
<
<
< ARGUMENT :
< A=ADRESSE MOT DE LA CARTE.
<
<
CCI: EQU $
ADR A,A < CONVERSION EN UNE ADRESSE OCTET.
STA DEMCC+1
LAD DEMCC
SVC 0 < ET ENVOI DE LA CARTE...
RSR
PAGE
IF TITV,,X100,
<
<
< A C C E S C A R A C T E R E I T E M 1 :
<
<
< ARGUMENT :
< IEG=INDEX COURANT DE L'ITEM1.
<
<
< A T T E N T I O N :
< SI L'APPEL A EU LIEU PAR 'SC' ,
< IL EST POSSIBLE QUE L'ACCES A L'ITEM
< AIT LIEU VERS L'ITEM2 , ET NON L'ITEM1 ;
< TOUT DEPENDE DE CDRET.
<
<
< RESULTAT :
< A=CARACTERE COURANT DE L'ITEM1 ,
< IEG<--(IEG)+1 ,
< RETOUR DIRECT EN 'GOGE' SI DEBORDEMENT ITEM1 !!!
<
<
SIMU: EQU $
PSR X
LA IEG < A=INDEX COURANT DE L'ITEM1.
CP NCP < VALIDATION DE (IEG).
JGE SIMUR < ERREUR : HORS L'ITEM1 ...
LR A,X < OK , X=INDEX COURANT DE L'ITEM1.
LBY &AI1 < A=CARACTERE COURANT DE L'ITEM1.
IC IEG < PROGRESSION DE IEG.
PLR X
RSR
<
< ERREUR : HORS L'ITEM1 :
<
SIMUR: EQU $
BR AGOGE < RETOUR DIRECT EN 'GOGE' !!!
<
<
< A C C E S A U N O M D ' U N E I M A G E
< D A N S L ' I T E M1 :
<
<
< RESULTAT :
< S'IL N'Y A PAS DE DEBORDEMENT DE L'ITEM1 ,
< 'NOM' RECOIT LE NOM RECUPERE DANS L'ITEM1
< A CONCURRENCE DE '2*LNOM' CARACTERES ,
< OU JUSQU'A TROUVER UN ';' , QUI EST ALORS
< REMPLACE PAR UN 'EOT'.
<
<
< A T T E N T I O N :
< LE 'NOM' EST INCHANGE, SI LE
< NOM CORANT RECUPERE EST VIDE (';').
<
<
INOM: EQU $
PSR X,Y < ON N'EST JAMAIS ASSEZ PRUDENT...
LXI 2*LNOM < X=NBRE MAX DE CARACTERES.
LYI 0 < INDEX COURANT DU NOM.
<
< BOUCLE DE RECUPERATION :
<
INOM1: EQU $
BSR ASIMU < A=CARACTERE COURANT DE ITEM1.
CPI ";" < EST-CE LA FIN DE NOM ???
JNE INOM2 < NON , ON LE CONSERVE.
CPZR Y < LE NOM RECUPERE EST-IL VIDE ???
JE INOM3 < OUI, 'NOM' RESTE ALORS INCHANGE.
LAI '04 < OUI , ON LE REMPLACE PAR 'EOT' ,
LXI 1 < ET ON ARRETE ICI LA BOUCLE ...
INOM2: EQU $
XR X,Y
STBY &ANOM < RANGEMENT DE (A) DANS NOM.
ADRI 1,X < PROGRESSION DE L'INDEX DE NOM.
XR X,Y
JDX INOM1 < SUITE EVENTUELLE DE LA BOUCLE
< DE RECUPERATION ...
INOM3: EQU $ < CAS DES NOMS VIDES.
PLR X,Y
RSR
X100: VAL 0
PAGE
IF ORDI-"T",XWOR%,,XWOR%
EOT #SIP SP1#
EOT #SIP SP3#
EOT #SIP SP2#
PAGE
<
<
< E N R E G I S T R E M E N T V I D E O E X T E R N E :
<
<
VIDEO: EQU $
IF TITV,X100,,X100
IC KIN < AFIN DE NE PAS PERDRE LA 1ERE
< IMAGE QUE L'ON ENREGISTRE , AU
< CAS OU 'V' EST LA 1ERE COMMANDE
< UTILISEE.
VIDEO1: EQU $
X100: VAL 0
LA ASP1
JAE E7000 < ON N'EST PAS SOUS :SYS !!!
WORD '1EC5 < EN MODE MAITRE :
< 0- MASCAGE DES IT DE NIVEAU 7 ,
< 1- INHIBITION DU ALT-MODE ,
< 2- BLOCAGE DU SWAPPING ,
< 3- MISE DE LA VIDEO EN LECTURE.
IF TITV,,X100,
LX WAITR
JDX $ < ATTENTE DE FIN D'ENREGISTREMENT
< VAEC LES IT7 MASQUEES ...
X100: VAL 0
IF TITV,X100,,X100
LAI NSPTV
SBT 0
WORD '1E15 < RECUPERATION DANS B DE L'@DCT
< DU SYSTEME VIDEO.
ADRI 2,B
LR B,A < A=@REGISTRE X DU SYSTEME VIDEO.
WORD '1E15 < RECUPERATION DANS B DU REGISTRE
< X DU SYSTEME VIDEO.
LR B,Y < Y=REGISTEE X DU SYSTEME
< VIDEO APRES LA MISE EN RECORD.
LX WAITR < INITIALISATION DU DETECTEUR DE
< TIMED OUT DE LA VIDEO , OU DE SA
< MISE 'OFF' !!!
<
< ATTENTE DE CHANGEMENT DE TRAME :
<
WIDEO: EQU $
JDX NTOUT < PAS OU PAS ENCORE DE TIMED OUT.
JMP TOUT < CA Y EST : TIMED OUT !!!
NTOUT: EQU $ < PAS OU PAS ENCORE DE TIMED OUT.
WORD '1E15 < B=REGISTRE X COURANT DU
< SYSTEME VIDEO.
CPR B,Y < A-T'ON CHANGE DE TRAME ???
JE WIDEO < ON BOUCLE JUSQU'A CHANGER
< DE TRAME !!!
TOUT: EQU $ < TIMED OUT.
X100: VAL 0
LA ASP2
WORD '1EC5 < EXECUTION MAITRE :
< 1- RETOUR VIDEO EN ECRITURE ,
< 2- DEBLOCAGE DU SWAPPING ,
< 3- RE-AUTORISATION DU ALT-MODE.
< 4- DEMASCAGE DES IT DE NIVEAU 7.
LA ASET
STA APOINT < ON SUPPOSE L'IMAGE EXTERNE
< ENREGISTREE EN MODE 'SET'.
IF TITV,,X100,
BR AINTER < VERS LE 2EME NIVEAU
< D'INTERROGATION.
X100: VAL 0
IF TITV,X100,,X100
JMP VIDEO1 < ON RESTE DANS CETTE SEQUENCE
< D'ENREGISTREMENT JUSQU'A CE
< QU'UN ALT-MODE L'INTERROMPE !!!
X100: VAL 0
XWOR%: VAL 0
PAGE
<
<
< R E T O U R A ' G E ' :
<
<
IF TITV,,X100,
< CONDITIONS DE RETOUR :
< CDRET=0 : RETOUR OK ,
< CDRET=2 : RETOUR SUITE A UN ALT-MODE.
<
<
ABORT1: EQU $ < ERREUR TYPE ITEM1.
LAD MIT1
BSR APRINT < ENVOI D'UN MESSAGE D'ERREUR.
< PUIS ABORT PAR 'ALTM' !!!
ALTM: EQU $ < CAS D'UN ALT-MODE (PRESC).
<
< DELETE A PRIORI DE LA BRANCHE DE SAUVEGARDE :
< (MEME S'IL NE S'AGIT PAS D'UN APPEL PAR SC)
<
WORD '1E45 < RENVOIE : A=<IDESC>.
ADRI '30,A < CONVERSION ASCI DE L'<IDESC>.
STBY NSC+2 < GENERATION DU NOM DE LA
< BRANCHE DE SAUVEGARDE.
LAD DELSC
SVC 0 < DELETE LA BRANCHE 'SC <IDESC> '.
<
< PREPARATION DU RETOUR :
<
STZ MODCAL,W < AFIN DE FAIRE COMME SI L'APPEL
< AVAIT EU LIEU PAR 'GE' , AFIN
< DE RETOURNER A 'GE' ET NON A
< 'SC' ...
LAI 2 < A=CODE D'ERREUR (2).
JMP GOBAC < VERS LE RETOUR A GE/EI.
GOGE: EQU $
LAI 0 < A=CODE DE RETOUR OK (0).
GOBAC: EQU $
STA CDRET,W < TRANSMISSION DES CONDITIONS
< DE RETOUR PAR LE CDRET.
X100: VAL 0
IF TITV,X100,,X100
GOGE: EQU $
LX NMOTS < X=NBRE DE MOTS A RAZER.
E3000: EQU $
STZ &AI2 < RAZ DES ITEMS 1 ET 2.
< (EN EFFET ON Y A MIS DES
< COCHONNERIES...)
JDX E3000
X100: VAL 0
LAI '06 < NVP DE LOAD SOUS :SYS.
IF TITV,X100,,X100
LB NGE
X100: VAL 0
IF TITV,,X100,
LX WHOCAL < NATURE DE LA BRANCHE DE RETOUR.
LB &NCALL < B=NOM DE LA BRANCHE DE RETOUR
< A PRIORI ... (EN FAIT CE SERA
< PEUT-ETRE LA BRANCHE SC ....)
CPZ MODCAL,W < L'APPEL A-T'IL EU LIEU PAR
< 'GE' OU BIEN PAR 'SC' ???
JE E4502 < APPEL PAR 'GE' ==> RETOUR A 'GE'.
<
< APPEL PAR 'SC' ==> RETOUR A 'SC' :
<
LA IEG < RECUPERATION DE L'2NDEX COURANT
< DE SIMULATION CARACTERES.
STA MODCAL,W < ET TRANSMISSION A 'SC'.
WORD '1E45 < RECUPERATION : A=IDESC.
ADRI '30,A < CONVERSION ASCI.
STBY 2,W < ET MISE EN TETE DE BRANCH.
LAI '05 < NVP DE LOAD SOUS ACN.
LB NSC < LE NOM DE L'OVERLAY DE
< RETOUR EST :
< 'SC<SPACE><SPACE><IDESC><SPACE>'
E4502: EQU $
X100: VAL 0
STB 0,W < MISE DU NOM (B) EN TETE
< DE LA BRANCHE D'OVERLAY.
STBY DEMSGN < DEMSGN EST MISE EN MODE
< 'LOAD SOUS :SYS'.
LA APILE
LR A,K < REINITIALISATION DU REGISTRE
< K AVEC LA PILE DE SODOME.
IF TITV,,X100,
<
< INVALIDATION DE L'ITEM2 EN NE RAZANT QUE
< SON EN-TETE (EN EFFET IL NE FAUT PAS LE
< RAZER LUI-MEME CAR IL PEUT CONTENIR UNE
< BIBLIOTHEQUE APPELEE PAR 'SC'...) :
<
LXI LTN < X=NBRE DE MOTS DE L'EN-TETE.
RAZET: EQU $
STZ &AI2
JDX RAZET
<
< RESTAURATION DE L'EN-TETE DE L'ITEM1 :
<
LA ASI1
LB I1
LXI LNOM+1
MOVE
CPZ MODCAL,W < RETEST DU MODE D'APPEL.
JNE E101 < DANS LE CAS D'UN RETOUR A 'SC'
< ON RESTE SUR 8K MOTS ...
X100: VAL 0
LAD RELMEM
SVC 0 < RETOUR A 4K MEMOIRE.
E101: EQU $
LAI MCDA-ZERO
BSR ACCI < RETOUR A 'CDA'...
LAD DEMSGN
BSR AOVL < TENTATIVE DE CHARGEMENT DE 'GE'.
LAD DEMCCI
SVC 0 < SI ERREUR , ON FAIT UN RETOUR AU
< CCI ...
JMP E101 < NOUVELLE TENTATIVE SI !GO.
PAGE
<
<
< G E N E R A T E U R S Y N T H E T I Q U E V I D E O :
<
<
< PRINCIPE :
IF TITV,X100,,X100
< SOIT VIX SUR LAQUELLE ON FAIT UN
< DESSIN PAR G2/G3 ; SOIT DE PLUS !CM VIX=VI2 ;
< VI2 ETANT UNE LIGNE REBOUCLEE SUR VI1 , TOUT
< CARACTERE RECU PAR VIX ETANT DUPLIQUE SUR
< VI2 (PAR !CM) EST RECU PAR VI1.
< LE GENERATEUR SYNTHETIQUE FAIT SIMULTANEMENT
< UNE LECTURE ALPHA-NUMERIQUE SUR VI1 ; AINSI TOUS
< LES CARACTERES EMIS PAR L'INTERMEDIAIRE DE
< G2/G3 SONT RECUS PAR LE GENERATEUR VIDEO ;
< LORSQUE LE R/C DE FIN DE DESSIN (PRIMITIVE 'H'
< DE G2/G3) EST RECU PAR LE GENERATEUR , IL
< TRANSFORME LA CHAINE DE CARACTERES EN UNE
< IMAGE VIDEO REPRSENTE EN MEMOIRE PAR
< UNE MATRICE DE BITS.
< DONC :
< !CM VIX=VI2
< G2/G3 --> VIX
< VI2 <--> VI1
< !ASSIGN A=VI1
< GENERATEUR VIDEO <-- VI1.
X100: VAL 0
IF TITV,,X100,
< CE PROCESSEUR PERMET A PARTIR DE
< COMMANDES CONTENUS DANS L'ITEM1 DE
< TRAVAILLER SUR DES IMAGES PRE-CONSTRUITES
< OU PAS ...
< SI MODCAL#0 : 'TI' EST EN FAIT APPELE
< PAR 'SC' QUI LUI DEMANDE AINSI
< D'INTERPRETER UNE PARTIE DE SES
< COMMANDES.
< MODCAL DONNE ALORS L'INDEX INITIAL
< DE SIMULATION CARACTERES IEG.
< LE BIT0 DE MODCAL INDIQUE ALORS LE
< NOM DE L'APPELANT DE SC : 0 APPEL PAR GE ,
< 1 : APPEL PAR EI ...
<
<
< ARGUMENTS :
< MODCAL=INDEX CARACTERE COURANT ,
< BIT0=0 : RETOUR A GE SI ALT-MODE ,
< BIT0=1 : RETOUR A EI SI ALT-MODE.
< CDRET=RELAI D'ACCES A L'ITEM COURANT.
< B=INDEX DE L'IMAGE APPELEE EVENTUELLEMENT
< PRECEDEMMENT PAR 'SC', LORS D'UN APPEL
< PAR 'SC' (MODCAL#0).
X100: VAL 0
<
<
< FORMAT D'UNE IMAGE VIDEO SOUS SGN :
< MOTS0-9 : NOM DE L'IMAGE VIDEO , TERMINEE
< PAR UN 'EOT' S'IL Y A MOINS DE 20
< CARACTERES) ,
< MOT10 : 'EOT;'00 ,
< MOT11 : -3 : IMAGE DIRECTE ,
< -2 : IMAGE INVERSEE ,
< -1 : IMAGE A FOND HACHURE ,
< ON PEUT AINSI DIFFERNCIER
< UNE IMAGE VIDEO , D'UNE SIMULATION DE
< FLOPPY , MAIS AUSSI POURSUIVRE
< ULTERIEUREMENT LA MISE A JOUR D'UNE
< IMAGE VIDEO ...
<
<
< I N I T I A L I S A T I O N :
<
<
WORD IMAG < VALEUR CONSTANTE DE LA BASE C.
WORD LOC+'80
WORD BRANCH
IMAGE: EQU $
LRP K
ADRI -1,K
PLR C,L,W < INITIALISATION DES 3 BASES.
LA ASTACK
LR A,K < INITIALISATION DE K.
STZ INIT < A CAUSE DES ALT-MODES !!!
IC KIN < COMPTAGE DES ENTRIES.
IF TITV,,X100,
JG ALTM < RETOUR A 'GE' DANS LE CAS D'UN
< ALT-MODE (QUE L'APPEL AIT
< EU LIEU PAR 'SC' OU PAR 'GE').
X100: VAL 0
IF TITV,X100,,X100
JE GOGE < CAS D'UNE 2EME ENTRY SANS QU'IL
< Y AIT EU DE PASSAGE PREALABLE
< A L'ADRESSE 'AINTER' (E2).
JL INITV < CAS DE LA 1ERE ENTRY (INIT).
BR AINTER < CAS DES ENTREES SECONDAIRES ,
< ALORS QU'UN PASSAGE EN E2
< AU MOINS A EU LIEU ...
INITV: EQU $
X100: VAL 0
IF TITV,,X100,
<
< INITIALISATION DE IEG (INDEX DE SIMULATION) :
<
LA MODCAL,W < SI MODCAL#0 : L'APPEL A EU
< LIEU PAR 'SC'.
JAE PASC < CE N'EST PAS UN APPEL PAR 'SC'.
STB NOMARG < DANS LE CAS D'UN APPEL PAR 'SC',
< ON SAUVEGARDE L'INDEX DE DEBUT DU
< NOM DE L'IMAGE APPELEE EVENTUEL-
< LEMENT PRECEDEMMENT PAR 'SC'.
PASC: EQU $
LBI 0 < POUR GE A PRIORI.
TBT 0
RBT 0 < RAZ DU BIT0 A PRIORI.
ADCR B < B=0 : RETOUR A GE ,
< B=1 : RETOUR A EI SI ALT-MODE.
STB WHOCAL < SAVE LE NUMERO DE LA BRANCHE.
STA IEG < MISE EN PLACE DE L'INDEX DE
< SIMULATION CARACTERES.
JAE E4510 < VERS L'ALLOCATION 8K MOTS.
LA CDRET,W < (A)=RELAI VERS L'ITEM COURANT,
< MAIS, EST-CE BIEN UN RELAI ???
JAGE ALTM < NON , EN FAIT , IL S'AGIT
< D'UNE ENTREE FORT COMPLEXE
< COINCIDANT AVEC UN ALT-MODE
< FRAPPE PENDANT L'APPEL DE TI
< PAR SC ......
STA AI1 < OK , CDRET CONTIENT LE
< RELAI VERS L'ITEM COURANT.
JMP E4500 < IL EST DE PLUS INUTILE DE
< DEMANDER 8K , ON LES A DEJA ...
<
< VALIDATION DU TYPE DE L'ITEM1 :
<
E4510: EQU $
LXI IINDIC-LTN*2 < X=INDEX OCTET DU TYPE ITEM.
LBY &AI1 < ACCES AU TYPE DE L'ITEM COURANT.
CPI "T" < EST-CE UN TEXTE ???
JNE ABORT1 < ERREUR DE TYPE 'T' !!!
X100: VAL 0
<
< DEMANDE D'ALLOCATION 8K-MOTS :
<
LAD DEMMEM
SVC 0
E4500: EQU $
<
< PASSAGE SUR LA 'CDAI' :
< (PERMETTANT DONC AINSI
< L'ACCES A 'CDAJ' PAR
< UTILISATION DE "!CDAI=J")
<
LAI MCDAI-ZERO
BSR ACCI < ENVOI DE "!CDAI"...
IF ORDI-"T",XWOR%,,XWOR%
<
< TEST DU NUMERO DE COMPTE D'APPEL :
<
WORD '1E25 < (A,B)=<ACN>.
CP ACNSYS
JNE E4000 < ON N'EST PAS SOUS :SYS !!!
LR B,A
CP ACNSYS+1
JE E4001 < ON EST SOUS :SYS !!!
E4000: EQU $ < ON N'EST PAS SOUS :SYS.
STZ ASP3 < PAS DE DEMANDE DE STABILISATION
< DE L'2MAGE VIDEO.
STZ ASP1 < L'ENREGISTREMENT EST IMPOSSIBLE.
E4001: EQU $ < ON EST SOUS :SYS , YOUPI !!!
XWOR%: VAL 0
IF TITV,,X100,
<
< SAUVEGARDE DE L'EN-TETE DE ITEM1 :
<
LB ASI1
LA I1
LXI LNOM+1
MOVE
CPZ NOMARG < Y-A-T'IL UNE IMAGE PRECEDENTE ????
JL PASIMA < NON...
<
< MISE EN PLACE D'UN NOM INITIAL (CAS 'SC') :
<
LY IEG < SAVE IEG DANS Y.
LA NOMARG
STA IEG < ET ON FAIT CROIRE QUE L'INDEX
< COURANT POINTE SUR LE NOM DE
< L'IMAGE PRECEDENTE...
BSR AINOM < RECUPERATION DU NOM DE L'IMAGE
< PRECEDENTE.
STY IEG < PUIS, ON RESTAURE IEG...
PASIMA: EQU $
X100: VAL 0
IF INITS,X100,,X100
<
< INITIALISATION DE LA ZONE SCRATCH DU DISQUE :
<
LXI 128 < X=128 MOTS=1 SECTEUR.
E830: EQU $
STZ &ASECT < RAZ DU BUFFER SECTEUR COURANT.
JDX E830
STZ WDK+3 < RAZ DU NUMERO DE SECTEUR.
LXI LIMAG/128 < X=NBRE DE SECTEURS A INITIALISER.
LAD WDK
E831: EQU $
PSR X < SAVE LE DECOMPTE DES SECTEURS.
SVC 0 < INIT. LE SECTEUR COURANT.
PLR X
IC WDK+3 < PASSAGE AU SECTEUR SUIVANT.
JDX E831 < AU SUIVANT SI EXISTE ...
X100: VAL 0
<
< ENTREE DU NOM DE L'IMAGE :
<
IMAGE2: EQU $ < ENTRY POUR CHANGEMENT DE NOM.
< (SUITE A UNE 2EME INTERRO-
< GATION 'N').
IF TITV,X100,,X100
LAD MNOM
BSR APRINT < ENVOI D'UN MESSAGE 'NOM>'.
LAD DEMIN
SVC 0 < ENTREE DU NOM DU DESSIN.
X100: VAL 0
IF TITV,,X100,
BSR AINOM < RECUPERATION DU NOM DE L'2MAGE.
X100: VAL 0
LAI '04
STBY &AEOT < MISE D'UN 'EOT' A PRIORI
< TOUT AU BOUT DU NOM.
< (MEME S'IL Y EN A DEJA UN) ...
<
< INTERROGATION DE L'UTILISATEUR :
<
E300: EQU $
IF TITV,X100,,X100
LAD MINT
X100: VAL 0
IF TITV,,X100,
STZ OG < LORS DE CHAQUE COMMANDE PRIMAIRE,
< ON INVALIDE AINSI LE CURSEUR
< GRAPHIQUE DE '0B; CELUI-CI PEUT
< ETRE REAUTORISEE PAR LA PRIMITIVE
< 'G' A LA SUITE DE 'M' DANS
< L'ITEM COURANT.
X100: VAL 0
BSR ADESIR < QUESTION-REPONSE UTILISATEUR.
<
< REPONSES RECONNUES :
< R : ENREGISTREMENT D'UNE IMAGE VIDEO (SUR NVP='0A),
< A PARTIR D'UN DESSIN GRAPHIQUE (G2/G3) ,
< INITIALISATION DU FOND.
< E : IDENTIQUE A 'R' , MIAS SANS INITIALISATION
< DU FOND BIEN QU'IL SOIT DEMANDE POUR
< INITIALISRR 'APOINT'.
< RECUPERATION D'IMAGES PREEXISTANTES.
< V : ENREGISTREMENT VIDEO EXTERNE ,
< D : AFFICHAGE D'UNE IMAGE VIDEO ,
IF TITV,,X100,
< G : VALIDATION IMAGE SANS LOAD
< DANS LE CAS DE L'APPEL PAR 'SC' ,
X100: VAL 0
< F : RETOUR A 'GE'.
<
IF ORDI-"T",XWOR%,,XWOR%
CPI "V"
JE VIDEO < ENREGISTREMENT A PARTIR D'1NE
< SOURCE VIDEO EXTERNE.
XWOR%: VAL 0
CPI "D"
JE DESSIN < DEMANDE D'UNE IMAGE VIDEO.
CPI "R"
JE RECORD < ENREGISTREMENT D'UNE IMAGE.
CPI "E"
JE EDIT < PRISE EN COMPTE D'UNE IMAGE
< PREEXISTANTE.
CPI "F"
JE GOGE < RETOUR A 'GE'.
IF TITV,,X100,
CPI "G"
JNE E4501 < NON , COMMANDE NON RECONNUE ...
CPZ MODCAL,W < DANS LE CAS DE 'G' , L'APPEL
< A-T'IL EU LIEU PAR 'SC' ???
JNE E2 < OUI , 'G' EST AUTORISEE.
E4501: EQU $ < ERREUR DE COMMANDE.
X100: VAL 0
<
< ERREUR :
<
E7000: EQU $
LAD MERR
BSR APRINT < REPONSE INCOMPREHENSIBLE ...
JMP E300 < VERS UNE NOUVELLE INTERROGATION.
PAGE
<
<
< I M A G E P R E E X I S T A N T E :
<
<
EDIT: EQU $
IC INIT < INIT#0 : DONC PAS D'ECRASEMENT
< DE L'IMAGE PREEXISTANTE PAR
< LE FOND !!!
<
<
< E N R E G I S T R E M E N T D ' U N E I M A G E :
<
<
RECORD: EQU $
<
< CHOIX DU FOND DE L'IMAGE :
<
IF TITV,X100,,X100
LAD MFOND
BSR APRINT < ENVOI D'UN MESSAGE 'FOND= '.
LAD DEMFON
SVC 0 < LECTURE DU FOND SOUS FORME DE
< 4 CARACTERES HEXADECIMAUX.
X100: VAL 0
<
< CONVERSION HEXADECIMALE --> BINAIRE :
<
LYI 4 < Y=NBRE DE CARACTERES ATTENDUS.
BSR AHEX
JNE RECORD < ERREUR DE CARACTERES ...
<
< CHOIX DE LA ROUTINE D'AFFICHAGE DES POINTS :
<
LB ASET < SET A PRIORI.
JAE E52 < EFFECTIVEMENT LE FOND EST NOIR.
LB ARESET < RESET A PRIORI.
CPI -1
JE E52 < EFFECTIVEMENT , LE FOND EST BLAN.
LB AINVER < ET BIEN ON FERA DE L'INVERSION.
E52: EQU $
STB APOINT < MISE EN PLACE DU RELAI D'ACCES
< A LA ROUTINE D'AFFICHAGE CHOISIE.
<
< INITIALISATION DE L'IMAGE :
<
CLEAR: EQU $
CPZ INIT < DOIT-ON INITIALISER LE FOND ???
STZ INIT < REINITIALISATION INIT A PRIORI.
JNE E400 < NON , PAS D'INITIALISATION ;
< C'EST UN CHANGEMENT DE NOM.
LX ALIMAG
E1: EQU $
STA &AIMAG < INITIALISATION DE L'IMAGE.
JDX E1
<
< E N R E G I S T R E M E N T G R A P H I Q U E :
<
E400: EQU $ < ENREGISTREMENT DE LA SUITE
< D'UN DESSIN GRAPHIQUE.
IF ORDI-"T",XWOR%,,XWOR%
IF TITV,,X100,
JMP E2 < VERS LE 2EME NIVEAU D'INTERRO.
X100: VAL 0
IF TITV,X100,,X100
LAD MINIT < DEMANDE ENREGISTREMENT ???O/N.
BSR ADESIR < QUESTION-REPONSE UTILISATEUR.
CPI "N"
JE E2 < NON : PAS D'ENREGISTREMENT , ON
< VA DIRECTEMENT AU 2EME NIVEAU
< D'INTERROGATION.
CPI "O"
JE E470 < OUI : VERS LA LECTURE SUR
< LE NVP='0B.
LAD MERR
BSR APRINT < REPONSE INCOMPREHENSIBLE...
JMP E400 < NOUVELLE INTERROGATION.
E470: EQU $
LAD LG
SVC 0 < LECTURE SUR LE NVP='0A.
JE E847 < OK.
<
< CAS OU LE NVP='0A N'EST PAS ASSIGNE :
<
LAD DEMCCI
SVC 0 < ON FAIT UN RETOUR PROVISOIRE
< AU CCI POUR !ASSIGN.
JMP E400 < ET ON RECOMMENCE AU !GO.
<
< C O N V E R S I O N G R A P H I Q U E --> V I D E O :
<
E847: EQU $
LXI 0 < INDEX GRAPHIQUE.
<
< BOUCLE PRIMAIRE DE RECUPERATION GRAPHIQUE :
<
E10: EQU $
BSR AGET < A=CARACTERE COURANT.
CPI '1D < EST-CE UN 'GS' ???
JNE E10 < NON , IGNORE.
<
< CAS D'UN 'GS' : DEBUT D'UNE CHAINE GRAPHIQUE :
<
E11: EQU $
BSR AGET < A=CARACTERE COURANT.
CPI '20 < EST-CE UN CTRL-XXX ???
JL E11 < OUI , IL EST IGNORE.
<
< CAS DU 1ER POINT D'UNE CHAINE GRAPHIQUE :
<
E12: EQU $
STA HY1 < HIGH-Y 1ER POINT.
BSR AGET
STA LY1 < LOW-Y 1ER POINT.
BSR AGET
STA HX1 < HIGH-X 1ER POINT.
BSR AGET
STA LX1 < LOW-X 1ER POINT.
<
< CARACTERES SUIVANTS LE 1ER POINT :
<
E18: EQU $
BSR AGET < A=CARACTERE COURANT.
CPI '1F < EST-CE UN 'US' ???
JL E11 < NON UN CTRL-XXX IGNORE , ON
< VA DE PLUS CHANGER DE 1ER POINT.
JE E10 < OUI , ON RETOURNE A LA BOUCLE
< PRIMAIRE DE RECUPERATION ,
< JUSQU'A TROUVER UN NOUVEAU 'GS'.
<
< RECUPERATION DU 2EME POINT :
<
STA HY2 < HIGH-Y 2EME POINT.
BSR AGET
STA LY2 < LOW-Y 2EME POINT.
BSR AGET
STA HX2 < HIGH-X 2EME POINT.
BSR AGET
STA LX2 < LOW-X 2EME POINT.
<
< C O O R D O N N E E S X E T Y D E S
< P O I N T S 1 E T 2 :
<
PSR X < SAVE L'INDEX GRAPHIQUE.
LAD HY
LR A,B < RECEPTEUR=#HY.
LAD HY1 < EMETTEUR=@HY1.
LXI 4
MOVE < POINT COURANT=1ER POINT.
BSR ACONV < CALCUL DES COORDONNEES X,Y.
STX X1 < X 1ER POINT.
STY Y1 < Y 1ER POINT.
LAD HY
LR A,B < RECEPTEUR=@HY.
LAD HY2 < EMETTEUR=@HY2.
LXI 4
MOVE < POINT COURANT=2EME POINT.
BSR ACONV < CALCUL DES COORDONNEES X,Y
< DU 2EME POINT.
STX X2 < X 2EME POINT.
STY Y2 < Y 2EME POINT.
LAD HY1
LR A,B < RECEPTEUR=1ER POINT.
LAD HY2 < EMETTEUR=2EME POINT.
LXI 4
MOVE < LE 1ER POINT EST ECRASE PAR
< LE 2EME POINT , AFIN DE PRENDRE
< EN COMPTE LES CHAINAGES DE
< SEGMENTS.
BSR ASEG < TRACE DU SEGMENT (M1,M2).
<
<
<
PLR X < RESTAURE L'INDEX GRAPHIQUE.
JMP E18 < VERS LA RECHERCHE DU NOUVEAU
< 2EME POINT.
X100: VAL 0
XWOR%: VAL 0
IF ORDI-"S",XWOR%,,XWOR%
IF TITV,X100,,X100
LAD MINIT
BSR ADESIR < CA NE SERT A RIEN, MAIS POUR LA
< COMPATIBILITE...
X100: VAL 0
JMP E2 < VERS LE 2EME NIVEAU D'INTERRO...
XWOR%: VAL 0
<
<
< C O M P T A G E D E S P O I N T S / I M A G E :
<
<
EE15: EQU $
BR ACOMPT < VERS LE MODULE SPECIFIQUE.
<
< E R R E U R :
<
E102: EQU $
LAD MERR
BSR APRINT < ENVOI D'UN MESSAGE D'ERREUR.
BR AIMAG2 < VERS UNE REINITIALISATION DE TV.
PAGE
<
< L I S T E D E S S E C T E U R S A T R A I T E R :
<
< FONCTION :
< CE MODULE PERMET DE RECUPERER
< 8 CARACTERES HEXAS ; CHAQUE BIT
< CORRESPONADANT A 1 SECTEUR D'1NE
< IMAGE SCRATCH ; UN BIT A 0
< INDIQUE QU'IL FAUT IGNOERER CE
< SECTEUR LORS DES OPERATIONS LOGIQUES
< ENTRE IMAGES ....
<
E2101: EQU $
IF TITV,X100,,X100
LAD ML1
BSR APRINT < ENVOI D'UNE INVITATION.
LAD DEMFON
SVC 0 < ENTREE DE CARACTERES CORRESPON-
< DANT AUX SECTEURS 0 A 'F.
X100: VAL 0
LYI 4 < Y=4 CARACTERES A DECODER.
BSR AHEX < CONVERSION HEXA --> BINAIRE.
JNE E2101 < ERREUR DE SYNTAXE.
STA PATS < MEMORISATION DES SECTEURS 0 A 'F.
E2102: EQU $
IF TITV,X100,,X100
LAD ML2
BSR APRINT < ENVOI D'1NE INVITATION.
LAD DEMFON
SVC 0 < ENTREE DE 4 CARACTERES CORRES-
< PONDANT AUX SECTEURS '10-'1F.
X100: VAL 0
BSR AHEX < CONVERSION HEXA --> BINAIRE
< DES SECTEURS '10 A '1F.
JNE E2102 < ERREUR DE SYNTAXE.
STA PATS+1 < MEMORISATION SECTEURS '10-'1F.
JMP E410 < VERS L'2NTERROGATION.
<
< R E T O U R T E M P O R A I R E A U C C I :
<
E2700: EQU $
LAD DEMCCI
SVC 0
JMP E410 < VERS L'INTERROGATION SI !GO.
<
< D E F I N I T I O N D E L A M A T R I C E
< D E T R A N S F O R M A T I O N :
<
E2800: EQU $
BR ADEF < VERS LE MODULE SPECIFIQUE.
<
<
< R E C H E R C H E I M A G E V I D E O :
<
<
DESSIN: EQU $
LAI '05
BSR AGOSGN < TENTATIVE DE CHARGEMENT.
JE E350 < OK , CHARGEMENT REUSSI.
LAI '06
BSR AGOSGN < SINON TENTATIVE DE CHARGEMENT
< SOUS :SYS.
JNE E102 < ET NON , L'IMAGE N'EXISTE PAS !!!
E350: EQU $
LA &ALONG < VALIDATION DE L'IMAGE CHARGEE.
JAGE E102 < ERREUR : IL S'AGIT D'UNE
< SIMULATION DE FLOPPY.
CPI -3
JL E102 < IL S'AGIT DE QUELQUE CHOISE...
LR A,X < OK , X=INDEX DE RECUPERATION.
LA &LROUT < SI <0 , C'EST UN INDEX DE
< RECUPERATION DE LA ROUTINE
< D'AFFICHAGE DES POINTS.
STA APOINT < CE QUI NOUS DONNE L'ADRESSE
< DE LA ROUTINE SET/RESET/INVER.
<
<
< F I N D E C O N V E R S I O N :
<
<
E2: EQU $
<
< INTERROGATION UTILISATEUR :
<
E410: EQU $
IF TITV,X100,,X100
IC KIN < MEMORISATION QU'IL Y A EU AU
< MOINS UN PASSAGE PAR ICI ...
LAD MINT
X100: VAL 0
BSR ADESIR < QUESTION-REPONSE UTILISATEUR.
<
< REPONSES RECONNUES :
< D : ON RESTE SUR L'INTERROGATION (PERMET DONC
< DE RAFRAICHIR L'IMAGE VIDEO...) ,
< DE PLUS EDITE LE NBRE DE POINTS DE L'IMAGE
< COURANTE...
< G : VERS UNE REINITIALISATION ENTIERE ,
< (SAUF DE L'IMAGE SCRATCH !!!)
< S : SAVE L'IMAGE COURANTE EN SCRATCH ,
< L : ENTREE DE LA LISTE DES SECTEURS D'1NE
< IMAGE SCRATCH A PRENDRE EN COMPTE ,
< O : 'OR' ENTRE L'IMAGE COURANTE ET L'IMAGE SCRATCH,
< A : DE MEME AVEC 'AND' ,
< E : DE MEME AVEC 'EOR' ,
< H : DE MEME AVEC 'AD' ('HADDITION'...) ,
< Z : DE MEME AVEC 'SB' ('ZOUSTRACTION'....)
< U : IMAGE-COURANTE <-- IMAGE-SRACTCH ,
< N : PERMET UN 2EME ENTRY DANS TV , AFIN
< DE POUVOIR FAIRE DES CHANGEMENTS DE NOM ,
< ET DES SUPERPOSITIONS ,...
< I : INVERSION VIDEO DE L'IMAGE ,
< P : FILTRAGE D'UNE IMAGE ,
< C : PSEUDO-COLORIAGE DE L'IMAGE ,
< T : TRANSPOSITION DE L'IMAGE ,
< = : DEFINITION DE LA MATRICE DE TRANSFORMATION ,
< V : ENTREE DE LA VIRTUALISATION DE L'2MAGE ,
< M : MODIFICATION INTERACTIVE DE L'IMAGE VIDEO
< PAR LE CURSEUR GRAPHIQUE DE LA VISU ,
< - : DELETE L'IMAGE VIDEO SOUS SGN ,
< + INSERT L'IMAGE VIDEO SOUS SGN ,
< F : RETOUR A GE SANS RIEN FAIRE D'AUTRE ,
< W : RETOUR TEMPORAIRE AU CCI ,
< R : DEMANDE D'UNE SUITE GRAPHIQUE AU DESSIN (VI1).
<
CPI "R"
JE E400 < VERS L'ENREGISTREMENT DE LA
< SUITE GRAPHIQUE DE L'IMAGE VIDEO.
CPI "V"
JE E2400 < VIRTUALISATION DE L'IMAGE.
CPI "L"
JE E2101 < ENTREE LISTE DES SECTEURS.
CPI "D"
JE EE15 < EDITION DU NBRE DE POINTS.
CPI "F"
JE E420 < VERS UN RETOUR IMMEDIAT A 'GE'.
CPI "W"
JE E2700 < DEMANDE DE RETOUR AU CCI.
CPI "-"
JE E430 < VERS UN DELETE-SGN DE L'IMAGE.
CPI "+"
JE E440 < VERS UN STORE SGN DE L'IMAGE.
CPI "="
JE E2800 < DEFINITION DE LA MATRICE.
CPI "I"
JE E870 < INVERSION VIDEO DE L'IMAGE.
CPI "P"
JE E2000 < DEMANDE DE FILTRAGE D'UNE IMAGE.
CPI "C"
JE E2010 < PSEUDO-COLORIAGE DE L'IMAGE.
CPI "T"
JE E2020 < TRANSPOSITION DE L'IMAGE.
CPI "M"
JE E790 < MODIFICATION INTERACTIVE DE
< L'IMAGE VIDEO.
CPI "N"
JE E860 < 2EME ENTRY DANS LE PROCESSEUR.
CPI "O"
JE E842 < OR(IMAGE COURANTE,IMAGE SCRACTH).
CPI "A"
JE E843 < AND(IMAGE COURANTE,IMAGE SCRATCH)
CPI "E"
JE E844 < EOR(IMAGE COURANTE,IMAGE SCRATCH)
CPI "H"
JE E2550 < AD(IMAGE SCRATCH,IMAGE COURANTE).
CPI "Z"
JE E2551 < SB(IMAGE COURANTE,IMAGE SCRATCH).
CPI "U"
JE E2500 < RAPPEL DE L'IMAGE SCRATCH.
CPI "S"
JE E834 < SAVE L'IMAGE COURANTE EN SCRATCH.
CPI "G"
JE E833 < REINITIALISATION DE 'TV' ,
< SAUF DE LA ZONE SCRATCH !!!
IF ORDI-"S",XWOR%,,XWOR%
ADRI -"0",A < TEST DES FONCTIONS INDICATEUR TV.
JAL ERROR
CPI 7 < DOIT ETRE ENTRE 0 ET 7.
JG ERROR
XWOR%1: VAL TVSIMU=0 < DECALAGE DES INDICATEURS.
IF XWOR%1,,X100, < A APPLIQUER SI DIFFERENT DE ZERO.
SLLS XWOR%1
X100: VAL 0
TBT 13 < 0/1/2/3 OU 4/5/6/7 ???
RBT 13 < RAZ A PRIORI...
LR A,B < SAVE DANS B LA COULEUR...
JNC TVCOL1 < 0/1/2/3.
XWOR%1: VAL TVIN=0
XWOR%1: VAL NBITMO-1-XWOR%1
SBT XWOR%1 < 4/5/6/7.
TVCOL1: EQU $
STA STDKU+3 < STORE DES INDICATEURS.
LAD STDKU < STABILISATION DE L'IMAGE
SVC 0 < SI ON EST SOUS :SYS
STB STDKU+3 < RAZ LE BIT IN A PRIORI...
JMP E410 < VERS UNE NOUVELLE INTERROGATION.
XWOR%: VAL 0
ERROR: EQU $ < ERREUR 2EME NIVEAU INTERRO.
LAD MERR
BSR APRINT < REPONSE INCOMPREHENSIBLE ??
JMP E410 < VERS UNE NOUVELLE INTERROGATION.
<
< C H A N G E M E N T D E N O M :
<
E860: EQU $
IC INIT < INIT#0 : AINSI ON NE REINITIA-
< LISERA PAS LE FOND DE L'IMAGE ...
<
< R E I N I T I A L I S A T I O N G E N E R A L E ,
< S A U F L ' I M A G E S C R A T C H :
<
E833: EQU $
BR AIMAG2 < VERS UNE 2EME ENTRY ...
<
< V I R T U A L I S A T I O N D E L ' I M A G E :
<
E2400: EQU $
BR AVIRT < VERS LE MODULE SPECIFIQUE.
<
< F I L T R A G E I M A G E :
<
E2000: EQU $
LBI 0 < B=0 : DEMANDE DE FILTRAGE.
BR AFILTR < VERS LE MODULE DE FILTRAGE.
<
< P S E U D O - C O L O R I A G E :
<
E2010: EQU $
LBI 1 < B=1 : PSEUDO-COLORIAGE IMAGE.
BR AFILTR
<
< T R A N S P O S I T I O N D E L ' I M A G E :
<
E2020: EQU $
LBI -1 < B=-1 : DEMANDE DE TRANSPOSITION.
BR AFILTR
<
< I N V E R S I O N V I D E O D E L ' I M A G E :
<
E870: EQU $
LX ALIMAG < X=NBRE DE MOTS DE L'IMAGE.
E450: EQU $
LA &AIMAG < A=1 MOT DE L'IMAGE.
EORI -1 < INVERSION BIT A BIT DE L'IMAGE.
STA &AIMAG < ET MISE A JOUR DE L'IMAGE.
JDX E450 < AU MOT SUIVANT.
LA APOINT < ACCES A LA ROUTINE COURANTE.
LB ARESET < SET COURANT A PRIORI.
CP ASET < EST-CE SET ???
JE E451 < OUI , ON PASSE DONC EN RESET.
CP ARESET < EST-CE RESET ???
JNE E410 < NON , INVER QUE L'ON LAISSE
< TELLE QU'ELLE EST ...
LB ASET < ET OUI , ON PASSE DONC EN SET.
E451: EQU $
STB APOINT < MISE EN PLACE DE LA NOUVELLE
< ROUTINE SET/RESET/INVER.
JMP E410 < PUIS ENFIN VERS L'INTERROGATION.
<
< D E L E T E - S G N D E L ' I M A G E :
<
E430: EQU $
LAI '03
BSR AGOSGN < ESSAI DE DELETE SGN.
E102J: JNE E102 < ERREUR : LE NOM N'EXISTE PAS ...
JMP E410 < VERS LA DEMANDE DES DESIRS
< DE L'UTILISATEUR ....
<
< S T O R E - S G N D E L ' I M A G E :
<
E440: EQU $
LA APOINT < RECUPERATION DE L'ADRESSE DE
< LA ROUTINE SET/RESET/INVER.
LBI -3 < SET A PRIORI.
CP ASET
JE E960 < EFFECTIVEMENT C'EST SET.
LBI -2 < RESET A PRIORI.
CP ARESET
JE E960 < EFFECTIVEMENT C'EST RESET.
LBI -1 < ET BIEN NON , C'EST INVERS.
E960: EQU $
STB &ALONG < MAJ DE LA LONGUEUR (?) , POUR
< DISTINGUER UNE IMAGE VIDEO
< D'UNE IMAGE DE SIMULATION FLOPPY.
LAI '03
BSR AGOSGN < TENTATIVE DE DELETE PRELIMINAIRE.
LAI '04
BSR AGOSGN < TENTATIVE DE STORE.
IF ORDI-"T",XWOR%,,XWOR%
JNE E102 < ERREUR DE STORE ...
XWOR%: VAL 0
IF ORDI-"S",XWOR%,,XWOR%
JNE E102J < ERREUR DE STORE ...
XWOR%: VAL 0
JMP E410 < VERS LA DEMANDE DES DESIRS
< DE L'UTILISATEUR.
<
< R E T O U R A ' G E ' :
<
E420: EQU $
BR AGOGE < AIN'T IT HARD ???
<
< S A V E L ' I M A G E C O U R A N T E E N S C R A T C H
<
E834: EQU $
LY WDK+2 < Y=256 (POUR TRANSLATER
< L'@OCTET DU BUFFER DE SAVE).
LB IMAG2 < B=@OCTET INITIALE DU BUFFER
< DE SAVE.
STZ WDK+3 < RAZ DU NUMERO DE SECTEUR COURANT.
LXI LIMAG/128 < X=NBRE DE SECTEURS A SAVER.
LAD WDK
<
< BOUCLE DE SAVE DE L'IMAGE COURANTE PAR SECTEUR :
<
E832: EQU $
STB WDK+1 < MAJ DE L'@OCTET DU BUFFER.
PSR X < SAVE LE DECOMPTE DE SECTEURS.
SVC 0 < SAVE LE SECTEUR COURANT.
PLR X < RESTAURE LE DECOMPTE DES SECTEUR.
IC WDK+3 < PROGRESSION DU NUMERO DE SECTEUR
< COURANT.
ADR Y,B < PROGRESSION DE L'@OCTET BUFFER.
JDX E832 < AU SUIVANT ...
E410J: JMP E410 < VERS L'INTERRO. UTILISATEUR.
<
< O P E R A T I O N S L O G I Q U E S E N T R E
< I M A G E C O U R A N T E E T I M A G E
< S C R A T C H :
<
< FONCTION :
< CE MODULE PERMET DE REALISER
< LES 3 FONCTION SUIVANTES , SELON
< LE MODE D'APPEL :
< O : IMAGE-COURANTE=IMAGE-COURANTE.OR.IMAGE-SCRATCH
< A : IMAGE-COURANTE=IMAGE-COURANTE.AND.IMAGE SCRATCH
< E : IMAGE-COURANTE=IMAGE-COURANTE.EOR.IMAGE-SCRATCH
< H : IMAGE-COURANTE=IMAGE-COURANTE.AD.IMAGE SCRATCH
< Z : IMAGE-COURANTE=IMAGE-COURANTE.SB.IMAGE SCRATCH
< AINSI QUE :
< U : IMAGE-COURANTE=IMAGE-SCRATCH
< (U='UP')
<
E2500: EQU $
IF ORDI-"T",XWOR%,,XWOR%
LAI '1D < CODE DU NOP AFIN DE NE PAS
< MELANGER L'IMAGE SCRATCH AVEC
< L'IMAGE COURANTE LORS DU RAPPEL.
XWOR%: VAL 0
IF ORDI-"S",XWOR%,,XWOR%
LAI '04 < CODE DU NOP AFIN DE NE PAS
< MELANGER L'IMAGE SCRATCH AVEC
< L'IMAGE COURANTE LORS DU RAPPEL.
XWOR%: VAL 0
JMP E845
E2550: EQU $ < AD.
LAI 'A9 < CODE DU AD INDIRECT SUR L.
JMP E845
E2551: EQU $ < SB.
LAI 'A8 < CODE DU SB INDIRECT SUR L.
JMP E845
E842: EQU $ < OR.
LAI 'B2 < CODE DU OR INDIRECT SUR L.
JMP E845
E843: EQU $ < AND.
LAI 'B3 < CODE DU AND INDIRECT SUR L.
JMP E845
E844: EQU $ < EOR.
LAI 'B4 < CODE DU EOR INDIRECT SUR L.
E845: EQU $
STBY &AOP < MISE EN PLACE DE L'INSTRUCTION
< VARIABLE D'OPERATION LOGIQUE
< ENTRE IMAGES.
<
< ENTREE DU NOM DE LA NOUVELLE IMAGE COURANTE :
<
IF TITV,X100,,X100
LAD MNOM
BSR APRINT < ENVOI D'UNE INVITATION.
LAD DEMIN
SVC 0 < ENTREE DU NOM.
X100: VAL 0
IF TITV,,X100,
BSR AINOM < RECUPERATION NOM DANS ITEM1.
X100: VAL 0
<
< OPERATION LOGIQUE ENTRE LES 2 IMAGES :
<
BR AOPER < VERS L'OPERATION LOGIQUE ...
<
<
< M O D I F I C A T I O N I N T E R A C T I V E :
< D E L ' I M A G E V I D E O :
IF TITV,,X100,
<
<
< A T T E N T I O N :
< POUR QUE L'INTERACTION AIT LIEU,
< IL FAUT :
< 1- LA COMMANDE 'G' DOIT ETRE UTILISEE
< A LA SUITE DE 'M'; SA VALIDITE NE PORTE
< QUE JUSQU'A LA PROCHAINE COMMANDE
< PRIMAIRE.
< 2- LE NVP='0B DOIT ETRE ASSIGNE.
X100: VAL 0
<
<
< COMMANDES RECONNUES :
IF TITV,,X100,
< G : VALIDATION DE L'INTERACTION SUR '0B
< JUSQU'A LA PROCHAINE COMMANDE
< PRIMAIRE,
X100: VAL 0
< F : FIN D'INTERACTION ,
< O : MISE A L'ORIGINE DE 'A' ,
< A : ORIGINE D'UN SEGMENT ,
< B : EXTREIMITE D'UN SEGMENT ; LE SEGMENT
< AB EST TRACE SUIVANT 'APOINT' ,
< PUIS B DEVIENT A ,
< S : IDEM A 'B' , SAUF QUE A NE CHANGE PAS ,
< - : MODE TRACE 'RESET' (NOIR) ,
< + : MODE TRACE 'SET' (BLANC) ,
< E : MODE 'SET' SI 'RESET'/'RESET' SI 'SET' ,
< I : MODE TRACE 'INVER' (INVERSION) ,
< C : COMMANDE NEUTRE (CURSEUR) ,
< N : REINITIALISATION DE LA TOPO DES BANDES ,
< M : MONTERER A TV/TI LA BANDE QUE
< L'ON VIRTUALISE ,
< T : MONTRER A TV/TI LA BANDE REELLE
< ASSOCIEE A UNE BANDE VIRTUELLE 'M' ,
< V : COLORIAGE VOLET A 1 SUR FOND 0 ,
< (ITEST=1)
< W : COLORIAGE VOLET A 0 SUR FOND 1 ,
< (ITEST=0)
< 0 : MISE A NOIR DU POINT COURANT ,
< 1 : MISE A BLANC DU POINT COURANT.
<
< LE POINT COURANT EST DEFINI PAR
< LA POSITION COURANTE DU CURSEUR
< GRAPHIQUE ('GIN').
<
E791: EQU $ < RETURN DE L'INTERACTION.
PLR A
STA APOINT < RESTAURE L'APOINT D'ENTREE.
IF ORDI-"T",XWOR%,,XWOR%
JMP E410 < VERS L'INTERROGATION '>'.
XWOR%: VAL 0
IF ORDI-"S",XWOR%,,XWOR%
JMP E410J < VERS L'INTERRO. UTILISATEUR.
XWOR%: VAL 0
E790: EQU $ < ENTRY DE L'INTERACTION.
LA APOINT < SAVE L'APOINT D'ENTRY.
PSR A
E780: EQU $
<
< MISE A L'ORIGINE DE A ET B :
<
LA NLIG < Y INITIAL.
STZ X1 < X1=0.
STA Y1 < Y1=NLIG.
STZ X2 < X2=0.
STA Y2 < Y2=NLIG.
<
< INTERACTION CURSEUR :
<
IF TITV,,X100,
LAI 'FF
STBY CURSOR < A PRIORI : PAS D'INTERACTION !!!
X100: VAL 0
E770: EQU $
IF ORDI-"S",XWOR%,,XWOR%
LAD STDKU
SVC 0 < VISUALISATION AVANT LE CURSEUR...
XWOR%: VAL 0
LAD OG
SVC 0 < MISE EN GRAPHIQUE DE LA VISU.
LAD CU
SVC 0 < MISE EN FONCTION DU CURSEUR.
LAD LCU
SVC 0 < LECTURE DU CURSEUR GRAPHIQUE.
<
< STABILISATION DE L'2MAGE :
<
IF ORDI-"T",XWOR%,,XWOR%
LA ASP3
JAE E4002
ACTD 'C
XWOR%: VAL 0
E4002: EQU $ < ON N'EST PAS SSOUS :SYS ...
<
< COORDONNEES DU POINT COURANT :
<
LA CURSOR+1 < A=Y(CURSEUR).
SLRS DEDY < PRISE EN COMPTE DE LA DEFINITION
< RELATIVE DE LA VIDEO.
SB NLIG < DU AU FAIT QUE LES AXES Y
< DE LA VIDEO ET DES VISUS
< SONT INVERSES.
NGR A,Y < Y=Y(POINT COURANT).
LA CURSOR+2 < A=X(CURSEUR).
SLRS DEDX < PRISE EN COMPTE DE LA DEFINITION
< RELATIVE DE LA VIDEO.
LR A,X < X=X(POINT COURANT).
<
< SIMULATION D'UN CURSEUR SUR LA TV :
<
LB TEMPO < B=NBRE DE CLIGNOTTEMENTS (PAIR).
E781: EQU $
IF ORDI-"S",XWOR%,,XWOR%
PSR X
LAD STDKU
SVC 0 < EXECUTION MAITRE DE SP3.
PLR X
XWOR%: VAL 0
BSR AINVER < NBRE PAIR D'INVERSION DU POINT
< COURANT ...
ADRI -1,B < DECOMPTE DES CLIGNOTEMENTS.
CPZR B < EST-CE FINI ???
JG E781 < NON , ENCORE ...
<
< ANALYSE DES DESIRS DE L'UTILISATEUR :
<
LBY CURSOR < A=CARACTERE DE DEBLOCAGE.
IF TITV,,X100,
CPI 'FF < Y-A-T'IL EU INTERACTION ???
JNE E6000 < OUI , (A) EST BON ,
BSR ADESIR < NON : SIMULATION DE L'ENTREE ...
E6000: EQU $
X100: VAL 0
CPI "B"
JE E774 < EXTREMITE SEQUENTIELLE
< D'UN SEGMENT AB.
CPI "A"
JE E773 < ORIGINE D'UN SEGMENT.
CPI "0"
JE E771 < VERS LA MISE A NOIR DU POINT.
CPI "1"
JE E772 < VERS LA MISE A BLANC DU POINT.
CPI "S"
JE E775 < EXTREMITE ETOILEE D'UN SEGMENT.
CPI "-"
JE E776 < MISE EN MODE 'RESET' (NOIR).
CPI "+"
JE E777 < MISE EN MODE 'SET' (BLANC).
CPI "E"
JE E785 < VERS LA PERMUTATION 'SET'/'RESET'
CPI "I"
JE E778 < MISE EN MODE 'INVER' (INVERSION).
CPI "C"
JE E770 < COMMANDE NEUTRE ...
CPI "F"
JE E791 < FIN DE L'INTERACTION , RETOUR
< A L'INTERROGATION ('>').
CPI "O"
JE E780 < MISE A L'ORIGINE DE A ET DE B.
< COIN EN BAS A GAUCHE).
CPI "V"
JE E1010 < VERS LE COLORIAGE D'UN VOLET.
CPI "W"
JE E1020 < COLORIAGE INVERSE D'1N VOLET.
CPI "N"
JE E2300 < REINITIALISATION DE LA TOPO.
CPI "M"
JE E2301 < INDICATION BANDE A VIRTUALISER.
CPI "T"
JE E2302 < INDICATION DE LA BANDE REELLE.
IF TITV,,X100,
CPI "G" < VALIDATION INTERACTION '0B ???
JE VALCU < ET OUI...
X100: VAL 0
LAD MERR
BSR APRINT < DESIR INCOMPREHENSIBLE ...
JMP E770 < VERS UNE NOUVELL INTERACTION.
<
< MISE A NOIR DU POINT (X,Y) :
<
E771: EQU $
BSR ARESET < RESET DU POINT.
JMP E770 < VERS L'INTERACTION.
<
< MISE A BLANC DU POINT (X,Y) :
<
E772: EQU $
BSR ASET < SET DU POINT.
JMP E770 < VERS L'INTERACTION.
<
< ORIGINE 'A' D'UN SEGMENT :
<
E773: EQU $
STX X1 < CHANGEMENT DE M1 ('A').
STY Y1 < CHANGEMENT DE M1 ('A').
JMP E770 < VERS UNE NOUVELLE INTERACTION.
<
< EXTREMITE 'B' DU SEGMENT AB :
<
E774: EQU $
STX X2 < CHANGEMENT DE POINT M2 ('B').
STY Y2 < CHANGEMENT DE POINT M2 ('B').
BSR ASEG < TRACE DU SEGMENT AB.
STX X1 < M1 <-- M2.
STY Y1 < ('B' DEVIENT LE NOUVEAU 'A').
JMP E770 < VERS UNE NOUVELLE INTERACTION.
<
< EXTREMITE 'S' D'UN SEGMENT :
<
E775: EQU $
STX X2 < CHANGEMENT DE POINT M2 ('S').
STY Y2 < CHANGEMENT DE POINT M2 ('S').
LA X1
LB Y1
PSR A,B < SAVE LE POINT 'A' (M1).
BSR ASEG < TRACE DU SEGMENT M1M2.
PLR A,B < RESTAURE LE POINT 'A' (M1).
STA X1
STB Y1
JMP E770 < VERS UNE NOUVELLE INTERACTION.
<
< MODES DE TRACE DES SEGMENTS :
<
E776: EQU $
LB ARESET
JMP E779
E777: EQU $
LB ASET
JMP E779
E778: EQU $
LB AINVER
E779: EQU $
STB APOINT < MAJ TEMPORAIRE DE APOINT.
JMP E770 < VERS L'INTERACTION.
E785: EQU $
LB ASET < 'RESET' COURANT A PRIORI.
LA APOINT
CP ARESET
JE E779 < PASSAGE EN MODE 'SET'.
LB ARESET < MODE 'SET' COURANT A PRIORI.
CP ASET
JE E779 < PASSAGE AU MODE 'RESET'.
JMP E770 < MODE INCHANGE SI 'INVER'.
<
< C O L O R I A G E A 0 S U R F O N D 1 :
<
E1020: EQU $
LAI 0 < CONVENTIONS INVERSEES.
JMP E1021
<
< C O L O R I A G E A 1 S U R F O N D 0 :
<
E1010: EQU $
LAI 1 < CONVENTIONS NORMALES.
E1021: EQU $
STA ITEST < SAVE LES CONVENTIONS.
LY NLIG < Y=INDEX VERTICAL.
<
< BALAYAGE VERTICAL (Y) :
<
E1001: EQU $
LX NPPL < X=INDEX HORIZONTAL.
<
< BALAYAGE HORIZONTAL (X) :
<
E1002: EQU $
<
< RECHERCHE DU DERNIER POINT A 1 DE LA LIGNE (Y) :
<
BSR ATEST < TEST DU POINT (X,Y).
JC E1003 < ON S'ARRETE SUR LE DERNIER
< POINT A 1.
ADRI -1,X < SI 0 , PASSAGE AU POINT
< PRECEDENT DE LA LIGNE.
CPZR X < DEBUT DE LIGNE ???
JGE E1002 < NON , PASSAGE AU POINT PRECEDENT.
<
< CAS D'UNE LIGNE NOIRE , OU FIN DE
< TRAITEMENT D'UNE LIGNE :
<
E1004: EQU $
ADRI -1,Y < PASSAGE A LA LIGNE PRECEDENTE.
CPZR Y < DEBUT D'IMAGE ???
JGE E1001 < NON , LIGNE PRECEDENTE ...
JMP E770 < C'EST FINI , VERS L'INTER-
< ACTION DU CURSEUR.
<
< CAS OU ON A TROUVE UN DERNIER POINT
< BLANC (1) SUR LA LIGNE COURANTE :
<
E1003: EQU $
LR X,B < B=COORDONEE X DU DERNIER POINT
< BLANC (1) DE LA LIGNE (Y).
LXI 0 < RETOUR AU DEBUT DE LA LIGNE (Y).
<
< RECHERCHE DU 1ER POINT BLANC :
<
E1005: EQU $
BSR ATEST < TEST DU POINT (X,Y).
JC E1006 < ON S'ARRETE SUR LE 1ER POINT
< BLANC (1) TROUVE.
ADRI 1,X < SINON , PASSAGE AU POINT SUIVANT.
JMP E1005 < PARCOURS DE LA LIGNE (Y)
< SANS PRECAUTIONS , CAR ON EST
< SUR QU'IL Y A AU MOINS UN
< POINT BLANC (PEUT-ETRE UNIQUE??).
<
< CAS OU ON A TROUVE UN 1ER POINT BLANC (1) :
<
E1006: EQU $
CPR X,B < A-T'ON BALAYE TOUS LES POINTS
< DU 1ER AU DERNIER BLANC ???
JE E1004 < OUI , ALORS , IL FAUT PASSER
< A LA LIGNE PRECEDENTE.
BSR APOINT < SINON , ON TRAITE CE POINT
< (X,Y) A 1 (BLANC).
ADRI 1,X < PASSAGE AU POINT SUIVANT.
JMP E1006
<
< T O P O G R A P H I E D E S B A N D E S
< H O R I Z O N T A L E S :
<
< INDICATION D'UNE BANDE VIRTUELLE :
<
E2301: EQU $
LR Y,A < A=NUMERO DE LIGNE COURANTE.
SLRS 3 < A=NUMERO DE BANDE COURANTE.
STA BANDE < SAVE LA BANDE VIRTUELLE COURANTE.
BR AE770 < VERS L'INTERROGATION ...
<
< BANDE REELLE D'UNE BANDE VIRTUELLE :
<
E2302: EQU $
LX BANDE < X=BANDE VIRTUELLE COURANTE.
LR Y,A < A=LIGNE COURANTE.
SLRS 3 < A=BANDE COURANTE.
STBY &ATOPO < SAVE LA TOPOGRAPHIE.
BR AE770 < VERS L'INTERROGATION ...
<
< REINITIALISATION DE LA TOPO :
<
E2300: EQU $
LAI LIMAG/128-1 < A=NUMERO DE LA DERNIERE BANDE.
E2303: EQU $
LR A,X < X=NUMERO REGISTRE TOPOGRAPHIQUE.
STBY &ATOPO < REGISTRE <-- NUMERO DE REGISTRE.
ADRI -1,A < DECOMPTE.
JAGE E2303 < PARCOURS DE LA MEMOIRE TOPO.
STZ BANDE < RAZ LA BANDE VIRTUELLE COURANTE.
BR AE770 < VERS L'INTERROGATION ...
IF TITV,,X100,
<
< V A L I D A T I O N I N T E R A C T I O N ' 0 B :
<
VALCU: EQU $
LA CU
ADRI -3,A < CALCUL DE 'OG' A PARTIR DE 'CU'.
STA OG < OG POSSEDE CETTE VALEUR JUSQU'A
< LA PROCHAINE COMMANDE PRIMAIRE.
BR AE770 < VERS L'INTERROGATION SUR '0B.
X100: VAL 0
<
< E N T R E E D E L A T O P O G R A P H I E :
<
< FONCTION :
< CE MODULE PERMET D'INITIALISER DIRECTEMENT
< LES REGISTRES TOPOGRAPHIQUES DE L'IMAGE ;
< CEUX-CI SONT BAPTISES 0,....,9,A,...,V.
<
< CAS DES ERREURS :
< LA TOPOGRAPHIE EST ALORS
< REINITIALISEE ; UNE ERREUR
< VOLONTAIRE PERMET DONC DE
< REINITIALISER LA TOPOGRAPHIE ...
<
VIRT: EQU $
IF TITV,X100,,X100
LAD MTOPO
BSR APRINT < ENVOI DES NUMEROS DE REGISTRES.
X100: VAL 0
LXI 0 < X=NUMERO DE REGISTRE COURNT.
<
< BOUCLE DE RECUPERATION :
<
VIRT1: EQU $
PSR X < SAVE LE NUMERO DE REGISTRE.
LAI 0 < @MESSAGE=0.
BSR ADESIR < RECUPERATION D'UN CARACTERE.
PLR X < RESTAURE LE NUMERO DE REGISTRE.
ADRI -'30,A < CONVERSION BINAIRE.
JAL VIRT2 < ERREUR ...
CPI 9 < EST-CE UN CHIFFRE ???
JLE VIRT3 < OUI , OK.
ADRI -'41+'39+1,A < SINON , SUITE CONVERSION.
CPI 9 < EST-CE UNE LETTRE ???
JLE VIRT2 < NON , ERREUR.
CPI LIMAG/128-1 < EST-CE UN BON NUMERO ???
JG VIRT2 < NON , ERREUR.
VIRT3: EQU $ < CAS DES BONS NUMEROS VIRTUELS.
STBY &ATOPO < MEMORISATION TOPOGRAPHIE.
ADRI 1,X < PASSAGE AU REGISTRE SUIVANT.
LR X,A
CPI LIMAG/128 < EST-CE FINI ???
JL VIRT1 < NON , ON CONTINUE.
VIRT5: EQU $
BR AINTER < SI OUI , VERS L'2NTERROGATION.
<
< CAS DES ERREURS :
<
VIRT2: EQU $
LR X,Y < Y=INDEX COURANT DE LA TOPO.
LAI LIMAG/128-1 < A=NUMERO DE LA DERNIERE BANDE.
VIRT4: EQU $
LR A,X < LE REGISTRE TOPOGRAPHIQUE EST
STBY &ATOPO < AVEC SON PROPRE NUMERO.
ADRI -1,A < PASSAGE AU NUMERO PRECEDENT.
JAGE VIRT4 < AU REGISTRE PRECEDENT ...
CPZR Y < L'ERREUR S'EST-ELLE PRODUITE SUR
< LE 1ER REGISTRE TOPO ???
JE VIRT5 < OUI , ON CONSIDERE QU'IL
< N'Y AP AS ERREUR ....
BR AERR < VERS LE MESSAGE D'ERREUR.
<
< O P E R A T I O N L O G I Q U E
< E N T R E I M A G E S :
<
< ORIGINE :
< BIT0=0 : SENS CROISSANT ,
< =1 : SENS DECROISSANT ,
< BIT1=0 : FAIRE UN MIROIR OK ,
< 1 : SUIVANT LE BIT2 :
< BIT2=0 : PAS DE MIROIR, PERMET
< DONC DES EFFETS TRES
< SPECIAUX...
< 1 : CHOIX SELECTIF DE LA
< COULEUR DE L'IMAGE
< COURANTE.
< BIT14-15 : INDEX INITIAL XIMAG SI BIT2=0,
< SELECTION DES COULEURS SI BIT2=1.
<
<
OPER: EQU $
<
< DEMANDE DE L'ORIGINE DE L'IMAGE COURANTE :
<
IF TITV,X100,,X100
LAD MORG
BSR APRINT < ENVOI D'1NE INVITATION.
LAD DEMFON
SVC 0 < ENTREE DE 4 CARACTERES.
X100: VAL 0
LYI 4
BSR AHEX < CONVERSION DES 4 CARACTERES
< CONTENUS DANS REP.
< (ET DANS L'ITEM1 POUR 'TI')
IF ORDI-"T",XWOR%,,XWOR%
JNE OPER < ERREUR DE CONVERSION ...
XWOR%: VAL 0
IF ORDI-"S",XWOR%,,XWOR%
JE E475X < REPONSE HEXA OK...
XR A,X
CPI 1 < 1 SEUL CARACTERE RECONNU ???
XR A,X
JNE OPER < NON, ERREUR...
CPI 'E < OUI, EST-CE 'E OU 'F ???
JL OPER < NON, ERREUR...
OR RWDKU+3 < OUI, ON FORME XYZE/XYZF, OU XYZ0 EST
< L'ADRESSE DKU COURANTE,
SCRS XDKU < MISE SOUS FORME EXYZ/FXYZ,
ADRI 1,A < ET INCREMENTATION AUTOMATIQUE...
E475X: EQU $
XWOR%: VAL 0
<
< VALIDATION DE L'ORIGINE :
<
LBI 1 < +1 : SENS CROISSANT A PRIORI ...
LYI 0 < INDEX INITIAL DE PARCOURS
< POSITIF D'1N SECTEUR.
LXI 0 < DEPART SUR LE 1ER SECTEUR
< DE L'IMAGE SCRATCH A PRIORI.
JAGE E475 < OK, SENS CROISSANT...
NGR B,B < SINON : B=-1 (DECROISSANT).
LYI 127 < INDEX INITIAL DE PARCOURS
< NEGATIF DE SECTEUR.
LXI LIMAG/128-1 < DEPART SUR LE DERNIER SECTEUR
< DE L'IMAGE SCRATCH.
STZ MIROR < MIROIR A PRIORI (=0).
TBT 1 < SUPPRESSION DE MIROIR DEMANDEE???
JNC E2840 < 0 : NON , MIROIR OK.
TBT 2
JC COOL1 < CHOIX COULEUR IMAGE COURANTE.
STA MIROR < 1 : SUPPRESSION DU MIROIR (#0).
RBT 1 < SUPPRESSION DE L'INDICATEUR (1).
E2840: EQU $
RBT 0 < RAZ LE BIT0 DE L'ORIGINE.
E475: EQU $
STB SENSX < SENSX=+1/-1.
STY SECTX < SAVE L'INDEX INITIAL DE PARCOURS
< DE SECTEUR.
CP ALIMAG < VALIDATION DE L'ORIGINE PAR
< RAPPORT A LA LONGUEUR DE IMAGE.
STA XIMAG < OK , ON INITIALISE XIMAG
< AVEC L'ORIGINE.
IF ORDI-"S",XWOR%,,XWOR%
JGE CROTA < C'EST PEUT-ETRE UNE MODIFICATION DES
< REGISTRES DE COULEUR SI BIT1=1...
XWOR%: VAL 0
ADRI -127,Y
SBR Y,B < B=VALEUR DE TEST DE FIN DU
< PARCOURS D'UN SECTEUR.
STX RDK+3 < INITIALISATION NUMERO SECTEUR
< COURANT DE L'IMAGE SCRATCH.
LXI LIMAG/128 < X=NBRE DE SECTEURS A LIRE.
<
< BOUCLE D'OPERATIONS :
<
E840: EQU $
PSR X < SAVE LE DECOMPTE DES SECTEURS.
<
< ETAT DU SECTEUR COURANT :
<
PSR B
LA PATS
LB PATS+1 < (A,B)=LISTE DES SECTEURS.
LX RDK+3 < X=SECTEUR COURANT.
TBT 0,X < FAUT-IL TRAITER LE SECTEUR (X) ???
PLR B
LAI 0
ADCR A
STA INDICS < A=0 : NE PAS TRAITER LE SECTEUR.
JAE E2104 < INUTILE DE LIRE LE SECTEUR (X).
<
< ENTREE SECTEUR COURANT :
<
LBY &ATOPO < A=SECTEUR REEL ASSOCIE AU
< SECTEUR VIRTUEL (X).
STA RDK+3 < MAJ DE LA DEMANDE DE LECTURE.
PSR X < ET SAVE LE NUMERO DE SECTEUR
< VIRTUEL.
LAD RDK
SVC 0 < LECTURE DU SECTEUR COURANT.
PLR X
STX RDK+3 < RESTAURE LE SECTEUR VIRTUEL
< COURANT.
E2104: EQU $
LA RDK+3
AD SENSX
STA RDK+3 < CALCUL DU NUMERO DU SECTEUR
< SUIVANT.
LY SECTX < REINITIALISATION DE L'INDEX DE
< PARCOURS DU SECTEUR COURANT.
E841: EQU $
LR Y,X < X=INDEX COURANT DANS SECTEUR.
CPZ INDICS < OPERE-T'ON AVEC LE SECTEUR
< COURANT ????
JE E2100 < NON , ON NE FAIT PAS L'OPERATION.
LA &ASECT1 < ACCES AU MOT COURANT SECTEUR.
CPZR B < EST-CE UN PARCOURS CROISSANT ???
JG E1300 < OK , (A) EST BON.
CPZ MIROR < FAUT-IL MIROITER LE MOT ???
JNE E1300 < NON , ON SAUTE LE MIROIR !!!
<
< CAS D'UN PARCOURS DECROISSANT :
< IL FAUT MIROITER (???) LE MOT COURANT
< DU SECTEUR ; A NOTER QUE B='FFFF (-1).
<
LXI 16 < X=NBRE DE BITS A INVERSER.
E1301: EQU $
TBT 31,X < TEST UN BIT DE A.
JC E1302 < 1 : IL L'EST DEJA DANS B.
NGR X,X < 0 : IL FAUT LE RAZER DANS B.
RBT 0,X < ARZ EN MIROIR.
NGR X,X < RESTAURE X.
E1302: EQU $
JDX E1301 < AU BIT SUIVANT ...
LR B,A < A=MOT COURANT DU SECTEUR VU
< DANS UN MIROIR.
LBI -1 < RESTAURE (B)=-1 : VALEUR DE
< TEST DE (Y).
<
< OPERATION ELEMENTAIRE :
<
E1300: EQU $
LX XIMAG < X=INDEX COURANT DE L'IMAGE
< COURANTE.
OP: OR &AIMAG1 < LE MOT COURANT DE L'IMAGE
< COURANTE EST OPERER AVEC LE
< MOT COURANT DU SECTEUR COURANT.
STA &AIMAG1 < LE RESULTAT EST REMIS DANS
< L'IMAGE COURANT.
E2100: EQU $ < CAS DES SECTEURS IGNORES.
LA XIMAG
ADRI 1,A < INCREMENTATION DE XIMAG.
AND MASKX < ET CALCUL MODULO LIMAG.
STA XIMAG < MAJ DE XIMAG.
LA SENSX
ADR A,Y < INDEX DU MOT SUIVANT DU SECTEUR
< COURANT.
CPR Y,B < A-T'ON EXPLORE TOUT LE SECTEUR
< COURANT ???
JNE E841 < NON , ON CONTINUE ...
PLR X < OUI , RESTAURATION DU DECOMPTE
< DES SECTEURS A LIRE ...
JDX E840 < AU SECTEUR SUIVANT ...
BR AINTER < ET ENFIN , VERS L'INTERROGATION
< DE L'UTILISATEUR ...
IF ORDI-"S",XWOR%,,XWOR%
<
<
< M O D I F I C A T I O N D E S R E G I S T R E S
< D E C O U L E U R :
<
<
< FONCTION :
< LES REGISTRES DE COULEUR PERMETTENT
< DE COLORIER AVEC DES NIVEAUX DE GRIS
< LES DIFFERENTES COMBINAISONS DE 3
< POINTS DE MEME COORDONNEES APPARTENANT
< AUX 3 TRAMES R, V ET B ; SOIENT PR, PV
< ET PB UN TRIPLET DE TELS POINTS.
< CHAQUE COMBINAISON (PR,PV,PB), CES
< 3 POINTS ETANT BINAIRES (0/1) DONNENT
< DES NOMBRES DE 0 A 7 :
< PB=0 PV=0 PR=0 --> 000='0,
< PB=0 PV=0 PR=1 --> 001='1,
< PB=0 PV=1 PR=0 --> 010='2,...
< PB=1 PV=1 PR=1 --> 111='7,
< SOIT I L'UNE DES 8 VALEURS POSSIBLES ;
< CETTE VALEUR SERT D'INDEX DANS 3 MEMOIRES
< PARALLELES MR, MV ET MB CONTENANT CHACUNE
< DES MOTS DE 4 BITS PERMETTANT DE CODER
< DONC 16 NIVEAUX PAR COULEUR.
< SOIT DONC LE POINT P(PB,PV,PR) ; A CE
< POINT ON ASSOCIE DONC LE NOMBRE I TEL
< QUE I=PB*4+PV*2+PR*1 ; LE POINT P
< APPARAITRA DONC SUR L'ECRAN COMME LA
< SUPERPOSITION DU BLEU AVEC LE NIVEAU
< -MB(I), DU VERT AVEC LE NIVEAU -MV(I),
< ET ENFIN DU ROUGE AVEC LE NIVEAU -MR(I) ;
< LE SIGNE "MOINS" INDIQUE QUE LES NIVEAUX
< SONT COMPLEMENTES A 1 DANS LES 3 MEMOIRES.
<
<
< UTILISATION :
< EN REPONSE A 'ORG' DES DIFFERENTES
< OPERATIONS INTER-IMAGES, ON PEUT AGIR
< SUR CES 3 MEMOIRES PAR LA REPONSE :
< ORG=4XYZ, QUI A L'EFFET SUIVANT :
< 0<=X<=7 : SELECTIONNE 0 A 3 DES MEMOIRES,
< PAR EXEMPLE X=4 SELECTIONNE MB,
< X=2 : MV ET X=1 MR ; ON PEUT COMBINER
< CES DIFFERENTES VALEURS ;
< 0<=Y<=7 : DONNE L'INDEX DANS LES MEMOIRES
< SELECTIONNEES, ET ENFIN
< 0<=Z<=15 : DONNE LE NIVEAU DE GRIS COMPLEMENTE
< A 1, C'EST-A-DIRE QUE Z=0 DONNE LE MAXIMUM
< (BLANC), ET 15 LE MINIMUM (NOIR)...
<
<
CROTA: EQU $
TBT 1
JNC OPER < ERREUR... ON REDEMANDE 'ORG'...
LBY &AOP < RECUPERATION DE L'OPERATION DEMANDEE,
STBY &AOP2 < ET GENERATION...
LA XIMAG < NOTA : ON RAZE LES BITS INUTILISES
SLLS 4 < COMME CECI.
SLRS 4
OP2: OR &AMCOOL < OPERATION DYNAMIQUE : CUMUL
STA &AMCOOL < MAJ DES ORDRES COURANTS...
LBY &AOP2
CPI 'A8 < A-T'ON FAIT UNE SOUSTRACTION ???
JNE CROTA2 < NON...
LA &AMCOOL < OUI, IL FAUT
NGR A,A < INVERSER
STA &AMCOOL < LE RESULTAT...
CROTA2: EQU $
LAD DEMCU3
SVC 0 < ENVOI DE '0XYZ,
CROTA1: EQU $
BR AINTER < VERS L'INTERROGATION...
<
<
< A C C E S A B S O L U A U X I M A G E S
< S U R D K U :
<
<
< FONCTION :
< LE NSP='8A EST ASSIGNE IMPLICI-
< TEMENT A 'DKU' ; ENSUITE LES COMMANDES
< SUIVANTES SONT DISPONIBLES :
< ORG='FXXX : LECTURE DE L'IMAGE SITUEE EN 'XXX0,
< ORG='EXXX : ECRITURE DE L'IMAGE COURANTE
< EN 'XXX0 SUR 'DKU'.
<
<
COOL1: EQU $
TBT 3 < LECTURE OU ECRITURE ???
LB RWDKU
RBT 14+16 < READ A PRIORI...
JC COOL2 < OUI (1)...
SBT 14+16 < NON (0) : WRITE...
COOL2: EQU $
STB RWDKU < MAJ DE LA DEMANDE...
AND M0FFF
CP VALAD1 < VALIDATION...
JL OPER < ERREUR...
CP VALAD2 < VALIDATION...
JGE OPER < ERREUR...
SLLS XDKU < A=ADRESSE DISQUE,
STA RWDKU+3 < MAJ DE LA DEMANDE...
LAD RWDKU
SVC 0 < ENVOI DE LA DEMANDE...
JNE OPER < ERREUR !!!
BR AINTER < COMMANDE SUIVANTE...
XWOR%: VAL 0
IF ORDI-"T",XWOR%,,XWOR%
<
<
< C H O I X C O U L E U R I M A G E C O U R A N T E :
<
<
< FONCTION DES BITS DE A :
<
< IMAGE 100 * IMAGE 010 * IMAGE 001 * (PATTERN CYCLIQUE)
<------------------------------------------------------------------
< BIT 5 * ROUGE * NOIR * NOIR *
<------------------------------------------------------------------
< BIT 6 * NOIR * ROUGE * NOIR *
<------------------------------------------------------------------
< BIT 7 * NOIR * NOIR * ROUGE *
<------------------------------------------------------------------
<------------------------------------------------------------------
< BIT 9 * VERT * NOIR * NOIR *
<------------------------------------------------------------------
< BIT10 * NOIR * VERT * NOIR *
<------------------------------------------------------------------
< BIT11 * NOIR * NOIR * VERT *
<------------------------------------------------------------------
<------------------------------------------------------------------
< BIT13 * BLEU * NOIR * NOIR *
<------------------------------------------------------------------
< BIT14 * NOIR * BLEU * NOIR *
<------------------------------------------------------------------
< BIT15 * NOIR * NOIR * BLEU *
<
<
COOL1: EQU $
LBI 0 < CLEAR REGISTRE B.
LXI 3 < POUR LES 3 COULEURS.
COOL2: EQU $
SLRD 3 < RECUPERATION CHOIX 1 COULEUR.
SLRS 1 < ELIMINATION BIT NON SIGNIFICATIF.
JDX COOL2 < NEXT...
<
< A T T E N T I O N :
< X=0 (CF. LE JDX) !!!
<
LBY &AOP < RECUPERATION DE L'OPERATION
< LOGIQUE COULEUR DEMANDEE.
STBY &AOP2 < POSITIONNEMENT D'UNE INSTRUC-
< TION VARIABLE.
LR B,A < A=FUTUR MOT0 DE L'IMAGE COURANTE.
OP2: OR &AIMAG1 < INSTRUCTION VARIABLE !!!
< RAPPEL : X=0 (JDX) !!!!
STA &AIMAG1 < MAJ COULEUR IMAGE COURANTE.
BR AINTER < VERS L'INTERRO UTILISATEUR.
XWOR%: VAL 0
<
< F I L T R A G E I M A G E :
<
< FONCTION :
< 1- B=0 :
< CE MODULE ESAYE DE SUPPRIMER LES
< POINTS ANORMAUX D'UNE IMAGE , EN
< L'OCCURENCE LES POINTS BLANCS (1)
< QUI N'ONT PAS DE VOISINS VERTICAUX A 1.
< 2- B=1 :
< CE MODULE PERMET DE COLRIER D'UNE
< MANIERE FICTIVE LES IMAGES , AVEC
< MALHEUREUSEMENT UN PETIT DEFAUT
< EN CE QUI CONCERNE LES CONCAVITES HAU-GAUCHE ...
< 3- B=-1 :
< 3.1- MATRICE=(0,1,1,0) :
< CE MODULE PERMET ALORS DE TRANSPOSER
< LA MATRICE DE L'IMAGE ET CECI
< BIT A BIT ; IL S'AGIT DONC D'1NE
< SYMETRIE PAR RAPPORT A LA DIAGONALE
< PRINCIPALE DE CELLE-CI.
< 3.2- MATRICE#(0,1,1,0) :
< CE MODULE PERMET DES TRANSFORMATIONS
< BIZARRES ET VARIEES !!?!?!!
<
FILTR: EQU $
LAI 1
STA ITEST < MISE EN MODE TESTS NORMAUX.
LY NLIG < INDEX DE BALAYAGE VERTICAL.
<
< BOUCLE DE BALAYAGE VERTICAL :
<
E2001: EQU $
PSR B < SAVE LA FONCTION DEMANDEE.
LR Y,A < Y=NUMERO DE LIGNE COURANTE.
SLRS 3
LR A,X < X=NUMERO DE BANDE COURANTE.
LA PATS < ACCES A LA LISTE DES BANDES
LB PATS+1 < A TRAITER.
TBT 0,X < LA BANDE COURANTE (X) DOIT-
< ELLE ETRE TRAITEE ???
PLR B < RESTAURE LA FONCTION DEMANDEE.
JNC E2821 < LA BANDE COURANTE EST IGNOREE.
LX NPPL < X=INDEX DE BALAYAGE HORIZONTAL.
CPZR B < EST-CE UNE TRANSPOISTION ???
JGE E2002 < NON , (X) EST BON.
CPZ DIAGON < UN PARCOURS DIAGONAL EST-IL
< DEMANDE ???
JE E2002 < NON , PARCOURS DE L'IMAGE
< ENTIERE.
LR Y,X < DANS LE CAS D'UNE TRANSPOSITION ,
< ON FAIT UN PARCOURS TRIANGULAIRE
< DE L'IMAGE.
<
< BOUCLE DE BALAYAGE HORIZONTAL :
<
E2002: EQU $
CPZR B
JL E2021 < DEMANDE DE TRANSPOSITION.
BSR ATEST < TEST DU POINT COURANT M(X,Y).
JNC E2003 < ININTERESSANT : M(X,Y)=0.
<
< CAS OU LE POINT COURANT M(X,Y)=1 :
<
ADRI 1,Y < PASSAGE AU VOISIN M(X,Y+1).
CPZR B < FILTRAGE OU PSEUDO-CLORIAGE ???
JG E2011 < PSEUDO-COLORIAGE DE L'IMAGE.
<
< FILTRAGE DE L'IMAGE :
<
BSR AEXIST < TEST DU POINT M(X,Y+1) ???
ADRI -1,Y < RETOUR AU POINT M(X,Y).
JAE E2003 < ININTERESSANT M(X,Y+1)
< EXISTE ET EST A 1.
ADRI -1,Y < PASSAGE SUR M(X,Y-1).
BSR AEXIST < TEST DU VOISIN M(X,Y-1) ???
ADRI 1,Y < RETOUR AU POINT M(X,Y).
JAE E2003 < ININTERESSANT : M(X,Y-1)
< EXISTE ET EST A 1.
BSR ARESET < DANS LE CAS OU M(X,Y) A 2
< VOISIN A 0 OU INEXISTANTS ,
< ON LE CONSIDRE COMME SINGULIER ,
< ET ON LE SUPPRIME ...
<
< CHANGEMENT DE POINT COURANT M(X,Y) :
<
E2003: EQU $
ADRI -1,X < BALAYAGE HORIZONTAL.
E2013: EQU $
CPZR X
JGE E2002
E2820: EQU $ < ENTRY SAUT DE LA BANDE COURANTE.
ADRI -1,Y < BALAYAGE VERTICAL.
CPZR Y
JGE E2001
BR AINTER < RETOUR A L'INTERROGATION ...
<
<
< P S E U D O - C O L O R I A G E :
<
<
E2011: EQU $
ADRI -1,X < PASSAGE AU POINT M(X-1,Y+1).
CPZR X < L'X EXISTE-T'IL ???
JL E2012 < NON , PAS D'INTERET ...
BSR AEXIST < TEST DU POINT M(X-1,Y+1).
JANE E2012 < M(X-1,Y+1) N'EXISTE PAS OU
< EST A 0.
ADRI -1,Y < SI M(X-1,Y+1)=1 , ON PASSE
< AU POINT M(X-1,Y).
BSR APOINT < COLORIAGE DE M(X-1,Y) SUIVANT
< 'APOINT'.
JMP E2013 < VERS LE POINT SUIVANT ...
E2012: EQU $
ADRI -1,Y < RETOUR A LA LIGNE (Y) ...
JMP E2013 < VERS LE POINT SUIVANT.
<
<
< T R A N S F O R M A T I O N M A T R I C I E L L E :
<
<
E2021: EQU $
PSR B,X,Y
< ON A ICI :
< B=-1.
BSR ATEST < TEST DU POINT M(X,Y).
ADCR B < B=0 SI M(X,Y)=1.
<
<
< T R A N S F O R M A T I O N D E S C O O R D O N N E E S :
<
<
< METHODE DE TRANSFORMATION :
<
< SOIT :
< MSX=SX*(2**XEQUIV)+RSX ,
< MSY=SY*(2**YEQUIV)+RSY ,
<
< MSX ET MSY SONT LES COORDONNEES DU POINT M(X,Y) ,
< SX ET SY EN SONT LES COORDONNEES REDUITES ,
< RSX ET RSY LES RESIDUS ; XEQUIV ET YEQUIV
< DETERMINENT LES CLASSES D'EQUIVALENCE DES
< COORDONNEES DU PLAN.
<
< LA MATRICE DE TRANSFORMATION 'T' S'APPLIQUE
< AUX COORDONNEES REDUITES :
< (SXP,SYP)=T*(SX,SY) ,
<
< LES COORDONNEES REDUITES SXP ET SYP
< SONT EVENTUELLEMENT TRANSLATEES A
< L'AIDE DES CONSTANTES DE TRANSLATION
< TRX ET TRY INTRODUITES AVEC XEQUIV ET
< YEQUIV :
< (SXP,SYP)=(SXP,SYP)+(TRX,TRY) ,
<
< LES COORDONNEES RESULTANTES X ET Y SONT :
< X=SXP*(2**XEQUIV)+RSX ,
< Y=SYP*(2**YEQUIV)+RSY.
<
<
PSR B < SAVE L'INDICATEUR D'ETAT.
STX MSX < SAVE TEMPORAIRE X DE M(X,Y).
STY MSY < SAVE TEMPORAIRE Y DE M(X,Y).
<
< DETERMINATION DES COORDONNEES REDUITES DE M(X,Y) :
<
LR X,A < A=COORDONNEE X.
LX XEQUIV < CLASSE D'EQUIVALENCE DES X.
SLRD 0,X < CALCUL DE LA CLASSE D'EQUI-
< VALENCE DU X DE M(X,Y).
STA SX < SAVE LA VALEUR REDUITE DE X.
LR X,A < A=XEQUIV ,
SLRS 5 < RECUPERATION DE TRX : A=TRX.
< (TRANSLATION DES X REDUITS)
SLLD 0,X < A=RESIDU DE LA COORDONNEE X.
STA RSX < ET SAVE LE REIDU DE X.
LR Y,A < A=COORDONNEE Y DE M(X,Y).
LX YEQUIV < ACCES CLASSE D'EQUIVALENCE DE Y.
SLRD 0,X < CALCUL DE LA CLASSE D'EQUI-
< VALENCE DE LA COORDONEE Y.
STA SY < SAVE LA COORDONNEE REDUITE Y.
LR X,A < A=YEQUIV ,
SLRS 5 < RECUPERATION DE TRY : A=TRY.
< (TRANSLATION DES Y REDUITS)
SLLD 0,X < A=RESIDU DE LA COORDONNEE Y.
STA RSY < SAVE LE RESIDU DE Y.
<
< TRANSFORMATION PAR LA MATRICE T DES
< COORDONNEES REDUITES DE M(X,Y) :
<
LA SX < COORDONNEE X REDUITE.
MP A21 < B=A21*X.
LR B,Y
LA SY
MP A22 < B=A22*Y.
ADR B,Y
LR Y,A < A=A21*X+A22*Y.
LX YEQUIV < X=CLASSE D'EQUIVALENCE DES Y.
SLLS 0,X < 'DEREDUCTION' DE Y.
AD RSY < RESTAURATION DU RESIDU DE Y.
AND NLIG < ET ENFIN , CALCUL MODULO LE
< NBRE DE LIGNES PAR ECRAN.
LR A,Y < Y=COORDONNEE Y DU POINT
< TRANSFORME DE M(X,Y).
LA SX < COORDONNEE X REDUITE.
MP A11 < B=A11*X.
LR B,X
LA SY
MP A12 < B=A12*Y.
ADR B,X
LR X,A < A=A11*X+A12*Y.
LX XEQUIV < X=CLASSE D'EQUIVALENCE DES X.
SLLS 0,X < 'DEREDUCTION' DE X.
AD RSX < RESTAURATION DU RESIDU DE X.
AND NPPL < ET ENFIN CALCUL MODULO LE NBRE
< DE POINTS PAR LIGNE.
LR A,X < X=COORDONNE DU POINT TRANFORME.
PLR B < RESTAURE L'INDICATEUR D'ETAT.
BSR ATEST < TEST DU POINT M(Y,X).
ADCR B < B=0 SI M(X,Y)#M(Y,X).
CPZR B
JNE E2022 < B=-1 OU B=1 ; CELA SIGNIFIE
< QUE M(X,Y)=M(Y,X) ; IL N'Y A
< DONC RIEN A FAIRE ...
BSR AINVER < SINON INVERSION DE M(Y,X).
<
< TRANSFORMATION INVERSE DES COORDONNEES :
<
LX MSX < RESTAURE COORDONNEE X DE M(X,Y).
LY MSY < RESTAURE COORDONNEE Y DE M(X,Y).
BSR AINVER < INVERSION DE M(X,Y).
E2022: EQU $
PLR B,X,Y
JMP E2003 < VERS LE POINT M(X,Y) SUIVANT.
<
< CAS OU LA BANDE COURANTE EST IGNOREE :
<
E2821: EQU $
LR X,A < X=NUMERO DE LA BANDE COURANTE.
SLLS 3
LR A,Y < Y=NUMERO DE LA 1ERE LIGNE
< DE LA BANDE COURANTE.
JMP E2820 < VERS LE PASSAGE A LA BANDE
< PRECEDENTE (SI EXISTE...).
<
< D E F I N I T I O N D E L A M A T R I C E
< D E T R A N S F O R M A T I O N :
<
< NOTA :
< IL EST POSSIBLE DE FAIRE GENERER
< AU PROCESSEUR DES MATRICES IDEMPOTENTES ,
< C'EST-A-DIRE TELLES QUE :
< M*M=I.
< CES MATRICES SONT DE LA FORME :
< -M22 (1-M22*M22)/M21
< M21 M22
<
< A NOTER QUE LES MATRICES
< +-1,0,0,+-1 CONVIENNENT AUSSI ...
<
DEF: EQU $
LYI 4 < Y=NBRE DE CARACTERES DEMANDES
< POUR CHAQUE COEFFICIENT.
<
< ENTREE DES CLASSES D'EQUIVALENCE XEQUIV ET
< YEQUIV AINSI QUE DES CONSTANTES DE TRANSLATION
< TRX ET TRY :
<
< BITS0-2 : TRANSLATION A DROITE DES X REDUITS (TRX) ,
< BITS3-7 : CLASSE D'EQUIVALENCE DES X (XEQUIV) ,
< BITS8-10 : TRANSLATION VERS LE BAS DES Y REDUITS (TRY) ,
< BITS11-15 : CLASSE D'EQUIVALENCE DES Y (YEQUUIV).
<
< EN DONNANT '0000 , LES CLASSES
< SONT PONCTUELLES ET NON TRANSLATEES !!!
<
LXI 5 < INDEX DU MESSAGE SUR LES
< CLASSES D'EQUIVALENCE X,Y.
BSR ACOEF < RECUPERATION DES CLASSES :
< OCTET0(A)=CLASSE DE X ,
< OCTET1(A)=CLASSE DE Y.
SLRD 16 < A=0 , B=CLASSES D'EQUIVALENCE.
DV C256 < DECONCATENATION DES 2 OCTETS.
STB YEQUIV < CLASSE D'EQUIVALENCE DE Y.
STA XEQUIV < CLASSE D'EQUIVALENCE DE X.
CP YEQUIV < LES CLASSES SONT-ELLES DE
< 'MEME TAILLE' ???
JNE E2811 < NON , ON VA DONC RENTRER UNE
< MATRICE QUELCONQUE ; EN EFFET
< LORSQUE LES CLASSES NE SONT
< PAS CARREES , LES MATRICES
< IDEMPOTENTES NE DONNENT
< PAS DES RESULTATS INVERSIBLES !!!
CPI '0F < UNE TRANSLATION A-T'ELLE ETE
< INTRODUITE , OU BIEN LA CLASSE
< DEMANDEE EST-ELLE SUPERIEURE
< A '0F ???
JG E2811 < UNE MATRICE IDEMPOTENTE NE
< DONNERA PAS DE BONS RESULTATS !!!
E2810: EQU $
IF TITV,X100,,X100
LAD MIDEM
X100: VAL 0
BSR ADESIR < L'UTILISATEUR DESIRE-T'IL
< UNE MATRICE IDEMPOTENTE OU PAS ???
CPI "N" < A CONTIENT LA REPONSE ...
JE E2811 < IL DESIRE RENTRER LA MATRICE
< ENTIERE (4 COEFFICIENTS).
CPI "O"
JNE E2810 < ERREUR , ON RECOMMENCE ...
<
< GENERATION D'UNE MATRICE IDEMPOTENTE :
<
LXI 2 < INDEX DU MESSAGE 'M22'.
BSR ACOEF < ENTREE DU COEFFICIENT M22.
STA SA22 < ET SAVE TEMPORAIRE.
LXI 1 < INDEX DU MESSAGE 'M21'.
BSR ACOEF < ENTREE DU COEFFICIENT M21.
STA SA21 < ET SAVE TEMPORAIRE.
E2816: EQU $ < ENTRY DE RECHERCHE D'UN JEU
< DE M21,M22 QUI DONNENT UNE
< MATRICE M ENTIERE.
LA SA22
LR A,Y < Y=SA22.
MP SA22 < B=SA22*SA22.
LAI 1
SBR B,A < A=1-SA22*SA22.
SARD 16 < ET CADRAGE SUR 32 BITS.
DV SA21 < CALCUL DE (1-SA22*SA22)/SA21.
CPZR B < LE RESTE EST-IL NUL ???
JE E2815 < OK , RESTE NUL , M EST ENTIERE !
LAD MERR
BSR APRINT < SINON , ENVOI D'UN MESSAGE
< D'ERREUR.
IC SA22 < PUIS MODIFICATION DE SA22 ,
JMP E2816 < PUIS BOUCLAGE JUSQU'A TROUVER
< LE BON COUPLE M21,M22 , OU
< JUSQU'A UN ALT-MODE !!!
E2815: EQU $ < OK , MATRICE ENTIERE !!!
STA A12 < OK , GENERE A12.
LA SA21
STA A21 < OK , GENERE A21.
STY A22 < OK , GENERE A22.
NGR Y,Y
STY A11 < OK , GENERE A11=-A22.
JMP E2803 < VERS L'ENTREE DU MODE DE
< PARCOURS DE L'IMAGE.
<
< ENTREE D'UNE MATRICE QUELCONQUE :
<
E2811: EQU $
LXI 4 < X=NBRE DE COEFFICIENTS MATRICIELS
< A ENTRER.
<
< ENTREE DES 4 COEFFICIENTS A11,A12,A21,A22 :
<
E2801: EQU $
BSR ACOEF < ENTREE DU COEFFICIENT MIJ.
STA &AMAT < SI OK , ON RANGE MIJ DANS
< LA MATRICE(X).
JDX E2801 < AU COEFFICIENT SUIVANT.
<
< DEMANDE DE LA NATURE DU PARCOURS DE L'IMAGE :
<
E2803: EQU $
STZ DIAGON < A PRIORI PARCOURS IMAGE ENTIERE.
IF TITV,X100,,X100
LAD MDIAG < MESSAGE D'INTERROGATION.
X100: VAL 0
BSR ADESIR < ENTREE DES DESIRS UTILISATEUR.
CPI "N" < A CONTIENT LE CARACTERE ENTRE.
JE E2802 < OK , PARCOURS IMAGE ENTIERE.
CPI "O"
JNE E2803 < ERREUR , ON REINTERROGE ...
IC DIAGON < PARCOURS DIAGONAL DEMANDE.
E2802: EQU $
BR AINTER < VERS L'INTERROGATION UTILISATEUR.
PAGE
<
<
< E N T R E E U N C O E F F I C I E N T
< D E L A M A T R I C E M :
<
<
< ARGUMENT :
< X=INDEX DU COEFFICIENT :
< 4 : A11 ,
< 3 : A12 ,
< 2 : A21 ,
< 1 : A22.
<
<
< RESULTAT :
< A=VALEUR BINAIRE DU COEFFICIENT.
<
<
COEF: EQU $
PSR X < SAVE LE DECOMPTE X.
IF TITV,X100,,X100
LAD MAT
BSR APRINT
LAD MX-2
ADR X,A
ADR X,A
BSR APRINT < ENVOI D'UN MESSAGE MIJ=.
LAD DEMFON
SVC 0 < ENTREE DU COEFFICIENT MIJ.
X100: VAL 0
BSR AHEX < CONVERSION BINAIRE DE MIJ.
PLR X < RESTAURE LE DECOMPTE X.
JNE COEF < ERREUR DE SYNTAXE HEXADECIMALE.
RSR
PAGE
<
<
< D : C O M P T A G E P O I N T S / I M A G E :
<
<
COMPT: EQU $
LBI 0 < INITIALISATION DU COMPTEUR.
LX ALIMAG < X=NBRE DE MOTS/IMAGE.
EE10: EQU $
PSR X < SAVE L'INDEX-MOT.
LA &AIMAG < A=MOT COURANT DE L'IMAGE.
EE12: EQU $
JAE EE11 < TOUS LES POINTS DE CE MOT ONT
< ETE COMPTES, OU IL EST NUL.
DBT < RECHERCHE D'UN POINT.
ADRI 1,B < ET COMPTAGE.
RBT 0,X < PUIS RAZ APRES PRISE EN COMPTE.
JMP EE12 < AU POINT SUIVANT.
EE11: EQU $
PLR X < RESTAURE L'INDEX MOT.
JDX EE10 < PASSAGE AU MOT SUIVANT.
<
< EDITION DU NBRE DE POINTS (B) :
<
LYI 0+4 < X=0 (JDX), Y=BORNE SUP DE X.
EE13: EQU $
LAI 0 < CLEAR LE REGISTRE A.
SLLD 4 < RECUPERATION D'UN CHIFFRE HEXA.
CPI 9 < TEST LETTRE/CHIFFRE.
JLE EE14 < C'EST UN CHIFFRE.
ADRI '41-'39-1,A < CAS DES LETTRES.
EE14: EQU $
ADRI '30,A < CONVERSION ASCI.
STBY &AREP < MISE DANS LE BUFFER.
ADRI 1,X < PASSAGE AU CHIFFRE SUIVANT,
CPR X,Y < SI EXISTE...
JNE EE13 < OUI.
LAD NPO
BSR APRINT < EDITION DU NBRE DE POINTS/IMAGE.
BR AINTER < VERS E410 (INTERRO UTILISATEUR).
PAGE
IF TITV,X100,,X100
<
<
< C O N V E R S I O N G R A P H I Q U E --> V I D E O
< D ' U N P O I N T :
<
<
< ARGUMENT :
< POINT COURANT GRAPHIQUE DANS HY,LY,HX,LX.
<
<
< RESULTAT :
< X ET Y CONTIENNENT L'X ET L'Y DU POINT COURANT
< VIDEO.
<
<
CONV: EQU $
LA LY < LOW-Y POINT COURANT.
SLRD 5 < RECUPERATION DES 5 BITS
< SIGIFICATIFS DANS B.
LA HY < HIGH-Y POINT COURANT.
ANDI '1F < CONSERVATION DES 5 BITS
< SIGNIFICATIFS.
SLLD 5-DEDY < ET CONCATENATION AUX POIDS
< FAIBLES AVEC UNE DIVISION
< SIMULTANEE PAR DY.
NGR A,A < INVERSION DU SIGNE DU AU FAIT
< QUE L'AXE DES Y DES VISUS
< MONTE , ALORS QUE CELUI D'UNE
< IMAGE VIDEO DESCEND ...
AD NLIG < LA COORDONNEE Y EST RENDUE>0.
LR A,Y < COORDONNEE Y DU POINT COURANT.
LA LX < LOW-X POINT COURANT.
SLRD 5 < BITS SIGNIFICATIFS DANS B.
LA HX < HIGH-X POINT COURANT.
ANDI '1F < RECUPERATION DES 5 BITS
< SIGNIFICATIFS.
SLLD 5-DEDX < CONCATENATION DES POIDES FAIBLES
< ET DIVISION SIMULTANEE PAR DX.
LR A,X < COORDONNEE X POINT COURANT.
RSR < ET C'EST TOUT.
<
<
< A C C E S U N C A R A C T E R E G R A P H I Q U E :
<
<
< ARGUMENT :
< X=INDEX CARACTERE COURANT.
<
<
< RESULTAT :
< A=CARACTERE COURANT SUR 7 BITS ,
< X<--(X)+1.
<
<
< SORTIE DIRECTE PAR E2 SI RENCONTRE DU R/C DE FIN
< DE DESSIN , OU SI LA FIN DU BUFFR EST ATTEINTE.
<
<
GET: EQU $
LBY &ABUF
ANDI '7F < A=CARACTERE COURANT ET BIT0=0.
ADRI 1,X < INDEX DU CARACTERE SUIVANT.
CPI '0D < EST-CE LE R/C ???
JE E3 < OUI , FIN DE CONVERSION.
XR A,X
CP LG+2 < EST-ON AU BOUT DU DESSIN ???
XR A,X
JGE E3 < OUI , C'EST COMME R/C.
RSR < CAS DES RETOURS NORMAUX.
<
< FIN DE DESSIN :
<
E3: EQU $
ADRI -1,K < ANNULATION DU BSR D'APPEL.
BR AFIN < VERS LA FIN DE CONVERSION.
X100: VAL 0
PAGE
IF ORDI-"T",XWOR%,,XWOR%
<
<
< T R A C E D U S E G M E N T ( M 1 , M 2 ) :
<
<
< FONCTION :
< CETTE ROUTINE TRACE LE SEGMENT
< M1M2 , TEL QUE :
< M1(X1,Y1) ,
< M2(X2,Y2).
<
<
< RESULTAT :
< X=X2 ,
< Y=Y2.
<
<
SEG: EQU $
LX X1
LY Y1
BSR APOINT < AFFICHAGE 1ER POINT.
BSR ADICO < PARCOURS DICHOTOMIQUE DE (M1,M2).
LX X2
LY Y2
BSR APOINT < AFFICHAGE 2EME POINT.
RSR
<
<
< P A R C O U R S 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 X1
AD X2
SLRS 1
STA X < X=(X1+X2)/2.
LA Y1
AD Y2
SLRS 1
STA Y < Y=(Y1+Y2)/2.
<
< TEST DE M PAR RAPPORT A M1 :
<
SB Y1 < A=Y-Y1.
JANE E31 < CAS : M#M1.
LA X
SB X1 < A=X-X1.
JAE E32 < CAS : M=M1.
<
< TEST DE M PAR RAPPORT A M2 :
<
E31: EQU $
LA Y
SB Y2 < A=Y-Y2.
JANE E30 < CAS M#M2 ET M#M1.
LA X
SB X2 < A=X-X2.
JANE E30 < CAS : M#M2 ET M#M1.
<
< CAS OU M=M1 OU M=M2 :
<
E32: EQU $
LX X
LY Y
BSR APOINT < AFFICHAGE DU POINT M.
RSR < CAS : M=M1 : ON ARRETE LA
< DICHOTOMIE DESCENDANTE PROVISOI-
< REMENT ...
<
< CAS OU M#M1 ET M#M2 :
<
E30: EQU $
LA X2
LB Y2
PSR A,B < SAVE LE POINT M2.
LA X
STA X2
LA Y
STA Y2 < M2 <-- M.
BSR ADICO < DICHOTOMIE DU NOUVEAU SEGMENT
< (M1,M2).
LX X2
LY Y2
BSR APOINT < AFFICHAGE DE M2 AU RETOUR.
< D'UNE DICHOTOMIE.
STX X1 < PUIS :
STY Y1 < M1 <-- M2 ; ON DECALE L'ORIGINE
< DU SEGMENT (M1,M2).
PLR A,B
STA X2
STB Y2 < RESTAURATION DU POINT M2.
JMP DICO < ET ON REPREND LA DICHOTOMIE...
XWOR%: VAL 0
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 !).
<
<
<
SEG: 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,Y
PSR 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.
<
< CONVERSION DES COORDONNEES VIDEO EN COORDONNEES GRAPHIQUES.
<
LA X1 < X1 VIDEO.
SLLS DEDX
STA DEPX1,W < X1 GRAPHIQUE.
LA X2 < X2 VIDEO.
SLLS DEDX
STA DEPX2,W < X2 GRAPHIQUE.
LA Y1 < Y1 VIDEO.
SB NLIG
NGR A,A
SLLS DEDY
STA DEPY1,W < Y1 GRAPHIQUE.
LA Y2 < Y2 VIDEO.
SB NLIG
NGR A,A
SLLS DEDY
STA DEPY2,W < Y2 GRAPHIQUE.
<
< POSITIONNEMENT DU MODE DE TRACE ('SBT'/'RBT').
<
STZ DEPMOD,W < MODE TRACE = 'RBT' A PRIORI.
LA APOINT
CP ARESET
JE SEGRS < C'EST 'RBT'.
CP AINVER
JE SEGINV
IC DEPMOD,W < C'EST 'SBT'.
JMP SEGRS
SEGINV: EQU $
DC DEPMOD,W < C'EST 'IBT'.
SEGRS: EQU $
LRM A,X
WORD ENTIM-ZERO*2 < ADRESSE OCTET EN-TETE IMAGE.
WORD LENTIM+LIMAG*2 < LONGUEUR OCTETS EN-TETE + IMAGE.
STA STDKU+1
STX STDKU+2
LAD STDKU < DEMANDE INTERPOLATION ET AFFICHAGE.
SVC 0
LRM A,X
WORD IMAG-ZERO*2 < RESTAURATION ADRESSE ET
WORD LIMAG*2 < LONGUEUR IMAGE DANS LA DEMANDE.
STA STDKU+1
STX STDKU+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 W
PLR A,B,X,Y
RSR
XWOR%: VAL 0
PAGE
<
<
< C O N V E R S I O N H E X A ---> B I N A I R E :
<
<
< ARGUMENT :
< Y=NBRE DE CARACTERES A DECODER (1 A 4) ,
IF TITV,X100,,X100
< REP=(Y) CARACTERES PRESUMES HEXA.
X100: VAL 0
IF TITV,,X100,
< ITEM1 CONTIENT 4 CARACTERES COURANTS PRESUMES HEXA.
X100: VAL 0
<
<
< RESULTAT :
< B=0 : OK ,
< =1#0 : CARACTERE ERRONNE ,
< INDICATEURS SUR LA VALEUR DE (B) ,
< A=VALEUR BINAIRE DES (Y) CARACTERES DE (REP)
< SI B=0, OU LA VALEUR COURANTE SI B#0 SUR "S"...
<
<
HEX: EQU $
LXI 0 < INDEX DU BUFFER DE REPONSE.
LBI 0 < CLEAR LE REGISTRE B.
E55: EQU $
IF TITV,X100,,X100
LBY &AREP < A=CARACTERE COURANT DU BUFFER.
X100: VAL 0
IF TITV,,X100,
BSR ASIMU < A=CARACTERE COURANT DE ITEM1.
X100: VAL 0
ADRI -'30,A
JAL E472 < ERREUR : CARACTERE NON RECONNU.
CPI 9 < EST-CE UN CHIFFRE ???
JLE E51 < OUI , C'EST UN CHIFFRE.
ADRI -'41+'39+1,A < NON.
CPI 'A < VALIDATION.
JL E472 < ERREUR : CARACTERE NON RECONNU.
CPI 'F < VALIDATION.
JG E472 < ERREUR : CARACTERE NON RECONNU.
E51: EQU $
SCRS 4 < MISE DES 4 BITS EN TETE DE A.
SCLD 4 < ET CONCATENATION A B.
ADRI 1,X < PROGRESSION DE L'INDEX.
CPR X,Y < EST-CE FINI ???
JNE E55 < NON , ON CONTINUE.
LR B,A < A=VALEUR BINAIRE DE (REP).
LBI 0 < B=0 : RETOUR OK.
E473: EQU $
CPZR B < POSITIONNEMENT DES INDICATEURS.
RSR
<
< RETOURS EN ERREUR :
<
E472: EQU $
IF ORDI-"S",XWOR%,,XWOR%
LR B,A < A=VALEUR COURANTE...
XWOR%: VAL 0
LBI 1 < B#0.
JMP E473 < VERS LA SORTIE ...
PAGE
<
<
< E M I S S I O N M E S S A G E :
<
<
< ARGUMENT :
< A=@MOT DU MESSAGE.
<
<
PRINT: EQU $
PSR C,X < SAVE L'@IMAGE VIDEO ET (X).
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 DU MESSAGE.
PLR C,X < RESTAURE L'@IMAGE VIDEO ET (X).
RSR < RETOUR.
<
<
< I N T E R R O G A T I O N U T I L I S A T E U R :
<
<
IF TITV,X100,,X100
< ARGUMENT :
< A=@MOT D'UN MESSAGE A L'UTILISATEUR.
< A=0 : PAS DE MESSAGE A EMETTRE.
<
<
< RESULTAT :
< A=REPONSE UTILISATEUR (1 CARACTERE).
<
<
DESIR: EQU $
JAE DESIR2 < PAS DE MESSAGE A EMETTRE.
BSR APRINT < ENVOI D'UNE INVITATION.
DESIR2: EQU $
IF ORDI-"S",XWOR%,,XWOR%
LAD STDKU
SVC 0
XWOR%: VAL 0
LAD DEMINT
SVC 0 < LECTURE D'1 CARACTERE REPONSE.
IF ORDI-"T",XWOR%,,XWOR%
LA ASP3
JAE E4003 < PAS DE STABILISATION IMAGE.
WORD '1EC5 < EXECUTION MAITRE DE SP3.
XWOR%: VAL 0
E4003: EQU $ < ON N'EST PAS SOUS :SYS ...
LBY REP < A=REPONSE UTILISATEUR.
RSR
X100: VAL 0
IF TITV,,X100,
< RESULTAT :
< A=CARACTERE COURANT DE L'ITEM1 (REPONSE...)
< (LES 'SPACE' SONT IGNORES)
<
<
DESIR: EQU $
IF ORDI-"T",XWOR%,,XWOR%
LA ASP3
JAE E4003 < PAS DE STABILISATION IMAGE.
WORD '1EC5 < EXECUTION MAITRE DE SP3.
XWOR%: VAL 0
IF ORDI-"S",XWOR%,,XWOR%
LAD STDKU
SVC 0
XWOR%: VAL 0
E4003: EQU $ < ON N'EST PAS SOUS :SYS ...
DESIR1: EQU $
BSR ASIMU < A=CARACTERE COURANT DE L'ITEM1.
CPI " "
JE DESIR1 < LES 'SPACE' EN REPONSE SONT
< DES ELEMENTS NEUTRES , ET
< IGNORES ....
RSR
X100: VAL 0
PAGE
<
<
< A C C E S A U S G N :
<
<
< ARGUMENT :
< A=NVP D'ACCES.
<
<
< RESULTAT :
< X=CONDITION DE RETOUR DU SGN.
<
<
GOSGN: EQU $
STBY SGN
LAD SGN
SVC 0 < ACCES AU SGN.
RSR
IF TITV,,X100,
PAGE
<
<
< B U F F E R S E C T E U R E T P I L E :
<
<
STACK: EQU $
BUFFER: EQU STACK+SSTACK
SECTOR: EQU BUFFER
ZSECTX: VAL SECTOR-ZERO*2
ZSECT2: EQU ZERO+ZSECTX < @OCTET DU BUFFER SECTEUR.
X100: VAL 0
PAGE
<
<
< I M P L A N T A T I O N :
<
<
X14: VAL $-ZERO+2 < TAILLE DU PROGRAMME +2.
X14: VAL SIZE-X14 < ESPACE MEMOIRE LIBRE.
X15: EQU ZERO+X14 < ERREUR D'ASSEMBLAGE SI LE
< PROGRAMME RECOUVRE L'UN DES
< BUFFERS D'IMAGE.
X12: EQU ZERO+PILE-LTNI-LTNI
X10: VAL X12-$
ZEROV: EQU ZERO+X10 < ERREUR D'ASSEMBLAGE SI MAUVAISE
< IMPLANTATION ...
DZS X10+1
IF TITV,,X100,
X21: VAL SECTOR-ZERO+128 < TOP BUFFER SECTEUR.
X21: VAL SIZE+LTN-X21
ZEROW: EQU ZERO+X21 < ERREUR VOLONTAIRE D'ASSEMBLAGE
< SI LE TOP EST EN RECOOUVREMENT
< DU CORPS DE L'ITEM2.
X100: VAL 0
PAGE
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.