NMPROC:  VAL         " S"            < NOM DU PROCESSEUR.
         IDP         " S - RELEASE 15/05/1977"
         IDP         "SERGE SOUZEAU"
         EOT         #SIP DEFINITION CMS5#
         EOT         #SIP DEFINITION ITEM#
         EOT         #SIP DEF PROCESSEUR#
         PROG
         WORD        ASM             < ADRESSE DE RUN DE SYMBOL.
         WORD        NBCAR*NBLIG     < POUR FAIRE $=$+1 , ET AUSSI
                                     < POUR VALIDER LES INDEX D'ACCES
                                     < A L'ITEM1 LORS DE LA SIMULATION
                                     < DE LA LECTURE DES CARTES.
PSYMB:   EQU         $
         LRP         L
         BR          -2,L            < ENTRY DANS SYMBOL.
<
< BUFFERS DE TRAVAIL DE SYMBOL :
<
         WORD        RTERGE          < PERMET D'ABORTER LES ASSEM-
                                     < BLAGES EN ERREUR PAR 'BR 9,W'.
ZACQ1:   DZS         9               < BUFFER DE SORTIE DU LISTING.
ZACQ:    DZS         41              < BUFFER D'ENTREE UNE LIGNE
         PAGE
<
<
<        C O M M O N   D E   S Y M B O L  :
<
<
         COMMON
COMMUN:  EQU         $+128
         DZS         1               < POUR FLOTTANT
         IF          ORDI-"S",XWOR%,,XWOR%
<
<
<        C O N S T A N T E S   F L O T T A N T E S  :
<
<
M3800:   WORD        '3800
ARETD:   WORD        RETDIR
XWOR%:   VAL         0
<
<
<        R E L A I S   S O U S - P R O G R A M M E S  :
<
<
SORSYM:  WORD        PSOSYM          < SORTIE D'UN SYMBOLE.
CALEX:   WORD        PCALEX          < CALCUL D'UNE EXPRESSION.
MACQ:    WORD        PMACQ           < MODULE D'ACQUISITION.
INSET:   WORD        PINSET          < INSERTION D'UN SYMBOLE DANS LA
                                     < TABLE DES SYMBOLES TSYMB.
RETIQ:   WORD        PRETIQ          < RECHERCHE D'UN SYMBOLE DANS
                                     < LA TABLE DES SYMBOLES TSYMB.
INSDEP:  WORD        PINSDP          < INSERTION DEPLACEMENT DANS TDEP.
RECSEC:  WORD        PRECSC          < RECHERCHE NOM DE SECTION DANS TSYMB.
TESAT:   WORD        PTESAT          < TEST DE SATURATION DES TABLES
VERPA:   WORD        VERPAS          < TEST DEPASSEMENT 32K.
SPTAS:   WORD        PTAS            < TRANSFERT SYMBOLE DANS BUF.
PSORTQ:  WORD        SORTQ           < SORTIE QUADRUPLET IDP.
SPJUMP:  WORD        PJUMP           < VERIFICATION PORTEE DES JUMPS.
CONVER:  WORD        PCONV           < CONVERSION 4 CHIFFRES.
HEXA2:   WORD        PHEXA           < CONVERSION 2 CHIFFRES.
BSUPL:   WORD        SUPL            < TRAITEMENT BITS 9,8,10
SPSAV:   WORD        PSAV            < SAVE POUR LES CAS D'ERREUR.
ASPSO1:  WORD        SPSO1           < SORTIE 1 QUADRUPLET.
ASPSO2:  WORD        SPSO2           < SORTIE 2 QUADRUPLETS.
SORSEC:  WORD        PSORC           < EDITION SECTION COMPLETE.
SYMUL:   WORD        PSYMUL          < RECHERCHE PROCHAIN SYMBOLE
                                     < DE TSYMB.
SORMES:  WORD        PSORM           < SORTIE MESSAGE.
TRASYM:  WORD        PTRAS           < TRANSFERT DE TSYMB DANS SYMBOL.
SPLIST:  WORD        PLIST           < SORTIE LISTING.
SORCLF:  WORD        PSORCL          < SORTIE RC-LF.
SPLIS1:  WORD        PLIS1           < SORTIE LISTING (DZS,EQU).
CONV10:  WORD        PCOV10          < CONVERSION DECIMALE.
PAGE:    WORD        PPAGE           < SAUT DE PAGE.
PAGIN:   WORD        PPAGIN          < PAGINATION.
APAGEN:  WORD        PAGENE          < SORTIE LISTING (DIRECTIVES).
AOVL:    WORD        OVL             < ROUTINE DE CHARGEMENT DES
                                     < OVERLAYS.
ASIMUL:  WORD        SIMUL           < SIMULATION LECTURE DE CARTES
                                     < A PARTIR DE L'ITEM1.
         PAGE
<
<
<        C O N S T A N T E S   A D R E S S E  :
<
<
AC44:    WORD        C44
ATABLG:  WORD        TABLG,X
ATABTY:  WORD        TABTY,X
ATDEP:   WORD        '8FEF
ATDEP1:  WORD        '8FEE
ATDEP2:  WORD        '8FED
ATABDR:  WORD        TABDIR,X
AZACQ:   WORD        ZACQ,X
AZACQX:  WORD        ZACQ+40,X
ABRAN:   WORD        BRAN+2,X
ABASC:   WORD        BASC+1,X
ATABCO:  WORD        FINTAB,X
ATACAT:  WORD        TACAT,X
ATACLE:  WORD        TACLE,X
ATALON:  WORD        TALON,X
ATALIG:  WORD        TALIG,X
ATATYP:  WORD        TATYP,X
ATABRG:  WORD        TABRG,X
ADLAN:   WORD        DEBLAN,X
ATSYMB:  WORD        TOP,X
SYMBIN:  WORD        TABINI,X
INCALE:  WORD        DEBCAL,X
INMACQ:  WORD        DEBMAC,X
ATARUP:  WORD        TARUP,X
ASYMB:   WORD        SYMBOL-1,X
ASYMB1:  WORD        SYMBO1-1,X
ASYMB2:  WORD        SYMBO2-1,X
ATBINF:  WORD        TABINF,X
ATBSUP:  WORD        TABSUP,X
AIGET:   WORD        TABEXT,X
LIMINF:  WORD        ZONBAS,X
LIMSUP:  WORD        ZONBAS+3,X
SECBAS:  WORD        ZONSEC,X
VALBAS:  WORD        ZONBAS+6,X
LIMIN1:  WORD        ZONBA1,X
LIMSU1:  WORD        ZONBA1+2,X
SECBA1:  WORD        ZONSEC+3,X
VALBA1:  WORD        ZONBA1+4,X
ASAVE:   WORD        DEBSAV,X
ADINI:   WORD        DEBIN,X
AREST:   WORD        DEBRES,X
ABUF:    WORD        BUF+2,X
ACARSP:  WORD        CARSP+1,X
ACOT:    WORD        COTROU
AFINF:   WORD        FINFRA
ATESTF:  WORD        TESTF
ANOCON:  WORD        NOCONF
ADEP:    WORD        DEPART
BRAN:    WORD        PADIF
RETER:   WORD        DIESE
         WORD        PADET
ASORLI:  WORD        SORLIS
         WORD        DOLLAR
         IF          ORDI-"S",XWOR%,,XWOR%
RETEQ1:  WORD        RETEQ-1
XWOR%:   VAL         0
ZACQ10:  WORD        ZACQ1+0
ZACQ11:  WORD        ZACQ1+1
ZACQ12:  WORD        ZACQ1+2
ZACQ13:  WORD        ZACQ1+3
ZACQ14:  WORD        ZACQ1+4
ZACQ15:  WORD        ZACQ1+5
ZACQ16:  WORD        ZACQ1+6
ZACQ17:  WORD        ZACQ1+7
ZACQ18:  WORD        ZACQ-1
ZBO:     VAL         '1000           < ADRESSE D'IMPLANTATION DU
                                     < BINAIRE EN MEMOIRE (DANS LES
                                     < 4 DERNIERS K MEMOIRE).
AI1:     WORD        ZERO+PILE-LTNI+LTN+ZBO,X
                                     < ADRESSE DE L'ITEM1 TRANSLATE
                                     < AU BOUT DES 8K MOTS ; ON Y
                                     < TROUVE LE SYMBOLIQUE A ASSEMBLER.
ABO:     WORD        ZBO             < RELAI COURANT VERS LE BINAIRE
                                     < ON L'UTILISE EN SIMULATION
                                     < DE FICHIER SEQUENTIEL.
IAI1:    WORD        0               < INDEX COURANT VERS L'ITEM1
                                     < (TEXTE SOURCE A ASSEMBLER).
APILE:   WORD        PILE-1          < POUR LA REINITIALISATION DE
                                     < K LORS DU CHARGEMENT DES OVERLAY.
         PAGE
<
< DEFINITION DU NVP DE SORTIE IMPLICITE :
<
NVPO:    VAL         '0202           < VALEUR IMPLICITE SI ' S'.
KNVPO:   VAL         'B-2*'100       < DE FACON A PASSER SUR NVP='B.
<
<
<        Z O N E   D E   T R A V A I L  :
<
<
IOCB4:   WORD        NVPO+KNVPO      < SORTIE DU LISTING.
         WORD        ZACQ1-ZERO*2
         WORD        0
DEBCAL:  EQU         $-1             < ZONE INITIALISEE PAR CALEX.
RANG:    WORD        0
RANG1:   WORD        0
SOM:     WORD        0
NSEC:    WORD        0
INDSEC:  WORD        0
SIGMA:   WORD        0
COMDE:   WORD        0
NIV:     WORD        0
FINCAL:  EQU         $-1
IOCB3:   WORD        NVPO            < SORTIE MESSAGE.
         WORD        ADSY1           < @ OCTET DE 'SYMBOL'.
DEBMAC:  EQU         $-1             < ZONE INITIALISEE PAR MACQ.
SIGNE:   WORD        0
SIGN1:   WORD        0
ETAS:    WORD        0
LG:      WORD        0
INDICA:  WORD        0
COND:    DZS         2
SYMBOL:  DZS         3
ADSY0:   VAL         SYMBOL-ZERO*2
ADSY1:   EQU         ZERO+ADSY0
VALEUR:  EQU         SYMBOL
INDHEX:  EQU         SYMBOL+1
CSTE:    EQU         SYMBOL+2
FINMAC:  EQU         $-1
NIVSYM:  WORD        0
CLE:     WORD        0
IOCB:    WORD        '0B00           < LECTURE POUR EFFACEMENT
         WORD        ADSY0
         WORD        1
MOTINF:  WORD        0
MOTSUP:  WORD        0
IOCB1:   WORD        NVPO            < SORTIE CARTE ERRONNEE.
                                     < NVP=4.
         WORD        ZACQ-ZERO*2
         WORD        80
BUF:     DZS         4
IOCB2:   WORD        NVPO            < MESSAGES D'ERREUR.
         WORD        ADSY3           < @ OCTET DE 'SYMBO2'.
         WORD        22
NELT:    WORD        0
NLIG:    WORD        0
DEBIN:   EQU         $-1             < DONNEES INITIALISEES AU LANCEMENT.
         DZS         2
DEBSAV:  EQU         $-1             < DONNEES SAUVEGARDEES EN
                                     < DEBUT DE PHRASE.
SECOUR:  WORD        0
PAS:     WORD        0
NSYMB:   WORD        6
NDEP:    WORD        0
ETASS:   WORD        0
         IF          ORDI-"S",XWOR%,,XWOR%
SECMAX:  WORD        0
XWOR%:   VAL         0
FINSAV:  EQU         $-1
INDEND:  WORD        0
ZONSEC:  EQU         $-1
         DZS         5               < NUMEROS SECTIONS POINTEES
                                     < PAR BASES.
LIST2:   WORD        0
CHECK:   WORD        0
SYMBO1:  DZS         3
NACQ1:   WORD        0
INDO:    WORD        0
LIMSU2:  WORD        0
SAUVPA:  WORD        0
DEBSEC:  WORD        0
FINSEC:  WORD        0
INDZS:   WORD        0
BASCUL:  WORD        0
NBLIN:   WORD        0
SITUAT:  WORD        0
DEPLA2:  WORD        0
IBUFBN:  WORD        0
SYMBO2:  DZS         3
ADSY2:   VAL         SYMBO2-ZERO*2
ADSY3:   EQU         ZERO+ADSY2
FININ:   EQU         $-1
         WORD        '2B
         WORD        0
RCLF:    WORD        '0D0A
         ASCI        "ERA "
         IF          ORDI-"T",XWOR%,,XWOR%
ZTR:     WORD        '28
XWOR%:   VAL         0
         IF          ORDI-"S",XWOR%,,XWOR%
ZTR:     WORD        0
XWOR%:   VAL         0
RC:      WORD        '0D00
LF:      WORD        '0A00
LIBSEC:  ASCI        "SEC "
MOTEST:  WORD        '09A0
OUVR:    WORD        '2028           < '('.
FERM:    WORD        '2920           < ')'.
CARSP:   WORD        'A0A5
         WORD        "  "
         WORD        'A0AA
M10:     WORD        10
         IF          ORDI-"T",XWOR%,,XWOR%
         WORD        0
XWOR%:   VAL         0
SAUPAG:  WORD        '0D50
M3277:   WORD        3277
IOCB6:   WORD        0
IOCB7:   WORD        '0205+KNVPO     < PAGE SERA EN FAIT UN EFFACEMENT
                                     < DE L'ECRAN DE LA VISU.
DEBLAN:  EQU         $-1             < DONNEES INITIALISEES EN
                                     < DEBUT DE CARTE.
INBRE:   WORD        0
SINGER:  WORD        0
VALDIR:  WORD        0
NR:      WORD        0
SIGNIF:  EQU         $
TRANS:   WORD        0
INDASC:  WORD        0
MOT1:    WORD        0
PVIR:    WORD        0
MOT2:    WORD        0
ETAPH:   WORD        0
BINARY:  WORD        0
NACQ:    WORD        0
CARLU:   WORD        0
INDREG:  WORD        0
NREG:    WORD        0
NETIQ:   WORD        0
INBYTE:  WORD        0
MOBYTE:  WORD        0
         IF          ORDI-"S",XWOR%,,XWOR%
INACTD:  WORD        0
INFL:    WORD        0
XWOR%:   VAL         0
FINLAN:  EQU         $-1
DEBRES:  EQU         $-1
         DZS         FINSAV-DEBSAV   < ZONE DE SAUVEGARDE.
