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#
Copyright © Jean-François COLONNA, 2017-2024.
Copyright © CMAP (Centre de Mathématiques APpliquées) UMR CNRS 7641 / École polytechnique, Institut Polytechnique de Paris, 2017-2024.