NMPROC:  VAL         " L"            < NOM DU PROCESSEUR.
         IDP         " L - RELEASE 01/06/1979"
         IDP         "JOHN F. COLONNA"
<
<
<        C H A R G E U R   T R A N S L A T E U R   L O A D  :
<
<
<        PHILOSOPHIE :
<                      LOAD EST EN FAIT IRLD REBAPTISE PAR
<                    LE CLIENT (ET OUI ENCORE) ....
<                    ET MODIFIE LEGEREMENT (AVANT DE LE
<                    REFAIRE .....
<                      LE PROGRAMME GENERE SE TROUVE
<                    DANS L'ITEM2.
<
<
         EOT         #SIP DEF PROCESSEUR#
SPROG:   VAL         '100            < UNE TRANSLATION AUSSI FAIBLE
                                     < PERMET DE CHARGER CE PROCESSEUR
                                     < AVEC LE !LOAD EXISTANT.
         WORD        LOAD            < ADRESSE DE LANCEMENT  DE LOAD.
         PROG
         WORD        0               < POUR FAIRE $=$+1.
PLOAD:   EQU         $
         LRP         L
         BR          -2,L            < ENTRY DANS LE PROCESSEUR.
<
< SUITE DE LA ZONE RESERVEE POUR
< IMPLANTER LE PROGRAMME A CHARGER :
<
         DZS         SPROG
         EOT         #SIP DEFINITION ITEM#
         PAGE
<
<
<        C O M M O N   :
<
<
         COMMON
TOUDEB:  EQU         $
<
< BUFFERS DE TRAVAIL DU LOADER :
<
BUFFER:  DZS         4               < BUFFER DE SORTIE.
INDEX:   WORD        0               < INDEX BUFFER BINAIRE.
KSTORE:  DZS         20
CHKSUM:  DZS         1               < CHECKSUM.
ABSMOD:  WORD        -1
ADSTOC:  DZS         2               < QUADRUPLET 'AU FRAIS'.
AI2:     WORD        ZERO+PILE-LTNI-LTNI+LTN+1,X
                                     < RELAI INDEXE D'ACCES A L'ITEM2.
                                     < (+1 AFIN DE RESERVER LE MOT0
                                     < POUR L'ADRESSE DE DEPART).
AI20:    WORD        ZERO+PILE-LTNI-LTNI+LTN,X
                                     < ACCES A L'ITEM2 A PARTIR DE 0.
CTRANS:  WORD        ZERO+PILE-LTNI-LTNI+LTN+1
                                     < CETTE CONSTANTE DE TRANSLATION
                                     < PERMET D'IMPLEMENTER LE PRO-
                                     < GRAMME CHARGE DANS ITEM2.
MAXMEM:  WORD        ZERO+PILE-LTNI+LTN
                                     < POUR NE PAS DEPASSER L'ITEM1.
NCP:     WORD        NBCAR*NBLIG     < LONGUEUR A DONNER AUX ITEM
                                     < DE TYPE 'P'.
PAFINI:  DZS         1               < RELAI POUR LES SUITES DE
                                     < COMMANDES.
ADLANC:  DZS         1               < ADRESSE DE LANCEMENT DU PROGRAMME
                                     < CHARGE.
FINMOD:  DZS         1               < INDICATEUR DE FIN DE MODULE.
PREM2:   DZS         1               < PREM DU PROGRAMME.
CPTLOD:  DZS         1               < COMPTEUR DE REPEAT LOAD.
CCI:     WORD        1               < RETOUR AU CCI SI ERREUR.
DEMMEM:  WORD        '0004           < DEMANDE D'ALLOCATION MEMOIRE.
         WORD        0
         WORD        '2000           < POUR REVENIR A 4K MOTS.
DEMSGN:  WORD        '0402           < DEMANDE D'ACCES AU SGN INITIALI-
                                     < SEE EN 'STORE'.
         WORD        BRANCH-ZERO*2
         WORD        ZERO-BRANCH+PILE-LTNI-LTNI*2
         WORD        -1
IOCBL:   WORD        '0202           < SORTIE LISTING.
         WORD        BUFFER-ZERO*2
         WORD        0
ZBO:     VAL         '1000           < @DU 1ER OCTET DE BINAIRE A
                                     < CHAGER ; RAPPELONS QUE CELUI-CI
                                     < (LE BINAIRE EVIDEMMENT...) SE
                                     < TROUVE SITUE EN TETE DES 4K
                                     < SUIVANTS.
ABO:     WORD        ZERO+ZBO,X      < RELAI COURANT VERS LE 'FICHIER'
                                     < BINAIRE.
APILE:   WORD        PILE-1          < PILE UTILISEE LORS DU CHARGEMENT
                                     < DES BRANCHES D'OVERLAY.
AOVL:    WORD        OVL             < CHARGEMENT DES OVERLAYS.
RAGE:    WORD        AGE             < RETOUR A LA BRANCHE 'GE'.
ALTNI:   WORD        LTNI            < LONGUEUR TOTALE D'1N ITEM.
NGE:     ASCI        "GE"            < NOM DE LA BRANCHE 'GE'.
RCLF:    WORD        '0D0A
ERREUR:  ASCI        "ERU "
START:   ASCI        "RUN "
SORMES:  WORD        ENTMOT          < SP DE SORTIE QUESTIONS.
MERCLF:  WORD        MSGRC           < SP DE SORTIE DE RC-LF.
MESER:   WORD        MSGERR          < SP DE SORTIE ERREURS.
LITQ:    WORD        SPLITQ          < SP DE LECTURE 1 QUADRUPLET.
AUFRAI:  WORD        ADSTOC+2,X      < QUADRUPLET 'AU FRAIS'.
TABCDE:  WORD        TABAIG,X
TABAIG:  WORD        DEBUT;SUITE;LANCT;REPEAT;CHECK;COMENT
         WORD        PACDE;TRANSL;REMADR;DEPADR;LECTUR;NSECT;ENT;REMJMP
RANGB:   WORD        VERIFW          < SP RANGE B EN VERIFIANT.
TRIMPW:  WORD        WCIMP           < MODIFIE IMPLANTATION DE W.
TRENTE:  WORD        '3030
NEWCHG:  WORD        RELANS          < RELANCE DU MODULE.
TRINFB:  WORD        BTRANS          < TRANSLATE INFO B.
AREMA2:  WORD        REMAD2
ADEPA2:  WORD        DEPAD2
DIX:     WORD        10
NB7FFF:  WORD        '7FFF           < POUR FIN DE CHAINE.
ADRFAT:  WORD        RFATAL
ADLECT:  WORD        LECTUR
ASECT2:  WORD        SECT2
ARJMP2:  WORD        REMJM2          < RELAI SUITE REF. AVANT RELATIVE.
SORCAR:  WORD        PRECAR          < SORTIE DE 3 CARACTERES.
SORADR:  WORD        ECRADR          < SORTIE ADRESSE.
SORHEX:  WORD        BUFFER+3,X      < POUR ADRESSE RELATIVE.
BLQ:     ASCI        " '"
         PAGE
         PROG
<
<
<        M O D U L E   D E   R E T O U R   A   G E  :
<
<
<        FONCTION :
<                      CE MODULE PERMET DE RETOURNER
<                    A LA BRANCHE 'GE' EN AYANT AU
<                    PREALABLE RESTAURER L'ITEM1 , ET
<                    RENDU AU SYSTEME LES 4K SUPPLE-
<                    MENTAIRES ALLOUES AVANT L'ASSEMBLAGE.
<
<
AGE:     EQU         $
<
< RESTAURATION DE L'ITEM1 :
<
         LA          MAXMEM
         ADRI        -LTN,A          < A=@EN-TETE DE L'ITEM1.
         LR          A,B             < B=RECEPTEUR=ITEM1.
         SBT         3               < TRANSLATION DU CONTENU DE A
                                     < DE 4K MOTS : A=EMETTEUR.
         LX          ALTNI           < X=NBRE DE MOTS A DEPLACER.
         MOVE                        < RESTAURE L'ITEM1.
<
< RESTAURATION DE L'EN-TETE DE L'ITEM2 :
<
         ADRI        -LTN,A          < A=EMETTEUR=@ZONE DE SAUVEGARDE
                                     < DE L'EN-TETE DE L'ITEM2.
         LB          CTRANS          < B=@MOT0 DU CORPS DE L'ITEM2.
         ADRI        -LTN,B          < B=RECEPTEUR=@EN-TETE ITEM2.
         LXI         LTN             < X=NBRE DE MOTS D'UNE EN-TETE.
         MOVE                        < RESTAURATION DE L'EN-TETE ITEM2.
<
< MISE EN PLACE DU TYPE ET DE LA
< LONGUEUR DE L'ITEM2 :
<
         LXI         IINDIC-LTN*2
         LAI         "P"             < TYPE 'PROGRAMME'.
         STBY        &AI20
         LXI         LRITEM-LTN      < INDEX LONGUEUR DU CORPS ITEM.
         LA          NCP             < LA LONGUEUR ATTRIBUEE AU
                                     < CORPS DE L'ITEM PROGRAMME
                                     < EST LA LONGUEUR MAXIMALE.
         STA         &AI20
<
< RELEASE DE L'ESPACE MEMOIRE :
<
         LAD         DEMMEM
         SVC         0               < PASSAGE DE 8K A 4K MOTS.
<
< RETOUR A 'GE' :
<
         LAI         BRANCH-ZERO
         LR          A,W             < W=@BRANCH.
         LAI         6
         STBY        DEMSGN          < DEMSGN EST MISE EN MODE 'LOAD
                                     < SOUS :SYS'.
         LA          NGE
         STA         0,W             < MISE DU NOM DE 'GE' EN TETE DE
                                     < LA BRANCHE.
         LA          APILE
         LR          A,K             < MISE EN PLACE D'UNE PILE QUE
                                     < LE CHARGEMENT DES OVERLAYS NE
                                     < PERRTURBE PAS.
         LAD         DEMSGN
         BSR         AOVL            < ESSAI DE CHARGEMENT DE
                                     < L'OVERLAY 'GE' : A=@DEMSGN ,
                                     < W=@BRANCH.
         LAD         CCI
         SVC         0               < RETOUR AU CCI DEFINITIF EN CAS
         JMP         $-1             < D'ERREURS DE CHARGEMENT.
         PAGE
<
<
<        C H A R G E U R   T R A N S L A T E U R  :
<
<
         WORD        TOUDEB+128      < INITIALISATION DE LA BASE C.
LOAD:    EQU         $
         LRP         C
         LA          -1,C
         LR          A,C
         LAD         KSTORE-1
         LR          A,K             < INITIALISATION DE K.
         JMP         RELANS          < ET C'EST PARTI.
<
< SORTIE EN ERREUR DU LOAD :
<
HORTEN:  EQU         AGE             < LORS DES ERREURS FATALES , ON
                                     < FAIT UN RETOUR CORRECT A 'GE'.
RFATAL:  EQU         $
         XR          A,K             < REINITIALISATION DE K.
         LAD         KSTORE-1
         XR          A,K
         BSR         MESER
         JMP         HORTEN
<
< CHARGEMENT :
<
RELANS:  EQU         $
         BSR         MERCLF          < ENVOI DE RC-LF.
FEUVER:  EQU         $
         BSR         LITQ            < LECTURE 1ER QUADRUPLET.
         CPI         'A3             < MODULE TRANSLATABLE ????
         JNE         ANALIZ          < ABS=VRAI=-1 , CIMP=0.
         IC          ABSMOD          < ABSMOD=0.
SLAVE:   EQU         $
         LA          CTRANS
         LR          A,W             < L'ADRESSE D'2MPLANTATION UTILISEE
                                     < EST CELLE DE L'2TEM2.
<
<
<        L E C T U R E   D E S   Q U A D R U P L E T S  :
<
<
LECTUR:  EQU         $
         BSR         LITQ
ANALIZ:  EQU         $
         ANDI        3               < ANALYSE DES COMMANDES.
         JAE         ABSOL
         CPI         2               < COMMANDE TRANSLATABLE.
         JNE         ERCMDE
         CPZ         ABSMOD
         JL          PATRAN
         LBY         ADSTOC
         ANDI        '1C
         ADRI        '18,A
NUMCDE:  EQU         $
         SLRS        2               < NUMERO DE COMMANDE DANS X.
         LR          A,X
         BR          &TABCDE         < AIGUILLAGE SPECIFIQUE VERS LA
                                     < COMMANDE.
ABSOL:   EQU         $
         LBY         ADSTOC          < CAS DES COMMANDES ABSOLUES.
         ANDI        '1C
         CPI         '14
         JLE         NUMCDE
ERCMDE:  EQU         $
         LAI         '12
         BR          ADRFAT
PATRAN:  EQU         $
         LAI         '13
         BR          ADRFAT
<
<
<        ' C H A R G E R   E N '  :
<
<
DEBUT:   EQU         $
         BSR         TRIMPW
         JMP         MODPRM
<
<
<        C H A R G E R   A   L A   S U I T E  :
<
<
SUITE:   EQU         $
         BSR         RANGB           < RANGEMENT A LA SUITE DE
                                     < L'INFORMATION CONTENUE DANS B.
         ADRI        1,W
         LR          W,A
MODPRM:  EQU         $
         LR          A,Y
         SB          PREM2           < MODIF DE PREM2.
         JC          $+2
         STY         PREM2
         DC          CPTLOD
         JG          SUITE           < DECREMENTATTION DU COMPTEUR DE
                                     < REPEAT LOAD.
         STZ         CPTLOD
         JMP         LECTUR
<
<
<        A D R E S S E   D E   L A N C E M E N T  :
<
<
LANCT:   EQU         $
         LR          B,A             < MEMORISATON DE L'ADRESSE DE
                                     < DE LANCEMENT.
PALANC:  EQU         $
         RBT         0               < BIZARE !!! NON ????
         AD          CTRANS          < TRANSLATION DE L'ADRESSE DE
                                     < DEPART DANS L'ITEM2.
         DC          CTRANS          < PASSAGE SUR LE MOT0 DE ITEM2.
         STA         &CTRANS         < SOUS GE , L'ADRESSE DE LANCEMENT
                                     < EST TRANSMISE DANS LE MOT0 DE
                                     < L'ITEM2.
         IC          FINMOD          < FIN DE MODULE=VRAI.
         JMP         LECTUR
<
<
<        R E P E A T   L O A D  :
<
<
REPEAT:  EQU         $
         STB         CPTLOD
         BR          ADLECT
<
<
<        C H E C K S U M :
<
<
CHECK:   EQU         $
         LA          CHKSUM
         CPR         B,A             < VERIFICATION DU CHECKSUM.
         JNE         FAUSUM
         CPZ         FINMOD          < FIN DE MODULE ???
         JE          FINBAN
         LA          ADLANC
         JAGE        $+2
RELANC:  EQU         $
         BR          NEWCHG          < FIN DE MODULE SANS LANCEMENT.
         LAD         START           < SORTIE ADRESSE DE LANCEMENT.
         BSR         SORMES
         LA          ADLANC
         BSR         SORADR
         BR          RAGE            < EN FIN DE CHARGEMENT , ON FAIT UN
                                     < RETOUR A 'GE'.
<
<
<        F I N   D E   B A N D E  :
<
<
FINBAN:  EQU         $
         STZ         CHKSUM
         BR          ADLECT
<
<
<        E R R E U R   D E   C H E C K S U M  :
<
<
FAUSUM:  EQU         $
         LAI         '16             < ERREUR DE CHECKSUM.
         BR          ADRFAT
<
<
<        C O M M E N T A I R E  :
<
<
COMENT:  EQU         $
         BSR         SORCAR
         BR          ADLECT
<
<
<        S U I T E   D E   C O M M A N D E  :
<
<
PACDE:   EQU         $
         BR          PAFINI
<
<
<        C H A R G E R   A   L A   S U I T E
<        E N   T R A N S L A T A N T  :
<
<
TRANSL:  EQU         $
         BSR         TRINFB
         JMP         SUITE
<
<
<        R E M O N T E R   U N E   C H A I N E   D ' @  :
<
<
REMADR:  EQU         $
         PSR         W
         BSR         TRINFB
         LR          B,W
         LA          AREMA2
STAPAF:  EQU         $
         STA         PAFINI
         BR          ADLECT
<
< SUITE DE COMMANDE CHAINE :
<
REMAD2:  EQU         $
         BSR         TRINFB
         LA          0,W
         JAL         BIT01           < SAVE BIT INDEX.
         RBT         16
         JMP         $+3
BIT01:   EQU         $
         SBT         16
         RBT         0
         STB         0,W
         CP          NB7FFF          < FIN DE CHAINE ???
         JE          PLRW
         LR          A,W
         JMP         REMAD2+1
<
<
<        D E P L A C E M E N T   S U R   A D R E S S E :
<
<
DEPADR:  EQU         $
         PSR         W
         BSR         TRIMPW
         LA          ADEPA2
         JMP         STAPAF
<
< SUITE DE COMMANDE DEPLACEMENT :
<
DEPAD2:  EQU         $
         LA          0,W
         LR          A,Y
         RBT         0
         ADR         A,B
         JV          MUCHB
         CPR         Y,A
         JE          $+2
         SBT         16              < SAVE BIT INDEX.
         STB         0,W
PLRW:    EQU         $
         PLR         W
         BR          ADLECT
<
<
<        N O M   D E   S E C T I O N  :
<
<
NSECT:   EQU         $
         BSR         MERCLF
         BSR         SORCAR
         LA          ASECT2
         JMP         STAPAF
<
< SUITE DE COMMANDE DE SECTION :
<
SECT2:   EQU         $
         BSR         SORCAR
         LR          W,A
         BSR         SORADR
         BR          ADLECT
<
<
<        C O M M A N D E   ' E N T '  :
<
<
ENT:     EQU         $
         LA          ADLECT
         JMP         STAPAF
<
<
<        R E F E R E N C E   E N   A V A N T   R E L A T I V E  :
<
<
REMJMP:  EQU         $
         PSR         W
         BSR         TRIMPW          < W=@1ER MAILLON.
         LA          ARJMP2
         JMP         STAPAF
<
< SUITE DE REFERNCE AVNT RELATICVE :
<
REMJM2:  EQU         $
         LR          W,Y
         BSR         TRIMPW          < A=W=ADR. REF. EN AVANT.
         XR          Y,W             < W=@1ER MAILLON.
CHAINE:  EQU         $
         LR          Y,A             < Y=A=REF. EN AVANT.
         SBR         W,A
         LB          0,W             < B=MAILLON.
         SCRD        8               < FABRICATION DU MOT DEFINITIF.
         SWBR        B,B
         STB         0,W
         SWBR        A,A             < A=ADRESSE RELATIVE DU MAILLON
                                     < SUIVANT.
         SBR         A,W             < CALCUL ADR. MAILLON SUIVANT.
         JANE        CHAINE
         JMP         PLRW
MUCHW:   EQU         $
         LAI         '14             < W SUPERIEUR A 32 K (TRIMPW
                                     < ET RANGB).
         BR          ADRFAT
MUCHB:   EQU         $
         LAI         '17             < B SUPERIEUR A 32K (TRINFB ET
                                     < DEPAD).
         BR          ADRFAT
         PAGE