CCI:     WORD        '0001           < APPEL DU CCI.
DEMSGN:  WORD        '0602           < DEMANDE 'LOAD SOUS :SYS' AU SGN.
         WORD        XWOR%A          < ADRESSE DE LA 2EME BRANCHE
                                     < D'OVERLAY (' Z') , INITIALISEE
                                     < LORS DE LA GENERATION.
         WORD        ZERO-BRANCH+PILE-LTNI-LTNI*2
         WORD        -1
         PAGE
<
<
<        A D R E S S E S   D ' E R R E U R S  :
<
<
MERR:    WORD        ERR
NBPASS:  WORD        -1              < EVITE UN ALT-MODE
KSTORE:  EQU         $-1
         DZS         17              < PILE DE SYMBOL.
         PAGE
<
<
<        T A B L E   D E   R E C O N N A I S S A N C E
<                    D E S   D I R E C T I V E S  :
<
<
<        FORMAT :
<                      TABCO CONTIENT SUR 1 OU 2 MOTS LES
<                    DIRECTIVES CODEE DE LA FACON SUIVANTE :
<                    BIT0-5(TABCO)=BIT1-7(CARACTERE1) ,
<                    BIT6-10(TABCO)=BIT2-7(CARACTERE2) ,
<                    ( BIT11-15(TABCO)=BIT2-7(CARACTERE3)
<                    ( BIT16-20(TABCO)=BIT2-7(CARACTERE4) ) ).
<
<
TABCO:   EQU         $
         WORD        '3059           < LBY.
         WORD        'CE82;'C800     < STBY.
         WORD        '8E02;'C800     < CPBY.
         IF          ORDI-"T",XWOR%,,XWOR%
         WORD        '092F           < BIO.
XWOR%:   VAL         0
         IF          ORDI-"S",XWOR%,,XWOR%
         WORD        '61A0           < XM.
XWOR%:   VAL         0
         WORD        '0E1A           < CPZ.
         WORD        '0A40           < BR.
         WORD        '0A72           < BSR.
         WORD        '4D2F           < SIO.
         WORD        '4C40           < SB.
         WORD        '0480           < AD.
         WORD        '4E99           < STY.
         WORD        '4E98           < STX.
         WORD        '4E82           < STB.
         WORD        '4E81           < STA.
         WORD        '3600           < MP.
         WORD        '12C0           < DV.
         WORD        '3020           < LA.
         WORD        '3300           < LX.
         WORD        '3E40           < OR.
         WORD        '05C4           < AND.
         WORD        '15F2           < EOR.
         WORD        '0E00           < CP.
         WORD        '3320           < LY.
         WORD        '3040           < LB.
         WORD        '2460           < IC.
         WORD        '1060           < DC.
         WORD        'CA33;'A000     < RQST.
         WORD        'C993;'2800     < RLSE.
         WORD        '0474           < ACT.
         WORD        '3024           < LAD.
         WORD        '4E9A           < STZ.
         WORD        'DC29;'A000     < WAIT.
         WORD        '29B0           < JMP.
         WORD        'A827;'2800     < JAGE.
         WORD        'A82E;'2800     < JANE.
         WORD        '2827           < JAG.
         WORD        '39F0           < NOP.
         WORD        '282C           < JAL.
         WORD        '2825           < JAE.
         WORD        'A82C;'2800     < JALE.
         WORD        '4854           < RBT.
         WORD        '4C54           < SBT.
         WORD        '2454           < IBT.
         WORD        '5054           < TBT.
         WORD        'CD92;'9800     < SLRS.
         WORD        'CD92;'2000     < SLRD.
         WORD        'CD8C;'9800     < SLLS.
         WORD        'CD8C;'2000     < SLLD.
         WORD        'CC72;'9800     < SCRS.
         WORD        'CC72;'2000     < SCRD.
         WORD        'CC6C;'9800     < SCLS.
         WORD        'CC6C;'2000     < SCLD.
         WORD        'CC32;'9800     < SARS.
         WORD        'CC32;'2000     < SARD.
         WORD        '6240           < XR.
         WORD        '3240           < LR.
         WORD        '0492           < ADR.
         WORD        '4C52           < SBR.
         WORD        '3E52           < ORR.
         WORD        '95F2;'9000     < EORR.
         WORD        '85C4;'9000     < ANDR.
         WORD        '8D93;'9000     < CLSR.
         WORD        '8483;'9000     < ADCR.
         WORD        'CC43;'9000     < SBCR.
         WORD        '38F2           < NGR.
         WORD        '8E1A;'9000     < CPZR.
         WORD        '0DB2           < CMR.
         WORD        '0E12           < CPR.
         WORD        'CEE2;'9000     < SWBR.
         WORD        'E12D;'9000     < XIMR.
         WORD        '8492;'8000     < ADRP.
         WORD        '3250           < LRP.
         WORD        '29C3           < JNC.
         WORD        '29D6           < JNV.
         WORD        'A9C3;'B000     < JNCV.
         WORD        0
         WORD        '2860           < JC.
         WORD        '2AC0           < JV.
         WORD        '2876           < JCV.
         WORD        '8492;'4800     < ADRI.
         WORD        '3029           < LAI.
         WORD        '3309           < LXI.
         WORD        '3E49           < ORI.
         WORD        '85C4;'4800     < ANDI.
         WORD        '95F2;'4800     < EORI.
         WORD        '0E09           < CPI.
         WORD        '3329           < LYI.
         WORD        '3049           < LBI.
         WORD        '2938           < JIX.
         WORD        '2898           < JDX.
         WORD        '4272           < PSR.
         WORD        '4192           < PLR.
         WORD        '4EC3           < SVC.
         IF          ORDI-"T",XWOR%,,XWOR%
         WORD        0
XWOR%:   VAL         0
         IF          ORDI-"S",XWOR%,,XWOR%
         WORD        '324D           < LRM.
XWOR%:   VAL         0
         WORD        0
         WORD        '064D           < ARM.
         WORD        '0471           < ACQ.
         WORD        'A02C;'A000     < HALT.
         WORD        '4A72           < RSR.
         WORD        '1054           < DBT.
         WORD        'CE85;'8000     < STEP.
         WORD        '8474;'2000     < ACTD.
         WORD        'C6A9;'A000     < QUIT.
         WORD        '4299           < PTY.
         WORD        '4C79           < SCY.
         WORD        'B5F6;'2800     < MOVE.
         WORD        '4C53           < SBS.
         WORD        'C2B3;'4000     < PUSH.
         WORD        'C2AC;'6000     < PULL.
         WORD        '046B           < ACK.
         WORD        '4A76           < RSV.
         WORD        'C9ED;'1000     < ROMB.
         IF          ORDI-"S",XWOR%,,XWOR%
         WORD        '1050           < DBP.
         WORD        '4C50           < SBP.
         WORD        '4850           < RBP.
         WORD        '1134           < DIT.
         WORD        '1534           < EIT.
         WORD        '4E74           < SST.
         WORD        '4A74           < RST.
         WORD        'C888;'B000     < RDHV.
         WORD        '2609           < IPI.
         WORD        'C893;'4800     < RDSI.
         WORD        '3032           < LAR.
         WORD        'C88F;'2800     < RDOE.
         WORD        'B6D4;'6800     < MVTM.
         WORD        'CE81;'9000     < STAR.
         WORD        '5DE5           < WOE.
         WORD        'B6D4;'9800     < MVTS.
XWOR%:   VAL         0
         WORD        '28E5           < JGE.
         WORD        '29C5           < JNE.
         WORD        '28E0           < JG.
         WORD        0
         WORD        '2980           < JL.
         WORD        '28A0           < JE.
         WORD        '2985           < JLE.
         WORD        '8DED;'6BDC     < COMMON.
         WORD        'B1E3;'0B00     < LOCAL.
         WORD        'C24F;'3800     < PROG.
         WORD        'D022;'6140     < TABLE.
         WORD        '9265;'1800     < DSEC.
         WORD        '1714           < EXT.
         WORD        '15D4           < ENT.
         WORD        '5665           < USE.
         WORD        '1274           < DST.
         WORD        '1674           < EST.
         WORD        '3893           < NDS.
         WORD        '15F4           < EOT.
         WORD        '15C4           < END.
         WORD        'C274;'9800     < PSTS.
         WORD        'C274;'4000     < PSTH.
         WORD        '24C0           < IF.
         WORD        '1635           < EQU.
         WORD        '582C           < VAL.
         WORD        '1353           < DZS.
         WORD        '8B34;'2800     < BYTE.
         WORD        '11E0           < DO.
         WORD        'DDF2;'2000     < WORD.
         WORD        '2490           < IDP.
         WORD        '8663;'4800     < ASCI.
         WORD        'C027;'2800     < PAGE.
         IF          ORDI-"S",XWOR%,,XWOR%
         WORD        '1984           < FLD.
         WORD        '1824           < FAD.
         WORD        '19B0           < FMP.
         WORD        '1896           < FDV.
         WORD        '1A74           < FST.
         WORD        '1A62           < FSB.
         WORD        '986D;'D000     < FCMZ.
         WORD        '9861;'6800     < FCAM.
         WORD        '99C5;'3800     < FNEG.
         WORD        '9822;'9800     < FABS.
         WORD        '1938           < FIX.
         WORD        '1994           < FLT.
         WORD        'B9F2;'6800     < NORM.
         WORD        '9861;'D000     < FCAZ.
         WORD        0;0             < FLOAT SUPPRIME.
XWOR%:   VAL         0
FINTAB:  EQU         $
BASC:    EQU         $
         WORD        '0101           < ENTREE CARTE SUR NVP=1
         WORD        '0101           < ENTREE CARTE SUR NVP=1
TACAT:   BYTE        32;4;1;3;14;8;2;1;1;3;3;7
         IF          ORDI-"T",XWOR%,,XWOR%
         BYTE        1;8;2;2;1;3;16;5
         BYTE        1;1;1;1;1;2;1;1;1;1
         BYTE        1;4;1;2
XWOR%:   VAL         0
         IF          ORDI-"S",XWOR%,,XWOR%
         BYTE        1;8;2;2;1;1;2;5;1;26;5;1
         BYTE        1;1;1;1;2;1;1;1;1;1
         BYTE        4;1;2
XWOR%:   VAL         0
TALON:   BYTE        0;'21;3;'21;'22;5;6;5;6;5
         IF          ORDI-"T",XWOR%,,XWOR%
         BYTE        6;'21;'C4;'87;'21;'31;'A7;'62;3;'2E
         BYTE        '90;'B0;'CB;'12;'E;3;'EC;'67;'E7;7
         BYTE        '61;'47;'48;3
XWOR%:   VAL         0
         IF          ORDI-"S",XWOR%,,XWOR%
         BYTE        6;'21;'C4;'87;'21;'31;'A7;'31;'62;3;'22;3
         BYTE        '2E;'90;'B0;'CB;'12;'E;3;'EC;'67;'E7
         BYTE        7;'61;'47;'48;3
XWOR%:   VAL         0
TALIG:   WORD        'A202;'1200;'8A01;'0200
         WORD        'C200;'4201;'4200;'8200
         WORD        '8202;'1201;'0A00;'2201
         WORD        '1202;'0200;'0602;'0200
         WORD        '1204;'4204;'0600
TABINI:  WORD        '8000;0
         WORD        6;0;"OF";'C600
TABINF:  WORD        -256;-128;0
TABSUP:  WORD        7;31;127;255
TACLE:   WORD        '3030;'0AC9;'0002;'0853
         WORD        '001C;'005D;'8036;'0047
TABRG:   WORD        '2041;'4258;'5943;'4C57
         WORD        '4B00
TATYP:   WORD        EXPA
         WORD        REGIS
         WORD        BASE
         WORD        EXPT
         WORD        INDEX
         WORD        NOMSEC
TABEXT:  WORD        REFMEM
         WORD        JUMP
         WORD        WORD
         WORD        EQU
         WORD        EXT
         WORD        ENT
         WORD        USE
         WORD        END
TABLG:   BYTE        0;64;61;59;58;48;47;46;45;44
         BYTE        42;35;34;33;32;27;1
TABTY:   BYTE        0;7;0;6;4;2;7;2;3;2
         BYTE        7;1;7;3;7;5;7
TARUP:   WORD        FINPH
         WORD        CHAIN
         WORD        CSIGNE
         WORD        NEWCAR
         WORD        DECIM
         WORD        SUILT
         WORD        EMACQ
         WORD        EMACQ
         WORD        FSUILT
         WORD        EMACQ
         WORD        FSUILT
         WORD        FSUIL1
         WORD        SUILT1
         WORD        SUILT
         WORD        ETIQ
         WORD        EMACQ
         WORD        FNBRE
         WORD        EMACQ
         WORD        FNBRE
         WORD        FNBR1
         WORD        CNBRE
         WORD        CNBR1
         WORD        EMACQ
         WORD        EMACQ
         WORD        EXCLAM
         WORD        FCHAIN
TABDIR:  EQU         $-1
         WORD        COMMON
         WORD        LOCAL
         WORD        PROG
         WORD        TABLE
         WORD        DSEC
         WORD        EXT1
         WORD        ENT1
         WORD        USE1
         WORD        DST
         WORD        EST
         WORD        NDS
         WORD        EOT
         WORD        END1
         WORD        PSTS
         WORD        PSTH
         WORD        0               < LIMITE DIRECTIVES ETIQUETABLES.
         WORD        EQU1
         WORD        VAL
         WORD        DZS
         WORD        BYTE
         WORD        DO
         WORD        WORD1
         WORD        IDP
         WORD        ASCI
ZONBAS:  EQU         $-1
         DZS         9
ZONBA1:  EQU         $-1
         DZS         6
         PAGE
<
<
<        S Y M B O L E S   A B S O L U S  :
<
<
LGLAN:   VAL         FINLAN-DEBLAN   < LONGUEUR ZONE A INITIALISER
                                     < PAR CARTE.
LCALEX:  VAL         FINCAL-DEBCAL
LMACQ:   VAL         FINMAC-DEBMAC
LTABCO:  VAL         FINTAB-TABCO    < LONGUEUR TABLE DES CODES
                                     < OPERATION.
LTABTY:  VAL         16
LSAV:    VAL         FINSAV-DEBSAV   < LONGUEUR ZONE SAUVEGARDEE.
         PAGE
<
<
<        A S S E M B L E U R   S Y M B O L  :
<
<
<                    NVP=3 : SORTIE DU BINAIRE ,
<                    NVP=4 : SORTIE LISTING ET MESSAGES ,
<                    NVP=B : SORTIE LISTING SOUS ' S' ,
<                    NVP=1 : ENTREE CARTES.
<                    NVP=5 : ENTREE CARTES EN BASCULE AVEC 1 SUR EOT
<        NOTA :
<                      DANS LE CAS DE LA VERSION ' S' ,
<                    L'ENTREE DES CARTES EST SIMULEE A
<                    L'AIDE DE L'ITEM1 TRANSLATE EN FOND
<                    DES 8K MEMOIRE ; LES DELIMITEUR DE CARTE
<                    UTILISE EST '#' ; LE BINAIRE EST STOCKE EN
<                    SIMULATION DE FICHIER SEQUENTIEL ,
<                    EN DEBUT DES 4 DERNIERS K MEMOIRE.
<
<
         PROG        MAIN
         WORD        COMMUN
