NMPROC: VAL "SD" < NOM DU PROCESSEUR. IDP "SD - RELEASE 02.00 - 10/12/80" IDP "GENERATEUR DE FILMS VIDEOS" IDP "JOHN F. COLONNA" XXXOUI:: VAL 1 XXXNON:: VAL 0 XXSGDK:: VAL XXXNON < L'OPTION 'SGN' <--> 'DKU' DISPARAIT, CAR < EN EFFET ELLE N'A PLUS DE RAISONS D'ETRE < PUISQUE 'CMS5' LE GERE... ENDIF:: VAL 0 EOT #SIP DEFINITION CMS5# EOT #SIP DEF PROCESSEUR# PROG ENTRY: WORD SCENE < @ENTRY POINT DU PROCESSEUR. WORD 0 PSCENE: EQU $ < P='12 !!! LRP L BR -2,L < ENTREE DANS LE PROCESSEUR. PAGE EOT #SIP DEFINITION ITEM# ITEM1: EQU ZERO+PILE-LTNI < @ITEM1. ITEM2: EQU ITEM1-LTNI < @ITEM2. EOT #SIP IMAGE 256# IMAG: EQU ZERO+PILE+5 < L'IMAGE VIDEO EST IMPLANTEE AU < BOUT DES 4 PREMIERS K-MOTS. NOM: EQU ITEM1 < LE NOM DE L'IMAGE VIDEO EST MIS < DANS L'EN-TETE DE L'ITEM1. EOT: EQU IMAG-2 < CONTIENT UN EOT MIS PAR 'TV'. LONG: EQU IMAG-1 < CONTIENT UN NBRE NEGATIF S'IL S' < AGIT BIEN D'UNE IMAGE VIDEO. < (-3 , -2 , -1) < A T T E N T I O N : EOT ET < LONG SONT EN RECOUVREMENT AVEC < LA PILE DE SODOME !!!!! < (DE MEME QUE LE 1ER MOT DE IMAG) NCOOL: VAL 3 < POUR IMAGE DE TYPE TW. IF XXSGDK-XXXOUI,XOPT1,,XOPT1 < < T A B L E D ' O C C U P A T I O N ' T O ' P O U R I M A G E S < < D I T E S D E T Y P E ' S D ' C ' E S T - A - D I R E : < < S G N / D K U. < < CES IMAGES SONT COMPOSEES DE 2 PARTIES: < 1- NOM ET VALEUR VVVV DANS LE SGN, < 2- IMAGE PROPREMENT DITE DE 12 K MOTS SUR DKU. < < NOTER QUE 'VVVV' EST L'ADRESSE SECTEUR SUR DKU DES 12K MOTS EN QUESTION < < C'EST SD LUI-MEME QUI GERE CES IMAGES ET NOTAMMENT QUI TIENT A JOUR < EN 0000 DE DKU UNE TABLE D'OCCUPATION DONT CHAQUE BIT INDIQUE < L'EXISTENCE (BIT A 0) OU LA NON-EXISTENCE (BIT A 1) D'UNE IMAGE < DE RANG N SUR DKU, N ETANT LE RANG DU BIT DANS LA TABLE. < NSDKU: VAL 'FA00 < NOMBRE DE Q-SECTEURS SUR DKU. AIDKU: VAL '0800 < ADRESSE INITIALE DKU (1ER SECTEUR < UTILISABLE). NSDKU: VAL NSDKU-AIDKU < D'OU LE VRAI NB DE SECTEURS DKU. XWORK: VAL -1 < VOIR PB : 'NSDKU' NEGATIF ! NSDKU2: VAL NSDKU>XWORK < NOMBRE/2 DE Q-SECTEURS SUR DKU. NSPI: VAL 32+1 < NOMBRE DE SECTEURS PAR IMAGE < (+1 POUR OPTIMISER LES ACCES). NIDKU2: VAL NSDKU2/NSPI IF NSPI*NIDKU2-NSDKU2,XWOR%,, NIDKU2: VAL NIDKU2-1 XWOR%: VAL 0 XWORK: VAL -XWORK NIDKU: VAL NIDKU2>XWORK < NOMBRE D'IMAGES SUR DKU. LTO: VAL NIDKU+15/16 < LONGUEUR DE TO EN NOMBRE DE MOTS. IF LTO-128,XWOR%,XWOR%, IF A T T E N T I O N ! ! ! XWOR%: VAL 0 TO: EQU IMAG < TO EST EN RECOUVREMENT AVEC LE DEBUT < DE L'IMAGE. XOPT1: VAL ENDIF < < 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, FGR:: VAL 0 < FONCTION DE LECTURE, FGRE:: VAL 1 < FONCTION DE LECTURE AVEC ECHO, FGW:: VAL 2 < FONCTION D'ECRITURE. NVPCU:: VAL '8B < POUR ACCEDER AU 'CU3'... < < 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 < COMPLEMENT A 2, MODCI:: VAL '0040 < COMPLEMENT INVERSE. CUPROM:: VAL '1F00 < NUMERO DE LA FONCTION DE TRANSFERT 'IN'. PAGE < < < P I L E D E R E C U R S I V I T E : < < < FORMAT : < LA PILE 'PIR' EST FAITE D'ENTREE DOUBLE- < MOTS ASSURANT LA RECURSIVITE DU LANGAGE < DE DESCRIPTION DES SCENARI. < < IR: VAL 0 < MOT0 : CAUSE DE L'EMPILEMENT : < BIT1=1 : PUSH POUR REPETITIONS , < BIT2=1 : PUSH POUR APPEL PROG., < BIT3=1 : PUSH POUR SAUT PROG. CODREP: VAL '40 < PUSH POUR REPETITIONS. BITREP: VAL 1 < BIT DE REPETITIONS. CODPRO: VAL '20 < PUSH POUR APPEL PROGRAMME. BITPRO: VAL 2 < BIT APPEL PROGRAMME. < A T T E N T I O N : BITPRO < UTILISE AVEC BITDEF SIGINFIE < QU'ON APPELLE UN PROGRAMME < AVEC CHGT D'ITEM COURANT. CODDEF: VAL '10 < PUSH POUR DEFINITION PROGRAMME. BITDEF: VAL 3 < BIT DE SAUT DEFINITION PROG. CDCP: VAL 1 < MOT1 : COMPTE DES 'DO' , ET < LE COMPTE ALGEBRIQUE DES < PARENTHESES. CD: VAL 2*CDCP+0 < OCTET0(MOT1)=NBRE DE REPETITIONS < RESTANT A FAIRE (INDEX DE TYPE < OCTET) , CP: VAL 2*CDCP+1 < OCTET1(MOT1)=COMPTE ALGEBRIQUE < DES PARENTHESES RENCONTREES < SOUS CE NIVEAU : < '(' : +1 , < ')' : -1. LEPR: VAL 2 < NBRE DE MOTS OCCUPES PAR UNE < ENTREE DE LA PILE PIR. LPR: VAL 8 < NBRE D'ENTREES DE PIR. PAGE < < < L O C A L : < < LOCAL LOC: EQU $ < < DEMANDES A CMS4 : < DEMSGN: WORD '0402 < DEMANDE D'OVERLAY SGN. WORD BRANCH-ZERO*2 WORD ZERO-BRANCH+PILE-LTNI-LTNI*2 WORD -1 DELSGN: WORD '0302 < DEMANDE DELETE SGN LORS DES < APPELS DE 'TI'. WORD BRANCH-ZERO*2 WORD ZERO-BRANCH+PILE-LTNI-LTNI*2 WORD -1 DEMBIB: WORD '0502 < CHARGEMENT DES BIBLIOTHEQUES. WORD 0 < @OCTET ITEM. WORD 2*LTNI WORD -1 TYPIM: WORD 0 < TYPE DE L'IMAGE A CHARGER: < = 0 : IMAGE 4K MOTS, < = 1 : IMAGE 12K MOTS SGN, IF XXSGDK-XXXOUI,XOPT1,,XOPT1 < =-1 : IMAGE 12K MOTS DE TYPE SD (SGN/DKU) XOPT1: VAL ENDIF TYPOV: EQU TYPIM < TYPE D'OVERLAY < = 0 : CHARGER DANS L'AUTRE ITEM; < = 1 : CHARGER DANS L'ITEM COURANT ! IDPM: DZS 1 < OPERATION DEMANDEE SUR IMAGE DE TYPE SD: < = 0 : DISPLAY, < = 1 : CREATION, < =-1 : DELETE. < ATTENTION !!! < < R E C O U V R E M E N T ' T Y P I M ' / ' T Y P O V ' ! ! ! < DEMTV: WORD '0502 < CHARGEMENTS DES IMAGES VIDEOS. WORD NOM-ZERO*2 WORD IMAG-NOM+LIMAG*2 WORD EOT-NOM*2 < DEPLACEMENT D'ACCES A LA VALEUR. DEMTV1: WORD '0502 < ACCES IMAGE 12K MOTS. WORD NOM-ZERO*2 LIMAGW: VAL LIMAG*NCOOL < LONGUEUR IMAGE TYPE TW. WORD IMAG-NOM+LIMAGW*2 WORD IMAG-NOM*2 DEMOUT: WORD '0202 < DEMANDE ECRITURE SU OUT. WORD 0 < @OCTET DU MESSAGE. WORD 0 < LONGUEUR OCTET DU MESSAGE. COPY: WORD '0B07 < DEMANDE DE MAKE-COPY. BYTE '1B;'17;'8D;'04 < ESC,CTRL-W,R/C,EOT. DEM16K: WORD '0004 < DEMANDE DE 16K MOTS. RELMEM: WORD '0004 < RETOUR A 4K MOTS. WORD '8000 WORD '2000 ADEMTV: WORD DEMTV < VALEUR A PRIORI DE L'ADRESSE DE LA < DEMANDE DE CHARGEMENT IMAGE. SLEEP: WORD '0005 < DEMANDE DE TEMPORISATION DE < DUREE VARIABLE. DEMCCI: WORD '0001 < RETOUR AU CCI. SAVE: WORD 0 < ZONE DE SAUVEGARDE TEMPORIARE. < POUR ACCES AUX "ROBINETS" CAMERA SOLAR. BUFCU: DZS MOT2+1 < POUR ENVOYER LES ORDRES 'CU3'. DEMCU2: BYTE NVPCU;FGW < ACCES AU MOT2 DE CU3. WORD BUFCU-ZERO*2 WORD MOT2+1*2 < < RELAIS DIVERS : < STDKU: WORD '8A01 < STABILISATION IMAGE, WORD IMAG-ZERO*2 WORD LIMAG*2 VTVCTL: WORD 0 < INDICATEURS DE COULEUR... IF XXSGDK-XXXOUI,XOPT1,,XOPT1 RWDKU: WORD '8A04 < ACCES DKU DIRECTS. WORD 0 < ADRESSE CDAI IMPLICITE. WORD '6000 < LONGUEUR IMPLICITE (12 K MOTS). WORD 0 < ADRESSE SECTEUR IMPLICITE. INCR: WORD '0020 < INCREMENT AUTOMATIQUE IMPLICITE. XOPT1: VAL ENDIF DMDIFF: WORD '8A01 < DIFFUSION IMAGE 12K. DZS 1 < ADRESSE MEMOIRE A ECHANGER. WORD LIMAG*2 < LONGUEUR ECHANGE. DZS 1 < SENS ECHANGE ET NO DE COMPOSANTE. IF XXSGDK-XXXOUI,XOPT1,,XOPT1 DEMDKS: WORD '0C00 < DEMANDE DISQUE SCRATCH. WORD TO-ZERO*2 WORD LTO*2 WORD 0 DEMDKU: WORD '8A00 < DEMANDE DKU (TABLE D'OCCUPATION). WORD TO-ZERO*2 WORD LTO*2 WORD AIDKU DSGNSD: WORD '0002 < DEMANDE SGN POUR IMAGES SGN/DKU. WORD NOM-ZERO*2 WORD IMAG-NOM*2 WORD IMAG-NOM*2-2 DMRDKU: WORD '8A00 < READ IMAGE 12K SUR DKU. WORD IMAG-ZERO*2 WORD LIMAG*NCOOL*2 DZS 1 DMWDKU: WORD '8A02 < WRITE IMAGE 12K SUR DKU. WORD IMAG-ZERO*2 WORD LIMAG*NCOOL*2 DZS 1 < VALIDATION DEMANDE D'INITIALISATION DE TO. REP: BYTE 0;"O";"K";"?" DEMOK: WORD '0202 < ENVOI MESSAGE "OK?". WORD REP-ZERO*2+1 WORD 3 DEMREP: WORD '0200 < DEMANDE REPONSE. WORD REP-ZERO*2 WORD 1 XOPT1: VAL ENDIF AGOGE: WORD GOGE < RELAI VERS LE MODULE D'APPEL GE. AGOGER: WORD GOGER < RETOUR A L'APPELANT AU CAS < OU UN ALT-MODE EST FRAPPE. AGOCCI: WORD GOCCI < RETOUR AU CCI. ALOOPB: WORD LOOPB < RETOUR DE L'INTERPRETEUR. ALOOP: WORD LOOP < BOUCLE DE L'INTERPRETEUR. XOFF: WORD E962 < INTERPRETEUR SI CTRL-X-OFF. ASVC: WORD RSVC < EXECUTION D'UN SVC. AOVL: WORD OVL < CHARGEMENT DES OVERLAYS. AGTK: WORD GTK < ACCES AUN CARACTERE A CODER. ACHGTI: WORD CHGTI < CHANGEMENT D'ITEM COURANT. AGTCAR: WORD GETCAR < ACCES A UN CARACTERE POUR CAODER. IF XXSGDK-XXXOUI,XOPT1,,XOPT1 AHEX: WORD HEX < CONVERSION ASCI --> HEXA. XOPT1: VAL ENDIF APILE: WORD PILE-1 < POUR INITIALISER K. AI1: WORD ZERO+PILE-LTNI+LTN,X < RELAI VERS L'ITEM1 A PRIORI. AIC: WORD ZERO+PILE-LTNI+LTN,X < RELAI VERS L'ITEM COURANT. AIR: WORD ZERO+PILE-LTNI+LTN,X < RELAI VERS L'ITEM DANS LEQUEL < ON FAIT LA RECHERCHE D'UN < PROGRAMME. X1: VAL LEPR*LPR-LEPR < NBRE DE MOTS OCCUPES PAR LA < PILE DE RECURSIVITE-LEPR. BPR: WORD PIR < BASE DE LA PILE DE RECURISIVITE. TPR: WORD PIR+X1 < TOP DE LA PILE DE RECURSIVITE. APRC: WORD PIR,X < ENTREE COURANTE DE LA PILE < DE RECURSIVITE. ASCENE: WORD SCENE < @POINT D'ENTREE PRINCIPAL 'SC'. ARET: WORD RETURN < @POINT D'ENTREE UTILISE LORS < DES RETOURS A 'SC' FAITS PAR 'TI' AENT: WORD ENTRY < @ DE L'@ DU POINT D'ENTREE < DU PROCESSEUR 'SC'. IF XXSGDK-XXXOUI,XOPT1,,XOPT1 ARTO: WORD RTO < READ TABLE D'OCCUPATION. AWTO: WORD WTO < WRITE TABLE D'OCCUPATION. AWDK: WORD WDK < WRITE SUR DK SCRATH/DKU. ASGNSD: WORD SGNSD < ACCES SGN POUR IMAGE SGN/DKU. XOPT1: VAL ENDIF < < CONSTANTES DIVERSES : < IF XXSGDK-XXXOUI,XOPT1,,XOPT1 CNSPI: WORD NSPI < NOMBRE DE Q-SECTEURS PAR IMAGE DKU. CNIDKU: WORD NIDKU < NOMBRE D'IMAGES SUR DKU. CAPSU: WORD AIDKU+1 < ADRESSE DU 1ER SECTEUR UTILISABLE < POUR LE STOCKAGE DES IMAGES SUR DKU < (+1 PARCE QU'IL EN FAUT UN POUR LA < TABLE D'OCCUPATION DKU). XOPT1: VAL ENDIF C100: WORD '100 < CONSTANTE D'INTERPRETATION. CFFF: WORD '0FFF < RAZ DES BITS 0,1,2,3. RETSVC: WORD 0 < CONDITIONS DE RETOUR D'UN SVC. CTTE: WORD 1 ARGF: WORD -1 < INDEX DE LA 1ERE PRIMITIVE < DE L'ARGUMENT FORMEL COURANT. IEG: WORD 0 < INDEX COURANT DU SCENARIO ; < IL DONNE L'INSTRUCTION COURANTE. NOMARG: WORD -1 < SAUVEGARDE DE L'INDEX INITIAL < D'UN NOM D'IMAGE, LORSQUE CELUI- < CI EXISTE (POUR LES APPELS 'TI'). ACCEB: WORD LTNI < CONSTANTE DE CHANGEMENT D'ITEM < COURANT : < ACCEB>0 : ITEM COURANT=ITEM1 , < ACCEB<0 : ITEM COURANT=ITEM2. ALTNI2: WORD 2*LTNI < LONGUEUR MAX TOTALE D'UN < ITEM (EN-TETE+CORPS). NCP: WORD NBCAR*NBLIG < NBRE DE CARACTERES D'UN ITEM. AGON1: WORD N1 < NOEUD D'ACCES A LA PRIMITIVE < SUIVANTE LORS DE L'ANALYSE < SYNTAXIQUE DU LANGAGE. AGON22: WORD N22 < NOEUD DE BRANCHEMENT LORS < DE LA RENCONTRE DE CARACTERES < HORS-LA PAGE (GET CARACTER). F3: WORD 0 < VARIABLE DE CODAGE DES <NOM>. WHOCAL: WORD 0 < CONTIENT LE MODCAL EN COURS < LORS DE L'APPEL DE SC. NCALL: WORD $+1,X;"GE";"EI" ANPROC: WORD NPROC,X < ACCES AUX OVERLAYS : NPROC: EQU $ < LISTE DES OVERLAYS : NSC: WORD "SC" < NOM DU PROCESSEUR 'SC'. NTI: WORD "TI" < NOM DE L'OVERLAY 'TI'. NTW: WORD " M" < NOM DE L'OVERLAY 'TW'. XXTW:: VAL $-1-NPROC NTX: WORD " N" < NOM DE L'OVERLAY 'TX'. XXTX:: VAL $-1-NPROC NTY: WORD " O" < NOM DE L'OVERLAY 'TY'. XXTY:: VAL $-1-NPROC NTZ: WORD " P" < NOM DE L'OVERLAY 'TZ'. XXTZ:: VAL $-1-NPROC NTC: WORD " Q" < NOM DE L'OVERLAY 'TC'. XXTC:: VAL $-1-NPROC NTD: WORD " G" < NOM DE L'OVERLAY 'TD'. XXTD:: VAL $-1-NPROC NT3: WORD " 3" < NOM DE L'OVERLAY 'T3'. XXT3:: VAL $-1-NPROC NT2: WORD " 2" < NOM DE L'OVERLAY 'T2'. XXT2:: VAL $-1-NPROC NT4: WORD " 1" < NOM DE L'OVERLAY 'T4'. XXT4:: VAL $-1-NPROC NT5: WORD " H" < NOM DE L'OVERLAY 'T5'. XXT5:: VAL $-1-NPROC NOV: DZS 1 < NOM DE L'OVERLAY A CHARGER. KIN: WORD -1 < COMPTEUR DES ENTREES DANS 'SC' : < -1 : 1ERE ENTREE , < 0 : LORS D'UN ALT-MODE. < < CONSTANTES VIDEOS : < I1: WORD ITEM1 < @ITEM1. XI1: WORD ITEM1,X < RELAI D'ACCES A L'EN-TETE ITEM1. ASI1: WORD SI1 < @ZONE DE SAVE EN-TETE ITEM1. SI1: DZS LNOM+2 < ZONE DE SAVE EN-TETE ITEM1. ALONG: WORD LONG < RELAI D'ACCES A LA VALIDATION < DE L'IMAGE VIDEO. IF XXSGDK-XXXOUI,XOPT1,,XOPT1 ARA1TO: WORD TO-1,X < RELAI DE MISE A 'FFFF DE TO. AXTO: WORD TO,X < RELAI D'ACCES A TO. XOPT1: VAL ENDIF < < DIVERS : < AIMAG: WORD IMAG < @IMAGE VIDEO. OENTRY: WORD 0 < 0 : FAIRE LE JEU DE LA VIE. < #0 : APPEL DES OVERLAYS EN < BIBLIOTHEQUES ($). STACK: DZS 10 < PILE DE GENERATIUON DES SOCIETES. DZS 3 < ET BIN OUI CA SUFFISAIT PAS ..!!? PROG PAGE PAGE < < < E X E C U T I O N D ' U N S V C : < < < ARGUMENT : < A=@DEMANDE A CMS4. < < < RESULTATS : < RETSVC=CONDITION S DE RETOUR DE CMS4 , < INDICATEURS POSITIONNES. < < RSVC: EQU $ PSR X SVC 0 < APPEL DE CMS4. STX RETSVC < RENVOI DES CONDITIONS DE < RETOUR DE CMS4. PLR X RSR PAGE < < < R E T O U R A U C C I : < < GOCCI: EQU $ E10: EQU $ LAD DEMCCI E11: EQU $ BSR ASVC < EXECUTION D'UN SVC. RSR < RETOUR LORS D'UN !GO. PAGE < < < R E T O U R E N E R R E U R : < < < CONDITIONS DE RETOUR : < CDRET=0 : RETOUR OK , < CDRET=2 : RETOUR SUITE A UN ALT-MODE. < (OU BIEN CTRL-X-OFF LORS D'1N FLOPPY) < < GOGER: EQU $ LAI 2 < A=CONDITION D'ERREUR (2). JMP GOBAC < VERS LE RETOUR ... < < < R E T O U R G E : < < GOGE: EQU $ LAI "I" < TYPE 'FILM DIGITAL'. STBY SI1+IINDIC < L'ITEM COURANT RECOIT LE TYPE < FILM DIGITAL LORSQUE L'ON < SORT DE SC SANS ERREUR ... < (CECI EST FAIT DANS LA ZONE DE < SAUVEGARDE DE L'EN-TETE DE < L'ITEM , AVANT QUE CELLE-CI NE < SOIT RESTAUREE !!!) LAI 0 < A=CONDITION DE RETOUR OK (0). GOBAC: EQU $ STA CDRET,W < RANGEMENT DES CONDITIONS < DE RETOUR DE SC. STZ MODCAL,W < RAZ DU MODCAL A PRIORI. < < RESTAURATION DE L'EN-TETE DE L'ITEM1 : < (AU CAS PAR EXEMPLE D'UN ALT-MODE MAL < PLACE PENDANT LE CHARGEMENT D'1NE < IMAGE VIDEO...) < LA ASI1 LB I1 LXI LNOM+1 MOVE < RESTAURATION DE (I1) PAR (SI1). < < RETOUR A 4K MOTS : < LAD RELMEM SVC 0 < DEMANDE DE RETOUR A 4K MOTS. < < DELETE A PRIORI DE LA BRANCHE DE SAUVEGARDE : < WORD '1E45 < RENVOIE : A=<IDESC>. ADRI '30,A < CONVERSION ASCI DE L'<IDESC>. STBY 2,W < ET MISE EN TETE DE LA BRANCHE. LAD DELSGN SVC 0 < DELETE DE LA BRANCHE DE SAU- < VEGARDE ; LE RETOUR EST < INDIFFERENT !!! LAI '20 STBY 2,W < SUPPRESION DE L'IDESC>. < < RETOUR A L'APPELANT (GE/EI) : < LX WHOCAL < X=NUMERO DE LA BRANCHE DE < RETOUR DE SC. LA &NCALL < RECUPERATION DU NOM DE LA < BRANCHE DE RETOUR DE SC. STA 0,W < LE NOM DE 'GE' EST MIS EN TETE < DE LA BRANCHE D'OVERLAY. LAI '06 < NVP DE 6OAD SOUS :SYS. STBY DEMSGN < MISE DE DEMSGN EN MODE DE < LOAD SOUS :SYS. LAD DEMSGN BSR AOVL < TENTATIVE DE CHARGEMENT DE 'GE'. JMP E10 < ET VERS LE CCI SI ERREUR. < < < E R R E U R : < < ERREUR: EQU GOCCI < < < D E M A N D E D E P A U S E : < < < ARGUMENT : < SAVE EST LE CODEM DE LA DEMANDE 'SLEEP'. < < PAUSE: EQU $ LAD SLEEP BSR ASVC < MISE EN ATTENTE. RSR < ET C'EST TOUT ... PAGE < < < A P P E L E T R E T O U R D E ' T I ' O U < < D E ' T W ' O U D E ' T X ' O U D E ' T Y '. < < < FONCTION : < CE MODULE ASSURE L'APPEL ET LE < RETOUR DU PROCESSEUR 'TI' ; ON PEUT < AINSI , DANS 'SC' EFFECTUER TOUTES < LES OPERATION S SUR IMAGE DE 'TV'. < DANS CE CAS ON SAUVEGARDE POUR < CHAQUE UTILISATEUR UNE COPIE DE < 'SC' (A CAUSE DES PPILES ET DES < CONSTANTES DE TRAVAIL) , DONT LE < NOM EST : < 'SC<SPACE><SPACE><IDESC><SPACE>'. < < < A P P E L ' T I ' : < < TRANSMISSION DES ARGUMENTS : < MODCAL=INDEX CARACTERE COURANT , < BIT0=0 : L'APPEL DE SC A EU LIEU PAR GE , < BIT0=1 : L'APPEL DE SC A EU LIEU PAR EI , < CDRET=RELAI VERS L'ITEM COURANT. < CALLTI: EQU $ LA NTI < NOM DE L'OVERLAY = TI. STA NOV CALLOV: EQU $ WORD '1E45 < RENVOIE : A=<IDESC>. ADRI '30,A < CONVERSION ASCI DE L'IDESC. STBY 2,W < MISE DE L'IDESC EN TETE < DE LA BRANCHE D'OVERLAY. < LE NOM DE LA BRANCHE EST DONC : < 'SC<SPACE><SPACE><IDESC><SPACE>'. < < A T T E N T I O N : < ON FAIT CDRET#0 AVANT DE CHANGER < LA VALEUR DE L'ENTRY POINT DE SC ; < EN EFFET , TI RENVOIE UN CDRET=0 ; < AINSI SI UN ALT-MODE EST FRAPPE PENDANT < CALLTI , ON FERA UN ENTRY VERS 'RETURN' < QUE L'3N POURRA DISTINGUER D'UN RETOUR < DE TI PAR LA VALEUR DE CDRET !!! < LA AIC STA CDRET,W < TRANSMISSION DU RELAI VERS < L'ITEM COURANT PAR CDRET. LA ARET STA &AENT < MISE EN PLACE DU POINT D'ENTREE < SECONDIARE A UTILISER LORS < LORS DU RETOUR DE 'TI'. CALL1: EQU $ LAD DELSGN SVC 0 < DELETE PRELIMINAIRE DE LA < BRANCHE DE SAUVEGADRE. STZ OENTRY < SUPPRESSION A PRIORI DES SOUS- < PROGRAMMES EN OVERLAY ; EN EFFET < IL Y A DE GRANDES CHANCES QUE < 'TI' ECRASE L'ITEM1 !!! LAI '04 STBY DEMSGN < DEMSGN EST MISE EN MODE STORE. LAD DEMSGN SVC 0 < SAUVEGARDE DE L'OVERLAY COU- < RANT DE SC , SOUS L'IDESC ... LA WHOCAL < RECUPERATION DE LA NATURE DE < L'APPELANT DE SC. SCRS 1 < ON MET L'APPELANT DE SC EN BIT0 < DU REGISTRE A. OR IEG < ET ON CONCATENE L'INDEX COURANT. STA MODCAL,W < TRANSMISSION DE L'INDEX < CARACTERE COURANT A 'TI'. LA NOV < NOM DE L'OVERLAY. STA 0,W < MISE EN PLACE NOM DE L'OVERLAY. LAI '20 STBY 2,W < SUPPRESSION DE L'IDESC. LAI '06 < DEMSGN EST MISE EN MODE STBY DEMSGN < LOAD SOUS :SYS. LB NOMARG < TRANSMISSION PAR LE REGISTRE B < DE L'EVENTUEL NOMARG A 'TI'. LAD DEMSGN BSR AOVL < TENTATIVE DE CHARGEMENT DE 'TI'. LAD DEMCCI SVC 0 < RETOUR AU CCI SI L'APPEL < DE 'TI' EST IMPOSSIBLE. LA NSC STA 0,W < RESTAURE L'EN-TETE DE L'OVERLAY JMP CALLOV < AVANT D'ITERER L'APPEL OVERLAY. < < < A P P E L D E S O V E R L A Y S < T W T X T Y T Z T C T D < T 2 T 3 T 4 T 5 : < < CALLTW: EQU $ CALLTX: EQU $ CALLTY: EQU $ CALLTZ: EQU $ CALLTC: EQU $ CALLTD: EQU $ CALLT2: EQU $ CALLT3: EQU $ CALLT4: EQU $ CALLT5: EQU $ LR B,X < X=INDEX DE L'OVERLAY, LA &ANPROC < A=NOM DE L'OVERLAY A APPELER... JMP CALLF < < < A P P E L O V E R L A Y Q U E L C O N Q U E : < < CALLPR: EQU $ LAI " " SWBR A,A ORR Y,A < A=NOM DE L'OVERLAY A APPELER... < < < A P P E L D E S O V E R L A Y S : < < CALLF: EQU $ STA NOV < NOM DE L'OVERLAY A APPELER. JMP CALLOV < CALL OVERLAY. < < R E T O U R D E L ' O V E R L A Y. < WORD N1 < VALEUR DE LA BASE C. WORD LOC+'80 < VALEUR DE LA BASE L. WORD BRANCH < VALEUR DE LA BASE W. RETURN: EQU $ LRP K ADRI -1,K PLR C,L,W < INITIALISATION DES 3 BASES. LA APILE LR A,K < INITIALISATION DU REGISTRE < K SUR LA PILE DE SODOME. LA MODCAL,W STA IEG < MISE A JOUR DE L'INDEX DE < RECUPERATION DES CARACTERES. STZ MODCAL,W < REINITIALISATION DE MODCAL. LAI '20 STBY 2,W < SUPPRESSION DE L'IDESC EN TETE. LA ASCENE STA &AENT < RESTAURATION DU POINT D'ENTREE < PRINCIPAL DE 'SC'. CPZ CDRET,W < EST-CE UN VRAI RETOUR DE L'OVERLAY? JNE GOGER < NON , ILS'AGIT D'UN < ALT-MODE RECU PENDANT CALLTI ; < ON RETOURNE DONC A GE .... BR ALOOP < VERS LA BOUCLE DE L'INTERPRETEUR. PAGE < < < E R E U R S D ' E X E C U T I O N : < < < FONCTION : < METTRE EN EXPOSANT SI CELA EST < POSSIBLE LE CARACTERE AYANY ETE < RECONNU COMME EN ERREUR. < < < RETOUR TOUJOURS EN ERREUR (X#0). < < CARUP: EQU $ LA IEG < A=INDEX D'EXECUTION. LR A,X < A NOTER : X=(IEG)#0 !!! CP NCP < EST-CE UN HORS LA PAGE ??? JGE E510 < OUI , RIEN A FAIRE ... ADRI -1,X < NON , RETOUR SUR LE CARACTERE < PRECEDENT. LBY &AIC < A=CARACTERE ERRONE. ORI '80 < POSITIONNEMENT DU BIT0. STBY &AIC < ET MAJ DE CE CARACTERE. E510: EQU $ RSR < RETOUR AVEC (X)#0 9 PAGE < < < R E C U P E R A T I O N D ' U N E C O N S T A N T E : < < < ARGUMENT : < Y=CARACTERE COURANT ; SI Y='@' , LA < CONSTANTE CALCULEE SERA (CTTE). < < < RESULTAT : < X=0 : SAVE=CONSTNATE CHERCHEE , < X#0 : ERREUR. < < REPET1: EQU $ LXI 1 < ERREUR A PRIORI. LR Y,A < A=CARACTERE COURANT. ADRI -'30,A < CONVERSION BINAIRE JALE E17 < ERREUR : NON RECONNU. CPI 9 < EST-CE UN CHIFFRE DE 1 A 9 ??? JLE E18 < OUI , OK .... ADRI -'41+'39+1,A < TRANSLATION PAR RAPPORT A 'A'. CPI 9 < VALIDATION. JL E17 < ERREUR , NON RECONNU. JG E308 < OK. < < CAS DU CARACTERE '@' : < LA CTTE < LA CONSTANTE CHERCHEE EST (CTTE). E308: EQU $ E18: EQU $ STA SAVE < OK , LA CONSTANTE CHERCHEE < EST CORRECTE. LXI 0 < DONC RETOUR OK. E17: EQU $ < SORTIE DE LA ROUTINE. RSR < < < T R A N S M I S S I O N C O N S T A N T E : < < < ARGUMENT : < SAVE=CONSTANTE. < < < RESULTAT : < Y=CONSTANTE CHERCHEE. < < REPET2: EQU $ LY SAVE RSR < ON SE MOQUE DE (X) .... PAGE < < < M O D I F I C A T I O N C T T E : < < SCTTE: EQU $ LA SAVE STA CTTE RSR < RETOUR INDIFFERENT. PAGE < < < E D I T I O N D ' U N M E S S A G E : < < < FONCTION : < EDITER UN MESSAGE DONT LE 1ER < CARACTERE EST A L'INDEX (SAVE) , ET < LE DERNIER A L'INDEX (IEG)-1. < MAIS ATTENTION, SI LE PREMIER < CARACTERE DU MESSAGE EST "!", ALORS < IL S'AGIT D'UNE CARTE ENVOYEE AU < 'CCI'... < < TEXTE: EQU $ LA IEG ADRI -1,A < RETOUR SUR LE '!'. SB SAVE < A=LONGUEUR DU MESSAGE. STA DEMOUT+2 < MAJ DE DEMOUT. LA AIC SLLS 1 AD SAVE < A=@OCTET DU MESSAGE. STA DEMOUT+1 < MAJ DE DEMOUT. LA DEMOUT PSR A,X < SAUVEGARDE DE 'DEMOUT' ET (X)... LX SAVE LBY &AIC < (A)=PREMIER CARACTERE... CPI "!" < EST-CE UNE CARTE AU 'CCI' ??? JNE TEXTE1 < NON, UN MESSAGE A EDITER... LAI 2 STA DEMOUT < OUI, ON REMPLACE L'ACCES A LA VISU PAR < UN ACCES AU 'CCI'... TEXTE1: EQU $ LAD DEMOUT BSR ASVC < EDITION DU MESSAGE OU ACCES AU 'CCI'... PLR A,X < RESTAURATION DE (X), STA DEMOUT < ET DE 'DEMOUT'... JNE E21 < CAS DES CTRL-X-OFF. RSR < OK , RETOUR. < < S O R T I E S E N C T R L - X - O F F : < E21: EQU $ ADRI -1,K < ANNULATION DU BSR D'APPEL. LA AGON22 < A=@NOEUD DES CTRL-X-OFF. BR XOFF < VERS UN RETOUR DIRECT A < LA BOUCLE DE L'INTERPRETEUR. PAGE < < < M A K E - C O P Y : < < < FONCTION : < FAIRE UN HARD-COPY SUR LA < VISU D'EMISSION. < < < A T T E N T I O N : < LA TEMPORISATION EST A LA CHARGE DU < PROGRAMME (PRIMITIVE '!'), AFIN DE < PERMETTRE DES HARD-COPIES DE L'ECRAN, < AINSI QUE DES TELECOMMANDES DE CAMERAS... < < < RETOUR EN ERREUR SI LA VISU D'EMISSION N'EST < PAS ASSIGNEE !!! < < MCOPY: EQU $ LAD COPY SVC 0 < ENVOI DE LA DEMANDE DE HARD-COPY. MCOPY1: EQU $ RSR < RETOUR AVEC (X). PAGE < < < S A V E N O M C H E R C H E : < < < RESULTAT : < SAVE=INDEX DU 1ER CARACTERE DU NOM CHERCHE , < X EST INDIFFERENT. < 'TYPIM' / 'TYPOV' RAZE... < < SAVNOM: EQU $ LAI 0 < RAZ SYSTEMATIQUE 'TYPIM' / 'TYPOV' ! SAVNO1: EQU $ STA TYPIM < SET 'TYPIM' / 'TYPOV'. LA IEG < A=INDEX COURANT. STA SAVE < QUE L'ON TRANSMET PAR SAVE. RSR < QUELQUE SOIT (X). < < S A V E N O M - I M A G E - 1 2 K C H E R C H E. < < RESULTAT: < IDEM A 'SAVNOM' CI-DESSUS, MAIS DE PLUS 'TYPIM' < (TYPE IMAGE) RECOIT 1. < SAVN12: EQU $ LAI 1 < 'TYPIM' = IMAGE 12K SGN. JMP SAVNO1 IF XXSGDK-XXXOUI,XOPT1,,XOPT1 < < S A V E N O M - I M A G E - 1 2 K - S G N / D K U. < SAVNIS: EQU $ LAI -1 < 'TYPIM' = IMAGE 12K SGN/DKU. JMP SAVNO1 XOPT1: VAL ENDIF < < S A V E N O M O V E R L A Y A C H A R G E R S U R < < L ' I T E M C O U R A N T. < < RESULTAT: < IDEM A SAVN12 L'INDICATEUR 'TYPOV' / 'TYPIM' RECOIT 1. < SAVNOV: EQU SAVN12 < < < L A N C E M E N T P R O G R A M M E : < < < ARGUMENT : < SAVE=INDEX DE LA 1ERE COMMANDE DU < PROGRAMME APPELE (SUIVANT '(' ). < < < RESULTAT : < X#0 TOUJOURS. < < START: EQU $ LX SAVE < A NOTER (X)#0 !!! STX IEG < CHANGEMENT DE L'INDEX COURANT ... RSR < < < A C C E S A U N C A R A C T E R E : < < < FONCTION : < RECUPERER LES NOMS DE PROGRAMME < APPELE PAR CARACTERE. < < < ARGUMENT : < X=INDEX DU CARACTERE DEMANDE. < < < RESULTAT : < A=CARACTERE SI OK , < X<--(X)+1 SI OK , < RETOUR DIRECT EN 'E81' SI LE CARACTERE < DEMANDE EST HORS-LA PAGE. < < GETCAR: EQU $ LR X,A CP NCP < VALIDATION DE L'INDEX ARGUMENT. JE E80 < ERREUR : HORS LA PAGE ; A NOTER < QUE (X)>NCP N'EST APS UNE < ERREUR , C'EST UN SAUT D'UN < ITEM A L'AUTRE !!! LBY &AIR < A=CARACTERE COURANT LORSQUE < L'INDEX EST VALIDE. ADRI 1,X < PROGRESSION DE L'INDEX. RSR < < CAS DES SORTIES EN ERREUR : < E80: EQU $ ADRI -1,K < ANNULATION DU BSR D'APPEL. JMP E81 < RETOUR DIRECT A L'APPELANT. < < < R E C H E R C H E D ' U N P R O G R A M M E : < < < FONCTION : < RECHERCHER LA DEFINITION D'UN < PROGRAMME DONT ON SE DONNE LE NOM. < < < ARGUMENT : < SAVE=INDEX DU 1ER CARACTERE DU NOM < CHERCHE , C'EST-A-DIRE LE 1ER < QUI SUIT LE '&' D'APPEL. < < < RESULTAT : < X#0 : LE PROGRAMME CHERCHE N'EXISTE PAS. < X=0 : LE PROGRAMME CHERCHE EXISTE , ET ALORS : < SAVE=INDEX DE LA 1ERE COMMANDE DU < PROGRAMME , SOIT LA 1ERE SUIVANT '('. < < < R E C H E R C H E E N B I B L I O T H E Q U E : < < LOOKPB: EQU $ LX OENTRY < LA BIBLI COURANTE EST-ELLE 'P' ??? CPZR X JNE E81 < TYPE 'P' : RECHERCHE PROGRAMME < REFUSEE; DE PLUS (X)#0... LA SAVE AD ACCEB < L'INDEX D'ACCES AU NOM CHERCHE < EST TRANSLATE DE FACON A ETRE < ACCESSIBLE DE L'AUTRE ITEM. AD ACCEB < (TRANSLATION OCTET). STA SAVE LA AIC SB ACCEB < L'ITEM DE RECHERCHE N'EST < PAS L'ITEM COURANT. JMP E200 < VERS LA RECHERCHE. < < < R E C H E R C H E D A N S L ' I T E M C O U R A N T : < < LOOKP: EQU $ LA AIC < LA RECHERCHE SE FAIT DANS L'ITEM < COURANT. E200: EQU $ STA AIR < MISE EN PLACE DU RELAI DE < RECHERCHE COURANT. RBT 0 < RAZ DU BIT INDEX. STA F3 < SAVE TEMPORAIRE DE L'@ITEM < DE RECHERCHE DANS F3. LXI 0 < INITIALISATION DE L'INDEX DE < RECHERCHE. < < BOUCLE DE RECHERCHE : < E71: EQU $ LAI ">" < A=OCTET DE DEBUT DE DEVINITION < D'UN NOM DE PROGRAMME. LB F3 < B=@ZONE DE RECHERCHE. LY NCP < Y=NBRE D'OCTETS DANS LA ZONE. SBS < RECHERCHE DE '>' ??? JC E81 < '>' NON TROUVE. ADRI 1,X < OK , ON A TROUVE '>' , ET ON < LE DEPASSE. E422: EQU $ < < CAS OU ON A TROUVE LA DEFINITION D'UN PROGRAMME : < LY SAVE < ^INDEX NOM CHERCHE , < X=INDEX NOM TROUVE. < < COMPRARAISON DU NOM CHERCHE Y) ET DU < NOM DEFINI (X) : < E72: EQU $ BSR AGTCAR < ACCES A UN CARACTERE DE L'ITEM. LR A,B < B=CARACTERE COURANT DE LA < DEFINITION. XR X,Y BSR AGTCAR < A=CARACTERE COURANT DU NOM < CHERCHE. XR X,Y CPR A,B < TEST DE COINCIDENCE ??? JE E72 < OK , ON CONTINUE A COMPARER. < < CAS D'UNE NON-COINCIDENCE : < CPI ";" < EST-CE LA FIN DU NOM CHERCHE ??? JNE E71 < NON. < < CAS DE LA FIN DU NOM CHERCHE : < LR B,A CPI "(" < EST-CE AUSSI LA FIN DU NOM < DEFINI ??? JNE E71 < NON. < < CAS OU ON A TROUVE LA BONNE DEFINITION : < E987: EQU $ < ENTRY APPEL DE L'ARGUMENT < FORMEL COURANT. STX SAVE < TRANSMISSION DE L'INDEX DU 1ER < CARACTERE DE LA DEFINITION. LXI 0 < RETOUR OK. < < SORTIE DE LA ROUTINE : < E81: EQU $ < ENTRY HORS-LA PAGE. RSR < RETOUR AVEC (X). < < < A P P E L A R G U M E N T F O R M E L C O U R A N T : < < CARGF: EQU $ LX ARGF < X=INDEX PRESUME DE LA 1ERE < PRIMITIVE DE L'ARGUMENT < FORMEL. CPZR X < EXISTE-T'IL ??? JL E81 < NON , ERREUR .... JMP E987 < OUI , C'EST BON ... < < < R E N C O N T R E A R G U M E N T < F O R M E L C O U R A N T : < < DARGF: EQU $ LX IEG < X=INDEX DE LA 1ERE PRIMITIVE < DE L'ARGUMENT FORMEL RECONTRE. STX ARGF < ET TRANSMISSION PAR ARGF. RSR < RETOUR AVEC (X)#0. < < < I N I T I A L I S A T I O N D E Y : < < < ARGUMENT : < B=VALEUR A DONNER A Y. < < < RESULTAT : < Y=QUELQUE CHOSE. < < SETY: EQU $ LR B,Y < INITIALUSATION DE (Y). RSR PAGE < < < V A L I D A T I O N B I B L I O T H E Q U E : < < < ARGUMENT : < Y=0 : BIBLI DE NOM VIDE ($;), < =1 : BIBLI DE NOM NON VIDE. < < CHECKB: EQU $ LX ACCEB NGR X,X ADRI IINDIC-LTN,X < X=INDEX MOT DU TYPE. ADR X,X < X=INDEX-OCTET DU TYPE. STZ OENTRY < TYPE 'T' OU 'I' A PRIORI ... LBY &AIC < A=TYPE DE L'ITEM. LXI 0 < OK A PRIORI ... CPI "P" < EST-CE EN FAIT UN PROGRAMME ??? JNE CHECK2 < NON... < < ACS DES PROGRAMMES : < LA AIR < ACCES A SON ADRESSE EN-TETE. RBT 0 < RAZ DU BIT INDEX. ADRI LTN,A < ON DEPASSE SON EN-TETE. STA OENTRY < OENTRY RECOIT LE POINT D'ENTREE < DE L'OVERLAY DE TRAITEMENT < DE L'IMAGE COURANTE. < DE PLUS : ENTRY#0. CPZR Y < $; OU PAS ??? JNE CHECK1 < APPEL BIBLI NORMAL... < < ACS DES APPELS OVERLAYS IMPLICITES : < LAD STACK-1 XR A,K < SAVE A=@PILE, ET INITIALISE < K SUR UNE GROSSE PILE... PSR A,W < SAVE (K) ET @BRANCH... PSR X,Y,C,L < SAVE C, L AINSI QUE X ET Y PAR < COMPATIBILITE AVEC 'LIFE'. LA AIMAG LR A,C < A=C=@IMAG. BSR &OENTRY < APPEL DE L'OVERLAY. PLR X,Y,C,L PLR A,W LR A,K < RESTAURE LE REGISTRE K. JMP CHECK1 < ET C'EST FINI... < < < V A L I D A T I O N P R O G R A M M E I N I T I A L : < < CHECKT: EQU $ LXI IINDIC-LTN*2 < INDEX OCTET. E205: EQU $ LBY &AIC < A=TYPE DE L'ITEM COURANT. LXI 0 < TYPE RECONNU A PRIORI. CHECK2: EQU $ CPI "T" < EST-CE UN TEXTE ??? JE CHECK1 < OUI , OK. CPI "I" < EST-CE UN FILM DIGITAL ??? JE CHECK1 < OUI , OK. LXI 1 < ERREUR : TYPE NON RECONNU. CHECK1: EQU $ RSR < RETOUR AVEC (X). PAGE < < < C H A R G E M E N T D E S B I B L I O T H E Q U E S : < < < ROLE DES BIBLIS $; : < L'APPEL PAR $;, PROVOQUE UN APPEL < IMPLICITE DU PROGRAMME EN OVERLAY < S'IL EXISTE, C'EST-A-DIRE S'IL A < ETE CHARGE PRECEDEMMENT... < < < ARGUMENTS : < B=0 , < IEG=INDEX 1ER CARACTERE <NOM-BIBLIOTHEQUE>. < TYPOV=0 APPEL PAR $ < =1 APPEL PAR : < < < RESULTAT : < Y=0 : APPEL PAR $; OU :;, < =1 : APPEL DIFFERENT DE $; ET :;. < IEG RECOIT 0 SI :<NOM BIBLIOTHEQUE>; < < LOADB: EQU $ < < C O D A G E D E < N O M > : < LA AIC < A=@MOT ITEM COURANT. CPZ TYPOV < TEST TYPE D'OVERLAY. JNE LOADB1 < OVERLAY SUR L'ITEM COURANT LUI-MEME. SB ACCEB < CHANGEMENT D'ITEM. LOADB1: EQU $ ADRI -LTN,A < A=@EN-TETE DE L'AUTRE ITEM. STA AIR < AIR=RELAI EN-TETE AUTRE ITEM. SLLS 1 < A=@OCTET EN-TETE AUTRE ITEM. STA DEMBIB+1 < MISE EN PLACE @OCTET DU BUFFER. < < INITIALISATION DU CODEUR : < STZ F3 < F3=0. LYI 3 < 3 MOTS A METTRE A 'SPACE'. LXI 0 < INDEX DE MISE A 'SPACE'. LAI '20 SBT 2 < A='SPACE''SPACE'. E211: EQU $ STA &AIR ADRI 1,X CPR X,Y JNE E211 LYI -1 < Y=INDEX DE <NOMC>. < ON A ICI : < B=0 (ARG1). E500: EQU $ BSR AGTK < A=K(SAV)). JE E212 < RENCONTRE DU ';' DE FIN DE <NOM>. STBY &AIR < C(X)=K(SAVE). LR Y,A CPI 2 JL E500 < RECUPERATION DE C(1) , C(2) , C(3). < < CODAGE DES CARACTERES K(4),...,K(L) : < E213: EQU $ BSR AGTK < A=K(I) , I=4,...,L. JE E214 < ARRET SUR ';' DE FIN DE <NOM>. ADR Y,A < PONDERATION DU CARACTERE (A) PAR < SA POSITION (Y). EORR A,B < CALCUL DE F2. ADR A,B < CALCUL DE F2. EOR F3 < CALCUL DE F3. SCLS 1 STA F3 < CALCUL DE F3. JMP E213 < PASSAGE AU CARACTERE SUIVANT. < < FIN DE CODAGE : < E214: EQU $ LBY F3 AD F3 ANDI '7F < MISE DE F3 SUR 7 BITS. CPI "Z" JLE E215 ADRI -'30,A E215: EQU $ CPI " " JG E216 ADRI '30,A E216: EQU $ XR A,B < B=F3 ; A=F2. ANDI '7F < MISE DE F2 SUR 7 BITS. CPI "Z" JLE E217 ADRI -'30,A E217: EQU $ CPI "0" JGE E218 ADRI '20,A JMP E217 E218: EQU $ SWBR A,A ORR B,A LXI 2 STA &AIR < STORE : C(5)=F2 ET C(6)=F3. E212: EQU $ LR Y,A < A=LONGUEUR DE <NOM>. JAE NOMVID < Y=0 : APPEL PAR $;. ADRI '30,A < CONVERSION ASCI. LXI 3 STBY &AIR < STORE : C(4)=F1=LONGUEUR(<NOM>). LXI 6 LAI '04 STBY &AIR < MISE EN PLACE D'UN EOT DE < FIN DE <NOMC>. < < C H A R G E M E N T D E L A B I B L I O T H E Q U E : < LYI 1 < Y=DECOMPTEUR DE TENTATIVES. LAI 5 < A=NVP DE LOAD SOUS <ACN>. < < BOUCLE DES TENTATIVES : < E206: EQU $ < ON A ICI : < A=NVP D'ACCES AU SGN , < Y=DECOMPTEUR DE TENTATIVES. STBY DEMBIB < MISE EN PLACE DU NVP D'ACCES. LAD DEMBIB SVC 0 < ACCES AU SGN. JE E220 < OK , LOAD SUCCESSFUL ... < < ACS DES RETOURS EN ERREUR : < ADRI -1,Y < DECOMPTE DES TENTATIVES. CPZR Y JL E207 < C'ETAIT LA 2EME TENTATIVE ... LAI 6 < C'ETAIT LA 1ERE ; A=NVP < DE LOAD SOUS :SYS. JMP E206 < VERS LA 2EME TENTATIVE. < < VALIDATION DU TYPE D'1NE BIBLIOTHEQUE : < E220: EQU $ LXI 7 LBY &AIR < A=TYPE DE L'ITEM CHARGE. LXI 'C9 < X='I'+'80 (ITEM). SBR A,X < X=0 SI TYPE ITEM. CPZ TYPOV JE E207 STZ IEG < OVERLAY SUR ITEM COURANT LUI-MEME, < REPARTIR AU CARACTERE 0. STZ TYPOV < PLUS RIGOUREUX... < < SORTIE DE LA ROUTINE : < E207: EQU $ LYI 1 < Y=1 : APPEL DIFFERENT DE $;. NOMVID: EQU $ < Y=0 : APPEL $;. RSR < < < A C C E S C A R A C T E R E A C O D E R : < < < ARGUMENT : < Y=LONGUEUR COURANTE DE <NOM> , < SAVE=INDEX DU CARACTERE COURANT. < < < RESULTAT : < SAVE<--(SAVE)+1 , < A=CARACTERE COURANT , < Y<--(Y)+1 , < X<--(Y) , < ET LES INDICATEURS SUR LA PRESENCE DE ';'. < < GTK: EQU $ ADRI 1,Y < PROGRESSION LONGUEUR <NOM>. LX SAVE < X=INDEX COURANT CARACTERE. IC SAVE < SAVE=INDEX CARACTERE SUIVANT. LBY &AIC < A=CARACTERE COURANT DE <NOM>. CPI ";" < TEST DE FIN DE <NOM>. LR Y,X < X=INDEX DE RANGEMENT DES 3 < PREMIERS CARACTERES. RSR PAGE < < D I F F U S I O N V I D E O E T A C C E S D K U. < PLUS1: EQU $ < < D I F F U S I O N V I D E O 4 K S U R R O U G E. < LAI 1 JMP PLUSSR PLUS2: EQU $ < < D I F F U S I O N V I D E O 4 K S U R V E R T. < LAI 2 JMP PLUSSR PLUS3: EQU $ < < D I F F U S I O N V I D E O 4 K S U R B L E U. < LAI 3 JMP PLUSSR PLUSS: EQU $ < < I N H I B E R D I F F U S S I O N V I D E O 4 K. < LAI 0 PLUSSR: EQU $ STA VTVCTL < 'STDKU' + 3. LAD STDKU < DIFFUSION VIDEO 4K. SVC 0 RSR PLUS0: EQU $ < < D I F F U S I O N I M A G E ( 1 2 K ). < LYI 0 < OUT. PLUS40: EQU $ LRM A WORD IMAG+LIMAG+LIMAG-ZERO*2 LXI 3 < 3 COMPOSANTES. PLUS41: EQU $ STA DMDIFF+1 < ADRESSE MEMOIRE A ECHANGER. LR Y,A < SENS DE L'ECHANGE. ADR X,A < NUMERO DE COMPOSANTE. STA DMDIFF+3 < SENS ET COMPOSANTE. LAD DMDIFF PSR X SVC 0 PLR X LA DMDIFF+1 SB DMDIFF+2 STA DMDIFF+1 < NOUVELLE ADRESSE MEMOIRE. JDX PLUS41 < SUIVANTE... RSR PLUS4: EQU $ < < R E C U P E R A T I O N I M A G E ( 1 2 K ). < LYI TVIN < SENS = INPUT. JMP PLUS40 IF XXSGDK-XXXOUI,XOPT1,,XOPT1 PLUSB: EQU $ < < D E F I N I T I O N L O N G U E U R E C H A N G E A V E C D K U < < +BXXXX XXXX = LONGUEUR OCTETS (PAIRE SVP!). < BSR AHEX JG PLUSBR JAL PLUSBR TBT 15 JNC PLUSB1 LXI 1 < ERREUR, NOMBRE IMPAIR. JMP PLUSBR PLUSB1: EQU $ STA RWDKU+2 < DEMANDE DKU. PLUSBR: EQU $ RSR PLUSA: EQU $ < < D E F I N I T I O N A D R E S S E C D A I P O U R < < E C H A N G E S D K U. < < +@XXXX XXXX = ADRESSE OCTETS (PAIRE SVP!). < BSR AHEX JG PLUSAR TBT 15 JNC PLUSA1 LXI 1 < ERREUR, NOMBRE IMPAIR. JMP PLUSAR PLUSA1: EQU $ STA RWDKU+1 < DEMANDE DKU. PLUSAR: EQU $ RSR PLUSK: EQU $ < < D E F I N I T I O N I N C R E M E N T A U T O M A T I Q U E < < P O U R A C C E S D K U. < < KXXXX XXXX = NOMBRE DE SECTEURS QUECONQUE. < BSR AHEX JNE $+2 STA INCR < VALEUR DE L'INCREMENT AUTOMATIQUE. RSR PLUSE: EQU $ < < E C R I T U R E D I R E C E S U R D K U. < < +EXXXX ECRIRE A L'ADRESSE SECTEUR XXXX. < +E; ECRIRE A L'ADRESSE SECTEUR SUIVANTE (COURANTE + 'INCR'). < LA RWDKU SBT 14 < SET BIT ECRITURE. JMP PLUSEF PLUSF: EQU $ < < L E C T U R E D I R E C E S U R D K U. < < +FXXXX LIRE A L'ADRESSE SECTEUR XXXX. < +F; LIRE A L'ADRESSE SECTEUR SUIVANTE (COURANTE + 'INCR'). < LA RWDKU RBT 14 < RAZ BIT ECRITURE. < PLUSEF: EQU $ STA RWDKU BSR AHEX < ADRESSE SECTEUR EVENTUELLE. JG PLUSER < ADRESSE INCORRECTE. JE PLDKU < ADRESSE EXPLICITE. LA RWDKU+3 < INCREMENTATION AUTOMATIQUE. AD INCR PLDKU: EQU $ STA RWDKU+3 LAD RWDKU SVC 0 PLUSER: EQU $ RSR < < O P E R A T I O N S D E M A N D E E S S U R < < I M A G E S 1 2 K S G N / D K U. < PLUSD: EQU $ < DISPLAY DEMANDE. STZ IDPM RSR PLUSP: EQU $ < CREATION ("PLUS"). LAI 1 JMP PLPM PLUSM: EQU $ < DELETE ("MOINS"). LAI -1 PLPM: EQU $ STA IDPM < SET INDICATEUR OPERATION DEMANDEE. BSR ARTO < SYSTEMATIQUEMENT ON LIT TO POUR LA < REECRIRE (CF: COMMENTAIRES CI-DESSOUS). JMP PLPMI PLUSI: EQU $ < INITIALISATION DEMANDEE. < QUE CE NE SOIT PAS INVOLONTAIRE... LAD DEMOK < OK? SVC 0 LAD DEMREP < REPONSE... SVC 0 LBY REP CPI '1F < CARACTERE "OK" = CTRL-SHIFT-O. JNE PLPMI1 < C'ETAIT UNE ERREUR! BSR ARTO < UNIQUEMENT POUR QUE SOIT SAUVE LE DEBUT < DE L'IMAGE (RECOUVREMENT). LXI LTO < LONGUEUR TABLE D'OCCUPATION. LAI -1 < QU'ON VA METTRE A 'FFFF (LIBRE). STA &ARA1TO JDX $-1 PLPMI: EQU $ < < ICI, ON REECRIT LA TABLE D'OCCUPATION. SOIT PARCE QU'ON VIENT DE LA REINITIALI < SER, SOIT PARCE QU'UNE CREATION OU ON DELETE ON ETE DEMANDES (CF: CI-DESSUS) < CES OPERATIONS NECESSITANT UNE MISE A JOUR DE TO. < CETTE ECRITURE DE TO SUR DKU SERA SUIVIE D'UN ACTD SI ELLE SE PASSE MAL, < AINSI, IL N'Y AURA PAS DE SURPRISE PAR LA SUITE, L'UTILISATEUR SERA FIXE. < BSR AWTO < WRITE TABLE D'OCCUPATION. CPZR B < CODE RETOUR DU WRITE TO. JE PLPMI1 ACTD < ET VOILA... PLPMI1: EQU $ RSR < QUEL QUE SOIT 'X'. PAGE HEX: EQU $ < < C O N V E R S I O N A S C I - - > H E X A. < < RESULTAT: < - 'A' = NOMBRE APRES CONVERSION. < - 'X' = CODE RETOUR (0/1/-1). < - AU RETOUR FAIRE: < JE OK < JG ERREUR < JL NOMBRE VIDE ( ";" RENCONTRE) < (ALORS 'A' A RECU 0). < PSR B LXI 4 < NOMBRE DE CHIFFRES HEXA. HEXL: EQU $ PSR X < SAVE COUNT. LX IEG < INDEX CARACTERE COURANT. IC IEG < C'EST FAIT. LBY &AIC < CARACTERE COURANT. CPI "0" JL HEXERR CPI "9" JLE HEXN CPI "A" JL HEXERR CPI "F" JG HEXERR ADRI -7,A HEXN: EQU $ ADRI -"0",A < CONVERSION. SLLS 12 SCLD 4 PLR X < RECUPERATION COUNT. JDX HEXL < CONVERSION OK. LXI 0 LR B,A JMP HEXR HEXERR: EQU $ < ERREUR EVENTUELLE. CPI ";" < EST-CE UN NOMBRE VIDE (0 "ASSUMED")? PLR A < RECUPERATION COUNT. JNE HEXER1 < ERREUR. CPI 4 < EST-CE ";" EN PREMIERE POSITION? JE HEXPV < OUI, NOMBRE NUL. HEXER1: EQU $ < ERREUR INDUBITABLE. LXI 1 JMP HEXR HEXPV: EQU $ < ;" RENCONTRE. LAI 0 LXI -1 HEXR: EQU $ CPZR X < POUR TEST EN RETOUR. PLR B RSR XOPT1: VAL ENDIF PAGE < < E N T R E E D ' U N E I M A G E C A M E R A. < INRVB: EQU $ PROMN:: VAL '0000 < ADRESSE DE PROM STANDARD, MODEN:: VAL '0003 < MODE D'ENTREE STANDARD... 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, STA BUFCU+MOT2 < EN MODE STANDARD... LAD DEMCU2 SVC 0 < ENTREE, STZ BUFCU+MOT2 < ET STOP IMMEDIAT AFIN DE JMP INSTOP < N'ENTRER QU'UNE TRAME... < < E N T R E E C A M E R A R O U G E S E U L. < INR: EQU $ XWOR%1: VAL CUINR=0 LXI NBITMO-1-XWOR%1 < ROBINET ROUGE. JMP INCOUL < < E N T R E E C A M E R A V E R T S E U L. < INV: EQU $ XWOR%1: VAL CUINV=0 LXI NBITMO-1-XWOR%1 < ROBINET VERT. JMP INCOUL < < E N T R E E C A M E R A B L E U S E U L. < INB: EQU $ XWOR%1: VAL CUINB=0 LXI NBITMO-1-XWOR%1 < ROBINET BLEU. INCOUL: EQU $ LAI 0 SBT 0,X < SET BIT ROBINET. XWOR%1: VAL CUIN=0 LXI NBITMO-1-XWOR%1 < MODE INPUT. SBT 0,X STA BUFCU+MOT2 XWOR%1: VAL CUMODI=0 LAI MODEN < MODE D'ENTREE STANDARD. SLLS XWOR%1 OR BUFCU+MOT2 STA BUFCU+MOT2 < ENVOI ORDRE CAMERA. LAD DEMCU2 SVC 0 INSTOP: EQU $ < STOPPER L'ENTREE LANCEE. STZ BUFCU+MOT2 LAD DEMCU2 SVC 0 RSR PAGE < < < N O M I M A G E V I D E O : < < < RESULTAT : < SAVE=INDEX 1ER CARACTERE DU NOM PRESUME. < < SNIMAG: EQU $ LA IEG ADRI -1,A < RETOUR SUR LA PRIMITIVE < NON RECONNUE. STA SAVE < AND SAVE .... RSR < RETOUR INDIFFERENT. < < < T E N T A T I V E L O A D I M A G E O U T R A I T E M E N T < < I M A G E 1 2 K S G N / D K U. < < LOADI: EQU $ < < VALIDATION LONGUEUR DU NOM : < LA IEG < A=INDEX DE ';'+1. SB SAVE ADRI -1,A < A=LONGUEUR DU NOM IMAGE. CPI LNOM*2 < VALIDATION DE LA LONGUEUR ??? JG E1305 < ERREUR. < < SAVE EN-TETE ITEM1 : < LB ASI1 < B=@ZONE DE SAVE. LA I1 < A=@EN-TETE ITEM1. LXI LNOM+1 < X=NBRE DE MOTS A SAUVER. MOVE < ET SAUVEGARDE. < < MISE EN PLACE DU NOM DE L'IMAGE PRESUMEE : < LX SAVE < X=INDEX DU NOM DANS L'ITEM < COURANT. STX NOMARG < POUR UN EVENTUEL APPEL DE 'TI'. LYI 0 < Y=INDEX DE TRANSFERT. E1301: EQU $ LBY &AIC < A=CARACTERE COURANT DU NOM. ADRI 1,X < PROGRESSION INDEX. XR X,Y CPI ";" < EST-CE LA FIN DU NOM ??? JE E1302 < OUI. STBY &XI1 < ET NON , ON DEPLACE DONC LE < CARACTERE COURANT. ADRI 1,X < PROGRESSION INDEX. XR X,Y JMP E1301 < AU CARACTERE SUIVANT. E1302: EQU $ LAI '04 < ';' EST REMPLACE PAR UN 'EOT'. STBY &XI1 < FIN DU NOM. IF XXSGDK-XXXOUI,XOPT1,,XOPT1 < < ICI, ON REGARDE SI L'ON A AFFAIRE A UNE IMAGE 12K-SGN/DKU. < CPZ TYPIM JL ISD < OUI. XOPT1: VAL ENDIF < < TENTATIVE DE CHARGEMENT DE L'IMAGE : < LAD DEMTV < IMAGE 4K A PRIORI. CPZ TYPIM < TEST TYPE IMAGE (4K / 12K). JE E1303 LAD DEMTV1 < ADRESSE DE LA DEMANDE DE CHARGEMENT... E1303: EQU $ STA ADEMTV < ADRESSE DE LA DEMANDE DE CHARGEMENT < IMAGE. LAI '05 STBY &ADEMTV < NVP DE LOAD SOUS <ACN>. LA ADEMTV SVC 0 < ACCES AU SGN. JE E1306 < OK , IMAGE TROUVEE. LAI '06 STBY &ADEMTV < NVP DE LOAD SOUS :SYS. LA ADEMTV SVC 0 < 2EME APPEL DU SGN. E1306: EQU $ PSR X < SAVE LES CONDITIONS DE RETOUR. < < RESTAURATION EN-TETE DE L'ITEM1 : < LA ASI1 < A=#ZONE DE SAVE. LB I1 < B=@EN-TETE ITEM1. LXI LNOM+1 < X=NBRE DE MOTS A RESTAURER. MOVE < RESTAURATION. < < TEST DES CONDITIONS D'EXECUTION : < PLR X < RESTAURE LES CONDITIONS DU SGN. < SI IMAGE 12K, ON SORT TOUT DE SUITE, 'X' CONTENANT LE CODE RETOUR. CPZ TYPIM JNE E1300 CPZR X < COMMENT CELA S'EST-IL PASSE ??? JNE E1300 < ERREUR : X#0. < < C A S D ' U N E I M A G E V I D E O : < LAD STDKU SVC 0 < STABILISATION IMAGE... JMP E1300 < ET C'EST TOUT .... < < RETOUR DE LA ROUTINE : < E1305: EQU $ < SORTIES EN ERREUR. LXI 1 < ON RENVOIE X#0. E1300: EQU $ < < ICI, ON RAZE SYTEMATIQUEMENT 'TYPIM', CAR LA PROCHAINE IMAGE EST < A PRIORI UNE IMAGE 4K. < STZ TYPIM RSR IF XXSGDK-XXXOUI,XOPT1,,XOPT1 ISD: EQU $ < < I M A G E D E T Y P E S D ( S G N / D K U ). < CPZ IDPM < TEST FONCTION A REALISER. JL ISDM < DELETE. JG ISDP < CREATION. < < D I S P L A Y. < LAI '05 < LON. BSR ASGNSD JE ISDD1 LAI '06 < LNS. BSR ASGNSD JNE ISDERR < IMAGE INEXISTANTE. ISDD1: EQU $ LA &ALONG < ADRESSE SECTEUR SUR DKU. STA DMRDKU+3 LAD DMRDKU < DEMANDE DE LECTURE SUR DKU. JMP ISDOK1 < < D E L E T E. < ISDM: EQU $ BSR ARTO < READ TABLE D'OCCUPATION. LAI '03 < DLN. BSR ASGNSD JNE ISDER2 < N'EXISTE PAS ! LA &ALONG < ADRESSE SECTEUR DKU. SB CAPSU < A CAUSE DES SECTEURS INUTILISES. SLRD 16 DV CNSPI < / NOMBRE DE Q-SECTEURS PAR IMAGE. SLRD 4 < 'A' = RANG MOT DANS TO, < 'B' (0-3) = RANG BIT DANS LE MOT. LR A,X < 'X' = RANG DU MOT DANS TO. SLLD 16 SLRD 16+12 < 'B' = RANG DU BIT. LA &AXTO < ACCES AU MOT ADEQUAT DE TO. XR B,X < 'X' = RANG DU BIT, < 'B' = RANG DU MOT. TBT 0,X < TEST BIT DE TO. SBT 0,X < DEVIENT LIBRE. JC ISDER2 < L'ETAIT DEJA !!! XR B,X < 'X' = RANG DU MOT. STA &AXTO < TO A JOUR EN MEMOIRE. BSR AWTO < WRITE TABLE D' OCCUPATION SUR DISQUE. JMP ISDOK < < C R E A T I O N. < ISDP: EQU $ BSR ARTO < READ TABLE D'OCCUPATION. LAI '05 < LON. BSR ASGNSD JE ISDER2 < EXISTE DEJA !!! LXI 0 < RANG BIT INITIAL POUR DRBM. LA AIMAG < ADRESSE 1ER MOT DE TO. LY CNIDKU < NOMBRE D'IMAGES (=NB DE BITS). DRBM < RECHERCHE 1ER BIT A 1. JC ISDER2 < PLUS DE PLACE !!! RBTM 0,X < BIT DEVIENT OCCUPE. LR X,A < RANG DE L'IMAGE. MP CNSPI < * NOMBRE DE SECTEURS PAR IMAGE. LR B,A AD CAPSU < + NB DE SECTEURS INUTILISES. STA &ALONG < ADRESSE SECTEUR DANS VALEUR. STA DMWDKU+3 < ET DANS LA DEMANDE DKU. LAI '04 < STN. BSR ASGNSD BSR AWTO < WRITE TABLE D'OCCUPATION. LAD DMWDKU < DEMANDE D'ECRITURE DKU. ISDOK1: EQU $ SVC 0 ISDOK: JMP E1306 < VERS RESTAURATION EN-TETE ITEM1. ISDER2: EQU $ BSR AWTO < WRITE TABLE D'OCCUPATION. ISDERR: EQU $ LXI 1 < CODE RETOUR : ERREUR. JMP ISDOK PAGE < < R E A D / W R I T E T A B L E D ' O C C U P A T I O D K U. < < ATTENTION: DETRUIT A,B,X. < < R E A D : < DEBUT IMAGE --> SCRATCH < TO --> DEBUT IMAGE. < < W R I T E : < DEBUT IMAGE --> TO (SUR DKU) < SCRATCH --> DEBUT IMAGE < 'B' RECOIT LE CODE RETOUR DU WRITE TO SUR DKU. < RTO: EQU $ < READ TO. LAD DEMDKS BSR AWDK < WRITE DK SCRATCH. LAD DEMDKU JMP RDK < READ DKU. WTO: EQU $ < WRITE TO. LAD DEMDKU BSR AWDK < WRITE DKU. LR X,B < 'B' = CODE RETOUR DU WRITE DKU. LAD DEMDKS JMP RDK < READ DK SCRATCH. WDK: EQU $ < SET BIT POUR WRITE. SBTM 14 JMP RWDK RDK: EQU $ < RESET BIT POUR READ. RBTM 14 RWDK: EQU $ SVC 0 RSR < < < < < SGNSD: EQU $ < < A C C E S S G N P O U R I M A G E D E T Y P E S D < < ( C ' E S T - A - D I R E S G N / D K U ). < < ARGUMENT: < - 'A' = FONCTION DEMANDEE. < < RESULTAT: < - 'A' DETRUIT, < - 'X' = CODE RETOUR, < - AU RETOUR ON PEUT FAIRE JE / JNE. < STBY DSGNSD < STORE FONCTION DEMANDEE. LAD DSGNSD < DEMANDE SGN. SVC 0 RSR XOPT1: VAL ENDIF PAGE < < < G E S T I O N D E S E N C H A I N E M E N T S < D ' I M A G E S V I D E O S : < < < PHILOSOPHIE : < CE PROCESSEUR PERMET D'ENCHAINER < LES IMAGES VIDEOS SYNTHETIQUES < GENEREES PAR 'TV' EN DES SEQUENCES < DE FILM ; DE PLUS UN LANGAGE ALGO- < RITHMIQUE DU TYPE G2/G3 PERMET DE < DEFINIR DES BOUCLES ITERATIVES D'IMAGES , < DES SOUS-FILMS , DES BIBLIOTHEQUES < DE SEQUENCES (CINEMATHEQUES)... < < < SYNTAXE : < < <K>::=<CARACTERE NON RESERVE> < <N>::=<CHIFFRE BASE 36> < <N>::=@ < <IMAGE>::=<K>...<K>; < <IMAGE>::=-<K>...<K>; < <IMAGE>::=,<K>...<K>; ( IMAGE 12K TW ! ) < <PAUSE>::=!<N> < <POINT D'ARRET>::=. < <APPEL BIBLIOTHEQUE>::=$<NOM BIBLIOTHEQUE>; < <APPEL BIBLIOTHEQUE>::=:<NOM BIBLIOTHEQUE>; < <APPEL FILM>::=&<NOM FILM>; < <FIXATION COMPOSANTE DIFFUSION VIDEO 4K>::=+1/+2/+3 < <STOP DIFFUSION VIDEO 4K>::=+S < <DIFFUSION IMAGE 12K>::=+0 (CF: TW...) < <RAPPEL IMAGE 12K>::=+4 (CF: TW...) IF XXSGDK-XXXOUI,XOPT1,,XOPT1 < <ECRITURE SUR DKU ADRESSE XXXX>::=+EXXXX < <LECTURE SUR DKU ADRESSE XXXX>::=+FXXXX < <ECRITURE SUR DKU ADRESSE SUIVANTE>::=+E; < <LECTURE SUR DKU ADRESSE SUIVANTE>::=+F; < <DEFINITION VALEUR INCREMENT AUTOMATIQUE>::=+KXXXX < <DEFINITION ADRESSE OCTETS CDAI POUR ECHANGES DKU>::=+@XXXX < <DEFINITION LONGUEUR OCTETS POUR ECHANGES DKU>::=+BXXXX XOPT1: VAL ENDIF < <APPEL ARGUMENT FORMEL>::=' < <FIN DE FILM>::=/ < <APPEL 'TI'>::=* < <APPEL 'TI'>::="I < <APPET 'TI'>::="V < <APPEL 'TC'>::="C < <APPEL 'TD'>::="D < <APPEL 'TW'>::="W < <APPEL 'TX'>::="X < <APPEL 'TY'>::="Y < <APPEL 'TZ'>::="Z < <APPEL 'T2'>::="2 < <APPEL 'T3'>::="3 < <APPEL 'T4'>::="4 < <APPEL 'T5'>::="5 < <APPEL OVERLAY QUELCONQUE ' ?'>::="? < <RETOUR A L'ESPACE SOCIAL INITIAL>::=1 < <PASSAGE SUR LE QUADRILLAGE 2>::=2 < <PAS DE BASCULE SUR LE QUADRILLAGE>::=3 < <APPEL OVERLAY>::=4 < <APPEL OVERLAY>::=$; <APPEL OVERLAY>::=:; < (LA BIBLI COURANTE EST ALORS DE TYPE 'P') < <ENTREE CAMERA STACKS RVB>::=4 < <ENTREE CAMERA STACK R>::=5 < <ENTREE CAMERA STACK V>::=6 < <ENTREE CAMERA STACK B>::=7 < <ELEMENT NEUTRE>::=; < <ELEMENT NEUTRE>::=<SPACE> < <COMMENTAIRE>::=<<TEXTE>; < <MESSAGE>::=<<TEXTE>! < <MAKE COPY>::=9 < <DEFINITION ARGUMENT FORMEL>::==(<SEQUENCE>) < <DEFINITION NOM FILM>::=>(<SEQUENCE>) < <ITERATION>::=%<N>(<SEQUENCE>) < <APPEL FILM EN BIBLIOTHEQUE>::=?<NOM FILM>; < <MODIFICATION CTTE>::=@<N> < <SEQUENCE>::=<ELEMENT NEUTRE> < <SEQUENCE>::=<IMAGE> < <SEQUENCE>::=<SEQUENCE><IMAGE> < <SEQUENCE>::=<ARRET/MARCHE VIDEO> < <SEQUENCE>::=<DEFINITION NOM FILM> < <SEQUENCE>::=<DEFINITION ARGUMENT FORMEL> < <SEQUENCE>::=<APPEL 'TI'><COMMANDES 'TI'> < <SEQUENCE>::=<COMMENTAIRE> < <SEQUENCE>::=<MESSAGE> < <SEQUENCE>::=<SON> < <SEQUENCE>::=<OCTAVE> < <SEQUENCE>::=<COMMANDE VISU> < <SEQUENCE>::=<EFFACEMENT ECRAN VISU> < <SEQUENCE>::=<MAKE COPY> < <SEQUENCE>::=<MODIFICATION CTTE> < <SEQUENCE>::=<APPEL FILM EN BIBLIOTHEQUE> < <SEQUENCE>::=<POINT D'ARRET> < <SEQUENCE>::=<PAUSE> < <SEQUENCE>::=<APPEL BIBLIOTHEQUE> < <SEQUENCE>::=<APPEL FILM> < <SEQUENCE>::=<APPEL ARGUMENT FORMEL> < <SEQUENCE>::=<ITERATION> < <SEQUENCE>::=<SEQUENCE>...<SEQUENCE> < <SEQUENCE>::=(<SEQUENCE>) < <SEQUENCE>::=<FIN DE FILM> < <FILM>::=<SEQUENCE> < <FILM>::=<FILM><SEQUENCE> < <FILM>::=<FILM><FIN DE FILM> < < WORD COM0 < INITIALISATION INTERPRETEUR. WORD LOC+'80 WORD BRANCH SCENE: EQU $ LRP K ADRI -1,K PLR C,L,W < INITIALISATION DES 3 BASES. LA APILE < A=@PILE DE SODOME. LR A,K < INITIALISATION DE K. IC KIN < COMPTAGE DES ENTREES. JE E1310 < CAS DE LA 1ERE ENTREE. BR AGOGER < CAS DE L'ENTREE SUIVANTE SUITE < A UN ALT-MODE : ON RETOURNE A GE. < < DEMANDE D'ALLOCATION 16 K MOTS. < E1310: EQU $ < 1ERE ENTREE. LA MODCAL,W < RECUPERATION DU MODCAL D'APPEL , STA WHOCAL < QUE L'ON SAVE DANS WHOCAL. LAD DEM16K SVC 0 < < SAVE L'EN-TETE DE L'ITEM1 : < (POUR SE PREMUNIR CONTRE LES ALT-MODES < MAL PLACES LORS DES CHARGEMENTS < DES IMAGES VIDEOS...) < LB ASI1 LA I1 LXI LNOM+1 MOVE < SAVE (I1) DANS (SI1). JMP LOOP < ET C'EST PARTI .... PAGE < < < P R I M I T I V E G E T C A R A C T E R E : < < < RESULTAT : < Y=CARACTERE COURANT (IEG) DE L'ITEM < COURANT ; RETOUR DIRECT PAR 'N22' < SI CE CARACTERE EST HORS-LA PAGE. < < PRIMG: EQU $ LX IEG < X=INDEX COURANT D'EXECUTION. < < VALIDATION DE IEG : < LR X,A CP NCP < VALIDATION. LA AGON22 < A=@NOEUD D'ERREUR A PRIORI ... JGE E962 < EFFECTIVEMENT , HORS-LA PAGE ... < < ACCES AU CARACTERE COURANT : < LBY &AIC LR A,Y < Y=CARACTERE COURANT. IC IEG < PREPARATION DE L'ACES AU < CARACTERE SUIVANT. JMP PRIMA < VERS UN RETOUR OK. PAGE < < < I N T E R P R E T E U R D E S P R O G R A M M E S < D E S E Q U E N C E S V I D E O S : < < < F O R M A T D E S P R I M I T I V E S : < < OCTET0=FONCTION (NOM DE LA PRIMITIVE) , < BIT0=1 (TOUJOURS) , < BIT1=0 : MOT2 (ET EVENTUELLEMENT MOT3) < PRESENT(S). < =1 : L'EXECUTION EST SEQUENTIELLE < (ON PASSE A LA PRIMITIVE SUIVANTE < EN FAISANT +2 SUR LA BASE C). < BIT2=1 : ARG2 EST ABSENT. < BIT3=1 : LE NOEUD SUIVANT EST N1 (QUELQUE < SOIENT LES CONDITIONS DE RETOUR). < OCTET1=ARG1 , < MOT1=ARG2 , < MOT2=@PRIMITIVE SUIVANTE EN CAS D'ERREUR (A < CONDITION QUE BIT1(MOT0)=0) , < MOT3=@PRIMITIVE SUIVANTE SI OK (A CONDITION < QUE BIT1(MOT0)=0). < < PR: VAL 0 < NOM DE LA PRIMITIVE + ARG1. BSEQ: VAL 1 < BIT INDICATEUR DE PRIMITIVE < SEQUENTIELLE SI =1. PBSEQ: VAL '40 < POUR POSITIONNER LE BIT 'BSEQ'. LPRIM: VAL 2 < LPRIM=1 : ARG2 EST ABSENT. PLPRIM: VAL '20 < POUR POSITIONNER LE BIT 'LPRIM'. GON1: VAL 3 < BIT INDIQUANT QUE LE NOEUD < SUIVANT EST N1 (SI =1). PGON1: VAL '10 < POUR POSITIONNER LE BIT 'GON1'. ARG2: VAL 1 < ARGUMENT2. ADER: VAL 2 < @PRIMITIVE SUIVANTE SI ERREUR. ADOK: VAL 3 < @PRIMITIVE SUIVANTE SI OK. < < < FONCTION ARG1 ARG2 < < PC @ROUTINE CALL. <------------------------------------------------------------------------------- < PCI @NOEUD CALL ROUTINE RELAYEE < PAR LE NOEUD D'@ (ARG2) <------------------------------------------------------------------------------- < PT CODE-ASCI TEST CARACTERE. <------------------------------------------------------------------------------- < PUSH EMPILEMENT DANS PIR. <------------------------------------------------------------------------------- < PULL DEPILEMENT DE PIR. <------------------------------------------------------------------------------- < PG ACCES AU CARACTERE < COURANT DE L'ITEM. <------------------------------------------------------------------------------- < PTD TEST DIRECT DES < CARACTERES DE 'SPACE' < A 'Z'. < < < UTILISATION DES REGISTRES : < B=ARG1 , < X=NOM PRIMITIVE , PUIS CONDITIONS DE < RETOUR DE CELLE-CI (0 SI OK). < Y=CARACTERE COURANT (IEG) EN GENERAL. < C=@PRIMITIVE COURANTE. < W=@BRANCH. < < < P R I M I T I V E S A A D R E S S E ( S ) : < PC: VAL 1+'80 < CALL. PCI: VAL 2+'80 < CALL INDIRECT. PUSH: VAL 3+'80+PLPRIM < EMPILEMENT DANS PIR SANS ARG2. PULL: VAL 4+'80+PLPRIM < DEPILEMENT DE PIR SANS ARG2. PG: VAL 5+'80+PLPRIM < GET CARACTERE SANS ARG2. PTD: VAL 6+'80+PLPRIM < TEST DIRECT DE CARACTERE. PT: VAL 7+'80 < TEST CARACTERE. < < A T T E N T I O N : < 'PTM' DOIT ETRE LA DERNIERE PRIMITIVE < A CAUSE DE LA TABLE DE L'INTERPRETEUR. < PTM: VAL PT+PLPRIM < TEST SANS ARG2. < < P R I M I T I V E S S E Q U E N T I E L L E S : < PCS: VAL PC+PBSEQ < CALL SEQUENTIEL. PUSHS: VAL PUSH+PBSEQ < PUSH SEQUENTIEL. PULLS: VAL PULL+PBSEQ < PULL SEQUENTIEL. PGS: VAL PG+PBSEQ < GET CARACT. SEQUENTIEL. < < < P R I M I T I V E C A L L : < < PRIMCI: EQU $ LA ARG2,C < A=@NOEUD RELAI DE LA ROUTINE. LR A,C < C=@NOUVEAU NOEUD. PRIMC: EQU $ BSR ARG2,C < APPEL DE LA ROUTINE ARGUMENT. JMP LOOPB < VERS LA BOUCLE DE L'INTERPRETEUR. < < < T E S T D I R E C T C A R A C T E R E : < < PRIMTD: EQU $ LR Y,A < A=Y=CARACTERE COURANT A TESTER. E979: EQU $ LXI 1 < RETOUR EN ERREUR A PRIORI. CPI "Z" < VALIDATION SUPERIEURE. JG LOOPB < ERREUR. CPI "A" < EST-CE UNE LETTRE 'A' A 'Z' ??? JL INFA < NON, INFERIEUR A 'A'. LAI "A" < OUI, TOUTES LES LETTRES SONT < RENDUES EQUIVALENTES A 'A' ... INFA: EQU $ ADRI -'20,A < TRANSLATION PAR RAPPORT A 'SPACE' JAL LOOPB < ERREUR. LXI 0 < RETOUR OK. ADR A,C < TRANSLATION DE LA BASE C POUR < ATTEINDRE LE RELAI DU NOUVEAU < NOEUD. LA ADER,C < ACCES A L'@PRIMITIVE DE (Y). JMP E962 < VERS LA BOUCLE DE L'INTERPORETEUR < < < P R I M I T I V E G O T O : < < PRIMA: EQU $ LXI 0 < UN RETOUR OK SUFFIT. < < < R E T O U R D E S P R I T I V E S : < < LOOPB: EQU $ LA PR,C < POUR TESTER LES INDICATEURS. TBT GON1 < DOIT-ON ALLER EN N1 ??? JNC E961 < NON. LA AGON1 < OUI : A=@NOEUD N1. JMP E962 < VERS LE SAUT EN N1. E961: EQU $ TBT LPRIM < ARG2 EST-IL ABSENT ??? SBCR C < SI OUI ON REMONTE D'UNE UNITE. ADRI ADER-PR,C < PRIMITIVE SEQUENTIELLE A PRIORI. TBT BSEQ < EST-CE SEQUENTIEL ??? JC LOOP < OUI , PRIMITIVE SEQUENTIELLE. < < CAS DES PRIMITIVES A ADRESSE : TEST < DES CONDITIONS DE RETOUR (X) : < CPZR X < COMMENT CELA S'EST-IL PASSE ??? JNE E2 < MAL : RETOUR PAR ADER. ADRI ADOK-ADER,C < BIEN , RETOUR PAR ADOK. E2: EQU $ LA 0,C < ACCES A L'@PRIMITIVE SUIVANTE. JAL LOOP < EN FAIT ON VIENT DE RECUPERER < LA PRIMITIVE SUIVANTE , ET < NON PAS SON ADRESSE ... E962: EQU $ LR A,C < C POINTE LA PRIMITIVE SUIVANTE. < < < B O U C L E D E L ' I N T E R P R E T E U R : < < LOOP: EQU $ LAI 0 < NETTOYAGE DE A. LB PR,C < ACCES A LA PRIMITIVE COURANTE. DV C100 < DECONCATENATION : < B=ARG1 , < A=NOM DE LA PRIMITIVE (C). ANDI 'F < ON SUPPRIME LES INDICATEURS. ADRP A < VERS LE TRAITEMENT DE (A). < < T A B L E D ' A I G U I L L A G E : < JMP PRIMC < PRIMITIVE CALL. JMP PRIMCI < PRIMITIVE CALL INDIRECT. JMP PRIMPS < PRIMITIVE PUSH. JMP PRIMPL < PRIMITIVE PULL. JMP PRIMG < PRIMITIVE GET CARACTERE. JMP PRIMTD < PRIMITIVE TEST DIRECT CARACTERE. < < < P R I M I T I V E T E S T C A R A C T E R E : < < < ARGUMENT : < Y=CARACTERE COURANT , < B=ARG1=CARACTERE ATTENDU. < < PRIMT: EQU $ LXI 1 < NON RECONNAISSANCE A PRIORI. CPR Y,B < TEST CARACTERE ??? JNE LOOPB < NON RECONNAISSANCE : X#0 9 JMP PRIMA < RECONNAISSANCE : RETOUR OK. < < < P U S H R E C U R S I V I T E : < < < ARGUMENTS : < B=0 : COMPTER UNIQUEMENT LES '(' , < B#0=CAUSE DU PUSH : EMPILEMENT REEL DANS PIR ; < ='40 : PUSH POUR REPEAT , < ='20 : PUSH POUR APPEL PROGRAMME , < ='10 : PUSH POUR SAUT DEFINITION PROGRAMME , < ='20+'10 : PUSH POUR APPEL PROGRAMME , AVEC < CHANGEMENT D'ITEM COURANT. < Y=NBRE DE REPETITIONS A FAIRE SOUS CE NIVEAU (SI < B#0). < < PRIMPS: EQU $ CPZR B < EST-CE UN VRAI PUSH ??? JE E15 < NON SEULEMENT COMPTER '('. < < CAS DES PUSH VERITABLES : < LA APRC < ACCES AU RELAI COURANT DE PIR. RBT 0 < RAZ DU BIT INDEX. LXI CDCP < RETOUR EN ERREUR A PRIORI. CP TPR < EST-ON AU SOMMET DE PIR ??? JGE LOOPB < OUI , RETOUR EN ERREUR. LA APRC ADRI LEPR,A < NON CALCUL @ENTREE SUIVANTE. STA APRC < MAJ DU RELAI COURANT DE PIR. < < INITIALISATION DE LA NOUVELLE ENTREE DE PIR : < SWBR Y,A < Y=COMPTE DE REPETITIONS. ORI 1 < CP=1 : COMPTE PARENTHESES. STA &APRC < RANGEMENT DE CD ET CP. LXI IR < RETOUR OK. SWBR B,A < OCTET0(A)=CAUSE DU PUSH. AD IEG < ET CONCATENATION INDEX COURANT. TBT BITREP < EST-CE UN PUSH POUR REPEAT ??? SBCR A < SI OUI , RETOUR SUR '('. STA &APRC < < TEST D'UN CHANGEMENT D'ITEM : < TBT BITPRO JNC PRIMA < CE N'EST PAS UN APPEL PROGRAMME. TBT BITDEF < CAS D'UN APPEL PROG. Y-A-T'IL < DE PLUS CHANGEMENT D'ITEM ??? JNC PRIMA < NON , RETOUR OK. BSR ACHGTI < SI OUI , CHANGEMENT D'ITEM. E201: EQU $ JMP PRIMA < VERS UN RETOUR OK A LOOPB. < < C O M P T E D E S ' ( ' : < E15: EQU $ LXI CP LBY &APRC < ACCES AU COMPTE ALGEBRIQUE. ADRI 1,A < ET UNE DE PLUS. TBT 7 < OVERFLOW DANS L'OCTET ??? JC LOOPB < OUI , RETOUR EN ERREUR ... STBY &APRC < NON , OK. JMP PRIMA < VERS UN RETOUR OK. < < < P U L L R E C U R S I V I T E : < < < ARGUMENT : < B#0 : PULL VERITABLE , < =0 : DECOMPTER UNIQUEMENT LES ')'. < < PRIMPL: EQU $ < < DECOMPTE DES PARENTHESES : < LXI CP LBY &APRC < A=CP COURANT SOUS CE NIVEAU. JAE LOOPB < TROP DE ')' : RETOUR EN ERREUR. ADRI -1,A STBY &APRC < MAJ DU CP COURANT. JANE PRIMA < RETOUR OK SANS PULL. < < CAS OU CP=0 : < CPZR B < TEST DU MODE D'APPEL. JE LOOPB < RETOUR EN ERREUR. E101: EQU $ LXI CD LBY &APRC < A=CD COURANT. JAE PRIMA < CAS DE LA 1ERE ENTREE DANS PIR , < IL NE FAUT PAS DEPILER ... ADRI -1,A < DECOMPTE DES REPETITIONS. JANE E14 < IL RESTE AU MOINS UNE REPETITION. < < CAS CD=0 : PULL VERITABLE : < LA APRC RBT 0 < ACCES A L'@ENTREE COURANTE. LXI 1 < RETOUR EN ERREUR A PRIORI. CP BPR < EST-ON AU BAS DE LA PILE ??? JLE LOOPB < OUI , RETOUR EN ERREUR. E90: EQU $ LA APRC ADRI -LEPR,A < NON , RETOUR SUR L'ENTREE < PRECEDENTE. STA APRC < ET MAJ DU RELAI COURANT. JMP PRIMA < VERS UN RETOUR OK. < < ACS OU CD#0 : 2L RESTE AU MOINS UNE REPETITION : < E14: EQU $ STBY &APRC < MAJ DU CD COURANT. LXI IR LA &APRC LR A,B < B=ENTREE IR DE PIR. TBT BITPRO < EST-CE UN RETOUR PROGRAMME ??? AND CFFF < RAZ DES BITS 0,1,2,3. STA IEG < A=INDEX DE DEBUT DE REPETITION. JNC LOOPB < CE N'EST PAS UN RETOUR PROGRAMME < ON FAIT UN RETOUR OK. < < CAS D'UN RETOUR DE PROGRAMME : < TBT 16+BITDEF < CHANGEMENT D'ITEM COURANT ??? JNC E90 < NON , JUSTE UN PULL RECURSIVITE. BSR ACHGTI < ET OUI , CHGT D'ITEM COURANT. JMP E90 < VERS LE PULL RECURSIVITE. < < < C H A N G E M E N T D ' I T E M C O U R A N T : < < CHGTI: EQU $ LA ACCEB NGR A,A < INVERSION DE LA CONSTANTE < DE TRANSLATION. STA ACCEB < ET MAJ. AD AIC STA AIC < TRANSLATION DU RELAI D'ACCES < A L'ITEM COURANT. RSR PAGE < < < P R O G R A M M E I N T E R P R E T A T I F < D E G E S T I O N D E S S E Q U E N C E S < V I D E O S : < < COM0: EQU $ BYTE PC;0 WORD CHECKT < VALIDATION TYPE ITEM COURANT. WORD N700 < ERREUR : PAS TYPE 'T' ... < < A C C E S C O M M A N D E C O U R A N T E : < N1: BYTE PGS;0 < ACCES CARACTERE COURANT. < < A N A L Y S E D E L A C O M M A N D E : < BYTE PTD;0 < TEST DIRECT CARACTERE. WORD N22 < CAS DES CARACTERES HORS 'SPACE'-Z WORD N1 < 'SPACE' EST NEUTRE. WORD N750 < ! PAUSE DE N SECONDES. WORD N3201 < "W APPEL DE 'TW', < "X APPEL DE 'TX', < "Y APPEL DE 'TY', < "I APPEL DE 'TI', < "V APPEL DE 'TI', < "C APPEL DE 'TC'. < "D APPEL DE 'TD'. < "2 APPEL DE 'T2', < "3 APPEL DE 'T3', < "4 APPEL DE 'T4'. WORD N610 < # < # : A NA PAS UTILSER COMME < NOM DE PRIMITIVE CAR IL EST < SOUVANT LE 1ER CARACTERE DU < NOM D'UNE IMAGE. WORD N302 < $ APPEL BIBLIOTHEQUE WORD N8 < % BOUCLE D'ITERATION WORD N7 < & APPEL GLOBAL PROGRAMME WORD N941 < ' APPEL ARGUMENT FORMEL WORD N14 < ( OPEN RECURSIVITE WORD N15 < ) CLOSE RECURSIVITE WORD N3200 < * APPEL 'TI' WORD N5000 < + DIFFUSION VIDEO ET ACCES DKU. WORD N4012 < , APPEL NOM IMAGE 12K. WORD N4010 < - APPEL NOM IMAGE VIDEO/FLOPPY WORD N23 < . POINT D'ARRET (RETOUR CCI) WORD N22 < / RETOUR A L'APPELANT (GE) WORD N27 < 0 N'EST PLUS UTILISE. WORD N27 < 1 N'EST PLUS UTILISE. WORD N27 < 2 N'EST PLUS UTILISE. WORD N27 < 3 N'EST PLUS UTILISE. WORD N5104 < 4 ENTREE CAMERA RVB. WORD N5105 < 5 ENTREE CAMERA ROUGE SEUL. WORD N5106 < 6 ENTREE CAMERA VERT SEUL. WORD N5107 < 7 ENTREE CAMERA BLEU SEUL. WORD N27 < 8 N'EST PLUS UTILISE. WORD N4000 < 9 MAKE COPY VISU EMISSION. WORD N2001 < : CHARGEMENT BIBLIOTHEQUE SUR L'ITEM < COURANT. WORD N1 < ; ELEMENT NEUTRE WORD N340 < < COMMENTAIRE OU TEXTE A EDITER WORD N1001 < = DEFINITION ARGUMENT FORMEL WORD N16 < > DEFINITION DE PROGRAMME WORD N860 < ? APPEL DIRECT PROG EN BIBLI WORD N31 < @ MODIFICATION DE CTTE WORD N610 < A B ... X Y Z < < R E T O U R A U C C I : < N23: BYTE PC+PGON1;0 WORD GOCCI < RETOUR CCI PUIS VERS N1 SI !GO. < < E R R E U R S D ' E X E C U T I O N : < N24: EQU $ N25: EQU $ N27: EQU $ BYTE PC+PGON1;0 WORD CARUP < MISE EN EXPOSANT DU CARACTERE < EN ERREUR. < < R E T O U R A ' G E ' : < N22: BYTE PCS;0 WORD GOGE < RETOUR A GE , ET VERS N1 < SI ERREUR DE CHARGEMENT. N700: EQU N22 < < A P P E L ' T I ' PAR *. < N3200: BYTE PC+PGON1;0 WORD CALLTI < VERS L'APPEL DE L'OVERLAY 'TI'. < < A P P E L ' T W ' O U ' T X ' O U ' T Y ' O U ' T I ' < O U ' T C ' O U ' T D ' . . . E T C . .. < P A R L A P R I M I T I V E ". < N3201: BYTE PGS;0 < ACCES AU CARACTERE COURANT. BYTE PTM;"W" < TEST APPEL TW. WORD N32011 BYTE PC+PGON1;XXTW WORD CALLTW N32011: BYTE PTM;"X" < TEST APPEL TX. WORD N32012 BYTE PC+PGON1;XXTX WORD CALLTX N32012: BYTE PTM;"Y" < TEST APPEL TY. WORD N32013 BYTE PC+PGON1;XXTY WORD CALLTY N32013: BYTE PTM;"Z" < TEST APPEL TZ. WORD N32014 BYTE PC+PGON1;XXTZ WORD CALLTZ N32014: BYTE PTM;"C" < TEST APPEL TC. WORD N32015 BYTE PC+PGON1;XXTC WORD CALLTC N32015: BYTE PTM;"V" < TEST APPEL TI. WORD N32016 BYTE PC+PGON1;0 WORD CALLTI N32016: BYTE PTM;"D" < TEST APPEL TD. WORD N32017 BYTE PC+PGON1;XXTD WORD CALLTD N32017: BYTE PTM;"I" < TEST APPEL TI. WORD N32018 BYTE PC+PGON1;0 WORD CALLTI N32018: BYTE PTM;"2" < TEST APPEL T2. WORD N32019 BYTE PC+PGON1;XXT2 WORD CALLT2 N32019: BYTE PTM;"3" < TEST APPEL T3. WORD N32020 BYTE PC+PGON1;XXT3 WORD CALLT3 N32020: BYTE PTM;"4" < TEST APPEL T4. WORD N32021 < ERREUR... BYTE PC+PGON1;XXT4 WORD CALLT4 N32021: BYTE PTM;"5" < TEST APPEL T5. WORD N32030 < NON... BYTE PC+PGON1;XXT5 WORD CALLT5 N32030: BYTE PC+PGON1;0 < APPEL D'UN OVERLAY QUELCONQUE, WORD CALLPR < DONT LE NOM EST DANS 'Y'... < < M A K E C O P Y : < N4000: EQU $ BYTE PC;0 WORD MCOPY WORD N27 < ERREUR D'ASSIGNATION. WORD N1 < OK , VERS LA COMMANDE SUIVANTE. < < D I F F U S I O N V I D E O E T A C C E S D K U. < N5000: BYTE PGS;0 < ACCES AU CARACTERE COURANT. BYTE PTM;"1" WORD N5001 BYTE PC+PGON1;0 WORD PLUS1 N5001: BYTE PTM;"2" WORD N5002 BYTE PC+PGON1;0 WORD PLUS2 N5002: BYTE PTM;"3" WORD N5003 BYTE PC+PGON1;0 WORD PLUS3 N5003: BYTE PTM;"S" WORD N5004 BYTE PC+PGON1;0 WORD PLUSS N5004: BYTE PTM;"0" WORD N5010 BYTE PC+PGON1;0 WORD PLUS0 N5010: BYTE PTM;"4" WORD N5020 BYTE PC+PGON1;0 WORD PLUS4 IF XXSGDK-XXXOUI,XOPT1,,XOPT1 N5020: BYTE PTM;"B" WORD N5030 BYTE PC;0 WORD PLUSB WORD N25 WORD N1 N5030: BYTE PTM;"K" WORD N5040 BYTE PC;0 WORD PLUSK WORD N25 WORD N1 N5040: BYTE PTM;'40 < '40 = A-ROND ! WORD N5050 BYTE PC;0 WORD PLUSA WORD N25 WORD N1 N5050: BYTE PTM;"E" WORD N5060 BYTE PC;0 WORD PLUSE WORD N25 WORD N1 N5060: BYTE PTM;"F" WORD N5070 BYTE PC;0 WORD PLUSF WORD N25 WORD N1 < < +I +D<NOM-IMAGE>; ++<NOM-IMAGE>; +-<NOM-IMAGE>; < N5070: BYTE PTM;"I" < INITIALISATION TABLE D'OCCUPATION DKU. WORD N5080 BYTE PC+PGON1;0 < CAR SI CA SE PASSE MAL, ON AURA TRAPPE! WORD PLUSI N5080: BYTE PTM;"D" < DISPLAY. WORD N5090 BYTE PC;0 WORD PLUSD WORD N5110 WORD N5110 N5090: BYTE PTM;"+" < CREATION. WORD N5100 BYTE PC;0 WORD PLUSP WORD N5110 WORD N5110 N5100: BYTE PTM;"-" < DELETE. WORD N25 BYTE PC;0 WORD PLUSM WORD N5110 N5110: BYTE PC;0 WORD SAVNIS < SAVE NOM (INDEX 1ER CARACTERE...). WORD N1500 WORD N1500 XOPT1: VAL ENDIF IF XXSGDK-XXXNON,XOPT1,,XOPT1 N5020: EQU N25 < ERREUR... XOPT1: VAL ENDIF < < T R A I T E M E N T D E S ' ( ' S I M P L E S : < N14: BYTE PUSH;0 < POUR FAIRE UNIQUEMENT +1 SUR CP. WORD N27 < TROP DE '(' : ABORT ... WORD N1 < OK. < < T R A I T E M E N T D E S ' ) ' : < N15: BYTE PULL;1 < PULL VERITABLE. WORD N27 < ERREUR : TROP DE ')' 9.. WORD N1 < < C O M M E N T A I R E O U T E X T E A E D I T E R : < N340: BYTE PCS;0 WORD SAVNOM < SAVE INDEX 1ER CARACTERE. BYTE PGS;0 < ON SAUTE LE PREMIER CARACTERE (CF. LES < ACCES AU 'CCI'...). N800: BYTE PGS;0 < ACCES CARACTERE COURANT (Y). BYTE PTM;";" < FIN DE COMMENTAIRE ??? BYTE PT;"!" < FIN DE MESSAGE ??? WORD N1 < FIN DE COMMENTAIRE , VERS N1. WORD N800 < NI L'UN , NI L'AUTRE , AU SUIVANT BYTE PC+PGON1;0 < EDITION DU TEXTE. WORD TEXTE < VERS N22 SI CTRL-X-OFF ... < < D E F I N I T I O N A R G U M E N T F O R M E L < C O U R A N T : < N1001: EQU $ BYTE PGS;0 < ACCES AU CARACTERE COURANT (Y). BYTE PTM;"(" < EST-CE UNE '(' ??? WORD N27 < NON , ERREUR ... BYTE PC;0 < OUI , OK. WORD DARGF < SAVE L'INDEX DU 1ER CARACTERE < DE L'ARGUMENT FORMEL. WORD N1000 < VERS LE SAUT DEFINITION PROG. < < A P P E L A R G U M E N T F O R M E L : < N941: EQU $ BYTE PC;0 WORD CARGF WORD N27 < ERREUR : PAS D'ARG. FORMEL. WORD N942 < OK. < < D E M A N D E D E R E P E T I T I O N S : < N8: EQU $ BYTE PGS;0 BYTE PC;0 WORD REPET1 < RECUPERATION NBRE ITERATIONS. WORD N27 < ERREUR : NBRE ERRONE. N30: BYTE PGS;0 BYTE PTM;"(" < EST-CE UNE '(' ??? WORD N27 < NON , ERREUR ... BYTE PCS;0 WORD REPET2 < Y=NBRE REPETITIONS. BYTE PUSH;CODREP < PUSH RECURSIVITE. WORD N27 < ERREUR : OVERSTACK ... WORD N1 < OK , ET C'EST PARTI ... < < M O D I F I C A T I O N C O N S T A N T E : < N31: EQU $ BYTE PGS;0 BYTE PC;0 WORD REPET1 < RECUPERATION CONSTANTE. WORD N27 < ERREUR DE CONSTANTE. BYTE PC+PGON1;0 WORD SCTTE < OK , MAJ CONSTANTE ... < < S A U T D E F I N I T I O N P R O G R A M M E : < N16: EQU $ BYTE PGS;0 BYTE PTM;"(" < EST-CE UNE '(' ??? WORD N16 < BOUCLAGE JUSQU'A TROUVER '('. N1000: EQU $ < ENTRY ARGUMENT FORMEL COURANT. BYTE PCS;1 < A NOTER : B=1 !!! WORD SETY < POUR FAIRE CD=1. BYTE PUSH;CODDEF < EMPILEMENT LORS DE '('. WORD N27 < ERREUR D'OVERSTACK. N63: BYTE PGS;0 BYTE PTM;"(" < EST-CE UNE '(' ??? BYTE PT;")" < EST-CE UNE ')' ??? WORD N64 < CAS DES '('. WORD N63 < ON BOUCLE SUR LES UATRES < CARACTERES (# DE '(' ET ')'). BYTE PULL;0 < -1 SUR CP POUR ')'. WORD N65 < ARRET SUR CP=0. WORD N63 < BOUCLAGE SI CP#0. N64: BYTE PUSH;0 < +1 SUR CP POUR '('. WORD N25 < ERREUR : OVERSTACK. WORD N63 < OK , BOUCALGE. N65: BYTE PUSHS;0 < POUR FAIRE CP=1 A LA FIN DE < LA DEFINITION. BYTE PULL;1 < PULL VERITABLE DE FIN DE < RECURSIVITE. WORD N25 < ERREUR : OVERSTACK. WORD N1 < OK , COMMANDE SUIVANTE. < < A P P E L P R O G R A M M E : < N7: EQU $ N411: EQU $ BYTE PCS;0 WORD SAVNOM < SAVE=INDEX 1ER CARACTERE NOM. N80: BYTE PGS;0 BYTE PTM;";" < EST-CE LA FIN DU NOM ??? WORD N80 < NON , BOUCLAGE JUSQU'A ';' 9 BYTE PC;0 WORD LOOKP < RECHERCHE DEFINITION PROGRAMME. WORD N300 < LE PROGRAMME N'EXISTE PAS DANS < L'ITEM COURANT. N942: EQU $ BYTE PCS;2 < A NOTER : B=2 !!! WORD SETY < POUR FAIRE : Y=2. BYTE PUSH;CODPRO < PUSH RECURSIVITE. < (AVEC CD=2). WORD N27 < ERREUR : OVERSTACK. N301: BYTE PC+PGON1;0 WORD START < LANCEMENT DU PROGRAMME TROUVE. < < A P P E L D I R E C T P R O G R A M M E < E N B I B L I O T H E Q U E : < N860: EQU $ BYTE PCS;0 WORD SAVNOM < SAV)=INDEX 1ER CARACTERE NOM. N861: BYTE PGS;0 BYTE PTM;";" < EST-CE LA FIN DE NOM ??? WORD N861 < NON , ON BOUCLE JUSQU'A ';'. < < R E C H E R C H E E N B I B L I O T H E Q U E : < N300: BYTE PC;0 WORD CHECKB < VALIDATION BIBLIOTHEQUE. WORD N25 < ERREUR DE TYPE ... BYTE PC;0 WORD LOOKPB < OK , RECHERCHE EN BIBLIOTHEQUE. WORD N25 < ERREUR : PROGRAMME INEXISTANT ... BYTE PCS;2 WORD SETY < Y=2. BYTE PUSH;CODPRO+CODDEF < PUSH RECURISIVITE AVEC < CHANGEMENT ITEM COURANT. WORD N27 < ERREUR : OVERSTACK. WORD N301 < OK , START DANS LE PROGRAMME. < < C H A R G E M E N T B I B L I O T H E Q U E : < N302: EQU $ BYTE PCS;0 WORD SAVNOM < SAVE=INDEX 1ER CARACTERE NOM. N303: BYTE PGS;0 BYTE PTM;";" < EST-CE LA FIN DE NOM ??? WORD N303 < ON BOUCLE JUSQU'A ';' ... BYTE PC;0 WORD LOADB < TENTATIVE DE CHARGEMENT DE < LA BIBLIOTHEQUE. WORD N25 < ERREUR DE BIBLIOTHEQUE. BYTE PC;0 WORD CHECKB < VALIDATION BIBLIOTHEQUE. WORD N25 < ERREUR DE TYPE. WORD N1 < OK. < < C H A R G E M E N T B I B L I O T H E Q U E S U R < < L ' I T E M C O U R A N T L U I - M E M E. < N2001: BYTE PC;0 WORD SAVNOV < SAVE=INDEX 1ER CARACTERE DU NOM ET < POSITIONNEMENT INDICATEUR 'TYPOV'. WORD N303 WORD N303 < < D E M A N D E D E P A U S E : < N750: EQU $ BYTE PGS;0 BYTE PC;0 WORD REPET1 < SAVE=DUREE DE LA PAUSE EN < SECONDES. WORD N27 < ERREUR DE DUREE. BYTE PC+PGON1;0 WORD PAUSE < PAUSE DE (SAVE) SECONDES. < < A P P E L N O M I M A G E < V I D E O / F L O P P Y : < N4010: BYTE PC;0 WORD SAVNOM < SAVE LE 1ER CARACTERE DU NOM. WORD N1500 < VERS LA RECUPERATION DU NOM. WORD N1500 < VERS LA RECUPERATION DU NOM. N4012: BYTE PC;0 WORD SAVN12 < SAVE LE 1ER CARACTERE DU NOM < DE L'IMAGE 12K ET POSITIONNEMENT < INDICATEUR 'TYPIM'. WORD N1500 WORD N1500 < < < P R I M I T I V E S N O N R E C O N N U E S : < E S S A I I M A G E V I D E O : < < N610: EQU $ BYTE PCS;0 WORD SNIMAG < SAVE 1ER CARACTERE NOM IMAGE. N1500: BYTE PGS;0 BYTE PTM;";" < EST-CE ';' DE FIN DE NOM ??? WORD N1500 < BOUCLAGE JUSQU'A ';'. BYTE PC;0 WORD LOADI < TENTATIVE DE LOAD IMAGE VIDEO. WORD N25 < ERREUR D'IMAGE (N'EXISTE PAS , < OU MAUVAIS TYPE...) WORD N1 < OK , COMMANDE SUIVANTE. < < E N T R E E C A M E R A S O L A R. < N5104: BYTE PC+PGON1;0 WORD INRVB N5105: BYTE PC+PGON1;0 WORD INR N5106: BYTE PC+PGON1;0 WORD INV N5107: BYTE PC+PGON1;0 WORD INB PAGE < < < P I L E D E R E C U R S I V I T E : < < PIR: EQU $ WORD 0;0 < 1ERE ENTREE DE PIR. DZS X1 < PILE DE RECURSIVITE. PAGE < < < I M P L A N T A T I O N : < < X12: EQU ZERO+PILE-LTNI-LTNI X10: VAL X12-$ ZEROV: EQU ZERO+X10 < ERREUR VOLONTAIRE D'ASSEMBLAGE < SI MAUVAISE IMPLANTATION. DZS X10+1 EOT #SIP GEN PROCESSEUR#