NMPROC: VAL "SC" < NOM DU PROCESSEUR. IDP "SC - RELEASE 14/03/1980" IDP "GENERATEUR DE FILMS VIDEOS" IDP "JOHN F. COLONNA" 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) 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 12 < NBRE D'ENTREES DE PIR. PAGE < < < L O C A L : < < LOCAL LOC: EQU $ < < RELAIS A METTRE EN TETE DU LOCAL, AFIN < D'ABSOLUTISER LES DEPLACEMENTS D'ACCES SIMPLI- < FIANT AINSI L'ECRITURE DE PROGRAMMES EN OVERLAY < DANS LES BIBLIOTHEQUES : < < RESET 00 ('80) ARESET: WORD RESET < MISE D'UN POINT A 0 (NOIR). < SET 01 ('81) ASET: WORD SET < MISE D'UN POINT A BLANC (1). < INVER 10 ('82) AINVER: WORD INVER < INVERSION D'UN POINT. < TEST 11 ('83) ATEST: WORD TEST < TEST DE L'ETAT D'UN POINT (X,Y). < < DEMANDES A CMS4 : < DEMSGN: WORD '0402 < DEMANDE D'OVERLAY SGN. WORD BRANCH-ZERO*2 WORD ZERO-BRANCH+PILE-LTNI-LTNI*2 WORD -1 IF ORDI-"T",XWOR%,,XWOR% DELSGN: WORD '0302 < DEMANDE DELETE SGN LORS DES < APPELS DE 'TI'. WORD BRANCH-ZERO*2 WORD ZERO-BRANCH+PILE-LTNI-LTNI*2 WORD -1 XWOR%: VAL 0 IF ORDI-"S",XWOR%,,XWOR% DEMOVA: WORD '0602 < CHARGEMENT OVERLAY ' A'. WORD IMAG+LIMAG-ZERO*2 < ADRESSE D'IMPLANTATION. WORD '1000 < 2 K MOTS MAXI. WORD -1 ARUNA: WORD XRUNA < RUN OVERLAY ' A'. IOVA: WORD 1 < INDICATEUR CHARGEMENT OVERLAY ' A': < = 0 : IL A DEJA ETE CHARGE, < = 1 : IL N'A PAS ENCORE ETE CHARGE. XWOR%: VAL 0 DEMBIB: WORD '0502 < CHARGEMENT DES BIBLIOTHEQUES. WORD 0 < @OCTET ITEM. WORD 2*LTNI WORD -1 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. DEMOUT: WORD '0202 < DEMANDE ECRITURE SU OUT. WORD 0 < @OCTET DU MESSAGE. WORD 0 < LONGUEUR OCTET DU MESSAGE. DERASE: WORD '0205 < EFFACEMENT DE L'ECRAN. OG: WORD '0B03 < OG SUR LA VISU D'EMISSION. CG: WORD '0B04 < CG SUR LA VISU D'EMISSION. WG: WORD '0B0A < ECRITURE GRAPHIQUE SUR LE < VISU D'EMISSION. WORD IMAG-ZERO*2 WORD 0 < LA LONGUEUR EST VARIABLE. COPY: WORD '0B07 < DEMANDE DE MAKE-COPY. BYTE '1B;'17;'8D;'04 < ESC,CTRL-W,R/C,EOT. DERASF: WORD '0B05 < ERASE LA VISU D'EMISSION. DIRECT: WORD '0B07 < ECRITURE DIRECTE SUR LA < VISU D'EMISSION. BYTE '1B;0 < 'ESC'-<CARACTERE>. BYTE '04;0 DEMMEM: WORD '0004 < DEMANDE DE 8K MOTS. RELMEM: WORD '0004 < RETOUR A 4K MOTS. WORD '4000 WORD '2000 IF ORDI-"S",XWOR%,,XWOR% DEMM10: WORD '0004 < DEMANDE DE 10 K MOTS (A CAUSE DE DZS 1 < L'OVERLAY ' A'. WORD '5000 XWOR%: VAL 0 SLEEP: WORD '0005 < DEMANDE DE TEMPORISATION DE < DUREE VARIABLE. WORD 0 SAVE: WORD 0 < ZONE DE SAUVEGARDE TEMPORIARE. DEMCCI: WORD '0001 < RETOUR AU CCI. < < RELAIS DIVERS : < IF ORDI-"T",XWOR%,,XWOR% ASP3: WORD SP3 < ROUTINE MAITRE DE STABILI- < SATION DE L'IAMGE VIDEO. < (SI =0 : CE N'EST PAS :SYS !!!) ASP5: WORD SP5 < ROUTINE DE MISE EN MARCHE DU < DU SYSTEME VIDEO , OU 0 SI < LE NUMERO DE COMPTE EST # DE :SYS ASP6: WORD SP6 < ARRETE DE LA VIDEO OU 0 SI < ACN # DE :SYS. XWOR%: VAL 0 IF ORDI-"S",XWOR%,,XWOR% STDKU: WORD '8A01 < STABILISATION IMAGE, WORD IMAG-ZERO*2 WORD LIMAG*2 VTVCTL: WORD 0 < INDICATEURS DE COULEUR... DTVCTL: WORD TVPV < DERNIERE COMPOSANTE TV UTILISEE. XWOR%: VAL 0 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. 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. IF ORDI-"T",XWOR%,,XWOR% 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'. XWOR%: VAL 0 < < CONSTANTES DIVERSES : < 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. LDESS: WORD 2*LIMAG < LONGUEUR MAX D'UN DESSIN < DE SUMULATION FLOPPY. 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" NSC: WORD "SC" < NOM DU PROCESSEUR 'SC'. NTI: WORD "TI" < NOM DE L'OVERLAY 'TI'. ACNSYS: ASCI ":SYS" < NUMERO DE COMPTE DU SYSTEME. KIN: WORD -1 < COMPTEUR DES ENTREES DANS 'SC' : < -1 : 1ERE ENTREE , < 0 : LORS D'UN ALT-MODE. IF ORDI-"T",XWOR%,,XWOR% VIDEON: WORD 0 < 0 : LA VIDEO EST A METTRE EN < MARCHE , < 1 : LA VIDEO EST A ARRTEER. XWOR%: VAL 0 < < 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. < < GENERATION DE SOCIETES : < AIMAG: WORD IMAG < @IMAGE VIDEO. XIMAG: WORD IMAG-1,X < ACCES IMAGE PAR JDX. ALIMAG: WORD LIMAG < LONGUEUR EN MOTS DE L'IMAGE. MAND5: WORD '5555 < QUADRILLAGE IMPAIR. MANDA: WORD 'AAAA < QUADRILLAGE PAIR. DELX: WORD 2 < PROGRESSION INITIALE DE X. DELY: WORD 2 < PROGRESSION INITIALE DE Y. OENTRY: WORD 0 < 0 : FAIRE LE JEU DE LA VIE. < #0 : APPEL DES OVERLAYS EN < BIBLIOTHEQUES ($). BASCUL: WORD 1 < INDICATEUR DU QUADRILLAGE < COURANT POUR LES SOCIETES (+-1). VOISIN: WORD 0 < NBRE DE VOISINS D'UN POINT < Y COMPRIS CELUI-CI S'IL EXISTE. STACK: DZS 10 < PILE DE GENERATIUON DES SOCIETES. DZS 3 < ET BIN OUI CA SUFFISAIT PAS ..!!? AOP: WORD OP < @INSTRUCTION VARIABLE SCRS/SCLS. < < CONSTANTES SONORES : < ASP: WORD SP < ROUTINE MAITRE DE SORTIE CU1. AOCTAV: WORD OCTAV < ADRESSE DE L'OCTAVE DEMANDE. ANPER: WORD NPER < ADRESSE DU NBRE DE PERIODES. ATEMPO: WORD TEMPO < ADRESSE DE LA TEMPRISATION < DES FREQUENCES. AASIG: WORD ASIG < ADRESSE DE L'ADRESSE DU < SIGNAL TRANSMIS A SP. < < SINUSOIDE : < SINUS: EQU $ BYTE 128-0;128-9;128-17;128-26;128-34;128-42 BYTE 128-50;128-57;128-64;128-70;128-77;128-82 BYTE 128-87;128-90;128-93;128-97;128-98;128-99 BYTE 128-100;128-99;128-98;128-97;128-93;128-90 BYTE 128-87;128-82;128-77;128-70;128-64;128-57 BYTE 128-50;128-42;128-34;128-26;128-17;128-9 BYTE 128+0;128+9;128+17;128+26;128+34;128+42 BYTE 128+50;128+57;128+64;128+70;128+77;128+82 BYTE 128+87;128+90;128+93;128+97;128+98;128+99 BYTE 128+100;128+99;128+98;128+97;128+93;128+90 BYTE 128+87;128+82;128+77;128+70;128+64;128+57 BYTE 128+50;128+42;128+34;128+26;128+17;128+9 SIN: EQU $ WORD SINUS-$*2 < -NBRE D'ECHANTILLONS. PROG IF ORDI-"S",XWOR%,,XWOR% OVA: ASCI " A " < NOM DE L'OVERLAY ' A'. WORD '04D0 < EOT ETC... WORD '1F00 WORD 0 FOVA: EQU $ XOVA: VAL FOVA-OVA < LONGUEUR 'EN-TETE' OVERLAY ' A'. XRUNA: EQU IMAG+LIMAG+XOVA < ADRESSE ENTRY DANS ' A'. XWOR%: VAL 0 PAGE IF ORDI-"T",XWOR%,,XWOR% TIMAG: WORD IMAG < ADRESSE RELATIVE DE L'IMAGE. EOT #SIP SP3# XWOR%: VAL 0 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. IF ORDI-"T",XWOR%,,XWOR% < < 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>. XWOR%: VAL 0 < < 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 IF ORDI-"T",XWOR%,,XWOR% < < < A P P E L E T R E T O U R D E ' T I ' : < < < 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 $ 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 NTI STA 0,W < MISE EN PLACE DU NOM DE 'TI'. 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 CALLTI < AVANT D'IETER L'APPEL DE TI. < < R E T O U R D E ' T I ' : < 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 TI ??? 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. XWOR%: VAL 0 PAGE IF ORDI-"S",XWOR%,,XWOR% < < A P P E L D E L A B R A N C H E ' A '. < < C'EST L'EX-TI QUI ETAIT UTILISE SUR T1600. EN SOLAR, SC CHARGE < AU LIEU DE TI, LA BRANCHE ' A' , JUSTE DERRIERE L'IMAGE RESIDENTE. < CETTE BRANCHE EST CHARGEE UNE FOIS POUR TOUTES, ELLE EXIGE DE < SC QU'IL PASSE A 10K. < A CHAQUE APPEL, SC LUI PASSE DES ARGUMENTS PAR REGISTRES: < < - 'B' INDEX IMAGE ARGUMENT EVENTUELLE. < - 'X' INDEX ITEM COURANT. < - 'Y' INDEX CARACTERE COURANT. < < ET L'APPELLE PAR 'BSR'. AU RETOUR, ' A' FOURNIT LE NOVEL INDEX < COURANT DANS 'A'. < CALLTI: EQU $ CPZ IOVA < ' A' A-T-IL DEJA ETE CHARGE ? JE CALLA1 < < DEMADE 10 K MOTS ET CHARGEMENT DE ' A'. < LAD DEMM10 SVC 0 < LRM A,B,X WORD OVA < ADRESSE DESCRIPTION EN-TETE DE ' A'. WORD IMAG+LIMAG < C'EST LA QUE SERA IMPLANTE ' A'. WORD XOVA < LONGUEUR EN-TETE DE ' A'. MOVE < ON PEUT MAINTENANT FAIRE LA DEMANDE DE CHARGEMENT. LAD DEMOVA SVC 0 JE CALLA2 WORD '1E16 JMP CALLTI < ON REESSAIE... CALLA2: EQU $ STZ IOVA < ' A' EST CHARGE UNE FOIS POUR TOUTES. CALLA1: EQU $ < < TRANSMISSION DES ARGUMENTS. < LB NOMARG < INDEX IMAGE ARGUMENT EVENTUELLE. LX AIC < ADRESSE ITEM COURANT. LY IEG < INDEX CARACTERE COURANT. < < APPEL. < BSR ARUNA LRM C,L,W,K WORD N1 WORD LOC+'80 WORD BRANCH WORD PILE-1 < < RETOUR DE ' A' : STOCKER LE NOUVEL INDEX COURANT. < STA IEG BR ALOOP < VERS LA BOUCLE DE L'INTERPRETEUR. XWOR%: VAL 0 PAGE < < < M I S E D ' U N P O I N T A 0 : < < RESET: EQU $ PSR X,C < SAVE X ET C. ADR B,X < CAHNGEMENT DE QUADRILLAGE. LR Y,A ADR B,A < CHANGEMENT DE QUADRILLAGE. SLLS 4 < CONVERSION DE Y EN UN NUMERO DE MOT. ADR A,C LR X,A SLRS 4 < CONVERSION DE X EN UN NEMERO DE < MOT. ADR A,C LAI 'F < MASQUE DE MODULO 16. ANDR A,X < CALCUL DU NUMERO DE BIT. LA 0,C < ACCES AU MOT CONTENAT LE POINT. RBT 0,X < MORT DU POINR M(X,Y). STA 0,C < MAJ DE L'IMAGE VIDEO. PLR X,C < RESTAURE X ET C. RSR PAGE < < < M I S E D ' U N P O I N T A 1 : < < SET: EQU $ PSR X,C < SAVE LA COORDONNEE X ET < L'@IMAGE VIDEO. ADR B,X < CHANGEMENT DE QUADRILLAGE. LR Y,A ADR B,A < CHANGEMENT DE QUADRILLAGE. SLLS 4 < CONVERSION DE LA < COORDONNEE Y EN UN < NUMERO DE MOT. ADR A,C LR X,A SLRS 4 < CONVERSION DE LA COORDONNEE < X EN UN NUMERO DE MOT. ADR A,C LAI 'F < MASQUE DE MODULO 16. ANDR A,X < X=NUMERO DU POINT DANS LE MOT. LA 0,C < A=MOT CONTENANT LE POINT. SBT 0,X < NAISSANE DE M(X,Y). STA 0,C < MAJ DE LHIMAGE VIDEO. PLR X,C < RESTAURE X ET C. RSR PAGE < < < I N V E R S I O N D ' U N P O I N T : < < INVER: EQU $ PSR X,C ADR B,X < CHANGEMENT DE QUADRILLAGE. LR Y,A ADR B,A < CHANGEMENT DE QUADRILLAGE. SLLS 4 < CONVERSION Y EN NUMERO-MOT. ADR A,C LR X,A SLRS 4 < CONVERSION X EN NUMERO-MOT. ADR A,C LAI 'F < MASQUE MODULO 16. ANDR A,X < CALCUL DU NUMERO DE BIT. LA 0,C < ACCES AU BON MOT ... IBT 0,X < INVERSION DU BON POINT. STA 0,C < MAJ DE L'IMAGE. PLR X,C RSR PAGE < < < T E S T D E S V O I S I N S D ' U N P O I N T : < < < FONCTION : < CETTE ROUTINE CALCULE LE NBRE DE < VOISINS IMMEDIATS D'UN POINT < VIDEO Y COMPRIS CELUI-CI S'IL < EXISTE. < < < RESULTAT : < A=0 : LE POINT EXISTE ET EST A 1 , < #0 : LE POINT N'EXISTE PAS (HORS L'ESPACE) , < OU BIEN IL EST A 0 , < VOISIN<--(VOISIN)+1 SI (A)=0. < < TEST: EQU $ LR X,A ANDI 'FF00 < AFIN DE VOIR SI (X) EST DANS < LE SEGMENT (0,255). JANE TEST1 < LE POINT N'EXISTE PAS. LR Y,A ANDI 'FF00 < POUR VOIR SI Y EST DANS LE < SEGMENT (0,255). JANE TEST1 < LE POINT N'EXISTE PAS. < < CAS OU LE POINT (X,Y) EST DANS L'ESPACE : < PSR X,C < SAVE LA COORDONNEE X ET L' < ADRESSE DE L'IMAGE VIDEO. LR Y,A IF CNMPL-16,,X100, IF ATTENTION : CNMPL EST MAUVAIS !!! X100: VAL 0 SLLS 4 < CONVERSION DE (Y) EN UN NUMERO DE MOTS. ADR A,C < PROGRESSION @IMAGE. LR X,A < COORDONNEE X DU POINT. SLRS 4 < CONVERSION EN UN NUMERO DE MOT. ADR A,C < C=@MOT CONTENANT LE POINT. LAI 'F < MASQUE DE MODULO 16. ANDR A,X < X=NUMERO DE BIT DANS LE MOT (C). LA 0,C < A=MOT CONTENANT LE POINT (X,Y). TBT 0,X < TEST DU POINT (X,Y). LAI -1 < A#0 A PRIORI. ADCR A < A=0 SI LE POINT EST A 1. PLR X,C < RESTAURE C ET X. JANE TEST1 < CAS OU LE POINT EST A 0. IC VOISIN < SI LE POINT EST A 1 , ON < LE COMPTABILISE DANS VOISIN. < < SORTIE DE LA ROUTINE : < TEST1: EQU $ RSR PAGE < < < G E N E R A T I O N D ' U N E S O C I E T E : < < < FONCTION : < 1- ENTRY=0 : < LES SOCIETES VIVENT EN BASCULE SUR 2 < QUADRILLAGE IMBRIQUES ET CONTENUS < DANS UNE IMAGE VIDEO . CETTE ROUTINE FAIT PASSER < D'UNE GENERATION A LA SUIVANTE , < EN CHANGEANT DE QUADRILLAGE. < < 2- ENTRY#0=@ITEM1/@ITEM2 : < DANS CES CONDITIONS, L'IMAGE COURANTE < EST EXPLOREE POINT A POINT, ET EN < CHACUN DE CEUX-CI, ON APPELLE LA ROUTINE < SITUEE EN OVERLAY DANS LA BIBLIOTHEQUE ($). < < < BASCUL : < BASCULE=0 : PAS DE BASCULE DE QUADRILLAGE. < BASCULE=1 : QUADRILLAGE PAIR VERS QUADRILLAGE IMPAIR , < BASCUL=-1 : IMPAIR VERS PAIR. < < LIFE: EQU $ LAD STACK-1 XR A,K < SAVE LE K DE SODOME , ET < REINITIALISE LE REGISTRE K. PSR A,C < SAVE LE K DE SODOME DANS A , < LA BASE C DE L'INTERPRETEUR. LA AIMAG LR A,C < C=@IMAGE VIDEO. CPZ OENTRY < QUE FAIRE ??? JE GOLIF < ENTRY=0 : JEU DE LA VIE. < < APPEL DES OVERLAYS : < LBI 0 < PAS DE BASCULE SUR LE QUADRILLAGE LYI 0 < INITIALISATION COORDONNEE Y. OV2: EQU $ LXI 0 < INITIALISATION COORDONNEE X. OV1: EQU $ PSR B,W < SAVE BASCUL ET @BRANCH. PSR X,Y,C,L < PAR EXTREME PRUDENCE. BSR &OENTRY < APPEL DE LA ROUTINE EN OVERLAY. PLR X,Y,C,L < RESTAURE... PLR B,W < RESTAURE BASCUL ET @BRANCH. ADRI 1,X < SINON, PROGRESSSION DE X. LR X,A CPI CNMPL*16-1 < ET VALIDATION. JLE OV1 < OK ADRI 1,Y < PROGRESSION COORDONNEE Y. LR Y,A CPI 1024/DY-1 < ET VALIDATION. JLE OV2 < OK. LXI 0 < C'EST FINI : RETOUR OK : X=0. JMP RETLIF < ET ON S'EN VA ... < < JEU DE LA VIE : < GOLIF: EQU $ LB BASCUL < B=INDICATEUR DE QUADRILLAGE COURANT. < < PARCOURS DU QUADRILLAGE COURANT : < EE1: EQU $ LYI 0 < Y=COORDONNEE Y INITIALE. CPZR B < TEST DU QUADRILLAGE COURANT. ADCR Y < Y=0/1 SUIVANT LE QUADRILLAGE. < < PARCOURS D'UNE LIGNE DU QUADRILLAGE : < EE2: EQU $ LXI 0 < X=COORDONNEE X INITIALE. CPZR B < TEST DU QUADRILLAGE COURANT. ADCR X < X=0/1 SUIVANT LE QUADRILLAGE. < < TEST DU VOISANNIAGE DU POINT COURANT (X,Y). < EE6: EQU $ STZ VOISIN < INITIALISATION DU COMPTEUR. LA DELX ADR A,X BSR ATEST < TEST DU POINT M(X+1,Y). LA DELY SBR A,Y BSR ATEST < TEST DU POINT M(X+1,Y-1). LA DELX SBR A,X BSR ATEST < TEST DU POINT M(X,Y-1). LA DELX SBR A,X BSR ATEST < TEST DU POINT M(X-1,Y-1). LA DELY ADR A,Y BSR ATEST < TEST DU POINT M(X-1,Y). LA DELY ADR A,Y BSR ATEST < TEST DU POINT M(X-1,Y+1). LA DELX ADR A,X BSR ATEST < TEST DU POINT M(X,Y+1). LA DELX ADR A,X BSR ATEST < TEST DU POINT M(X+1,Y+1). LA DELX SBR A,X LA DELY SBR A,Y BSR ATEST < TEST DU POINT M(X,Y). JAE EE3 < LE POINT M(X,Y) EST A 1. < < ACS OU M(X,Y) EST A 0 (IL NE PEUT ETRE INEXISTANT!!!) : < LA VOISIN CPI 3 < LE POINT M(X,Y) QUI EST A 0 A-T'IL < 3 VOISINS EXACTEMENT ??? JNE EE4 < NON RIEN A FAIRE. < < CAS DE 3 VOISINS : NAISSANCE DE M(X,Y) : < EE7: EQU $ < CAS DE LA SURVIE DE M(X,Y). BSR ASET < MISE DU POINT (X,Y) A 1. JMP EE4 < PASSAGE AU POINT SUIVANT. < < CAS OU M(X,Y) EST A 1 : < EE3: EQU $ LA VOISIN < ACCES AU NOMBRE DE VOISINS < Y COMPRIS M(X,Y) LUI-MEME. CPI 4 < Y-EN-A-T'IL PLUS DE 4 ??? JG EE5 < OUI , M(X,Y) DOIT MOURUR. CPI 2 < EN-A-T'IL MOINS DE 2 ??? JG EE7 < NON , IL VA SURVIVRE. < < MORT DE M(X,Y) PAR MANQUE DE RELATIONS OU PAR ETOUFFEMENT : < EE5: EQU $ BSR ARESET < MISE DU POINT (X,Y) A 0. < < CHANGEMENT DE POINT COURANT : < EE4: EQU $ LA DELX ADR A,X LR X,A < VALIDATION DU NOUVEL X. ANDI 'FF00 JAE EE6 < OK , ON EST SUR LA LIGNE. LA DELY < SINON , CHANGEMENT DE LIGNE. ADR A,Y LR Y,A < VALIDATION DE Y. ANDI 'FF00 JAE EE2 < OK , ON EST DANS L'IMAGE. < < SINON ON CHANGE DE QUADRILLAGE ET ON S'EN VA : < NGR B,A < INVERSION DE L'INDICATEUR. STA BASCUL < ET MAJ DE CELUI-CI. LX ALIMAG < X=LONGUEUR-MOTS DE L'IMAGE. LY MAND5 < QUADRILLAGE IMPAIR A PRIORI. JAL EE8 < OK , C'ETAIT B=1. LY MANDA < QUADRILLAGE PAIR SI B=-1/0. < < REINITIALISATION DE L'UN DES 2 QUADRILLAGES : < EE8: EQU $ LA &XIMAG < ACCES UN MOT DE L'IMAGE. ANDR Y,A < CONSERVATION QUADRILLAGE (Y). STA &XIMAG < ET MAJ DE L'IMAGE. JDX EE8 < AU MOT SUIVANT. RETLIF: EQU $ PLR A,C < RESTAURE LE C DE L'INTERPRETEUR , LR A,K < ET RESTAURE LE K DE SODOME. RSR < RETOUR ... < < < P A S S A G E A U Q U A D R I L L A G E 2 : < < ESP2: EQU $ LBI -1 < POUR FAIRE BASCUL=-1. < < < R E T O U R A U Q U A D R I L L A G E I N I T I A L : < < < ARGUMENT : < B=1. < < ESP1: EQU $ STB BASCUL < BASCUL <-- 1. RSR < < < P A S D E B A S C U L E D E < Q U A D R I L L A G E : < < < ARGUMENT : < B=0. < < NBASC: EQU ESP1 < < < C H A N G E M E N T D E S P A S D E X E T D E Y : < < PASX: EQU $ LA CTTE < RECUPERATION CTTE COURANTE. ADR A,A < QUE L'ON DOUBLE AFIN DE < PARCOURIR CORRECTEMENT LES < 2 QUADRILLAGES. STA DELX < MAJ DU PAS DE X. RSR PASY: EQU $ LA CTTE < RECUPERATION DE CTTE COURANTE. ADR A,A < QUE L'ON DOUBLE. STA DELY < ET MAJ DU PAS DE Y. RSR PAGE < < < T R A N S F O R M A T I O N I T E R A T I V E I M A G E : < < < I N C R E M E N T A T I O N I M A G E : < < < FONCTION : < 1- SI QUADRILLAGE 1 (BASCUL=+1) : ON INCREMENT < CHAQUE MOT DE L'IMAGE DE (CTTE) , < 2- SI QUADRILLAGE 2 (BASCUL=-1) : ON DECREMENTE < CHAQUE MOT DE L'IMAGE DE (CTTE). < < IPLUS: EQU $ LA BASCUL MP CTTE < B=+/-(CTTE). LX ALIMAG < X=NBRE DE MOTS D'UNE IMAGE. IPLUS1: EQU $ LA &XIMAG < A=MOT COURANT DE L'IMAGE. ADR B,A < INCREMENTATION DE L'IMAGE. STA &XIMAG < MAJ DE L'IMAGE. JDX IPLUS1 < AU MOT PRECEDENT. RSR < ET C'EST TOUT .... < < < D E C A L A G E C I R C U L A I R E : < < < FONCTION : < 1- SI QUADRILLAGE 1 (BASCUL=+1) : DECALAGE < A DROITE CIRCULAIRE DE CHAQUE MOT DE < L'IMAGE DE (CTTE) BITS , < 2- SI QUADRILLAGE 2 (BASCUL=-1) : IDEM A GAUCHE. < < IROT: EQU $ LA &AOP < ACCES A L'INSTRUCTION VARIABLE. RBT 8 < DECALAGE A DROITE A PRIORI. CPZ BASCUL < GAUCHE OU DROITE ??? JG IROT1 < A DROITE : OK. SBT 8 < ET BIEN NON , A GAUCHE. IROT1: EQU $ STA &AOP < MAJ INSTRUCTION VARIABLE. LY CTTE < Y=AMPLITUDE ABSOLUE DU < DECALAGE. LX ALIMAG < X=NBRE DE MOTS A FAIRE TOURNER. IROT2: EQU $ LA &XIMAG < ACCES AU MOT COURANT. XR X,Y OP: SCRS 0,X < ROTATION DE +/- (CTTE). XR X,Y STA &XIMAG < MAJ MOT COURANT. JDX IROT2 < AU MOT PRECDENT. RSR < ET C'EST TOUT. 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. < < 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. LAD DEMOUT BSR ASVC < EDITION DU MESSAGE. 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 < < < E F F A C E M E N T E C R A N : < < ERASE: EQU $ LAD DERASE BSR ASVC LAD DERASF BSR ASVC < ON EFFACE AUSSI LA VISU < D'EMISSION SI ELLE EXISTE ... RSR 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 < < < C O M M A N D E D U 4 0 1 4 : < < < FONCTION : < PERMET D'ENVOYER LES CARACTERES < DE CHANGEMENT DE MODE GARPHIQUE < AU T4014. < < < ARGUMENT : < Y=CARACTERE A ENVOYER APRES CODAGE. < < COMAND: EQU $ ADRI '20,Y < TRANSLATION MINUSCULE DU < <CARACTERE> ARGUMENT. LA DIRECT+1 ANDI 'FF00 < OCTET0(A)='ESC'. ORR Y,A < A='ESC'-<CARACTERE COMMANDE>. STA DIRECT+1 < MAJ DE LA DEMANDE. E1700: EQU $ LAD DIRECT SVC 0 < ECRITURE DIRECTE SUR LA VISU < D'EMISSION. JE E1701 < OK. < < CHANGEMENT DE VISU D'EMISSION : < LAI '02 STBY DIRECT < ON REMPLACE LE NVP '0B PAR < LE NVP '02 (VISU OUT). JMP E1700 < VERS UNE NOUVELLE TENTATIVE. E1701: EQU $ RSR 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. < < SAVNOM: EQU $ LA IEG < A=INDEX COURANT. STA SAVE < QUE L'ON TRANSMET PAR SAVE. RSR < QUELQUE SOIT (X). < < < 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>. < < < RESULTAT : < Y=0 : APPEL PAR $;, < =1 : APPEL DIFFERENT DE $;. < < LOADB: EQU $ < < C O D A G E D E < N O M > : < LA AIC < A=@MOT ITEM COURANT. SB ACCEB < CHANGEMENT D'ITEM. 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. < < 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 IF ORDI-"T",XWOR%,,XWOR% < < < M I S E E N M A R C H E M A I T R E < D E L A V I D E O : < < SP5: EQU $ LXI NSPTV < X=NSP DU SYSTEME VIDEO. BSR ACADCT,C < RENVOIE : L=@DCT-VIDEO. CPZ TETE,L < TEST DE L'ETAT DU SYSTEME VIDEO ??? JNE SP51 < LE SYSTEME VIDEO EST DEJA < EST DEJA EN MARCHE , OU BIEN < UNE DEMANDE D'ARRET EST EN < TRAITEMENT : ON NE PEUT RIEN < FAIRE !!! LXI NSPHOR BSR ACADCT,C < RENVOIE : L=@DCTHOR. LAI NSPTV STA NSPUP,L < DEMANDE DE REACTIVATION DU < SYSTEME VIDEO. SP51: EQU $ RSR < ET C'EST TOUT. < < < A R R E T M A I T R E < D E L A V I D E O : < < SP6: EQU $ LXI NSPTV BSR ACADCT,C < RENVOIE : L=@DCT-VIDEO. CPZ TETE,L < TEST DE L'ETAT DU SYSTEME < VIDEO ??? JGE SP61 < DEJA ARRETE , ON NE FAIT RIEN. LAI 1 STA TETE,L < S'IL EST EN MARCHE , ON < DEMANDE SON ARRET. SP61: EQU $ RSR < RETOU ... XWOR%: VAL 0 < < < D E M A N D E D ' I N V E R S I O N D U < S Y S T E M E V I D E O : < < < FONCTION : < CE SYSTEME BISTABLE APPELE PAR '+' < SOUS L'ACN DU SYSTEME PERMET DE METTRE < ON/OFF LE SYSTEME VIDEO EN BASCULE. < CHAQUE EXECUTION DE COMMANDE EST < SUIVIE D'UNE TEMPORISATION DE 1 < SECONDE AFIN DE NE PAS AVOIR DE < PROBLEME DE SYNCHRONISATION , EN < PARTICULIER AVEC LE NSPUP DE < HDLHOR ... < ENFIN IL EST RECOMMANDE DE COMMENCER < TOUT PROGRAMME PAR '++' QUI AURA < POUR BUT DE METTRE ON (EVENTUELLE- < MENT) PUIS OFF (SUREMENT) !!! < < < RESULTAT : < X#0 SI L'ACN N'EST PAS :SYS. < < IF ORDI-"S",XWOR%,,XWOR% < < < NOTA : < SUR SOLAR, ON PEUT METTRE LA VIDEO OFF PAR < LA COMMANDE "+0", ET LA REMETTRE ON SUR UNE < DES COMPOSANTES PAR "+1", "+2" OU "+3". < CEPENDANT, LA COMMANDE "+" RESTE VALABLE. < SI LA VIDEO EST ON, ELLE EST MISE OFF. < SI ELLE EST OFF, ELLE EST MISE ON SUR LA < DERNIERE COMPOSANTE UTILISEE (1 AU DEPART); < CECI PEUT TRES BIEN NE PAS AGIR SI LA < DERNIERE COMMANDE ETAIT "+0". < < XWOR%: VAL 0 ONOFF: EQU $ IF ORDI-"T",XWOR%,,XWOR% LA VIDEON < ACCES A L'INDICATEUR D'ETAT < PRESUME DU SYSTEME VIDEO. JAE VON < =0 : IL FAUT METTRE EN MARCHE. < < ARRET DU SYSTEME VIDEO : < VOFF: EQU $ DC VIDEON < REMISE DE VIDEON A 0. LA ASP6 < ACCES A LA ROUTINE MAITRE < D'ARRET DE LA VIDEO. JAE ONOFF1 < ERREUR : CE N'EST PAS :SYS. WORD '1EC5 < SI :SYS : ARRET MAITRE. ONOFF2: EQU $ LAI 1 STA SLEEP+2 < MISE EN PLACE D'UNE TEMPORI- < SATION DE 1 SECONDE. LAD SLEEP SVC 0 < TEMPORISATION 1 SECONDE , ET < RETOUR AVEC X=0. XWOR%: VAL 0 IF ORDI-"S",XWOR%,,XWOR% LX IEG < PRELEVER LE CARACTERE SUIVANT. LBY &AIC ADRI -"0",A < SI C'EST "0", "1", "2" OU "3" JAL ONOFF4 CPI 3 JG ONOFF4 STA VTVCTL < POSITIONNER LE NUMERO DE COMPOSANTE STA DTVCTL < A DIFFUSER ET LE DERNIER NUMERO < UTILISE. IC IEG < AVANCER LE POINTEUR POUR < SAUTER CE CARACTERE. ONOFF5: EQU $ LAD STDKU SVC 0 < STABILISATION DE L'IMAGE... LXI 0 < POSITIONNER LE CODE DE RETOUR. JMP ONOFF3 ONOFF4: EQU $ < LE CARACTERE "+" EST SEUL. LA VTVCTL < TEST DE L'ETAT ACTUEL. JAE ONOFF6 STZ VTVCTL < LA VIDEO ETAIT ON. ON LA MET OFF. JMP ONOFF5 ONOFF6: EQU $ LA DTVCTL < LA VIDEO ETAIT OFF. STA VTVCTL < ON LA MET ON SUR LA DERNIERE < COMPOSANTE UTILISEE. JMP ONOFF5 XWOR%: VAL 0 ONOFF3: EQU $ RSR < SORTIE DE LA ROUTINE. ONOFF1: EQU $ LXI 1 < RETOUR EN EREUR (X#0). JMP ONOFF3 < VERS LA SORTIE ... IF ORDI-"T",XWOR%,,XWOR% < < MISE EN MARCHE DE LA VIDEO : < VON: EQU $ IC VIDEON < MISE DE VIDEON A 1. LA ASP5 < ACCES LA ROUTINE MAITRE DE < MISE EN MARCHE. JAE ONOFF1 < ERREUR : CE N'EST PAS :SYS. WORD '1EC5 < SI :SYS : MISE EN MARCHE ... JMP ONOFF2 < VERS LA SORTIE OK. XWOR%: VAL 0 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 : < < 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. < < TENTATIVE DE CHARGEMENT DE L'IMAGE : < LAI '05 STBY DEMTV < NVP DE LOAD SOUS <ACN>. LAD DEMTV SVC 0 < ACCES AU SGN. JE E1306 < OK , IMAGE TROUVEE. LAI '06 STBY DEMTV < NVP DE LOAD SOUS :SYS. LAD DEMTV 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. CPZR X < COMMENT CELA S'EST-IL PASSE ??? JNE E1300 < ERREUR : X#0. LA &ALONG < A=INDICATEUR DE LA NATURE < DE L'IMAGE CHARGEE. CPI -3 < VALIDATION VIDEO ??? JL E1305 < ERREUR : NI VIDEO , NI FLOPPY. JAGE E1317 < CAS D'UNE SIMULATION FLOPPY. < < C A S D ' U N E I M A G E V I D E O : < IF ORDI-"T",XWOR%,,XWOR% LA ASP3 JAE E1300 < ON N'EST PAS SOUS :SYS !!! WORD '1EC5 < DEMANDE MAITRE DE STABILISATION. XWOR%: VAL 0 IF ORDI-"S",XWOR%,,XWOR% LAD STDKU SVC 0 < STABILISATION IMAGE... XWOR%: VAL 0 JMP E1300 < ET C'EST TOUT .... < < C A S D ' U N D E S S I N F L O P P Y : < E1317: EQU $ CP LDESS < LE DESSIN CHARGE EST-IL TROP < GRAND ??? JLE E1637 < NON , ON CONSERVA SA LONGUEUR. LA LDESS < ET OUI , IL FAUT LE TRONQUER !!! E1637: EQU $ STA WG+2 < MISE EN PLACE DE LA LONGUEUR < DU DESSIN A EDITER ... E1600: EQU $ LAD OG SVC 0 < OG DE LA VISU D'EMISSION. JE E1601 < OK , OG ACCEPTE. < < CHANGEMENT DE VISU D'EMISSION : < LAI '02 < NVP='0B EST REMPLACE PAR < LE NVP='02 (VISU OUT). STBY COPY < SUR COPY. STBY OG < SUR OG. STBY WG < SUR WG. STBY CG < ET SUR CG. LAD OG SVC 0 < 2EME TENTATIVE D'OPEN GRAPHIQUE. JNE E5000 < ERREUR : ON EST PROBABLEMENT EN < BATCH : L'ERREUR EST IRREMEDIABLE < < AFFICHAGE DESSIN EN SIMULATION FLOPPY : < E1601: EQU $ LAD WG SVC 0 < AFFICHAGE EN GRAPHIQUE (LES < POINTS SONT DEJA EN ASCI...) LAD CG BSR ASVC < CG DE LA VISU D'EMISSION EN < SAUVEGARDANT LES CONDITIONS < DE RETOUR DU WG. CPZR X < COMMENT S'ETAIT PASSE LE WG ??? JE E1300 < OK , TOUT S'EST BIEN PASSE. BR AGOGER < IL Y A EU UN CTRL-X-OFF FORT < PROBABLEMENT : ON S'EN VA !!! E5000: EQU $ < CAS DU BATCH. BR AGOGE < RETOUR OK SI BATCH. < < RETOUR DE LA ROUTINE : < E1305: EQU $ < SORTIES EN ERREUR. LXI 1 < ON RENVOIE X#0. E1300: EQU $ RSR 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>; < <PAUSE>::=!<N> < <POINT D'ARRET>::=. < <APPEL BIBLIOTHEQUE>::=$<NOM BIBLIOTHEQUE>; < <APPEL FILM>::=&<NOM FILM>; IF ORDI-"T",XWOR%,,XWOR% < <ARRET/MARCHE VIDEO>::=+ XWOR%: VAL 0 IF ORDI-"S",XWOR%,,XWOR% < <ARRET/MARCHE VIDEO>::=<INVERSION VIDEO>/<FIXATION COMPOSANTE> < <INVERSION VIDEO>::=+ < <FIXATION COMPOSANTE>::=+<NUMERO DE COMPOSANTE> < <NUMERO DE COMPOSANTE>::=0/1/2/3 XWOR%: VAL 0 < <APPEL ARGUMENT FORMEL>::=' < <FIN DE FILM>::=/ < <EFFACEMENT ECRAN VISU>::=0 < <APPEL 'TI'>::=* < <RETOUR A L'ESPACE SOCIAL INITIAL>::=1 < <PASSAGE SUR LE QUADRILLAGE 2>::=2 < <PAS DE BASCULE SUR LE QUADRILLAGE>::=3 < <TRANSFORMATION SOCIALE>::=4 < (LA BIBLI COURANTE EST ALORS DE TYPE 'T'/'I') < <APPEL OVERLAY>::=4 < <APPEL OVERLAY>::=$; < (LA BIBLI COURANTE EST ALORS DE TYPE 'P') < <PAS DE PARCOURS DE X>::=5 < <PAS DE PARCOURS DE Y>::=6 < <SEQUENCE>::=<TRANSFORMATION SOCIALE> < <SEQUENCE>::=<RETOUR A L'ESPACE SOCIAL INITIAL> < <SEQUENCE>::=<PASSAGE SUR LE QUADRILLAGE 2> < <SEQUENCE>::=<PAS DE BASCULE SUR LE QUADRILLAGE> < <SEQUENCE>::=<PAS DE PARCOURS DE X> < <SEQUENCE>::=<PAS DE PARCOURS DE Y> < <IMAGE+(CTTE) SI '1'>::=7 < <IMAGE-(CTTE) SI '2'>::=7 < <DECALAGE A DROITE IMAGE DE (CTTE) SI '1'>::=8 < <DECALAGE A GAUCHE IMAGE DE (CTTE) SI '2'>::=8 < <SEQUENCE>::=7/8 < <ELEMENT NEUTRE>::=; < <ELEMENT NEUTRE>::=<SPACE> < <COMMENTAIRE>::=<<TEXTE>; < <MESSAGE>::=<<TEXTE>! < <SON>::="<TEXTE>! < <OCTAVE>::=,<CHIFFRE DE 0 A 9> < <COMMANDE VISU>::=:<CARACTERE> < <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> < < < <CARACTERE> A ENVOYER AU 4014 : < (LORS DE <COMMANDE>) < < @ NORMAL Z AXIS AND NORMAL VECTORS OR ALPHA < A NORMAL Z AXIS AND DOTTED LINE VECTORS < B NORMAL Z AXIS AND DOT-DASHED VECTORS < C NORMAL Z AXIS AND SHORT-DASHED VECTORS < D NORMAL Z AXIS AND LONG-DASHED VECTORS < G NORMAL Z AXIS < H DEFOCUSED Z AXIS AND NORMAL VECTORS OR ALPHA < I DEFOCUSED Z AXIS AND DOTTED VECTORS < J DEFOCUSED Z AXIS AND DOT-DASHED VECTORS < K DEFOCUSED Z AXIS AND SHORT-DASHED VECTORS < L DEFOCUSED Z AXIS AND LONG-DASHED VECTORS < O DEFOCUSED Z AXIS < P WRITE-THRU MODE AND NORMAL VECTORS OR ALPHA < Q WRITE-THRU MODE AND DOTTED VECTORS < R WRITE-THRU MODE AND DOT-DASHED VECTORS < S WRITE-THRU MODE AND SHORT-DASHED VECTORS < T WRITE-THRU MODE ANS LONG-DASHED VECTORS < W WRITE-THRU MODE < < 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 8K MOTS : < E1310: EQU $ < 1ERE ENTREE. LA MODCAL,W < RECUPERATION DU MODCAL D'APPEL , STA WHOCAL < QUE L'ON SAVE DANS WHOCAL. LAD DEMMEM SVC 0 < < TEST DU NUMERO DE COMPTE D'APPEL : < IF ORDI-"S",XWOR%,,XWOR% STZ ASP < PAS DE SON... XWOR%: VAL 0 IF ORDI-"T",XWOR%,,XWOR% WORD '1E25 < (A,B)=<ACN>. CP ACNSYS JNE E4000 < CE N'EST PAS :SYS. LR B,A CP ACNSYS+1 JE E4001 < C'EST :SYS , OK ... E4000: EQU $ < CAS OU L'ON N'EST PAS SOUS :SYS ... STZ ASP3 < PAS DE DEMANDE DE STABILISATION < DE L'IMAGE VIDEO. STZ ASP < L'ACCES AU SYSTEME DU SON < EST IMPOSSIBLE ... STZ ASP5 < PAS DE MISE EN MARCHE VIDEO. STZ ASP6 < PAS D'ARRET DE LA VIDEO ... XWOR%: VAL 0 E4001: EQU $ < CAS OU C'EST :SYS , YOUPI !!! < < 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 N3000 < " SEQUENCE SONORE 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 < + ARRET/MARCHE VIDEO WORD N3100 < , CHANGEMENT D'OCTAVE WORD N4010 < - APPEL NOM IMAGE VIDEO/FLOPPY WORD N23 < . POINT D'ARRET (RETOUR CCI) WORD N22 < / RETOUR A L'APPELANT (GE) WORD N21 < 0 EFFACEMENT DE L'ECRAN WORD N5100 < 1 RETOUR AU QUADRILLAGE 1. WORD N5103 < 2 PASSAGE AU QUADRILLAGE 2 WORD N5102 < 3 PAS DE BASCULE SUR LE QUADRILLAGE. WORD N5101 < 4 TRANSFORMATION SOCIALE < (OU APPEL OVERLAY SUIVANT < LE TYPE DE LA BIBLI COURANTE) WORD N5104 < 5 PAS DE PARCOURS DE X WORD N5105 < 6 PAS DE PARCOURS DE Y WORD N6000 < 7 IMAGE+/- (CTTE) WORD N6001 < 8 DECALAGE IMAGE DE +/- (CTTE) WORD N4000 < 9 MAKE COPY VISU EMISSION. WORD N2000 < : COMMANDE DIRECTE DU T4014 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 ' : < N3200: BYTE PC+PGON1;0 WORD CALLTI < VERS L'APPEL DE L'OVERLAY 'TI'. < < G E S T I O N D E S S O C I E T E S : < N5100: BYTE PC+PGON1;1 < A NOTER : B=1. WORD ESP1 < RETOUR AU QUADRILLAGE 1. N5101: BYTE PC+PGON1;0 WORD LIFE < PASSAGE A LA GENERATION SUIVANTE. N5102: BYTE PC+PGON1;0 < A NOTER : B=0. WORD NBASC N5103: BYTE PC+PGON1;0 WORD ESP2 < PASSAGE AU QUADRILLAGE 2. N5104: BYTE PC+PGON1;0 WORD PASX < CHANGEMENT DE DELX. N5105: BYTE PC+PGON1;0 WORD PASY < CHANGEMENT DE DELY. < < T R A N S F O R M A T I O N S I T E R A T I V E S : < N6000: BYTE PC+PGON1;0 WORD IPLUS < INCREMENTATION/DECREMENTATION. N6001: BYTE PC+PGON1;0 WORD IROT < DECALAGE CIRCULAIRE IMAGE. < < E F F A C E M E N T E C R A N : < N21: BYTE PC+PGON1;0 WORD ERASE < EFFACEMENT DE L'ECRAN. < < 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. < < C O M M A N D E D I R E C T E D U T 4 0 1 4 : < N2000: EQU $ BYTE PGS;0 < RECUPERATION DE LA COMMANDE (Y). BYTE PC+PGON1;0 WORD COMAND < ENVOI DE LA COMMANDE DIRECTE. < < A R R E T / M A R C H E V I D E O : < N5000: EQU $ BYTE PC;0 WORD ONOFF WORD N27 < ERREUR DE NUMERO DE COMPTE ... WORD N1 < OK : ARRET/MARCHE EN BASCULE ... < < 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. 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. < < 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. < < < 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. < < S E Q U E N C E S O N O R E : < N3000: EQU $ BYTE PCS;0 WORD SAVNOM < SAVE LE 1ER CARACTERE DU SON. N3001: BYTE PGS;0 < RECUPERATION 'SON' COURANT. BYTE PTM;"!" < EST-CE LA FIN DE SON ??? WORD N3001 < NON , ON CONTINUE A RECUPERER. BYTE PC;0 WORD SON < SI OUI , ON TENTE D'EMETTRE LE < SON RECUPERE. WORD N25 < ERREUR : CE N'EST PAS :SYS ... WORD N1 < OK , PRIMITIVE SUIVANTE. < < C H A N G E M E N T D ' O C T A V E : < N3100: EQU $ BYTE PGS;0 < RECUPERATION DU CARACTERE SUIVANT BYTE PC;0 WORD MOCTAV < TENTATIVE DE CHANGEMENT OCTAVE. WORD N27 < ERREUR D'OCTAVE. WORD N1 < OK , VERS LA PRIMITIVE SUIVANTE. PAGE < < < S E Q U E N C E S O N O R E : < < < FONCTION : < TRANSMET AU CONVERTISSEUR DIGITAL < ANALOGIQUE SI CELA EST POSSIBLE LE < SON DONT ON RECUPERE LA DESCRIPTION. < < SON: EQU $ LXI 1 < ERREUR A PRIORI ... CPZ ASP < EST-ON SOUS :SYS ??? JE SON1 < NON , ON ABORTE ... < < CAS D'UNE DEMANDE SOUS :SYS : < LX SAVE < X=INDEX DU 1ER CARACTERE DU SON. SON2: EQU $ LBY &AIC < RECUPERATION DU SON COURANT. CPI "!" < EST-CE AL FIN DU SON ??? JE SON3 < OUI. JL SON4 < 'SPACE' EST NEUTRE ... ADRI -'5F,A < TRANSCAODAGE. NGR A,A < ET REMISE EN POSITIF. STA &ATEMPO < CE QUI DONNE LA TEMPORISATION < DE FREQUENCE D'ECHANTILLONS. LA ASP WORD '1EC5 < EXECUTION MAITRE DE SP. SON4: EQU $ < CAS DU 'SPACE'. ADRI 1,X < PASSAGE AU CARACTERE SUIVANT. JMP SON2 < AU SUIVANT. < < SORTIE DE LA ROUTINE : < SON3: EQU $ LXI 0 < RETOUR OK. SON1: EQU $ RSR < < < C H A N G E M E N T D ' O C T A V E : < < < ARGUMENT : < Y=CARACTERE SUIVANT ','. < < MOCTAV: EQU $ LXI 1 < RETOUR EN ERREUR A PRIORI. LR Y,A < A=OCTAVE DEMANDE. ADRI -'30,A < CONVERSION BINAIRE. JAL MOCTER < ERREUR DE NUMERO D'3CTAVE. CPI 9 < EST-CE UN CHIFFRE DE 0 A 9 ??? JG MOCTER < ERREUR DE NUMERO OCTAVE. STA &AOCTAV < OK , C'EST UN CHIFFRE DE 0 A 9 , < IL DEVIENT L'OCTAVE COURANT. LXI 0 < RETOUR OK. MOCTER: EQU $ RSR < RETOUR ... PAGE < < < E C H A N T I L L O N A G E M A I T R E S O N : < < < ARGUMENT : < W=@DCT-ESCLAVE , < OCTAV=OCTAVE DESIRE (0,1,2,...) , < NPER=NBRE DE PERIODES A DECRIRE POUR UN SIGNAL , < TEMPO=TEMPO DE DILATATION DES FREQUENCES < D'ECHANTILLONAGE , < ASIG=ADRESSE RELATIVE DU DESCRIPTEUR SIGNAL. < < < FORMAT DU SIGNAL : < MOT0=-NBRE D'ECHANTILLONS PAR PERIODE , < OCTETS PRECEDENTS=AMPLITUDES D'ECHANTILLONAGE. < < LOCAL LOC1: EQU $ NPER: WORD 50 < NBRE IMPLICITE DE PERIODES < PAR SIGNAL. TEMPO: WORD 0 < TEMPO D'ECHANTILLONAGE. OCTAV: WORD 0 < OCTAVE DESIRE. ASIG: WORD SIN < ADRESSE RELATIVE DU SIGNAL < IMPLICITE. ALECH: WORD 0 < RELAI INDEX ABSOLU VERS LE < SIGNAL. CU1: WORD WCUS < ECRITURE SUR LE CU SON. PROG WORD LOC1+'80 SP: EQU $ LRP L LA -1,L < A=BASE L RELATIVE. AD 10,W < TRANSLATION PAR SLO. LR A,L < L=BASE L ABSOLUE. LA ASIG < ADRESSE RELATIVE DU SIGNAL. AD 10,W < TRANSLATION PAR LE SLO. SBT 0 < BIT INDEX. STA ALECH < MISE EN PLACE DU RELAI ABSOLU < VERS LE SIGNAL. LA OCTAV LR A,C < C=OCTAVE DEMANDE. < < GENERATION DU SIGNAL : < LXI 0 LY &ALECH < Y=-NBRE D'ECHANTILLONS. LX NPER < X=DUREE=NBRE DE PERIODES. SP1: EQU $ LR X,B < SAVE LE NBRE DE PERIODES. < < GENERATION D'UNE PERIODE : < LR Y,X < X=-NBRE D'ECHANTILLONS. SP2: EQU $ PSR X < SAVE X. LX TEMPO < X=TEMPORISATION DE DILATATION. SLLS 0,X < DECALAGE DU DUREE VARIABLE < PERMETTANT DE FAIRE VARIER LA < FREQUENCE D'ECHANTILLONAGE. PLR X < RESTAURE X. LBY &ALECH < A=AMPLITUDE COURANTE SIGNAL. SIO CU1 < ET ENVOI SUR LE CU1. ADR C,X < PRISE EN COMPTE DE L'OCTAVE. JIX SP2 < VERS L'AMPLITUDE SUIVANTE. LR B,X < RESTAURE LE NBRE DE PERIODES. JDX SP1 < A LA PERIODE SUIVANTE. RSR 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#