ASM:     EQU         $
         LRP         C
         LY          -1,C
         LR          Y,C
         IC          NBPASS          < EVITER UN ALT-MODE
         JLE         CT100
         LAI         17
         BR          MERR
CT100:   EQU         $
<
< CHARGEMENT DE LA 2EME BRANCHE DE L'OVERLAY (' Z') :
<
         LAD         DEMSGN
         QUIT                        < APPEL DU SGN SANS UTILISER
                                     < LA PILE K (NON ENCORE INITIALI-
                                     < SEE).
         JE          Z24             < CHARGEMENT OK.
         LAD         CCI
         QUIT                        < EN CAS D'ERREUR AU CHARGEMENT ,
         JMP         $-1             < ON FAIT UN RETOUR DEFINITIF
                                     < AU CCI.
Z24:     EQU         $
         IC          NBLIN
         LXI         -1              < INITIALISATION DE TSYMB.
C1:      EQU         $
         ADRI        1,X
         LBY         &SYMBIN
         STBY        &ATSYMB
         CPI         'FF
         JNE         C1
SURCH:   EQU         $
         LAD         KSTORE
         LR          A,K             < INITIALISATION DE K.
         BSR         PAGE            < SAUT DE PAGE !?!!!!?!?!
         LAI         'A3             < DECLARATION DE BINAIRE
                                     < TRANSLATABLE ASSEMBLEUR.
         LBI         0
         BSR         ASPSO1
         STZ         INDEND
         LXI         -1
         IF          ORDI-"T",XWOR%,,XWOR%
         JMP         C4              < VERS LA LECTURE D'UNE CARTE.
XWOR%:   VAL         0
         IF          ORDI-"S",XWOR%,,XWOR%
         JMP         C5              < ET C'EST PARTI ...
XWOR%:   VAL         0
DEPART:  EQU         $
         LXI         LGLAN
         STZ         &ADLAN
         JDX         $-1
         LAD         KSTORE
         LR          A,K
         IC          DEPLA2
         IC          NLIG
SVCTAP:  EQU         $
         BSR         SPSAV
         CPZ         INDO
         JE          NEWASK
         DC          INDO            < TRAITEMENT 'DO' EN COURS.
         JMP         Z20
NEWASK:  EQU         $
         BSR         ASIMUL          < SIMULATION 'LECTURE CARTE'
                                     < DANS L'ITEM1.
Z20:     EQU         $
         LXI         79              < ELIMINER LES BLANCS
C1200:   EQU         $
         LBY         &AZACQ
         ORI         '20
         CPI         '20
         JNE         C1201
         JDX         C1200
C1201:   EQU         $
         ADRI        1,X
         LAI         '0D             < RETOUR-CHARIOT.
         STBY        &AZACQ          < QUE L'ON MET EN BOUT DE CARTE.
         ADRI        1,X
         LAI         '0A
         STBY        &AZACQ
         LXI         -18             < NETTOYAGE ZONE LISTING (ZACQ1).
         LAI         '20
         STBY        &AZACQ
         JIX         $-1
         LYI         0               < NETTOYAGE DU BUFFER.
         LXI         -1
C2:      EQU         $
         ADRI        1,X
CARAC:   EQU         $
         XR          X,Y
         LBY         &AZACQ
         XR          X,Y
         ADRI        1,Y
         CPI         '0A
         JE          CARAC           < LES LF SONT IGNORES.
         STBY        &AZACQ
         CPI         '0D
         JE          RETURN
         CPI         '04
         JNE         C2              < FIN DE CARTE ( R / C ) NON TROUVE.
RETURN:  EQU         $
         LAI         '0D
         STBY        &AZACQ
         ADRI        1,X
         LAI         '0A
         STBY        &AZACQ
         ADRI        1,Y
         STY         IOCB1+2         < LONGUEUR NOUVELLE LIGNE.
         IF          ORDI-"T",XWOR%,,XWOR%
         ADRI        19,X
         STX         IOCB4+2
XWOR%:   VAL         0
         IF          ORDI-"S",XWOR%,,XWOR%
         ADRI        1,X
         STX         IOCB1+2
         ADRI        18,X
         STX         IOCB4+2
XWOR%:   VAL         0
         BSR         MACQ
         CPI         2
         JG          BERA1           < 1ER ELEMENT INCORRECT.
         CPZ         SYMBO1
         JE          NELIM
         CPI         -1
         JNE         ETIQET          < TRAITEMENT 'IF' EN COURS.
         CPZ         BASCUL
         JE          ETIQET
NELIM:   EQU         $
         LR          A,X
         BR          &ABRAN
DOLLAR:  EQU         $               < COMPTEUR D'ASSEMBLAGE.
         IC          ETAPH
         JMP         C11
DIESE:   EQU         $               < BASCULEMENT DES NVP D'ENTREE.
         CPZ         BASCUL
         JL          C4
         BSR         SORCLF
         LAD         IOCB1           < EDITION DE LA CARTE CONTENUE D
                                     < DANS ZACQ.
         SVC         0
C4:      EQU         $
         LX          BASCUL
C5:      EQU         $
         CMR         X,X
         STX         BASCUL
         STZ         INDO
         JMP         DEPART
ETIQET:  EQU         $               < TRAITEMENT 'IF'.
         PSR         A,X,Y
         LXI         -18             < METTRE DES "-"
         LAI         "-"
         STBY        &AZACQ
         JIX         $-1
         LY          IOCB4+2         < DECALER LA LIGNE
         LAI         18
         STA         IOCB4+2
         LAD         IOCB4
         SVC         0
         STY         IOCB4+2
         LXI         -18
         LAI         '20
         STBY        &AZACQ
         JIX         $-1
         LAD         IOCB4
         SVC         0               < EDITION DES CARTES RENCONTREES
                                     < DANS UNE SEQUENCE 'IF' , MAIS
                                     < A T T E N T I O N : LA CARTE
                                     < CONTENANT L'ETIQUETTE CHERCHEE
                                     < SERA EDITEE 2 FOIS ....
         BSR         PAGIN
         PLR         A,X,Y
         JAE         PADET
         CPI         -2
         JNE         DEPART
         LXI         3               < ETIQUETTE A VERIFIER.
C6:      EQU         $
         LA          &ASYMB
         CP          &ASYMB1
         JNE         DEPART          < ETIQUETTE RECHERCHEE NON TROUVEE.
         JDX         C6
         STZ         SYMBO1
PADIF:   EQU         $
         LXI         3               < MEMORISATION DERNIER SYMBOLE.
C7:      EQU         $
         LA          &ASYMB
         STA         &ASYMB2
         JDX         C7
         STZ         DEPLA2
         CPZ         INDO
         JNE         BERA3           < ETIQUETTE INTERDITE APRE DO.
         BSR         RETIQ
         CPZ         LIST2
         JG          JUSTIN          < SECOND PASSAGE.
         JAE         C10             < N'APPARTIENT PAS A TSYMB.
         TBT         10
         JC          FALSE           < SYMBOLE DEJA DEFINI EXTERNE.
         TBT         8
         JC          JUSTIN          < PAS ENCORE DEFINI.
         TBT         9
         JC          C9
         LAI         8               < SYMBOLE NON ABSOLU.
         BR          MERR
C9:      EQU         $
         DC          ETAPH
         JMP         JUSTIN
C10:     EQU         $
         BSR         INSET
JUSTIN:  EQU         $
         LA          NIVSYM          < SAUVEGARDE NIVEAU SYMBOLE.
         STA         NETIQ
C11:     EQU         $
         BSR         MACQ
         JANE        BERA1           < PAS DE MOT CLE DANS LA CARTE.
PADET:   EQU         $
         CPZ         INDICA
         JNE         BERA1           < PAS DE MOT CLE DANS LA CARTE.
         LXI         -LTABCO         < RECHERCHE CLE DANS TABCO.
         EORR        W,W             < W=0.
AVANT1:  EQU         $
         LBI         0
         LA          &ATABCO
         EOR         COND
         SLRD        15
         JAE         C12
         ADRI        1,X
         LA          &ATABCO
C12:     EQU         $
         EOR         COND+1
         ORR         B,A
         JAE         COTROU          < MOT CLE TROUVE.
         ADRI        1,W
         JIX         AVANT1
BERA1:   EQU         $               < PAS DE MOT CLE DANS LA CARTE.
         LAI         1
         BR          MERR
DIRECT:  EQU         $               < DIRECTIVES.
         ADRI        -118,A
         IF          ORDI-"S",XWOR%,,XWOR%
         ADRI        -16,A           < LE REPERTOIRE SOLAR 16.65
                                     < EST PLUS ETENDU QUE CELUI
                                     < DU PAUVRE T1600.
XWOR%:   VAL         0
         STA         VALDIR
         ADRI        -7,W
         CPZ         ETAPH
         JE          C14
         JG          C13
         ADRI        -1,A            < ETAPH=-1 : TEST SI A=18.
C13:     EQU         $
         ADRI        -17,A           < ETAPH=1 : TEST SI A=17.
         JANE        C20
C14:     EQU         $
         LA          VALDIR
         CPI         16
         JG          C15
         CPZ         NETIQ
         JE          C15
BERA3:   EQU         $               < ETIQUETTE INTERDITE SUR DIRECTIVE
         LAI         3
         BR          MERR
C15:     EQU         $
         ADRI        -23,A
         JAL         MOTCLE
         CPI         2
         JNE         C16
         BSR         PAGE            < DIRECTIVE 'PAGE'.
         BR          ADEP
C16:     EQU         $
         IC          INDASC          < DIRECTIVES 'ASCI' ET 'IDP'.
         BSR         MACQ
         CPI         4
         JE          MOTCLE
         JMP         BERA1           < CE N'EST PAS UNE CHAINE DE
                                     < CARACTERES.
COTROU:  EQU         $
         LR          W,A
         PSR         W               < SAUVEGARDE W(WORD+BYTE).
         CPZ         SYMBO1
         JE          C17
         IF          ORDI-"T",XWOR%,,XWOR%
         CPI         130             < TRAITEMENT 'IF' EN COURS ??
XWOR%:   VAL         0
         IF          ORDI-"S",XWOR%,,XWOR%
         CPI         146             < TRAITEMENT IF EN COURS.
XWOR%:   VAL         0
         JE          DIRECT          < DIRECTIVE 'EOT'.
         IF          ORDI-"T",XWOR%,,XWOR%
         CPI         131
XWOR%:   VAL         0
         IF          ORDI-"S",XWOR%,,XWOR%
         CPI         147
XWOR%:   VAL         0
         JE          DIRECT          < DIRECTIVE 'END'.
BRADEP:  EQU         $
         BR          ADEP
         IF          ORDI-"T",XWOR%,,XWOR%
C17:     EQU         $
         CPI         118
         JG          DIRECT
XWOR%:   VAL         0
         IF          ORDI-"S",XWOR%,,XWOR%
C17:     EQU         $
         CPI         174
         JNE         C18
         DC          VALDIR
         BR          ARETD           < DIRECTIVE 'FLOAT'.
C18:     EQU         $
         CPI         134
         JLE         C19
         CPI         160
         JL          DIRECT
         IC          INFL
C19:     EQU         $
XWOR%:   VAL         0
         CPZ         ETAPH           < INSTRUCTIONS T1600.
         JE          C21
C20:     EQU         $
         JG          BERA1           < $ DEVANT UN AUTRE MOT CLE
                                     < QUE 'EQU'.
FALSE:   EQU         $               < SYMBOLE INCORRECT.
         LAI         4
         BR          MERR
C21:     EQU         $
         IF          ORDI-"S",XWOR%,,XWOR%
         CPI         101
         JNE         C22
         IC          INACTD          < ACTD.
C22:     EQU         $
XWOR%:   VAL         0
         CPZ         SITUAT
         JL          C23
         LAI         13              < INSTRUCTIONS RENCONTREES HORS
         BR          MERR            < D'UNE SECTION 'PROG'.
C23:     EQU         $
         IF          ORDI-"T",XWOR%,,XWOR%
         ADRI        -111,A
         JALE        C24
         ADRI        -40,W
         JMP         CLASS2
C24:     EQU         $
         ADRI        15,A
XWOR%:   VAL         0
         IF          ORDI-"S",XWOR%,,XWOR%
         ADRI        -127,A
         CPI         33
         JL          CEPAF
         ADRI        -33,A           < CAS DES CODES FLOTTANTS.
         CPI         8
         JGE         C25
         SLLS        1               < CAS OU IL Y A OPERANDE.
         EORR        W,W             < W=0.
         JMP         CLASS2
C25:     EQU         $
         ADRI        -8,A            < CAS OU IL N'Y A PAS D'OPERANDE.
         SLLS        11
         LBI         96
         LR          B,W
         JMP         C27
CEPAF:   EQU         $
         JALE        C26
         ADRI        -56,W
         JMP         CLASS2
C26:     EQU         $
         ADRI        31,A
XWOR%:   VAL         0
         JAGE        CLASS4
         ADRI        16,A
         JAGE        CLASS3
         ADRI        9,A
         JAG         CLASS2
         ADRI        31,A
         JAGE        CLASS1
         ADRI        40,A            < 'LBY' A 'JALE'.
         JMP         CLASS2
CLASS1:  EQU         $               < 'RBT' A 'LRP'.
         ORI         'A0
         SLLS        6
         JMP         C27
CLASS3:  EQU         $               < 'LAI' A 'ARM'.
         ORI         '10
         JMP         CLASS2
CLASS4:  EQU         $               < 'ACQ' A 'ROMB'.
         SLLS        8
         ORI         '1E
CLASS2:  EQU         $               < 'JNC' A 'ADRI' , 'JGE' A 'JLE'.
         SCLS        8
C27:     EQU         $
         STA         BINARY
MOTCLE:  EQU         $               < RECHERCHE TYPE DANS TACAT.
         LXI         0
C28:     EQU         $
         LBY         &ATACAT
         SBR         A,W
         CPZR        W
         JL          C29             < TROUVE.
         ADRI        1,X
         JMP         C28
C29:     EQU         $
         LBY         &ATALON
         ANDI        '1F
         STA         NLIG            < NUMERO DE LIGNE DANS NLIG.
         LBY         &ATALON
         SLRS        5
         LR          A,X
         LA          &ATACLE
         STA         CLE
