PAGE IDP "RV - JOHN F. COLONNA 20/09/1979" < < < 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 : < < NMPROC:: VAL "RV" EOT #SIP DEFINITION ITEM# EOT #SIP DEFINITION CMS5# EOT #SIP IMAGE 256# 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 PAGE < < < P A R A M E T R E S G E N E R A U X : < < NOCMO:: VAL 2 < NOMBRE D'OCTETS PAR MOT, NBITOC:: VAL 8 < NOMBRE DE BITS PAR OCTET... 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. < < < F O R M A T D E S O R D R E S ' C U 3 ' : < ( M O T 1 ) < < 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, XXR:: VAL '10 < SELECTION ROUGE (DECALEE A DROITE), XXV:: VAL '20 < SELECTION VERT (DECALEE A DROITE), XXB:: VAL '40 < SELECTION BLEU (DECALEE A DROITE). CUDIFF:: VAL '0800 < NUMERO DE BANK EN DIFFUSION. CUINIT:: VAL '8000 < POUR INITIALISER LE CONTROLEUR. < < < F O R M A T D E S O R D R E S ' C U 3 ' : < ( M O T 2 ) < < MOT2:: VAL 1 < DEPLACEMENT D'ACCES AU MOT2... CUCLIR:: VAL '0001 < CLEAR LA CARTE 'TV'. CUIN:: VAL '0002 < MISE DE LA CARTE EN MODE IN/OUT. CUINR:: VAL '0004 < OUVERTURE DU ROBINET ROUGE, CUINV:: VAL '0008 < OUVERTURE DU ROBINET VERT, CUINB:: VAL '0010 < OUVERTURE DU ROBINET BLEU. CUMODI:: VAL '0060 < MODE D'ENTREE : MODBI:: VAL '0000 < BINAIRE INVERSE, MODB:: VAL '0060 < BINAIRE, MODC2:: VAL '0020 < LIBRE... MODCI:: VAL '0040 < SELECTION DU POIDS DES BITS ENTRES : < =0 : 3 BITS DE POIDS FORTS, < =1 : 3 BITS DE POIDS FAIBLES SUIVANTS. CUPROM:: VAL '1F00 < NUMERO DE LA FONCTION DE TRANSFERT 'IN'. < < < P A R A M E T R E S D E L A M A T R I C E : < < UNITEX:: VAL 16 < UNITE SUR L'AXE DES X ::KGX1. UNITEY:: VAL 10 < UNITE SUR L'AXE DES Y ::KAY1. ORGKXY:: VAL 8*8 < UNITES ORIGINES ::K8X8Y8. ORGX:: VAL ORGKXY*1 < ABSCISSE DE L'ORIGINE DE LA MATRICE, ORGY:: VAL ORGKXY*1 < ORDONNEE DE LA MATRICE. LONGMX:: VAL 8 < LONGUEUR D'UNE SOUS-MATRICE SUR L'AXE < DES X EXPRIMEE EN 'UNITEX'. LONGMY:: VAL 16 < LONGUEUR D'UNE SOUS-MATRICE SUR L'AXE < DES Y EXPRIMEE EN 'UNITEY'. NMX:: VAL 4 < NOMBRE DE SOUS-MATRICES LE LONG DE X, NMY:: VAL 4 < NOMBRE DE SOUS-MATRICES LE LONG DE Y. NBAN:: VAL 2 < NOMBRE DE BANKS. PAGE < < < M E S S A G E S : < < MCDAI: ASCI "!CDA" BYTE "I";'04 MERR: BYTE 1;'07 < ENVOI DE LA CLOCHE SUR ERREUR... MZDC: BYTE 5;'6D ASCI "ZDC?" MRVB: BYTE 5;'0D ASCI " RVB" M1: BYTE 1;"1" M2: BYTE 1;"2" M3: BYTE 1;"3" MMOINS: BYTE 1;"-" MRC: BYTE 1;'6D MREG: BYTE 3;'6D ASCI "R=" MVAL: BYTE 3;'6D ASCI "V=" MCAM: BYTE 4;'6D ASCI "CAM:" MAD: BYTE 7;'6D ASCI "APROM=" MMOD: BYTE 5;'6D ASCI "MOD=" MCONT: BYTE 5;'6D ASCI "SEQ?" MR: BYTE 3;'6D;"R";"?" MV: BYTE 3;'6D;"V";"?" MB: BYTE 3;'6D;"B";"?" MI: BYTE 4;'6D ASCI "IN?" MTRANS: BYTE 3;'6D ASCI "T=" MPRVB: BYTE 5;'6D ASCI "RVB=" MOVFL: BYTE 5;'6D ASCI "OVFL" MOFF: BYTE 7;'6D ASCI "IT OFF" MON: BYTE 6;'6D ASCI "IT ON" MNIV1: BYTE 3;'6D ASCI "D=" MNIV2: BYTE 3;'6D ASCI "A=" < < < L O C A L : < < LOCAL LOC: EQU $ < < BUFFERS ET DIVERS : < BUFCU: DZS MOT2+1 < POUR ENVOYER LES ORDRES 'CU3'. LBUFCG:: VAL 3 BUFCG: DZS LBUFCG < BUFFER DU RETICULE DE LA VISU. BUFX: EQU BUFCG+1+X BUFY: EQU BUFCG+1+Y LSEG: VAL LBUFCG-1*2 NOMSEG: WORD 0 < MOT DE VALIDATION DES SEGMENTS. SEG: DZS LSEG < SEGMENT COURANT. REP: DZS NBRHEX/NOCMO < BUFFER D'ENTREE HEXA-DECIMAL. XWOR%1: VAL CUREB=0 XWOR%2: VAL -XWOR%1 LTCU: VAL CUREB>XWOR%2+1 < LONGUEUR DES TABLES DE COULEUR. SMOT2: WORD 0 < SAUVEGARDE DES ORDRES CAMERA POUR < PASSAGE DE LA COMMANDE "K" A "U". < < RELAIS DIVERS : < ABRANC: WORD BRANCH < ADRESSE DE LA BRANCHE D'OVERLAY. AOVL: WORD OVL < SOUS-PROGRAMME D'OVERLAY. APRINT: WORD PRINT < EDITION D'UN MESSAGE. AHEX: WORD HEX < CONVERSION HEXA --> BINAIRE. AENTER: WORD ENTER < ENTREE D'UNE REPONSE OUI/NON. AVALXY: WORD VALXY < SOUS-PROGRAMME DE VALIDATION (X,Y). ARETIC: WORD RETIC < SOUS-PROGRAMME DE GESTION DU RETICULE. ALOOP: WORD LOOP < MODULE D'INTERROGATION... ASTOZD: WORD STOZDC < ENVOI EN ZDC, AGETZD: WORD GETZDC < ACCES A LA ZDC. ASPCU: WORD SPCU < S/P DE REINITIALISATION REGISTRES. ASTHEX: WORD STHEX < CONVERSION ASCI D'UN MOT SOUS FORME < "U;XXXX" COMPATIBLE AVEC 'TV/TI'. APTRAN: WORD PTRAN < ENTREE DE LA TRANSLATION COULEURS. APERMU: WORD PERMUT < ENTREE DE LA PERMUTATION (R,V,B). ASP1: WORD SP1 < TRANSLATION ET ENVOI COULEUR. ASP2: WORD SP2 < RECUPERATION PERMUTATION DES COULEURS. ASP3: WORD SP3 < ENVOI DES 3 COMPOSANTES. ASP4: WORD SP4 < GENERATION REGISTRE ET ENVOI 'STHEX'. AROND: WORD ROND < ARRONDI D'UN NIVEAU INTERPOLE... AMEMCU: WORD MEMCU < MEMORISATION DES ORDRES AU 'CU' < DANS LES TABLES DE COULEUR. AIITEM: WORD IITEM < S/P D'INITIALISATION DE L'ITEM1. ASTIT: WORD STIT < SOUS-PROGRAMME DE RANGEMENT D'UN < CARACTERE DANS L'ITEM1. ATEST: WORD TEST < TEST DU POINT VIDEO (X,Y). ASP5: WORD SP5 < TEST POINT SUR UNE COMPOSANTE ET ENVOI < D'UN MESSAGE. ARET: WORD RETICX ALINIT: WORD LINIT-1,X < LISTE D'INITIALISATION DU 'CRT'... AREP: WORD REP,X < ACCES AU BUFFER D'ENTREE HEXA. AKOM: WORD KOM,X < ACCES AUX MODULES SPECIFIQUES... < < ACCES A L'ITEM1 : < AITEM1: WORD ZERO+PILE-LTNI+LTN,X XITEM1: WORD NBCAR < INDEX COURANT DE L'ITEM1 ; ON LAISSE < LA PREMIERE LIGNE LIBRE... LITEM1: WORD NBCAR*NBLIG < LONGUEUR DE L'ITEM1. PITEM1: WORD -1 < INDICATEUR DE PREMIER ACCES A L'ITEM1... MITEM1: WORD 1 < 1 : PAS DE MEMORISATION DES COULEURS < DANS L'ITEM1, < -1: MEMORISATION A CHAQUE COMMANDE < "P"/"Q"/"C"/"D"/"B" ; D'AUTRE PART, < LORS DE L'INTERPOLATION "J", DANS CES < CONDITIONS, ON INTERPOLE EN NE CHAN- < GEANT PAS LE NUMERO DE REGISTRE, IL < RESTE DONC EGAL EN PERMANENCE AU RE- < GISTRE DE DEPART ('NIV1'), ET PERMET < DONC DES INTERPOLATIONS ENTRE 2 PA- < LETTES : L'UNE DANS LE JEU 0, ET < L'AUTRE DANS LE JEU 1 ; ON INTER- < POLERA DONC EN 7 OU 8 FOIS AINSI : < 1 --> 9, 2 -->A,..., 7 --> F... < < DEMANDES : < DEMBAC: WORD '0602 < DEMANDE DE RETOUR A "GE". WORD BRANCH-ZERO*NOCMO WORD ZERO-BRANCH+PILE-LTNI-LTNI*NOCMO WORD -1 NGE: ASCI "GE" < NOM DE L'OVERLAY "GE". DEMCDA: WORD '0002 < ENVOI DE "!CDAI"... WORD MCDAI-ZERO*NOCMO WORD 80 DEMCU: BYTE NVPCU;FGW < ACCES A 'CU3'... WORD BUFCU-ZERO*NOCMO WORD NOCMO DEMCU2: BYTE NVPCU;FGW < ACCES AU MOT2 DE 'CU3'... WORD BUFCU-ZERO*NOCMO WORD MOT2+1*NOCMO 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 DEMCCI: WORD '0001 < ACCES CCI. DEMSEG: WORD '0008 < ACCES SEGMENT EN ZDC. WORD NOMSEG-ZERO*NOCMO WORD LSEG+1*NOCMO XXXZDC:: VAL 'FFC0 < MOT DE VALIDATION DE LZ ZDC. WORD XXXZDC DELSEG: WORD '000A < ENVOI DE L'ACQUITTEMENT EN ZDC. WORD NOMSEG-ZERO*NOCMO WORD NOCMO YYYZDC:: VAL 'C000 < MOT DE VALIDATION DE L'ACQUITTEMENT WORD YYYZDC STOGS: WORD '000A < ENVOI D'UN SEGMENT EN ZDC. WORD NOMSEG-ZERO*NOCMO WORD LSEG+1*NOCMO WORD XXXZDC GETGS: WORD '0008 < ATTENTE D'UN ACQUITTEMENT. WORD NOMSEG-ZERO*NOCMO WORD NOCMO WORD YYYZDC < < CONSTANTES, ET VARIABLES : < INDZDC: WORD 0 < 0=NE PAS EMETTRE EN ZDC. WORK1: WORD 0 < VARIABLES DE WORK2: WORD 0 < TRAVAIL... 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. 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. CTRANS: WORD 0 < CONSTANTE DE TRANSLATION DES NIVEAUX < DE GRIS AVEC LA COMMANDE "G". AXXR: WORD XXR < PERMUTATION DU ROUGE, AXXV: WORD XXV < PERMUTATION DU VERT, AXXB: WORD XXB < PERMUTATION DU BLEU. SAVEC: WORD 0 < SAVE LE CONTENU D'UN MOT DE LA MEMOIRE < DES COULEURS. SAVET: WORD 0 < TRANSLATION SUR 'SAVEC'. ANBCAR: WORD NBCAR < < DONNEES D'INTERPOLATION : < NIV1: WORD 0 < NIVEAU DE DEPART, NIV2: WORD 0 < NIVEAU D'ARRIVEE. ROUGE1: FLOAT 0 VERT1: FLOAT 0 BLEU1: FLOAT 0 ROUGE2: FLOAT 0 VERT2: FLOAT 0 BLEU2: FLOAT 0 FPAS: FLOAT 0 < PAS D'INTERPOLATION. F05: FLOAT 0.5 < POUR LES ARRONDIS... < < DONNEES POUR LA GESTION DE L'IMAGE DE TV : < NOM: EQU ZERO+PILE+5-LNOM-2 IMAG: EQU NOM+LNOM+2 DEMMEM: WORD '0004 < DEMANDE D'ALLOCATION 8K-MOTS. RELMEM: WORD '0004 < DEMANDE DE RETOUR A 4K MOTS. WORD '4000 WORD '2000 < 8K OCTETS. STDKU: WORD '8A01 < STABILISATION IMAGE. WORD IMAG-ZERO*NOCMO WORD LIMAG*NOCMO WORD 0 < SELECTION COULEUR. NLIG: WORD LIMAG/CNMPL-1 < NOMBRE DE LIGNE D'UNE TRAME-1. NMPL: WORD CNMPL < NOMBRE DE MOTS PAR LIGNE. TEMPO:: VAL 4*2 < NOMBRE DE CLIGNOTEMENTS... < < PROGRAMMATION DES REGISTRES DU CONTROLEUR DE 'CRT' : < NREG:: VAL 16 < NOMBRE DE REGISTRES ACCESSIBLES EN < LECTURE/ECRITURE... XWOR%1: VAL -NBITOC XWOR%2: VAL CUINIT>XWOR%1 REG1: BYTE XWOR%2?'00;0 < ADRESSE DE REGISTRE, REG2: BYTE XWOR%2?'08;0 < ADRESSE DE REGISTRE. REG3: BYTE XWOR%2?'02;0 < VALEUR DU REGISTRE, REG4: BYTE XWOR%2?'0A;0 < VALEUR DU REGISTRE. REG5: BYTE XWOR%2?'07;0 < POUR DESACTIVER... DEMR1: BYTE NVPCU;FGW < PROGRAMMATION DU CONTROLEUR... WORD REG1-ZERO*NOCMO WORD NOCMO DEMR2: BYTE NVPCU;FGW WORD REG2-ZERO*NOCMO WORD NOCMO DEMR3: BYTE NVPCU;FGW WORD REG3-ZERO*NOCMO WORD NOCMO DEMR4: BYTE NVPCU;FGW WORD REG4-ZERO*NOCMO WORD NOCMO DEMR5: BYTE NVPCU;FGW WORD REG5-ZERO*NOCMO WORD NOCMO < < LIGNE D'IMAGE : < LIG0:: VAL 0 LIG1:: VAL 1 NCOOL:: VAL 3 < NOMBRE DE STACKS COULEURS, KDECAL:: VAL 8 < AMPLITUDE DU DECALAGE VERTICAL... ALIMAG: WORD LIMAG LIGNE: DZS CNMPL+1 < (+1 POUR LE DECALAGE CIRCULAIRE) < < PILE DE TRAVAIL : < STACK: DZS 10 PAGE < < < 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 RETIC0 < 0 : ACCES AU BANK0 WORD RETIC1 < 1 : ACCES AU BANK1 WORD ERROR < 2 WORD ERROR < 3 WORD ERROR < 4 WORD ERROR < 5 WORD ERROR < 6 WORD ERROR < 7 WORD ERROR < 8 AERROR: WORD ERROR < 9 (ET RELAI...) WORD ERROR < WORD ERROR < ; WORD DECAL < < : DECALAGE DES IMAGES CAMERAS WORD ERROR < = WORD ERROR < > WORD ERROR < ? WORD ERROR < @ WORD PGETC < A : MEMORISATION D'UNE COULEUR WORD PSTOC < B : ET SON TRANSFERT AILLEURS WORD RETICC < C : COULEUR AVEC CUMUL WORD RETICD < D : ACCES A LA 'ZDC' EN MODE 'C' WORD ERROR < E WORD RETICF < F : FIN, RETOUR A 'GE' WORD GCOUL < G : RECUPERATION DE LA MEMOIRE COULEURS WORD ERROR < H WORD RETII1 < I : INITIALISATION DE LA CARTE WORD GINT < J : INTERPOLATION ENTRE DEUX NIVEAUX WORD RETIK1 < K : COMMANDE DE LA CAMERA WORD ERROR < L WORD SCOLOR < M : BASCULE MEMORISATION COULEURS WORD RETICN < N : INVALIDATION DE L'EMISSION 'ZDC' WORD ERROR < O WORD RETICP < P : COULEUR AVEC REINITIALISATION WORD RETICQ < Q : ACCES A LA 'ZDC' EN MODE 'P' WORD IREG < R : PROGRAMMATION DES REGISTRES 'CRT' WORD RETICS < S : VALIDATION DE L'EMISSION 'ZDC' WORD RETICT < T : TEST DU POINT VIDEO COURANT WORD RETICU < U : ENTREE D'UNE TRAME MODE "K" ANTERIEUR WORD RETIKA < V : ENTREE D'UNE TRAME EN MODE NORMAL WORD RETICW < W : RETOUR TEMPORAIRE AU CCI REPZ: VAL $-KOM-1 < DERNIERE COMMANDE. PAGE < < < I N I T I A L I S A T I O N D U C O N T R O L E U R < D U C R T : < < < ATTENTION : < AU MOMENT DE L'EMISSION, ON < SUPERPOSE 'CUINIT' A CHAQUE < COMMANDE... < < LINIT: EQU $ WORD '0700 WORD '0A02;'0202;'080F;'000F;'0A01;'0201;'080E;'000E WORD '0A00;'0200;'080D;'000D;'0A00;'0200;'080C;'000C WORD '0A06;'0206;'080B;'000B;'0A05;'0205;'080A;'000A WORD '0A07;'0207;'0809;'0009;'0A01;'0201;'0808;'0008 WORD '0A22;'0222;'0807;'0007;'0A20;'0220;'0806;'0006 WORD '0A00;'0200;'0805;'0005;'0A26;'0226;'0804;'0004 WORD '0A03;'0203;'0803;'0003;'0A24;'0224;'0802;'0002 WORD '0A20;'0220;'0801;'0001;'0A27;'0227;'0800;'0000 WORD '0700 LLINIT:: VAL $-LINIT < LONGUEUR DE LA LISTE... PAGE PROG < < < 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. LR B,A SARD NBITMO DV AUX 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 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... CPI NMX*NMY/NBAN < 0 OU 1 ??? JL VALXY2 < 0... IC NUMBAN < 1... ADRI -NMX*NMY/NBAN,A STA NUMMAT VALXY2: EQU $ < < PREPARATION DE L'ORDRE A 'CU3' : < LA NIVEAU SLLS CUNIVO=0 STA BUFCU LA NUMMAT < NUMERO DE REGISTRE. SLLS CUREG=0 OR BUFCU STA BUFCU LA NUMBAN < NUMERO DE BANK EN ENREGISTREMENT. SLLS CUBAN=0 OR BUFCU STA BUFCU LA COLOUR < COULEURS DESIREES. SLLS CUCOLO=0 OR BUFCU STA BUFCU LA NUMDIF < NUMERO DE BANK EN DIFFUSION. SLLS CUDIFF=0 OR BUFCU STA BUFCU < < ET C'EST FINI... < LAI 0 < RETOUR OK... VALXY3: EQU $ PLR X,Y RSR VALXY1: EQU $ LAI 1 < RETOUR EN ERREUR... JMP VALXY3 PAGE < < < I N I T I A L I S A T I O N R E G I S T R E S : < < SPCU: EQU $ LB BUFCU < B=SAUVEGARDE DE L'ORDRE A 'CU3'. LRM A WORD CUCOLO?CUNIVO < A=SELECTION DES 3 COULEURS AU < NIVEAU MINIMUM. ORR B,A STA BUFCU BSR AMEMCU < MEMORISATION DES COULEURS... SVC 0 < REINITIALISATION DES REGISTRES... STB BUFCU < REINITIALISATION DE L'ORDRE... RSR PAGE < < < E N V O I D ' U N S E G M E N T E N Z D C : < < STOZDC: EQU $ PSR A,X LA INDZDC TBT NBITMO-1 < EST-CE VALIDE ??? JNC STO1 < NON... LA BUFX STA SEG+0+X STA SEG+2+X LA BUFY STA SEG+0+Y STA SEG+2+Y LAD GETGS < OUI... STO2: EQU $ SVC 0 < ACCES A L'ACQUITTEMENT PRECEDENT... CPZ NOMSEG < A-T'IL ETE ACQUITTE ??? JNE STO2 < NON, ON ATTEND... DC NOMSEG < OUI, NOMSEG=-1, LAD STOGS SVC 0 < ET ON ENVOIE LE SEGMENT COURANT. STO1: EQU $ PLR A,X RSR PAGE < < < A C C E S A U N S E G M E N T E N Z D C : < < < RESULTAT : < A=0 SUR FIN DE LISTE ('OAB'). < < GETZDC: EQU $ PSR X LAD DEMSEG GET1: EQU $ SVC 0 < ACCES AU SEGMENT COURANT... CPZ NOMSEG < EST-IL VALIDE ??? JE GET1 < NON, ON ATTEND... STZ NOMSEG < OUI, NOMSEG=0, LAD DELSEG SVC 0 < ET ON L'ACQUITTE... LA SEG+0+X OR SEG+0+Y OR SEG+2+X OR SEG+2+Y < A=0 SI 'OAB'... PLR X RSR PAGE < < < T E S T D ' U N P O I N T : < < < ARGUMENTS : < X ET Y CONTIENNENT L'X ET L'Y DU POINT , < C=@IMAG. < < < RESULTAT : < CARY POISITIONNE PAR LE POINT (0/1). < < TEST: EQU $ LA STDKU+3 EORI TVIN < MISE EN MODE SORTIE SUR LA TRAME STA STDKU+3 < COURANTE... PSR B,X,C LR Y,A < A=COORDONNEE Y DU POINT. MP NMPL ADR B,C LR X,A < A=COORDONNEE X DU POINT. SLRS NBITMO=0 ADR A,C < C#MOT CONTENANT LE POINT (X,Y). LAI NBITMO-1 ANDR A,X < X=NUMERO DU POINT DANS LE MOT (C) LBI TEMPO < NOMBRE DE CLIGNOTEMENTS. INVER: EQU $ LA 0,C IBT 0,X < INVERSION... STA 0,C PSR X LAD STDKU SVC 0 < CLIGNOTEMENT... PLR X ADRI -1,B CPZR B JG INVER < ON CONTINUE... LA 0,C TBT 0,X < TEST DU POINT. PLR B,X,C RSR 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 BASE16: VAL 16 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 E R E P O N S E O U I / N O N : < < < ARGUMENT : < A=ADRESSE D'UN MESSAGE A EDITER, < X=NUMERO D'UN BIT A METTRE A 1 DANS 'A' SI 'OUI'. < < < RESULTAT : < A=0 SI 'NON', < LE BIT A(X)=1 SI 'OUI'. < < ENTER: EQU $ PSR B,Y LR A,Y < Y=SAVE L'ADRESSE DU MESSAGE SI ERREUR. LBI 0 < CLEAR LA REPONSE A PRIORI... ENTER1: EQU $ LR Y,A BSR APRINT < EDITION DU MESSAGE ARGUMENT, PSR X LAD DEMIN SVC 0 < ENTREE DE LA REPONSE, PLR X LBY BUFCG < A=REPONSE, CPI "N" JE ENTER2 < "N" : B=0... CPI "O" JNE ENTER1 < ITERATION SUR ERREUR... SBT NBITMO,X < "O" : B(X)=1... ENTER2: EQU $ LR B,A < A=REPONSE... PLR B,Y RSR PAGE < < < M E M O R I S A T I O N C O U L E U R S : < < < RESULTAT : < A=ADRESSE DE 'DEMCU'. < < MEMCU: EQU $ CPZ MITEM1 < MEMORISE-T'ON ??? JG MEMCU1 < 1 : NON... LA BUFCU < OUI, A=CODE DE COULEURS, BSR ASTHEX < QUE L'ON MET EN ITEM1... MEMCU1: EQU $ LAD DEMCU < A=ADRESSE DE 'DEMCU'. RSR PAGE < < < I N I T I A L I S A T I O N I T E M 1 : < < IITEM: EQU $ LAI NBCAR STA XITEM1 < REINITAILISATION DE L'INDEX ITEM1... LXI IINDIC-LTN*NOCMO LAI "T" STBY &AITEM1 < MISE EN MODE "TEXTE", LXI LRITEM-LTN LA LITEM1 STA &AITEM1 < ET DE LA LONGUEUR D'UN TEXTE... LR A,X < ET ON CLEAR... LAI " " SCOL5: EQU $ ADRI -1,X STBY &AITEM1 < REMISE A " "... ADRI 1,X JDX SCOL5 RSR PAGE < < < R A N G E M E N T D A N S I T E M 1 : < < < FONCTION : < CE SOUS-PROGRAMME RANGE LE CARACTERE < ARGUMENT DANS 'ITEM1' A L'INDEX 'XITEM1' ; < EN CAS DE DEBORDEMENT, ON NE FAIT PAS < PROGRESSER CELUI-CI... < < < ARGUMENT : < A=CARACTERE. < < STIT: EQU $ PSR A,X LX XITEM1 < X=INDEX DE L'ITEM1, STBY &AITEM1 < ET ON Y RANGE (A)... LR X,A ADRI 1,A < PROGRESSION DE L'INDEX, CP LITEM1 < ET VALIDATION PRELIMINAIRE... JL STIT1 < OK... LAI MRC-ZERO BSR APRINT LAI MOVFL-ZERO BSR APRINT < SIGNALISATION DU DEBORDEMENT. JMP STIT2 < ET C'EST TOUT... STIT1: EQU $ STA XITEM1 < MISE A JOUR DE L'INDEX COURANT... STIT2: EQU $ PLR A,X RSR PAGE < < < C O N V E R S I O N A S C I : < < < FONCTION : < CE SOUS-PROGRAMME EFFECTUE LA < CONVERSION DE L'ARGUMENT (A) EN < ASCI, SOIT 'XXXX, PUIS RANGE EN < ITEM1 LA CHAINE DE CARACTERES < U;XXXX QUI EST COMPATIBLE AVEC < LES PROCESSEURS 'TI' ET 'TV'... < < < ARGUMENT : < A=VALEUR HEXA-DECIMALE. < < STHEX: EQU $ PSR B,X < < NOTA : < ON N'OPTIMISE PLUS EN < FONCTION DE LA NULLITE DE < 'CTRANS' AVEC SAUT VERS < 'STHEX5' DEPUIS QUE LA PERMU- < TATION DES COULEURS EST INTRODUITE... < LBI 0 SCRS LREG SCLD LREG XR A,B < A=NIVEAU DE GRIS, AD CTRANS < ET TRANSLATION... CPI CUNIVO JL STHEX3 < OK... LAI CUNIVO < MAJORATION... STHEX3: EQU $ JAGE STHEX4 < OK... LAI 0 < MINORATION... STHEX4: EQU $ ORR B,A < RECONCATENATION... STA BUFCU < MISE DANS LE BUFFER DE 'CU3', PSR A,X LAD DEMCU SVC 0 < ENVOI, ET TRANSLATION COULEUR... PLR A,X STHEX5: EQU $ SCLS NBITMO/NBRHEX ORI 4 SCRS NBITMO/NBRHEX < MISE SOUS LA FORME '4XXX. LR A,B LAI " " BSR ASTIT < MISE DE BSR ASTIT < CARACTERES BSR ASTIT < 'SPACE'... LAI "U" BSR ASTIT < "U" LAI ";" BSR ASTIT < "U;" LXI NBRHEX STHEX1: EQU $ LAI 0 < CLEAR 'A'... SLLD NBITMO/NBRHEX CPI BASE10 < CHIFFRE OU LETTRE ??? JL STHEX2 < CHIFFRE... ADRI "A"-"9"-1,A < LETTRE... STHEX2: EQU $ ADRI "0",A BSR ASTIT < "U;XXXX" JDX STHEX1 PLR B,X 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 0 < 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 U R E T I C U L E : < < < 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, < 0 : DIFFUSION DU BANK0, < 1 : DIFFUSION DU BANK1. < W : RETOUR AU CCI, < D : RECOIT DES SEGMENTS EN ZDC, ET POUR CHACUN < 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'... < Q : "Q" EST A "P", CE QUE "D" EST A "C"... < S : VALIDE L'EMISSION EN ZDC POUR CHAQUE "C", < N : INVALIDE "S", < T : TESTE LE POINT VIDEO COURANT POINTE PAR LE < RETICULE... < K : COMMANDE DE LA CAMERA... < < : POSITIONNEMENT CORRECT DES IMAGES ENTREES < PAR LA CAMERA... < V : ENTREE D'UNE TRAME EN MODE NORMAL... < U : ENTREE D'UNE TRAME DANS LE MODE "K" ANTERIEUR... < I : INITIALISATION DE LA CARTE. < M : BASCULE DE LA MEMORISATION DES COULEURS ("OFF" A < L'APPEL DE "RV"). < G : GENERATION DE L'ITEM1 A PARTIR DE LA MEMOIRE < DES COULEURS DE CMS5. < R : PROGRAMMATION INDIVIDUELLE DES REGISTRES DU < CONTROLEUR DE 'CRT'. < A : MEMORISATION ET TRANSLATION DE LA COULEUR D'UNE < DES 16 SOUS-MATRICES DE LA PALETTE, < B : ET TRANSFERT DE CELLE-CI VERS L'UNE QUELCONQUE < DES 16 SOUS-MATRICES DE LA PALETTE (EMETTEUR < PAR "A" ET RECEPTEUR PAR "B" POUVANT ETRE < CONFONDUS). < < < < "R" : PROGRAMMATION DES REGISTRES DU CONTROLEUR DE 'CRT' : < IREG: EQU $ LAI MREG-ZERO BSR APRINT LAD DEMHEX SVC 0 BSR AHEX < CONVERSION DE L'ADRESSE DE REGISTRE : JNE IREG < ERREUR... JAL IREG < ERREUR... CPI NREG JGE IREG < ERREUR... LR A,B < B=ADRESSE DU REGISTRE SELECTIONNE... LBY REG1 STB REG1 STBY REG1 LBY REG2 STB REG2 STBY REG2 IREG1: EQU $ LAI MVAL-ZERO BSR APRINT LAD DEMHEX SVC 0 BSR AHEX < CONVERSION DE LA VALEUR DU REGISTRE : JNE IREG1 < ERREUR... JAL IREG1 < ERREUR... CPI 1>NBITOC-1 JG IREG1 < ERREUR... LR A,B < B=VALEUR DU REGISTRE SELECTIONNE... LBY REG3 STB REG3 STBY REG3 LBY REG4 STB REG4 STBY REG4 LAD DEMR5 SVC 0 < OUVERTURE... LAD DEMR1 SVC 0 < ENVOI DE 'REG1', LAD DEMR2 SVC 0 < ENVOI DE 'REG2', LAD DEMR3 SVC 0 < ENVOI DE 'REG3', LAD DEMR4 SVC 0 < ENVOI DE 'REG4'. LAD DEMR5 SVC 0 < FERMETURE... BR ALOOP < A L'ORDRE SUIVANT... < < "M" : MEMORISATION EN ITEM1 DES TABLES DE COULEUR : < SCOLOR: EQU $ IC PITEM1 < PREMIERE FOIS ??? JG SCOL4 < NON... BSR AIITEM < INITIALISATION DE L'ITEM1... SCOL4: EQU $ LA MITEM1 NGR A,A < INVERSION DE LA BASCULE... STA MITEM1 LAI MRC-ZERO BSR APRINT LAI MOFF-ZERO < OFF A PRIORI... CPZ MITEM1 < ??? JG SCOL1 < OFF... LAI MON-ZERO < ON... SCOL1: EQU $ BSR APRINT BR ALOOP < A L'ORDRE SUIVANT... < < "I" : INITIALISATION DE LA CARTE : < RETII1: EQU $ LAI CUCLIR STA BUFCU+MOT2 LAD DEMCU2 SVC 0 < 'CLEAR' DE LA CARTE... STZ BUFCU+MOT2 LXI LLINIT < X=NOMBRE D'INITIALISATION. LAD DEMCU < A=ADRESSE DE LA DEMANDE D'INITIALISATION. INIT1: EQU $ LB &ALINIT XWOR%1: VAL CUINIT=0-NBITMO+1 SBT NBITMO+XWOR%1 < POUR DISCRIMINER D'AVEC LES ORDRES DE < COULEUR... STB BUFCU PSR X SVC 0 < INITIALISATION... PLR X JDX INIT1 < A LA SUIVANTE... STZ BUFCU JMP RETIK2 < VERS LA REMISE EN FONCTION... < < U : ENTREE D'UNE TRAME DANS LE MODE "K" ANTERIEUR : < RETICU: EQU $ LA SMOT2 < A=ORDRES CAMERA ANTERIEUR, JMP RETICL < VERS L'ENVOI... < < V : ENTREE D'UNE TRAME CAMERA EN MODE NORMAL : < RETIKA: EQU $ PROMN:: VAL '0000 < ADRESSE DE PROM STANDARD, MODEN:: VAL '0000 < MODE D'ENTREE STANDARD... < (ON RENTRE 3 BITS DE POIDS FORTS) XWOR%2: VAL CUIN?CUINR?CUINV?CUINB XWOR%1: VAL CUMODI=0 XWOR%2: VAL MODEN>XWOR%1?XWOR%2 XWOR%1: VAL CUPROM=0 XWOR%2: VAL PROMN>XWOR%1?XWOR%2 LRM A WORD XWOR%2 < ENTREE SUR TOUTES LES COULEURS, RETICL: EQU $ < ENTRY POUR "U"... STA BUFCU+MOT2 < EN MODE STANDARD... LAD DEMCU2 SVC 0 < ENTREE, RETICM: EQU $ STZ BUFCU+MOT2 < ET STOP IMMEDIAT AFIN DE JMP RETIK2 < N'ENTRER QU'UNE TRAME... < < "K" : COMMANDE DE LA CAMERA : < RETIK1: EQU $ STZ BUFCU+MOT2 < INITIALISATION DU CUMUL DES ORDRES... LAI MRC-ZERO BSR APRINT < A CAUSE DU RETICULE DE LA VISU... LAI MCAM-ZERO BSR APRINT < EDITION DE "CAMERA:". XWOR%1: VAL CUIN=0 LXI NBITMO-1-XWOR%1 LAI MI-ZERO BSR AENTER < 'IN' OU 'OUT' ??? JAE RETIK2 < 'OUT'... OR BUFCU+MOT2 < 'IN'... STA BUFCU+MOT2 XWOR%1: VAL CUINR=0 LXI NBITMO-1-XWOR%1 LAI MR-ZERO BSR AENTER < SELECTION ROBINET ROUGE... OR BUFCU+MOT2 STA BUFCU+MOT2 XWOR%1: VAL CUINV=0 LXI NBITMO-1-XWOR%1 LAI MV-ZERO BSR AENTER < SELECTION ROBINET VERT... OR BUFCU+MOT2 STA BUFCU+MOT2 XWOR%1: VAL CUINB=0 LXI NBITMO-1-XWOR%1 LAI MB-ZERO BSR AENTER < SELECTION ROBINET BLEU... OR BUFCU+MOT2 STA BUFCU+MOT2 RETIK3: EQU $ LAI MMOD-ZERO BSR APRINT < "MODE=". LAD DEMHEX SVC 0 < ENTREE DU MODE... BSR AHEX < ET CONVERSION BINAIRE... JNE RETIK3 < ERREUR... XWOR%1: VAL CUMODI=0 XWOR%2: VAL -XWOR%1 JAL RETIK3 < MAUVAIS MODE... CPI CUMODI>XWOR%2 < VALIDATION, JG RETIK3 < ERREUR... SLLS XWOR%1 OR BUFCU+MOT2 STA BUFCU+MOT2 RETIK4: EQU $ LAI MAD-ZERO BSR APRINT < "ADR PROM=". LAD DEMHEX SVC 0 < ENTREE DE L'ADRESSE DE LA FONCTION < DE TRANSFERT EN PROM... BSR AHEX < ET CONVERSION BINAIRE, JNE RETIK4 < ERREUR... XWOR%1: VAL CUPROM=0 XWOR%2: VAL -XWOR%1 JAL RETIK4 < ERREUR... CPI CUPROM>XWOR%2 < VALIDATION, JG RETIK4 < ERREUR... SLLS XWOR%1 OR BUFCU+MOT2 STA BUFCU+MOT2 STA SMOT2 < SAUVEGARDE POUR "U"... LAI MCONT-ZERO LXI NBITMO-1 BSR AENTER < "CONTINU?"... PSR A < SAUVEGARDE DE LA REPONSE... LAD DEMCU2 SVC 0 < ENVOI DE L'ORDRE CAMERA... PLR A < RESTAURE LA REPONSE A "CONTINU?" : JAE RETICM < "N" : ON NE RENTRE QU'UNE TRAME... JMP RETICX < "O" : ON RENTRE EN CONTINU... RETIK2: EQU $ LAD DEMCU2 SVC 0 < ENVOI DU MOT2 DE 'CU3' (ORDRES CAMERA)... JMP RETICX < VERS L'ORDRE SUIVANT... RETIC: EQU $ < < 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 $ STZ BUFY STZ BUFX BSR ASTOZD < ENVOI D'UN 'OAB'... 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 RELMEM SVC 0 LAD DEMBAC BSR AOVL < ET ON REVIENT A "GE"... JMP RETICY < IMPOSSIBLE... < < "W" : RETOUR AU CCI : < RETICW: EQU $ LAD DEMCCI SVC 0 JMP RETICX < < "0" : SELECTION DU BANK0 EN DIFFUSION : < RETIC0: EQU $ STZ NUMDIF < ET C'EST TOUT... JMP RETIC9 < VERS LA SELECTION. < < "1" : SELECTION DU BANK1 EN DIFFUSION : < RETIC1: EQU $ STZ NUMDIF IC NUMDIF < FACILE... RETIC9: EQU $ LA NUMDIF SLLS CUDIFF=0 STA BUFCU < JUSTE UN ORDRE DE SELECTION... JMP RETIC8 < < "S" : VALIDATION EMISSION ZDC POUR "C" : < RETICS: EQU $ STZ INDZDC IC INDZDC JMP RETICX < < "N" : INVALIDATION EMISSION ZDC DE "C" : < RETICN: EQU $ STZ INDZDC JMP RETICX < < "C" : SELECTION DE LA COULEUR... < RETICC: EQU $ BSR AVALXY < VALIDATION DE (X,Y)... JANE RETICY < ERREUR DE POSITIONNEMNT... BSR ASTOZD < ENVOI EVENTUEL EN ZDC... RETIC8: EQU $ BSR AMEMCU RETICZ: EQU $ SVC 0 < OK, ON ENVOIE L'ORDRE DE COULEUR... JMP RETICX < < "P" : SELECTION COULEUR AVEC REINITIALISATION AU NOIR PREALABLE : < RETICP: EQU $ BSR AVALXY < VALIDATION (X,Y).... JANE RETICY < ERREUR... BSR ASPCU < REINITIALISATION DES REGISTRES. JMP RETIC8 < VERS SON ENVOI... < < "D" : ACCES A LA ZDC EN MODE "C" : < RETICD: EQU $ BSR AGETZD < ACCES A LA ZDC : JAE RETICX < 'OAB' : RETOUR AU RETICULE... SEGX: EQU SEG+2+X < X(EXTREMITE). SEGY: EQU SEG+2+Y < Y(EXTREMITE). LX SEGX LY SEGY BSR AVALXY < VALIDATION DE (X,Y). JANE RETICY < ON ARRETE --> RETICULE... BSR AMEMCU SVC 0 < OK, ON PROGRAMME LE 'CU3'... JMP RETICD < ET ON REBOUCLE... < < "Q" : ACCES A LA ZDC EN MODE "P" : < RETICQ: EQU $ BSR AGETZD < ACCES A LA ZDC : JAE RETICX < 'OAB' : RETOUR AU RETICULE... LX SEGX LY SEGY BSR AVALXY < VALIDATION DE (X,Y)... JANE RETICY < ERREUR : RETOUR AU RETICULE... BSR ASPCU < REINITIALISATION DES REGISTRES... BSR AMEMCU SVC 0 < ET ON COMMANDE LE 'CU3'... JMP RETICQ < ET ON REBOUCLE... < < "T" : TEST DU POINT VIDEO COURANT : < RETICT: EQU $ LAI MRC-ZERO BSR APRINT LR Y,A SLRS DEDY SB NLIG NGR A,Y < Y=Y(POINT VIDEO COIRANT). LR X,A SLRS DEDX LR A,B < B=X(POINT VIDEO COURANT). LAI TVIN?TVPR BSR ASP5 < TEST DU POINT (X,Y) SUR LA TRAME "1" : JNC E1 < 0... LAI M1-ZERO E1: EQU $ BSR APRINT < 1 : ON LE DIT... LAI TVIN?TVPV BSR ASP5 < TEST DU POINT (X,Y) SUR LA TRAME "2" : JNC E2 < 0... LAI M2-ZERO E2: EQU $ BSR APRINT < 1 : ON LE DIT... LAI TVIN?TVPB BSR ASP5 < TEST DU POINT (X,Y) SUR LA TRAME "3" : JNC E3 < 0... LAI M3-ZERO E3: EQU $ BSR APRINT < 1 : ON LE DIT... BR ARET < VERS L'INTERROGATION... < < < T E S T P O I N T : < < < ARGUMENT : < (A)=NUMERO DE TRAME. < < < RESULTAT : < (A)=ADRESSE MESSAGE. < < SP5: EQU $ STA STDKU+3 LAD STDKU SVC 0 < LECTURE DE LA TRAME "1". LR B,X BSR ATEST < TEST DU POINT (X,Y) SUR "1". LAI MMOINS-ZERO RSR PAGE < < < M E M O R I S A T I O N D ' U N E C O U L E U R : < < PGETC: EQU $ BSR AVALXY < RECUPERATION DU REGISTRE DEMANDE : AERR: JANE ERROR < ERREUR... BSR APTRAN < ENTREE DE LA TRANSLATION. STA SAVET < SAUVEGARDE DE LA TRANSLATION DEMANDEE. BSR APERMU < ENTREE DE LA PERMUTATION (R,V,B)... LAI NSPCOL SBT 0 ACTD 1 LR B,A < A=ADRESSE DE LA MEMOIRE DES COULEURS, AD NUMREG < A=ADRESSE DU REGISTRE DEMANDE, ACTD 1 STB SAVEC < ET SAUVEGARDE DE SON CONTENU... BR ARET < < < E N T R E E T R A N S L A T I O N : < < PTRAN: EQU $ LAI MTRANS-ZERO BSR APRINT LAD DEMHEX SVC 0 BSR AHEX JNE PTRAN < ERREUR... RSR < < < E N T R E E P E R M U T A T I O N ( R , V , B ) : < < PERMUT: EQU $ 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 '04 < EST-CE "EOT" ??? JE PERMU1 < OUI, ON ARRETE... CPI '0D < 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 < < < T R A N S F E R T D ' U N E C O U L E U R : < < PSTOC: EQU $ BSR AVALXY < RECUPERATION DU REGISTRE DEMANDE : JANE AERR LY NUMREG < Y=REGISTRE DEMANDE, LB SAVEC SLLD LREG < B=VALEUR A LUI DONNER... BSR ASP3 < GENERATION DU (B,V,R)... BR ARET < ET C'EST TOUT... < < < G E N E R A T I O N D U ( B , V , R ) : < < < ARGUMENT : < (B)=CONTENU DU REGISTRE COURANT, < (Y)=NUMERO DU REGISTRE COURANT. < < SP3: EQU $ LA AXXB BSR ASP1 < GENERATION DU BLEU, LA AXXV BSR ASP1 < GENERATION DU VERT, LA AXXR BSR ASP1 < GENERATION DU BLEU. RSR < < < T R A N S L A T I O N E T E N V O I C O U L E U R : < < SP1: EQU $ IF XXABS-0,,XWOR%, IF ATTENTION : LE 'JAE' ET CELUI DE 'SP4' EST IDIOT !!! XWOR%: VAL 0 JAE SP14 < CAS D'UNE COMPOSANTE ABSENTE... ORR Y,A < CONCATENATION NUMERO DE REGISTRE, SLLD LREG < CONCATENATION DU NIVEAU DE GRIS, PSR B LBI 0 SCRS LREG SCLD LREG XR A,B < A=NIVEAU DE GRIS SEUL, AD SAVET < QUE L'ON TRANSLATE, CPI CUNIVO < ET QUE L'ON VALIDE : JL SP11 < OK... LAI CUNIVO < MINORATION... SP11: EQU $ JAGE SP12 < OK... LAI 0 < MAJORATION... SP12: EQU $ ORR B,A < RECONCATENATION... PLR B STA BUFCU LA NUMDIF < NUMERO DU BANK DE DIFFUSION. SLLS CUDIFF=0 OR BUFCU STA BUFCU BSR AMEMCU < AFIN DE PERMETTRE DES INTERPOLATIONS < ENTRE 2 PALETTES REGISTRE PAR REGISTRE < LORSQUE MITEM1=-1. SVC 0 < ET ENVOI DE LA COULEUR... SP13: EQU $ RSR < < MISE A JOUR DE 'B' POUR UN < CANAL COULEUR ABSENT : < SP14: EQU $ SLLD LREG JMP SP13 < ET ON SORT... PAGE < < < M E M O I R E D E S C O U L E U R S : < < GCOUL: EQU $ < < ENTREE DE LA TRANSLATION : < BSR APTRAN < ENTREE DE LA TRANSLATION... STA CTRANS < CONSTANTE DE TRANSLATION DES NIVEAUX < DE GRIS... < < ENTREE DE LA PERMUTATION DES COULEURS : < BSR APERMU < < GENERATION : < BSR AIITEM < INITIALISATION DE L'ITEM1... STZ XITEM1 < RETOUR EN DEBUT D'ITEM, LAI "&" < ET GENERATION DU DEBUT DU PROGRAMME... BSR ASTIT LAI "R" BSR ASTIT LAI "V" BSR ASTIT LAI "B" BSR ASTIT LAI ";" BSR ASTIT LAI " " BSR ASTIT BSR ASTIT BSR ASTIT BSR ASTIT BSR ASTIT BSR ASTIT BSR ASTIT LAI ">" BSR ASTIT LAI "R" BSR ASTIT LAI "V" BSR ASTIT LAI "B" BSR ASTIT LAI "(" BSR ASTIT LAI "*" BSR ASTIT LAI ";" BSR ASTIT LAI "G" BSR ASTIT LAI NBCAR STA XITEM1 < POSITIONNEMENT SUR LA 2EME LIGNE... LAI NSPCOL SBT 0 ACTD 1 LR B,Y < Y=ADRESSE DE LA MEMOIRE DES COULEURS, LXI 0 < X=NUMERO DES REGISTRES DANS LA MEMOIRE. GCOUL1: EQU $ LR Y,A ACTD 1 < B=CONTENU DU REGISTRE COURANT (X). SLLD LREG < ET ELIMINATION DES PREMIERS BITS... < < CANAL BLEU : < LA AXXB < CANAL BLEU, BSR ASP4 < POUR MISE DANS L'ITEM1. < < CANAL VERT : < LA AXXV < CANAL VERT, BSR ASP4 < POUR MISE DANS L'ITEM1. < < CANAL ROUGE : < LA AXXR < CANAL ROUGE, BSR ASP4 < POUR MISE DANS L'ITEM1. < < REGISTRE SUIVANT : < ADRI 1,Y ADRI 1,X LR X,A XWOR%1: VAL CUREG=0 XWOR%1: VAL -XWOR%1 CPI CUREG>XWOR%1+1 < CHANGE-T'ON DE JEU ??? JNE GCOUL2 < NON... LA XITEM1 < OUI, ON CHANGE DE LIGNE : SLRD NBITMO DV ANBCAR ADRI 1,A MP ANBCAR STB XITEM1 GCOUL2: EQU $ XWOR%1: VAL CUREB=0 XWOR%1: VAL -XWOR%1 CPI CUREB>XWOR%1 JLE GCOUL1 < AU SUIVANT... LA XITEM1 SLRD NBITMO DV ANBCAR ADRI 1,A MP ANBCAR ADRI -2,B STB XITEM1 < POSITIONNEMENT AU BOUT DE LE DERNIERE < LIGNE... LAI "F" BSR ASTIT LAI ")" BSR ASTIT STZ CTRANS < REINITIALISATION DE CTRANS... BR ARET < FINI... < < < P R E P A R A T I O N R E G I S T R E < E T E N V O I A L ' I T E M 1 : < < SP4: EQU $ JAE SP14 < CANAL ABSENT, VERS LA MISE A JOUR DE 'B'. ORR X,A < ADRESSE DU REGISTRE, SLLD LREG < NIVEAU DE GRIS, BSR ASTHEX < ET MISE EN ITEM1... SP41: EQU $ RSR PAGE < < < R E C A L A G E D E S I M A G E S C A M E R A S : < < DECAL: EQU $ XWOR%1: VAL CUREG=0 XWOR%1: VAL -XWOR%1 XWOR%1: VAL CUREG>XWOR%1 IF 1>NCOOL-1-XWOR%1,,XWOR%, IF ATTENTION : INCOMPATIBILITE 'CUREG' ET 'NCOOL' !!! XWOR%: VAL 0 LRM A,B,X WORD 0 < A=ADRESSE RELATIVE EN 'CDAI', WORD LIGNE < B=ADRESSE RECEPTRICE. WORD LIMAG/CNMPL*NCOOL PSR A,B,X DECAL1: EQU $ PSR A,B,X LXI CNMPL RCDA < LECTURE D'UNE LIGNE MONOCHROME, XM LIGNE+LIG0 < RECUPERATION DU PREMIER MOT ET SAVE (A), STA LIGNE+CNMPL < QUE L'ON MET EN QUEUE, LA LIGNE+LIG0 < RESTAURE L'ADRESSE EN "CDAI", ADRI 1,B < AFIN DE DECALER CIRCULAIREMENT A GAUCHE, LXI CNMPL WCDA < REECRITURE DE LA LIGNE MONOCHROME DECALEE < CIRCULAIREMENT A GAUCHE... PLR A,B,X ADRI CNMPL,A < PASSAGE A LA LIGNE SUIVANTE, JDX DECAL1 < SI ELLE EXISTE... PLR A,B,X ADRI CNMPL-1,A < AFIN D'ATTEINDRE LA DERNIERE COLONNE... LXI NCOOL < NOMBRE DE STACKS, DECAL4: EQU $ PSR X LXI KDECAL < (X)=NOMBRE DE LIGNES DE DECALAGE... DECAL5: EQU $ PSR A,B,X LR A,Y < Y=SAVE L'ADRESSE DE DEPART DE LA TRAME... LRM X WORD LIMAG/CNMPL+1 < AFIN DE SE MORDRE LA QUEUE... (+1 POUR < FAIRE UN DECALAGE CIRCULAIRE) STZ LIGNE+LIG1 < PAR PROPRETE PURE... DECAL2: EQU $ PSR X XM LIGNE+LIG1 < (ET SAVE (A)) STA LIGNE+LIG0 < DECALAGE... LA LIGNE+LIG1 < ET RESTAURE (A)... ADRI -CNMPL,A < PASSAGE A UN MOT PLUS HAUT... CPR Y,A < SORT-ON DU STACK COURANT ??? JGE DECAL3 < NON, (A)>=(Y)... AD ALIMAG < ENFIN MODULO 'LIMAG'... DECAL3: EQU $ ADRI 1,B < PASSAGE SUR LIGNE+1, LXI 1 RCDA < ACCES AU MOT(A-KDECAL), ADRI -1,B LXI 1 WCDA < QUE L'ON A SAUVEGARDE DANS LIGNE+1, < ET QUE L'ON ECRASE PAR LIGNE+0... PLR X JDX DECAL2 < PASSAGE AU MOT PRECEDENT... PLR A,B,X JDX DECAL5 < ET ITERONS 'KDECAL' FOIS 1 LIGNE... PLR X AD ALIMAG < PASSAGE AU STACK SUIVANT... JDX DECAL4 < S'IL EXISTE... BR ARET < ET C'EST TOUT... 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... STA SAVET < TRANSLATION SYSTEMATIQUE. < < ENTREE DE LA PERMUTATION : < BSR APERMU < < ENTREE DU NIVEAU DE DEPART : < GINT1: EQU $ LAI MNIV1-ZERO BSR APRINT LAD DEMHEX SVC 0 BSR AHEX JNE GINT1 < ERREUR... JAL GINT1 < ERREUR... CPI LTCU-1 JG GINT1 < ERREUR... STA NIV1 < NIVEAU DE DEPART. < < ENTREE DU NIVEAU D'ARRIVEE : < GINT2: EQU $ LAI MNIV2-ZERO BSR APRINT LAD DEMHEX SVC 0 BSR AHEX JNE GINT2 < ERREUR... JAL GINT2 < ERREUR... CPI LTCU-1 JG GINT2 < ERREUR... CP NIV1 JLE GINT1 < ERREUR, IL FAUT NIV1<NIV2... STA NIV2 < NIVEAU D'ARRIVEE. < < ACCES AUX REGISTRES DE COULEUR : < LAI NSPCOL SBT 0 ACTD 1 LR B,A < (A)=ADRESSE DE LA MEMOIRE DES COULEURS. LR B,Y < ET SAVE DANS 'Y'... < < ACCES AUX COULEURS DE 'NIV2' : < AD NIV2 < (A)=ADRESSE DU REGISTRE (NIV2), ACTD 1 LAI 0 SLLD LREG+LREG STA BLEU2 < BLEU2, LAI 0 SLLD LREG STA VERT2 < VERT2, LAI 0 SLLD LREG FLT FST ROUGE2 < ROUGE2, < < ACCES AUX COULEURS DE 'NIV1' : < LR Y,A AD NIV1 < (A)=ADRESSE DU REGISTRE (NIV1), ACTD 1 LAI 0 SLLD LREG PSR B < SAVE LE CONTENU DU REGISTRE (NIV1)... SLLD LREG STA BLEU1 < BLEU1, LAI 0 SLLD LREG STA VERT1 < VERT1, LAI 0 SLLD LREG FLT FST ROUGE1 < ROUGE1, LA VERT1 FLT FST VERT1 < VERT1, LA BLEU1 FLT FST BLEU1 < BLEU1. < < REGENERATION A PRIORI < DU REGISTRE (NIV1) : < LY NIV1 < (Y)=REGISTRE DE DEPART, PLR B < (B)=SON CONTENU INITIAL, 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 LR A,X < (X)=NOMBRE DE PAS, FLT FST FPAS < < CALCUL DU PAS (ROUGE2,VERT2,BLEU2) < SUR LES COULEURS (ROUGE1,VERT1,BLEU1) : < FLD ROUGE2 FSB ROUGE1 FDV FPAS FST ROUGE2 < PAS ROUGE, LA VERT2 FLT FSB VERT1 FDV FPAS FST VERT2 < PAS VERT, LA BLEU2 FLT FSB BLEU1 FDV FPAS FST BLEU2 < PAS BLEU. < < ITERATION SUR CHAQUE REGISTRE INTERMEDIAIRE : < GINT3: EQU $ CPZ MITEM1 < MEMORISE-T'ON DANS L'ITEM1 ??? JLE GINT4 < OUI, ON NE CHANGE PAS LE REGISTRE COU- < RANT (Y), AFIN DE PERMETTRE DES INTER- < POLATIONS ENTRE PALETTES (JEUX 0 ET 1), < ET CECI, REGISTRE PAR REGISTRE (AUTANT < D'INTERPOLATIONS A FAIRE QU'IL Y A DE < REGISTRES SIGNIFICATIFS : 7 OU 8). ADRI 1,Y < NON, ON PASSE DONC AU REGISTRE SUIVANT.. GINT4: EQU $ PSR X < SAVE LE DECOMPTE... LXI 0 < CLEAR LE CUMUL DES NIVEAUX... FLD ROUGE1 FAD ROUGE2 FST ROUGE1 < PROGRESSION DU ROUGE, BSR AROND < ET CUMUL... FLD VERT1 FAD VERT2 FST VERT1 < PROGRESSION DU VERT, BSR AROND < ET CUMUL... FLD BLEU1 FAD BLEU2 FST BLEU1 < PROGRESSION DU BLEU, BSR AROND < ET CUMUL... BSR ASP3 < ENVOI DU (B,V,R). PLR X JDX GINT3 < AU REGISTRE SUIVANT... BR ARET < ET RETOUR... < < < A R R O N D I E T C U M U L D E S N I V E A U X : < < < ARGUMENTS : < (A,B)=NIVEAU, < (X)=CUMUL COURANT. < < < RESULTATS : < (X)=(B)=NOUVEAU CUMUL COURANT. < < ROND: EQU $ FAD F05 FIX < ARRONDI (EXCES OU DEFAUT...). LR X,B SLRD LREG < CONCATENATION CUMULATIVE, LR B,X < ET SAVE DANS 'X'... RSR PAGE < < < P O I N T D ' E N T R E E : < < PRV: EQU $ LRM C,L,K WORD IMAG < INITIALISATION DE C, WORD LOC+'80 < INTIALISATION DE L, WORD STACK-1 < INITIALISATION DE K. LAD DEMMEM SVC 0 < POUR LA VIDEO... LAD DEMCDA SVC 0 < "!CDAI"... STZ CTRANS < AU CAS DES ALT-MODES... LAI MRVB-ZERO BSR APRINT < POUR AVOIR 'RVB'... LAI MOFF-ZERO < ITEM1 OFF A PRIORI... CPZ MITEM1 < ??? JG PRV1 < OFF... LAI MON-ZERO < ON... PRV1: EQU $ BSR APRINT < EDITION... BSR ARETIC 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#