<
<
<        L E C T U R E   U N   Q U A D R U P L E T  :
<
<
<        NOTA :
<                      LE BINAIRE EST RECUPERE DANS LES 4
<                    DERNIERS K DE LA MEMOIRE POUR ' L'.
<
<
SPLITQ:  EQU         $
         LYI         0
         LXI         -4
         LB          INDEX           < RECUPERATION OCTET PAR OCTET.
LITQ1:   EQU         $
         XR          X,B
         LBY         &ABO
         XR          X,B
         ADRI        1,B
         STBY        &AUFRAI
         CPZR        Y
         JNE         STOCK
         ANDI        '60
         CPI         '20
         JNE         LITQ1
         ADRI        1,Y
STOCK:   EQU         $
         JIX         LITQ1
         STB         INDEX
         LBY         ADSTOC
         CPI         '30
         JE          PACHEK
         LA          CHKSUM
         AD          ADSTOC          < CALCUL DU CHECKSUM.
         ADCR        A
         AD          ADSTOC+1
         ADCR        A
         STA         CHKSUM
PACHEK:  EQU         $
         LXI         -3
         LBY         &AUFRAI         < A=COMMANDE , B=INFO.
         SLRD        6
         JIX         $-2
         LBY         ADSTOC
         RSR
         PAGE
