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