PROG
IDP "SIMULATEUR BOS SUR CMS"
IDP "JOHN F. COLONNA - LIONEL BAIZE"
IDP "03 NOVEMBRE 1981"
ENT DRVLP
ENT DRVCR
ENT DRVMT
ENT DRVDP
ENT DRVTTY
ENT DRVGPI
ENT LOCLP
ENT LOCCR
ENT LOCMT
ENT LOCDP
ENT LOCTTY
ENT LOCGPI
ENT ECHLP
ENT ECHCR
ENT ECHMT
ENT ECHDP
ENT ECHTTY
ENT ECHGPI
PAGE
<
<
< C O N S T A N T E S :
<
<
I: VAL 1
EOT: VAL '04 < CODE DE LA FIN DE MESSAGE.
VAR: VAL " " < CARACTERE VARIABLE DE "!ASSIGN".
EGAL: VAL "="
SAVE: VAL "S" < POUR DESASSIGNER...
LCARTE: VAL 80 < LONGUEUR D'UNE CARTE.
SLO16: VAL 4 < POUR CONVERTIR LES SLO EN ADRESSES DE
< MOTS...
NOCMO: VAL 2 < NOMBRE D'OCTETS PAR MOT.
NBITMO: VAL 16 < NOMBRE DE BITS PAR MOT.
MOCG: VAL 'FF00 < OCTET GAUCHE,
MOCD: VAL '00FF < ET OCTET DROIT.
DNOCMO: VAL 1 < CONVERSION OCTETS --> MOTS.
BITSIG: VAL 0 < BIT DE SIGNE.
ETAOPE: VAL 15 < PERIPHERIQUE OPERATIONNEL.
NTS: VAL 128 < NOMBRE DE TACHES SOFTWARES...
DECAL: VAL 256 < POUR DECALER DE 8...
PAGE
<
<
< F O R M A T D E L A ' C D A G ' :
<
<
DSEC
CDA: EQU $
VCDA: WORD 0 < VERROU D'ACCES A LA 'CDAG' DESTINE
< A BOS :
< 0 : 'CDAG' LIBRE,
< 1 : 'CDAG' OCCUPEE.
IOCB: BYTE 0;0 < IOCB D'ECHANGE (FONCTION,PERIPHERIQUE).
MFIOCB: VAL MOCG < FONCTION BOS,
MPIOCB: VAL MOCD < PERIPHERIQUE BOS.
IOCB1: VAL $-IOCB
IOCB2: VAL IOCB1+I
IOCB3: VAL IOCB2+I
IOCB4: VAL IOCB3+I
IOCB5: VAL IOCB4+I
IOCB6: VAL IOCB5+I
LIOCB: VAL IOCB6 < LONGUEUR DU CORPS DE L'IOCB...
DZS LIOCB
LIOCB: VAL $-IOCB < ??!?!?!
BIOCBS: VAL 8
MFU: VAL '7F
MFON: VAL 'FF00
FU1: VAL '0D < PREMIERE 'FUDK',
FU2: VAL '39 < DERNIERE 'FUDK'...
FU3: VAL '15 < PREMIERE 'FU' LIBRE,
FU4: VAL '23 < DERNIERE 'FU' LIBRE.
NFUTTY: VAL '03 < FU DU 'TTY'...
SCDA: WORD 0 < MOT DE SYNCHRONISATION CMS--> BOS :
< 0 : OPERATION EN COURS,
< 1 : OPERATION ACHEVEE.
LBUF: VAL 4*1024
BUFCDA: DZS LBUF < BUFFER D'ECHANGE BOS<-->CMS...
XVCDA: VAL VCDA-CDA < POUR ATTEINDRE 'VCDA',
XSCDA: VAL SCDA-CDA < 'SCDA',
XIOCB: VAL IOCB-CDA < ET 'IOCB'...
PAGE
<
<
< P E R I P H E R I E B O S :
<
<
FUTTY: VAL '0203
FUCR: VAL '0707
FULP: VAL '0808
FUMT: VAL '0909
FUDK: VAL FU1*DECAL+FU2
FUGPI: VAL FU3+1*DECAL+FU3+1
<
<
< F O N C T I O N S B O S :
<
<
RWDU: VAL '47 < REMBOBINAGE+LOCAL MT,
RWD: VAL '48 < REMBOBINAGE MT,
WEOF: VAL '49 < ECRITURE TAPE-MARK MT,
WGAP: VAL '4A < EFFACEMENT MT,
BSRCD: VAL '4B < SAUT ARRIERE 1 ENREGISTREMENT MT,
FSRCE: VAL '4C < SAUT AVANT 1 ENREGISTREMENT MT,
BSFILE: VAL '4D < SAUT ARRIERE TAPE-MARK MT,
FSFILE: VAL '4E < SAUT AVANT TAPE-MARK MT,
BSRCDN: VAL '4F < SAUT ARRIERE N ENREGISTREMENTS MT,
FSRCDN: VAL '50 < SAUT AVANT N ENREGISTREMENTS MT.
TRL: VAL '41 < PERFORATION AVANCE BANDE TTY,
FDP: VAL '43 < RECUPERATION DES DEFAUTS TTY,
POFF: VAL '47 < HORS-TENSION LECTEUR DE CARTES.
PGPH: VAL '40 < SAUT DE PARAGRAPHE LP,
PAGE: VAL '42 < SAUT DE PAGE LP.
ROU: VAL '50 < READ ONLY UNIT DK,
RWU: VAL '51 < READ AND WRITE UNIT DK,
MVHD: VAL '52 < MOUVEMENT DES TESTES DK.
FOUT: VAL '20 < SORTIE,
FOUTTY: VAL '22 < SORTIE SUR 'TTY',
FIN: VAL '00 < ENTREE.
FOUTDK: VAL '30 < SORTIE SUR 'DKM',
FINDK: VAL '10 < ENTREE SUR 'DKM'.
BCODAR: VAL 1 < BIT D'ENTREE SUR CODE D'ARRET.
BFONSP: VAL 0 < BIT 'FONCTION SPECIALE' (SI =0).
PAGE
<
<
< T U P E T E N D U E :
<
<
DSEC TUP
OPEBCC: WORD 0
OPBCC: WORD 0
PERIAD: WORD 0
ASPPTY: WORD 0
ABCC: WORD 0
MANOV: WORD 0
BCCCAL: WORD 0
RH: EQU BCCCAL
RL: WORD 0
CHAR: WORD 0
ERREUR: WORD 0
SEMFSP: WORD 0
FSTCAR: EQU SEMFSP
CTRCAR: WORD 0
RELAI1: WORD 0
RELAI: WORD 0
CODSYN: WORD 0
ETAT: WORD 0
MASQUE: WORD 0
ATABEV: WORD 0
INDICA: WORD 0
IDLENB: WORD 0
CHNTUP: WORD 0
<
<
< T U P S T A N D A R D :
<
<
STATUS: WORD 0 < ETAT DU PERIPHERIQUE CODE SUR UN CERTAIN
< NOMBRE DE BITS :
SATTCH: VAL 0 < L'UNITE EST "SUPER-ATTACHEE",
ATTCH: VAL 1 < L'UNITE EST "ATTACHEE",
SPEC: VAL 2 < BIT LIBRE POUR UN USAGE SPECIAL,
SPOOL: VAL 3 < L'ECHANGE COURANT UTILISE LE POOL-BUFFER,
BITENC: VAL 4 < UN ECHANGE EST EN COURS,
BITDEF: VAL 5 < UN DEFAUT A EU LIEU AU COURS DE L'ECHANGE
< COURANT, OBLIGEANT A L'ABANDONNER,
CNL: VAL 6 < LE PERIPHERIQUE FONCTIONNE EN MODE CANAL,
SINDIC: VAL 7 < INDICATEUR CARACTERISANT LA 'FU' EN
< ECHANGE SUR LA 'PU'.
DIVERS: VAL '00FF < BITS SPECIFIQUES...
MODEFO: WORD 0 < MOT D'ETAT DE L'UNITE PHYSIQUE.
< CE MOT CONTIENT ENTRE AUTRES BITS :
DEFO: VAL 0 < UNITE PHYSIQUE EN DEFAUT,
COUP4: VAL 1 < INDICATION 4 BREAKS,
COUP1: VAL 2 < INDICATION 1 BREAK,
VNOOP: VAL 5 < COUPLEUR NON OPERATIONNEL,
VAL1: VAL 13 < SIGNAL 'VAL1' (DOIT ETRE A 0),
BUSY1: VAL 15 < SIGNAL .NOT.'BUSY1' (DOIT ETRE A 1).
FUVOIE: WORD 0 < OCTET GAUCHE=NUMERO DE 'FU' EN COURS
< D'ECHANGE,
< OCTET DROIT =INUTILISE...
INDRIV: WORD 0 < ADRESSE DU DRIVER (CHARGE LORS DE LA
< CONFIGURATION DU SYSTEME).
ECHDRV: WORD 0 < ADRESSE DU MODULE DE L'ENTRETIEN DE
< L'ECHANGE (INUTILISE EN CANAL...).
BASEL: WORD 0 < VALEUR DE LA BASE 'L' DU DRIVER : CETTE
< VALEUR EST FIXEE A LA CONFIGURATION DU
< SYSTEME.
VALSLO: WORD 0 < VALEUR DU REGISTRE 'SLO' DU DEMANDEUR
< DE L'ECHANGE,
VALSLE: WORD 0 < VALEUR DU REGISTRE 'SLE' DU DEMANDEUR
< DE L'ECHANGE.
ADIOCB: WORD 0 < ADRESSE DE L'IOCB DE L'ECHANGE EN COURS,
< IL EST A NOTER QUE CETTE ADRESSE, EST
< SOIT ABSOLUE, SOIT TRANSLATABLE, ET
< QU'IL N'EST PAS TOUJOURS TRES FACILE
< DE FAIRE LA DISTINCTION !!!
FONC: WORD 0 < MOT DE FONCTION, CORRESPONDANT EN FAIT
< AU PREMIER MOT DU 'CCB' ; SON FORMAT
< EST LE SUIVANT :
CR: VAL 4 < BIT INDIQUANT (A 1) QU'UN COMPTE-RENDU
< EST DEMANDE,
B: VAL 7 < BIT INDIQUANT (A 0) QU'IL S'AGIT D'UN
< CANAL MOT,
NIO: VAL '0030 < NUMERO DU PROCESSEUR D'ENTREES-SORTIES
< (POSITIONNE A LA CONFIGURATION DU
< SYSTEME),
MAE: VAL '000F < EXTENSION D'ADRESSE AU DELA DE 64K...
NMAE: VAL 'FFF0 < NMAE=MAE.EOR.'FFFF
DADR: VAL 4 < AMPLITUDE DES DECALAGES DE CALCUL DES
< EXTENSIONS D'ADRESSE, ET DE (SLO,SLE).
FADR: VAL 16 < FADR=2**DADR
CONTEX: WORD 0 < DEUXIEME MOT DU 'CCB' ; SON FORMAT EST
< LE SUIVANT :
DC: VAL 'C000 < TYPE DU CANAL :
< 00=LDC,
< 11=MDC,
< 10=HDC.
ITN: VAL '7F00 < NIVEAU D'INTERRUPTION NORMALE (VALEUR
< DEFINIE A LA CONFIGURATION DU SYSTEME),
CONNEX: VAL '00F0 < 0000=COUPLEUR STANDARD,
CCN: VAL '000F < NUMERO DE CONTEXTE HARDWARE (EN MODE
< CANAL 'HDC').
ADMEM: WORD 0 < TROISIEME MOT DU 'CCB' ; IL DONNE LES
< POIDS FAIBLES DE L'ADRESSE MEMOIRE
< DU BUFFER CONCERNE.
CONTOC: WORD 0 < QUATRIEME MOT DU 'CCB' ; IL DONNE LE
< NOMBRE DE MOTS SUR LEQUEL PORTE L'ECHAN-
< GE (MALGRE SON NOM...).
SENS: VAL 0 < LE BIT 'SENS' DE 'CONTOC' INDIQUE LE
< SENS DE L'ECHANGE (ICI, TOUJOURS UNE
< SORTIE...).
ADPERI: WORD 0 < CINQUIEME MOT DU 'CCB' ; IL DONNE
< L'ADRESSE PHYSIQUE DU COUPLEUR (VALEUR
< FIXEE A LA CONFIGURATION DU SYSTEME).
FPERI: VAL 'FFF8 < EMPLACEMENT DE LA FONCTION DANS 'ADPERI',
< PRISE DANS LA LISTE SUIVANTE :
FWRITE: VAL '0001 < ECRITURE,
FFONC: VAL '0003 < SORTIE FONCTION,
FCMDE: VAL '0007 < SORTIE COMMANDE.
F0: VAL 0 < FONCTION FIN DE BLOC ET INHIBITION IT OUT
F3: VAL 3 < COMMANDE D'ACTIVATION DES INTERRUPTIONS.
TABCOD: WORD 0 < ADRESSE DE LA TABLE DES CODES D'ARRET,
< INUTILISEE ICI...
TYPECH: WORD 0 < CARACTERISATION DE L'ECHANGE ; CE MOT
< EST DECOUPE EN BITS :
PLUS64: VAL 0 < ECHANGE AVEC INTERFACE SYSTEME,
BCDA: VAL 1 < ECHANGE AVEC UN BUFFER EN 'CDA',
SPOOL1: VAL 2 < ECHANGE AVEC UTILISATION DU POOL-BUFFER,
CDA64: VAL 3 < ECHANGE AVEC INTERFACE SYSTEME OU
< BUFFER EN CDA (?!??!?!?),
TCARRY: VAL 4 < APPELANT EN MODE MAITRE,
VERCDA: VAL 5 < VERIFICATION D'UNE ADRESSE EN 'CDA',
TSVCS: VAL 6 < VALEUR DU BIT 'SVCS' DU REGISTRE 'ST'
< A L'INITIALISATION DE L'ECHANGE,
INDIC: VAL 7 < TYPE D'ADRESSAGE (0=ADRESSAGE D'UN IOCB,
< (1=ADRESSAGE D'UN BUFFER),
FSP: VAL 8 < L'ECHANGE EN COURS EST UNE FONCTION
< SPECIALE (SI 1),
ERFUSU: VAL 15 < UNITE NON GEREE PAR'IOCS'...
SUPATT: WORD 0 < SEMAPHORE PRIVE DE "SUPER-ATTACHEMENT",
SEMATT: WORD 0 < SEMAPHORE PRIVE D'"ATTACHEMENT",
SEMGEN: WORD 0 < SEMAPHORE D'EXCLUSION D'ACCES A CETTE
< RESSOURCE,
FILSEM: DZS NTS/NBITMO < ET SA FILE D'ATTENTE...
LTUP: VAL $-STATUS < LONGUEUR DE LA 'TUP' DU 'GPI32'...
PAGE
<
<
< C O M M O N D ' I O C S :
<
<
DSEC COMIOC
COMMUN: EQU $
EXT TBS
WORD 0
ATBS: WORD TBS,X < POUR LA CORRESPONDANCE SU --> FU.
WORD 0
EXT TBF
ATBF: WORD TBF-1,X < RELAI VERS LA LISTE DES 'FU'...
EXT TBCOM
ATBCOM: WORD TBCOM-1,X < POUR LES TRANSLATIONS D'ADRESSES DK.
DZS 3+1+10
EXT TBADK
ATBADK: WORD TBADK,X < IDEM...
WORD 0
NFUDK: WORD 0 < NOMBRE DE FU DK...
DZS 4
ASPST: WORD SPST
AVERIF: WORD VERIFA
DZS 12
ALAMEM: WORD LAMEM
ASTAME: WORD STAMEM
DZS 16
AOCFON: WORD OCFON
ALIBCN: WORD LIBCN
WORD 0
MASKES: WORD 0
DZS 3
ASPLD: WORD SPLD
AINTUP: WORD INITUP
DZS 3
ASPWT: WORD SPWAIT
ASPLAR: WORD SPLAR
ASPSTA: WORD SPSTAR
DZS 19
ASPEC: WORD SPECAR
ASPEE: WORD SPEE
ASPSC: WORD SPSC
ASPSF: WORD SPSF
DZS 3
ASPLIN: WORD SPLIN
ASPSTI: WORD SPSTIN
PAGE
<
<
< L O C A L D U D R I V E R R E E N T R A N T :
<
<
LOCAL
LOC: EQU $
LOCMT: EQU $
LOCCR: EQU $
LOCLP: EQU $
LOCDP: EQU $
LOCTTY: EQU $
LOCGPI: EQU $
LXCDA: VAL BUFCDA-CDA < LONGUEUR DE L'EN-TETE DE 'CDA'.
XCDA: DZS LXCDA < EN-TETE DE LA 'CDA'.
AXCDA: WORD XCDA < ADRESSE DE L'EN-TETE DE 'CDA' DANS LE
< LOCAL.
AAIGUI: WORD AIGUIL,X < RELAI D'ACCES VERS LES MODULES DU
< DRIVER REENTRANT.
AIGUIL: WORD APUSI;INIECH;FONCSP;DFOSYN;ACLEAR;AKILL
TBADK1: WORD 0 < POUR LES EXTENSIONS D'ADRESSE SUR 'DKU'.
ADMEMA: WORD 0 < ADRESSE ABSOLUE DU BUFFER...
TRANS: WORD 0 < TRANSLATION DE LA 'CDA'...
<
< ZONE DE PATCH :
<
DZS 16
PAGE
<
<
< D R I V E R R E E N T R A N T D E S I M U L A T I O N
< D E B O S S U R C M S L E F A B U L E U X :
<
<
< NOTA :
< BOS=BANCALE OPERATING SYSTEM,
< =BOSSU OPERATING SYSTEM,
< =BOITEUX OPERATING SYSTEM,
< CMS=COLONNA MONITEUR SUPER,
< =COLONNA MONITOR SUPERBE,
< =COLONNA MONITOR SYMPHONIQUE...
<
<
< FONCTION :
< CE DRIVER REENTRANT SIMULE LES
< PERIPHERIQUES 'TTY', 'CR', 'LP', 'MT'
< ET 'DP'. A CETTE FIN, TOUTES LES
< DEMANDES D'ENTREES-SORTIES SUR 'BOS'
< SONT TRANSMISES VIA LA 'CDA' A
< 'CMS' ; LA 'CDA' POSSEDE BIEN
< ENTENDU UNE EN-TETE ASSURANT D'UNE
< PAR LA SYNCHRONISATION ET LE
< TRANSFERT DES ARGUMENTS ET D'AUTRE
< PART UN BUFFER.
< POUR SIMPLIFIER LES CHOSES, CE
< DRIVER LORSQU'IL PREND LA MAIN
< POUR L'UN QUELCONQUE DES PERIPHERIQUES
< MASQUE LES INTERRUPTIONS, ET ATTEND
< UN SIGNAL DE FIN D'OPERATION DE 'CMS'
< POUR RENDRE LA MAIN A 'IOCS'...
<
<
PROG
USE L,LOC
USE C,COMMUN+128
USE W,STATUS
DRVLP: EQU $
DRVCR: EQU $
DRVMT: EQU $
DRVDP: EQU $
DRVTTY: EQU $
DRVGPI: EQU $
BR &AAIGUI < VERS LE MODULE SPECIFIQUE (X)...
<
<
< P O U R L E M O D E P R O G R A M M E :
<
<
ECHLP: EQU $
ECHCR: EQU $
ECHMT: EQU $
ECHDP: EQU $
ECHTTY: EQU $
ECHGPI: EQU $
JMP $ < PARCQU'ON NE DOIT JAMAIS Y PASSER !!!
RSR
<
<
< P U S I ( X = 0 ) :
<
<
APUSI: EQU $
LAI 0
SBT ETAOPE
RSR < TOUT EST OK...
<
<
< K I L L ( X = 5 ) :
<
<
AKILL: EQU $
LXI 2
RSR
<
<
< I T E X C E P T I O N ( X = 3 ) :
<
<
DFOSYN: EQU $
JMP $ < ON NE PEUT JAMAIS Y PASSER !!!
RSR
<
<
< P O S I T I O N N E M E N T ( X = 2 ) :
<
<
FONCSP: EQU $
JMP INIECH < ET OUI, EXECUTION DES POSITIONNEMNTS.#.
RSR
<
<
< C L E A R ( X = 4 ) :
<
<
ACLEAR: EQU $
BSR AINTUP
RSR
PAGE
<
<
< I N I T I A L I S A T I O N E C H A N G E
< E T E C H A N G E ( X = 1 ) :
<
<
< ARGUMENT :
< W=ADRESSE DE LA 'TUP' STANDARD.
<
<
DZS 64 < ZONE DE PATCH...
INIECH: EQU $
<
< TRUANDAGE POUR 'TTYS' :
<
LA STATUS
SBT CNL
STA STATUS < TOUS LE PERIPHERIQUES UTILISANT LE SIMU-
< LATEUR SONT CONSIDERES COMME FONCTIONNANT
< EN MODE CANAL...
<
< MISE DE L'ADRESSE ABSOLUE DE 'IOCB' DANS 'Y' :
<
LA TYPECH < TESTONS VOIR S'IL FAUT TRANSLATER
< L'ADRESSE DE 'IOCB' (C'EST VRAIMENT LE
< B..., DONC 'BOS' VEUT DIRE AUSSI
< BORDELIQUE OPERATING SYSTEM).
TBT SPOOL1
JC ECH5 < UTILISATION DU POOL BUFFER ==> PAS
< DE TRANSLATION D'ADRESSE...
TBT TCARRY
JC ECH5 < NON...
TBT TSVCS
JNC ECH5 < NON...
ECH9: EQU $ < TRANSLATION DE L'ADRESSE 'IOCB' :
RDOE
SLLS SLO16
ADR A,Y < Y=ADRESSE ABSOLUE DE 'IOCB'...
ECH5: EQU $
<
< MISE EN PLACE A PRIORI DES RELAIS DE 'CDA' :
<
PSR W
LRM A,B,W
WORD '1000 < DEBUT DE LA 'CDA' EN '64K',
WORD '17FF < ET FIN EN '96K'...
WORD '18 < ADRESSE DEBANALISEE DE L'ADRESSE 'CDA'.
STA 0,W < DEFINITION
STB 1,W < DE LA 'CDA'.
PLR W
<
< IDENTIFICATION DU SYSTEME :
<
RDSI
ANDI '1F < A=NUMERO DU PROCESSEUR...
SLLS 14 < PAS TRES JOLI...
< EN FAIT :
< 14 C'EST 32/2*1024=0...
STA TRANS < POUR TRANSLATER LA 'CDAG'...
<
< VALIDATION PREALABLE DE LA 'CDA' :
<
LAI CDA-CDA
AD TRANS < TRANSLATION DE LA 'CDA'...
LB AXCDA
LXI LXCDA
RCDA
< ACCES A L'EN-TETE COURANTE DE 'CDA' :
CPZ XCDA+XVCDA < ALORS SYNCHRO VALIDE ???
JG $ < NON...
STZ XCDA+XSCDA < OUI, ON INITIALISE
STZ XCDA+XVCDA < LES
IC XCDA+XVCDA < VERROUS DE SYNCHRONISATION...
<
< RECUPERATION DE 'IOCB' :
<
LAD XCDA+XIOCB
LR A,B < B=ADRESSE 'IOCB' DANS LE LOCAL,
LR Y,A < A=ADRESSE ABSOLUE DE 'IOCB',
LXI LIOCB < X=LONGUEUR 'IOCB',
MOVE < RECUPERATION DE 'IOCB' DANS LE LOCAL...
LA XCDA+XIOCB < ACCES AU MOT DE FONCTION :
TBT BIOCBS < DISCRIMINATION SU/FU...
ANDI MFU < A=SU/FU,
LR A,X < X=SU/FU,
JNC ECH4 < X=UN NUMERO DE 'FU'...
LBY &ATBS < CONVERSION SU-->FU,
LR A,X < X=NUMERO DE 'FU' ASSOCIE A LA 'SU'.
LA XCDA+XIOCB
ANDI MFON < A=FONCTION DEMANDEE,
ORR X,A < CONCATENATION DU NUMERO DE 'FU',
STA XCDA+XIOCB < ET MISE A JOUR 'IOCB'...
ECH4: EQU $
<
< TRANSLATION DES ADRESSES DISQUES POUR LES 'FUDK' :
<
LR X,A < A=NUMERO DE 'FU' :
CPI FU3 < EST-CE UNE 'FU' LIBRE ???
JL ECH20 < NON...
CPI FU4 < EST-CE UNE 'FU' LIBRE ???
JLE ECH6 < OUI, DONC PAS UNE 'FUDK'...
ECH20: EQU $
CPI FU1 < EST-CE UNE 'FUDK' ???
JL ECH6 < NON...
CPI FU2 < EST-CE UNE 'FUDK' ???
JG ECH6 < NON...
LA &ATBCOM
ANDI MOCD
LR A,X < X=NUMERO DU DISQUE SUPPORTANT 'FUDK',
LA ATBADK
AD NFUDK
STA TBADK1 < GENERATION SYSTEMATIQUE DE CE REALI,
< MERCI LA 'SEMS'...
LA XCDA+XIOCB+IOCB5 < A=POIDS FAIBLE DE L'ADRESSE,
AD &ATBADK < TRANSLATION,
STA XCDA+XIOCB+IOCB5
LA XCDA+XIOCB+IOCB6 < A=POIDS FORT,
ADCR A < PROPAGATION DE LA RETENUE,
AD &TBADK1 < TRANSLATION,
STA XCDA+XIOCB+IOCB6
JANE $ < ON REFUSE LES GRANDES ADRESSES !!!
ECH6: EQU $
<
< TRANSLATION DE L'ADRESSE DU BUFFER :
<
LA FONC
ANDI MAE < (A)=EXTENSION D'ADRESSE :
JANE $ < MERDE ALORS, ON EST AU-DELA DE 64K, IL
< FAUT DONC MODIFIER LA LECTURE/ECRITURE
< DU BUFFER ARGUMENT DANS LA 'CDA', EN
< PASSANT PAR LA MEMOIRE BASSE...
LA ADMEM
STA ADMEMA < A PRIORI...
LA STATUS
TBT CNL < MODE CANAL OU PROGRAMME ???
JC ECH7 < MODE CANAL, ON NE TRANSLATE PAS...
RDOE
SLLS SLO16 < A=SLO EN MOTS...
AD ADMEMA < MODE PROGRAMME,
STA ADMEMA < ON TRANSLATE...
ECH7: EQU $
<
< DEPLACEMENT DU BUFFER SI ECRITURE :
<
LA CONTOC
JAGE ECH1 < LECTURE...
RBT BITSIG
ADRI NOCMO-1,A
SLRS DNOCMO
LR A,X < X=NOMBRE DE MOTS CONCERNES...
LAI BUFCDA-CDA < A=ADRESSE DU BUFFER DANS LA 'CDA',
AD TRANS < TRANSLATION DE LA 'CDA'...
LB ADMEMA < B=ADRESSE ABSOLUE DU BUFFER,
WCDA
< SIMULATION DE L'ECRITURE...
ECH1: EQU $
<
< ENVOI DE LA DEMANDE DE SIMULATION A 'CMS' :
<
LAI CDA-CDA
AD TRANS < TRANSLATION DE LA 'CDA'...
LB AXCDA
LXI LXCDA
WCDA
< ON ENVOIE A 'CMS' LA DEMANDE D'E/S
< A SIMULER...
<
< ATTENTE DE FIN DE SIMULATION :
<
ECH2: EQU $
LXI LXCDA
RCDA
CPZ XCDA+XVCDA < ALORS EST-CE FINI ???
JE $ < ???!??!?!
JG ECH2 < NON, ON ATTEND...
LA XCDA+XSCDA < L'INFORMATION EST-ELLE INTEGRE ???
JAE ECH2 < NON, ON ATTEND...
JAG ECH10 < CAS NORMAL...
<
< CAS DES BREAKS :
<
PSR Y,W
LYI COUP4 < 4 BREAKS A PRIORI...
CPI -4
JE ECH8 < OUI...
LYI COUP1 < NON, 1 COUP...
CPI -1
JNE $ < ?!?!?!
ECH8: EQU $
LXI NFUTTY
LA &ATBF
LR A,W < W=ADRESSE DE LA FU TTY...
LA MODEFO
LR Y,X
SBT 0,X < MISE DE 1/4 COUPS...
STA MODEFO
LR Y,A
CPI COUP4
JNE ECH11
ACTD 4 < CAS DES 4 COUPS (ET NON PAS DES 3 COUPS).
ECH11: EQU $
PLR Y,W
ECH10: EQU $
<
< DEPLACEMENT DU BUFFER SI LECTURE :
<
LA CONTOC
JALE ECH3 < C'ETAIT UNE ECRITURE...
ADRI NOCMO-1,A
SLRS DNOCMO
LR A,X < X=NOMBRE DE MOTS A DEPLACER,
LAI BUFCDA-CDA < A=ADRESSE RELATIVE A 'CDA' DU BUFFER,
AD TRANS < TRANSLATION DE LA 'CDA'...
LB ADMEMA < B=ADRESSE ABSOLUE DU BUFFER...
RCDA
< SIMULATION DE LA LECTURE...
<
< COMPTE-RENDU DE L'ECHANGE :
<
ECH3: EQU $
XR Y,W < W=ADRESSE ABSOLUE DE 'IOCB'...
LX IOCB2,W
XR Y,W
STZ CONTOC
XR Y,W
STZ IOCB4,W
IC IOCB4,W < IOCB4=SEMAPHORE DE FIN D'E/S...
XR Y,W
<
< FIN DE LA SIMULATION :
<
LXI 6 < 'IOCS' N'A RIEN A FAIRE...
RSR
END
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.