<
<
<        R A N G E M E N T   D E   B  :
<
<
VERIFW:  EQU         $
         LR          W,A
         JAL         MUCHW
         CP          MAXMEM
         JG          ERROR
         STB         0,W             < CHARGEMENT DE 0,W PAR B.
         RSR
ERROR:   EQU         $
         LAI         '15             < ERREUR DE PROTECTION.
         BR          ADRFAT
<
<
<        M O D I F I C A T I O N   D E   L ' I M P L A N T A T I O N  :
<
<
WCIMP:   EQU         $
         LR          B,A
         JAL         MUCHW
         AD          CTRANS          < C'EST MIEUX COMME CA ....
         JV          MUCHW
         LR          A,W             < SI W>32K : ERREUR FATALE.
         RSR
<
<
<        T R A N S L A T I O N   D E   ( B )  :
<
<
BTRANS:  EQU         $
         LR          B,A
         RBT         0
         AD          CTRANS
         JV          MUCHB
         XR          A,B
         JAGE        $+2
         SBT         16              < SAUVEGARDE BIT INDEX.
         RSR
         PAGE
<
<
<        S O R T I E   D E   ( A )  :
<
<
ECRADR:  EQU         $
         SLRD        16
         LXI         -4
CARSUI:  EQU         $
         SLLD        4
         ADRI        '30,A
         CPI         '39
         JLE         $+2
         ADRI        7,A
         STBY        &SORHEX         < RANGEMENT DAN SLE BUFFER OUT.
         LAI         0
         JIX         CARSUI
         STZ         &SORHEX
         LA          BLQ
         STA         BUFFER
         JMP         SORTI6
