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#