IF VIRE,X100,,X100
NMPROC: VAL "VI" < NOM DU PROCESSEUR.
IDP "VI - RELEASE 01/06/1979"
X100: VAL 0
IF VIRE,,X100,
NMPROC: VAL "RE" < NOM DU PROCESSEUR.
IDP "RE - RELEASE 01/06/1979"
X100: VAL 0
IDP "JOHN F. COLONNA"
DEBUG: VAL VIRE < LE DEBUG N'AURA LIEU QUE
< SOUS LA VERSION 'RE' (EDITION
< DES ADRESSES LUES SUR LES
< BANDES MAGNETOS.)
VERSIO: VAL 1 < NUMERO DE LA VERSION DU
< SYSTEME DE TELECOMMANDE DES
< MAGNETOSCOPES (0 EST LE 1ER).
EOT #SIP DEF PROCESSEUR#
PROG
NOEUD1: EQU BRANCH
WORD VIDEO < ADRESSE DE DEPART DU PROCESSEUR.
WORD 0
PVIDEO: EQU $ < P DE LANCEMENT DU PROCESSEUR
< VIDEO ; A NOTER : P='12 !!!!
LRP L
BR -2,L < ENTREE DANS LE PROCESSEUR.
EOT #SIP DEFINITION ITEM#
XNOM: VAL -LNOM/2+LTN-2 < DEPLACEMENT DU NOM DANS L'EN-TETE.
IF VIRE,X100,,X100
ITEM1: EQU ZERO+PILE-LTNI
X100: VAL 0
PAGE
<
<
< C O R P S I T E M D E S E R V I C E :
<
<
SERASE: VAL 0 < SERASE=0 : EFFACER L'ECRAN APRES,
< #0 : NE PAS EFFACER.
SDEBS: VAL 1 < ADRESSE DE DEBUT DE SEQUENCE.
< SI SDEBS<0 : PAS DE POSITION-
< NEMENT DE DEBUT DE SEQUENCE.
SFINS: VAL 2 < ADRESSE DE FIN DE SEQUENCE.
SMOVE: VAL 3 < QUE FAIRE DE L'ITEM VIDEO ???
< LES BITS SUIVANTS L'INDIQUENT :
< (A NOTER QUE SI SMOVE=0 , IL
< S'AGIT D'UN SURCH & PLAY).
SPLAY: VAL 0 < PLAY EN CONTINU.
SURCH: VAL 1 < POSITIONNEMENT , PUIS STOP.
SARRET: VAL 2 < STOP.
LIS: VAL 8 < LONGUEUR EN OCTETS DU CORPS
< D'UN ITEM VIDEO.
IF VIRE,,X100,
PAGE
<
<
< D E F I N I T I O N D E L A B A I E
< D E C O M M U T A T I O N :
<
<
NIN: VAL 20 < NOMBRE D'ENTREES DE LA BAIE :
< A T T E N T I O N : LES 'NMAG'
< PREMIERES SONT RESERVEES AUX
< 'NMAG' MAGNETOSCOPES DU
< SYSTEME ...
NOUT: VAL 8 < NOMBRE DE SORTIES DE LA BAIE.
<
< IMAGE NON PARTAGEABLE DE LA MEMOIRE DE COMMUTATION :
<
NMEMB: EQU $
ASCI ":COM"
BYTE '1F;'04 < NOM DE L'IMAGE SUR DISQUE DE
< LA MEMOIRE DE COMMUTATION.
MEMB: EQU $
DO NOUT
WORD -1 < PAS DE COMMUTATION INITIALE.
LMEMB: VAL $-NMEMB*2
<
< FORMAT DE LA MEMOIRE :
<
< LES ADRESSES SONT LES NUMEROS DE SORTIES ,
< LES CONTENUS SONT LES ENTREES CONNCTEES AUX SORTIES
<
<
< NOTA :
< UNE MEME ENTREE PEUT ETRE CONNECTEE A
< PLUSIEURS SORTIES SIMULTANEMENT ...
X100: VAL 0
PAGE
<
<
< T A B L E N O N P A T A G E A B L E
< D ' O C C U P A T I O N D E S
< M A G N E T O S C O P E S :
<
<
NMAG: VAL 9 < NBRE DE MAGNETOSCOPES.
TABLE
MAGNET: EQU $
ASCI ":MAG"
BYTE '1F;'04 < NOM-SGN DE LA TABLE (LE CODE
< '1F-US , EST DESTINE A RENDRE
< LE NOM INACCESSIBLE...).
<
< P I L E L R U D ' U T I L I S A T I O N :
<
< FORMAT D'UNE ENTREE :
< BIT0=0 : OK ,
< =1 : MAGNETOSCOPE HORS-SERVICE ,
< BITS1-7 : NUMERO DU MAGNETOSCOPE ,
< (DE 0 A NMAG-1)
< BIT8=1 (INUTILISE) ,
< BITS9-15 : IDENTIFICATEUR (ID) DE L'ESCLAVE
< TRAVAILLANT SUR CE MAGNETOSCOPE.
< ('FF A L'INITIALISATION)
< LA PILE LRU EST A ACCES ASSOCIATIF.
<
LRU: EQU $
DO NMAG
BYTE $-LRU;'FF < PAS D'ID INITIALEMENT.
<
< N O M D E S B A N D E S M O N T E E S :
<
< FORMAT :
< CETTE TABLE CONTIENT POUR CHAQUE
< MAGNETOSCOPE LE NOM DE LA SEQUENCE (ET
< DONC LE NOM DE LA BANDE) EN VISIONNAGE.
< ELLE EST INDEXEE PAR LE NUMERO DE MAGNETOSCOPE.
<
TAPES: EQU $
DO NMAG
DZS LNOM/2
LMAG: VAL $-MAGNET*2 < LONGUEUR OCTET DE LA TABLE.
IF VIRE,,X100,
PAGE
<
<
< F A U X I T E M 1 :
<
<
ITEM1: DZS LIS/2+LTN < DE QUOI CONTENIR UNE FAUSSE
< E-TETE ET UN CORPS D'ITEM
< DE SERVICE DE TYPE VIDEO.
X100: VAL 0
PAGE
<
<
< L O C A L :
<
<
LOCAL
LOC: EQU $
<
< B U F F E R S E T M E S S A G E S :
<
BUFFER: WORD 0
IF VIRE,,X100,
WORD 0 < SUITE DU BUFFER D'ENTREE.
X100: VAL 0
BUFTV: WORD 0 < BUFFER DE COMMANDE DE LA BAIE
< ET DES MAGNETOSCOPES.
MACN: BYTE 5;'6D
ASCI "!ACN"
MITEM: BYTE 6;'6D
ASCI "!ITEM "
MAGER: BYTE 13;'6D
ASCI "MAGNETOSCOPE"
MOUNT: ASCI " MXX" < NUMERO DE MAGNETOSCOPE.
MREL10: ASCI "!ASSIGN A="
BYTE "S";'04
MREL11: ASCI "!ASSIGN B="
BYTE "S";'04
MCU2: ASCI "!ASSIGN A=CU"
BYTE "2";'04
MCU3: ASCI "!ASSIGN B=CU"
BYTE "3";'04
MTY1: ASCI "!ASSIGN B="
< ASCI "TY" < NORMALEMENT......
BYTE "O";'04
BYTE "1";'04
IF VIRE,,X100,
MIN: BYTE 4;" "
ASCI "IN= "
MOUT: BYTE 5;" "
ASCI "OUT="
MINT: BYTE 2;'6D;">";0
MERR: BYTE 3;'6D
ASCI "??"
MAGN: BYTE 7;"A"
ASCI "GNETO="
MORDRE: BYTE 7;" "
ASCI "ORDRE="
MLIST: BYTE 8;'6D
ASCI "XX-->YY "
X100: VAL 0
<
< D E M A N D E S A C M S 4 :
<
DEMOUT: WORD '0202 < DEMANDE DE SORTIE SUR NSPOUT.
WORD 0 < @OCTET DU BUFFER.
WORD 0 < LONGUEUR OCTET DU MESSAGE.
IF VIRE,,X100,
DEML: WORD '0202 < EDITION DE LA MEMOIRE DE
< COMMUTATION VIDEO.
WORD MLIST-ZERO*2+1
WORD 8
DEMIN: WORD '0101 < DEMANDE D'ENTREE AVEC ECHO.
WORD BUFFER-ZERO*2
WORD 0 < LE COMPTE D'OCTETS DEMANDES
< EST VARIABLE.
DEMLB: WORD '0502 < LOAD MEMOIRE DE COMMUTATION.
WORD NMEMB-ZERO*2
WORD LMEMB
WORD -1
DEMSB: WORD '0402 < STORE MEMOIRE DE COMMUTATION.
WORD NMEMB-ZERO*2
WORD LMEMB
WORD -1
DEMDB: WORD '0302 < DELETE MEMOIRE DE COMMUTATION.
WORD NMEMB-ZERO*2
WORD LMEMB
WORD -1
DEMMEM: WORD '0004 < DEMANDE D'ALLOCATION 1K.
RELMEM: WORD '0004 < DEMANDE D'ALLOCATION 4K.
WORD '800 < 1K MOTS='800 OCTETS.
WORD '2000 < 4K MOTS='2000 OCTETS.
X100: VAL 0
DEMERA: WORD '0205 < EFFACEMENT DE L'ECRAN.
DEMSGN: WORD '0402 < ACCES AU SGN , INITIALISE
< STORE DE 'VI' SUR LUI-MEME.
WORD NOEUD1-ZERO*2 < @BRANCHE D'OVERLAY (OCTET).
WORD ZERO-NOEUD1+PILE-LTNI-LTNI*2
WORD -1
DEMTYO: WORD '0B02 < SORTIE MESSAGE SUR TY1.
WORD ITEM1-ZERO+XNOM*2
WORD 0 < LONGUEUR DU NOM DE BANDE.
DEMTYM: WORD '0B02 < DEMANDE DE MONTAGE BANDE (TY1).
WORD MOUNT-ZERO*2
WORD 4
DEMTYI: WORD '0B00 < LECTURE REPONSE OPERATEUR TY1.
WORD BUFFER-ZERO*2
WORD 1 < 1 CARACTERE.
DEMMAG: WORD '0502 < DEMANDE D'ACCES AU SGN POUR
< LA TABLE D'OCCUPATION DES
< MAGNETOSCOPES.
WORD MAGNET-ZERO*2
WORD LMAG
WORD -1
CLEAR: WORD 'AC00 < FONCTION DE CLEAR LES BASCULES.
DCLEAR: WORD '0B02 < CLEAR LA BAIE.
WORD CLEAR-ZERO*2
WORD 2
DEMBAI: WORD '0B02 < ECRITURE SUR LA BAIE DE COMMU-
< TATION SANS IT.
WORD BUFTV-ZERO*2
WORD 2
DEMBAT: WORD '0B08 < LECTURE SUR LA BAIE AVEC IT.
WORD BUFTV-ZERO*2
WORD 2
DEMTV: WORD '0A02 < TELECOMMANDE DES MAGNETOSCOPES.
WORD BUFTV-ZERO*2
WORD 2
CCI: WORD '0001 < ACCES AU CCI INTERACTIF.
DEMCCI: EQU CCI < PRUDENT ???
SLEEP: WORD '0005 < DEMANDE DE MISE EN SOMMEIL.
WORD 0
WORD 0 < DUREE EN SECONDES.
COMAND: WORD '0002 < ACCES AU CCI NON INTERACTIF.
WORD 0 < @OCTET DE LA CARTE.
WORD 80 < LONGUEUR D'UNE 'CARTE'.
<
< C O N S T A N T E S :
<
EAO: ASCI ":EAO" < ACN DU SYSTEME D'ENSEIGNEMENT.
SYS: ASCI ":SYS"
F3: WORD 0 < POUR SAUVEGARDE DU REGISTRE X.
C10: WORD 10 < POUR LES CONVERSIONS DECIMALES.
C16: WORD 16 < CONVERSION BCD-->ASCI.
IF VIRE,X100,,X100
NCALL: WORD $+1,X;"GE";"EI" < NOMS DES BRANCHES D'OVERLAY
< DE RETOUR DE 'VI'.
X100: VAL 0
IF VIRE,,X100,
NGE: WORD "GE"
COMOUT: WORD '8800 < ORDRE D'ENVOI UNE ADRESSE
< MEMOIRE A LA BAIE DE COMUT.
NUMOUT: WORD 0 < NUMERO DE LA SORTIE COURANTE
< DEMANDEE SUR LA BAIE.
X100: VAL 0
<
< C O N S T A N T E S M A G N E T O S C O P E S :
<
VOISIN: VAL '40 < CONSTANTE POUR LES TESTS
< DE VOISINNAGE DE DEBUT ET
< DE FIN DE SEQUENCE.
NUMAG: WORD 0 < NUMERO DU MAGNETOSCOPE ALLOUE
< A CET ESCLAVE (DE 0 A NMAG-1).
PARITE: WORD 0 < PARITE DES ORDRES AU COUPLEUR
< DES MAGNETOSCOPES :
< LE BIT1 EST A 1 SI LE NBRE DE
< BITS DE NUMAG A 1 EST IMPAIR.
ADRES: WORD 0 < ADRESSE COURANTE SUR LA BANDE
< MAGNETOSCOPE.
DEMCU: WORD '0A00 < POUR REINITIALISER LE 1ER MOT
< DE LA DEMANDE DEMTV.
TO: EQU $ < TABLE DES ORDRES MAGNETOS.
PLAY: BYTE '81;0 < ORDRE PLAY MAGNETOSCOPES.
RWD: BYTE '82;0 < ORDRE REWIND MAGNETOS.
FWD: BYTE 'A3;0 < ORDRE FORWARD MAGNETOS.
STOP: BYTE '84;0 < ORDRE STOP MAGNETOS.
RECORD: BYTE 'A5;0 < ORDRE ENREGISTREMENT MAGNETOS.
ADC: BYTE 'A6;0 < DEMANDE DE L'ADRESSE COURANTE
< SUR LA BANDE.
RAZADC: BYTE '87;0 < RAZ L'ADRESSE COURANTE SUR
< LE MAGNETOSCOPE.
NORDRE: VAL $-TO < NBRE D'ORDRES RECONNUS.
MBF00: WORD 'BF00 < RAZ DU BIT1 ET DES BITS8-15.
DECOMO: WORD '0900 < MASQUE INVERSION DES BITS 4 & 7.
IF VERSIO-0,X200,,X200
DUREE: WORD 0 < CONTIENT LE TEMPS RESTANT AVANT
< UN STOP A PRIORI D'UN MAGNETO.
< LORS D'UNE RECHERCHE RAPIDE.
CORECT: WORD 0 < CORRECTION A APPORTER AUX
< ADRESSES LUES SUR LA BANDE
< MAGNETO , FONCTION DU SENS
< DE DEFILEMENT :
< CORECT=0 : MARCHE AVANT ,
< CORECT=-'20 : MARCHE ARRIERE.
X200: VAL 0
IF VIRE,X100,,X100
IF VERSIO-1,X200,,X200
LIMIT: WORD 4 < NBRE MAX DE CHANGEMENTS DE
< SENS DU TYPE FWD/RWD OU RWD/FWD.
GAMMA: WORD '14 < CONSTANTE SERVANT AU CALCUL
< DE LA TRANSLATION DE L'ADRESSE
< CIBLE LORS D'UN POSITIONNEMENT
< DE BANDE.
ORDREP: WORD 0 < CONTIENT L'ORDRE PRECEDENT
< ENVOYE AU MAGNETO.
X200: VAL 0
X100: VAL 0
<
< A D R E S S E S D E T A B L E S :
<
APILE: WORD PILE-1 < POUR INITIALISER K.
IF VIRE,,X100,
STACK: DZS 6 < PILE DE TRAVAIL DANS 1K MOTS.
X100: VAL 0
AN1: WORD NOEUD1 < ADRESSE DE LA BARNCHE D'OVERLAY.
AI1: WORD ITEM1 < ADRESSE EN-TETE ITEM1.
AKI1: WORD ITEM1+LTN,X < RELAI VERS LE CORPS DE L'ITEM1.
ALRU: WORD LRU < ADRESSE DE LA PILE LRU.
ALRUA: WORD LRU+NMAG,X < PARCOURS ASCENDANT DE LA LRU.
ALRUD: WORD LRU-1,X < PARCOURS DESCENDANT DE LA LRU.
ATAPES: WORD TAPES < ADRESSE DE LA LISTE DES NOMS
< DE BANDES.
NOMTAP: WORD 0 < RELAI COURANT VERS LE NOM DE
< LA BANDE ASSOCIEE AU MAGNETOS-
< COPE COURANT.
NOMSEQ: WORD ITEM1+XNOM,X < RELAI VERS LE NOM DE LA
< SEQUENCE COURANTE.
ATO: WORD TO-1,X < RELAI VERS LES ORDRES MAGNETO.
IF VIRE,,X100,
AREP: WORD BUFFER,X < RELAI D'ACCES AUX REPONSES.
AMEMB: WORD MEMB,X < RELAI D'ACCES A LA MEMOIRE
< DE COMMUTATION.
AMLIST: WORD MLIST,X < POUR GENERER L'EDITION DE LA
< MEMOIRE DE COMMUTATION.
X100: VAL 0
<
< R E L A I S D E S R O U T I N E S :
<
AOVL: WORD OVL < CHARGEMENT DES OVERLAYS.
APRINT: WORD PRINT < EMISSION D'UN MESSAGE.
ACALCI: WORD CALCCI < APPEL CCI NON INTERACTIF.
AMAGS: WORD MAGS < ACCES AU SGN POUR LA LRU.
ARADC: WORD RADC < RECUPERATION DE L'ADRESSE DE
< LA BANDE SUR MAGNETOSCOPE.
AORDRE: WORD ORDRE < ENVOI D'1N ORDRE AU COUPLEUR
< MAGNETOSCOPE.
ASTOP: WORD RSTOP < STOP MAGNETO. ET TEMPO 4 SECONDES
ATEMPO: WORD TEMPO < MISE EN ATTENTE DU PROCESSEUR.
ACOMUT: WORD COMUT < ACTION SUR LA BAIE.
ABORT: WORD PVIDEO < 'PRESC' A PRIORI.
ABORTV: WORD HALT < 'PRESC' LORS DE LA DIFFUSION
< DES SEQUENCES AUDIO-VISUELLES.
AERR: WORD ERREUR < CAS DES ERREURS D'EXECUTION.
AE422: WORD E422 < ABORT ESCLAVE.
IF VIRE,,X100,
AINTER: WORD INTER < MODULE D'INTERROGATION ESCLAVE.
AGOGE: WORD E10 < MODULE DE RETOUR A 'GE'.
AHEX: WORD HEX < ROUTINE DE CONVERSION HEXA
< EN BINAIRE.
ADEC: WORD DEC < CONVERSION DECIMALE 2 CHIFFRES.
ARNMAG: WORD RNMAG < ROUTINE DE CALCUL D'UN NUMERO
< D'ENTREE ET DE SA PPARITE.
X100: VAL 0
<
< E D I T I O N A D R E S S E C O U R A N T E :
<
ABADC: WORD BADC+1,X < POUR CONVERSION ASCI DE L'ADRESSE
BADC: BYTE 5;'6D
ASCI " XYZ" < ADRESSE COURANTE EN ASCI.
PAGE
PROG
<
<
< E N V O I D ' U N M E S S A G E :
<
<
< ARGUMENT :
< A=@MESSAGE (DONT LE 1ER OCTET EN
< CONTIENT LA LONGUEUR EN OCTETS).
<
<
< DETRUIT LA BASE C.
<
<
PRINT: EQU $
LR A,C < C=@MOT DU MESSAGE.
ADR A,A
ADRI 1,A < A=@OCTET DU MESSAGE.
STA DEMOUT+1 < MAJ DEMOUT.
LBY 0,C < A=LONGUEUR DU MESSAGE.
STA DEMOUT+2 < MAJ DEMOUT.
LAD DEMOUT
SVC 0 < ENVOI DU MESSAGE.
RSR
PAGE
<
<
< A P P E L C C I N O N I N T E R A C T I F :
<
<
< ARGUMENT :
< A=@MOT DE LA CARTE.
<
<
CALCCI: EQU $
ADR A,A < A=@OCTET DE LA CARTE.
STA COMAND+1 < MAJ DE COMAND.
LAD COMAND
SVC 0 < ENVOI DE LA CARTE AU CCI.
RSR
IF VIRE,,X100,
PAGE
<
<
< N U M E R O D ' E N T R E E E T P A R I T E :
<
<
< ARGUMENT :
< A=NUMERO D'ENTREE COURANTE DEMANDEE.
<
<
RNMAG: EQU $
STA NUMAG < SAVE LE NUMERO DE L'ENTREE
< COURANTE DEMANDEE DANS NUMAG.
PTY < CALCUL DE LA PARITE DE OCTET1.
LAI 0 < PARITE PAIRE A PRIORI.
JNC RNMAG1 < EFFECTIVEMENT PARITE PAIRE.
SBT 1 < CAS DE LA PARITE IMPAIRE.
RNMAG1: EQU $
STA PARITE < SAVE LA PARITE DU NUMERO DE
< L'ENTREE DEMANDEE.
RSR
X100: VAL 0
IF VIRE,,X100,
PAGE
<
<
< C O N V E R S I O N H A X E B I N A I R E :
<
<
< ARGUMENT :
< Y=NBRE DE CARACTERES A CONVERTIR.
< (CARACTERES CONTENUS DANS 'BUFFER')
<
<
< RESULTATS :
< SI B=0 : A=VALEUR BINAIRE ,
< SI B#0 : ERREUR DE SYNTAXE HEXADECIMALE ,
< POSITIONNEMENT DES INDICATEURS SUR (B).
<
<
HEX: EQU $
LXI 0 < X=INDEX DE PARCOURS DE BUFFER.
LBI 0 < CLEAR LE REGISTRE B.
<
< BOUCLE DE RECUPERATION DES CARACTERES :
<
HEX1: EQU $
LBY &AREP < A=CARACTERE COURANT DE BUFFER.
ADRI -'30,A < TRANSLATION PAR RAPPORT A '0'.
JAL HEX2 < ERREUR DE SYNTAXE.
CPI 9 < EST-CE UN CHIFFRE ???
JLE HEX3 < OUI , OK.
ADRI -'41+'39+1,A < TRANSLATION PAR RAPORT AU 'A'.
CPI 'A < EST-CE UNE LETTRE ???
JL HEX2 < NON , ERREUR DE SYNTAXE ...
CPI 'F < EST-CE UNE LETTRE HEXA ???
JG HEX2 < NON , ERREUR DE SYNTAXE ...
HEX3: EQU $
SCRS 4 < CADRAGE EN TETE DE A ,
SCLD 4 < ET CONCATENATION AVEC (B).
ADRI 1,X < PROGRESSION INDEX BUFFER.
CPR X,Y < EST-CE FINI ???
JNE HEX1 < NON , ON CONTINUE ...
LR B,A < SI OUI , A=VALEUR CONVERTIE.
HEX5: EQU $ < ENTRY DE CONVERSION DECIMALE OK.
LBI 0 < B=0 : OK.
<
< SORTIE DE LA ROUTINE :
<
HEX4: EQU $
CPZR B < POSITIONNEMENT DES INDICATEURS.
RSR
<
< TRAITEMENT DES ERREURS :
<
HEX2: EQU $
LBI 1 < B#0 : ERREUR.
JMP HEX4 < VERS LA SORTIE ...
X100: VAL 0
IF VIRE,,X100,
PAGE
<
<
< C O N V E R S I O N D E C I M A L E B I N A I R E :
<
<
< ARGUMENTS :
< 2 PREMIERS CARACTERES DE 'BUFFER'.
<
<
< RESULTAT :
< B=0 : A=VALEUR BINAIRE ,
< B#0 : ERREUR DE SYNTAXE DECIMALE ,
< POSITIONNEMENT DES INDICATEURS SUR (B).
<
<
DEC: EQU $
LXI 0
LBY &AREP < A=PREMIER CHIFFRE EN ASCI.
ADRI -'30,A < CONVERSION.
JAL HEX2 < ERREUR DE SYNTAXE.
CPI 9 < EST-CE UN CHIFFRE ???
JG HEX2 < NON , ERREUR ....
MP C10 < MULTIPLICATION PAR LA BASE.
< B=10*(PREMIER CHIFFRE).
LXI 1
LBY &AREP < A=2EME CHIFFRE.
ADRI -'30,A < CONVERSION BINAIRE.
JAL HEX2 < ERREUR DE SYNTAXE DECIMALE.
CPI 9 < EST-CE UN CHIFFRE ???
JG HEX2 < NON , ERREUR.
ADR B,A < OK , A=VALEUR BINAIRE DU NOMBRE.
JMP HEX5 < VERS LA SORTIE OK.
X100: VAL 0
IF VIRE,X100,,X100
PAGE
<
<
< D E M A N D E D E M O N T A G E S U R T Y 1 :
<
<
E420: EQU $
LBY &NOMSEQ < RECUPERATION NOM-BANDE.
E407: EQU $
ADRI 1,X < PROGRESSION INDEX DE NOM.
RBT 10 < POUR RAMENER LE CODE
< DU '$' A CELUI DE 'EOT'.
CPI '04 < EST-CE LA FIN DU NOM DE BANDE ????
JE E421 < OUI , FIN DU NOM DE BANDE.
CPR X,Y < EST-ON AU BOUT DU NOM DE
< SEQUENCE ?????
JNE E420 < NON , POURSUITE DU PARCOURS ...
E421: EQU $
STX DEMTYO+2 < MISE EN PLACE DE LA LONGUEUR
< DU NOM DE LA BANDE DANS LA
< DEMANDE DE SORTIE SUR TY1.
<
< SAUVEGARDE DU NOM DE SEQUENCE COURANTE
< SUR LE MAGNETOSCOPE A LA SUITE DE LA LRU :
<
LA NOMSEQ
RBT 0 < A=@ DU NOM DE LA SEQUENCE.
LB NOMTAP
RBT 16 < B=@ DU NOM DE LA BANDE MONTEE
< SUR LE MAGNETOSCOPE.
LXI LNOM/2 < X=NBRE DE MOTS A DEPLACER
< DE (A) VERS (B).
MOVE
<
< ENVOI DE LA DEMANDE A L'OPERATEUR TY1 :
<
< REPONSES POSSIBLES :
< R/C : OK ,
< O : OK ,
< N : NON , ET ALORS ABORT DE L'ESCLAVE.
<
LAD MREL11
BSR ACALCI < DESASSIGNATION DE NVP=11.
LAD MTY1
BSR ACALCI < ASSIGNATION DU NVP=11 A TY1.
<
< ENVOI DU NUMERO DU MAGNETOSCOPE A MONTER ,
< PUIS DU NOM DE LA BANDE :
<
LA NUMAG < A=NUMERO DU MAGNETOSCOPE.
SLRD 16 < A=0 ; B=NBRE A CONVERTIR.
DV C10 < A=CHIFFRE DES DIZAINES ,
< B=CHIFFRE DES UNITES.
ADRI '30,A < CONVERSION ASCI.
ADRI '30,B < CONVERSION ASCI.
STB MOUNT+1 < CHIFFRE DES UNITES.
STBY MOUNT+1 < RANGEMENT DU NUMERO ASCI
< DANS LE MESSAGE VERS TY1.
LAD DEMTYM
SVC 0 < ENVOI DU NUMERO DU MAGNE-
< TOSCOPE A L'OPERATEUR TY1.
LAD DEMTYO
SVC 0 < ENVOI DU NOM DE LA BANDE A
< MONTER A L'OPERATEUR TY1.
E423: EQU $
LAD DEMTYI
SVC 0 < ATTENTE DE LA REPONSE DE
< L'OPERATEUR TY1.
LBY BUFFER < ANALYSE DE LA REPONSE.
CPI '0D < EST-CE UN R/C (=OK) ????
JE EE408 < OUI , VERS LA MAJ DE LA LRU.
CPI "O" < EST-CE UN 'O' (=OK) ???
JE EE408 < OUI , VERS LA MAJ DE LA LRU.
CPI "N" < EST-CE UN 'N' (NON) ????
JNE E423 < DEMANDE NOUVELLE REPONSE LORSQUE
< CELLE-CI N'A PAS ETE COMPRISE.
BR AE422 < ABORT ESCLAVE ....
PAGE
<
<
< P R O C E S S E U R V I D E O :
<
<
< FONCTION :
< CE PROCESSEUR APPELABLE AUSSI BIEN
< PAR 'EI'/'GO' QUE PAR 'GE' , PERMET
< D'EXPLOITER LES ITEMS DE TYPE 'S'.
< CE SYSTEME N'EST ACCESSIBLE QUE
< SOUS LE NUMERO DE COMPTE :EAO ,
< AFIN DE POUVOIR ACCEDER A LA LRU DE
< GESTION DES MAGNETOSCOPES.
<
<
< NOM D'UN ITEM VIDEO :
<
< <NOM-ITEM>::=<NOM-BANDE>($<NOM-SEQUENCE>)
<
<
< LE NUMERO DU TELEVISEUR ASSOCIE
< A LA VISU NSPOUT EST LE TELEVISEUR
< DE NUMERO NSPOUT-NSPVI1 A L'ENTREE
< DE LA BAIE DE COMMUTATION VIDEO.
<
<
< CONDITIONS DE RETOUR :
< CDRET=0 : RETOUR OK ,
< CDRET=1 : ERREUR D'ACN , DE TYPE D'ITEM ,
< OU MONTAGE IMPOSSIBLE ,
< CDRET=2 : SEQUENCE ABORTEE PAR L'ELEVE.
< (PAR UN CTRL-X-OFF)
<
<
< E N T R Y ' V I ' :
<
<
WORD LOC+'80 < VALEUR INITIALE DE LA BASE L.
WORD BRANCH < VALEUR INITIALE DE LA BASE W.
VIDEO: EQU $
LRP K
ADRI -1,K
PLR L,W < INITIALISATION DES BASES L & W.
LA APILE
LR A,K < INITIALISATION DU REGISTRE K.
LX MODCAL,W < RECUPERATION DU MODE D'APPEL.
LA &NCALL < A=NOM DE LA BRANCHE DE RETOUR.
STA 0,W < QUE L'3N MET EN TETE DU
< PROCESSEUR.
STZ CDRET,W < RAZ DE CDRET A PRIORI.
<
< VALIDATION DU TYPE DE L'ITEM1 :
< (CAS D'UN APPEL PAR 'GE')
<
LXI IINDIC-LTN*2
LBY &AKI1 < A=TYPE DE L'ITEM1.
CPI "S" < EST-CE LE TYPE VIDEO ???
JE ITEMS < OK , TYPE 'S' , LET'S GO !!!
<
< ERREUR DE TYPE DE L'ITEM1 :
<
LAD MITEM
BSR APRINT < ENVOI D'1N MESSAGE D'ERREUR.
BR AERR < ET RETOUR EN ERREUR.
<
<
< E X P L O I T A T I O N D E L ' I T E M ' S ' :
<
<
ITEMS: EQU $
<
< VALIDATION DE L'ACN DU DEMANDEUR :
<
WORD '1E25 < (A,B)=<ACN>.
CP EAO
JNE E400 < ERREUR , <ACN> INVALIDE.
XR A,B < ECHANGE 1ERE/2EME.
CP EAO+1
JE E401 < OK , ON EST SOUS :EAO.
E400: EQU $
WORD '1E25 < (A,B)=ACN.
CP SYS
JNE E1010 < ON N'EST PAS NON PLUS SOUS :SYS.
XR A,B < ECHANGE 1ERE/2EME.
CP SYS+1
JE E401 < OK , ON EST SOUS :SYS.
E1010: EQU $
LAD MACN
BSR APRINT < ENVOI D'1N MESSAGE D'ERREUR ,
< PRECISANT QUE CE NUMERO DE
< COMPTE N'EST PAS AUTORISE ...
BR AERR < ET ABORT ....
<
< PHASE CRITIQUE D'ACCES A LA LRU :
<
E401: EQU $
WORD '1ED5 < 'TEST & SET' 5.
JC E401 < BLOCAGE SI 5 N'EST PAS LIBRE.
<
< ACCES A L'OCCUPATION DES MAGNETOSCOPES :
<
LAI 5 < FONCTION 'LOAD'.
BSR AMAGS < ACCES A LA TABLE DU LRU ; A
< NOTER QUE LES CONDITIONS DE
< RETOUR SONT INDIFFERENTES ; ON
< PEUT AINSI INITIALISER LE
< SYSTEME.
<
< ACCES A L'IDESC :
<
WORD '1E45 < A=IDESC . XXX 1000 XXXXXXXXXXXXXXXX
LR A,B < B=IDESC.
<
< RECHERCHE D'UN MAGNETOSCOPE DEJA ATTACHE A CET IDESC :
<
LXI -NMAG
E402: EQU $
LA &ALRUA < PARCOURS ASCENDANT DE LA LRU.
JAL E410 < L'ENTREE N'EST PAS A PRENDRE
< EN COMPTE , CAR LE MAFNETOSCOPE
< QU'ELLE CONTIENT EST HS.
ANDI '7F < A=ID ASSOCIE AU MAGNETOSCOPE
< CONTENU DANS CET ENTREE.
CPR A,B < EST-CE L'ID DE L'ESCLAVE ????
JE E405 < OK , C'EST BON , ON A TROUVE ID.
E410: EQU $
JIX E402 < ENTREE SUIVANTE DE LA LRU.
<
< CAS OU ON N'A PAS TROUVE L'ID :
<
LXI NMAG
E403: EQU $
LA &ALRUD < PARCOURS DESCENDANT DE LA LRU.
JAGE E404 < OK , ON A TROUVE UN MAGNETOSCOPE
< EN ETAT DE MARCHE (INDEPENDAM-
< MENT DE L'ID ASSOCIE....).
JDX E403 < PASSAGE A L'ENTREE PRECDENTE
< DANS LE CAS OU LE MAGNETOSCOPE
< TROUVE EST HS.
X100: VAL 0
E422: EQU $ < ENTRY 'REPONSE NEGATIVE DE
< L'OPERATEUR TY1'.
LAD MAGER
BSR APRINT < ENVOI D'UN MESSAGE D'ERREUR
< LORSQU'IL N'Y A PLUS DE
< MAGNETOSCOPES LIBRES.
BR AERR < ABORT ESCLAVE.
IF VIRE,X100,,X100
<
< OCCUPATION DU MAGNETOSCOPE TROUVE :
<
E404: EQU $
ANDI -'80 < RAZ DES BITS 9-15.
ORR B,A < ON CONCATENE LE NUMERO DU
< MAGNETOSCOPE (A) AVEC L'ID (B).
STA &ALRUD < MAJ DE LA LRU.
ADRI -NMAG-1,X < CALCUL D'UN NUMERO ASCENDANT.
<
< ROTATION DE LA LRU :
<
E405: EQU $
LY &ALRUA < Y=ENTREE COURANTE DE LA LRU.
ADRI NMAG,X < X=NBRE DE MOTS A DEPLACER
< POUR FAIRE TOURNER LA LRU.
CPZR X
JE E406 < OK , L'ENTREE TROUVEE EST
< DEJA EN TETE.
LA ALRU < A=@EMETTEUR.
LR A,B
ADRI 1,B < B=@RECEPTEUR.
MOVE < DEPLACEMENT DE (X) MOTS.
STY &ALRU < MISE EN TETE DE L'ENTREE
< COURANTE.
<
< RECUPERATION DU NUMERO DU MAGNETOSCOPE ALLOUE :
<
E406: EQU $
LR Y,A < A=ENTREE COURANTE.
SLRS 8 < A=NUMERO DU MAGNETOSCOPE.
STA NUMAG < AND SAVE IT.
<
< RECUPERATION DU NOM DE LA BANDE VIDEO :
<
LAI LNOM/2 < NBRE DE MOTS MAX POUR LE
< NOM D'UNE BANDE.
MP NUMAG
LR B,A
AD ATAPES < A=@DU NOM DE LA BANDE DEMANDEE.
SBT 0 < POSITIONNEMENT DE L'INDEX.
STA NOMTAP < GENERATION DU RELAI D'ACCES
< AU NOM DE LA BANDE DEJA
< PRE-MONTEE SUR (NUMAG).
<
< TEST SUR UN PRE-MONTAGE DE LA BANDE DEMANDEE :
<
LXI 0 < INDEX DE COMPARAISON.
LYI LNOM < POUR LE TEST DE FIN DE NOM.
E411: EQU $
LBY &NOMSEQ < NOM DE LA SEQUENCE.
CPBY &NOMTAP < NOM DE LA BANDE PRE-MONTEE (???).
JNE E407 < IL N'Y A PAS COINCIDENCE.
RBT 10 < AFIN DE RAMENER LE CODE
< DE '$' A CELUI DE L'EOT.
CPI '04 < EST-ON AU BOUT DU NOM DE
< BANDE ????
< ('$'('24) OU 'EOT'('04))
JE E408 < OUI , C'EST BON OK ...
ADRI 1,X < PASSAGE AU CARACTERE SUIVANT.
CPR X,Y < TEST DE FIN DE NOM.
JNE E411 < ON CONTINUE ....
<
< CAS OU LA BANDE DEMANDEE EST PRE-MONTEE :
<
E408: EQU $
EE408: EQU E408
LAI 3 < FONCTION 'DELETE'.
BSR AMAGS < ACCES AU SGN POUR DELETER
< LA LRU AVANT SA MISE A JOUR.
LAI 4 < FONCTION 'STORE'.
BSR AMAGS < MAJ DE LA LRU.
<
< FIN DE LA PHASE CRITIQUE :
<
WORD '1E55 < 'RESET' 5.
JC $ < ????BIZARRE ....
X100: VAL 0
IF VIRE,,X100,
PAGE
<
<
< R E G I E V I D E O S I M U L E E
< S U R L A B A I E D E C O M M U T A T I O N :
<
<
< FONCTION :
< CE PROCESSEUR UTILISABLE SOUS LE
< NUMERO DE COMPTE DU SYSTEME PERMET
< DE COMMANDER LA BAIE DE COMMUTATION
< VIDEO FREQUENCE , AINSI QUE LES
< MAGNETOSCOPES DU SYSTEME ...
<
<
WORD LOC+'80
WORD BRANCH
VIDEO: EQU $
LRP K
ADRI -1,K
PLR L,W < INITIALISATION DES BASES L ET W.
LAD STACK-1
LR A,K < INITIALISATION DE K SUR LA PILE
< DE TRAVAIL DANS 1K MOTS.
LA NGE
STA 0,W < MISE EN PLACE DU NOM DE
< L'3VERLAY DE RETOUR.
<
< VALIDATION DE L'ACN DU DEMANDEUR :
<
WORD '1E25 < (A,B)=ACN DU DEMANDEUR.
CP SYS < EST-CE :SYS ???
JNE E400 < NON , ABORT ...
LR B,A < PEUT-ETRE ....
CP SYS+1 < EST-CE :SYS ???
JE INTER1 < OUI , C'EST :SYS : ON Y VA ...
<
< CAS DES ACN NON AUTORISES :
<
E400: EQU $
LAD MACN
BSR APRINT < ENVOI D'UN MESSAGE D'ERREURS.
BR AERR < VERS L'ABORT ...
<
< C A S D E : S Y S :
<
INTER1: EQU $
WORD '1E55 < RESET 5 PAR PRUDENCE.
WORD '1E65 < RESET 6 PAR PRUDENCE.
WORD '1E75 < RESET 7 PAR PRUDENCE.
<
< CAS DE :SYS : ASSIGNATION DU NVP='0A :
<
LAD MREL10
BSR ACALCI < DESASSIGNATION DU NVP='0A.
LAD MCU2
BSR ACALCI < !ASSIGN A=CU2.
<
< RESTAURATION EVENTUELLE DE LA MEMOIRE DE COMMUTATION :
<
LAD DEMLB
SVC 0 < LE RETOUR EST INDIFFERENT !!!
<
<
< I N T E R R O G A T I O N D E L ' U T I L I S A T E U R :
<
<
< COMMANDES RECONNUES :
< C : CONNEXION D'UNE ENTREE A UNE SORTIE ,
< D : DECONNEXION D'UNE SORTIE ,
< Z : RAZ DE TOUTES LES CONNEXIONS ,
< L : EDITION DU CONTENU DE LA MEMOIRE DE COMMUT ,
< M : TELECOMMANDE D'UN MAGNETOSCOPE ,
< W : RETOUR TEMPORAIRE AU CCI (PERMET !W) ,
< F : RETOUR A 'GE'.
<
<
< A T T E N T I O N :
< TOUT NUMERO DE DISPOSITIF VIDEO
< SERA DONNE SOUS LA FORME DE 2
< CHIFFRES DECIMAUX , QUE CE SOIT EN
< ENTREE COMME EN SORTIE.
<
<
INTER: EQU $
LAD MINT
BSR APRINT < ENVOI D'UN MESSAGE D'INVITATION.
LAI 1
STA DEMIN+2 < DEMANDE DE LECTURE 1 CARACTERE.
LAD DEMIN
SVC 0 < ENTREE COMMANDE UTILISATEUR.
LBY BUFFER < A=REPONSE SUR 1 CARACTERE.
CPI "C"
JE RCONEC < DEMANDE DE CONNEXION.
CPI "D"
JE RDECON < DEMANDE DE DECONNEXION.
CPI "M"
JE RMAGN < TELECOMMANDE MAGNETOSCOPE.
CPI "F"
JE RFIN < DEMANDE DE RETOUR A 'GE'.
CPI "W"
JE RCCI < RETOUR TEMPORAIRE AU CCI.
CPI "Z"
JE RRAZ < RAZ DE TOUTES LES CONNEXIONS.
CPI "L"
JE RLIST < LISTE MEMOIRE DE COMMUTATION.
LAD MERR
BSR APRINT < REPONSE NON RECONNUE : ERREUR.
JMP INTER < VERS UNE NOUVELLE INTERROGATION.
<
< R E T O U R A ' G E ' :
<
RFIN: EQU $
<
< SAUVEGARDE DE LA MEMOIRE DE COMMUTATION :
<
LAD DEMDB
SVC 0 < DELETE MEMOIRE DE COMMUTATION.
LAD DEMSB
SVC 0 < SAVE MEMOIRE DE COMMUTATION.
<
< RETOUR A 'GE' :
<
BR AGOGE < VERS LE RETOUR A 'GE'.
<
< R E T O U R T E M P O R A I R E A U C C I :
<
RCCI: EQU $
LAD DEMCCI
SVC 0 < RETOUR TEMPORAIRE AU CCI ;
< PERMET DONC DE METTRE LA
< CONSOLE EN WAIT (!W).
JMP INTER < NOUVELLE INTERROGATION SI !GO.
<
< D E M A N D E D E C O N N E X I O N :
<
< NOTA :
< UNE MEME ENTREE PEUT ETRE CONNECTEE
< SIMULTANEMENT A PLUSIEURS SORTIES !!!
<
RCONEC: EQU $
LYI 2 < Y=2.
STY DEMIN+2 < DEMANDE D'ENTREE DE 2 CARACTERES.
CON1: EQU $
LAD MIN
BSR APRINT < ENVOI D'UN MESSAGE DEMANDANT
< LE NUMERO D'ENTREE.
LAD DEMIN
SVC 0 < ENTREE DU NUMERO DE L'ENTREE
< SOUS FORME DE 2 CHIFFRES
< DECIMAUX.
BSR ADEC < TENTATIVE DE CONVERSION.
JNE CON1 < ERREUR : ON REDEMANDE.
CPI NIN < VALIDATION DU NUMERO DE L'ENTREE.
JGE CON1 < ERREUR : ENTREE INEXISTANTE.
BSR ARNMAG < OK , ON SAVE LE NUMERO DE
< L'ENTREE COURANTE (A) , ET
< ON CALCULE SA PARITE.
CON3: EQU $
LAD MOUT
BSR APRINT < ENVOI D'UN MESSAGE DEMANDANT
< LE NUMERO DE LA SAORTIE.
LAD DEMIN
SVC 0 < ENTREE DU NUMERO DE LA SORTIE
< SOUS FORME DE 2 CHIFFRES
< DECIMAUX.
BSR ADEC < CONVERSION DU NUMERO DE SORTIE.
JNE CON3 < ERREUR , ON REDEMANDE ...
CPI NOUT < VALIDATION DU NUMERO DE LA
< SORTIE DEMANDEE.
JGE CON3 < ERREUR : SORTIE INEXISTANTE.
STA NUMOUT < OK , SAVE LE NUMERO DE LA
< SORTIE COURANTE.
LR A,X < X=NUMERO DE LA SORTIE COURANTE.
LA NUMAG < A=NUMERO DE L'ENTREE COURANTE.
STA &AMEMB < GENERATION DE LA MEMOIRE DE
< COMMUTATION.
<
< EXECUTION DE LA DEMANDE DE CONNEXION :
<
LYI 'A5 < Y=FONCTION DE CONNEXION.
BSR ACOMUT < CONNEXION.
JMP INTER < VERS UNE NOUVELLE INTERROGATION.
<
< D E M A N D E D E D E C O N N E X I O N :
<
RDECON: EQU $
LYI 2 < Y=2.
STY DEMIN+2 < AFIN DE LIRE 2 CARACTERES.
DECON1: EQU $
LAD MOUT
BSR APRINT < ENVOI D'UN MESSAGE DEMANDANT
< LE NUMERO DE LA SORTIE A
< DECONECTER.
LAD DEMIN
SVC 0 < ENTREE DU NUMERO DE LA SORTIE
< SOUS FORME DE 2 CHIFFRES
< DECIMAUX.
BSR ADEC < CONVERSION BINAIRE.
JNE DECON1 < ERREUR DE SYNTAXE HEXA.
CPI NOUT < VALIDATION DU NUMERO DE LA
< SORTIE DEMANDEE.
JGE DECON1 < ERREUR : SORTIE INEXISTANTE.
STA NUMOUT < OK , SAVE LE NUMERO DE LA SORTIE
< COURANTE.
LR A,X < X=NUMERO SORTIE COURANTE.
LA &AMEMB < A=NUMERO DE L'ENTREE CONNECTEE.
JAL INTER < DEJA DECONNECTE , RIEN A FAIRE ...
BSR ARNMAG < SAVE LE NUMERO DE L'ENTREE
< CONNECTEE ET CALCUL PARITE.
LAI -1
STA &AMEMB < MEMORISATION DE LA DECONNEXION.
<
< EXECUTION DE LA DECONNEXION :
<
LYI '81 < Y=FONCTION DE DECONNEXION.
BSR ACOMUT < DECONNEXION.
JMP INTER < VERS UNE NOUVELLE INTERROGATION.
<
< R A Z D E T O U T E S L E S
< C O N N E X I O N S :
<
RRAZ: EQU $
LAI NOUT-1
STA NUMOUT < ON COMMENCE PAR LA DERNIERE
< SORTIE DE LA BAIE.
RRAZ1: EQU $
LX NUMOUT
LA &AMEMB < A=ENTREE CONNECTEE A LA SORTIE.
JAL RRAZ2 < SORTIE NON CONNECTEE.
BSR ARNMAG < SINON CALCUL DU NUMERO D'ENTREE
< ET DE SA PARITE.
LAI -1
STA &AMEMB < ET RAZ DE L'IMAGE DE LA MEMOIRE.
LYI '81
BSR ACOMUT < COMMUTATION DE LA BAIE.
RRAZ2: EQU $
DC NUMOUT < PASSAGE A LA SORTIE PRECEDENTE.
JGE RRAZ1 < OK , ELLE EXISTE.
JMP INTER < SINON , INTERROGATION ESCLAVE.
<
< E D I T I O N D E S C O N N E X I O N S :
<
RLIST: EQU $
LAI NOUT-1
STA NUMOUT < ON COMMENCE A LA DERNIERE SORTIE.
RLIST1: EQU $
LX NUMOUT
LA &AMEMB < RECUPERATION DE L'ENTREE QUI
< EST CONNECTEE A LA SORTIE (X).
JAL RLIST3 < SORTIE NON CONNECTEE.
SLRD 16 < A=0 ; B=NUMERO D'ENTREE.
DV C10 < DECONCATENATION DECIMALE.
ADRI '30,A < CONVERSION DECIMALE DU 1ER
< CHIFFRE.
LXI 2
STBY &AMLIST < ET MISE DANS LE BUFFER D'EDITION.
LR B,A < PASSAGE AU CHIFFRE SUIVANT.
ADRI '30,A < CONVERSION ASCI.
LXI 3
STBY &AMLIST < ET MISE DANS LE BUFFER.
LA NUMOUT
SLRD 16 < A=0 ; B=NUMERO DE SORTIE.
DV C10 < DECONCATENATION DECIMALE.
ADRI '30,A < CONVERSION DECIMALE DU 1ER
< CHIFFRE.
LXI 7
STBY &AMLIST < ET MISE DANS LE BUFFER.
LR B,A < APSSAGE AU 2EME CHIFFRE.
ADRI '30,A < CONVERSION ASCI.
LXI 8
STBY &AMLIST < ET MISE DANS LE BUFFER.
LAD DEML
SVC 0 < EDITION D'UNE CONNEXION.
RLIST3: EQU $
DC NUMOUT < PASSAGE A LA SORTIE PRECEDENTE.
JGE RLIST1 < OK , ELLE EXISTE ...
JMP INTER < SINON , INTERROGATION ESCLAVE.
<
< T E L E C O M M A N D E D E S
< M A G N E T O S C O P E S :
<
< NUMERO DE MAGNETOSCOPES :
< 2 CHIFFRES DECIMAUX POUR 1 MAGNETOSCOPE ,
< <EOM> POUR UN ORDRE GENERAL.
<
< COMMANDES RECONNUES :
< P : PLAY ,
< R : REWIND ,
< F : FORWARD ,
< S : STOP ,
< E : ENREGISTREMENT.
< @ : LECTURE DE L'ADRESSE COURANTE TOUTES LES
< SECONDES.
<
RMAGN: EQU $
LYI 2 < Y=2.
STY DEMIN+2 < AFIN DE LIRE 2 CARACTERES.
RMAGN1: EQU $
LAD MAGN
BSR APRINT < ENVOI D'UN MESSAGE DEMANDANT
< LE NUMERO DE MAGNETOSCOPE.
LAD DEMIN
SVC 0 < LECTURE DU NUMERO DE MAGNETO
< SOUS FORME DE 2 CHIFFRES
< DECIMAUX.
WORD '1E35 < RECUPERATION DANS B DU NBRE
< DE CARACTERES ENTRES.
LR B,A < A=NBRE DE CARACTERES LUS.
CPI 1 < N'Y EN A-T'IL QU'UN ???
JNE RMAGN7 < NON 2 , DONC ORDRE MAGNETO.
<
< CAS D'UN APPEL GENERAL :
<
LAI 0
SBT 4 < POSITIONNEMENT DU BIT D'ORDRE
STA NUMAG < GENERAL A LA PLACE DU NUMERO.
LAI 0
SBT 1 < BIT DE PARITE A PRIORI.
STA PARITE
JMP RMAGN8 < ET C'EST TOUT ...
<
< CAS DES APPELS SPECIFIQUES :
<
RMAGN7: EQU $
BSR ADEC < CONVERSION BINAIRE.
JNE RMAGN1 < ERREUR DE SYNTAXE HEXA.
CPI NMAG < VALIDATION DU NUMERO DE MAGNETO.
JGE RMAGN1 < ERREUR : MAGNETO INEXISTANT.
BSR ARNMAG < SAVE LE NUMERO DE MAGNETO ET
< SA PARITE.
<
< RECUPERATION DE L'3RDRE AU MAGNETO :
<
RMAGN8: EQU $
LYI 1
STY DEMIN+2 < POUR LIRE 1 CARACTERE.
RMAGN2: EQU $
LAD MORDRE
BSR APRINT < ENVOI D'UNE INVITATION.
LAD DEMIN
SVC 0 < ENTREE D'1 CARACTERE D'ORDRE.
LBY BUFFER < A=COMMMANDE DEMANDEE.
LB PLAY < B=PLAY A PRIORI.
CPI "P"
JE RMAGN3 < EXECUTION D'UN PLAY.
LB RWD < B=REWIND A PRIORI.
CPI "R"
JE RMAGN3 < EXECUTION D'UN REWIND.
LB FWD < B=FORWARD A PRIORI.
CPI "F"
JE RMAGN3 < EXECUTION D'UN FORWARD.
LB STOP < B=STOP A PRIORI.
CPI "S"
JE RMAGN3 < EXECUTION D'UN STOP.
LB RECORD < B=RECORD A PRIORI.
CPI "E"
JE RMAGN3 < EXECUTION D'UN RECORD.
CPI '40
JE RMAGN5 < RECUPERATION PERIODIQUE DE
< L'ADRESSE COURANTE.
JNE RMAGN2 < CAS D'UNE COMMANDE NON RECONNUE ,
< ON REDEMANDE L'ORDRE.
<
< EXECUTION DES ORDRES INSTANTANES (P,S,E,R,F,..) :
<
RMAGN3: EQU $
LR B,A < A=ORDRE A ENVOYER AU MAGNETO.
OR NUMAG < CONCATENATION DU NUMERO MAGNETO ,
OR PARITE < ET DE SA PARITE.
BSR AORDRE < ENVOI DE L'ORDRE AU MAGNETO.
BR AINTER < VERS UNE NOUVELLE INTERROGATION.
<
< AFFICHAGE PERIODIQUE DE L'ADRESSE COURANTE :
<
RMAGN5: EQU $
LA ADC < RECUPERATION DE L'ORDRE.
AND MBF00 < NETTOYAGE !!!
OR NUMAG < CONCATENATION NUMERO DE MAGNETO.
OR PARITE < CONCATENATION PARITE DU NUMERO.
STA ADC < MAJ DE L'ORDRE @ COURANTE.
RMAGN6: EQU $ < BOUCLE DE LECTURE PERIODIQUE.
BSR ARADC < LECTURE DE L'ADRESSE COURANTE.
LYI 1
BSR ATEMPO < TEMPORISATION DE (Y)=1 SECONDE.
JMP RMAGN6 < BOUCLAGE JUSQU'AU JUGEMENT
< DERNIER , A MOINS QU'UN ALT-
< MODE NE VIENNE INTERROMPRE
< LA BOUCLE !!!
RMAGN4: EQU $
X100: VAL 0
IF VIRE,X100,,X100
<
< TELECOMMANDE DU MAGNETOSCOPE :
<
LAD MREL10
BSR ACALCI < DESASSIGNATION DU NVP=10.
LAD MCU2
BSR ACALCI < !ASSIGN 10=CU2 (TELECOMMANDE
< DES MAGNETOSCOPES).
LA NUMAG < A=NUMAG.
PTY < CALCUL DE LA PARITE DE NUMAG.
LAI 0 < BIT1=0 A PRIORI.
JNC E600 < EFFECTIVEMENT : PARITE PAIRE.
SBT 1 < ET NON , PARITE IMPAIRE.
E600: EQU $
STA PARITE < ET SAVE LA PARITE.
<
< PREPARATION DES ORDRES :
<
LXI NORDRE < X=NBRE D'ORDRES.
E610: EQU $
LA &ATO < ACCES A UN ORDRE.
AND MBF00 < NETTOYAGE , ON NE SAIT JAMAIS.
OR NUMAG < CONCATENATION NUMAG.
OR PARITE < CONCATENATION PARITE.
STA &ATO < MAJ DE L'ODRE.
JDX E610 < AU SUIVANT ....
<
<
< E N V O I D E L ' O R D R E A U
< M A G N E T O S C O P E :
<
<
E620: EQU $
LAI '13 < CARACTERE CTRL-X-OFF.
WORD '1EA5 < REMPLACEMENT DE 'ALT-MODE' PAR
< LE CARACTERE CTRL-X-OFF.
LA ABORTV
WORD '1EB5 < MISE EN PLACE D'UN 'PRESC'
< SPECIAL LORS DE LA DIFFUSION
< DES SEQUENCES AUDIO-VISUELLES ,
< PERMETTANT D'ARRETER LES MAGNETOS
< MEME SI UN 'ALT-MODE' EST FRAPPE
LYI 0 < PLAY EN CONTINU A PRIORI.
LXI SDEBS
CPZ &AKI1 < TEST D'UNE EVENTUELLE ADRESSE
< DE DEBUT DE SEQUENCE.
JL E602 < SDEBS<0 : IL S'AGIT D'UN PLAY
< A PARTIR DE L'ADRESSE COURANTE ,
< AVEC TEST DE FIN SUR SFINS.
LXI SMOVE
LA &AKI1 < QUE FAIRE DE CET ITEM 'S' ???
JAL E602 < DEMANDE DE PLAY EN CONTINU.
TBT SARRET < EST-CE UN STOP ???
JC E690 < OUI , VERS LE STOP MAGNETO.
IF VERSIO-0,X200,,X200
<
< ACCES A L 'ADRESSE COURANTE DE LA BANDE :
<
LA FWD
BSR AORDRE < MISE DU MAGNETOSCOPE EN FORWARD
< AFIN DE POUVOIR LIRE L'ADRESSE
< COURANTE ....
LYI 1 < Y=1 SECONDE DE FORWARD.
BSR ATEMPO < ATTENTE DE L'ETABLISSEMENT
< DU FORWARD.
BSR ARADC < LECTURE DE L'ADRESSE COURANTE.
BSR ASTOP < ARRET DU MAGNETOSCOPE , ET
< TEMPORISATION DE 3 SECONDES.
<
< CHOIX DU SENS DE DEFILEMENT :
<
LXI SDEBS
LX &AKI1 < X=@DEBUT DE SEQUENCE.
E655: EQU $
LR X,A < A=@DEBUT DE SEQUENCE.
SB ADRES < A=@DEBUT-@COURANTE.
LYI 0 < Y=0 : ON EST SUR L'@DEBUT.
< (A PRIORI !!!!)
JAE E602 < ON EST ARRIVE , FABULEUX !!!
JAL E650 < @DEBUT<@COURANTE : REWIND.
CPI VOISIN < EST-ON PRET DU DEBUT ????
JLE E651 < OUI , ALLONS FAIRE UNE
< APPROCHE FINE ....
LA FWD < SINON , ON PART EN FORWARD ...
JMP E603 < VERS LA RECHERCHE GROSSIERE.
E650: EQU $
LA RWD < CAS DU REWIND NECESSAIRE.
E603: EQU $
BSR AORDRE < ENVOI DE L'ORDRE RWD/FWD
< AU MAGNETOSCOPE.
<
< BOUCLE D'ATTENTE DE POSITIONNEMENT :
<
LYI 1 < Y=1 SECONDE DE TEMPORISATION
< INTER-TEST.
LAI '80*VERSIO+3
STA DUREE < DUREE=3*(Y) SECONDES.
< (DANS LE CAS DE LA 2EME VERSION ,
< LA DUREE EST PRISE SUPERIEURE
< AU TEMPS DE PARCOURS ENTIER
< DE LA BANDE A GRANDE VITESSE!).
E604: EQU $
DC DUREE
JG E656 < LA DUREE N'EST PAS ENCORE
< POURSUIVONS LA RECHERCHE RAPIDE.
BSR ASTOP < SI DUREE=0 : ON ARRETE LE
< MAGNETO. ET ON RE-TESTE LA
< POSITION PAR RAPPORT AU DEBUT
< DE SEQUENCE (QU'ON A PU
< PASSER SANS S'EN APERCEVOIR.
JMP E655 < VERS LE TEST DE DEBUT.
E656: EQU $
BSR ATEMPO < TEMPORISATION (Y) SECONDES.
BSR ARADC < LECTURE DE L'ADRESSE COURANTE.
SBR X,A < ON FORME :
< A=@COURANTE-@DEBUT SEQUENCE.
CPI -VOISIN
JL E604 < ON CONTINUE A TTENDRE.
JAG E604
<
< CAS OU L'ON EST PRESQUE ARRIVE :
< (ON ESSAYE DE S'ARRETER DANS LA FOURCHETTE -'40,0)
<
BSR ASTOP < ARRET MAGNETO AVEC TEMPORI-
< SATION DE 4 SECONDES.
<
< P O S I T I O N N E M E N T P L U S F I N :
<
E651: EQU $
LYI 1 < Y=1 SECONDE.
< (Y#0 : ON N'EST PAS SUR @DEBUT)
E602: EQU $
LA PLAY
BSR AORDRE < ENVOI D'UN ORDRE PLAY.
CPZR Y < EST-ON DEJA SUR @DEBUT ???
JE E641 < OUI , PAS DE POSITIONNEMENT FIN.
<
< BOUCLE DE POSITIONNEMNT FIN :
<
E640: EQU $
BSR ATEMPO < ATTENTE (Y) SECONDES.
BSR ARADC < RECUPERATION ADRESSE COURANTE.
SBR X,A < A=@COURANTE-@DEBUT SEQUENCE.
JAL E640 < ON N'EST PAS ENCORE SUR LE
< DEBUT DE SEQUENCE : ON CONTUNUE
< LE PLAY SANS COMMUTATION.
X200: VAL 0
IF VERSIO-1,X200,,X200
<
< CHOIX D'UN SENS A PRIORI :
<
LA FWD < ON COMMENCE EN FWD.
JMP E1020 < ET C'EST PARTI (CF. EN 14...)
<
< BOUCLE DE RECUPERATION DE L'ADRESSE COURANTE ET DE POSITIONNEMENT :
<
E655: EQU $
LR X,A < A=ADRESSE CIBLE TRANSLATEE.
SB ADRES < A=DISTANCE CORRIGEE DE L'ADRESSE
< COURANTE A L'ADRESSE CIBLE ,
LR A,Y < ET SAVE Y=DISTANCE.
SARD 16 < MISE DE LA DISTANCE SUR 32 BITS.
DV GAMMA
LR Y,A < RESTAURE A=DISTANCE CORRIGEE.
LYI 0 < A PRIORI Y=0=CONSTANTE DE
< TRANSLATION.
CPZR B < LA DISTANCE EST-ELLE UN
< MULTIPLE DE GAMMA ???
JNE E656 < NON , Y=0.
LYI 1 < OUI , ABS(Y)=1.
E656: EQU $
JAL E650 < DISTANCE CORRIGEE<0 : RWD.
JAE E1003 < DISTANCE CORRIGEE=0 : ORDRE
< INCHANGE , ON VA OSCILLER AUTOUR
< DE LA CIBLE ...
LA FWD < DISTANCE CORRIGEE>0 : FWD.
NGR Y,Y < DANS LE CAS DU FWD , LA CONSTANTE
< DE TRANSLATION VAUT -1/0.
JMP E603
E650: EQU $
LA RWD < DANS LE CAS DU RWD , LA CONSTANTE
< DE TRANSLATION VAUT 1/0.
E603: EQU $
ADR Y,X < CORRECTION DE L'ADRESSE CIBLE
< (X) EN FONCTION DU SENS DE
< PARCOURS COURANT RWD/FWD , ET
< FONCTION DE LA DISTANCE CORRIGEE
< DE L'ADRESSE COURANTE A L'ADRESSE
< CIBLE (??!?!)
CP ORDREP < LE SENS DETERMINE EST-IL LE
< SENS COURANT DU MAGNETO ???
JE E1003 < [\[E,RP /7 '[[[\ELA ][\\ [N ...
DC LIMIT < NON , MAIS IL NE FAUT PAS NON
< PLUS CHANGER DE SENS TROP
< SOUVENT : RISQUE D'OSCILLATIONS.
JE E1004 < C'EN EST TROP , ON ARRETE (DE
< POISSON...)
<
< POINT D'ENTREE DE LA BOUCLE :
<
E1020: EQU $
STA ORDREP < ET NON , IL FAUT LE SAUVEGARDER ,
< ET L'ENVOYER ...
LXI SDEBS
LX &AKI1 < X=ADRESSE CIBLE.
< (INIT OU REINIT)
BSR AORDRE < ENVOI DU NOUVEL ORDRE (A).
LYI 1
BSR ATEMPO < APRES CHAQUE CHANGEMENT D'ODRE ,
< ON ATTEND 1 SECONDE QUE LE
< SYSTEME SE STABILISE ...
<
< ACCES A L'ADRESSE COURANTE :
<
E1003: EQU $
BSR ARADC
JMP E655 < VERS LE TEST DE POSITION.
<
< CAS OU L'ON EST PASSE APPAREMMENT SUR L'ADRESSE CIBLE :
<
E6020: EQU $
DC LIMIT < POUR EVITER DE FACHEUSES
< OSCILLATIONS.
JE E1004 < OK , ON ARRETE ...
< (ET OUI , DE POISSON ENCORE ...)
LR X,A < A=ADRESSE-CIBLE CORRIGEE.
LXI SDEBS
LX &AKI1 < X=ADRESSE-CIBLE REELLE.
CPR X,A < Y-A-T'IL EU CORRECTION ???
JNE E655 < ET OUI , ON RECOMMENCE ...
<
< CAS OU L'ON ADMET QUE L'ON EST POSITIONNE :
<
E1004: EQU $
BSR ASTOP < ARRET DU MAGNETO ET TEMPO (4S).
<
< MISE EN PLAY DU MAGNETO :
<
E602: EQU $
LA PLAY
BSR AORDRE
X200: VAL 0
<
< E T A B L I S S E M E N T D E L A C O N N E X I O N :
<
E641: EQU $
LXI SMOVE
LA &AKI1 < QUE FAIRE DE CET ITEM 'S' ????
TBT SURCH < EST-CE UN POSITIONNEMENT SEUL ???
JC E690 < OUI , ON A DONC FINI , ALONS
< ARRETER LE MAGNETO.
LYI 'A5 < FONCTION DE CONNEXION.
BSR ACOMUT < ETABLISSEMENT.
LXI SMOVE
CPZ &AKI1 < QUE FAIRE DE L'ITEM 'S' ????
JL E743 < CAS D'UNE DEMANDE DE PLAY EN
< CONTINU ; ON VA SORTIR IMME-
< DIATEMENT (ON RESTAURE MALGRE
< TOUT LE ALT-MODE ET PRESC).
<
< D I F F U S I O N D E L A S E Q U E N C E :
<
LXI SFINS
LX &AKI1 < X=@FIN DE SEQUENCE.
LYI 2 < Y=2 SECONDES DE TEMPORISATION
< INTER-TEST.
<
< BOUCLE D'ATTENTE DE FIN DE SEQUENCE :
<
E605: EQU $
BSR ATEMPO < TEMPO (Y) SECONDES.
BSR ARADC < LECTURE DE L'ADRESSE COURANTE
< TOUTES LES (Y) SECONDES.
SBR X,A < ON FORME :
< A=@COURANTE-@FIN SEQUENCE.
JAL E605 < ON CONTINUE LA DIFFUSION.
X100: VAL 0
<
< F I N D E D I F F U S I O N :
<
E690: EQU $ < ENTRY 'POSITIONNEMENT SEUL'.
LA STOP
BSR AORDRE < ARRET DU MAGNETOSCOPE.
LYI '81 < FONCTION DE RUPTURE DE CONNEXION.
BSR ACOMUT < RUPTURE DE LA CONNEXION.
LYI 1
BSR ATEMPO < 1 SECONDE DE TEMPORISATION
< POUR LE STOP QUI EST DEMANDE.
<
< ET C'EST FINI ....
<
E743: EQU $ < POUR 'PLAY EN CONTINU'.
LAI '7D < CARACTERE 'ALT-MODE'.
WORD '1EA5 < RESTAURATION DU 'ALT-MODE'.
E691: EQU $ < ENTRY 'PLAY EN CONTINU'.
LA ABORT
WORD '1EB5 < RESTAURATION DU 'PRESC'
< IMPLICITE DE EI/GO.
IF VIRE,,X100,
BR AINTER < VERS LA COMMANDE SUIVANTE.
X100: VAL 0
IF VIRE,X100,,X100
<
<
< T E S T D ' E F F A C E M E N T D E L ' E C R A N :
<
<
LXI SERASE
CPZ &AKI1 < UN EFFACEMENT EST-IL DEMANDE ???
JNE E10 < NON ..
LAD DEMERA
SVC 0 < SI OUI , EFFACEMENT DE L'ECRAN.
X100: VAL 0
<
<
< R E T O U R A L ' A P P E L A N T :
<
<
E10: EQU $
IF VIRE,,X100,
LA APILE
LR A,K < REINITIALISATION DE K SUR LA
< PILE DE SODOME.
X100: VAL 0
<
< DESASSIGNATION DES NVP :
<
LAD MREL10
BSR ACALCI < DESASSIGN LE NVP='0A.
LAD MREL11
BSR ACALCI < DESASSIGN LE NVP='0B.
<
< PREPARATION DE L'OVERLAY :
<
LAI BRANCH-ZERO
LR A,W < W=@BRANCH.
LR A,C < C#0 AU CAS OU L'3N FERAIT UN
< RETOUR A 'EI'/'GO' (C#0 PERMET
< DE DISTINGUER UNE GENERATION
< D'UN RETOUR D'OVERLAY).
STZ MODCAL,W < RAZ DU MODE D'APPEL A PRIORI.
LAI 6
STBY DEMSGN < DEMSGN EST MISE EN MODE
< 'LOAD SOUS :SYS'.
<
< APPEL DE L'OVERLAY SUIVANT :
<
E11: EQU $
LAD DEMSGN
BSR AOVL < A=@DEMSGN ; W=@BRANCH.
LAD DEMCCI
SVC 0 < RETOUR AU CCI EN CAS D'ERREUR
< CHARGEMENT ...
JMP E11 < TRY AGAIN LE CHARGEMENT SI !GO.
<
<
< E R R E U R S D ' E X E C U T I O N :
<
<
< FONCTION :
< PREPARE LE RETOUR A L'APPELANT EN
< FAISANT : CDRET=1.
<
<
< ARGUMENT :
< W=@BRANCH.
<
<
ERREUR: EQU $
IC CDRET,W < CDRET=1.
WORD '1E55 < RESET 5 A PRIORI.
WORD '1E65 < RESET 6 A PRIORI.
WORD '1E75 < RESET 7 A PRIORI.
LAI '7D
WORD '1EA5 < RESTAURE LE CARACTERE ALT-MODE.
LA ABORT
WORD '1EB5 < RESTAURE LE PRESC DE EI/GO.
JMP E10 < VERS LE RETOUR A L'APPELANT.
<
<
< E N T R Y U T I L I S E E L O R S D E S
< A L T - M O D E P E N D A N T U N E
< S E Q U E N C E A U D I O - V I S U E L L E :
<
<
HALT: EQU $
<
< RESET D'UNE EVENTUELLE PHASE CRITIQUE EN COURS :
<
WORD '1E55 < RESET 5 A PRIORI.
WORD '1E65 < RESET 6 A PRIORI.
WORD '1E75 < RESET 7 A PRIORI.
<
< MEMORISATION ALT-MODE :
<
LA APILE
LR A,K < RESTAURATION DE K , C'EST
< PLUS PRUDENT !!!
LAI 2
STA CDRET,W < CDRET=2 : "ODE POUR SEQUENCE
< BAORTEE PAR L'ELEVE.
JMP E690 < VERS L'ARRET DU MAGNETO , ET
< LA DECONNEXION DE LA BAIE.
PAGE
<
<
< R E C U P E R A T I O N A D R E S S E
< C O U R A N T E S U R L A B A N D E
< M A G N E T O S C O P E :
<
<
< RESULTAT :
< A=ADRES=ADRESSE COURANTE DE LA BANDE
< MONTEE SUR LE MAGNETOSCOPE NUMAG.
<
<
< DETRUIT A & B.
<
<
RADCER: EQU $ < ENTRY 'ADRESSE NON VALIDE'.
LXI 1 < X=1 SECONDE.
STX SLEEP+2
LAD SLEEP
SVC 0 < ATTENTE DE STABILISATION DE
< L'ADRESSE PENDANT 1 SECONDE.
JMP RADC1 < PUIS ON RECOMMENCE ...
RADC: EQU $
STX F3 < SAVE X DANS F3.
RADC1: EQU $
LA DEMCU
LR A,B < B=DEMCU.
ORI 2 < MISE EN PLACE D'UNE FONCTION
< D'ECRITURE SUR LE NVP=A.
STA DEMTV < DEMTV EST MISE EN MODE DE
< D'ECRITURE.
LA ADC < A=ORDRE 'ADRESSE COURANTE'.
STA BUFTV
LAD DEMTV < A=@DEMTV.
<
< P H A S E C R I T I Q U E D ' A C C E S A U N V P = A
<
WORD '1EE5 < TEST & SET 6.
JC $-1 < ATTENDRE LA LIBERATION DU
< PASSAGE ...
<
< OK , LA VOIE EST LIBRE :
<
SVC 0 < ENVOIU DE LA DEMANDE D'ADRESSE
< COURANTE.
STB DEMTV < DEMTV EST MISE EN MODE LECTURE.
SVC 0 < LECTURE DE LHADRESSE COURANTE.
<
< F I N D E P H A S E C R I T I Q U E :
<
WORD '1E65 < RESET 6.
JC $ < E R R E U R ....
<
< RENVOI DE L'ADRESSE COURANTE :
<
LA BUFTV < RECUPERATION DANS LE BUFFER
< DE LECTURE.
JAL RADCER < ADRESSE NON VALIDE (BIT0=1) ,
< OPERATION A REFAIRE ...
JAG E6310 < OK : ADRESSE VALIDE (>0).
LAD DEMCCI < (A)=0 : ADRESSE BIZARRE ???
SVC 0 < ALORS ON FAIT UN RETOUR CCI ...
JMP RADCER < PUIS VERS RADCER SI !GO ...
E6310: EQU $ < ADRESSE LUE OK ...
IF VERSIO-0,X200,,X200
AD CORECT < CORRECTION DE LA LECTURE ,
< FONCTION DU SENS DE PARCOURS.
X200: VAL 0
STA ADRES < RETOUR PAR (A) ET (ADEES).
<
< T E S T D E L ' A D R E S S E C O U R A N T E :
<
IF VERSIO-0,X200,,X200
LA BUFTV < RESTAURATION DE L'ADRESSE
< REELLEMENT LUS , ET CECI A CAUSE
< DE LA DETECTION DE LA VALIDITE
< DES CODE BCD.
X200: VAL 0
LXI 3 < 3 CHIFFRES A CONVERTIR.
SLRD 16+2 < A=0 , B=@COURANTE/4.
<
< BOUCLE DE CONVERSION :
<
E631: EQU $
DV C16 < CONVERSION BCD-->ASCI.
XR A,B < A=RESTE DE LA DIVISION.
CPI 9 < VALIDATION DE L'ADRESSE.
JG RADC1 < ADRESSE NON RECONNUE , ON
< RECOMMENCE.
IF DEBUG,,X100,
< IF DEBUG,,X100,
ORI '30 < CONVERSION ASCI.
STBY &ABADC < MISE DANS LE BUFFER D'EDITION.
X100: VAL 0
LAI 0 < CLEAR A.
JDX E631 < AU CHIFFRE SUIVANT.
IF DEBUG,,X100,
< IF DEBUG,,X100,
LAD BADC < A=@MESSAGE D'ADRESSE COURANTE.
BSR APRINT < AFFICHAGE DE L'ADRESSE COURANTE.
X100: VAL 0
E630: EQU $
LA ADRES < RESTAURE : A=ADRESSE COURANTE.
JMP E671 < VERS LA RESTAURATION DE X ,
< ET LA SORTIE.
PAGE
<
<
< E N V O I D ' U N O R D R E :
<
<
< ARGUMENT :
< A=ORDRE A ENVOYER AU COUPLEUR
< DES MAGNETOSCOPES.
<
<
ORDRE: EQU $
STA BUFTV < MISE EN PLACE DANS BUFTV.
IF VERSIO-0,X200,,X200
<
< DETERMINATION DES CORRECTIONS DE LECTURE :
<
STZ CORECT < A PRIORI CORRECTION NULLE.
CP RWD < EST-CE UN REWIND QUI EST DEMANDE?
JNE E680 < NON , ON A : CORECT=0.
LAI -'20
STA CORECT < SI OUI , CORECT=-'20.
E680: EQU $
X200: VAL 0
<
< ENVOI DE L'ORDRE :
<
LA DEMCU
ORI 2 < MISE EN PLACE D'UNE FONCTION
< D'ECRITURE SUR LE NVP=A.
STA DEMTV < MISE DE DEMTV EN ECRITURE.
LAD DEMTV < A=@DEMTV.
E670: EQU $ < ENTRY 'TEMPORISATION'.
STX F3 < SAUVEGARDE DE X.
SVC 0 < ENVOI DE L'ORDRE.
E671: EQU $ < ENTRY POUR RADC.
LX F3 < RESTAURATION DE X.
RSR
<
<
< S T O P M A G N E T O S C O P E :
<
<
< FONCTION :
< CETTE ROUTINE PROVOQUE UN ARRET
< DU MAGNETO. SUIVI D'UNE TEMPORISATION
< DE 3 SECONDES.
<
<
RSTOP: EQU $
LA STOP
BSR AORDRE < ENVOI D'UN STOP AU MAGNETO.
LYI 3+VERSIO < Y=DUREE DE TEMPORISATION.
BSR ATEMPO < TEMPORISATION DE (Y) SECONDES.
RSR
PAGE
<
<
< T E M P O R I S A T I O N D U P R O C E S S E U R :
<
<
< ARGUMENT :
< Y=DUREE EN SECONDES DE LA TEMPORISATION.
<
<
<
<
TEMPO: EQU $
STY SLEEP+2 < MISE EN PLACE DE LA DUREE DANS
< LE CODEM DE SLEEP.
LAD SLEEP < A=@DEMANDE DE TEMPORISATION.
JMP E670 < VERS TEMPORISATION (Y) SECONDES.
PAGE
<
<
< C O M M U T A T I O N D E L A B A I E :
<
<
IF VIRE,X100,,X100
< NUMERO DE TELEVISEUR ASSOCIE A UNE VISU :
< ON FORME : NSPOUT-NSPVI1+1.
X100: VAL 0
<
<
< ARGUMENT :
< Y='A5 : ETABLIR UNE CONNEXION ,
< ='81 : ROMPRE UNE CONNEXION.
<
<
COMUT: EQU $
<
< ETABLISSEMENT DE LA COMMUTATION SUR LA BAIE :
<
LAD MREL11
BSR ACALCI < DESASSIGNATION DU NVP=11.
LAD MCU3
BSR ACALCI < !ASSIGN 11=CU3 (BAIE).
IF VIRE,X100,,X100
WORD '1E95 < RENVOI : A=NSPOUT/NSPVI1.
LBI '88 < FONCTION 'ENVOI NUMERO TV'.
SCRD 8 < A='88/NSPOUT.
SWBR B,B < B=NSPVI1 . XX 3300 XXXXXXXXXXXX
SBR B,A < A='88/NUMERO DE TV .XX 1200 XXXXXXXXXXXX
ADRI 1,A < AFIN D'AVOIR UN NUMERO / A 1.
X100: VAL 0
IF VIRE,,X100,
LA NUMOUT < A=SORTIE COURANTE DEMANDEE.
OR COMOUT < SUPERPOSITION DE L'ORDRE D'
< ENVOI D'ADRESSE MEMOIRE.
X100: VAL 0
PTY < PARITE DU NUMERO DE TV.
JNC E601 < PARITE PAIRE.
SBT 1 < PARITE IMPAIRE.
E601: EQU $
LR A,B < SAVE LA COMMANDE DE LA BAIE
< DANS LE REGISTRE B.
LAD DCLEAR
<
< P H A S E C R I T I Q U E S U R L A B A I E :
<
WORD '1EF5 < TEST & SET 7.
JC $-1 < ATTENTE DU PASSAGE ...
SVC 0 < CLEAR DES BASCULES DE LA BAIE ,
< AU CAS OU LA SEQUENCE DE
< COMMANDES PRECEDENTE AURAIT
< ETE ABORTEE (CF. L'ENVOI D'UN
< CARACTERE D'ABORT!!!!).
LAD DEMBAT
SVC 0 < LECTURE AVEC IT SUR LA BAIE.
LR Y,A < ACCES A LA FONCTION DEMANDEE.
CPI '81 < EST-CE UNE DECONNEXION ???
JE DCOMUT < OUI , ALLONS LA PREPARER ...
<
< CAS D'UNE CONNEXION :
<
STB BUFTV < MISE EN PLACE DE LA COMMANDE
< DE LA BAIE.
LAD DEMBAI
SVC 0 < ENVOI DU NUMERO DE TV A LA BAIE.
LAD DEMBAT
SVC 0 < LECTURE AVEC IT DE LA REPONSE.
SWBR Y,A < CADRAGE DE LA FONCTION.
OR NUMAG < CONCATENATION NUMAG.
OR PARITE < CONCATENATION PARITE MAGNETO.
COMUT1: EQU $ < ENTRY DECONNEXION.
STA BUFTV < MISE EN PLACE DE LA COMMANDE
< DE LA BAIE.
LAD DEMBAI
SVC 0 < ENVOI DU NUMERO DE
< MAGNETOSCOPE A LA BAIE.
LAD DEMBAT
SVC 0 < LECTURE AVEC IT DE LA REPONSE.
<
< F I N D E P H A S E C R I T I Q U E :
<
WORD '1E75 < RESET 7.
JC $ < E R R E U R ....
RSR < RETOUR ...
<
< CAS D'UNE DECONNEXION :
<
DCOMUT: EQU $
LR B,A < RECUPERATION DU NUMERO DE
< SORTIE ET DE SA PARITE.
EOR DECOMO < INVERSION DES BITS 4 ET 7.
JMP COMUT1 < VERS LA DECONNEXION.
PAGE
<
<
< A C C E S S G N P O U R L A L R U :
<
<
< ARGUMENT :
< A=NVP D'ACCES AU SGN.
<
<
< REMARQUE :
< EN GENERAL LES CONDITIONS DE RETOUR
< (X) SONT IGNOREES.
<
<
MAGS: EQU $
STBY DEMMAG < MISE DU NVP DEMANDE DANS DEMMAG.
LAD DEMMAG
SVC 0 < ACCES AU SGN.
RSR
PAGE
<
<
< V A L I D A T I O N D E L ' I M P L A N T A T I O N :
<
<
X10: VAL ZERO-$+'3EE
ZEROW: EQU ZERO+X10 < ERREUR D'ASSEMBLAGE SI 'RE'
< FAIT PLUS D'1K MOTS !!!
X12: EQU ZERO+PILE-LTNI-LTNI
X10: VAL X12-$ < CETTE CONSTANTE DOIT ETRE >=0 !!!
ZEROV: EQU ZERO+X10 < ERREUR D'ASSEMBLAGE SI MAUVAISE
< IMPLANTATION.
DZS X10+1 < PAR PROPRETE ...
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.