< << DELETE 'SISP' DF'SISP CMS5 BOOT VISU' DF'SISP CMS5 DMKDEF' DF'SISP CMS5 DOL1' DF'SISP CMS5 DOL2' DF'SISP CMS5 DSEC' DF'SISP CMS5 FTHDEB' DF'SISP CMS5 GENPIL1' DF'SISP CMS5 GENPIL2' DF'SISP CMS5 IC' DF'SISP CMS5 ICPSTH' DF'SISP CMS5 IREST' DF'SISP CMS5 JREST' DF'SISP CMS5 MKDEF' DF'SISP CMS5 PSTH' DF'SISP CMS5 PSTH-IC' DF'SISP CMS5 RST' DF'SISP CMS5 SST' DF'SISP CMS5 THDEB' DF'SIS CMS5' DF'SISP CMS5 NBIT1' DF'SISP CMS5 KREG' DF'SISP CMS5 REC' DF'SISP CMS5 TAB1' DF'SISP CMS5 TAB2' DF'SISP CMS5 ASCI' DF'SISP CMS5 EXTEND' DF'SISP CMS5 BYTE' DF'SISP CMS5 GENPIL3' DF'SISP CMS5 VALITN' DF'SISP CMS5 SAVE' DF'SISP CMS5 RESTAURE' DF'SISP CMS5 DELETE' DF'SISP CMS5 PSRSLO' DF'SISP CMS5 PLRSLO' DF'SISP CMS5 PAGE0' DF'SISP CMS5 W ZERO' DF'SISP CMS5 W TRACE' DF'SISP CMS5 BASE C' DF'SISP CMS5 GEN DEF' DF'SISP CMS5 GEN CTE' DF'SISP CMS5 CHECK' < << DELETE 'SISP' < ******* F I N D E D E L E T E ... ED'SISP CMS5 BOOT VISU' IN0 < < < B O O T V I S U : < < < FONCTION : < CE MODULE EST A IMPLANTER A < UNE CERTAINE ADRESSE DANS LA MEMOIRE < DU SOLAR 16.65; LANCE A L'ADRESSE 'YOOT', < IL LIT DES OCTETS A PARTIR DESQUELS < IL GENERE DES MOTS DE 16 BITS. DES QU'IL < RENCONTRE 'A-ROND', IL S'ARRETE... < A NOTER, QUE CE BOOT-STRAP S'ECRASE < LUI-MEME, CE QU'IL PEUT FAIRE, PUISQU'IL < NE TRAVAILLE QUE SUR DES REGISTRES... < < < < < I M P L A N T A T I O N : < < $EQU $ < PEU ORIGINAL... < < < L O C A L : < < YSV01:: VAL 'C8 < ADRESSE DU COUPLEUR. LOCAL YOC: EQU $ WORD K < AFIN DE NE PAS TRANSLATER CE QUI SUIT. YNFIN: WORD YSV01?FPHIN < ENTREE INFORMATION SUR ASV01. YTATIN: WORD YSV01?FPHETA < ENTREE DE L'ETAT DE ASV01. YOCOM1: WORD YSV01?FPHCMD < SORTIE COMMANDE 1 SUR ASV01. YOM1: WORD '0001 < VALIDATION INTERRUPTIONS !?!?!?! YOCOM2: WORD YSV01?FPHCME < SORTIE COMMANDE 2 SUR ASV01. YOM2: WORD '0140 < 7 BITS, PAS DE PARITE, 1 STOP. < < < M O D U L E D E C H A R G E M E N T < S U R A S V 0 1 : < < PROG YOOT: EQU $ LRM L < INITIALISATION DE L. WORD YOC+DEPBAS LA YOM2 SIO YOCOM2 < SORTIE COMMANDE... LA YOM1 SIO YOCOM1 < COMMANDE SUIVANTE... SIO YNFIN < ENTREE POUR CLEAR. CALL #SISP CMS5 W ZERO# < DEPART SUR LE PREMIER MOT. < < BOUCLE DE RECUPERATION DES MOTS : < YOOP1: EQU $ LYI NBITMO/NBITCX < 4 CHIFFRES PAR MOT. < < BOUCLE DE RECUPERATION DES 4 CHIFFRES D'UN MOTS : < YOOP2: EQU $ SIO YTATIN < ENTREE DE L'ETAT, TBT ETANXT < INFO VALIDE ??? JNC YOOP2 < NON, ON ATTEND... SIO YNFIN < OUI, ENTREE 1 CARACTERE. CPI KAROND < FIN DE LISTE ??? JE $ < OUI, S T O P... ADRI -HZERO,A < DECODAGE BINAIRE. JAL $ < E R R E U R !!! CPI BASE10-Z < CHIFFRE DECIMAL ??? JLE YOOP3 < OUI. ADRI -HA+HNEUF+Z,A < DECODAGE SUITE. CPI BASE16-Z < VALIDATION... JG $ < E R R E U R !!! YOOP3: EQU $ SCRS NBITCX SCLD NBITCX < CONCTENATION DANS A. ADRI -I,Y < DECOMPTAGE DES 4 CHIFFRES. CPZR Y < FIN ??? JG YOOP2 < NON, ENCORE AU MOINS 1... STB O,W < OUI, RANGEMENT 1 MOT, ADRI P,W < PROGRESSION ADRESSE MOT... JMP YOOP1 < ET C'EST REPARTI... :F :F < <<'SISP CMS5 BOOT VISU' ED'SISP CMS5 DMKDEF' IN0 NLS < < < S I S P C M S 5 D M K D E F : < < LST DC KTDEFS < AUTORISATION DES TESTS DE 'TDEFS'. :F :F < <<'SISP CMS5 DKMDEF' ED'SISP CMS5 DOL1' IN0 NLS < < < S I S P C M S 5 D O L 1 : < < < FONCTION : < CETTE PROCEDURE SAUVEGARDE < LE "$" COURANT DANS 'DOLAR2', < ET REPOSITIONNE LE "$" EN < MEMOIRE BASSE ('DOLAR1'). < < DOLAR2: VAL $-ZERO IF MEMORY*UMEM-DOLAR2,XEIF%1,XEIF%1, IF E R R E U R D ' I M P L A N T A T I O N XEIF%1: VAL ENDIF XWORK: VAL DOLAR1-DOLAR2 LST $EQU $+XWORK <<<<< MEMOIRE BASSE :F :F < <<'SISP CMS5 DOL1' ED'SISP CMS5 DOL2' IN0 NLS < < < S I S P C M S 5 D O L 2 : < < < FONCTION : < CETTE PROCEDURE SAUVEGARDE < LE "$" COURANT DANS 'DOLAR1', < ET REPOSITIONNE LE "$" EN < MEMOIRE HAUTE ('DOLAR2'). < < DOLAR1: VAL $-ZERO IF MEMORY*UMEM-DOLAR1,,,XEIF%1 IF E R R E U R D ' I M P L A N T A T I O N XEIF%1: VAL ENDIF XWORK: VAL DOLAR2-DOLAR1 LST $EQU $+XWORK <<<<< MEMOIRE HAUTE :F :F < <<'SISP CMS5 DOL2' ED'SISP CMS5 DSEC' IN0 NLS < < < S I S P C M S 5 D S E C : < < LST < < < F O R M A T ' P S T S ' : < < DSEC PSTS: EQU $ SA: WORD K SB: WORD K SX: WORD K SY: WORD K SC: WORD NIL SL: WORD NIL SW: WORD NIL SK: WORD NIL SP: WORD NIL SS: WORD K SSLO: WORD NIL SSLE: WORD NIL XLPSTS:: VAL $-PSTS < LONGUEUR D'UNE 'PSTS'. < < < F O R M A T ' P S T H ' F O R M A T ' I C ' : < < DSEC PSTH: EQU $ HC: WORD NIL HK: WORD NIL HP: WORD NIL HS: WORD K LPSTH:: VAL $-PSTH < LONGUEUR D'UNE 'PSTH'. XICSA0:: VAL K < VALEUR INITIALE DE 'ICSAV'... ICSAV: WORD XICSA0 < INDICATEUR DE SAUVEGARDE. LONGIC:: VAL $-PSTH < LONGUEUR D'UN 'IC'. :F :F < <<'SISP CMS5 DSEC' ED'SISP CMS5 FTHDEB' IN0 NLS < < < S I S P C M S 5 F T H D E B : < < LST PAGE < < < F A U X P R O L O G U E D E T A C H E H A R D W A R E : < < < NOTA : < ON L'APPELLE "FAUX PROLOGUE" < CAR EN EFFET, ON NE GENERE PAS < LE SYMBOLE 'THXX', AINSI QUE LE < CODE DE MASQUAGE GENERAL DES < INTERRUPTIONS. IL EST UTILISE < PAR LE DEFAUT SECTEUR... < < < PARAMETRE D'ASSEMBLAGE : < NEANT... < < PSR A,B,X,Y < SAUVEGARDE A,B,X,Y... PSR L,W < ...L,W DE LA TACHE INTERROMPUE. USE C,PSTH < TEMPORAIREMENT! RAPPELONS QUE < LE 'C' DE NOTRE 'PSTH' BASE < NOTRE 'IC'. < ET RAPPELONS QUE 'PSTH' ET 'IC' < UTILISENT LA MEME 'DSEC'. < ET 'PSTH' UTILISENT LA MEME DSEC USE L,COM+DEPCS < POUR RAISONS D'ASSEMBLAGE... IC ICSAV LR C,L < L BASE LE 'IC' DE NOTRE TACHE. CALL #SISP CMS5 BASE C# USE C,COM+DEPCS CALL #SISP CMS5 PSRSLO# < SAVE (SLO,SLE) DE LA TACHE INTERROMPUE. PSR L < SAUVEGARDE DE 'L', BASE DE NOTRE < 'IC'... USE L,PSTH < PEUT ETRE UTILE... :F :F < <<'SISP CMS5 FTHDEB' ED'SISP CMS5 GENPIL1' IN0 NLS < < < S I S P C M S 5 G E N P I L 1 : < < < FONCTION : < CETTE PROCEDURE GENERE UNE < PILE EN MEMOIRE HAUTE, PUIS < REPOSITIONNE LE "$" EN MEMOIRE < BASSE. < < < PARAMETRES : < XWPILE=LONGUEUR-MOTS DE LA PILE. < < LST CALL #SISP CMS5 DOL2# @@ CALL #SISP CMS5 GENPIL2# CALL #SISP CMS5 DOL1# :F :F < <<'SISP CMS5 GENPIL1' ED'SISP CMS5 GENPIL2' IN0 NLS < < < S I S P C M S 5 G E N P I L 2 : < < < FONCTION : < CETTE PROCEDURE GENERE LA < PARTIE "UTILE" D'UNE PILE < EN Y IMPLEMENTANT LE "$", < CE QUI PERMET DE CONNAITRE < A POSTERIORI CE QUI AURA < ETE UTILISE... < < < PARAMETRE : < XWPILE=LONGUEUR-MOTS DEMANDEE POUR LA PILE. < < XWOR%7: VAL D < CONSTANTE LOCALE. LST DO XWPILE-XWOR%7 WORD $ < AFIN DE CONNAITRE LE STRICT MINIMUM... NLS XXPILI: @ XWOR%1: VAL KOLTED=FMASK+KOL0=FVAL+KOLTEF=FMASK+KOL1=FVAL XWOR%2: VAL KOLC=FMASK+KDP=FVAL?FCTES XWOR%5: VAL MSYMBI=FMASK+KOL0=FVAL+MSYMBL=FMASK+XWOR%1=XWOR%2=FVAL XWOR%3: VAL XWOR%5=FCSYMT < TEST DE L'EXISTENCE DE 'XXPILI' ??? IF XWOR%3,XEIF%,,XEIF% XWOR%6: VAL $-ZERO < SAUVEGARDE DU '$'... <******************************************************************************* WORD ZERO+D < LA VALEUR GENEREE SERA 'NIL' SI L'ON XWOR%4: VAL '0000000@@@@ < SE SITUE DANS UNE 'DSEC' : RECUPERATION.. <******************************************************************************* XWOR%6: VAL $-ZERO-XWOR%6 $EQU $-XWOR%6 < ANNULATION DU CODE GENERE... XWOR%6: VAL NIL-ZERO < ABSOLUTISATION DE 'NIL'. IF XWOR%4-XWOR%6,,XEIF%9, LST IF ATTENTION : ON N'EST PAS DANS UNE 'DSEC', ET IF 'XXPILI' N'A PAS ENCORE ETE DEFINI !!! NLS XEIF%9: VAL ENDIF IF XWOR%4-XWOR%6,XEIF%9,,XEIF%9 LST DO XXPILJ WORD XXDEF0 NLS XEIF%9: VAL ENDIF XEIF%: VAL ENDIF IF XWOR%3,,XEIF%, LST DO XXPILI WORD XXDEF0 < POUR LE DEFAUT SECTEUR !!! NLS XEIF%: VAL ENDIF LST DO XWOR%7 WORD XXBAC0 < INDICATEUR DE SOMMET DE LA PILE... :F :F < <<'SISP CMS5 GENPIL2' ED'SISP CMS5 IC' IN0 NLS < < < S I S P C M S 5 I C : < < XWOR%1: VAL XWKNIV>DGNS LST IC@@: EQU $ CALL #SISP CMS5 ICPSTH# WORD XICSA0 < ICSAV :F :F < <<'SISP CMS5 IC' ED'SISP CMS5 ICPSTH' IN0 NLS < < < S I S P C M S 5 I C P S T H : < < XWOR%1: VAL XWKNIV>DGNS LST WORD IC@@ < C POINTE SUR L'INTERRUPT- < CONTEXT LUI-MEME, CELA POUR < PERMETTRE LE POSITIONNEMENT DE < ICSAV EN PROLOGUE DE TACHE HARD < SANS TOUCHER AUX REGISTRES DE < LA TACHE INTEROMPUE N'AYANT PAS < PARTICIPE AUX CHANGEMENTS DE CONTEXTES. NLS IF XWKNIV-NUMDEF,,XEIF%2, XWOR%1: VAL XWKNIV LST WORD PILTH@ < K, NLS XEIF%2: VAL ENDIF IF XWKNIV-NUMDEF,XEIF%2,, XWOR%1: VAL XWKNIV LST WORD PLTH@@ < K, NLS XEIF%2: VAL ENDIF XWOR%1: VAL XWKNIV>DGNS LST WORD TH@@ < P, WORD SMST < S. XWKNIV: VAL XWKNIV+I < NIVEAU HARDWARE SUIVANT (SI EXISTE...). :F :F < <<'SISP CMS5 ICPSTH' ED'SISP CMS5 IREST' IN0 NLS < < < S I S P C M S 5 I R E S T : < < LST LYI -YENA < A PRIORI, ON SUPPOSE QU'IL N'Y < AURA PAS A SIMULER D'ACTIVATION < DE 'TACHE HARDWARE'... IF YENA-K,,,XEIF% IF A T T E N T I O N : L'ADRESSE 'YENA' EST MAUVAISE !!! XEIF%: VAL ENDIF LA TYPDEF < ACCES AU TYPE DE LA TACHE < INTERROMPUE PAR L'EVENTUEL < DEFAUT SECTEUR. CPI TYPTH < S'IL S'AGIT D'UNE 'TACHE HARDWARE', < IL FAUT LAISSER LES INTERRUPTIONS < MASQUEES, AFIN QUE LA TACHE 'HARDWARE' < REPRENNE LA MAIN IMMEDIATEMENT, DANS < UN CONTEXTE IDENTIQUE A CELUI QU'ELLE < POSSEDAIT LORSQU'ELLE FUT INTERROMPUE < DANS 'TDEFS'... JE REST%9 < ET OUI, C'EST UNE 'TACHE HARDWARE', < IL FAUT DEMASQUER LES INTERRUPTIONS. < < CAS DES TACHES 'SOFTWARES' (OU BIEN < DES TACHES 'HARDWARES' ENCORE INTER- < RUPTIBLES, C'EST-A-DIRE AVANT LE < MASQUAGE DES INTERRUPTIONS) : < LA MKDEF < NON, C'ETAIT UNE 'TACHE SOFTWARE', < ALLONS VOIR LE MOT 'MKDEF' : < ('MKDEF')='SMASK0' : LES INTERRUPTIONS < N'ETAIENT PAS MASQUEES AU MOMENT DU < DEFAUT SECTEUR. < PAR CONTRE SI 'MKDEF' EST SUPERIEUR < A 'SMASK0', ALORS ELLES L'ETAIENT... CPI SMASK0 JG REST%5 < INTERRUPTIONS MASQUEES... LYI K < LORSQUE LES INTERRUPTIONS SONT A < DEMASQUER, ON FORCE L'EXECUTION < D'UN 'ACTD', AFIN DE PRENDRE EN < COMPTE DES 'IPI' EMIS ET PRIS EN < COMPTE PAR LA MICRO-MACHINE MAIS < POUR LESQUELS LE DEFAUT SECTEUR EST < APPARU AVANT QUE LA TACHE 'ALARME' < NE SE MASQUE ; UN 'IPI' SITUE A < LA FIN DE CETTE SEQUENCE N'EST ALORS < PAS SUFFISANT, CAR EN EFFET LA BOITE < AUX LETTRES DU PROCESSEUR A ETE < REMISE A '0' AVANT LE DEFAUT SECTEUR... JMP REST%2 < INTERRUPTIONS DEMASQUEES... < < CAS DES TACHES 'HARDWARES' INTERROMPUES DANS 'TDEFS' : < REST%9: EQU $ < CAS DES 'TACHES HARDWARES'. LA IDEDEF < (A)=NUMERO DE LA 'TACHE HARDWARE', LYI NTH0 < A PRIORI, ON SUPPOSE QU'IL < S'AGIT DE LA TACHE ALARME ('0'). < EST-CE LA TACHE ALARME ? JAE REST%5 < OUI, SA REACTIVATION EST SIMPLE... < (DE PLUS ON VA LAISSER LES INTER- < RUPTIONS MASQUEES...) XWORK7: VAL S < AMPLITUDE DU DECALAGE... CPI BITSIG+XWORK7 JG REST%4 < OK, LA REACTIVATION VA BIEN SE PASSER. BSR ASYSER < IL NE S'AGIT PAS A PROPREMENT PARLER < D'UNE ERREUR SYSTEME... MAIS LA REACTI- < VATION VA MAL SE PASSER CAR LA MICRO- < MACHINE FAIT UN DECALAGE ARITHMETIQUE < ET NON PAS LOGIQUE SUR LE CONTENU DE 'X' < QUEL SCANDALE !!! REST%4: EQU $ LR A,X < NON, METTONS DANS 'X' SON NUMERO. LAI K < ET GENERONS UN MASQUE DE MISE < DE MISE A JOUR DU REGISTRE 'HV'. SBT NBITAB-XWORK7-TH0,X < (ON FAIT '-1', CAR LE REGISTRE < 'H' RECEVRA LE CONTENU DE 'X' < DECALE D'UNE UNITE A DROITE, IL < FAUT DONC FAIRE UN DECALAGE D'UNE < UNITE A GAUCHE AVANT... LR A,X < (X)=MASQUE DE MISE A JOUR DE 'HV' < DECALE D'UNE UNITE A GAUCHE. LYI YENA < AFIN DE SIMULER UNE INTERRUPTION < SUR LE NIVEAU CORRESPONDANT... JMP REST%5 < VERS LA SIMULATION DE L'INTERRUPTION, < MAIS EN LAISSANT LES VRAIES INTER- < RUPTIONS MASQUEES... REST%2: EQU $ LAI K < INTERRUPTIONS NON MASQUEES : IL SBT IOM < FAUT DONC DEMASQUER 'IOM', SBT IPM < ET 'IPM'. JMP REST%6 < VERS LE DEMASQUAGE DE 'IOM' ET 'IPM'. REST%5: EQU $ LAI K < LES INTERRUPTIONS ETAIENT MASQUEES, < IL FAUT DONC QU'ELLES LE RESTENT... REST%6: EQU $ SBT LCM < DANS TOUS LES CAS, ON DEMASQUE 'LCM', SBT V < ET ON REINITIALISE LES SBT C < INDICATEURS 'V' ET 'C'. #@PSR A < #SISP CMS5 KREG# LAI -TYPTS-TYPTH STA TYPDEF < REINITIALISATION DE 'TYPDEF' LAI -NMTS-NMTH STA IDEDEF < ET DE 'IDEDEF'. STZ MKDEF < AVANT LE DEMASQUAGE EVENTUEL DES < INTERRUPTIONS, ON REINITIALISE < 'MKDEF' AUTORISANT AINSI UN DEFAUT < SECTEUR A APPARAITRE IMMEDIATEMENT !!! STZ DEFOK < INDICATION DE FIN DE TRAITEMENT < DU DEFAUT SECTEUR... LA SC LR A,C < RESTAURATION DE LA BASE 'C'. < (MAINTENANT QU'ON N'EN A PLUS BESOIN) PLR A < < REACTIVATION EVENTUELLE D'UNE 'TACHE < HARDWARE' INTERROMPUE PAR LE DEFAUT < SECTEUR : CETTE REACTIVATION, ETANT < DONNE LA NON-INTERRUPTIBILITE DES < 'TACHES HARDWARES' (SAUF AU DEFAUT < SECTEUR), NE PORTE QUE SUR UNE SEULE < TACHE ; S'IL S'AGIT DE LA TACHE D'ALARME, < IL SUFFIT DE FAIRE UN 'ACTD', LE < CHAMP 'MALARM' ETANT REGENERE PAR < 'TDEFS', PAR CONTRE POUR LES AUTRES < 'TACHE HARDWARES', IL FAUT SE BRANCHER < DANS LE MICRO-PROGRAMME AU MODULE < DE CHANGEMENT DES CONTEXTES PARTIELS, < ET DE LA MISE A JOUR DU REGISTRE < 'HV'... < ON NOTERA AVEC ATTENTION QUE LES INTERRUPTIONS < SONT LAISSEES A L'ETAT MSAQUEES PAR LE < 'RESTART' AFIN QUE LA TACHE 'HARDWARE' SOIT < CONTENTE DU CONTEXTE QU'ON LUI FOURNIT... < A T T E N T I O N : DERRIERE LE 'ROMB', < OU BIEN L''ACTD', LES INTERRUPTIONS SE < TROUVENT DEMASQUEES PAR L''ACQ' QUI TER- < MINE CHAQUE 'TACHE HARDWARE', MAIS CELA < N'A AUCUNE IMPORTANCE ; EN EFFET D'UNE < MANIERE GENERALE SI UNE 'TACHE HARDWARE' < EST ACTIVE C'EST QUE LES INTERRUPTIONS < N'ETAIENT PAS MASQUEES LORS DE SON APPEL ; < LA SEULE EXCEPTION EST LA TACHE ALARME ('0') < A L'EXCEPTION DU TRAITEMENT DES 'IPI' ; < MAIS QU'IL Y AIT ALORS DEFAUT SECTEUR < OU PAS, LES INTERRUPTIONS SE TROUVENT < DEMASQUEES APRES L'ALARME, DONC IL EST < LOGIQUE LORS DU 'RESTART' DE FAIRE DE < MEME... < CPZR Y < Y-A-T'IL UNE REACTIVATION DE < 'TACHE HARDWARE' ??? JL REST%1 < NON, C'EST UNE 'TACHE SOFTWARE' < QUI A ETE INTERROMPUE... JG REST%3 < OUI, ET CE N'EST PAS LA TACHE ALARME. ACTD < OUI, REACTIVATION DE LA TACHE ALARME ; < NOTONS QUE CET 'ACTD' ECRASE LE < CHAMP 'MALARM' MAIS QUE CE DERNIER < SERA RESTAURE AVANT DE SORTIR DE < 'TDEFS'... JMP REST%1 REST%3: EQU $ ROMB < ET ON SIMULE UNE INTERRUPTION SUR < LE NIVEAU CORRESPONDANT ; ON A : < (Y)=ADRESSE DU MICRO-PROGRAMME DE < CHANGEMENT DE CONTEXTES PARTIELS, < (X)=MASQUE DECALE D'UNE UNITE A GAUCHE < A SUPERPOSER A 'HV'. REST%1: EQU $ RST < REMISE A '0' DES INDICATEURS 'V' ET < 'C', DEMASQUAGE DES INTERRUPTIONS 'LCM', < AINSI QUE DES INTERRUPTIONS 'IOM' ET < 'IPM' SI ELLES ETAIENT MASQUEES AU < MOMENT DU DEFAUT SECTEUR. < (CE DEMASQUAGE N'A LIEU COMME DEJA < MENTIONNE QUE SI L'ON N'A PAS EXECUTE < NI UN 'ROMB', NI UN 'ACTD') LRM A < MISE EN PLACE D'UN MASQUE DE SELECTION XWOR%1: VAL COSBT?V=FMASK(K=FCINST WORD COSBT?C=FMASK(K?XWOR%1=FCINST < DES INDICATEURS 'V' ET 'C' DE 'ST'. AND SS < EN EFFET, ON NE PEUT PRENDRE < BRUTALEMENT 'SS' COMME JE L'AVAIS < FAIT PRECEDEMMENT : DANS LE CAS OU < LA 'TACHE SOFTWARE' A ETE INTERROMPUE < PAR UNE 'TACHE HARDWARE', ELLE MEME < INTERROMPUE PAR LE DEFAUT SECTEUR, LE < REGISTRE 'S' DE LA 'TACHE SOFTWARE' < EST EN GENERAL RECUPERE DANS LA 'PSTH' < DE LA 'TACHE HARDWARE', AUQUEL IL Y A < DES BITS POSITIONNES DANS LE CHAMP < 'MALARM', ET EN PARTICULIER LE < FATIDIQUE BIT 'STOP'. SST < REINIALISATION DES INDICATEURS < 'V' ET 'C' (LES AUTRES 'MS' ET < 'SVCS' RESTENT INCHANGES). PLR A,X,Y < RESTAURATION DES REGISTRES 'A', 'X', 'Y'. PLR W < RESTAURATION DE LA BASE 'W'. IPI < ET OUI, ON ENVOIE ICI UN 'IPI' TOUT < SEUL ; EN EFFET LE DEFAUT SECTEUR AYANT < PU APPARAITRE DANS UNE PHASE MASQUEE < DANS LAQUELLE UN 'IPI' A ETE EMIS, < CE DERNIER ('IPI') A ETE PERDU ; AINSI < POUR RECUPERER TOUS LES 'IPI' PERDUS, < ON EN ENVOIE UN TOUT SEUL ICI < QUI N'AURA D'EFFET QUE SUR LES PROCES- < SEURS AYANT LEUR BOITE AUX LETTRES < POSITIONNEE... :F :F < <<'SISP CMS5 IREST' ED'SISP CMS5 JREST' IN0 NLS < < < S I S P C M S 5 J R E S T : < < < FONCTION : < 'JREST' A ETE CREE AFIN < DE FAIRE PROGRESSER LE < CARACTERE "POUR-CENT" DE < 'IREST'... < < LST CALL #SISP CMS5 IREST# :F :F < <<'SISP CMS5 JREST' ED'SISP CMS5 MKDEF' IN0 NLS < < < S I S P C M S 5 M K D E F : < < LST IC KTDEFS < INHIBITION DES TESTS DE 'TDEFS'. :F :F < <<'SISP CMS5 MKDEF' ED'SISP CMS5 PSTH' IN0 NLS < < < S I S P C M S 5 P S T H : < < XWOR%1: VAL XWKNIV LST PSTH@@: EQU $ CALL #SISP CMS5 ICPSTH# :F :F < <<'SISP CMS5 PSTH' ED'SISP CMS5 PSTH-IC' IN0 NLS < < < S I S P C M S 5 P S T H - I C : < < < FONCTION : < CETTE PROCEDURE PERMET < DE GENERER L'ENSEMBLE DES < 'PSTH' ET DES 'IC' DE CMS5... < < LST PAGE < < < P S T H : < < < NOTA : < LA GENERATION DES 'PSTH' < EST SEMI-PARAMETREE ; ELLE < DOIT ETRE MODIFIEE A LA MAIN, < EN CAS DE CHANGEMENT DANS LA < CONFIGURATION... < < XWKNIV: VAL NTH0 < NIVEAU DE 'TH0'. DO NMTH CALL #SISP CMS5 PSTH# XWKNIV: VAL NUMDEF < NIVEAU HARD '10 (DEFSEC). CALL #SISP CMS5 PSTH# PAGE < < < ' I C ' : I N T E R R U P T C O N T E X T S : < < < NOTA : < LA GENERATION DES 'IC' < EST SEMI-PARAMETREE, ET DOIT < DONC ETRE MODIFIEE A LA MAIN < EN CAS DE CHANGEMENTS DANS LA < CONFIGURATION... < < XWKNIV: VAL NTH0 < NIVEAU DE 'TH0'. DO NMTH CALL #SISP CMS5 IC# XWKNIV: VAL NUMDEF < NIVEAU HARD '10 (DEFSEC). CALL #SISP CMS5 IC# :F :F < <<'SISP CMS5 PSTH-IC' ED'SISP CMS5 RST' IN0 NLS < < < S I S P C M S 5 R S T : < < LST LAI K < CLEAR DU REGISTRE 'A' AFIN DE LIRE RST < LE REGISTRE 'ST' DANS 'A' PAR 'RST'. :F :F < <<'SISP CMS5 RST' ED'SISP CMS5 SST' IN0 NLS < < < S I S P C M S 5 S S T : < < LST LAI K < CLEAR DU REGISTRE 'A' AFIN DE LIRE SST < LE REGISTRE 'ST' DANS 'A' PAR 'SST'. :F :F < <<'SISP CMS5 SST' ED'SISP CMS5 THDEB' IN0 NLS < < < S I S P C M S 5 T H D E B : < < < FONCTION : < CETTE PROCEDURE PERMET < DE GENERE LE PROLOGUE DE < CHAQUE TACHE HARDWARE DU < SYSTEME... < < < PARAMETRE : < XWKNIV=NIVEAU DE LA TACHE HARDWARE. < < LST PAGE < < < P R O L O G U E D E T A C H E H A R D W A R E : < < XWOR%: VAL XWKNIV>DGNS TH@@: EQU $ PSR A,B,X,Y < SAUVEGARDE A,B,X,Y... PSR L,W < ...L,W DE LA TACHE INTERROMPUE USE C,PSTH < TEMPORAIREMENT! RAPPELONS QUE < LE 'C' DE NOTRE 'PSTH' BASE < NOTRE 'IC'. < ET RAPPELONS QUE 'PSTH' ET 'IC' < UTILISENT LA MEME 'DSEC'. < ET 'PSTH' UTILISENT LA MEME DSEC USE L,COM+DEPCS < POUR RAISONS D'ASSEMBLAGE... IC ICSAV LR C,L < L BASE LE 'IC' DE NOTRE TACHE... CALL #SISP CMS5 BASE C# USE C,COM+DEPCS USE L,DCT0 < < LE MASQUAGE GENERAL DES 'IT' N'EST UTILE QUE DANS LES < TACHES HARD AUTRES QUE DEFSEC < NLS IF XWKNIV-NUMDEF,,XEIF%,XEIF% LST BSR ASMMK < MASQUAGE GENERAL DES IT, < NOTA : ON NE PEUT APPELER CETTE < ROUTINE QU'APRES AVOIR CORRECTEMENT < CHARGE LE REGISTRE 'C', C'EST POURQUOI < ON REINITIALISE 'C' AVANT D'APPELER < ASMMK!!!! RDHV < APRES MASQUAGE DES INTERRUPTIONS, LISONS < LE REGISTRE 'HV' DES TACHES HARDWARES < EN COURS, STA SAVHV < QUE L'ON SAUVEGARDE DANS 'SAVHV', QUE < LE DEFAUT SECTEUR PEUT ECRASER (MAIS < AVEC LA MEME VALEUR...), IC COMPTH < ET VALIDONS LA VALEUR DE 'SAVHV'... NLS XEIF%: VAL ENDIF LST CALL #SISP CMS5 PSRSLO# < SAVE (SLO,SLE) DE LA TACHE INTERROMPUE. PSR L < SAUVEGARDE DE 'L', BASE DE NOTRE < 'IC'. USE L,PSTH < PEUT ETRE UTILE... :F :F < <<'SISP CMS5 THDEB' ED'SIS CMS5' IN0 PAGE < < < A S S E M B L A G E D E C M S 5 L E M A G N I F I Q U E : < < NSDKF:: VAL '0FE0 < ET OUI, MON BON MONSIEUR, SI ON NE < COMMUNIQUE PAS CETTE VALEUR INFERIEURE < A LA VALEUR REELLE ('1000), LA COPIE < DKF --> DKM SE MET EN 'WATCHDOG' SUR < LES SECTEURS SUPERIEURS A 'NSDKF' !!! DATE PAGE PAGE CALL #SIS CMS5 1# DATE PAGE PAGE CALL #SIS CMS5 2# DATE PAGE PAGE CALL #SIS CMS5 3# DATE PAGE PAGE CALL #SIS CMS5 4# DATE PAGE PAGE CALL #SIS CMS5 5# DATE PAGE PAGE CALL #SIS CMS5 6# DATE PAGE PAGE CALL #SIS CMS5 7# DATE PAGE PAGE CALL #SIS CMS5 8# DATE PAGE PAGE CALL #SIS CMS5 9# DATE PAGE PAGE CALL #SIS CMS5 10# DATE PAGE PAGE CALL #SIS CMS5 11# DATE PAGE PAGE CALL #SIS CMS5 12# DATE PAGE PAGE CALL #SIS CMS5 13# DATE PAGE PAGE CALL #SIS CMS5 14# DATE PAGE PAGE CALL #SIS CMS5 15# DATE PAGE PAGE < < < S U P P R E S S I O N D E C E R T A I N E S S Y S E R S : < < XSAVD1: EQU $ < SAUVEGARDE DU DOLLAR... $EQU SYSCBM NOP < PREMIER DEFAUT SUR LE 'CBM-TV'. $EQU SYSCBN NOP < DEUXIEME DEFAUT SUR LE 'CBM-TV'. $EQU SYSCBJ NOP < PREMIER DEFAUT SUR LE 'CBJ-TV'. $EQU SYSCBK NOP < DEUXIEME DEFAUT SUR LE 'CBJ-TV'. $EQU ZZZDKM NOP < FAUSSE FIN DE CYLINDRE SUR 'DKM'. $EQU DEFCBM NOP < DEFAUT SUR 'CBM' AU RESTART. < < RETOUR AU DOLLAR : < $EQU XSAVD1 XWOR%1: VAL '00000000000@ < VAUDRA '0 SI 'LST' EN COURS... IF XWOR%1-K,XEIF%,,XEIF% PAGE PAGE EST XEIF%: VAL ENDIF END :F :F < <<'SIS CMS5' ED'SISP CMS5 NBIT1' IN0 NLS < < < S I S P C M S 5 N B I T 1 : < < < FONCTION : < CETTE PROCEDURE GENERE < UNE LISTE DE BITS A 1. < < < PARAMETRE : < XWORK7=NOMBRE DE BITS A 1 DANS LA LISTE. < < LST XWOR%7: VAL XWORK7 < NOMBRE DE BITS CONSECUTIFS A '1. NTRN XWOR%8: VAL XWOR%7/NBITMO < NOMBRE DE MOTS PLEINS. XWOR%9: VAL XWOR%7/NBITMO(K=FCREST < NOMBRE DE BITS RESIDUELS. TRN IF XWOR%8,XEIF%,XEIF%, DO XWOR%8 WORD MMOT XEIF%: VAL ENDIF IF XWOR%9,XEIF%,XEIF%, XWOR%6: VAL NBITMO-XWOR%9 < NOMBRE DE BITS RESTANT A '0. WORD BIT>XWOR%6-N)MMOT XEIF%: VAL ENDIF :F :F < <<'SISP CMS5 NBIT1' ED'SISP CMS5 KREG' IN0 <******************************************************************************* @@ XWOR%1: VAL '0000000@@@@ < RECUPERATION DE L'INSTRUCTION PRECEDENTE. <******************************************************************************* NLS < < < S I S P C M S 5 K R E G : < < < FONCTION : < CETTE PROCEDURE COMPTE < LE NOMBRE DE REGISTRES < EMPILES OU DEPILES ET EN < FAIT LE CUMUL DANS 'XKREG' < EN NEGATIF... < < < UTILISATION : < CETTE PROCEDURE DOIT S'APPELER A < L'AIDE D'UN EOT IMPLICITE DE FACON < A RECUPERER LE CODE DE L'INSTRUCTION < COURANTE ; ELLE CUMULE LE NOMBRE DE < REGISTRES EMPILES OU DEPILES DANS < 'XKREG' EN COMPLEMENT A 2... < < LST XWOR%1: VAL XWOR%1(MOCD < ON NE CONSERVE QUE LA LISTE DES < REGISTRES EMPILES... XWOR%2: VAL BIT>NBITCX-N < MASQUE D'UN CHIFFRE HEXA-DECIMAL. DO NBITMO XWOR%1: VAL XWOR%1=K=FCPUSH-NBITMO+B)MMOT+N(XWOR%2+CORBT=FMASK+XWOR%1=FCINST DO NBITMO XKREG: VAL 0=FCPULL-NBITMO=FCSIGN+XKREG :F :F < <<'SISP CMS5 KREG' ED'SISP CMS5 REC' IN < SISGEN CMS5 PROC RL'SISGEN CMS5 PROC''XXXX' < SIS CMS5 1 RL'SIS CMS5 1''XXXX' < SIS CMS5 2 RL'SIS CMS5 2''XXXX' < SIS CMS5 3 RL'SIS CMS5 3''XXXX' < SIS CMS5 4 RL'SIS CMS5 4''XXXX' < SIS CMS5 5 RL'SIS CMS5 5''XXXX' < SIS CMS5 6 RL'SIS CMS5 6''XXXX' < SIS CMS5 7 RL'SIS CMS5 7''XXXX' < SIS CMS5 8 RL'SIS CMS5 8''XXXX' < SIS CMS5 9 RL'SIS CMS5 9''XXXX' < SIS CMS5 10 RL'SIS CMS5 10''XXXX' < SIS CMS5 11 RL'SIS CMS5 11''XXXX' < SIS CMS5 12 RL'SIS CMS5 12''XXXX' < SIS CMS5 13 RL'SIS CMS5 13''XXXX' < SIS CMS5 14 RL'SIS CMS5 14''XXXX' < SIS CMS5 15 RL'SIS CMS5 15''XXXX' :F :F < <<'SISP CMS5 REC' ED'SISP CMS5 TAB1' IN0 NLS < < < S I S P C M S 5 T A B 1 : < < < FONCTION : < CETTE PROCEDURE GENERE < LA TABULATION STANDARD DU < SYSTEME... < < @1 1 1 XWOR%1: VAL KOLMOE=FMASK+KOL0=FVAL+KOLMOR=FMASK+KOL0+KOLON=FVAL XWOR%2: VAL KOLF=FMASK+KOLMOV=FVAL+KOLMOL=FMASK+KOLON=FVAL XWOR%3: VAL XWOR%1=XWOR%2 < DEPLACEMENT CARTE1 --> CARTE2. @ASCI "' XWOR%1: VAL KOLTED=FMASK+KOL2=FVAL+KOLTEF=FMASK+KOL3=FVAL XWOR%2: VAL KOLF=FMASK+KOLTES=FVAL+KOLC=FMASK+KQUOTE=FVAL XWORK1: VAL XWOR%1=XWOR%2+I < XWORK1=INDEX DE RANGEMENT COURANT. XWORK2: VAL KOL0+KOLON < XWORK2=INDEX DE TEST DE CARTE2. XWORK3: VAL NBITCX < XWORK3=DECOMPTEUR DE BITS DE GENERA- < TION D'UN CHIFFRE HEXA-DECIMAL. XWORK4: VAL 0 < XWORK4=CUMUL DE GENERATION D'UN < CHIFFRE HEXA-DECIMAL. DO KOLON CALL #SISP CMS5 TAB2# XWOR%1: VAL KOLC=FMASK+KDQ=FVAL?FCSTO XWOR%3: VAL XWORK1=XWOR%1 < "FERMETURE" DE LA CARTE 'ASCI'... LST @@ < GENERATION DE LA LISTE DE TABULATION. :F :F < <<'SISP CMS5 TAB1' ED'SISP CMS5 TAB2' IN0 NLS < < < S I S P C M S 5 T A B 2 : < < LST XWOR%1: VAL XWORK2=FCGET < ACCES AU CARACTERE DE RANG (XWORK2). XWORK2: VAL XWORK2+I < PROGRESSION DE L'INDEX CARTE2. IF XWOR%1-KSP,XEIF%,,XEIF% XWOR%1: VAL HZERO < LE 'SPACE' EST REMPLACE PAR "0"... XEIF%: VAL ENDIF XWOR%1: VAL XWOR%1=FCAB < CONVERSION BINAIRE DU CARACTERE. XWOR%2: VAL BIT)BIT IF XWOR%1-XWOR%2,,XEIF%, IF XWOR%1-BIT,,XEIF%, IF ATTENTION LA CARTE ARGUMENT CONTIENT D'AUTRES IF CARACTERES QUE "0", "1" OU 'SPACE' !!! XEIF%: VAL ENDIF XWORK4: VAL XWORK4>BIT?XWOR%1 < CUMUL DU CHIFFRE HEXA-DECIMAL... XWORK3: VAL XWORK3-I < DECOMPTE DES BITS DU CHIFFRE... IF XWORK3,XEIF%,,XEIF% XWORK3: VAL NBITCX < REINITIALISATION DU DECOMPTEUR. XWOR%2: VAL XWORK4=FCBA(MOCD?FCSTO XWOR%3: VAL XWORK1=XWOR%2 < RANGEMENT DU CHIFFRE COURANT... XWORK1: VAL XWORK1+I < PROGRESSION DE L'INDEX DE RANGEMENT, XWORK4: VAL 0 < REINITIALISATION DU CUMUL... XEIF%: VAL ENDIF :F :F < <<'SISP CMS5 TAB2' ED'SISP CMS5 ASCI' IN0 NLS < < < S I S P C M S 5 A S C I : < < XETI%:: EQU $ < SAUVEGARDE DU '$' AVANT D'EXECUTER < LA CARTE 'ASCI' ARGUMENT : <******************************************************************************* @@ XWOR%1: VAL '000000000@@=FCSIGN-SIGNP <******************************************************************************* XWOR%2: VAL $-XETI%*NOCMO+XWOR%1-W < XWOR%2=LONGUEUR DU MESSAGE PROPREMENT DIT < (-W POUR EXCLURE LA LONGUEUR ELLE-MEME). XLASCI: VAL XWOR%2 < RENVOI LA LONGUEUR DU MESSAGE... IF XWOR%2-MBAS16,XEIF%,XEIF%, IF ATTENTION : LA LONGUEUR EST TROP GRANDE POUR IF SUPPORTER LE CODAGE SUIVANT 'MBAS16' !!! XEIF%: VAL ENDIF $EQU XETI% < RETOUR AVANT 'ASCI'... XWOR%4: VAL KOL2 XWOR%3: VAL XWOR%4=FCGET < POUR VALIDER 'ASCI' : IF XWOR%3-KDQ,,XEIF%, IF ATTENTION : LA CARTE 'ASCI' EST MAUVAISE !!! XEIF%: VAL ENDIF XWOR%4: VAL XWOR%4+I < INDEX DU PREMIER CARACTERE SUIVANT 'KDQ': XWOR%3: VAL XWOR%4=FCGET IF XWOR%3-KSP,,XEIF%, IF ATTENTION : IL FAUT LAISSER UN 'SPACE' EN TETE DE IF 'ASCI' POUR Y METTRE LA LONGUEUR !!! XEIF%: VAL ENDIF XWOR%1: VAL KOLC=FMASK+HZERO?XWOR%2=FVAL?FCSTO XWOR%8: VAL HZERO?MBAS16 XWOR%9: VAL HZERO)MBAS16 IF XWOR%8-XWOR%9,,XEIF%, IF ATTENTION : LE CODAGE DE LA LONGUEUR EST MAUVAIS !!! XEIF%: VAL ENDIF XWOR%3: VAL XWOR%4=XWOR%1 < INSERTION DE LA LONGUEUR DU MESSAGE, LST @@ < ET ASSEMBLAGE DEFINITIF DE 'ASCI'... :F :F < <<'SISP CMS5 ASCI' ED'SISP CMS5 EXTEND' IN0 NLS < < < S I S P C M S 5 E X T E N D : < < XETI%:: EQU $ < SAUVEGARDE DU '$' AVANT D'EXECUTER < LA CARTE 'BYTE' ARGUMENT : NTRN XWOR%9: VAL NKEXT+NOCMO-E/NOCMO TRN DO XWOR%9 BYTE K;K < REINITIALISATION DE LA ZONE... $EQU XETI% < RETOUR A L'ORIGINE DE LA CARTE 'BYTE'. <******************************************************************************* @@ XWOR%1: VAL '000000000@@=FCSIGN-SIGNP <******************************************************************************* XWOR%2: VAL $-XETI%*NOCMO+XWOR%1-W < XWOR%2=LONGUEUR DU MESSAGE PROPREMENT DIT < (-W POUR EXCLURE LA LONGUEUR ELLE-MEME). XXLEXT: VAL XWOR%2 < POUR COMMUNIQUER LA LONGUEUR... IF XWOR%2-NKEXT+W,XEIF%,XEIF%, IF ATTENTION : LA LONGUEUR EST TROP GRANDE POUR IF ETRE COMPATIBLE AVEC 'NKEXT' !!! XEIF%: VAL ENDIF IF XWOR%2-BASE10,XEIF%,, IF ATTENTION : LA LONGUEUR EST INCOMPATIBLE IF AVEC UN CODAGE DECIMAL !!! XEIF%: VAL ENDIF $EQU XETI% < RETOUR AVANT 'BYTE'... XWOR%4: VAL KOL2 < INDEX DU PREMIER CARACTERE : XWOR%3: VAL XWOR%4=FCGET IF XWOR%3-KZERO,,XEIF%, IF ATTENTION : IL FAUT LAISSER UN 'ZERO' EN TETE DE IF 'BYTE' POUR Y METTRE LA LONGUEUR !!! XEIF%: VAL ENDIF XWOR%1: VAL KOLC=FMASK+XWOR%2=FCBA(MOCD=FVAL?FCSTO XWOR%3: VAL XWOR%4=XWOR%1 < INSERTION DE LA LONGUEUR DU MESSAGE, LST @@ < ET ASSEMBLAGE DEFINITIF DE 'ASCI'... NLS $EQU XETI%+XWOR%9 < AFIN DE GENERER DES OCTETS NULS... LST :F :F < <<'SISP CMS5 EXTEND' ED'SISP CMS5 BYTE' IN0 NLS < < < S I S P C M S 5 B Y T E : < < XETI%:: EQU $ < SAUVEGARDE DU '$' AVANT D'EXECUTER < LA CARTE 'BYTE' ARGUMENT : <******************************************************************************* @@ XWOR%1: VAL '000000000@@=FCSIGN-SIGNP <******************************************************************************* XWOR%2: VAL $-XETI%*NOCMO+XWOR%1-W < XWOR%2=LONGUEUR DU MESSAGE PROPREMENT DIT < (-W POUR EXCLURE LA LONGUEUR ELLE-MEME). IF XWOR%2-MBAS16,XEIF%,XEIF%, IF ATTENTION : LA LONGUEUR EST INCOMPATIBLE IF AVEC UN CODAGE SUIVANT 'MBAS16' !!! XEIF%: VAL ENDIF $EQU XETI% < RETOUR AVANT 'BYTE'... XWOR%4: VAL KOL2+I < INDEX DU PREMIER CARACTERE : XWOR%3: VAL XWOR%4=FCGET IF XWOR%3-KSP,,XEIF%, IF ATTENTION : IL FAUT LAISSER UN 'SPACE' EN TETE DE IF 'BYTE' POUR Y METTRE LA LONGUEUR !!! XEIF%: VAL ENDIF XWOR%1: VAL KOLC=FMASK+HZERO?XWOR%2=FVAL?FCSTO XWOR%3: VAL XWOR%4=XWOR%1 < INSERTION DE LA LONGUEUR DU MESSAGE, LST @@ < ET ASSEMBLAGE DEFINITIF DE 'ASCI'... :F :F < <<'SISP CMS5 BYTE' ED'SISP CMS5 GENPIL3' IN0 NLS < < < S I S P C M S 5 G E N P I L 3 : < < < FONCTION : < CETTE PROCEDURE GENERE < UNE PILE DU TYPE "PUSH/ < PULL". < < < PARAMETRE : < XWPILE=LONGUEUR-MOTS DE LA PILE. < < XWOR%1: VAL XLMPIL=K XWOR%7: VAL XWPILE>XWOR%1 < LONGUEUR MAXIMALE DE LA PILE, XWOR%2: VAL XLCPIL=K XWOR%8: VAL K>XWOR%2 < LONGUEUR COURANTE (NULLE INITIALEMENT). LST WORD XWOR%7?XWOR%8 < POINTEUR DE LA PILE, DZS XWPILE < ET CORPS DE LA PILE PROPREMENT DIT... :F :F < <<'SISP CMS5 GENPIL3' ED'SISP CMS5 VALITN' IN0 NLS < < < S I S P C M S 5 V A L I T N : < < < FONCTION : < CETTE PROCEDURE PERMET DE < VERIFIER QUE DEUX 'ITN' GE- < NERES NE SONT PAS IDENTIQUES... < < < PARAMETRE : < CUMITN=CUMUL DES 'ITN' A RAISON D'UN BIT PAR 'ITN'. < < LST XWOR%1: VAL '0@@@@ < RECUPERATION DE 'ITN' COURANT, QUI EST < AUSSI UN SOUS-NIVEAU D'INTERRUPTION < D'EXCEPTION... <******************************************************************************* IF XWOR%1-NBITMO,XEIF%,, IF ATTENTION : LE CUMUL NE PEUT SE FAIRE SUR UN MOT !!! XEIF%: VAL ENDIF XWOR%2: VAL COSBT?XWOR%1=FMASK(K=FCINST IF CUMITN(XWOR%2,,XEIF%, IF ATTENTION : CET 'ITN' EST DEJA UTILISE !!! XEIF%: VAL ENDIF CUMITN: VAL CUMITN?XWOR%2 < CUMUL DU NOUVEL 'ITN'... :F :F < <<'SISP CMS5 VALITN' ED'SISP CMS5 SAVE' IN0 DF'SVS CMS5 1' DF'SVS CMS5 2' DF'SVS CMS5 3' DF'SVS CMS5 4' DF'SVS CMS5 5' DF'SVS CMS5 6' DF'SVS CMS5 7' DF'SVS CMS5 8' DF'SVS CMS5 9' DF'SVS CMS5 10' DF'SVS CMS5 11' DF'SVS CMS5 12' DF'SVS CMS5 13' DF'SVS CMS5 14' DF'SVS CMS5 15' CO'SIS CMS5 1''SVS CMS5 1' CO'SIS CMS5 2''SVS CMS5 2' CO'SIS CMS5 3''SVS CMS5 3' CO'SIS CMS5 4''SVS CMS5 4' CO'SIS CMS5 5''SVS CMS5 5' CO'SIS CMS5 6''SVS CMS5 6' CO'SIS CMS5 7''SVS CMS5 7' CO'SIS CMS5 8''SVS CMS5 8' CO'SIS CMS5 9''SVS CMS5 9' CO'SIS CMS5 10''SVS CMS5 10' CO'SIS CMS5 11''SVS CMS5 11' CO'SIS CMS5 12''SVS CMS5 12' CO'SIS CMS5 13''SVS CMS5 13' CO'SIS CMS5 14''SVS CMS5 14' CO'SIS CMS5 15''SVS CMS5 15' :F :F < <<'SISP CMS5 SAVE' ED'SISP CMS5 RESTAURE' IN0 DF'SIS CMS5 1' DF'SIS CMS5 2' DF'SIS CMS5 3' DF'SIS CMS5 4' DF'SIS CMS5 5' DF'SIS CMS5 6' DF'SIS CMS5 7' DF'SIS CMS5 8' DF'SIS CMS5 9' DF'SIS CMS5 10' DF'SIS CMS5 11' DF'SIS CMS5 12' DF'SIS CMS5 13' DF'SIS CMS5 14' DF'SIS CMS5 15' CO'SVS CMS5 1''SIS CMS5 1' CO'SVS CMS5 2''SIS CMS5 2' CO'SVS CMS5 3''SIS CMS5 3' CO'SVS CMS5 4''SIS CMS5 4' CO'SVS CMS5 5''SIS CMS5 5' CO'SVS CMS5 6''SIS CMS5 6' CO'SVS CMS5 7''SIS CMS5 7' CO'SVS CMS5 8''SIS CMS5 8' CO'SVS CMS5 9''SIS CMS5 9' CO'SVS CMS5 10''SIS CMS5 10' CO'SVS CMS5 11''SIS CMS5 11' CO'SVS CMS5 12''SIS CMS5 12' CO'SVS CMS5 13''SIS CMS5 13' CO'SVS CMS5 14''SIS CMS5 14' CO'SVS CMS5 15''SIS CMS5 15' :F :F < <<'SISP CMS5 RESTAURE' ED'SISP CMS5 DELETE' IN0 DF'SVS CMS5 1' DF'SVS CMS5 2' DF'SVS CMS5 3' DF'SVS CMS5 4' DF'SVS CMS5 5' DF'SVS CMS5 6' DF'SVS CMS5 7' DF'SVS CMS5 8' DF'SVS CMS5 9' DF'SVS CMS5 10' DF'SVS CMS5 11' DF'SVS CMS5 12' DF'SVS CMS5 13' DF'SVS CMS5 14' DF'SVS CMS5 15' :F :F < <<'SISP CMS5 DELETE' ED'SISP CMS5 PSRSLO' IN0 NLS < < < S I S P C M S 5 P S R S L O : < < LST RDOE PSR A,B < SAUVEGARDE DE (SLO,SLE) COURANT. :F :F < <<'SISP CMS5 PSRSLO' ED'SISP CMS5 PLRSLO' IN0 NLS < < < S I S P C M S 5 P L R S L O : < < LST PLR A,B WOE < RESTAURATION DE (SLO,SLE). :F :F < <<'SISP CMS5 PLRSLO' ED'SISP CMS5 PAGE0' IN0 NLS < < < S I S P C M S 5 P A G E 0 : < < LST LRM A,B WORD SO < (A)='SLO' DE LA PAGE 0, WORD SE < (B)='SLE) DE LA PAGE 0. WOE < ET POSITIONNEMENT SUR LA PAGE 0 (DE 32K). :F :F < <<'SISP CMS5 PAGE0' ED'SISP CMS5 W ZERO' IN NLS < < < S I S P C M S 5 W Z E R O : < < XWOR%1: VAL '1234 XWOR%2: VAL XWOR%1)XWOR%1 IF ZERO+XWOR%2-ZERO,,XEIF%, IF ATTENTION : LA MISE DE 'ZERO' DANS 'W' EST IDIOTE !!! XEIF%: VAL ENDIF LST EORR W,W < (W)=BASE DE LA MEMOIRE DEBANALISEE. :F :F < <<'SISP CMS5 W ZERO' ED'SISP CMS5 W TRACE' IN NLS < < < S I S P C M S 5 W T R A C E : < < XWOR%1: VAL '1234 IF XWOR%1)XWOR%1-K,,XEIF%, IF ATTENTION : LA MISE A ZERO DE 'W' EST IDIOTE !!! XEIF%: VAL ENDIF LST EORR W,W < (W)=0... :F :F < <<'SISP CMS5 W TRACE' ED'SISP CMS5 BASE C' IN0 NLS < < < S I S P C M S 5 B A S E C : < < LST LRM C WORD COM+DEPCS < 'C' EST LA BASE GENERALE DU COMMON < DE CMS5. :F :F < <<'SISP CMS5 BASE C' ED'SISP CMS5 GEN DEF' IN0 NLS < < < S I S P C M S 5 G E N D E F : < < < FONCTION : < CETTE PROCEDURE CREE INCRE- < MENTALEMENT LE FICHIER < 'SIP DEFINITION CMS5' CONTE- < NANT LA DEFINITION DES DIFFE- < RENTS SYMBOLES UTILISES PAR < LES PROCESSEURS-SYSTEME... < < XWOR%1: VAL KOLMOE=FMASK+KOL0=FVAL < EMETTEUR, XWOR%2: VAL KOLMOR=FMASK+KOL0+KOLON=FVAL < RECEPTEUR, XWOR%3: VAL FCMOV?KOLON XWOR%4: VAL XWOR%1?XWOR%2=XWOR%3 < MISE DE LA CARTE ARGUMENT EN CARTE < 'CD2'... @:F;:F;:F; XWOR%1: VAL KOLMOE=FMASK+KOL1=FVAL < EMETTEUR, XWOR%2: VAL KOLMOR=FMASK+KOL0+KOLON+KOLON=FVAL < RECEPTEUR, XWOR%4: VAL XWOR%1?XWOR%2=XWOR%3 < MISE DE LA FERMETURE DU FICHIER < EN CARTE 'CD3'... ;ED @'SIP DEFINITION CMS5';IF ; < MISE DE L'EDITION DU FICHIER QUE < L'ON MET A JOUR EN CARTE 'CD1'... EE LST :F :F < <<'SISP CMS5 GEN DEF' ED'SISP CMS5 GEN CTE' IN0 NLS < < < S I S P C M S 5 G E N C T E : < < < FONCTION : < CETTE PROCEDURE CREE INCRE- < MENTALEMENT LE FICHIER < 'SIP DEFINITION CTTE' CONTENANT < LA DEFINITION DE DIFFERENTS SYM- < BOLES UTILISES PAR LES PROCES- < SEURS-SYSTEME... < < XWOR%1: VAL KOLMOE=FMASK+KOL0=FVAL < EMETTEUR, XWOR%2: VAL KOLMOR=FMASK+KOL0+KOLON=FVAL < RECEPTEUR, XWOR%3: VAL FCMOV?KOLON XWOR%4: VAL XWOR%1?XWOR%2=XWOR%3 < MISE DE LA CARTE ARGUMENT EN CARTE < 'CD2'... @:F;:F;:F; XWOR%1: VAL KOLMOE=FMASK+KOL1=FVAL < EMETTEUR, XWOR%2: VAL KOLMOR=FMASK+KOL0+KOLON+KOLON=FVAL < RECEPTEUR, XWOR%4: VAL XWOR%1?XWOR%2=XWOR%3 < MISE DE LA FERMETURE DU FICHIER < EN CARTE 'CD3'... ;ED @'SIP DEFINITION CTTE';IF ; < MISE DE L'EDITION DU FICHIER QUE < L'ON MET A JOUR EN CARTE 'CD1'... EE LST :F :F < <<'SISP CMS5 GEN CTE' ED'SISP CMS5 CHECK' IN0 NLS < < < S I S P C M S 5 C H E C K : < < < FONCTION : < CETTE PROCEDURE GENERE < LES CHAINAGES INTER-BLOCS < DE SIMULATION DES "RAM"/"ROM"... < < LST WORD CHAINK < CHAINAGE DES BLOCS "ROM"-"RAM"... NLS IF ICHAIN-EXIST,,XEIF%, LST WORD NILK < EMPLACEMENT DU CHECK-SUM DU BLOC "RAM" < PRECEDENT. NLS XEIF%: VAL ENDIF ICHAIN: VAL -ICHAIN < BASCULE DU GENERATEUR DU CHECK-SUM, LES < BLOCS "RAM" ET "ROM" ETANT INTERCALES... LST :F :F < <<'SISP CMS5 CHECK'