C30:     EQU         $
         STZ         NELT
C31:     EQU         $
         LX          NLIG
         LA          &ATALIG
         STA         ZTR
NEWELT:  EQU         $
         DBT
         RBT         0,X
         STA         ZTR
         LY          NSYMB
         LB          NACQ            < SAUVEGARDES.
         LA          CARLU           < DANS KSTORE.
         PSR         A,B,Y
         LBI         6
         CPR         B,X
         JNE         C32
         BR          AFINF           < FIN DE CARTE.
C32:     EQU         $
         CPZ         NELT
         JE          C33
         CPI         '2C             < TEST ','.
         JNE         NOCONF
C33:     EQU         $
         LBI         -1
         BR          &ATATYP
REGIS:   EQU         $
         ADRI        1,B
BASE:    EQU         $
         ADRI        1,B
INDEX:   EQU         $
         STB         INDREG
         BSR         MACQ
         LXI         8
C34:     EQU         $
         LBY         &ATABRG
         SLLS        8
         CP          SYMBOL
         JE          C35
         JDX         C34
         JMP         NOCONF          < CE N'EST PAS UN NOM DE REGISTRE.
C35:     EQU         $
         LR          X,A
         CPZ         INDREG
         JG          REGIS1
         JE          BASE1
         CPI         3               < INDEX ???
         JNE         NOCONF
         LBY         CLE
         ANDI        'F
C36:     EQU         $
         LR          A,X
C37:     EQU         $
         LA          BINARY
         SBT         0,X
C38:     EQU         $
         STA         BINARY
TESTF:   EQU         $               < POINT DE RETOUR.
         IC          NELT
         ADRI        -3,K
         LA          ZTR
         JMP         NEWELT
BASE1:   EQU         $               < BASE.
         ADRI        -4,A
         JALE        NOCONF
         CPI         4
         JE          NOCONF
         SCRS        2
C39:     EQU         $
         OR          BINARY
         JMP         C38
REGIS1:  EQU         $               < REGISTRE.
         LBY         BINARY
         CPI         '1A
         JE          INSPSR          < 'PSR'.
         CPI         '1B
         JE          INSPLR          < 'PLR'.
         IF          ORDI-"S",XWOR%,,XWOR%
         CPI         '1D
         JE          INSPSR          < LRM TRAITE COMME UN PSR.
XWOR%:   VAL         0
         LBY         CLE
         SLRS        4
         ADRI        -1,X
         XR          A,X             < A=REGISTRE , B=NBRE DE DECALGES.
         CPZ         NREG
         JG          C40
         SLLS        0,X
C40:     EQU         $
         IC          NREG
         JMP         C39
INSPSR:  EQU         $               < INSTRUCTION 'PSR'.
         ADRI        7,X
         JMP         C37
INSPLR:  EQU         $               < INSTRUCTION 'PLR'.
         LAI         16
         SBR         X,A
         JMP         C36
NOCONF:  EQU         $               < NON CONFORMITE.
         PLR         A,B,Y
         STA         CARLU
         STB         NACQ
         STY         NSYMB
         LA          ZTR
         TBT         13
         JC          EVENT           < CAS 'PSR'-'PLR','EXT'-'ENT'.
         LX          NELT
         JDX         C42             < AUCUNE AUTRE POSSIBILITE.
         TBT         15,X
         JNC         C42             < AUCUNE AUTRE POSSIBILITE.
         IC          NLIG
         JMP         C31
EVENT:   EQU         $
         CPZ         LIST2
         JE          C41
         CPZ         VALDIR
         JE          C41
         BR          ASORLI          < 'EXT'-'ENT' AU SECOND PASSAGE.
C41:     EQU         $
         CPZ         NELT
         JNE         C30
C42:     EQU         $
         LAI         1               < ERREUR AU 1ER ELEMENT
         BR          MERR
EXPA:    EQU         $               < EXPRESSION ABSOLUE.
         BSR         CALEX
         JANE        NOCONF
         LBI         -1              < MASQUE.
         LA          VALDIR
         CPI         16
         JE          DIRIF           < DIRECITIVE 'IF'.
         LA          CLE
         CPI         2
         JE          RANGT           < AUCUNE LIMITATION.
         SLRD        5
         ANDI        3
         LR          A,X
         LA          SOM
         SB          &ATBINF
         JAGE        C43
EREXPA:  EQU         $               < VALEUR HORS-LIMITES.
         LAI         7
         BR          MERR
C43:     EQU         $
         SLLD        2
         ANDI        3
         LR          A,X
         LA          &ATBSUP
         SB          SOM
         JAL         EREXPA
         LBI         'FF
         LA          NLIG
         CPI         7
         JNE         RANGT
         SBT         18              < OPERANDE IMMEDIAT 9 BITS.
RANGT:   EQU         $
         LA          SOM
         ANDR        B,A
C44:     EQU         $
         IF          ORDI-"S",XWOR%,,XWOR%
         CPZ         INACTD          < EST-CE UN ACTD ???
         JE          C39             < NON.
         CPI         7               < ACTD ?
         JG          EREXPA
         SLLS        5
XWOR%:   VAL         0
         JMP         C39
DIRIF:   EQU         $               < DIRECTIVE 'IF'.
         LAD         IOCB4
         SVC         0               < EDITION DE LA CARTE 'IF'.
         BSR         PAGIN
         CPZ         SOM
         JL          AVANTI
         JE          C45
         IC          SIGNIF
C45:     EQU         $
         IC          SIGNIF
AVANTI:  EQU         $               < SIGNIF=0(<0),1(=0),2(>0).
         LA          CARLU
         CPI         '2C             < TEST ','.
         JNE         C42             < ERREUR DE SYNTAXE.
         BSR         MACQ
         DC          SIGNIF
         JGE         AVANTI
         JANE        C47
         LXI         3               < SYMBO1=SYMBOLE A RECHERCHER.
C46:     EQU         $
         LB          &ASYMB
         STB         &ASYMB1
         JDX         C46
C47:     EQU         $
         BR          ADEP
EXPT:    EQU         $               < EXPRESSION TRANSLATBLE.
         BSR         CALEX
         LA          VALDIR
         ADRI        -22,A
         CPZ         SIGMA
         JAE         C48             < CAS 'WORD'.
         JL          NOCONF
C48:     EQU         $
         JE          NOCONF
         LA          CLE
         ANDI        7
         LR          A,X
         CPZ         NIV
         BR          &AIGET
END:     EQU         $               < DIRECTIVE 'END'.
         JNE         C50
         LA          COMDE
         TBT         12
         JC          TESTF           < SOM=ADRESSE DE LANCEMENT
C49:     EQU         $
         LAI         6               < SYMBOLE N'APPARTIENT PAS A LA
         BR          MERR            < SECTION 'PROG'.
USE:     EQU         $
         JE          C51
C50:     EQU         $
         LAI         5               < EXPRESSION NON DEFINIE.
         BR          MERR
C51:     EQU         $
         LA          COMDE
         TBT         12
         JC          C49             < SYMBOLE D'UNE SECTION 'PROG'.
         CPZ         SITUAT
         JL          C52
         LAI         13              < ON N'EST PAS DANS UNE
         BR          MERR            < SECTION 'PROG'.
C52:     EQU         $
         LA          NSEC
         JAE         C57             < 'OFF'.
         SLLS        1
         LR          A,W
         LXI         0
C53:     EQU         $
         BSR         RECSEC
         ADRI        -1,W
         CPZR        W
         JNE         C53
         LB          SOM             < EVALUATION DE LIMINF.
         ADRI        -128,B
         CPR         A,B
         JLE         C54
         LR          B,A
C54:     EQU         $
         STA         MOTINF
         BSR         RECSEC          < EVALUATION DE LIMSUP.
         LB          SOM
         LYI         128
         ADR         Y,B
         CPR         A,B
         JGE         C56
         LR          B,A
C56:     EQU         $
         STA         MOTSUP
C57:     EQU         $
         BR          ATESTF
REFMEM:  EQU         $               < REFERENCE MEMOIRE NON DEFINIE.
         JNE         C50
         LXI         3
C58:     EQU         $
         LA          NSEC
         CP          &SECBAS
         JNE         APREF
         LA          SOM
         CP          &LIMINF
         JL          APREF
         CP          &LIMSUP
         JL          C60
APREF:   EQU         $
         JDX         C58
C59:     EQU         $
         LAI         11              < ACCES IMPOSSIBLE.
         BR          MERR
C60:     EQU         $
         SB          &VALBAS
         ANDI        'FF
         SLLS        2               < GENERATION INDICATION DE BASE.
         LR          X,B
         SCRD        2
         JMP         C44
JUMP:    EQU         $               < SAUT CONDITIONNEL.
         JNE         PLUTAR
         LA          NSEC
         SB          SECOUR
         JANE        C59             < SYMBOLE N'APPARTIENT PAS
                                     < A SECOUR.
         LR          A,W             < W=/
         LA          SOM
         LY          PAS
         BSR         SPJUMP
         ANDI        'FF
         JMP         C44
PLUTAR:  EQU         $               < SYMBOLE DEFINI ULTERIEUREMENT.
         LA          SOM
         CPI         -128
         JL          EREXPA          < DEEPLACEMENT TROP IMPORTANT.
         CPI         127
         JG          EREXPA
         LA          &NIV
         ORI         '90
         STA         &NIV
         BSR         INSDEP          < INSERTION CODE OPERATION ET
                                     < DEPLACEMENT DANS TDEP.
         LAI         0
         JMP         C65
WORD:    EQU         $               < DIRECTIVE 'WORD'.
         LA          SITUAT
         JALE        C61
         LY          KSTORE+4
         STY         NSYMB
         BR          ATESTF
C61:     EQU         $
         JNE         CHAINA          < EXPRESSION NON DEFINIE.
         DC          SINGER          < INDICATEUR DE TRANSLATION.
         LA          SOM
         JAL         BERA14          < DEPASSEMENT 32K.
         LB          COMDE
         TBT         27
         JNC         C62
         LAI         10              < 'DSEC' INTERDIT.
         BR          MERR
C62:     EQU         $
         IC          TRANS           < A CHAGER EN TRANSLATANT.
         BR          AC44
CHAINA:  EQU         $               < CHAINAGE.
         CPZ         SOM
         JE          C63
         BSR         INSDEP          < INSERTYION DEPLACEMENT DANS TDEP.
C63:     EQU         $
         LA          &NIV
         TBT         12
         JC          DEJCHA
         ORI         '88             < DEBUT DE CHAINAGE.
         STA         &NIV
         LAI         -1
         RBT         0               < A='(FFF.
C64:     EQU         $
         IC          NIV
SOWORD:  EQU         $
         LB          PAS
         STB         &NIV
         DC          NIV
C65:     EQU         $
         IC          SINGER          < INDICATEUR DE CHAINGAE.
         BR          AC44
DEJCHA:  EQU         $               < CHAINAGE EN COURS.
         IC          NIV
         IC          TRANS
         LA          &NIV
         JMP         SOWORD
EQU:     EQU         $               < DIRECTIVE 'EQU'.
         JE          C100
         LAI         5               < SYMBOLE NON DEFINI.
         BR          MERR
C100:    EQU         $
         CPZ         SOM
         JGE         C69
BERA14:  EQU         $               < DEPASSEMENT 32K.
         LAI         14
         BR          MERR
<
<
<        2 E M E   B R A N C H E   D E   L ' O V E R L A Y   '   Z '
<
<
DEBOV1:  EQU         $
NOMOV1:  VAL         " Z"            < NOM DE LA BRANCHE.
ZBR:     EQU         $
XWOR%:   VAL         ZBR-ZERO*2
XWOR%A:  EQU         ZERO+XWOR%
         ASCI        " Z    "
         BYTE        '04;'D0
<
<        V A L I D A T I O N   I M P L A N T A T I O N :
<
X12:     EQU         ZERO+PILE-LTNI-LTNI
X10:     VAL         X12-ZBR
         IF          X10,,XWOR%,XWOR%
         IF          ATTENTION : OVERLAY TROP GROS !!!
XWOR%:   VAL         0
ENT:     EQU         $               < DIRECTIVE 'ENT'.
         LAI         13              < INTERDIT SOUS GE
         BR          MERR
EXT:     EQU         $               < DIRECTIVE 'EXT'.
         LAI         13              < INTERDIT SOUS GE
         BR          MERR
BERA6:   EQU         $               < SYMBOLE DEJA DEFINI.
         LAI         6
         BR          MERR
C69:     EQU         $
         BR          ATESTF
NOMSEC:  EQU         $               < NOM DE SECTION.
         BSR         MACQ
         LB          CLE
         TBT         24
         JC          DIRSEC          < DIRECTIVE DE SECTIONNEMEMT.
         JANE        C74
         BSR         RETIQ           < AUTRES DIRECTIVES.
         JAGE        BERA6           < NOM N'APPARTIENT PAS A TSYMB.
         SLRS        8
         ANDI        '7F
         BR          AC44
DIRSEC:  EQU         $
         CPZ         LIST2
         IF          ORDI-"T",XWOR%,,XWOR%
         JE          C70
         IC          SECOUR          < SECOND PASSAGE.
XWOR%:   VAL         0
         IF          ORDI-"S",XWOR%,,XWOR%
         JE          C70
         IC          SECMAX          < SECOND PASSAGE.
         LA          SECMAX
         STA         SECOUR
XWOR%:   VAL         0
         JMP         C73
C70:     EQU         $
         JANE        C71
         BSR         RETIQ
         JAE         C71
         LAI         8               < APPARTIENT DEJA A TSYMB.
         BR          MERR
C71:     EQU         $
         CPZ         SECOUR
         JE          GENAD           < PREMIERE SECTION.
         LAI         0
         SBT         0               < ADRESSE FIN DE SECTION PRECEDENTE.
         LX          NSYMB
         STA         &ATSYMB         < DANS TSYMB.
         ADRI        1,X
         LA          PAS
         STA         &ATSYMB
         ADRI        1,X
         STX         NSYMB
GENAD:   EQU         $
         BSR         INSET
         IF          ORDI-"T",XWOR%,,XWOR%
         IC          SECOUR
         LA          SECOUR
XWOR%:   VAL         0
         IF          ORDI-"S",XWOR%,,XWOR%
         IC          SECMAX
         LA          SECMAX
         STA         SECOUR
XWOR%:   VAL         0
         CPI         128
         JL          C72
         LAI         9               < NOMBRE DE SECTIONS>127.
         BR          MERR
C72:     EQU         $
         ORI         '80
         SLLS        8
         OR          &NIVSYM
         STA         &NIVSYM
         LY          NSYMB
         STY         KSTORE+4
         BSR         SPTAS           < MEMORISATION NOM DANS BUF.
