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-2024.
Copyright © CMAP (Centre de Mathématiques APpliquées) UMR CNRS 7641 / École polytechnique, Institut Polytechnique de Paris, 2022-2024.