PAGE
NMRW:: VAL "RW" < VERSION UTILISANT L'ITEM1 COMME SUPPORT
< DES 'LUT' (L'ITEM1 DOIT ALORS AVOIR
< LE TYPE TEXTE "T").
NMRX:: VAL "RX" < VERSION POSSEDANT SA COPIE LOCALE
< DES 'LUT',
NMMOIN:: VAL " -" < VERSION INTERPRETATIVE DE "RW" LIMITEE
< A LA COMMANDE "G"...
XXCONV:: VAL 0 < VERSION CONVERSATIONNELLE ("RW" ET "RX").
XXITEM:: VAL 1 < VERSION INTERPRETATIVE (" -").
<
<
< P R O C E S S E U R D E P A R C O U R S
< D E S R E G I S T R E S C O U L E U R :
<
<
EOT #SIP DEFINITION ITEM#
EOT #SIP DEFINITION CMS5#
EOT #SIP IMAGE 256#
ENDIF:: VAL 0 < POUR LE #SIP IMAGE 512# QUI SUIT...
XXXIMA: VAL -1 < POUR NE DEFINIR QUE LES 'XXIMA'...
EOT #SIP IMAGE 512#
XXXIMA: VAL XXIMA1
EOT #SIP IMAGE 512#
YYYIMA:: VAL YYYIM2 < AFIN DE GAGNER DE LA PLACE !!!
EOT #SIP DEF PROCESSEUR#
WORD PRV < POINT D'ENTREE REEL.
WORD 0
PROG
PRUN: EQU $
LRP L
BR -2,L < ENTREE PAR "GE"...
ITEM2: EQU ZERO+PILE-LTNI-LTNI
IF NMPROC-NMRW,XWOR%9,,XWOR%9
IDP "RW - JOHN F. COLONNA 03/11/1983"
XXMODE:: VAL XXCONV < MODE CONVERSATIONNEL...
XWOR%9: VAL ENDIF
IF NMPROC-NMRX,XWOR%9,,XWOR%9
IDP "RX - JOHN F. COLONNA 09/08/1983"
XXMODE:: VAL XXCONV < MODE CONVERSATIONNEL...
XWOR%9: VAL ENDIF
IF NMPROC-NMMOIN,XWOR%9,,XWOR%9
IDP " - VERSION INTERPRETATIVE DE 'RW' 04/11/1983"
NMPROC: VAL NMRW < ET ON FAIT CROIRE QUE C'EST "RW",
XXMODE:: VAL XXITEM < MAIS EN MODE INTERPRETATIF...
XWOR%9: VAL ENDIF
PAGE
<
<
< P A R A M E T R E S G E N E R A U X :
<
<
NBRHEX:: VAL 4 < NOMBRE DE CHIFFRES HEXA PAR MOT.
FGR:: VAL 0 < FONCTION DE LECTURE,
FGRE:: VAL 1 < FONCTION DE LECTURE AVEC ECHO,
FGW:: VAL 2 < FONCTION D'ECRITURE.
NVPV: VAL 2 < NVP DE LA VISU,
NVPC: VAL NVPV < NVP UTILISE POUR LE CURSEUR GRAPHIQUE.
NVPCU:: VAL '8B < POUR ACCEDER AU 'CU3'...
X:: MOT 1 < COORDONNEE X,
Y:: MOT 0 < COORDONNEE Y.
<
<
< P E R M U T A T I O N D E S C O U L E U R S :
<
<
XXMIN:: VAL 1 < PREMIERE COULEUR...
XXBLAC:: VAL XXMIN-I < NOIR,
XXR:: VAL XXMIN < SELECTION ROUGE,
XXV:: VAL XXR+I < SELECTION VERT,
XXB:: VAL XXV+I < SELECTION BLEU.
<
<
< C O U L E U R S B A S S E D E F I N I T I O N :
<
<
CUNIVO:: VAL '000F < NIVEAU DE GRIS,
LREG:: VAL CUNIVO+1=0
CUREG:: VAL '0070 < NUMERO DE REGISTRE,
CUBAN:: VAL '0080 < NUMERO DE BANK EN POSITIONNEMENT,
CUREB:: VAL CUBAN?CUREG < ADRESSE COMPLETE DES REGISTRES.
CUCOLO:: VAL '0700 < SELECTION DES COULEURS,
CUDIFF:: VAL '0800 < NUMERO DE BANK EN DIFFUSION.
CUINIT:: VAL '8000 < POUR INITIALISER LE CONTROLEUR.
XWOR%1: VAL CUREB=0
XWOR%2: VAL -XWOR%1
LTCU: VAL CUREB>XWOR%2+1 < LONGUEUR DES TABLES DE COULEUR.
ACTD1:: VAL 1 < 'ACTD' D'ACCES AUX REGISTRES...
<
<
< P A R A M E T R E S D E L A M A T R I C E :
<
<
UNITEX:: VAL 1 < UNITE SUR L'AXE DES X ::K1X1.
UNITEY:: VAL 1 < UNITE SUR L'AXE DES Y ::K1Y1.
ORGKXY:: VAL 1*1 < UNITES ORIGINES ::K1X1Y1.
ORGX:: VAL ORGKXY*0 < ABSCISSE DE L'ORIGINE DE LA MATRICE,
ORGY:: VAL ORGKXY*0 < ORDONNEE DE LA MATRICE.
LONGMX:: VAL XNCOOL+I < LONGUEUR D'UNE SOUS-MATRICE SUR L'AXE
< DES X EXPRIMEE EN 'UNITEX'.
TRN
LONGMY:: VAL NBNIV/XXXMOY < LONGUEUR D'UNE SOUS-MATRICE SUR L'AXE
< DES Y EXPRIMEE EN 'UNITEY'.
NTRN
NMX:: VAL NIV256 < NOMBRE DE SOUS-MATRICES LE LONG DE X,
NMY:: VAL 1 < NOMBRE DE SOUS-MATRICES LE LONG DE Y.
NBAN:: VAL 1 < NOMBRE DE BANKS.
PAGE
<
<
< M E S S A G E S :
<
<
IF XXMODE-XXCONV,XWOR%8,,XWOR%8
RCLF:: VAL '6D
MERR: BYTE 1;'07 < ENVOI DE LA CLOCHE SUR ERREUR...
MRVB: BYTE 5;RC
IF NMPROC-NMRW,XWOR%9,,XWOR%9
ASCI " RWB"
XWOR%9: VAL ENDIF
IF NMPROC-NMRX,XWOR%9,,XWOR%9
ASCI " RXB"
XWOR%9: VAL ENDIF
MRC: BYTE 1;RCLF
MTRANS: BYTE 3;RCLF
ASCI "T="
MPRVB: BYTE 5;RCLF
ASCI "RVB="
MNIV1: BYTE 3;RCLF
ASCI "D="
MNIV2: BYTE 3;RCLF
ASCI "A="
MM: BYTE 3;RCLF
ASCI "M="
MS: BYTE 1;"/"
MDECAL: BYTE 7;RCLF
ASCI "DECAL="
MCOUL: BYTE 6;RCLF
ASCI "COUL="
MODULO: BYTE 5;RCLF
ASCI "MOD?"
IF NMPROC-NMRW,XWOR%9,,XWOR%9
MENTR: BYTE 13;RCLF
ASCI "ENTRELACAGE="
MMSK: BYTE 8;RCLF
ASCI "MSKNIV="
XWOR%9: VAL ENDIF
XWOR%8: VAL ENDIF
<
<
< L O C A L :
<
<
LOCAL
LOC: EQU $
<
< CARTES AU 'CCI' :
<
CDAG: ASCI "!CDA"
BYTE EOT;K
IF XXMODE-XXITEM,XWOR%8,,XWOR%8
<
< DONNEES DE RETOUR A L'APPELANT :
<
SGNLON: VAL 5 < FONCTION DE LOAD SOUS ACN SGN,
SGNLNS: VAL 6 < FONCTION DE LOAD SOUS :SYS SGN.
NSD: ASCI "SD" < NOM DE L'OVERLAY D'APPEL.
TCALL: WORD "GE";"EI" < NOM DES OVERLAYS DE RETOUR SI ALT-MODE.
NCALL: WORD TCALL,X
NPCALL: WORD 0 < NOM DU PROCESSEUR DE RETOUR SI ALT-MODE.
KIN: WORD -1 < COMPTEUR DES ENTREES...
AI1: WORD ZERO+PILE-LTNI+LTN,X
< RELAI D'ACCES A L'ITEM1...
XWOR%8: VAL ENDIF
IF XXMODE-XXCONV,XWOR%8,,XWOR%8
<
< BUFFERS ET DIVERS :
<
LBUFCG:: VAL 3
BUFCG: DZS LBUFCG < BUFFER DU RETICULE DE LA VISU.
BUFX: EQU BUFCG+1+X
BUFY: EQU BUFCG+1+Y
REP: DZS NBRHEX/NOCMO < BUFFER D'ENTREE HEXA-DECIMAL.
XWOR%8: VAL ENDIF
<
< RELAIS DIVERS :
<
ABRANC: WORD BRANCH < ADRESSE DE LA BRANCHE D'OVERLAY.
AOVL: WORD OVL < SOUS-PROGRAMME D'OVERLAY.
IF XXMODE-XXCONV,XWOR%8,,XWOR%8
APRINT: WORD PRINT < EDITION D'UN MESSAGE.
AHEX: WORD HEX < CONVERSION HEXA --> BINAIRE.
AIHEX: WORD IHEX < ENTREE D'UN NOMBRE FLOTTANT.
AVALXY: WORD VALXY < SOUS-PROGRAMME DE VALIDATION (X,Y).
XWOR%8: VAL ENDIF
ASENDC: WORD SENDC < ENVOI D'UNE COULEUR, APRES TRANSLA-
< TION ET PERMUTATION EVENTUELLE...
ASENDT: WORD SENDT < ENVOI D'UN NUMERO DE 'LUT'...
ASP10: WORD SP10 < REINITIALISATION TRANS ET PERMUT...
IF XXMODE-XXCONV,XWOR%8,,XWOR%8
ARETIC: WORD RETIC < SOUS-PROGRAMME DE GESTION DU RETICULE.
ALOOP: WORD LOOP < MODULE D'INTERROGATION...
AERROR: WORD ERROR < BRANCHEMENT EN ERREUR...
APTRAN: WORD PTRAN < ENTREE DE LA TRANSLATION COULEURS.
XWOR%8: VAL ENDIF
ACTRAN: WORD CTRAN < TRANSLATION D'UN NIVEAU DE COULEUR.
IF XXMODE-XXCONV,XWOR%8,,XWOR%8
APERMU: WORD PERMUT < ENTREE DE LA PERMUTATION (R,V,B).
ASP2: WORD SP2 < RECUPERATION PERMUTATION DES COULEURS.
XWOR%8: VAL ENDIF
ASP3: WORD SP3 < ENVOI D'UNE COULEUR INTERPOLEE...
ASP11: WORD SP11 < FLOTTAGE D'UN NIVEAU.
< EN UN NIVEAU 10 BITS.
ASP12: WORD SP12 < ENVOI D'UN NIVEAU FLOTTANT,
ASP14: WORD SP14 < ENVOI D'UN NIVEAU ENTIER.
ASP13: WORD SP13 < SELECTION D'UNE 'LUT'.
IF XXMODE-XXCONV,XWOR%8,,XWOR%8
AGETAD: WORD GETAD < RECUPERATION DE (NIV1,NIV2).
XWOR%8: VAL ENDIF
AGTRVB: WORD GETRVB < RECUPERATION DE (ROUGE1,VERT1,BLEU1).
AGETR: WORD GETR < RECUPERATION D'UNE ENTREE DE LA 'LUTR',
AGETV: WORD GETV < IDEM POUR LA 'LUTV',
AGETB: WORD GETB < IDEM POUR LA 'LUTB'.
IF NMPROC-NMRW,XWOR%9,,XWOR%9
IF XXMODE-XXCONV,XWOR%8,,XWOR%8
ASPINI: WORD SPINI < INITIALISATION DES OPTIONS.
ASTIT: WORD STIT < STORE 3 CHIFFRES HEXA-DECMAUX DANS ITEM1.
XWOR%8: VAL ENDIF
AGTIT: WORD GTIT < RECUPERATION DE 3 CHIFFRES HEXA-DECAIMAUX
< DANS L'ITEM1.
XWOR%9: VAL ENDIF
IF XXMODE-XXCONV,XWOR%8,,XWOR%8
ASPMEM: WORD SPMEM < MEMORISATION DE (R,V,B) DE (NUMREG).
ASPTRA: WORD SPTRA < TRANSFERT DE (R,V,B) DE (NUMREG).
ARET: WORD RETICX
AREP: WORD REP,X < ACCES AU BUFFER D'ENTREE HEXA.
AKOM: WORD KOM,X < ACCES AUX MODULES SPECIFIQUES...
XWOR%8: VAL ENDIF
<
< MEMORISATION LOCALE DES 'LUT' :
<
IF NMPROC-NMRX,XWOR%9,,XWOR%9
TRN
XWOR%1: VAL BIT>NBITOC
ONBNIV:: VAL NBNIV/XWOR%1=K < AFIN DE FAIRE TENIR UNE ENTREE DE 'LUT'
< SUR UN OCTET...
NTRN
ATLUTR: WORD TLUTR,X < 'LUT' LOCALE ROUGE,
ATLUTV: WORD TLUTV,X < 'LUT' LOCALE VERTE,
ATLUTB: WORD TLUTB,X < 'LUT' LOCALE BLEUE.
XWOR%9: VAL ENDIF
IF NMPROC-NMRW,XWOR%9,,XWOR%9
NBITCX:: VAL 4 < NOMBRE DE BITS PAR CHIFFRE HEXA-DECIMAL.
NCPCR:: VAL NBNIV=K+NBITCX-I/NBITCX
< NOMBRE DE CHIFFRES HEXA-DECIAMUX NECES-
< SAIRES A LA REPRESENTATION DU CONTENU
< D'UN CANAL D'UN REGISTRE...
NCPR:: VAL NCPCR*XNCOOL+I < NOMBRE DE CARACTERES PAR REGISTRE DANS
< L'ITEM1 (+1 POUR UN <SPACE>).
ANCPR: WORD NCPR < NOMBRE DE CARACTERES OCCUPES PAR CHAQUE
< REGISTRE DANS L'ITEM1.
TRITEM:: VAL 4/NOCMO*NOCMO < DECALAGE INITIAL (EN NOMBRE D'OCTETS)
< DANS L'ITEM1 ; PERMET AINSI D'Y ECRIRE
< L'APPEL DE " -" POUR "SD"...
XWOR%1: VAL TRITEM/NOCMO < ET EN MOTS...
AITEM1: WORD ZERO+PILE-LTNI+LTN+XWOR%1,X
< RELAI D'ACCES A L'ITEM1.
AITEM2: WORD ZERO+PILE-LTNI-LTNI+LTN+XWOR%1,X
< RELAI D'ACCES A L'ITEM2.
AITEML: WORD ZERO+PILE-LTNI+LTN+XWOR%1,X
< RELAI D'ACCES A L'ITEML ('LOAD').
AITEMS: WORD ZERO+PILE-LTNI+LTN+XWOR%1,X
< RELAI D'ACCES A L'ITEMS ('STORE').
XWOR%9: VAL ENDIF
SLUT: WORD 0 < SAUVEGARDE DES 'LUT' SELECTIONNEES.
< (EN CONVENTIONS INVERSEES).
SNIV: WORD 0 < SAUVEGARDE DU NIVEAU COURANT.
<
< DEMANDES :
<
DEMBAC: WORD '0602 < DEMANDE DE RETOUR A "GE".
WORD BRANCH-ZERO*NOCMO
WORD ZERO-BRANCH+PILE-LTNI-LTNI*NOCMO
WORD -1
IF XXMODE-XXCONV,XWOR%8,,XWOR%8
NGE: ASCI "GE" < NOM DE L'OVERLAY "GE".
DEMMES: BYTE NVPV;FGW < ECRITURE DES MESSAGES.
WORD 0 < ADRESSE OCTET DU MESSAGE,
WORD 0 < LONGUEUR OCTET DU MESSAGE.
DEMHEX: BYTE NVPV;FGRE < ENTREE D'UN NOMBRE HEXA-DECIMAL.
WORD REP-ZERO*NOCMO
WORD NBRHEX
DEMRVB: BYTE NVPV;FGRE < ENTREE DE LA PERMUTATION DES COULEURS.
WORD REP-ZERO*NOCMO+TVPR
WORD TVPB
OG: BYTE NVPC;3 < MISE EN GRAPHIQUE,
CG: BYTE NVPC;4 < MISE EN ALPHA-NUMERIQUE,
CU: BYTE NVPC;6 < MISE EN FONCTION DU RETICULE,
WORD 0
LG: BYTE NVPC;9 < LECTURE DU RETICULE.
WORD BUFCG-ZERO*NOCMO
WORD LBUFCG*NOCMO
DEMIN: BYTE NVPV;FGRE < ENTREE D'UN CARACTERE...
WORD BUFCG-ZERO*NOCMO
WORD 1
DCCI: WORD '0001 < ACCES CCI.
XWOR%8: VAL ENDIF
<
< CONSTANTES, ET VARIABLES :
<
IF XXMODE-XXCONV,XWOR%8,,XWOR%8
IF NMPROC-NMRW,XWOR%9,,XWOR%9
ISHUNT: WORD 0 < =0 : IL FAUDRA REPONDRE A DES QUESTIONS
< DU TYPE "T=", "RVB=...",...
< #0 : DES VALEURS STANDARDS SERONT ADOP-
< TEES POUR 'CTRANS', 'FM1',...
XWOR%1: VAL BIT>LREG
ADECAL: WORD NBNIV/XWOR%1=K < DECALAGE DE PASSAGE DES NIVEAUX DES
< ANCIENNES COULEURS, A CEUX DES NOUVELLES.
XWOR%1: VAL NBNIV=K
IF BIT>XWOR%1-NBNIV,,XWOR%,
IF ATTENTION : 'NBNIV' DOIT ETRE UNE PUISSANCE DE 2 !!!
XWOR%: VAL ENDIF
MKCOUL:: VAL BIT>XWOR%1-MASK
AMCOUL: WORD MKCOUL < MASQUE POUR LES NIVEAUX EN 'LUT'...
XWOR%9: VAL ENDIF
COORDX: WORD 0 < COORDONNEE X COURANTE,
COORDY: WORD 0 < COORDONNEE Y COURANTE.
MINX: WORD ORGX < POUR
MINY: WORD ORGY < VALIDER
MAXX: WORD UNITEX*LONGMX*NMX+ORGX < LES COORDONNEES
MAXY: WORD UNITEY*LONGMY*NMY+ORGY < (X,Y).
ANMX: WORD NMX < NOMBRE DE SOUS-MATRICES SUR X,
ANMY: WORD NMY < ET SUR Y.
ALMX: WORD UNITEX*LONGMX < LONGUEUR SUR X D'UNE SOUS-MATRICE,
ALMY: WORD UNITEY*LONGMY < ET SUR Y.
AUX: WORD UNITEX < LONGUEUR SUR X D'UNE CELLULE,
AUY: WORD UNITEY < ET SUR Y.
XWOR%8: VAL ENDIF
NBNIVM: WORD NBNIV-I < DERNIER NIVEAU EXISTANT PAR CANAL...
NUMBAN: WORD 0 < NUMERO DU BANK EN POSITIONNEMENT,
NUMDIF: WORD 0 < ET EN DIFFUSION.
NUMMAT: WORD 0 < NUMERO DE LA MATRICE DANS LE JEU,
NUMREG: WORD 0 < NUMERO COMPLET DE REGISTRE.
NIVEAU: WORD 0 < NIVEAU SELECTIONNE,
COLOUR: WORD 0 < COULEUR SELECTIONNEE.
IF XXMODE-XXCONV,XWOR%8,,XWOR%8
AUTOC: WORD XXBLAC-I < AFIN DE BY-PASSER LE CHOIX DE
< 'COLOUR' DANS 'VALXY' ; CETTE VALEUR
< EST CLEAREE APRES CHAQUE USAGE...
< (VOIR LES COMMANDES "1", "2" ET "3").
XWOR%8: VAL ENDIF
IF XXBLAC-I,XWOR%,,
IF ATTENTION, L'ETAT INITIAL DOIT ETRE NUL !!!
XWOR%: VAL ENDIF
CTRANS: WORD 0 < CONSTANTE DE TRANSLATION DES NIVEAUX
< DE GRIS AVEC LA COMMANDE "G".
CMOD: WORD 0 < QUE FAIRE LORSQU'UN NIVEAU DE COULEUR
< SORT DE (0,NBNIV-I) :
< =0 : ON LE TRAITE MODULO NBNIV-I,
< #0 : ON LE RAMENE A LA BORNE (0 OU
< NBNIV-I) VOISINNE...
ATXX: WORD TXX,X < LISTE DES PERMUTATIONS DES COULEURS...
TXX: EQU $-XXMIN
AXXR: WORD XXR < PERMUTATION DU ROUGE,
AXXV: WORD XXV < PERMUTATION DU VERT,
AXXB: WORD XXB < PERMUTATION DU BLEU.
SAVER: WORD 0 < SAVE LE NIVEAU DU ROUGE LORS DE "A",
SAVEV: WORD 0 < DE MEME POUR LE VERT,
SAVEB: WORD 0 < DE MEME POUR LE BLEU.
<
< DONNEES D'INTERPOLATION :
<
NIV1: WORD XXNOIR < NIVEAU DE DEPART,
NIV2: WORD NIV256-I < NIVEAU D'ARRIVEE.
< (LES VALEURS INITIALES CI-DESSUS
< SONT DESTINEES A " -"...
ROUGE1: FLOAT 0
VERT1: FLOAT 0
BLEU1: FLOAT 0
IF XXMODE-XXCONV,XWOR%8,,XWOR%8
ROUGE2: FLOAT 0
VERT2: FLOAT 0
BLEU2: FLOAT 0
FPAS: FLOAT 0 < PAS D'INTERPOLATION.
FPAS1: FLOAT 0 < FPAS-1,
FPAS2: FLOAT 0 < (FPAS-1)*(FPAS-2).
XWOR%8: VAL ENDIF
F05: FLOAT 0.5 < POUR LES ARRONDIS...
IF XXMODE-XXCONV,XWOR%8,,XWOR%8
FDLINE: FLOAT 0 < VARIABLE DE DELINEARISATION...
FM1: FLOAT 1.5 < CONSTANTES DE DELINEARISATION,
IF NMPROC-NMRW,XWOR%9,,XWOR%9
ANI256: WORD NIV256 < POUR LES CAS (NIV1) > (NIV2)...
F15: FLOAT 1.5 < POUR REINITIALISER 'FM1' SI ISHUNT#0...
XWOR%9: VAL ENDIF
F1: FLOAT 1
F6: FLOAT 6
F4: FLOAT 4 < CONSTANTE DE DELINEARISATION...
IF NMPROC-NMRW,XWOR%9,,XWOR%9
MSKNIV: WORD MMOT < MASQUE SUR LES NIVEAUX ENVOYES DANS LES
< 'LUT' (POUR SIMULER PAR EXEMPLE DES
< CONVERTISSEURS AVEC MOINS DE 10 BITS
< EN SORTIE...).
XWOR%9: VAL ENDIF
<
< INITIALISATION DE L'IMAGEUR :
<
ACTRL1: WORD RCTRL1 < ACCES AU REGISTRE 'CTRL1',
ACTRL2: WORD RCTRL2 < ACCES AU REFISTRE 'CTRL2'.
XWOR%8: VAL ENDIF
XXXIMA: VAL XXIMA2
EOT #SIP IMAGE 512#
XXXIMA: VAL XXIMA4
EOT #SIP IMAGE 512#
<
< ACCES A LA 'LUT' :
<
ARLUT0: WORD RLUT < ACCES AU PREMIER REGISTRE DES 'LUT'.
ARSLUT: WORD RSLUT < ACCES A LA SELECTION DES COULEURS DE
< 'LUT' (R,V,B).
IF NMPROC-NMRW,XWOR%9,,XWOR%9
<
< DONNEES D'ENTRELACAGE :
<
ENTR1: WORD MMOT < A PRIORI TOUS LES
ENTR2: WORD MMOT < REGISTRES SONT AUTORISE
< UTILISATION DE (ENTR1,ENTR2) : LORS DE
< L'ECRITURE DU REGISTRE (NUMREG), ON
< CALCULE SON NUMERO MODULO 32 (2*NBITMO) ;
< SI LE BIT ENTR(X) EST A 1 LE REGISTRE EST
< ECRIT, SINON, IL N'EST PAS MODIFIE...
< ON PEUT AINSI CREER DES BANDES DE COU-
< LEURS LORS D'UNE INTERPOLATION...
XWOR%9: VAL ENDIF
<
< PILE DE TRAVAIL :
<
STACK: DZS 30
PAGE
IF XXMODE-XXCONV,XWOR%8,,XWOR%8
<
<
< T A B L E D E S :C O M M A N D E S :
<
<
REP0: VAL "0" < PREMIERE COMMANDE.
KOM: EQU $-REP0 < ELLES COMMENCENT A "0"...
WORD AUTOC0 < 0 : "NOIR" IMPLICITE POUR "C" ET "P"
WORD AUTOC1 < 1 : "R" IMPLICITE POUR "C" ET "P"
WORD AUTOC2 < 2 : "V" IMPLICITE POUR "C" ET "P"
WORD AUTOC3 < 3 : "B" IMPLICITE POUR "C" ET "P"
WORD ERROR < 4
WORD ERROR < 5
WORD ERROR < 6
WORD ERROR < 7
WORD ERROR < 8
WORD ERROR < 9
WORD ERROR < :
WORD ERROR < ;
WORD ERROR < <
WORD PSHUNT < = : MISE EN PLACE DES OPTIONS STANDARDS
WORD ERROR < >
WORD CLIGN < ? : CLIGNOTEMENT D'UNE COULEUR
WORD ERROR < @
WORD PGETC < A : RECUPERATION D'UNE COULEUR
WORD PSTOC < B : TRANSFERT COULEUR "A" --> "B"
WORD RETICC < C : COULEUR AVEC CUMUL
WORD ERROR < D
WORD ENTREL < E : ENTRELACAGE DES REGISTRES
WORD RETICF < F : FIN, RETOUR A 'GE'
WORD GCOUL < G : TRANSLATION ET PERMUTATION PALETTE
WORD ERROR < H
WORD RETII1 < I : INITIALISATION DE LA CARTE
WORD GINT < J : INTERPOLATION ENTRE 2 COULEURS.
WORD COLD < K : RECUPERATION D'UNE ANCIENNE COULEUR
WORD LOAD1 < L : ITEML <-- ITEM1
WORD LOAD2 < M : ITEML <-- ITEM2
WORD PMNIV < N : DEFINITION DE 'MSKNIV'
WORD ERROR < O
WORD RETICP < P : COULEUR AVEC REINITIALISATION
WORD ERROR < Q
WORD ERROR < R
WORD STOR1 < S : ITEMS <-- ITEM1
WORD STOR2 < T : ITEMS <-- ITEM2
WORD ERROR < U
WORD ERROR < V
WORD RETICW < W : RETOUR TEMPORAIRE AU CCI
REPZ: VAL $-KOM-1 < DERNIERE COMMANDE.
XWOR%8: VAL ENDIF
PAGE
PROG
XXXIMA: VAL XXIMA3
EOT #SIP IMAGE 512#
XXXIMA: VAL XXIMA5
EOT #SIP IMAGE 512#
PAGE
IF XXMODE-XXCONV,XWOR%8,,XWOR%8
<
<
< E N T R E E D ' U N P O I N T D E D E P A R T
< E T D ' U N P O I N T D ' A R R I V E E :
<
<
< RESULTAT :
< (NIV1)=NIVEAU DE DEPART,
< (NIV2)=NIVEAU D'ARRIVEE.
<
<
GETAD: EQU $
<
< ENTREE DU NIVEAU DE DEPART :
<
GINT1: EQU $
LAI MNIV1-ZERO
BSR AIHEX
JNE GINT1 < ERREUR...
JAL GINT1 < ERREUR...
CPI NIV256-I
JG GINT1 < ERREUR...
STA NIV1 < NIVEAU DE DEPART.
<
< ENTREE DU NIVEAU D'ARRIVEE :
<
GINT2: EQU $
LAI MNIV2-ZERO
BSR AIHEX
JNE GINT2 < ERREUR...
JAL GINT2 < ERREUR...
CPI NIV256-I
JG GINT2 < ERREUR...
IF NMPROC-NMRX,XWOR%9,,XWOR%9
CP NIV1
JLE GINT1 < ERREUR, IL FAUT NIV1<NIV2...
XWOR%9: VAL ENDIF
IF NMPROC-NMRW,XWOR%9,,XWOR%9
CP NIV1
JE GINT1 < ERREUR, IL FAUT NIV1#NIV2...
XWOR%9: VAL ENDIF
STA NIV2 < NIVEAU D'ARRIVEE.
<
< ET RETOUR :
<
RSR
XWOR%8: VAL ENDIF
PAGE
<
<
< R E C U P E R A T I O N D U ( R , V , B ) :
<
<
< ARGUMENT :
< (X)=NIVEAU DONT ON CHERCHE LE (R,V,B) REEL.
<
<
< RESULTAT :
< (ROUGE1,VERT1,BLEU1)=(R,V,B) DU NIVEAU (X).
<
<
GETRVB: EQU $
BSR AGETB < RECUPERATION DU BLEU,
BSR ASP11 < CONVERSION FLOTTANT,
FST BLEU1 < RECUPERATION DU BLEU(NIV1),
BSR AGETV < RECUPERATION DU VERT,
BSR ASP11 < CONVERSION FLOTTANT,
FST VERT1 < RECUPERATION DU VERT(NIV1),
BSR AGETR < RECUPERATION DU ROUGE,
BSR ASP11 < CONVERSION FLOTTANT,
FST ROUGE1 < RECUPERATION DU BLEU(NIV1).
RSR
PAGE
IF XXMODE-XXCONV,XWOR%8,,XWOR%8
<
<
< M I S E E N P L A C E D E S O P T I O N S
< S T A N D A R D S :
<
<
IF NMPROC-NMRW,XWOR%9,,XWOR%9
PSHUNT: EQU $
<
< POSITIONNEMENT DE 'ISHUNT' :
<
LA ISHUNT
IBT NBITMO-BIT < INVERSION DU MODE...
STA ISHUNT
JAE PSHUN1 < CAS OU IL FAUT TOUT RENTRER A LA MAIN...
<
< CAS OU L'ON FORCE DES
< VALEURS STANDARDS :
<
BSR ASPINI < INITIALISATION DES OPTIONS.
<
< RETOUR :
<
PSHUN1: EQU $
BR ARET
<
<
< I N I T I A L I S A T I O N D E S O P T I O N S :
<
<
SPINI: EQU $
<
< INITIALISATIONS :
<
STZ CTRANS < TRANSLATION NULLE,
STZ CMOD
IC CMOD < PAS DE MODULO DES COULEURS,
LAI XXR
STA AXXR < R=R,
LAI XXV
STA AXXV < V=V,
LAI XXB
STA AXXB < B=B,
X1: VAL BIT>LREG
LAI NBNIV/XWOR%1=K
STA ADECAL < DECALAGE OLD --> NEW,
FLD F15
FST FM1 < DELINEARISATION STANDARD.
LAI MMOT
STA ENTR1 < A PRIORI, TOUS LES
STA ENTR2 < REGISTRES SONT 'ON'...
STA MSKNIV < ET LA SORTIE SE FAIT SUR 10 BITS...
<
< ET RETOUR :
<
RSR
XWOR%9: VAL ENDIF
IF NMPROC-NMRX,XWOR%9,,XWOR%9
PSHUNT: EQU $
BR AERROR
XWOR%9: VAL ENDIF
PAGE
IF NMPROC-NMRW,XWOR%9,,XWOR%9
<
<
< E N T R E L A C A G E D E S R E G I S T R E S :
<
<
< FONCTION :
< CE MODULE PERMET D'INHIBER/AUTORISER
< MODULO 32 LES REGISTRES ; AINSI, LORS
< DE L'ECRITURE DE L'UN D'EUX, ON CALCULE
< SON NUMERO MODULO 32 (NUMREG.MOD.32) ;
< SI LE BIT ENTR(X) EST A 0, LE REGISTRE
< (NUMREG) N'EST PAS MODIFIE...
<
<
ENTREL: EQU $
LAI MENTR-ZERO
BSR AIHEX < ENTREE DES 16 PREMIERS BITS...
JNE ENTREL < ERREUR...
STA ENTR1 < 16 PREMIERS BITS...
< NOTA : ON NE PREND PAS DE PRECAUTIONS
< PARTICULIERES POUR LES ALT-MODES
< INTEMPESTIFS : ON PEUT AINSI
< MODIFIER LES 16 PREMIERS BITS...
LAD DEMHEX
SVC 0
BSR AHEX < ENTREE DES 16 DERNIERS BITS...
JNE ENTREL < ERREUR...
STA ENTR2 < 16 DERNIERS BITS...
BR ARET < ET RETOUR...
XWOR%9: VAL ENDIF
IF NMPROC-NMRX,XWOR%9,,XWOR%9
ENTREL: EQU $
BR AERROR
XWOR%9: VAL ENDIF
PAGE
<
<
< V A L I D A T I O N D E ( X , Y ) ,
< E T G E N E R A T I O N D E S O R D R E S :
<
<
< FONCTION :
< CE SOUS-PROGRAMME RECOIT UN COUPLE
< (X,Y) QU'IL VALIDE, IL DETERMINE ENSUITE
< SI CELA EST POSSIBLE, LES DIFFERENTS
< PARAMETRES DE COULEUR...
<
<
< ARGUMENTS :
< (X,Y)=COORDONNEES DU POINT COURANT,
<
<
< RESULTAT :
< A=0 : (X,Y) ETAIT VALIDE,
< #0 : (X,Y) ETAIT HORS DE LA MATRICE...
<
<
VALXY: EQU $
PSR X,Y
STX COORDX < SAUVEGARDE DES COORDONNEES.
STY COORDY
LR X,A < VALIDATION DE X :
CP MINX
JL VALXY1 < ERREUR...
CP MAXX
JGE VALXY1 < ERREUR...
LR Y,A < VALIDATION DE Y :
CP MINY
JL VALXY1 < ERREUR...
CP MAXY
JGE VALXY1 < ERREUR...
<
< TRAITEMENT D'UN COUPLE VALIDE (X,Y) :
<
LR X,A
SB MINX < REDUCTION A L'ORIGINE,
SARD NBITMO
DV ALMX
STA NUMMAT < (PROVISOIRE) : NUMERO DE LA COLONNE.
LA AUTOC < Y-A-T'IL UNE COULEUR IMPLICITE ???
STZ AUTOC
DC AUTOC < CLEAR A PRIORI...
JAGE VALXY4 < OUI, ON LA PREND :
< 0 --> NOIR,
< 1 --> ROUGE,
< 2 --> VERT,
< 3 --> BLEU.
LR B,A < NON, ON LA CALCULE...
SARD NBITMO
DV AUX
VALXY4: EQU $
STA COLOUR < COULEUR DESIREE (ON NEGLIGE B...).
LR Y,A
SB MINY < REDUCTION A L'ORIGINE,
SARD NBITMO
DV ALMY
STA NUMBAN < (PROVISOIRE) : NUMERO DE LA LIGNE.
LR B,A
SARD NBITMO
DV AUY
SLLS XXXMOY=K < EN EFFET VOIR LA DEFINITION DE 'LONGMY'.
SB NBNIVM
NGR A,A < AFIN D'AVOIR LE CLAIR EN BAS, ET LE
< SOMBRE EN HAUT (COMME DANS "RV")...
STA NIVEAU < NIVEAU DESIRE (ON NEGLIGE B...).
LA NUMBAN
MP ANMX < NUMERO-LIGNE*NMX
LR B,A
AD NUMMAT < NUMERO DE LA SOUS-MATRICE :
STA NUMMAT < QUE L'ON RANGE A PRIORI...
STA NUMREG
STZ NUMBAN < ET BANK 0 A PRIORI...
<
< ET C'EST FINI...
<
LAI 0 < RETOUR OK...
VALXY3: EQU $
PLR X,Y
RSR
VALXY1: EQU $
LAI 1 < RETOUR EN ERREUR...
JMP VALXY3
PAGE
<
<
< E D I T I O N D ' U N M E S S A G E :
<
<
< ARGUMENT :
< A=ADRESSE DU MESSAGE, DONT LE 1ER OCTET
< EST LA LONGUEUR.
<
<
PRINT: EQU $
PSR A,X,W
LR A,W < W=ADRESSE MOT DU MESSAGE.
ADR A,A
ADRI NOCMO-1,A
STA DEMMES+1 < ADRESSE DU MESSAGE,
LBY 0,W
STA DEMMES+2 < LONGUEUR DU MESSAGE.
LAD DEMMES
SVC 0 < EDITION DU MESSAGE.
PLR A,X,W
RSR
PAGE
<
<
< C O N V E R S I O N H E X A --> B I N A I R E :
<
<
< ARGUMENT :
< LE BUFFER 'REP'.
<
<
< RESULTAT :
< B=0 : (A)=VALEUR BINAIRE,
< B#0 : ERREUR DE SYNTAXE HEXA-DECIMALE.
< LES INDICATEURS POSITIONNES SUR (B).
<
<
HEX: EQU $
BASE10: VAL 10
XWOR%8: VAL ENDIF
BASE16: VAL 16
IF XXMODE-XXCONV,XWOR%8,,XWOR%8
PSR X,Y
LYI NBRHEX
LXI 0 < INDEX DU BUFFER DE REPONSE.
LBI 0 < CLEAR LE REGISTRE B.
HEX1: EQU $
LBY &AREP < A=CARACTERE COURANT DU BUFFER.
ADRI -"0",A
JAL HEX4 < ERREUR : CARACTERE NON RECONNU.
CPI BASE10 < EST-CE UN CHIFFRE ???
JL HEX2 < OUI , C'EST UN CHIFFRE.
ADRI -"A"+"9"+1,A < NON.
CPI BASE10 < VALIDATION.
JL HEX4 < ERREUR : CARACTERE NON RECONNU.
CPI BASE16 < VALIDATION.
JGE HEX4 < ERREUR : CARACTERE NON RECONNU.
HEX2: EQU $
SCRS NBITMO/NBRHEX < MISE DES 4 BITS EN TETE DE A.
SCLD NBITMO/NBRHEX < ET CONCATENATION A B.
ADRI 1,X < PROGRESSION DE L'INDEX.
CPR X,Y < EST-CE FINI ???
JNE HEX1 < NON , ON CONTINUE.
LR B,A < A=VALEUR BINAIRE DE (REP).
LBI 0 < B=0 : RETOUR OK.
HEX3: EQU $
PLR X,Y
CPZR B < POSITIONNEMENT DES INDICATEURS.
RSR
<
< RETOURS EN ERREUR :
<
HEX4: EQU $
LR B,A < A=VALEUR COURANTE...
LBI 1 < B#0.
JMP HEX3 < VERS LA SORTIE ...
PAGE
<
<
< E N T R E E D ' U N N O M B R E F L O T T A N T :
<
<
< ARGUMENT :
< (A)=ADRESSE D'UN MESSAGE.
<
<
< RESULTATS :
< (A)=VALEUR, ET
< LES INDICATEURS POSITIONNES SUR 'JNE' SI ERREUR.
<
<
IHEX: EQU $
BSR APRINT < EDITION D'UN MESSAGE,
LAD DEMHEX
SVC 0 < ENTREE DU NOMBRE,
BSR AHEX < ET CONVERSION EN BINAIRE...
RSR
PAGE
<
<
< E N T R E E D E L A P E R M U T A T I O N
< D E S C O U L E U R S :
<
<
< FONCTION :
< CE MODULE PERMET DE PERMUTER
< LES CANAUX DE SORTIE ENTRE EUX,
< ET AINSI PAR EXEMPLE D'ENVOYER
< LE ROUGE-LOGIQUE SUR LE BLEU
< PHYSIQUE, ET AINSI D'ENVOYER
< LE ROUGE SUR LE MONITEUR NOIR
< ET BLANC SI CELUI-CI NE RECOIT
< QUE LE BLEU...
<
<
< ARGUMENT :
< B=VALEUR PAR DEFAUT,
< X=INDEX DE LA COULEUR.
<
<
< RESULTAT :
< X=VALEUR DEMANDEE.
<
<
SP2: EQU $
LBY &AREP < (A)=CARACTERE COURANT,
XXABS:: VAL XXBLAC < CANAL COULEUR ABSENT...
LXI XXABS < ABSENT A PRIORI,
CPI "X" < ABSENT ???
JE SP21 < OUI...
LXI XXR < ROUGE A PRIORI,
CPI "R" < ROUGE ???
JE SP21 < OUI...
LXI XXV < VERT A PRIORI,
CPI "V" < VERT ???
JE SP21 < OUI...
LXI XXB < BLEU A PRIORI...
CPI "B" < BLEU ???
JE SP21 < OUI...
LAI MERR-ZERO
BSR APRINT < ERREUR !!!
LR B,X < ON FORCE LA VALEUR PAR DEFAUT...
SP21: EQU $
RSR < ET C'EST TOUT...
PAGE
<
<
< G E S T I O N D E L ' I M A G E U R 5 1 2 * 5 1 2 :
<
<
< FONCTION :
< CE SOUS-PROGRAMME PERMET D'ENTRER LE
< RETICULE DE LA VISU ET D'AGIR EN CONSEQUENCES...
< LES COMMANDES RECONNUES SONT :
< F : FIN,
< C : SELECTION COULEUR, EN LAISSANT INCHANGES
< LES 0, 1 OU 2 AUTRES REGISTRES NON SELECTIONNES,
< P : SELECTION COULEUR, EN REMETTANT AU PREALABLE LES
< 3 REGISTRES AU NOIR,
< W : RETOUR AU CCI,
< D'ENTRE-EUX, IL EN PREND L'EXTREMITE (X,Y),
< ET FAIT COMME SI "C" AVAIT ETE RECU AU
< RETICULE ; CECI DURE JUSQU'A UN 'OAB'...
< I : INITIALISATION DE LA CARTE.
< J : INTERPOLATION ENTRE 2 COULEURS.
< A : MEMORISATION D'UNE COULEUR,
< B : TRANSFERT D'UNE COULEUR "A" --> "B",
< G : TRANSLATION, ET PERMUTATION D'UNE PALETTE,
< K : RECUPERATION D'UNE COULEUR DU SYSTEME 256*256,
< = : INHIBITION/AUTORISATION (BASCULE) DES MESSAGES
< DE DEMANDE DE 'TRANS', 'RVB',...
< L : ITEML <-- ITEM1,
< M : ITEML <-- ITEM2,
< S : ITEMS <-- ITEM1,
< T : ITEMS <-- ITEM2,
< ? : CLIGNOTEMENT DE LA COULEUR COURANTE.
<
<
<
< "I" : INITIALISATION DE LA CARTE :
<
RETII1: EQU $
LAI XCTRL1
STA MCDAJ
LA ACTRL1
BSR APWCDA < INITIALISATION DE 'CTRL1'.
LAI XCTRL2
STA MCDAJ
LA ACTRL2
BSR APWCDA < INITIALISATION DE 'CTRL2'.
JMP RETICX < VERS LA COMMANDE SUIVANTE...
<
< POINT D'ENTREE :
<
RETIC: EQU $
IF NMPROC-NMRW,XWOR%9,,XWOR%9
LXI IINDIC-LTN*NOCMO-TRITEM
LBY &AITEML < (A)=TYPE DE L'ITEML :
CPI "I" < EST-CE LE TYPE "FILM DIGITAL" ???
JE ETYPI < OUI, C'EST BON...
CPI "T" < EST-CE BIEN LE TYPE 'TEXTE' ???
JNE RETICF < NON, ON SORT IMMEDIATEMENT...
ETYPI: EQU $
XWOR%9: VAL ENDIF
<
< ENTREE DU RETICULE :
<
RETICX: EQU $
LOOP: EQU RETICX < MODULE D'INTERROGATION...
LAD OG
SVC 0 < MISE EN GRAPHIQUE,
LAD CU
SVC 0 < MISE EN FONCTION DU RETICULE,
LAD LG
SVC 0 < LECTURE DU RETICULE.
<
< ANALYSE DE L'ORDRE :
<
LBY BUFCG < A=CARACTERE DE DEBLOCAGE DE LA VISU.
CPI REP0 < ET VALIDATION...
JL ERROR < ERREUR...
CPI REPZ < VALIDATION, SUITE...
JG ERROR < ERREUR...
LR A,X < X=COMMANDE DEMANDEE,
LA &AKOM < A=ADRESSE DU MODULE DE TRAITEMENT...
LX BUFX < X=COORDONNEE X,
LY BUFY < Y=COORDONNEE Y.
PSR A
RSR < BRANCHEMENT AU MODULE SPECIFIQUE...
<
< ERREUR :
<
RETICY: EQU $
ERROR: EQU RETICY < MODULE D'ERREUR...
LAD CG
SVC 0 < RETOUR EN ALPHANUMERIQUE...
LAI MERR-ZERO
BSR APRINT
JMP RETICX < ET ON RECOMMENCE...
<
< "F" : RETOUR A "GE" :
<
RETICF: EQU $
LAD CDAG
BSR ASPCCI < RETOUR A LA 'CDA' COMMUNE...
< (ON REND LA "CDAJ")
LRM W,K
WORD BRANCH < (W)=ADRESSE DE LA BRANCHE D'OVERLAY,
WORD PILE-1 < (K)=ADRESSE DE LA PILE 'SMC'...
LA NGE
STA &ABRANC < MISE EN PLACE DU NOM DE "GE".
LAD DEMBAC
BSR AOVL < ET ON REVIENT A "GE"...
JMP RETICY < IMPOSSIBLE...
<
< "W" : RETOUR AU CCI :
<
RETICW: EQU $
LAD DCCI
SVC 0
JMP RETICX
<
< SELECTION DES COULEURS IMPLICITES :
<
AUTOC0: EQU $
LAI XXBLAC < NOIR,
JMP AUTOCA
AUTOC1: EQU $
LAI XXR < ROUGE,
JMP AUTOCA
AUTOC2: EQU $
LAI XXV < VERT,
JMP AUTOCA
AUTOC3: EQU $
LAI XXB < BLEU,
AUTOCA: EQU $
STA AUTOC < MISE EN PLACE DE LA COULEUR IMPLICITE...
JMP RETICX < VERS LA COMMANDE SUIVANTE...
<
< "C" : SELECTION DE LA COULEUR...
<
RETICC: EQU $
BSR AVALXY < VALIDATION DE (X,Y)...
JANE RETICY < ERREUR DE POSITIONNEMNT...
BSR ASP10 < REINITIALISATION TRANS ET PERMUT...
RETIC8: EQU $
BSR ASENDC < ENVOI DE LA COULEUR DEMANDEE...
JMP RETICX < VERS LA COMMANDE SUIVANTE...
<
< "P" : SELECTION COULEUR AVEC REINITIALISATION AU NOIR PREALABLE :
<
RETICP: EQU $
BSR AVALXY < VALIDATION (X,Y)....
JANE RETICY < ERREUR...
BSR ASP10 < REINITIALISATION TRANS ET PERMUT...
LAI ALLUT)ALLUT
BSR ASP13 < SELECTION DES 3 COULEURS FONDAMENTALES,
LAI XXNOIR
BSR ASP14 < ET MISE AU NOIR DU NIVEAU DE GRIS
< DEMANDE...
JMP RETIC8 < VERS LA MISE EN PLACE DE LA COULEUR
< REELLEMENT DEMANDEE...
XWOR%8: VAL ENDIF
PAGE
IF XXMODE-XXITEM,XWOR%8,,XWOR%8
<
<
< P O I N T D ' E N T R E E :
<
<
PRV: EQU $
LRM L,K
WORD LOC+'80 < INTIALISATION DE L,
WORD STACK-1 < INITIALISATION DE K.
LAI PAGER
BSR AGPCDA < POSITIONNEMENT SUR LA PAGE DES REGISTRES
< DE LA 'CDAJ'...
STZ CTRANS < AU CAS DES ALT-MODES...
IC KIN < COMPTAGE DES ENTREES :
JG ALTM < ABORT IMMEDIAT SUR ALT-MODE...
LA AITEM1
SB AI1 < CALCUL DU DECALAGE INITIAL,
AD CDRET,W < A=RELAI D'ACCES A ITEM1/ITEM2...
< (AVEC LE DECALAGE INITIAL...)
JAGE ALTM < CAS DE ALT-MODES VICIEUX QUI DETRUI-
< SENT LE MOT2...
STA AITEMS
STA AITEML
LA MODCAL,W < A=INDEX INITIAL DE L'ITEM1...
LXI 0 < "GE" A PRIORI...
TBT 0 < "GE" (0) OU "EI" (1) ???
ADCR X
LA &NCALL
STA NPCALL < NOM DU PROCESSEUR A APPELER SUR LA
< RECEPTION D'UN ALT-MODE.
XWOR%8: VAL ENDIF
PAGE
<
<
< T R A N S L A T I O N D ' U N E P A L E T T E :
<
<
GCOUL: EQU $
IF XXMODE-XXCONV,XWOR%8,,XWOR%8
BSR APTRAN < ENTREE DE LA TRANSLATION,
BSR APERMU < ET DE LA PERMUTATION...
BSR AGETAD < ENTREE DE (NIV1,NIV2), SOIT LE NIVEAU
< DE DEPART PUIS D'ARRIVEE...
XWOR%8: VAL ENDIF
LX NIV1 < (X)=NUMERO DE REGISTRE COURANT.
GCOUL1: EQU $
<
< TRAITEMENT DU REGISTRE COURANT :
<
BSR AGTRVB < RECUPERATION DE (ROUGE1,VERT1,BLEU1).
LR X,Y < (Y)=NUMERO DU REGISTRE COURANT...
BSR ASP3 < TRANSLATION, ET PERMUTATION DU REGISTRE
< COURANT...
<
< PASSAGE AU REGISTRE SUIVANT :
<
ADRI I,X
LR X,A
CP NIV2 < S'IL EXISTE...
JLE GCOUL1 < OUI...
IF XXMODE-XXCONV,XWOR%8,,XWOR%8
JMP RETICX < NON, C'EST FINI...
XWOR%8: VAL ENDIF
IF XXMODE-XXITEM,XWOR%8,,XWOR%8
PAGE
<
<
< R E T O U R A ' G E ' :
<
<
GOGE: EQU $
LAI BRANCH-ZERO
LR A,W < W=ADRESSE DE LA BRANCHE...
LA NSD
STA 0,W < GENERATION DU NOM DE L'OVERALY,
ACTD 4 < A='IDESC',
ORI "0" < CONVERTI EN ASCI,
STBY 2,W < QUI FAIT PARTIE DU NOM...
LAI SGNLON
STBY DEMBAC < MISE EN MODE 'LOAD SOUS ACN'...
STZ CDRET,W < RETOUR OK...
GOGE2: EQU $
LRM K
WORD PILE-1 < RESTAURATION DE 'K'...
LRM A
WORD NIV256*NCPR+TRITEM
STA MODCAL,W < RENVOI DE L'INDEX DE FIN DE PALETTE...
LAD CDAG
BSR ASPCCI < ENVOI DE !CDA.
GOGE1: EQU $
LAD DEMBAC
BSR AOVL < ET TENTATIVE DE CHARGEMENT...
QUIT 1 < EN CAS D'ERREUR,
JMP GOGE1 < ET ON RETENTE...
<
<
< T R A I T E M E N T D E S A L T - M O D E S :
<
<
ALTM: EQU $
LAI BRANCH-ZERO
LR A,W < W=ADRESSE DE LA BRANCHE...
LA NPCALL
JANE ALTM1 < OK...
LA MODCAL,W < MODCAL EST ENCORE A SA VALEUR INITIALE.
LXI 0 < "GE" A PRIORI...
TBT 0 < "EI" OU "GE" ???
ADCR X
LA &NCALL < A=OVERLAY A APPELER...
ALTM1: EQU $
STA 0,W < DANS LE CAS D'UN ALT-MODE, ON REVIENT
< DIRECTEMENT A "GE" OU A "EI"...
LAI " " < ON RESTAURE, AU CAS OU LE ALT-MODE
STBY 2,W < APPARAITRAIT DANS 'GOGE'...
LAI SGNLNS < IDEM...
STBY DEMBAC
LAI 2
STA CDRET,W < TRANSMISSION DU ALT-MODE...
JMP GOGE2
XWOR%8: VAL ENDIF
PAGE
IF XXMODE-XXCONV,XWOR%8,,XWOR%8
<
<
< M E M O R I S A T I O N C O U L E U R :
<
<
PGETC: EQU $
BSR AVALXY < RECUPERATION DES COORDONNEES...
JANE ERROR < BERK...
BSR ASPMEM < MEMORISATION DE (R,V,B) DE (NUMREG).
JMP RETICX < ET C'EST TOUT...
<
<
< T R A N S F E R T C O U L E U R " A " --> " B " :
<
<
PSTOC: EQU $
BSR AVALXY < RECUPERATION DE LA DESTINATION...
JANE ERROR < BERK...
BSR APTRAN < ENTREE DE LA TRANSLATION,
BSR APERMU < ET DE LA PERMUTATION...
BSR ASPTRA < TRANSFERT DE (R,V,B) DE (NUMREG).
JMP RETICX < ET C'EST TOUT...
PAGE
IF NMPROC-NMRW,XWOR%9,,XWOR%9
<
<
< C H A N G E M E N T D E L ' I T E M E M E T T E U R :
<
<
< FONCTION :
< CE MODULE CHANGE L'ITEM
< EMETTEUR DES PALETTES, LA
< CONVENTION DE NOM SUIVANTE
< ETANT UTILISEE :
<
< "L"='LOAD ITEM1',
< "M"='LOAD ITEM2',
<
< A NOTER : "M"="L"+1...
<
<
LOAD1: EQU $
LA AITEM1
JMP LOAD
LOAD2: EQU $
LA AITEM2
LOAD: EQU $
STA AITEML < MISE EN PLACE DU RELAI...
LXI IINDIC-LTN*NOCMO-TRITEM
LBY &AITEML < (A)=TYPE DE L'ITEML :
JMP LODSTO < VERS LA VALIDATION...
<
<
< C H A N G E M E N T D E L ' I T E M R E C E P T E U R :
<
<
< FONCTION :
< CE MODULE CHANGE L'ITEM
< RECEPTEUR DES PALETES, LA
< CONVENTION DE NOM SUIVANTE
< ETANT UTILISEE :
<
< "S"='STORE ITEM1' (ETAT INITIAL),
< "T"='STORE ITEM2',
<
< A NOTER : "T"="S"+1...
<
<
STOR1: EQU $
LA AITEM1
JMP STORE
STOR2: EQU $
LA AITEM2
STORE: EQU $
STA AITEMS < MISE EN PLACE DU RELAI...
LXI IINDIC-LTN*NOCMO-TRITEM
LBY &AITEMS < (A)=TYPE DE L'ITEMS :
<
< VALIDATION DE L'ITEM L/S :
<
LODSTO: EQU $
CPI "I" < EST-CE LE TYPE "FILM DIGITAL" ???
JE LODSTQ < OUI, C'EST BON...
CPI "T" < EST-CE BIEN LE TYPE 'TEXTE' ???
JNE RETICF < NON, ON SORT IMMEDIATEMENT...
LODSTQ: EQU $
JMP RETICX < ET C'EST TOUT...
XWOR%9: VAL ENDIF
IF NMPROC-NMRX,XWOR%9,,XWOR%9
LOAD1: EQU $
LOAD2: EQU $
STOR1: EQU $
STOR2: EQU $
BR AERROR
XWOR%9: VAL ENDIF
PAGE
IF NMPROC-NMRW,XWOR%9,,XWOR%9
<
<
< C L I G N O T E M E N T D ' U N E C O U L E U R :
<
<
CLIGN: EQU $
<
< MEMORISATION DU REGISTRE :
<
BSR AVALXY < RECUPERATION DES COORDONNEES...
JANE ERROR < BERK...
BSR ASPMEM < OK, RECUPERATION DU (R,V,B) DE (NUMREG).
<
< INITIALISATION DES
< OPTIONS STANDARDS :
<
LA ISHUNT
PSR A < MEMORISATION DE 'ISHUNT'...
SBT NBITMO-BIT
STA ISHUNT < AFIN DE NE RIEN DEMANDER...
BSR ASPINI < ET INITIALISATION DES OPTIONS...
<
< CLIGNOTEMENT :
<
NCLIGN:: VAL 4 < NOMBRE DE CLIGNOTEMENT...
LXI NCLIGN*2 < DOIT ETRE PAIR...
CLIGN1: EQU $
PSR X
LA SAVER
EORI MMOT
AND AMCOUL
STA SAVER < INVERSION
LA SAVEV
EORI MMOT
AND AMCOUL
STA SAVEV < DES
LA SAVEB
EORI MMOT
AND AMCOUL
STA SAVEB < COULEURS...
BSR ASPTRA < ET AFFICHAGE...
LXI K
CLIGN2: EQU $
HALT < ET ON ATTEND UN PEU...
CPZR X
JNE CLIGN2 < JUSQU'A LA FIN...
PLR X
JDX CLIGN1 < AU CLIGNOTEMENT SUIVANT...
<
< ET RETOUR :
<
PLR A
STA ISHUNT < RESTAURATION DE 'ISHUNT'...
BR ARET < ET C'EST TOUT...
XWOR%9: VAL ENDIF
IF NMPROC-NMRX,XWOR%9,,XWOR%9
CLIGN: EQU $
BR AERROR
XWOR%9: VAL ENDIF
PAGE
IF NMPROC-NMRW,XWOR%9,,XWOR%9
<
<
< E N T R E E D E ' M S K N I V ' :
<
<
PMNIV: EQU $
LAI MMSK-ZERO
BSR AIHEX < ENTREE DE 'MSKNIV',
JNE PMNIV < ERREUR...
STA MSKNIV < OK...
BR ARET < ET RETOUR...
XWOR%9: VAL ENDIF
IF NMPROC-NMRX,XWOR%9,,XWOR%9
PMNIV: EQU ERROR
XWOR%9: VAL ENDIF
PAGE
<
<
< M E M O R I S A T I O N D ' U N E E N T R E E ( R , V , B ) :
<
<
< ARGUMENT :
< (NUMREG)=NUMERO DE REGISTRE.
<
<
SPMEM: EQU $
<
< MEMORISATION :
<
LX NUMREG < (X)=NUMERO DU REGISTRE DEMANDE :
BSR AGETR < RECUPERATION DU ROUGE LOCAL,
STA SAVER < ET MEMORISATION.
BSR AGETV < RECUPERATION DU VERT LOCAL,
STA SAVEV < ET MEMORISATION.
BSR AGETB < RECUPERATION DU BLEU LOCAL,
STA SAVEB < ET MEMORISATION.
<
< ET RETOUR :
<
RSR
<
<
< T R A N S F E R T D ' U N E C O U L E U R :
<
<
< ARGUMENTS :
< (NUMREG)=NUMERO DE REGISTRE,
< (SAVER,SAVEV,SAVEB)=(R,V,B) A TRANSLATER.
<
<
SPTRA: EQU $
<
< TRANSFERT :
<
LA SAVER < ROUGE DE "A" :
BSR ASP11 < FLOTTAGE...
FST ROUGE1
LA SAVEV < VERT DE "A" :
BSR ASP11 < FLOTTAGE...
FST VERT1
LA SAVEB < BLEU DE "A" :
BSR ASP11 < FLOTTAGE...
FST BLEU1
LY NUMREG < (Y)=NUMERO DU REGISTRE DESTINATION...
BSR ASP3 < ET MISE EN PLACE DANS LE REGISTRE
< 'NUMREG' COURANT...
<
< ET RETOUR :
<
RSR
PAGE
<
<
< E N T R E E T R A N S L A T I O N :
<
<
PTRAN: EQU $
IF NMPROC-NMRW,XWOR%9,,XWOR%9
CPZ ISHUNT
JNE PTRAN2 < CAS DES OPTIONS STANDARDS...
XWOR%9: VAL ENDIF
LAI MTRANS-ZERO
BSR AIHEX
JNE PTRAN < ERREUR...
STA CTRANS < MEMORISATION DE LA TRANSLATION...
STZ CMOD < A PRIORI, MODULO...
PTRAN1: EQU $
LAI MODULO-ZERO
BSR APRINT < ENVOI D'UN MESSAGE,
LAD DEMIN
SVC 0 < LECTURE DE LA REPONSE,
LBY BUFCG < (A)=CARACTERE REPONDU :
CPI "O"
JE PTRAN2 < MODULO, CMOD=0...
CPI "N"
JNE PTRAN1 < ?!????!?!
IC CMOD < PAS DE MODULO, CMOD#0...
PTRAN2: EQU $
RSR
<
<
< E N T R E E P E R M U T A T I O N ( R , V , B ) :
<
<
PERMUT: EQU $
IF NMPROC-NMRW,XWOR%9,,XWOR%9
CPZ ISHUNT
JNE PERMU1 < CAS DES OPTIONS STANDARDS...
XWOR%9: VAL ENDIF
LAI MPRVB-ZERO
BSR APRINT < MESSAGE,
LAD DEMRVB
SVC 0 < ENTREE DE LA LISTE DE PERMUTATION :
LAI XXR < INITIALISATION A PRIORI...
STA AXXR
LAI XXV
STA AXXV
LAI XXB
STA AXXB
LXI TVPR < INDEX DU PREMIER :
LBY &AREP < (A)=PREMIER CARACTERE :
CPI EOT < EST-CE "EOT" ???
JE PERMU1 < OUI, ON ARRETE...
CPI RC < EST-CE "R/C" ???
JE PERMU1 < OUI, ON ARRETE...
LBI XXR < NON,
BSR ASP2 < PERMUTATION DU ROUGE.
STX AXXR
LXI TVPV
LBI XXV
BSR ASP2 < PERMUTATION DU VERT.
STX AXXV
LXI TVPB
LBI XXB
BSR ASP2 < PERMUTATION DU BLEU.
STX AXXB
PERMU1: EQU $
RSR
PAGE
<
<
< I N T E R P O L A T I O N :
<
<
GINT: EQU $
<
< ENTREE DE LA TRANSLATION :
<
BSR APTRAN < ENTREE DE LA TRANSLATION...
<
< ENTREE DE LA PERMUTATION :
<
BSR APERMU
<
< ENTREE DE LA CONSTANTE DE
< DELINEARISATION 'M1' :
<
GINT4: EQU $
IF NMPROC-NMRW,XWOR%9,,XWOR%9
CPZ ISHUNT
JNE GINT7 < CAS DES OPTIONS STANDARDS...
XWOR%9: VAL ENDIF
LAI MM-ZERO
BSR AIHEX < ENTREE DU NUMERATEUR,
JNE GINT4 < ERREUR...
LR A,Y < OK, SAVE DANS 'Y'...
LAI MS-ZERO
BSR AIHEX < ENTREE DU DENOMINATEUR,
JNE GINT4 < ERREUR...
JAE GINT4 < NUL...
FLT
FST FDLINE
LR Y,A
FLT
FDV FDLINE
FST FM1 < ET CALCUL...
IF NMPROC-NMRW,XWOR%9,,XWOR%9
GINT7: EQU $
XWOR%9: VAL ENDIF
BSR AGETAD < ENTREE DE (NIV1,NIV2), SOIT LE NIVEAU
< DEPART ET D'ARRIVEE DE L'INTERPOLATION.
<
< ACCES AUX COULEURS DE 'NIV2' :
<
LX NIV2
BSR AGETB
BSR ASP11
FST BLEU2 < RECUPERATION DU BLEU(NIV2),
BSR AGETV
BSR ASP11
FST VERT2 < RECUPERATION DU VERT(NIV2),
BSR AGETR
BSR ASP11
FST ROUGE2 < RECUPERATION DU ROUGE(NIV2).
<
< ACCES AUX COULEURS DE 'NIV1' :
<
LX NIV1
BSR AGTRVB < RECUPERATION DE (ROUGE1,VERT1,BLEU1).
<
< REGENERATION A PRIORI
< DU REGISTRE (NIV1) :
<
LY NIV1 < (Y)=REGISTRE DE DEPART,
BSR ASP3 < QUE L'ON RENVOIE AU CAS OU IL Y AURAIT
< PERMUTATION ET/OU TRANSLATION...
<
< NOMBRE D'ITERATIONS, ET 'PAS' :
<
LA NIV2
SB NIV1
IF NMPROC-NMRW,XWOR%9,,XWOR%9
JAGE GINT8 < (NIV1) < (NIV2).
AD ANI256 < (NIV1) > (NIV2).
GINT8: EQU $
XWOR%9: VAL ENDIF
LR A,X < (X)=NOMBRE DE PAS,
FLT
FST FPAS
FSB F1
FST FPAS1 < FPAS1=FPAS-1,
FSB F1
FMP FPAS1
FDV F6
FST FPAS2 < FPAS2=FPAS1*(FPAS-2)/6.
<
< CALCUL DU PAS (ROUGE2,VERT2,BLEU2)
< SUR LES COULEURS (ROUGE1,VERT1,BLEU1) :
<
FLD ROUGE2
FSB ROUGE1
FDV FPAS
FST ROUGE2 < PAS ROUGE,
FLD VERT2
FSB VERT1
FDV FPAS
FST VERT2 < PAS VERT,
FLD BLEU2
FSB BLEU1
FDV FPAS
FST BLEU2 < PAS BLEU.
<
< ITERATION SUR CHAQUE REGISTRE INTERMEDIAIRE :
<
GINT3: EQU $
ADRI 1,Y < PASSAGE AU REGISTRE SUIVANT...
IF NMPROC-NMRW,XWOR%9,,XWOR%9
LR Y,A
ANDI NIV256-I < AU CAS OU (NIV1) > (NIV2)...
LR A,Y
XWOR%9: VAL ENDIF
LR X,A < NUMERO DU PAS 'X',
ADRI -1,A < POUR COMMENCER A 0...
FLT
FST FDLINE < X,
FSB FPAS1 < X-FPAS1,
FMP FDLINE < X*(X-FPAS1),
FST FDLINE < SAUVEGARDE TEMPORAIRE...
FLD FM1 < M1,
FSB F1 < M1-1,
FMP FDLINE < (M1-1)*X*(X-FPAS1),
FDV FPAS2 < 6*(M1-1)*X*(X-FPAS1)/(FPAS1*(FPAS-2)).
FAD FM1 < ...+M1,
FST FDLINE < LA FONCTION CALCULEE :
< 6*(M1-1)*X*(X-FPAS1)/(FPAS1*(FPAS-2))
< +M1 EST UNE PARABOLE
< TOURNEE VERS LE HAUT Y=F(X), TELLE QUE :
< F(0)=F(FPAS1)=M1.
FLD ROUGE2
FMP FDLINE < DELINEARISATION...
FAD ROUGE1
FST ROUGE1 < PROGRESSION DU ROUGE,
FLD VERT2
FMP FDLINE < DELINEARISATION...
FAD VERT1
FST VERT1 < PROGRESSION DU VERT,
FLD BLEU2
FMP FDLINE < DELINEARISATION...
FAD BLEU1
FST BLEU1 < PROGRESSION DU BLEU,
BSR ASP3 < ENVOI DU (B,V,R).
JDX GINT3 < AU REGISTRE SUIVANT...
BR ARET < ET RETOUR...
PAGE
<
<
< T R A N S F E R T D ' U N E C O U L E U R D E
< L ' A N C I E N S Y S T E M E V E R S L E
< N O U V E A U :
<
<
COLD: EQU $
<
< INITIALISATIONS :
<
BSR AVALXY
JANE COLD3 < ERREUR DE COORDONNEES...
<
< RECUPERATION DES ANCIENNES 'LUT' :
<
LAI NSPCOL
SBT BITSIG
ACTD ACTD1
LR B,Y < (Y)=ADRESSE DES ANCIENNES 'LUT'...
<
< DEFINITION DE LA COULEUR SOURCE :
<
COLD2: EQU $
LAI MCOUL-ZERO
BSR AIHEX < ENTREE DE LA COULEUR :
JNE COLD2 < !???!??!
JAL COLD2 < COULEUR INEXISTANTE...
CPI LTCU-I
JG COLD2 < COULEUR INEXISTANTE...
ADR A,Y < (Y)=ADRESSE DE LA 'LUT' DE LA COULEUR
< SOURCE.
<
< ENTREE DES TRANSFORMATIONS :
<
BSR APTRAN < ENTREE DE LA TRANSLATION,
BSR APERMU < ENTREE DE LA PERMUTATION,
COLD1: EQU $
IF NMPROC-NMRW,XWOR%9,,XWOR%9
LX ADECAL
CPZ ISHUNT
JNE COLD4 < CAS DES OPTIONS STANDARDS...
XWOR%9: VAL ENDIF
LAI MDECAL-ZERO
BSR AIHEX < ENTREE DU DECALAGE :
JNE COLD1 < ?!????!?
LR A,X < (X)=DECALAGE SUR LES 3 COMPOSANTES
< PRIMAIRES DE L'ANCIENNE COULEUR...
IF NMPROC-NMRW,XWOR%9,,XWOR%9
COLD4: EQU $
XWOR%9: VAL ENDIF
<
< RECUPERATION DE LA COULEUR SOURCE :
<
LR Y,A < (A)=ADRESSE DE SA 'LUT' :
ACTD ACTD1 < (B)=VALEUR DES 3 COMPOSANTES...
LAI K
SLLD LREG+LREG < RECUPERATION DU BLEU :
EORI CUNIVO < COMPLEMENTATION,
SLLS K,X < DECALAGE (POUR L'AMENER PAR EXEMPLE
< JUSQU'A 1023...).
STA BLEU1
LAI K
SLLD LREG < RECUPERATION DU VERT :
EORI CUNIVO < COMPLEMENTATION,
SLLS K,X < DECALAGE...
STA VERT1
LAI K
SLLD LREG < RECUPERATION DU ROUGE :
EORI CUNIVO < COMPLEMENTATION,
SLLS K,X < DECALAGE...
BSR ASP11 < FLOTTAGE...
FST ROUGE1 < COMPOSANTE ROUGE.
LA VERT1
BSR ASP11 < FLOTTAGE...
FST VERT1 < COMPOSANTE VERTE.
LA BLEU1
BSR ASP11 < FLOTTAGE...
FST BLEU1 < COMPOSANTE BLEUE.
<
< ENVOI SUR LA COULEUR DESTINATION :
<
LY NUMREG < (Y)=REGISTRE DE LA COULEUR DESTINATION,
BSR ASP3 < ET MISE DE (ROUGE1,VERT1,BLEU1)...
BR ARET < VERS LA COMMANDE SUIVANTE...
<
< RETOUR EN ERREUR :
<
COLD3: EQU $
BR AERROR
XWOR%8: VAL ENDIF
PAGE
<
<
< F L O T T A G E D ' U N N I V E A U :
<
<
< ARGUMENT :
< (A)=NIVEAU SUR 10 BITS (ENTIER).
<
<
< RESULTAT :
< (A,B)=NIVEAU FLOTTANT SUR 10 BITS.
<
<
SP11: EQU $
FLT < CONVERSION FLOTTANTE.
RSR
PAGE
<
<
< R E C U P E R A T I O N D E S ' L U T ' L O C A L E S :
<
<
< ARGUMENT :
< (X)=NUMERO DU REGISTRE (0,NIV256-I).
<
<
< RESULTAT :
< (A)=NIVEAU 10 BITS CORRESPONDANT.
<
<
GETR: EQU $
IF NMPROC-NMRX,XWOR%9,,XWOR%9
LBY &ATLUTR < RECUPERATION DU ROUGE,
SLLS ONBNIV < EXTENSION 8 --> 10 BITS...
XWOR%9: VAL ENDIF
IF NMPROC-NMRW,XWOR%9,,XWOR%9
LAI NCPCR*XXR-NCPCR
BSR AGTIT < (A)=CANAL ROUGE...
XWOR%9: VAL ENDIF
RSR
GETV: EQU $
IF NMPROC-NMRX,XWOR%9,,XWOR%9
LBY &ATLUTV < RECUPERATION DU VERT,
SLLS ONBNIV < EXTENSION 8 --> 10 BITS...
XWOR%9: VAL ENDIF
IF NMPROC-NMRW,XWOR%9,,XWOR%9
LAI NCPCR*XXV-NCPCR
BSR AGTIT < (A)=CANAL VERT...
XWOR%9: VAL ENDIF
RSR
GETB: EQU $
IF NMPROC-NMRX,XWOR%9,,XWOR%9
LBY &ATLUTB < RECUPERATION DU BLEU,
SLLS ONBNIV < EXTENSION 8 --> 10 BITS...
XWOR%9: VAL ENDIF
IF NMPROC-NMRW,XWOR%9,,XWOR%9
LAI NCPCR*XXB-NCPCR
BSR AGTIT < (A)=CANAL BLEU...
XWOR%9: VAL ENDIF
RSR
PAGE
IF NMPROC-NMRW,XWOR%9,,XWOR%9
<
<
< A C C E S A L ' I T E M 1 :
<
<
< ARGUMENTS :
< (A)=TRANSLATION (EN NOMBRE DE CARACTERES)
< DANS L'ITEM1,
< (X)=NUMERO DE REGISTRE.
<
<
< RESULTATS :
< (A)=NIVEAU DU CANAL DU REGISTRE DEMANDE.
<
<
GTIT: EQU $
PSR B,X,Y
XR A,X < (A)=NUMERO DU REGISTRE,
< (X)=TRANSLATION DANS L'ITEM1.
MP ANCPR < CONVERSION DU NUMERO DE REGISTRE EN UN
< INDEX DANS L'ITEM1,
ADR X,B < ET TRANSLATION POUR ATTEINDRE LE CANAL
< DEMANDE,
LR B,Y < (Y)=INDEX DU PREMIER CARACTERE,
LXI NCPCR < (X)=NOMBRE DE CARACTERES A RECUPERER,
LBI K < (B)=CUMUL INITIAL...
GTIT1: EQU $
XR X,Y
LBY &AITEML < (A)=CARACTERE COURANT DE L'ITEML,
XR X,Y
ADRI -"0",A < ET CONVERSION BINAIRE,
JAL GTIT4 < ERREUR, ON S'ARRETE OU ON EST...
CPI BASE10
JL GTIT2 < CAS DES CHIFFRES DECIMAUX PRESUMES...
ADRI -"A"+"9"+1,A < CAS DES CHIFFRES HEXA-DECIMAUX PRESUMES.
CPI BASE10 < ET VALIDATION...
JL GTIT4 < ERREUR, ON S'ARRETE OU ON EST...
CPI BASE16 < VALIDATION...
JGE GTIT4 < ERREUR, ON S'ARRETE OU ON EST...
GTIT2: EQU $
SCRS NBITCX
SCLD NBITCX < ET CUMUL DANS 'B'...
ADRI I,Y < PASSAGFE AU CARACTERE SUIVANT,
JDX GTIT1 < S'IL EXISTE...
GTIT4: EQU $
LR B,A < (A)=NIVEAU DU CANAL DEMANDE...
PLR B,X,Y
RSR
XWOR%9: VAL ENDIF
PAGE
<
<
< E N V O I D ' U N E C O U L E U R I N T E R P O L E E :
<
<
< ARGUMENT :
< (Y)=NUMERO DE REGISTRE (0 A NIV256-I).
<
<
SP3: EQU $
PSR X,Y
STY NUMREG < MISE EN PLACE DU NIVEAU DE REGISTRE.
LAI NBITMO
SB AXXR < PERMUTATION EVENTUELLE...
LR A,X
LAI ALLUT
RBT K,X < SELECTION DE 'LUTR' PERMUTEE,
BSR ASP13 < SELECTION DE LA 'LUT' ROUGE,
FLD ROUGE1
BSR ASP12 < ET ENVOI DU NIVEAU DU ROUGE DANS (Y)...
LAI NBITMO
SB AXXV < PERMUTATION EVENTUELLE...
LR A,X
LAI ALLUT
RBT K,X < SELECTION DE LA 'LUTV' PERMUTEE,
BSR ASP13 < SELECTION DE LA 'LUT' VERTE,
FLD VERT1
BSR ASP12 < ET ENVOI DU NIVEAU DU VERT DANS (Y)...
LAI NBITMO
SB AXXB < PERMUTATION EVENTUELLE...
LR A,X
LAI ALLUT
RBT K,X < SELECTION DE LA 'LUTB' PERMUTEE,
BSR ASP13 < SELECTION DE LA 'LUT' BLEUE,
FLD BLEU1
BSR ASP12 < ET ENVOI DU NIVEAU DE BLEU DANS (Y)...
NOP < AFIN DE METTRE UN EVENTUEL
< P O I N T D ' A R R E T...
PLR X,Y
RSR
PAGE
<
<
< E N V O I D ' U N N I V E A U E N T I E R :
<
<
< ARGUMENT :
< (A)=NIVEAU ENTIER.
<
<
SP14: EQU $
STA SNIV < MEMORISATION POUR LA GESTION DES 'LUT'
< LOCALES.
BSR APIS < PREPARATION DE L'ENVOI EN 'CDAJ' EN
< CONVENTIONS INVERSEES.
BSR ASENDT < ET ENVOI DU NIVEAU (A) DANS
< LE REGISTRE 'NUMREG' DE LA 'LUT'
< SELECTIONNEE.
RSR
<
<
< E N V O I D ' U N N I V E A U F L O T T A N T :
<
<
< ARGUMENT :
< (A,B)=NIVEAU FLOTTANT.
<
<
SP12: EQU $
FAD F05 < POUR AVOIR UN EXCES OU UN DEFAUT...
FIX < CONVERSION ENTIERE,
BSR ACTRAN < TRANSLATION EVENTUELLE,
BSR ASP14 < ET ENVOI DU NIVEAU ENTIER...
RSR
PAGE
<
<
< S E L E C T I O N D ' U N E ' L U T ' :
<
<
< ARGUMENT :
< (A)=LISTE D'INHIBITION DES 'LUT'.
<
<
SP13: EQU $
STA SLUT < POUR LA GESTION DES 'LUT' LOCALES...
STA MCDAJ
LA ARSLUT
BSR APWCDA < SELECTION DE LA 'LUT' DEMANDEE...
RSR
PAGE
<
<
< E N V O I C O U L E U R :
<
<
< FONCTION :
< CE SOUS-PROGRAMME SE CHARGE
< D'ENVOYER DANS LE REGISTRE
< 'NUMREG', LE NIVEAU DE GRIS
< 'NIVEAU' SUR LE CANAL SELECTIONNE
< PAR 'COLOUR' (1, 2 OU 3 ; INEFFECTIF
< SI NUL) ; IL TRANSLATE EVENTUELLE-
< MENT 'NIVEAU', ET PERMUTE 'COLOUR'.
<
<
SENDC: EQU $
PSR A,B,X
<
< SELECTION DU CANAL PRIMAIRE (R,V,B) :
<
LX COLOUR < (X)=COULEUR PRIMAIRE SELECTIONNEE :
CPZR X < EST-CE LE NOIR ???
JE SENDC1 < OUI, RIEN A FAIRE...
LA &ATXX < NON, ON LA PERMUTE...
ADRI -NBITMO,A
NGR A,X
LAI ALLUT < (A)=VALEUR D'INHIBITION DES 'LUT',
RBT K,X < ET AUTORISATION DE LA COULEUR DEMANDEE.
BSR ASP13 < SELECTION DE LA COULEUR PRIMAIRE (A)...
<
< MISE EN PLACE DU NIVEAU :
<
LA NIVEAU
BSR ACTRAN < TRANSLATION EVENTUELLE...
BSR ASP14 < ET ENVOI DU NIVEAU...
<
< RETOUR :
<
SENDC1: EQU $
PLR A,B,X
RSR
PAGE
<
<
< T R A N S L A T I O N D ' U N N I V E A U
< D E C O U L E U R :
<
<
< ARGUMENT :
< (A)=NIVEAU DE COULEUR,
<
<
< RESULTAT :
< (A)=NIVEAU TRANSLATE, ET EVENTUELLEMENT
< MODIFIE EN FONCTION DE 'CMOD'.
<
<
CTRAN: EQU $
AD CTRANS < TRANSLATION A PRIORI...
CPZ CMOD < ALORS COMMENT TRAITER LE NIVEAU ???
JE CTRAN1 < EN MODULO...
JAL CTRAN2 < EN TRONCATION, OR IL EST NEGATIF, ON
< VA SE RAMENER LA LA BORNE INFERIEURE...
CP NBNIVM < IL EST POSITIF ; EST-IL TROP GRAND ???
JLE CTRAN1 < OK, LE NIVEAU EST DANS (0,NBNIV-I)...
LA NBNIVM < UN NIVEAU TROP GRAND EST RAMENE A LA
< BORNE SUPERIEURE...
JMP CTRAN1 < ET ON SORT...
CTRAN2: EQU $
LAI XXNOIR < UN NIVEAU NEGATIF EST RAMENE A LA
< BORNE INFERIEURE...
CTRAN1: EQU $
XWOR%1: VAL NBNIV=K
IF BIT>XWOR%1-NBNIV,,XWOR%,
IF ATTENTION : LE 'AND''NBNIVM' NE REALISE PAS
IF UNE OPERATION DE MODULO, CAR IL N'EST
IF PAS UNE PUISSANCE DE 2 !!!
XWOR%: VAL ENDIF
AND NBNIVM < ET MAINTENANT, ON PEUT TRONQUER
< SYSTEMATIQUEMENT...
IF XXMODE-XXCONV,XWOR%8,,XWOR%8
IF NMPROC-NMRW,XWOR%9,,XWOR%9
AND MSKNIV < POUR SIMULER PAR EXEMPLE DES SORTIES
< SUR MOINS DE 10 BITS...
XWOR%9: VAL ENDIF
XWOR%8: VAL ENDIF
RSR < ET ON SORT...
PAGE
<
<
< R E I N I T I A L I S A T I O N T R A N S L A T I O N
< E T P E R M U T A T I O N :
<
<
SP10: EQU $
PSR A
STZ CTRANS < ANNULATION DE LA TRANSLATION,
LAI XXR
STA AXXR < ET
LAI XXV
STA AXXV < DES
LAI XXB
STA AXXB < PERMUTATIONS...
IF XXMODE-XXCONV,XWOR%8,,XWOR%8
IF NMPROC-NMRW,XWOR%9,,XWOR%9
LAI MMOT
STA MSKNIV < ET SORTIE SUR 10 BITS...
XWOR%9: VAL ENDIF
XWOR%8: VAL ENDIF
PLR A
RSR
PAGE
<
<
< E N V O I D ' U N N I V E A U D A N S
< U N R E G I S T R E :
<
<
< FONCTION :
< CE MODULE ENVOIE UN NIVEAU DE
< GRIS DANS L'UNE DES 3 'LUT', ET
< MEMORISE DANS LES 'LUT' LOCALES
< LE CHANGEMENT...
<
<
SENDT: EQU $
PSR A,B,X
IF NMPROC-NMRW,XWOR%9,,XWOR%9
<
< LE REGISTRE (NUMREG)
< EST-IL AUTORISE ???
<
LA NUMREG < (A)=(NUMREG),
ANDI 2*NBITMO-1
LR A,X < (X)=(NUMREG).MOD.32,
LA ENTR1
LB ENTR2 < (A,B)=LISTE D'AUTORISATION,
TBT 0,X < ALORS ???
JNC SENDT4 < LE REGISTRE (NUMREG) EST INHIBE...
XWOR%9: VAL ENDIF
<
< ENVOI DU NIVEAU EN 'LUT' :
<
LA NUMREG < (A)=NIVEAU DE GRIS DEMANDE,
EORI NIV256-I < PARCEQUE LES CONVENTIONS LOGIQUES
< SONT INVERSEES...
XWOR%7: VAL NIV256=K
IF BIT>XWOR%7-NIV256,,XWOR%,
IF ATTENTION : 'NIV256' DOIT ETRE UNE PUISSANCE DE 2 !!!
XWOR%: VAL ENDIF
SLLS NOCMO=K < EN EFFET, LES ADRESSES 68000 SONT DES
< ADRESSES D'OCTETS, ET LES NIVEAUX DES
< COULEURS DE BASE SONT SUR 10 BITS...
AD ARLUT0 < (A)=ADRESSE DU REGISTRE DE 'LUT' ; MAIS
< NE PAS OUBLIER LE REGISTRE 'RSLUT'...
BSR APWCDA < ET ON FORCE 1, 2 OU 3 ENTREES DE 'LUT'...
IF XXMODE-XXCONV,XWOR%8,,XWOR%8
<
< MEMORISATION EN 'LUT' LOCALE :
<
IF NMPROC-NMRX,XWOR%9,,XWOR%9
LA SNIV < (A)=NIVEAU ENVOYE,
SLRS ONBNIV < QUE L'ON MET SUR UN OCTET...
LB SLUT < (B)=LISTE DES 'LUT' SELECTIONNEES,
LX NUMREG < (X)=REGISTRE (NIVEAU DE GRIS) SELECTIONNE
TBT NBITMO+NBITMO-XXR
JC SENDT1 < ON NE MODIFIE PAS LE ROUGE...
STBY &ATLUTR < MEMORISATION DU ROUGE...
SENDT1: EQU $
TBT NBITMO+NBITMO-XXV
JC SENDT2 < ON NE MODIFIE PAS LE VERT...
STBY &ATLUTV < MEMORISATION DU VERT...
SENDT2: EQU $
TBT NBITMO+NBITMO-XXB
JC SENDT3 < ON NE MODIFIE PAS LE BLEU...
STBY &ATLUTB < MEMORISATION DU BLEU...
SENDT3: EQU $
XWOR%9: VAL ENDIF
IF NMPROC-NMRW,XWOR%9,,XWOR%9
LA NUMREG < (A)=NUMERO DU REGISTRE DEMANDE,
MP ANCPR < ET CONVERSION EN UN NUMERO DE CARACTERE
< DE L'ITEM1 DANS 'B'...
LA SLUT < (A)=LISTE DE SELECTION DES 'LUT' :
TBT NBITMO-XXR < Y-A-T'IL DU ROUGE ???
JC SENDT1 < NON...
PSR A,B < OUI :
ADRI NCPCR*XXR-NCPCR,B
BSR ASTIT < RANGEMENT DU CANAL ROUGE DANS L'ITEM1...
PLR A,B
SENDT1: EQU $
TBT NBITMO-XXV < Y-A-T'IL DU VERT ???
JC SENDT2 < NON...
PSR A,B < OUI :
ADRI NCPCR*XXV-NCPCR,B
BSR ASTIT < RANGEMENT DU CANAL VERT DANS L'ITEM1...
PLR A,B
SENDT2: EQU $
TBT NBITMO-XXB < Y-A-T'IL DU BLEU ???
JC SENDT3 < NON...
PSR A,B < OUI :
ADRI NCPCR*XXB-NCPCR,B
BSR ASTIT < RANGEMENT DU CANAL BLEU DANS L'ITEM1...
PLR A,B
SENDT3: EQU $
XWOR%9: VAL ENDIF
XWOR%8: VAL ENDIF
<
< SORTIE :
<
IF NMPROC-NMRW,XWOR%9,,XWOR%9
SENDT4: EQU $
XWOR%9: VAL ENDIF
PLR A,B,X
RSR
IF XXMODE-XXCONV,XWOR%8,,XWOR%8
IF NMPROC-NMRX,XWOR%9,,XWOR%9
<
<
< ' L U T ' L O C A L E S :
<
<
TRN
TLUTR: EQU $ < ROUGE.
DO NIV256/NOCMO
BYTE XXNOIR;XXNOIR
TLUTV: EQU $ < VERT.
DO NIV256/NOCMO
BYTE XXNOIR;XXNOIR
TLUTB: EQU $
DO NIV256/NOCMO
BYTE XXNOIR;XXNOIR
NTRN
XWOR%9: VAL ENDIF
IF NMPROC-NMRW,XWOR%9,,XWOR%9
<
<
< R A N G E M E N T D A N S L ' I T E M 1 :
<
<
< ARGUMENTS :
< (B)=INDEX DE RANGEMENT DU PREMIER CARACTERE DANS L'ITEM1,
< (SNIV)=NIVEAU A METTRE POUR LE CANAL COURANT DANS ITEM1.
<
<
STIT: EQU $
PSR X,Y
LR B,Y < (Y)=INDEX COURANT DANS L'ITEM1,
LB SNIV < (B)=NIVEAU A CODER EN ASCI...
SLLD -NCPCR*NBITCX+NBITMO
< ET CADRAGE A GAUCHE DANS 'B'...
LXI NCPCR < (X)=NOMBRE DE CHIFFRES A CODER...
STIT1: EQU $
LAI K < CLEAR,
SLLD NBITCX < ET DECONCATENATION,
CPI BASE10
JL STIT2 < CAS DES CHIFFRES DECIMAUX...
ADRI "A"-"9"-1,A < CAS DES CHIFFRES HEXA-DECIAMUX...
STIT2: EQU $
ADRI "0",A < ET CONVERSION ASCI...
XR X,Y
STBY &AITEMS < RANGEMENT DU CARACTERE COURANT DANS
< L'ITEMS...
ADRI I,X < PASSAGE AU CARACTERE SUIVANT,
XR X,Y
JDX STIT1 < S'IL EXISTE...
PLR X,Y
RSR
XWOR%9: VAL ENDIF
PAGE
<
<
< P O I N T D ' E N T R E E :
<
<
PRV: EQU $
LRM L,K
WORD LOC+'80 < INTIALISATION DE L,
WORD STACK-1 < INITIALISATION DE K.
LAI PAGER
BSR AGPCDA < POSITIONNEMENT SUR LA PAGE DES REGISTRES
< DE LA 'CDAJ'...
STZ CTRANS < AU CAS DES ALT-MODES...
IF NMPROC-NMRW,XWOR%9,,XWOR%9
STZ ISHUNT < DE MEME, ON RE-FORCE LES QUESTIONS...
XWOR%9: VAL ENDIF
LAI MRVB-ZERO
BSR APRINT < POUR AVOIR 'RVB'...
BSR ARETIC
XWOR%8: VAL ENDIF
PAGE
<
<
< I M P L A N T A T I O N :
<
<
IF $-ITEM2,XWOR%,XWOR%,
IF ATTENTION : PROCESSEUR TROP LONG !!!
XWOR%: VAL 0
X12: EQU ZERO+PILE-LTNI-LTNI
X10: VAL X12-$
ZEROV: EQU ZERO+X10 < ERREUR D'ASSEMBLAGE VOLONTAIRE
< SI MAUVAISE IMPLANTATION...
DZS X10+1 < PAR PROPRETE !!!!
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.