C73:     EQU         $
         CPZ         LG
         JE          C74             < PAS DE NOM DE SECTION.
         BR          ATESTF
FINFRA:  EQU         $
         CPI         '2C             < TEST ','.
         JNE         C75
C74:     EQU         $
         BR          ANOCON
C75:     EQU         $
         BSR         MACQ
         CPI         1
         JNE         C74
         CPZ         TRANS
         JGE         C76
         LA          BUF
         LB          BUF+1
         PSR         A,B             < SAUVEGARDE DE BUF,BUF+1.
C76:     EQU         $
         LA          VALDIR
NPVIRG:  EQU         $               < INSTRUCTIONS.
         JAE         TRAREG
         CPI         19
         JGE         C78
         LBI         0
         LYI         0
C77:     EQU         $
         LR          A,X             < DIRECTIVES DE SECTIONNEMENT.
         LA          BINARY
         BR          &ATABDR         < 'EQU' ET 'VAL'.
C78:     EQU         $
         JG          TRAREG
         LA          BINARY          < DIRECTIVE 'DZS'.
         JAGE        C79
         LAI         7               < DEPLACEMENT NEGATIF.
         BR          MERR
C79:     EQU         $
         AD          PAS
         JAG         TRAREG
         LAI         12              < DEPASSEMENT 32K.
         BR          MERR
TRAREG:  EQU         $
         LA          NREG
         CPI         1
         JNE         RETDIR
         LA          CLE             < EXCLUSION 'ADRI'.
         JAL         RETDIR
         LA          BINARY          < DUPLICATION RS DANS RD.
         SLRS        3
         ANDI        7
         OR          BINARY
         STA         BINARY
RETDIR:  EQU         $
         CPZ         NETIQ
         JE          TRAREF          < PAS D'ETIQUETTE.
         LA          SECOUR          < TRAITEMENT ETIQUETTE.
         JAG         C80
         LAI         3               < ETIQUETTE AVANT SECTION.
         BR          MERR
C80:     EQU         $
         SLLS        8
         CPZ         SITUAT
         JLE         C81
         SBT         11              < SECTION 'DSEC'.
C81:     EQU         $
         JGE         C82
         SBT         12              < SECTION 'PROG'.
C82:     EQU         $
         LY          PAS
         STY         SOM             < COMDE=MOT DE COMMANDE ,
                                     < SOM=VALEUR.
C93:     EQU         $
         STA         COMDE
RETEQ:   EQU         $
         CPZ         LIST2
         JG          TRAREF          < SECOND PASSAGE.
         LA          &NETIQ
         ANDI        'F8
         JAE         NEWSYM          < NOUVEAU SYMBOLE.
         CPZ         SITUAT
         JLE         C83
         LAI         10              < SYMBOLE UTILISE AILLEURS.
         BR          MERR
C83:     EQU         $
         LYI         -1
         LR          Y,W
RETW:    EQU         $
         LXI         0
         LY          NDEP
C84:     EQU         $
         CPR         X,Y
         JE          C86
         CPZ         &ATDEP          < MEMORISATION SIGNE.
         LA          &ATDEP
         RBT         0
         EOR         NETIQ
         JANE        FINDEP
         LA          &ATDEP1
         JG          DEPWOR          < BIT0=0.
         AD          SOM
         LY          &ATDEP2
         BSR         SPJUMP
         ANDI        'FF             < ELIMINATION OCTET GUACHE.
C85:     EQU         $
         CPZR        W
         JE          PERFO
FINDEP:  EQU         $
         ADRI        -3,X
         JMP         RETW+1
C86:     EQU         $
         CPZR        W               < X=NDEP.
         JE          NEWSYM
         ADRI        1,W             < AUCUNE ERREUR DETECTEE.
         LA          &NETIQ
         TBT         12
         JNC         RETW
         IC          NETIQ
         LAI         'AA
         LB          &NETIQ
         BSR         ASPSO1
         LAI         '22
         LB          SOM
         BSR         ASPSO1
         DC          NETIQ
         JMP         RETW
DEPWOR:  EQU         $               < DEPLACEMENT SUR 'WORD'.
         AD          SOM
         JAGE        C87
         LAI         14
         BR          MERR
C87:     EQU         $
         LA          &ATDEP1
         JMP         C85
PERFO:   EQU         $               < SORTIE DEPLACEMENT.
         LR          A,Y
         LAI         '2E
         LB          &ATDEP2
         LR          X,L
         BSR         ASPSO1
         LAI         '22
         LR          Y,B
         BSR         ASPSO1
         LR          L,X
         LR          X,B
         ADRI        -3,X
TASDEP:  EQU         $               < TASSEMENT DE TDEP.
         LY          NDEP
         CPR         Y,X
         JNE         C88
         LR          B,X
         ADRI        3,Y
         STY         NDEP
         JMP         C84
C88:     EQU         $
         LA          &ATDEP
         ADRI        3,X
         STA         &ATDEP
         ADRI        -4,X
         JMP         TASDEP
NEWSYM:  EQU         $               < NOUVEAU SYMBOLE.
         LA          &NETIQ
         ANDI        7
         OR          COMDE
         STA         &NETIQ
         IC          NETIQ
         LA          SOM
         STA         &NETIQ
TRAREF:  EQU         $               < TRAITEMENT REFERENCE.
         LA          VALDIR
         JAE         INSTR
         CPI         18
         JG          C77
         LB          SOM             < SORTIE LISTING ('EQU' ET 'VAL').
         BSR         CONVER          < B=VALEUR CONVERSION.
         STY         &ZACQ10         < POIDS FORTS VALEUR
         STA         &ZACQ11         < POIDS FAIBLES VALEUR
         BR          ASORLI
WORD1:   EQU         $               < DIRECTIVE 'WORD'.
INSTR:   EQU         $               < INSTRUCTION.
         LBI         'A6
         LAI         1
         CPZ         TRANS
         JNE         INCPAS
C90:     EQU         $
         LBI         '24             < CHARGER SANS TRANSLATER.
INCPAS:  EQU         $
         AD          PAS
         STA         PAS
         CPZ         TRANS
         JL          TREXT           < DEBUT CHAINAGE SUR 'EXT'.
         LR          B,A
SREXT:   EQU         $
         LB          BINARY
         IF          ORDI-"T",XWOR%,,XWOR%
         BSR         SPLIST          < PERFO MOT+SORTIE LISTING.
         CPZ         PVIR
XWOR%:   VAL         0
         IF          ORDI-"S",XWOR%,,XWOR%
         CPZ         INFL
         JE          COMFL
         PSR         B
         LB          M3800           < POSITIONNEMENT DU CODE FLOTTANT.
COMFL:   EQU         $
         BSR         SPLIST          < SORTIE DU BINAIRE DU 1ER MOT
                                     < ET EDITION LISTING ...
         CPZ         INFL
         JE          COND3
         IC          PAS
         IC          DEBRES+2
         LAI         '24
         PLR         B
         BSR         SPLIST
COND3:   EQU         $
         CPZ         PVIR
XWOR%:   VAL         0
         JE          NBRAN
         STZ         TRANS           < 'WORD' + POINT VIRGULE.
         STZ         MOBYTE
         STZ         SINGER
RBYTE:   EQU         $
         BSR         SPSAV
         STZ         BINARY
         STZ         PVIR
         STZ         NETIQ
         IC          DEPLA2
         ADRI        -3,K
         PLR         W               < RESTITUTION RANG DU MOT CLE.
         BR          ACOT
ELIMIN:  EQU         $               < ELIMINATION LG SYMBOLE EQUIVALENT.
         CPZ         NETIQ
         JNE         C92
C91:     EQU         $
         LAI         3               < ETIQUETTE MANQUANTE.
         BR          MERR
C92:     EQU         $
         IF          ORDI-"S",XWOR%,,XWOR%
         CPZ         SECOUR
         JE          C91             < ERREUR : AUCUNE SECTION
                                     < N'EST ENCORE DEFINIE !!
XWOR%:   VAL         0
         LA          COMDE
         SLRS        3               < AINSI QUE LE BIT13 ('ENT').
         SLLS        3
         IF          ORDI-"T",XWOR%,,XWOR%
         JMP         C93
XWOR%:   VAL         0
         IF          ORDI-"S",XWOR%,,XWOR%
         BR          RETEQ1
XWOR%:   VAL         0
TREXT:   EQU         $               < SORTIE SYMBOLE EXTERNE.
         PLR         A,B
         STA         BUF
         STB         BUF+1
         LAI         '21
         BSR         ASPSO2
         LAI         '22
         JMP         SREXT
EQU1:    EQU         $               < DIRECTIVE 'EQU'.
         CPZ         ETAPH
         JE          ELIMIN
         LBY         COMDE           < POSITIONNEMENT DE $.
         STA         SECOUR
         LA          COMDE
         TBT         11
         JC          C94
         TBT         12
         JNC         C95
         ADRI        -2,B            < 'PROG'.
C94:     EQU         $
         ADRI        1,B             < 'DSEC'.
C95:     EQU         $
         STB         SITUAT
         LB          SOM
         STB         PAS
         STB         DEBRES+2
         CPZ         SITUAT
         JG          C96             < 'DSEC'.
         LAI         'A0
         BSR         ASPSO1
C96:     EQU         $
         BSR         SPLIS1          < SORTIE LISTING.
NBRAN:   EQU         $
         BR          ADEP
BYTE:    EQU         $               < DIRECTIVE 'BYTE'.
         ANDI        'FF
         CPZ         INBYTE
         JE          BYTE1           < BYTE DE GAUCHE.
         OR          MOBYTE          < BYTE DE DROITE.
         STZ         INBYTE
C97:     EQU         $
         STA         BINARY
         JMP         INSTR
BYTE1:   EQU         $
         SLLS        8
         STA         MOBYTE
         IC          INBYTE
         CPZ         PVIR
         JE          C97
         JMP         RBYTE           < 'BYTE' + POINT-VIRGULE.
DZS:     EQU         $               < DIRECTIVE 'DZS'.
         JAE         C96
         LAI         'AC
         LB          BINARY
         CPZ         SITUAT
         JG          C98             < ON EST DANS UN 'DSEC'.
         BSR         ASPSO1          < REPEAT LOAD.
C98:     EQU         $
         LA          BINARY
         STZ         BINARY
         JMP         C90
VAL:     EQU         $               < DIRECTIVE 'VAL'.
         CPZ         NETIQ
         JE          C91             < ETIQUETTE MANQUANTE.
         LA          &NETIQ
         ANDI        'BC
         JAE         C99
         LAI         4               < SYMBOLE DEJA UTILISE.
         BR          MERR
C99:     EQU         $
         LAI         '40
         STA         COMDE
         JMP         NEWSYM
COMMON:  EQU         $               < DIRECTIVE 'COMMON'.
         ADRI        -1,Y
LOCAL:   EQU         $               < DIRECTIVE 'LOCAL'.
         ADRI        2,Y
TABLE:   EQU         $               < DIRECTIVE 'TABLE'.
         LR          B,W
         CPI         3
         JG          NONVER          < 'TABLE' OU 'DSEC'.
         AD          ETASS           < VERIFICATION DE L'ENCHAINEMENT
                                     < DES SECTIONS.
         LR          A,X
         LA          MOTEST
         TBT         0,X
         JNC         C101
         LAI         16              < ENCHAINEMENT INCORRECT.
         BR          MERR
C101:    EQU         $
         LAI         3
         MP          VALDIR
         STB         ETASS
NONVER:  EQU         $
         LR          W,B
         LX          LIMSU2
         CPZR        X
         JE          NREGUL
         LA          PAS             < SORTIE 'COMMON' OU 'LOCAL'.
         CP          &LIMSUP
         JGE         C102
         STA         &LIMSUP
         STA         &LIMSU1
C102:    EQU         $
         STZ         LIMSU2
NREGUL:  EQU         $
         CPZ         SITUAT
         JL          FINPRO
         JE          C103
         LA          SAUVPA          < SORTIE 'DSEC'.
         STA         PAS
REPRO:   EQU         $
         STZ         SITUAT
C103:    EQU         $
         CPZR        Y
         JE          YNUL
         LR          Y,X             < 'COMMON' OU 'LOCAL'.
         LYI         128
         LA          PAS             < POSITIONNEMT IMPLICITE C ET L.
         STA         &LIMINF
         STA         &LIMIN1
         ADR         Y,A
         STA         &VALBAS
         STA         &VALBA1
         ADR         Y,A
         STA         &LIMSUP
         STA         &LIMSU1
         LA          SECOUR
         STA         &SECBAS
         STA         &SECBA1
         STX         LIMSU2
YNUL:    EQU         $
         CPZR        B
         LY          PAS
         JE          TRACOM
         STB         SITUAT          < 'PROG' OU 'DSEC'.
         JL          TRACOM
         STZ         PAS
         STY         SAUVPA          < 'DSEC'.
         LYI         0
         JMP         C104
TRACOM:  EQU         $               < SORTIE NOM DE SECTION.
         LAI         '36
         BSR         ASPSO2
C104:    EQU         $
         STY         DEBSEC
         STY         FINSEC
         IC          INDZS
         CPZ         LIST2
         JG          C105            < SECOND PASSAGE.
         IC          NIVSYM
         STY         &NIVSYM
C105:    EQU         $
         BR          ASORLI          < SORTIE LISTING.
PROG:    EQU         $               < DIRECTIVE 'PROG'.
         ADRI        -2,B
DSEC:    EQU         $               < DIRECTIVE 'DSEC'.
         ADRI        1,B
         JMP         TABLE
FINPRO:  EQU         $               < FIN DE SECTION 'PROG'.
         LXI         0
         LR          X,W
C106:    EQU         $
         LA          &ATSYMB         < RECHERCHE DES JUMPS NON
                                     < SATISFAITS.
         ANDI        '90
         CPI         '90
         JNE         MORE
         BSR         SORCLF
         LAD         &ATSYMB         < 'JUMP' NON SATISFAIT.
         BSR         SORSYM          < EDITION SYMBOLE.
         ADRI        1,W
MORE:    EQU         $               < APPEL SYMBOLE SUIVANT.
         BSR         SYMUL
         JNE         C106
         CPZR        W
         JNE         C107
         LA          FINSEC
         CP          PAS
         JLE         REPRO
C107:    EQU         $
         LAI         15              < LIMITE SECTION NON ATTEINTE.
         BR          MERR
USE1:    EQU         $               < DIRECTIVE 'USE'.
         SLRS        14
         LR          A,X
         CPZ         INBRE
         JNE         NIMPL           < POSITIONNEMENT EXPLICITE.
         CPI         3               < RETOUR POSITIONNEMENT IMPLICITE.
         JNE         C108
         LAI         1               < BASE W.
         BR          MERR
