NLS IDP "SIP IMAGE 512" < I M A G E 5 1 2 : XXIMA0: VAL 0 < XXXIMA=0 : DEFINITION DES CONSTANTES < STRICTEMENT "IMAGE". XXIMA1: VAL 1 < XXXIMA=1 : DEFINITION DES CONSTANTES < GENERALES ET "IMAGE". XXIMA2: VAL 2 < XXXIMA=2 : DEFINITION DU LOCAL (OU DU < COMMON). XXIMA3: VAL 3 < XXXIMA=3 : DEFINITION DES SOUS-PRO- < GRAMMES. XXIMA4: VAL 4 < XXXIMA=4 : DEFINITION DES DONNEES , < D'ACCES AU 'CCI' INTERPRETATIF XXIMA5: VAL 5 < XXXIMA=5 : SOUS-PROGRAMME D'ACCES AU < 'CCI' INTERPRETATIF. < YYYIMA=1 : 'STORP' EFFECTUE PAR ENVOI SEQUENTIEL DE (NIVEAU,X,Y), < =2 : 'STORP' PAR ENVOI DU 'NIVEAU' A L'ADRESSE (X,Y) CONCATENEES. < =3 : NE GENERER NI LE CODE DE 'LOADP', NI CELUI DE 'STORP'... IF XXXIMA-XXIMA1,XWOR%9,,XWOR%9 LST < < < D E F I N I T I O N D E C O N S T A N T E S G E N E R A L E S : < < K: VAL 0 < POUR CLEARER... FSYMB: VAL 'F700 < POUR TESTER L'ETAT D'UN SYMBOLE. ENDIF @ IF 5=FSYMB,XWOR%,,XWOR% ENDIF: VAL K < POUR LES FINS DE 'IF'... XWOR%: VAL ENDIF BIT @ IF 3=FSYMB,XWOR%,,XWOR% BIT: VAL 1 < DEFINITION D'UN BIT. XWOR%: VAL ENDIF BITSIG: VAL 0 < BIT DE SIGNE, D'INDEX... I: VAL 1 < POUR INCREMENTER... Z: VAL 1 < POUR CE QUI COMMENCE A 0... MASK: VAL I < POUR CALCULER DES MASQUES A PARTI DE < NOMBRES PUISSANCES DE 2... NBITMO @ IF 6=FSYMB,XWOR%,,XWOR% NBITMO: VAL 16 < NOMBRE DE BITS PAR MOT, XWOR%: VAL ENDIF NOCMO @ IF 5=FSYMB,XWOR%,,XWOR% NOCMO: VAL 2 < NOMBRE D'OCTETS PAR MOT. XWOR%: VAL ENDIF NBITOC @ IF 6=FSYMB,XWOR%,,XWOR% NBITOC: VAL NBITMO/NOCMO < NOMBRE DE BITS PAR OCTETS. XWOR%: VAL ENDIF MOCG: VAL 'FF00 < OCTET GAUCHE, MOCD: VAL '00FF < OCTET DROIT. MMOT: VAL MOCG?MOCD < MASQUE DE MOT ENTIER... BASE10 @ IF 6=FSYMB,XWOR%,,XWOR% BASE10: VAL 10 < BASE DE NUMERATION DECIMALE. XWOR%: VAL ENDIF EOT @ IF 3=FSYMB,XWOR%,,XWOR% EOT:: VAL '04 < CARACTERE DE FIN DE MESSAGE. XWOR%: VAL ENDIF KEOT: VAL EOT < PAR COMPATIBILITE #SIP DEFINITION CTTE#. RC @ IF 2=FSYMB,XWOR%,,XWOR% RC:: VAL '0D < RETOUR-CHARIOT... XWOR%: VAL ENDIF KCR: VAL '0D < PAR COMPATIBILITE #SIP DEFINITION CTTE#. XXXMOY: VAL 2 < POUR FAIRE DES MOYENNES... FCBA: VAL 'FA00 < FONCTION DE CONVERSION BINAIRE --> ASCI. LCCI @ IF 4=FSYMB,XWOR%,,XWOR% LCCI: VAL 80 < LONGUEUR DES CARTES AU 'CCI'. XWOR%: VAL ENDIF FCCI:: VAL 2 < FONCTION D'ACCES AU 'CCI' INTERPRETATIF. LK: VAL BIT>10 < VALEUR D'UN 'K'... < < FORMAT D'UNE DEMANDE A 'CMS5' : < NVPFON: MOT K < PREMIER MOT D'UNE DEMANDE, AMESC: MOT NVPFON+I < SECOND MOT, ET COESC: MOT AMESC+I < TROISIEME... < < DEFINITION D'INSTRUCTIONS : < PROG FCINST: VAL 'FB00 < FONCTION D'EXECUTION D'UNE INSTRUCTION, FMASK: VAL 'F500 < MISE EN PLACE DE L'INSTRUCTION COURANTE < A EXECUTER. ESBT: SBT K COSBT: VAL '0000000@@@@ < CODE DU 'SBT'. $EQU ESBT < ANNULATION DU CODE GENERE... < < DEFINITION DU CONTROLEUR '365' < ET DE SON ACCES (POUR COMPA- < TIBILITE AVEC #SIP DEFINITION CTTE#) : < XNCOOL: VAL 3 < NOMBRE DE COULEURS FONDAMENTALES... PAGE68: VAL 4 < NUMERO DE LA PAGE DE 'TMCDAJ' K CONTENANT < LES REGISTRES DE PROGRAMMATION DE < L'IMAGEUR MOYENNE DEFINITION : XLINV:: VAL MMOT < A CAUSE DE CERTAINES CONVENTIONS LOGIQUES < INVERSEES... XRCMD: MOT 'F800 < REGISTRE DE COMMANDE, DONT L'UNE D'ELLE < EST : XPVECT: VAL 8 < MISE EN FORMAT "PETITS VECTEURS"... XRASTR: VAL COSBT?XPVECT=FMASK(K=FCINST)XLINV(MOCD < COMMANDE A ENVOYER A 'RCMD' POUR TRACER < EN MODE RASTER (POINT A POINT). XRXH: MOT 'F810 < REGISTRE "HIGH-X", XRXL: MOT 'F812 < REGISTRE "LOW-X", XRYH: MOT 'F814 < REGISTRE "HIGH-Y", XRYL: MOT 'F816 < REGISTRE "LOW-Y". XRNIVO: MOT 'F820 < REGISTRE CONTENANT LE NIVEAU DE GRIS A < ATTRIBUER A UN POINT, ET CE ENTRE LES < LIMITES SUIVANTES : XXNOIR: VAL K < NIVEAU MINIMAL, XXN255: VAL 256-Z < NIVEAU MAXIMAL... XC512: VAL 512 < IL Y A 512 COLONNES, ET XL512: VAL 512 < 512 LIGNES... < < FIN DES CONSTANTES GENERALES : < XXXIMA: VAL 0 < AFIN D'ASSEMBLER ENSUITE LES CONSTANTES < STRICTEMENT "IMAGES"... NLS XWOR%9: VAL ENDIF IF XXXIMA-XXIMA0,XWOR%9,,XWOR%9 LST < < < D E F I N I T I O N D E S C O N S T A N T E S < S T R I C T E M E N T " I M A G E S " : < < YYYIM1:: VAL 1 < POUR YYYIMA=1, YYYIM2:: VAL 2 < POUR YYYIMA=2, YYYIM3:: VAL YYYIM1+YYYIM2 < POUR YYYIMA=3. < < DEFINITION DE L'IMAGE 512*512 : < XMIN:: VAL K < PREMIER 'X', XMAX:: VAL XC512-Z < DERNIER 'X'. YMIN:: VAL K < PREMIER 'Y', YMAX:: VAL XL512-Z < DERNIER 'Y'. XDECAL:: VAL XMAX+I=K < NOMBRE DE BITS D'UNE COORDONNEE 'X', YDECAL:: VAL YMAX+I=K < NOMBRE DE BITS D'UNE COORDONNEE 'Y'. NIV256:: VAL XXN255+Z < NOMBRE DE NIVEAUX DE GRIS. NBNIV:: VAL 1024 < NOMBRE DE NIVEAUX PAR COULEUR EN SORTIE < DES CONVERTISSEURS D/A. TPAGE:: VAL 64 < LONGUEUR EN 'K' D'UNE PAGE DE LA < MEMOIRE D'IMAGE. DPAGE:: VAL TPAGE < DEPLACEMENT DE PASSAGE D'UNE PAGE A < L'AUTRE. IF TPAGE-DPAGE,,XWOR%3, XWOR%1: VAL DPAGE*LK < 'DPAGE' EXPRIME EN MOTS, XWOR%2: VAL XWOR%1=K < ET SON LOG EN BASE 2... IF BIT>XWOR%2-XWOR%1,,XWOR%, IF ATTENTION : 'DPAGE' DOIT ETRE UNE PUISSANCE DE 2 !!! XWOR%: VAL ENDIF BPAGE:: VAL NBITMO-BIT-XWOR%2 < POUR GENERER LA TRANSLATION PAR UNE < INSTRUCTION 'SBT'... XWOR%3: VAL ENDIF < < DEFINITION DES REGISTRES < D'ACCES A L'IMAGEUR 68000 : < PAGER:: VAL PAGE68 < NUMERO DE LA PAGE DE LA 'CDAJ' CONTENANT < L'ENSEMBLE DES REGISTRES DE CONTROLE ; < AU NIVEAU 68000, LEURS ADRESSES SONT DU < TYPE '3FXXX, SOIT AU NIVEAU DU SOLAR < 'CFXXX, CE QUI REPRESENTE UNE ADRESSE < RELATIVE A LA 'CDAJ' DE '4FXXX ; D'OU < 'PAGER'=4 DONNE PAR LES 4 PREMIERS BITS < DE '4FXXX, SOIT '0100'... < < DEFINITION DU CONTROLEUR 365 : < RSTAT:: VAL XRCMD < REGISTRE D'ETAT (EN LECTURE) ET DE RCMD:: VAL RSTAT < COMMANDE (EN ECRITURE). RCTRL1:: VAL 'F802 < REGISTRE DE CONTROLE DE L'ECRITURE ET < DES INTERRUPTIONS. RCTRL2:: VAL 'F804 < REGISTRE D'ORIENTATION DES SYMBOLES ET < DE TYPE DES VECTEURS. RCSIZE:: VAL 'F806 < REGISTRE DE TAILLE DES CARACTERES. RDELTX:: VAL 'F80A < 'DELTAX', RDELTY:: VAL 'F80E < 'DELTAY'. RXH:: VAL XRXH < 'X' POIDS FORTS, RXL:: VAL XRXL < 'X' POIDS FAIBLES, RYH:: VAL XRYH < 'Y' POIDS FORTS, RYL:: VAL XRYL < 'Y' POIDS FAIBLES. < < DEFINITION DES COMMANDES A 'RCMD' : < BPVECT:: VAL XPVECT < MISE EN MODE PETITS VECTEURS. RASTER:: VAL COSBT?BPVECT=FMASK(K=FCINST)MOCD < DEFINITION DE LA FONCTION DE TRACE D'UN < POINT RASTER ; IL S'AGIT D'UN TRACE EN < MODE 'PETITS VECTEURS', TEL QUE : < DELTAX=DELTAY=DIRECTION=0... ERASEG:: VAL 'F8 < FONCTION DE REINITIALISATION DES DIFFE- < RENTS REGISTRES ET D'EFFACEMENT DE < L'ECRAN... ERASE:: VAL 'FB < FONCTION D'EFFACEMENT SEUL DE L'ECRAN... < < INITIALISATION DE 'CTRL1' ET 'CTRL2' : < XCTRL1:: VAL '03)MOCD < POUR ACTIVER LES INTERRUPTIONS. < (METTRE '0B POUR AVOIR L'ECRAN < CYCLIQUE) XCTRL2:: VAL '00)MOCD < PLUME... < < INHIBITION DE TOUTES LES 'LUT' : < ALLUT:: VAL BIT>XNCOOL-BIT < < ACCES A LA MEMOIRE D'IMAGE : < RSLUT:: VAL 'F880 < SELECTION D'UNE OU PLUSIEURS 'LUT' EN < PARALLELE (R-V-B). RLUT:: VAL 'FC00 < PREMIER MOT DES 'LUT'. RPLAN:: VAL 'F860 < AUTORISATION/INTERDICTION D'ECRITURE < DANS UN OU PLUSIEURS PLANS DE LA < MEMOIRE D'IMAGE EN PARALLELE. RNIVO:: VAL XRNIVO < NIVEAU DE GRIS DU POINT COURANT. < < FIN DES CONSTANTES : < NLS XWOR%9: VAL ENDIF IF XXXIMA-XXIMA2,XWOR%9,,XWOR%9 LST < < DONNEES DE GESTION ET < D'ACCES A LA 'CDAJ' : < INFINY:: VAL '7FFF IF INFINY-K,,,XWOR%, IF ATTENTION : A CAUSE DE L'AIGUILLAGE PAR 'SNIVOP' IF DANS 'LOADP'/'STORP', 'INFINY' DOIT ETRE POSITIF !!! XWOR%: VAL ENDIF NPC: WORD INFINY < NUMERO DE LA PAGE COURANTE (UNE VALEUR < INFINIE INDIQUE QUE CELLE-CI N'EXISTE < PAS). MCDAJ: WORD 0 < MOT COURANT LU/ECRIT DANS LA 'CDAJ', LMCDAJ:: VAL $-MCDAJ < SA LONGUEUR, AMCDAJ: WORD MCDAJ < ET SON ADRESSE... IF YYYIMA-YYYIM1,XWOR%8,,XWOR%8 ARNIVO: WORD RNIVO < ADRESSE RELATIVE EN 'CDAJ' DANS LA PAGE < 'PAGER' DU REGISTRE DE NIVEAU DE GRIS < DU POINT COURANT. ARXH: WORD RXH < IDEM POUR 'RXH', ARXL: WORD RXL < IDEM POUR 'RXL', ARYH: WORD RYH < IDEM POUR 'RYH', SNIVOP: WORD INFINY < VALEUR ANTERIEURE DE 'RNIVO', SXHP: WORD INFINY < VALEUR ANTERIEURE DE 'RXH', SXLP: WORD INFINY < VALEUR ANTERIEURE DE 'RXL', SYHP: WORD INFINY < VALEUR ANTERIEURE DE 'RYH', SYLP: WORD INFINY < VALEUR ANTERIEURE DE 'RYL'. ARYL: WORD RYL < IDEM POUR 'RYL', ARCMD: WORD RCMD < IDEM POUR 'RCMD', XWOR%8: VAL ENDIF ARPLAN: WORD RPLAN < IDEM POUR 'RPLAN'. CDAJ: ASCI "!CDAJ+" < CARTE DE POSITIONNEMENT SUR UNE PAGE PCDAJ: BYTE "X";KEOT < DE NUMERO 'X' DONNE (0<=X<='E). < < RELAIS VERS LES SOUS-PROGRAMMES : < AGCDA: WORD GCDA < POSITIONNEMENT SUR LA PAGE D'APPARTENAN- < CE D'UN POINT (X,Y) DONNE. AGPCDA: WORD GPCDA < POSITIONNEMENT SUR UNE PAGE DONNEE. ALOADP: WORD LOADP < ACCES A UN POINT, ASTORP: WORD STORP < RANGEMENT D'UN POINT. APWCDA: WORD PWCDA < EXECUTION DE 'WCDA'... APIS: WORD PIS < INVERSION ET MISE DANS 'MCDAJ'... < < FIN DES VARIABLES : < NLS XWOR%9: VAL ENDIF IF XXXIMA-XXIMA3,XWOR%9,,XWOR%9 LST PAGE < < < D E T E R M I N A T I O N D E L A P A G E < D ' A P P A R T E N A N C E D ' U N P O I N T : < < < FONCTION : < CE MODULE RECOIT LES COORDONNEES < (X,Y) D'UN POINT, ET EN DEDUIT LA < PAGE LA PLUS FAVORABLE DE LA 'CDAJ' < OU LE SITUER. < < < ARGUMENTS : < (X)=COORDONNEE 'X', < (Y)=COORDONNEE 'Y'. < < < RESULTAT : < (A)=ADRESSE DANS LA PAGE COURANTE DU POINT, < (NPC)=NUMERO DE LA PAGE COURANTE. < (Y) EST DETRUIT !!! < < GCDA: EQU $ LR X,A < (A)=COORDONNEE 'X', LR Y,B < (B)=COORDONNEE 'Y'. SLLS NBITMO-XDECAL < CADRAGE DE LA COORDONNEE 'X' A GAUCHE < DE 'A', XWOR%1: VAL LK=K XWOR%1: VAL DPAGE=XWOR%1 XWOR%1: VAL NBITMO-XWOR%1 < POUR CALER UNE ADRESSE COMPRISE ENTRE < 0 ET DPAGE*LK-I A GAUCHE... SCLD XDECAL+XWOR%1 < CONCATENATION DES COORDONNEES 'Y' ET 'X', SLLS XWOR%1 SLRD XWOR%1 < (A)=NUMERO DE PAGE, ET < (B)=ADRESSE MOT DANS LA PAGE. CP NPC < EST-ON DEJA DANS CETTE PAGE ??? JE GCDA3 < OUI, RIEN A FAIRE... < < RECHERCHE DE LA PAGE LA PLUS PROPICE : < IF TPAGE-DPAGE,,XWOR%3, LY NPC < (Y)=NUMERO DE LA PAGE COURANTE, ADRI I,Y < (Y)=(NPC)+I, CPR A,Y < EST-CE LA PAGE SUIVANTE QUI EST DEMANDEE? JE GCDA1 < OUI... ADRI I,Y < (Y)=(NPC)+I+I, CPR A,Y < EST-CE LA PAGE SUIVANTE DE LA SUIVANTE < QUI EST DEMANDEE ??? JNE GCDA2 < NON, MALHEUREUSEMENT, IL FAUDRA CHANGER < DE PAGE COURANTE... GCDA1: EQU $ ADRI -I,A < DANS LE CAS OU LE POINT ARGUMENT APPAR- < TIENT A LA PAGE SUIVANTE, OU LA SUIVANTE < DE LA SUIVANTE, ON VA LE REFERENCER PAR < RAPPORT A LA PAGE QUI LE PRECEDE, < SOIT (A)-I, ET CECI EST RENDU POSSIBLE < PAR LE FAIT QUE LES PAGES SE RECOUVRENT < (DE 32K, ALORS QU'ELLES FONT 64K...). SBT NBITMO+BPAGE < AUQUEL CAS, IL FAUT TRANSLATER L'ADRESSE < DU POINT (ENTRE 0 ET DPAGE*LK-I) DE < DPAGE*LK... GCDA2: EQU $ CP NPC < ALORS, EST-ON DEJA SUR LA PAGE A LAQUELLE < APPARTIENT CE POINT (OU DU MOINS CELLE < QUE L'ON CONSIDERE COMME LA PLUS FAVO- < RABLE...) ??? JE GCDA3 < OUI, RIEN A FAIRE... XWOR%3: VAL ENDIF < < < P O S I T I O N N E M E N T S U R U N E < P A G E D O N N E E D E L A ' C D A J ' : < < < FONCTION : < CE MODULE INTERNE A 'GCDA' < POUR DES RAISONS DE RAPIDITE, < PERMET DE SE PLACER SUR UNE < PAGE DE NUMERO DONNE. < < < A T T E N T I O N : < MEME SI (NPC)=(A), ON FAIT < UN APPEL AU 'CCI', ET CECI < POUR PERMETTRE DES RETOURS < TEMPORAIRES A LA 'CDAI' ; SI < LE TEST D'OPTIMISATION ETAIT < LAISSE, ON NE POURRAIT PLUS < REVENIR A 'CDAJ' APRES UN ACCES < A LA 'CDAI'... < < < ARGUMENTS : < (A)=NUMERO DE LA PAGE, < (B)=ADRESSE DANS LA PAGE. < < < RESULTAT : < (A)=(B)=ADRESSE DANS LA PAGE. < < GPCDA: EQU $ < < CHANGEMENT DE PAGE COURANTE : < STA NPC < D'ABORD ON LA MEMORISE... CPI BASE10 < PUIS ON LA CONVERTIT EN 'ASCI'... ORI K=FCBA(MOCD JL GCDA4 < IL S'AGIT D'UN CHIFFRE DE "0" A "9"... XWOR%1: VAL BASE10-I=FCBA(MOCD XWOR%2: VAL BASE10=FCBA(MOCD XWOR%3: VAL -XWOR%1+XWOR%2-I ADRI XWOR%3,A < IL S'AGIT D'UNE LETTRE DE "A" A "F"... GCDA4: EQU $ STBY PCDAJ < ON INSERE LE NUMERO DE PAGE DANS LA < CARTE "!CDAJ+X", LAD CDAJ GCDA6: EQU $ BSR ASPCCI < QUE L'ON ENVOIE AU 'CCI', AFIN DE SE < POSITIONNER SUR LA PAGE COURANTE... JE GCDA5 < OK... QUIT 1 < E R R E U R P R O G R A M M E ... JMP GCDA6 < ET ON RETENTE... GCDA5: EQU $ < < SORTIE DU MODULE : < GCDA3: EQU $ LR B,A < (A)=ADRESSE DU POINT COURANT (X,Y) DANS < LA PAGE COURANTE... RSR PAGE < < < ' W C D A ' : < < < FONCTION : < CE MODULE EXECUTE UN 'WCDA' < D'UN MOT (CONTENU DE 'MCDAJ'), < VERS LE MOT D'ADRESSE ARGUMENT < DANS LA 'CDAJ'... < < < ARGUMENT : < (A)=ADRESSE EN 'CDAJ' DU RECEPTEUR. < < PWCDA: EQU $ PSR X < SAUVEGARDE DE 'X'. LB AMCDAJ < (B)=ADRESSE DE L'EMETTEUR LOCAL, LXI LMCDAJ < (X)=NOMBRE DE MOTS A TRANSFERER, WCDA < TRANSFERT EN 'CDAJ'... XTEMPO:: VAL '20*0 < TEMPORISATION OBLIGATOIRE POUR EVITER < LES MEMOIRES INEXISTANTES SUR 'CDAJ'... IF XTEMPO-K,,XWOR%, LXI XTEMPO PWCDA1: EQU $ HALT < ON ATTEND QUELQUES MICRO-SECONDES... CPZR X < EST-CE FINI ??? JNE PWCDA1 < NON, ON ATTEND ENCORE... XWOR%: VAL ENDIF PLR X < RESTAURATIONS, RSR < ET SORTIE... PAGE < < < I N V E R S I O N E T M I S E D A N S ' M C D A J ' : < < < ARGUMENT : < (A)=VALEUR A INVERSER ET A METTRE < DANS 'MCDAJ'. < < < A T T E N T I O N : < DETRUIT LE REGISTRE ARGUMENT 'A' !!! < < PIS: EQU $ EORI MMOT < ON INVERSE BIT A BIT, STA MCDAJ < ET ON LE MET DANS 'CDAJ'... RSR < THAT'S ALL FOLK ?!???!?! PAGE < < < C H A R G E M E N T D ' U N P O I N T : < < < FONCTION : < CE MODULE RECUPERE LE NIVEAU < DE GRIS D'UN POINT DE COORDONNEES < DONNEES. < < < ARGUMENTS : < (X)=COORDONNEE 'X', < (Y)=COORDONNEE 'Y'. < < < RESULTAT : < (A)=NIVEAU DE GRIS DU POINT. < < LOADP: EQU $ PSR B,X,Y < SAUVEGARDES... IF YYYIMA-YYYIM1,XWOR%8,,XWOR%8 LAI XXNOIR-I < (A)=VALEUR STRICTEMENT NEGATIVE, ET < SURTOUT IMPOSSIBLE POUR UN NIVEAU... IF XXNOIR-I-K,XWOR%,, IF ATTENTION : CA VA MERDER !!! XWOR%: VAL ENDIF STA SNIVOP < ON FORCE 'SNIVOP' AVEC UNE VALEUR IMPOS- < SIBLE AFIN DE DISCRIMINER ULTERIEUREMENT < 'LOADP' DE 'STORP' ; A NOTER QUE L'ON < FAIT CELA POUR ECONOMISER L'ENCOMBRE- < MENT MEMOIRE !!! JMP LOADP9 < VERS LE TRONC COMMUN 'LOADP'/'STORP'... XWOR%8: VAL ENDIF IF YYYIMA-YYYIM2,XWOR%8,,XWOR%8 BSR AGCDA < SELECTION DE LA PAGE COURANTE, ET DONNE : < (A)=ADRESSE DU POINT DANS LA PAGE COU- < RANTE DE LA 'CDAJ', LB AMCDAJ < (B)=ADRESSE OU METTRE LE NIVEAU DE GRIS, LXI LMCDAJ < NOMBRE DE MOTS A TRANSFERER... RCDA LA MCDAJ < (A)=NIVEAU(X,Y). PLR B,X,Y < RESTAURATIONS... RSR < ET RETOUR... XWOR%8: VAL ENDIF IF YYYIMA-YYYIM3,XWOR%8,,XWOR%8 PLR B,X,Y RSR < ET RETOUR... XWOR%8: VAL ENDIF < < < R A N G E M E N T D ' U N P O I N T : < < < FONCTION : < CE MODULE RANGE LE NIVEAU < DE GRIS D'UN POINT DE COOR- < DONNEES DONNEES. < < < ARGUMENTS : < (A)=NIVEAU DE GRIS DU POINT, < (X)=COORDONNEE 'X', < (Y)=COORDONNEE 'Y'. < < STORP: EQU $ PSR A,B,X,Y < SAUVEGARDES... IF YYYIMA-YYYIM1,XWOR%8,,XWOR%8 CP SNIVOP < VALEUR INCHANGEE ??? JE STORP1 < OUI... JAL STORP6 < AFIN D'EVITER UNE DISCRIMINATION UL- < TERIEURE FARFELUE ENTRE 'STORP' ET < 'LOADP'... IF XXNOIR-I,XWOR%,, IF ATTENTION : L'AIGUILLAGE PRECEDENT EST IDIOT !!! XWOR%: VAL ENDIF STA SNIVOP < NON... STORP6: EQU $ STA MCDAJ < PREPARATION DU NIVEAU DE GRIS, LA ARNIVO < (A)=ADRESSE DU REGISTRE DE NIVEAU DE < GRIS, BSR APWCDA < ENVOI DU NIVEAU DE GRIS DU POINT. STORP1: EQU $ < < TRONC COMMUN 'LOADP'/'STORP' : < LOADP9: EQU $ LR X,A < (X)=COORDONNEE 'X' : SLRS MOCG=K CP SXHP < VALEUR INCHANGEE ??? JE STORP2 < OUI... STA SXHP < NON... BSR APIS < PREPARATION DES POIDS FORTS DE 'X', LA ARXH < (A)=ADRESSE DU REGISTRE 'RXH', BSR APWCDA < ENVOI DES POIDS FORTS DE 'X'. STORP2: EQU $ LR X,A ANDI MOCD CP SXLP < VALEUR INCHANGEE ??? JE STORP3 < OUI... STA SXLP < NON... BSR APIS < PREPARATION DES POIDS FAIBLES DE 'X', LA ARXL < (A)=ADRESSE DU REGISTRE 'RXL', BSR APWCDA < ENVOI DES POIDS FAIBLES DE 'X'. STORP3: EQU $ LR Y,A < (Y)=COORDONNEE 'Y' : SLRS MOCG=K CP SYHP < VALEUR INCHANGEE ??? JE STORP4 < OUI... STA SYHP < NON... BSR APIS < PREPARATION DES POIDS FORTS DE 'Y', LA ARYH < (A)=ADRESSE DU REGISTRE 'RYH', BSR APWCDA < ENVOI DES POIDS FORTS DE 'Y'. STORP4: EQU $ LR Y,A ANDI MOCD CP SYLP < VALEUR INCHANGEE ??? JE STORP5 < OUI... STA SYLP < NON... BSR APIS < PREPARATION DES POIDS FAIBLES DE 'Y', LA ARYL < (A)=ADRESSE DU REGISTRE 'RYL', BSR APWCDA < ENVOI DES POIDS FAIBLES DE 'Y'. STORP5: EQU $ IF XXNOIR-I,XWOR%,, IF ATTENTION : L'AIGUILLAGE SUIVANT VA MERDER !!! XWOR%: VAL ENDIF CPZ SNIVOP < ALORS 'LOADP' OU 'STORP' ??? JL LOADP8 < 'LOADP'... < < PARTIE SPECIFIQUE 'STORP' : < STORPR: LAI RASTER STA MCDAJ < POUR METTRE EN MODE 'RASTER', LA ARCMD < (A)=ADRESSE DU REGISTRE DE COMMANDE, BSR APWCDA < TRACE DU POINT (X,Y) EN RASTER, C'EST- < A DIRE EN PETITS VECTEURS TELS QUE < DELTAX=DELTAY=0... XWOR%8: VAL ENDIF IF YYYIMA-YYYIM2,XWOR%8,,XWOR%8 STA MCDAJ < MISE EN PLACE DU NIVEAU DE GRIS, BSR AGCDA < SELECTION DE LA PAGE COURANTE, ET DONNE : < (A)=ADRESSE DU POINT DANS LA PAGE < COURANTE DE LA 'CDAJ', LB AMCDAJ < (B)=ADRESSE OU PRENDRE LE NIVEAU DE GRIS, LXI LMCDAJ < (X)=NOMBRE DE MOTS A TRANSFERER... WCDA < TRACE DU POINT (X,Y). XWOR%8: VAL ENDIF PLR A,B,X,Y < RESTAURATIONS... RSR < ET RETOUR... IF YYYIMA-YYYIM1,XWOR%8,,XWOR%8 < < PARTIE SPECIFIQUE 'LOADP' : < LOADP8: EQU $ <******************************************************************************* LAI XXNOIR < P R O V I S O I R E ... JMP LOADP7 < P R O V I S O I R E ... <******************************************************************************* LA ARNIVO < (A)=ADRESSE DU REGISTRE DE NIVEAU DE < GRIS, LB AMCDAJ < (B)=ADRESSE DU RECEPTEUR LOCAL, LXI LMCDAJ < (X)=NOMBRE DE MOTS A TRANSFERER, RCDA < ACCES A LA 'CDAJ'... IF XTEMPO-K,,XWOR%, LXI XTEMPO < ATTENTION, ON DETRUIT 'X', MAIS IL N'EST < PLUS UTILISE... PRCDA1: EQU $ HALT < ET ON ATTEND QUELQUES MICRO-SECONDES... CPZR X < EST-CE FINI ??? JNE PRCDA1 < NON, ON ATTEND ENCORE... XWOR%: VAL ENDIF LA MCDAJ < (A)=NIVEAU(X,Y), STA SNIVOP < POUR OPTIMISER LES 'STORP' SUIVANTS... LOADP7: EQU $ PLR B,X,Y RSR < ET RETOUR... XWOR%8: VAL ENDIF < < FIN DES MODULES SPECIFIQUES : < NLS XWOR%9: VAL ENDIF IF XXXIMA-XXIMA4,XWOR%9,,XWOR%9 LST < < ACCES AU 'CCI' INTERPRETATIF : < DEMCCI: BYTE K;FCCI < DEMANDE D'ACCES, WORD K < ADRESSE-OCTET DE LA CARTE, WORD LCCI < ET SA LONGUEUR. ASPCCI: WORD SPCCI < SOUS-PROGRAMME D'ACCES AU 'CCI' INTER- < PRETATIF. NLS XWOR%9: VAL ENDIF IF XXXIMA-XXIMA5,XWOR%9,,XWOR%9 LST PAGE < < < A C C E S A U ' C C I ' I N T E R P R E T A T I F : < < < ARGUMENT : < (A)=ADRESSE-MOT DE LA CARTE A ENVOYER. < < SPCCI: EQU $ PSR A,X < SAUVEGARDES. SLLS NOCMO=K < CONVERSION EN OCTETS, STA DEMCCI+AMESC < ET MISE DANS LA DEMANDE, LAD DEMCCI SVC < QUE L'ON ENVOIE AU 'CCI'... PLR A,X < RESTAURATIONS... RSR < ET RETOUR AVEC LES INDICATEURS POSI- < TIONNES SUR 'CPZR X'. NLS XWOR%9: VAL ENDIF LST