<
<
<        S O R T I E   D E   3   C A R A C T E R E S  :
<
<
PRECAR:  EQU         $
         LA          ADSTOC
         LB          ADSTOC+1
         SLLD        8
         STA         BUFFER
         STB         BUFFER+1
         JMP         SORTI3
<
<
<
SORTI6:  LXI         6
         JMP         $+2
SORTI3:  LXI         3
         STX         IOCBL+2
         JMP         APIOCS
MSGRC:   LXI         2               < SORTIE DE RC-LF
         STX         IOCBL+2
         JMP         RETLF
MSGERR:  LXI         8               < SORTIE D'UN MESSAGE
         STX         IOCBL+2
         SLRD        4
         SLLS        4               < D'ERREUR AVEC NUMERO
         SLLD        4
         AD          TRENTE
         STA         BUFFER+3
         LAD         ERREUR
         JMP         INBUF4
ENTMOT:  LXI         6
         STX         IOCBL+2
INBUF4:  XR          A,W
         LB          0,W
         STB         BUFFER+1
         LB          1,W
         STB         BUFFER+2
         XR          A,W
RETLF:   LA          RCLF
         STA         BUFFER
APIOCS:  EQU         $
         LAD         IOCBL
         SVC         0
         RSR
FVERIF:  RSR
<
<
<
<
<
TOP:     EQU         $
<
<
<        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-$
ZEROV:   EQU         ZERO+X10        < ERREUR D'ASSEMBLAGE SI
                                     < MAUVAISE IMPLANTATION.
         DZS         X10+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.