C108:    EQU         $
         LY          &SECBA1
         STY         &SECBAS
         LA          &LIMIN1
         LB          &LIMSU1
         LY          &VALBA1
RUSE:    EQU         $
         STA         &LIMINF
         STB         &LIMSUP
         STY         &VALBAS
         BR          ASORLI          < SORTIE LISTING.
EXT1:    EQU         $-1
ENT1:    EQU         $-1
NIMPL:   EQU         $
         LY          NSEC
         STY         &SECBAS
         LA          MOTINF
         LB          MOTSUP
         LY          SOM
         JMP         RUSE
<        NOTA :
<                      SOUS ' S' , LES DIRECTIVES PSTH
<                    ET PSTS NE SONT PAS RECONNUES !!!
PSTH:    EQU         $
PSTS:    EQU         $
         LAI         13
         BR          MERR
DO:      EQU         $               < DIRECTIVE 'DO'.
         STA         INDO
         LAD         IOCB4
         SVC         0               < EDITION DE LA CARTE 'DO'.
         BSR         PAGIN
         BSR         ASIMUL          < SIMULATION 'LECTURE CARTE'
                                     < DANS L'ITEM1.
         BR          ADEP
ASCI:    EQU         $               < DIRECTIVE 'ASCI'.
         LBI         '24
C111:    EQU         $
         IC          NACQ1
         LX          NACQ1
         LBY         &AZACQ
         CPI         '22
         JE          FASCI           < FIN DE CHAINE.
         SLLS        8
         SCLD        8
         JAE         C111
SASCI:   EQU         $
         IC          PAS
         BSR         SPLIST          < PERFO MOT + SORTIE LISTING.
         IC          DEBRES+2        < INCREMENTATION ADRESSE.
         CPZ         INDASC
         JNE         ASCI
         BR          ADEP
FASCI:   EQU         $
         STZ         INDASC
         LAI         0
         SCLD        8
         JANE        SASCI           < ENCORE UN CARACTERE.
         BR          ADEP
IDP:     EQU         $               < DIRECTIVE 'IDP'.
         LAI         'B4
         LB          RCLF
         SLLD        8
         STA         BUF
         STB         BUF+1
         BSR         PSORTQ          < SORTIE RC-LF DANS QUADRUPLET.
IDP1:    EQU         $
         LXI         -3
         STZ         BUF             < NETTOYAGE DE BUF.
         STZ         BUF+1
C112:    EQU         $
         LR          X,Y
         IC          NACQ1
         LX          NACQ1
         LBY         &AZACQ
         CPI         '22
         JE          FIDP            < FIN DE CHAINE.
         LR          Y,X
         STBY        &ABUF
         JIX         C112
SIDP:    EQU         $
         LAI         'B4
         STBY        BUF
         BSR         PSORTQ          < SORTIE QUADRUPLET.
         CPZ         INDASC
         JNE         IDP1
         BR          ASORLI          < SORTIE LISTING.
FIDP:    EQU         $
         STZ         INDASC
         LAI         -3
         CPR         A,X
         JNE         SIDP
SORLIS:  EQU         $               < SORTIE LISTING (ZACQ)
         BSR         APAGEN
         BR          ADEP
END1:    EQU         $               < DIRECTIVE 'END'.
         EORR        L,L
         LAI         4
         STA         LG              < LONGUEUR BIDON.
         STZ         SYMBO1          < ANNULATION TRAITEMENT 'IF'.
         BSR         RETIQ
         CPZR        L
         JE          C113
         LAI         17              < ASSEMBLAGE INCORRECT.
         BR          MERR
C113:    EQU         $
         CPZ         SITUAT
         JGE         C114            < LA SECTION EN COURS N'EST PAS
                                     < UNE SECTION 'PROG'.
         LA          FINSEC
         CP          PAS
         JG          C107            < LIMITE DE SECTION NON ATTEINTE.
C114:    EQU         $
         DC          IOCB4+2
         LAD         IOCB4           < SORTIE LISTING.
         SVC         0
         BSR         PAGIN
         CPZ         LIST2
         JG          FINASS          < SECOND PASSAGE.
         LB          SOM
         CPZR        B
         JNE         C115
         SBT         16              < B='8000
C115:    EQU         $
         LAI         '28
         BSR         ASPSO1          < SORTIE DE L'ADRESSE DE LANCEMENT.
         LAI         '30
         LB          CHECK
         BSR         ASPSO1          < SORTIE CHECKSUM.
         IC          INDEND
         STZ         LIST2
         STZ         CHECK
         PAGE
<
<
<        F I N   D ' A S S E M B L A G E  :
<
<
FINASS:  EQU         $
         BSR         SORCLF
         LAD         IOCB1           < EDITION CARTE CONTENUE DANS ZACQ.
         SVC         0
<
< PREPARATION DU CHARGEMENT DE L'OVERLAY :
<
         LBI         "L"             < B=' L'
         SBT         18
