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