RTERGE:  EQU         $
         LAI         BRANCH-ZERO*2
         STA         DEMSGN+1        < DEMSGN EST POSITIONNE SUR
                                     < BRANCH , EN VUE DU CHARGE-
                                     < MENT DE ' L'.
         LAI         BRANCH-ZERO
         LR          A,W             < W=@BRANCH.
         STB         0,W             < ON MET EN TETE DE BRANCHE LE
                                     < NOM DE CELLE QUE L'ON DOIT
                                     < CHARGER (C'EST-A-DIRE LE LOADER).
         LA          APILE
         LR          A,K             < ON RE-INITIALISE K AVEC UNE
                                     < PILE DONT L'EMPLACEMENT
                                     < N'EST PAS PERTURBE PAR LE
                                     < CHARGEMENT DES OVERLAYS.
                                     < (CELLE DU SYSTEM E 'GE').
<
< TENTATIVE DE CHARGEMENT DU LOADER :
<
         LAD         DEMSGN
         BSR         AOVL            < TENTATIVE DE CHARGEMENT , AVEC :
                                     < A=@DEMSGN & W=@BRANCH.
         LAD         CCI
         SVC         0               < EN CAS D'ERREUR DE CHARGEMENT ,
                                     < ON FAIT UN RETOUR DEFINITIF
                                     < AU CCI.
         JMP         $-1
EOT:     EQU         $               < DIRECTIVE 'EOT'.
         LAI         13              < INTERDIT EN OVERLAY
         BR          MERR
NDS:     EQU         $               < DIRECTIVE 'NDS'.
         BSR         SORCLF
         LXI         0
C117:    EQU         $
         LA          &ATSYMB
         ANDI        'A0
         CPI         '80
         JNE         C118            < ELIMINATION EXT.
         LAD         &ATSYMB         < A=ADRESSE SYMBOLE.
         BSR         SORSYM
         BSR         SORCLF
C118:    EQU         $
         BSR         SYMUL
         JNE         C117
         BR          ADEP
EST:     EQU         $               < DIRECTIVE 'EST'.
         LB          IOCB4
         STB         IOCB3
         JAE         TCOMP           < TABLE AU COMPLET.
         BSR         SORSEC
C119:    EQU         $
         BR          ADEP
TCOMP:   EQU         $               < BINARY=NUMERO DE SECTION.
         STA         BINARY
         BSR         SORSEC
         LA          BINARY
         CP          SECOUR
         JE          C119            < TERMINE.
         ADRI        1,A
         JMP         TCOMP
DST:     EQU         $               < DIRECTIVE 'DST'.
         LAI         13              < DST INTERDIT SOUS GE
         BR          MERR
         PAGE
<
<
<        S I M U L A T I O N   L E C T U R E   C A R T E S  :
<
<
<        FONCTION :
<                      CETTE ROUTINE RECUPERE A PARTIR
<                    DE L'ITEM1 TRANSLATE DE 4K ,
<                    LES IMAGES DES CARTES A ASSEMBLER ;
<                    LE SEPARATEUR DE CARTES UTILISE EST
<                    LE CARACTERE '#'.
<
<
SIMUL:   EQU         $
         LAI         BRANCH-ZERO
         LR          A,W             < W=@BRANCH !!!!!!
<
< NETTOYAGE DU BUFFER D'ENTREE DES CARTES :
<
         LAI         '20             < A='SPACE'.
         LXI         79              < POUR REMETTRE A 'SPACE' 80
                                     < CARACTERES.
Z10:     EQU         $
         STBY        &AZACQ          < REMISE A 'SPACE' DU BUFFER.
         JDX         Z10             < CARACTERE SUIVANT.
         STBY        &AZACQ          < REMISE A 'SPACE' DU CARACTERE 0.
<
< SIMULATION DE LA LECTURE D'1NE CARTE
< SOURCE A PARTIR DE L'ITEM1 TRANSLATE :
<
         LX          IAI1            < X=INDEX COURANT DE L'ITEM1.
         LYI         0               < COMPTEUR DES CARACTERES
                                     < D'UNE IMAGE DE CARTE SOURCE.
Z11:     EQU         $
         LR          X,A             < VALIDATION DE L'INDEX ITEM1.
         CP          6,W             < LE MOT6 DE LA BRANCHE CONTIENT
                                     < LE NBRE DE CARACTERES D'1NE
                                     < PAGE DE VISU.
         JGE         Z21             < ERREUR , ON EST HORS-ITEM1 !!!
                                     < DE L'ITEM1.
         LR          Y,A             < POUR VALIDATION DU COMPTE.
         CPI         80              < ON NE DOIT PAS DEPASSER
                                     < CARACTERES .....
         JGE         Z21             < ERREUR : CARTE TROP LONGUE !!!!
         LBY         &AI1            < SINON RECUPERATION D'UN
                                     < CARACTERE DE L'ITEM1.
         ADRI        1,X             < PROGRESSION INDEX ITEM1.
         CPI         "#"             < EST-CE UN FIN DE LIGNE (#) ????
         JE          Z12             < OUI , LE CARACTERE '#' INDIQUE
                                     < LA FIN DE L'IMAGE D'UNE CARTE ....
         XR          X,Y             < X=INDEX DU BUFFER CARTE.
         STBY        &AZACQ          < SINON , LE CARACTERE RECUPERE
                                     < EST MIS DANS LE BUFFER D'ENTREE.
         XR          X,Y
         ADRI        1,Y             < COMPTAGE DES CARACTERES.
         JMP         Z11             < AU SUIVANT ...
Z12:     EQU         $
         STX         IAI1            < SAVE LE NOUVEL INDEX COURANT
                                     < DE L'ITEM1.
         RSR
<
< TRAITEMENT DES ERREURS :
<
Z21:     EQU         $
         ADRI        -1,K            < ANNULATION DES EFFETS DU BSR
                                     < D'APPEL DE ASIMUL.
         LAI         0               < ERREUR 0 D'ASSEMBLAGE.
         BR          MERR
         PAGE
<
<
<        S O U S - P R O G R A M M E S  :
<
<
<
<
<        C A L C U L   D ' U N E   E X P R E S S I O N  :
<
<
PCALEX:  EQU         $               < CALCUL D'EXPRESSION.
         LXI         LCALEX
         STZ         &INCALE
         JDX         $-1
C123:    EQU         $
         BSR         MACQ
         JAL         ECALEX
         STZ         INDICA
         JAE         TYPLET
         CPI         1
         JE          TYPFIN
         CPI         2
         JE          TYPCOM
         LY          VALEUR          < TERME ABSOLU.
C124:    EQU         $
         IC          INBRE
TYPABS:  EQU         $
         LA          SOM
         CPZ         SIGNE
         JE          MULTIP          < MULTIPLICATION OU DIVISION.
         JG          C125
         NGR         Y,Y
C125:    EQU         $
         ADR         Y,A
C126:    EQU         $
         STA         SOM
         JV          ECALEX          < OVERFLOW OU DIVISION IMPOSSIBLE.
SUIMUL:  EQU         $
         LA          CARLU
         CPI         '20
         JE          C134            < 'ESPACE'.
         CPI         '2C
         JE          C134            < 'VIRGULE'.
         IF          ORDI-"S",XWOR%,,XWOR%
         IC          RANG            < MISE A JOUR RANG DE L'ELEMENT.
XWOR%:   VAL         0
         JMP         C123
MULTIP:  EQU         $
         CPZ         SIGMA
         JNE         ECALEX          < MULTIPLICANDE OU DIVIDENDE
                                     < NON ABSOLU.
         CPZ         INDICA
         JNE         ECALEX          < MULTIPLICATEUR OU DIVISEUR
                                     < NON ABSOLU.
         STY         VALEUR
         CPZ         SIGN1
         JG          DIVIS           < DIVISION.
         MP          VALEUR
         JAE         C127
         CPI         -1
         JNE         ECALEX          < RESULTAT NON SUR 16 BITS.
C127:    EQU         $
         STB         SOM
         JMP         SUIMUL
DIVIS:   EQU         $
         SARD        16              < B=POIDS FAIBLES.
         DV          VALEUR
         JMP         C126
TYPLET:  EQU         $               < SUITE DE LETTRES.
         BSR         RETIQ
         JAL         ECALEX          < NOM DE SECTION.
         JAE         C132            < LE SYMBOLE N'APPARTIENT PAS
                                     < A TSYMB.
         LY          &ATSYMB         < MOT VALEUR.
         ANDI        'FFFC
         JAE         C138            < ETIQUETTE DE LA PHRASE EN COURS
         TBT         8
         JC          NONDEF          < NON DEFINI.
         TBT         9
         JC          C124            < SYMBOLE ABSOLU.
         CPI         4
         JNE         C128
         LX          VALDIR          < 'OFF'.
         ADRI        -8,X
         CPZR        X
         JNE         ECALEX          < NON UTILISE AVEC 'USE'.
C128:    EQU         $
         SLRD        8
         XR          A,B             < B=NUMERO DE SECTION.
COMAS:   EQU         $
         CPZ         RANG
         JNE         PAPREM
         TBT         3               < 1ER ELEMENT.
         JNC         C129
         DC          INDSEC          < SYMBOLE APPARTIENT A 'DSEC'.
C129:    EQU         $
         STB         NSEC            < NSEC=NUMERO DE SECTION.
PRESER:  EQU         $
         SCRD        8
         STA         COMDE           < COMDE=MOT DE COMMANDE.
         LA          RANG            < SAUVEGARDE RANG DE L'ELEMENT.
         STA         RANG1
         CPZ         SIGNE
REPAS:   EQU         $
         JL          ECALEX
C130:    EQU         $
         LA          SIGNE
         AD          SIGMA
         STA         SIGMA
         IC          INDICA
         IF          ORDI-"S",XWOR%,,XWOR%
         IC          RANG
XWOR%:   VAL         0
         JMP         C124
PAPREM:  EQU         $               < AUTRES ELEMENTS.
         TBT         3
         JC          C131            < APPARTIENT A 'DSEC'.
         CPZ         INDSEC          < MELANGES INTERDIT SI NEGATIF.
         JMP         REPAS
C131:    EQU         $
         LA          NSEC
         CPR         A,B
         JNE         ECALEX          < MELANGES INTERDIT SI NEGATIF.
         JMP         C130
C132:    EQU         $
         BSR         INSET
NONDEF:  EQU         $               < NON DEFINI.
         LA          NIVSYM
         LB          &NIVSYM
         CP          NETIQ
         JE          TYPCOM          < ETIQUETTE DE LA PHRASE EN COURS.
         STA         NIV             < SAUVEGARDES.
         STB         MOT1
         STY         MOT2
         CPZ         RANG
         JNE         ECALEX          < CE N'EST PAS LE 1ER ELEMENT.
         TBT         26
         JNC         C133
         IC          INDSEC          < REFERENCE EXTERNE.
         BSR         SPTAS           < MEMORISATION SYMBOLE DANS BUF.
C133:    EQU         $
         XR          A,B
         LYI         0
         JMP         C129
TYPFIN:  EQU         $               < FIN DE PHRASE.
         DC          NACQ
C134:    EQU         $
         LA          SIGMA
         SLRS        1
         JANE        ECALEX          < SIGMA DIFFERENT DE 0 ET 1.
         JC          C137
         CPZ         NIV             < SIGMA=0
         JNE         ECALEX
C135:    EQU         $
         LA          SIGMA
C136:    EQU         $
         RSR
ECALEX:  EQU         $               < EXPRESSION INCORRECTE.
         LAI         2
         BR          MERR
C137:    EQU         $
         CPZ         RANG1
         JNE         ECALEX          < ELEMENT TRANSLATABLE NON EN
                                     < TETE DE L'EXPRESSION.
         CPZ         INDSEC          < SIGMA=1.
         JLE         C135
         LAI         -1
         STA         SIGMA
         JMP         C136
TYPCOM:  LAI         0               < COMPTEZUR D'ASSEMBLAGE.
C138:    EQU         $
         CPZ         SITUAT
         JLE         C139
         SBT         3               < SECTION 'DSEC' EN COURS.
C139:    EQU         $
         JGE         C140
         SBT         4               < SECTION 'PROG' EN COURS.
C140:    EQU         $
         LB          SECOUR
         LY          PAS
         JMP         COMAS
         PAGE
<
<
<        M O D U L E   D ' A C Q U I S I T I O N  :
<
<
PMACQ:   EQU         $
         LXI         LMACQ
         STZ         &INMACQ
         JDX         $-1
         LYI         -2
PMACQ1:  EQU         $
         LX          NACQ
         LR          X,A
         CPI         72              < FIN DE CARTE?
         JL          C2200
         LAI         '0D
         JMP         C2201
C2200:   EQU         $
         LBY         &AZACQ
C2201:   EQU         $
         STA         CARLU
         CPZ         ETAS
         JNE         APRES
         CPI         '3B             < TEST ';'.
         JE          POIVRE          < POINT-VIRGULE RECONNU.
         CPI         '26             < TEST '&'.
         JE          INDIR           < CARACTERE D'INDIRECTION RECONNU.
         CPI         '24             < TEST '$'.
         JE          COMPAS          < COMPTEUR D'ASSEMBLAGE RECONNU.
         CPI         '27             < TEST '''
         JE          HEXA            < INDICATIF NBRE HEXA RECONNU.
         CPI         '23             < TEST '#'.
         JE          COMUT
         CPI         '2C             < TEST ','.
         JE          FNBR1           < OMISSION DU CHIFFRE 0.
         CPI         '2F             < TEST DU '/'.
         JE          SLASH           < DIVISION RECONNUE.
APRES:   EQU         $
         SBT         8
         CPI         '8D             < TEST R/C.
         JE          C141            < R / C RECONNU.
         ANDI        '3F
C141:    EQU         $
         LR          A,B
         LXI         LTABTY
C142:    EQU         $
         LBY         &ATABLG
         SBR         B,A
         JAG         C143
         JDX         C142
C143:    EQU         $
         LBY         &ATABTY
         AD          ETAS
         CPI         25
         LR          A,X
         LA          CARLU
         JG          CCHAIN
         BR          &ATARUP
POIVRE:  EQU         $               < POINT-VIRGULE.
         LA          VALDIR
         CPI         22
         JE          C144            < SUR 'WORD'.
         CPI         20
         JNE         EMACQ
C144:    EQU         $
         IC          PVIR            < OU SUR 'BYTE'.
         LA          CARLU
         JMP         APRES
INDIR:   EQU         $               < INDIRECTION RECONNU.
         CPZ         NLIG
         JNE         EMACQ
         ADRI        1,X
         STX         KSTORE+3
         LA          BINARY
         SBT         2
         STA         BINARY
         JMP         NEWCAR
DECIM:   EQU         $               < DEBUT NBRE DECIMAL.
         ANDI        'F
         STA         VALEUR
         LAI         10
C145:    EQU         $
         LBI         16
C146:    EQU         $
         STA         CSTE
C147:    EQU         $
         STB         ETAS
NEWCAR:  EQU         $
         IC          NACQ
         JMP         PMACQ1
HEXA:    EQU         $               < DEBUT NBRE HEXADECIMAL.
         IC          INDHEX
         LAI         16
         JMP         C145
CNBRE:   EQU         $               < CONTINUATION D'UN NBRE.
         ANDI        'F
C148:    EQU         $
         LR          A,X
         LA          CSTE
         CPI         10
         LA          VALEUR
         JNE         C149
         CP          M3277
         JGE         EMACQ
C149:    EQU         $
         MP          CSTE
         JANE        EMACQ
         ADR         X,B
         STB         VALEUR
         JNV         NEWCAR
LIMDEC:  EQU         $               < TEST LIMITE SI DECIMAL.
         SLLD        19
         JANE        EMACQ           < LIMITE (32.768) DEPASSEE.
         CPZ         SIGNE
         JGE         EMACQ           < SIGNE PLUS.
         JMP         NEWCAR
CNBR1:   EQU         $               < CONTINUATION NBRE HEXA.
         CPZ         INDHEX
         JE          EMACQ
         ANDI        '1F
         CPI         6
         JG          EMACQ
         ADRI        9,A
         JMP         C148
SUILT1:  EQU         $               < CHIFFRE DANS SUITE DE LETTRES.
         IC          INDICA
SUILT:   EQU         $               < SUITE DE LETTRES.
         LX          LG
         ADRI        2,X
         LBI         8
         CPR         X,B
         JE          EMACQ
         STBY        &ASYMB
         ANDI        '1F
         LR          A,B
         SLLD        26
         ADRI        -2,X
         CPZR        X
         JE          C150
         SLRD        5
         JDX         $-1
C150:    EQU         $
         OR          COND
         STA         COND
         LA          COND+1
         ORR         A,B
         STB         COND+1
         IC          LG
         LBI         8
         JMP         C147
SLASH:   EQU         $
         IC          SIGN1
         LAI         2
CSIGNE:  EQU         $               < SIGNE.
         CPZ         SIGNE
         JNE         EMACQ
         ANDI        3
         ADRI        -4,A
         STA         SIGNE
         JMP         NEWCAR
EXCLAM:  CPI         '8D
         JE          EMACQ
CCHAIN:  EQU         $
         CPZ         INDASC
         JNE         NEWCAR          < DIRECTIVES 'ASCI' ET 'IDP'.
         JMP         C148            < ELEMENT ABSOLU.
FNBRE:   EQU         $               < FIN D'UN NBRE.
         DC          NACQ
         JMP         FNBR1
FSUILT:  EQU         $               < FIN D'UNE SUITE DE LETTRES.
         DC          NACQ
         JMP         FSUIL1
CHAIN:   EQU         $               < DEBUT CAHINE DE CARACTERES.
         LA          NACQ
         STA         NACQ1
         LAI         0
         SBT         7               < A=256
         LBI         24
         JMP         C146
FCHAIN:  EQU         $
         LA          INDASC          < Y=4 : CHAINE DE CARACTERES.
         ADR         A,Y
FNBR1:   EQU         $
         ADRI        1,Y             < Y=3 : ELEMENT ABSOLU.
COMPAS:  EQU         $
         ADRI        1,Y             < Y=2 : $.
FINPH:   EQU         $
         ADRI        1,Y             < Y=1 : FIN DE PHRASE.
FSUIL1:  EQU         $
         ADRI        1,Y             < Y=0 : SUITE DE LETTRES.
COMUT:   EQU         $
         ADRI        1,Y             < Y=-1 : #.
ETIQ:    EQU         $
         LA          LG              < Y=-2 : ETIQUETTE.
         ADRI        1,A
         SLRS        1
         STA         LG
         IC          NACQ
         CPZ         SIGNE
         JE          C151
         IC          SIGNE
C151:    EQU         $
         IC          SIGNE           < SIGNE=1(+),0,-1(-).
         LR          Y,A
         RSR
EMACQ:   EQU         $               < ERREUR DE SYNTAXE.
         LAI         1
         BR          MERR
         PAGE
<
<
<        I N S E R T I O N   S Y M BO L E   D A N S   T S Y M B  :
<
<
PINSET:  EQU         $
         BSR         TESAT
         LX          NSYMB
         LAD         &ATSYMB
                                     < COMMANDE.
         STA         NIVSYM
         LAD         SYMBOL
         LR          A,W
         LA          LG              < LONGUEUR DANS A.
         STA         &ATSYMB
         ADRI        2,X
         LR          X,Y
         JAE         C153            < DIRECTIVE DE SECTIONNEMENT AVEC
                                     < LG=0.
C152:    EQU         $
         LB          0,W
         STB         &ATSYMB
         ADRI        1,X
         ADRI        1,W
         ADRI        -1,A
         JAG         C152
C153:    EQU         $
         STX         NSYMB
         ADRI        -1,Y
         LR          Y,X
         LA          &NIVSYM         < A=MOT DE COMMANDE.
         RSR
         PAGE
<
<
<        I N S E R T I O N   D ' U N   D E P L A C E M E N T
<                    D A N S   T DE P  :
<
<
PINSDP:  EQU         $
         BSR         TESAT
         LX          NDEP
         CPZ         BINARY          < BINARY=0 SI 'WORD'.
         LA          NIV
         JE          C154
         SBT         0               < 'JMP'.
C154:    EQU         $
         STA         &ATDEP
         LA          SOM
         STA         &ATDEP1
         LA          PAS
         STA         &ATDEP2
         ADRI        -3,X
         STX         NDEP
SORINS:  EQU         $
         RSR
         PAGE
<
<
<        T E S T   D E   S A T U R A T I O N   D E S   T A B L E S  :
<
<
PTESAT:  EQU         $
         LX          NSYMB
         LAD         &ATSYMB
         LR          A,B             < B=ADRESSE 1ERE MEMOIRE LIBRE
                                     < DE TSYMB.
         LX          NDEP
         LAD         &ATDEP          < A=ADRESSE 1ERE MEMOIRE LIBRE
                                     < DE TDEP.
         SBR         B,A
         CPI         5
         JL          C155
         RSR
C155:    EQU         $
         LAI         9               < TABLES SATUREES.
         BR          MERR
         PAGE
<
<
<        R E C H E R C H E   S Y M B O L E   D A N S   T S Y M B  :
<
<
PRETIQ:  EQU         $
         LXI         0
C156:    EQU         $
         LR          X,A
         SB          NSYMB
         JAE         SRETIQ
         LAD         &ATSYMB
         STA         NIVSYM
         LA          &ATSYMB
         TBT         10
         JC          C157            < ELIMINATION SYMBOLE EXT.
         TBT         8
         ADCR        L               < ELIMINATION SYMBOLE NON
                                     < DEFINI.
C157:    EQU         $
         ADRI        2,X
         ANDI        3
         CP          LG
         JE          C158
         ADR         A,X
         JMP         C156
C158:    EQU         $
         LR          A,B             < LONGUER DANS B.
         LAD         SYMBOL
         LR          A,W
         LYI         0
NEWORD:  EQU         $
         LA          &ATSYMB
         EOR         0,W
         ORR         A,Y
         ADRI        1,X
         ADRI        1,W
         ADRI        -1,B
         CPZR        B
         JNE         NEWORD
         CPZR        Y
         JNE         C156
         LA          LG
         ADRI        1,A
         SBR         A,X
         LA          &NIVSYM
SRETIQ:  EQU         $
         RSR                         < SYMBOLE TROUVE : A=MOT
                                     < DE COMMANDE.
         PAGE
<
<        R E C H E R C H E   P R O C H A I N
<        N O M   D E   S E C T I O N  :
<
<
PRECSC:  EQU         $
         LA          NSYMB
         CPR         A,X
         JE          SOREC           < I1=1.
         LY          &ATSYMB
         LBI         3
         ANDR        Y,B             < B=LONGUEUR SYMBOLE.
         ADRI        1,B
         ADRI        1,X
         LA          &ATSYMB         < A=ADRESSE DEBUT DE SECTION.
         ADR         B,X
         CPZR        Y
         JGE         PRECSC          < I1=0.
SOREC:   EQU         $
         RSR
         PAGE
<
<
<        R E C H E R C H E   S Y M B O L E
<        S U I V A N T   D A N S   T S Y M B  :
<
<
PSYMUL:  EQU         $
         LA          &ATSYMB
         ANDI        3
         ADRI        2,X
         ADR         A,X
         LA          NSYMB
         CPR         X,A             < TEST SI LIMITE ATTEINTE.
         RSR
         PAGE
<
<
<        E D I T I O N   D U   B I N A I R E  :
<
<
<        NOTA :
<                      EN MODE ' S' , LE BINAIRE
<                    EST ENREGISTRE DANS LA ZONE 'ABO'
<                    ET NON PAS SUR FICHIER SEQUENTIEL.
<
<
SPSO1:   EQU         $               < SORTIE UN QUADRUPLET.
         STBY        BUF
         SLLD        2
         SBT         30
         LXI         -3
SUIVAN:  EQU         $
         SCRD        6
         SLRS        10
         SBT         9
         PTY
         JNC         C159
         SBT         8
C159:    EQU         $
         STBY        &ABUF
         JIX         SUIVAN
SORTQ:   EQU         $
         LXI         -4
C161:    EQU         $
         LBY         &ABUF           < ELIMINATION DES NULLS.
         JAG         C162
         LAI         'A0
         STBY        &ABUF
C162:    EQU         $
         JIX         C161
         LBY         BUF
         CPI         '30
         JE          PERBIN          < COMMANDE 'EOF'.
         LA          CHECK           < CALCUL DU CHECKSUM.
         AD          BUF
         ADCR        A
         AD          BUF+1
         ADCR        A
         STA         CHECK
PERBIN:  EQU         $
         LB          ABO             < B=RECEPTEUR=ZONE IMPLANTEE
                                     < EN TETE DES 4 DERNIERS K.
         LAD         BUF             < A=@ BUFFER CONTENANT LE QUADRUPLET
         LXI         2
         MOVE                        < PLACER LE QUADRUPLET DANS LA ZONE
         ADRI        2,B             < MISE A JOUR DU POINTEUR
                                     < COURANT DE SIMULATION SGF.
         STB         ABO             < AND SAVE.
         LA          AI1
         RBT         0               < A=@CORPS(ITEM1).
         ADRI        -LTN,A          < POUR TENIR COMPTE DE LA ZONE
                                     < DE SAUVEGARDE DE L'EN-TETE
                                     < DE L'ITEM2.
         ADRI        -2-LTN,A        < A=LIMITE SUPERIEURE DE LA
                                     < ZONE ABO.
         SBR         B,A             < A=ESPACE RESTANT LIBRE POUR
                                     < LA ZONE ABO.
         JALE        Z22             < ERREUR : BINAIRE OVERFLOW.
         RSR
<
< TRAITEMENT DES ERREURS :
<
Z22:     EQU         $
         ADRI        -1,K            < RECUPERATION DU BSR D'APPEL.
         LAI         0               < ERREUR 0 D'ASSEMBLAGE.
         BR          MERR
<
<
<
SPSO2:   EQU         $               < SORTIE 2 QUADRUPLETS.
         STBY        BUF
         BSR         PSORTQ          < SORTIE 1ER QUADRUPLET.
         LA          BUF+2
         STA         BUF
         LA          BUF+3
         STA         BUF+1
         JMP         SORTQ           < SORTIE 2EME QUADRUPLET.
<
<
<
PSOSYM:  EQU         $               < SORTIE SYMBOLE DONT A=ADRESSE.
         BSR         TRASYM
         LAI         6
         BSR         SORMES
         RSR
<
<
<
PSORM:   EQU         $               < SORTIE MESSAGES NON ERREUR.
         STA         IOCB3+2
         PSR         X
         LAD         IOCB3
         SVC         0
         PLR         X
         RSR
<
<
<
PSORCL:  EQU         $               < SORTIE RC-LF.
         LA          RCLF
         STA         SYMBOL
         LAI         2
         BSR         SORMES
         RSR
         PAGE
<
<
<        C O N V E R S I O N S   N U M E R I Q U E S  :
<
<
PCONV:   EQU         $               < CONVERSION HEXADECIMALE 4
                                     < CHIFFRES.
         BSR         HEXA2
         LR          A,Y             < Y=POIDS FORTS.
         BSR         HEXA2
         RSR                         < A=POIDS FAIBLES.
<
<
<
PHEXA:   EQU         $               < CONVERSION HEXADECIMALE 2
                                     < CHIFFRES.
         LAI         0
         STZ         ZTR
         SLLD        4
         BSR         BSUPL
         STBY        ZTR
         LAI         0
         SLLS        4
         SLLD        4
         BSR         BSUPL
         OR          ZTR
         RSR
<
<
<
PCOV10:  EQU         $               < CONVERSION DECIMALE 2 CHIFFRES.
         ANDI        '3F
         SLRD        16
         DV          M10
         BSR         BSUPL           < CHIFFRE DES DIZAINES.
         XR          A,B
         BSR         BSUPL           < CHIFFRE DES UNITES.
         SLLS        8
         SCRD        8
         RSR
<
<
<
SUPL:    EQU         $               < TRAITEMENT DES BITS 8,9,10.
         CPI         9
         JLE         C164            < CHIFFRE.
         ADRI        -9,A            < LETTRE.
         ORI         '40
         JMP         C165
C164:    EQU         $
         ORI         '30
C165:    EQU         $
         RSR                         < LE CALCUL DE PARITE A ETE SUPPRME.
         PAGE
PTRAS:   EQU         $               < TRANSFERT DANS SYMBOL.
         PSR         X
         LXI         3               < NETTOYAGE SYMBOL.
         STZ         &ASYMB
         JDX         $-1
         STA         NIVSYM          < A=ADRESSE DU SYMBOLE.
         LA          &NIVSYM
         ANDI        3               < A=LONGUEUR.
         JAE         LONUL           < LONGUEUR NULLE.
         LXI         1
         IC          NIVSYM
C166:    EQU         $
         IC          NIVSYM
         LB          &NIVSYM
         STB         &ASYMB
         ADRI        1,X
         ADRI        -1,A
         JAG         C166
LONUL:   EQU         $               < RESTAURATION DE X.
         PLR         X
         RSR                         < SAVE X DANS ZTR.
<
<
<
PTAS:    EQU         $               < TRANSFERT SYMBOLE DANS BUF.
         LA          SYMBOL
         LB          SYMBOL+1
         SLRD        8
         STA         BUF
         STB         BUF+1
         LA          SYMBOL+1
         STA         BUF+2
         LA          SYMBOL+2
         STA         BUF+3
         LAI         '22
         STBY        BUF+2
         RSR
         PAGE
PSORC:   EQU         $               < EDITION SECTION.
         BSR         SORCLF
         BSR         PAGIN
         LYI         -1
         LR          Y,W
C167:    EQU         $
         LXI         0
         ADRI        1,W             < LETTRE SUIVANTE (1ERE LETTRE
                                     < EST 'A'.
PSORC1:  EQU         $
         LA          &ATSYMB
         SLRD        8
         CPI         '80             < ELIMINATION ADRESSE DE FIN
                                     < DE SECTION.
         JE          NEDIT
         ANDI        '7F
         CP          BINARY
         JNE         NEDIT           < APPARTIENT A AUTRE SECTUON.
         TBT         16
         JC          NEDIT           < ELIMINATION SYMBOLE NON DEFINI.
         LAD         &ATSYMB
         BSR         TRASYM
         CPZ         &ATSYMB
         JG          EDITER
         CPZR        W
         JNE         NEDIT           < NOM DEJA EDITE.
         LA          LIBSEC
         STA         SYMBOL
         LA          LIBSEC+1
         STA         SYMBOL+1
         LAI         4
         JMP         EDNOM
EDITER:  EQU         $
         LBY         SYMBOL
         ANDI        '1F
         CPR         A,W
         JNE         NEDIT           < LETTRE NON CONFORME.
         ADRI        1,X
         LB          &ATSYMB         < MOT VALEUR.
         LA          CARSP+1
         STA         SYMBOL+2
         BSR         CONVER          < CONVERSION HEXADECIMALE.
         STA         SYMBOL+1
         STY         SYMBOL
         ADRI        -1,X
         LAI         6
EDNOM:   EQU         $
         BSR         SORMES
         LAD         &ATSYMB         < A=ADRESSE SYMBOLE.
         BSR         TRASYM
         LAI         6
         BSR         SORMES
         BSR         SORCLF          < RC-LF.
         BSR         PAGIN
NEDIT:   EQU         $
         BSR         SYMUL
         JNE         PSORC1
         LAI         26
         CPR         A,W
         JNE         C167            < LETTRE 'Z' NON ATTEINTE.
         BSR         SORCLF
         BSR         PAGIN
         RSR
         PAGE
<
<
<        E D I T I O N   L I S T I N G  :
<
<
PLIST:   EQU         $               < SORTIE LISTING (ZACQ1).
         STB         BINARY
         CPZ         SITUAT
         JG          C168            < ON EST DANS UNE DSEC.
         BSR         ASPSO1          < SORTIE MOT BINAIRE.
C168:    EQU         $
         BSR         VERPA           < VERIFICATION DEPASSEMENT 32K.
         LBY         BUF
         CPI         'AC
         JE          PLIS1           < 'DZS'.
         LX          SINGER          < CARACTERE SPECIAL.
         LA          &ACARSP
         STA         &ZACQ12
         LB          BINARY          < B=MOT.
         BSR         CONVER          < CONVERSION.
         STY         &ZACQ13         < POIDS FORTS DU MOT.
         STA         &ZACQ14         < POIDS FAIBLES DU MOT.
PLIS1:   EQU         $               < SORTIE LISTING ('DZS' + 'EQU').
         LB          DEBRES+2
         BSR         CONVER
         LR          A,L
         LA          VALDIR
         CPI         17
         JE          ADCOMP          < '$EQU'.
         LR          L,A
         CPZ         INDZS
         STZ         INDZS
         JG          ADCOMP          < LA PHRASE PRECEDENTE ETAIT 'DZS'.
         ANDI        7
         JAE         ADCOMP          < SORTIE ADRESSE COMPLETE.
         LR          L,A
         SLLS        8
         ORI         'A0
         SCLS        8
         LY          CARSP+1
         JMP         C169
ADCOMP:  EQU         $
         LR          L,A             < POIDS FORT DE L'ADRESSE.
C169:    EQU         $
         STY         &ZACQ10
         STA         &ZACQ11         < POIDS FAIBLES DE L'ADRESSE.
         CPZ         LIMSU2
         JE          PAGENE          < PAS DE GENERATION DE DEPLACEMENT.
         CPZ         ETAPH
         JG          PAGENE          < PAS DE GENERATION DE DEPLACEMENT
                                     < ('$EQU').
         LA          DEBRES+2        < A=PAS SAUVEGARDE.
         SB          DEBSEC
         ADRI        -128,A
         CPI         127
         JG          PAGENE          < DEPLACEMENT SUPERUEUR A 127.
         LR          A,B
         BSR         CONVER
         STA         &ZACQ16         < POIDS FAIBLES DU DEPLACEMENT.
         LA          OUVR
         STA         &ZACQ15
         LA          FERM
         STA         &ZACQ17
PAGENE:  EQU         $               < SORTIE DU LISTING.
         LAD         IOCB4
         SVC         0
         BSR         PAGIN
         LAI         26              < PLUS DE SORTIE SYMBOLIQUE
         STA         IOCB4+2
         LA          RCLF
         STA         &ZACQ18
         LA          VALDIR
         CPI         19
         JNE         C170
         IC          INDZS           < PHRASE EST 'DZS'.
C170:    EQU         $
         RSR
<
<
PPAGE:   EQU         $               < SAUT DE PAGE.
         PSR         X
         LA          SYMBOL
         PSR         A
         LAD         IOCB            < LIRE UN CARACTERE
         SVC         0
         JNE         PAEFEC
         LAD         IOCB7           < AVANT D'EFFACER
         SVC         0
PAEFEC:  EQU         $
         PLR         A
         STA         SYMBOL
         PLR         X
         STZ         NBLIN
         RSR
<
<
<
PPAGIN:  EQU         $               < MISE EN PAGE.
         IC          NBLIN
         LA          NBLIN
         CPI         NBLIG           < TEST PAR RAPPORT AU NBRE DE
                                     < LIGNES SUR UN ECRAN DE VISU.
         JE          PPAGE           < SAUT DE PAGE EN BAS.
         RSR
         PAGE
<
<
<        T R A I T E M E N T   D U   J U M P  :
<
<
PJUMP:   EQU         $
         CP          DEBSEC
         JL          C172
         CPZR        W
         JNE         C171
         CP          FINSEC
         JLE         C171
         STA         FINSEC          < ADRESSE LIMITE DE SECTION.
C171:    EQU         $
         SBR         Y,A
         CPI         -128
         JL          C172            < HORS D'ATTEINTE.
         CPI         127
         JG          C172            < HORS D'ATTEINTE.
         RSR
C172:    EQU         $
         LAI         11              < HORS-LIMITE DE SECTION.
         BR          MERR
<
<
<
VERPAS:  EQU         $               < VERIFICATION DU PAS.
         CPZ         PAS
         JL          C173
         RSR
C173:    EQU         $
         LAI         12              < PASSAGE AU-DELA DE 32K.
         BR          MERR
<
<
<
PSAV:    EQU         $               < SAVE POUR LES CAS D'ERREURS.
         LXI         LSAV
C174:    EQU         $
         LA          &ASAVE
         STA         &AREST
         JDX         C174
         RSR
         PAGE
<
<
<        T R A I T E M E N T   D E S   E R E U R S  :
<
<
ERR:     EQU         $
         STA         NR
NR0:     LXI         LSAV            < RESTORE VALEURS SAUVEGARDEES.
C175:    EQU         $
         LA          &AREST
         STA         &ASAVE
         JDX         C175
         LA          MOT1
         JAE         C176
         STA         &NIV
         IC          NIV
         LA          MOT2
         STA         &NIV
C176:    EQU         $
         LA          DEPLA2          < PREPARTION MESSAGE D'ERREUR.
         BSR         CONV10
         STA         SYMBO2+4        < DEPLACEMENT.
         LA          NR
         BSR         CONV10
         STA         ZTR             < NUMERO D'ERREUR.
         STZ         BASCUL          < CHANGEMENT DU NVP D'ENTREE.
         LA          NR              < TEST DE L'ERREUR PRODUITE ???
         CPI         17              < EST-CE LA FATALE ERREUR '17' ???
         JNE         E1947           < NON , L'ASSEMBLAGE PEUT SE
                                     < POURSUIVRE ....
         LAI         "G"             < REVENIR A 'GE'
         SLLS        8
         ORI         "E"
         LR          A,B
         LAI         BRANCH-ZERO
         LR          A,W             < W=@BRANCH.
         BR          9,W             < LES ASSEMBLAGES EN ERREUR
                                     < SONT ABORTES (VERS 'EOT').
<
< CAS DES AUTRES ERREURS.
<
E1947:   EQU         $
         BR          RETER
         PAGE
<
<
<        T O P   U T I L E   D E   S Y M B O L  :
<
<
TOP:     EQU         $
<
<
<        V A L I D A T I O N   I M P L A N T A T I O N  :
<
<
X13:     VAL         TOP-ZBR*2       < TAILLE DE LA BRANCHE ' Z'.
X10:     VAL         ZERO-BRANCH+PILE-LTNI-LTNI*2-X13
ZEROV2:  EQU         ZERO+X10        < ERREUR D'ASSEMBLAGE SI
                                     < MAUVAISE IMPLANTATION.
         DZS         X10/2+1         < CLEAR PAR PRUDENCE.
         EOT         #SIP GEN PROCESSEUR#



Copyright © Jean-François Colonna, 2022-2022.
Copyright © CMAP (Centre de Mathématiques APpliquées) UMR CNRS 7641 / École polytechnique, Institut Polytechnique de Paris, 2022-2022.