PAGE
IGE: VAL 1 < IGE>0 : LE PROCESSEUR LOAD EST
< GENERE POUR ETRE EXECUTE
< SOUS LE SYSTEME 'GE'.
IGE: VAL 0 < ASSEMBLAGE DU LOADER POUR
< LA VERSION 'PROCESSEUR DE
< BASE DE CMS4'.
IF IGE,,,X100
IDP "LOAD - RELEASE 16/12/1974"
X100: VAL 0
IF IGE,X100,X100,
IDP " L - RELEASE 27/12/1974"
X100: VAL 0
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 .....
< 2 VERSIONS SONT ASSEMBLABLES
< SUIVANT LA VALEUR DU PARAMETRE
< D'ASSEMBLAGE 'IGE' :
< 1- UN PROCESSEUR DE BASE DE CMS4 ,
< POUR IGE<=0 : LOAD.
< 2- UNE BRANCHE DE L'OVERLAY DE 'GE' ,
< POUR IGE>0 : L.
< LE PROGRAMME GENERE SE TROUVE
< DANS L'ITEM2.
PAGE
<
<
< B U F F E R S :
<
<
TABLE
ZERO: EQU $ < ZERO TRANSLATABLE DU PROGRAMME.
IF IGE,,,X100
SPROG: VAL 'DF0
X100: VAL 0
IF IGE,X100,X100,
SPROG: VAL '100 < UNE TRANSLATION AUSSI FAIBLE
< PERMET DE CHARGER CE PROCESSEUR
< AVEC LE !LOAD EXISTANT.
X100: VAL 0
<
< INTERFACE AVEC UCPRS-CMS4 :
<
IF IGE,,,X100
DZS 'C
ASCI "LOAD"
X100: VAL 0
IF IGE,X100,X100,
DZS 7 < ZONE DES ARGUMENTS DE 'GE'.
<
<
< C H A R G E M E N T D E S O V E R L A Y S :
<
<
PROG
OVL: EQU $
< ON A ICI :
< A=@DEMSGN ,
< W=@BRANCH.
SVC 0 < ENVOI DE LA DEMANDE AU SGN.
JNE Z1 < CAS DES ERREURS DE CHARGEMENT.
BR 5,W < SI OK , ON PASSE LA MAIN A
< LA BRANCHE CHARGEE.
Z1: EQU $
RSR < RETOUR POUR ERREUR.
<
<
< E N - T E T E D U P R O C E S S E U R :
<
<
TABLE
BRANCH: EQU $
ASCI " L " < NOM DU PROCESSEUR ' L'.
X100: VAL 0
BYTE '04;'D0
WORD '1FE0 < TAILLE OCTET QUI LUI EST
< NECESSAIRE A PRIORI , ET CECI
< QUELQUE SOIT LA TAILLE DU
< PROGRAMME A CHARGER.
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
PAGE
IF IGE,X100,X100,
<
<
< C O N S T A N T E S D E L ' I T E M :
<
<
LTN: VAL '52 < LONGUEUR DE L'EN-TETE ITEM.
LTNI: VAL '561 < LONGUEUR TOTALE (EN-TETE+CORPS).
LRITEM: VAL 4 < INDEX MOT DE LA LONGUEUR
< REELLE DU CORPS DE L'ITEM.
IINDIC: VAL 5 < INDEX MOT DU TYPE DE L'ITEM.
< 'P' POUR LES PROGRAMMES.
PILE: VAL 'FF0-6 < PILE DU SYSTEME 'GE'.
NBCAR: VAL 74 < NBRE DE CARACTERES/LIGNE.
NBLIG: VAL 35 < NBRE DE LIGNES/PAGE.
X100: VAL 0
PAGE
<
<
< C O M M O N :
<
<
COMMON
TOUDEB: EQU $
<
< BUFFERS DE TRAVAIL DU LOADER :
<
BUFFER: DZS 40 < BUFFER D'ENTREE.
BUFBIN: DZS 41 < BUFFER D'ENTREE DU BINAIRE.
< (+1 A CAUSE DE L'INTERFACE SGF).
INDEX: WORD 80 < INDEX BUFFER BINAIRE.
KSTORE: DZS 20
CHKSUM: DZS 1 < CHECKSUM.
ABSMOD: WORD -1
ADSTOC: DZS 2 < QUADRUPLET 'AU FRAIS'.
IF IGE,,,X100
CTRANS: DZS 1 < CONSTANTE DE TRANSLATION.
MAXMEM: WORD SPROG < ADRESSE MAX ACCESSIBLE PAR
< LE PROGRAMME QUE L'ON CHARGE.
X100: VAL 0
IF IGE,X100,X100,
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'.
X100: VAL 0
PAFINI: DZS 1 < RELAI POUR LES SUITES DE
< COMMANDES.
ADLANC: DZS 1 <A DRESSE 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.
IF IGE,,,X100
OPNBO: WORD '0305 < OPEN-OLD ENREGISTREMENT.
WORD 1 < CLEF=1.0.
WORD 0
X100: VAL 0
CCI: WORD 1 < RETOUR AU CCI SI ERREUR.
IF IGE,X100,X100,
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
X100: VAL 0
IF IGE,,,X100
IOCBIN: WORD '0308 < LECTURE MODE SAVE.
WORD BUFBIN-ZERO*2
WORD 82 < (+2 RESERVES POUR LE SGF).
X100: VAL 0
IOCBPC: WORD '0202 < ENTREE COMMANDE.
WORD BUFFER-ZERO*2
WORD 0
IOCBL: WORD '0202 < SORTIE LISTING.
WORD BUFFER-ZERO*2
WORD 0
RETURN: WORD '0D00
PTRBUF: WORD 81 < INDEX BUFFER CARACTERE.
RELBUF: WORD BUFBIN+1,X < RELAI BUFFER BINAIRE BIT INDEX.
IF IGE,X100,X100,
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 ZBO < 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'.
X100: VAL 0
BUFFX: WORD BUFFER,X < RELAI BUFFER COMMANDE BIT INDEX.
TESTRC: WORD RCTEST < ROUTINE DE TEST 'ENTREE R/C'.
REPON: WORD ANSWER < ENTREE SUR NVP=IN.
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
IF IGE,X100,X100,
<
<
< 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.
X100: VAL 0
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.
IF IGE,,,X100
LAD OPNBO
SVC 0 < OUVERTURE DU FICHIER BINAIRE
< DANS LE MODE OPEN-OLD-ENREGIS-
< TREMENT.
JE RELANS < GO ON SI OPEN OK.
X100: VAL 0
IF IGE,X100,X100,
JMP RELANS < ET C'EST PARTI.
X100: VAL 0
<
< SORTIE EN ERREUR DU LOAD :
<
IF IGE,,,X100
HORTEN: EQU $
LAD CCI
SVC 0 < RETOUR AU CCI.
X100: VAL 0
IF IGE,X100,X100,
HORTEN: EQU AGE < LORS DES ERREURS FATALES , ON
< FAIT UN RETOUR CORRECT A 'GE'.
X100: VAL 0
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.
IF IGE,,,X100
LYI 0 < @IMPLANTATION=0 (DANS L'ESPACE
< RELATIF DE L'ESCLAVE).
STZ CTRANS < ESCLAVE.
X100: VAL 0
SLAVE: EQU $
IF IGE,,,X100
LR Y,W < INIT. W A 0.
X100: VAL 0
IF IGE,X100,X100,
LA CTRANS
LR A,W < L'ADRESSE D'2MPLANTATION UTILISEE
< EST CELLE DE L'2TEM2.
X100: VAL 0
<
<
< 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 $
IF IGE,,,X100
STA ADLANC
X100: VAL 0
IF IGE,X100,X100,
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.
X100: VAL 0
IC FINMOD < FIN DE MODULE=VRAI.
JMP LECTUR
<
<
< R E P E A T L O A D :
<
<
REPEAT: EQU $
STB CPTLOD
BR ADLECT
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
IF IGE,,,X100
LA OPNBO
ORI 2
STA OPNBO < MISE EN MODE CLOSE-SAVE DE
< LA DEMANDE 'OPNBO'.
LAD OPNBO
SVC 0 < FERMETURE EN SAVE DE
< L'ENTEGISTREMENT.
BR ADLANC < BRANCHEMENT AU PROGRAMME
< QUE L'ON VIENT DE CHARGER.
X100: VAL 0
IF IGE,X100,X100,
BR RAGE < EN FIN DE CHARGEMENT , ON FAIT UN
< RETOUR A 'GE'.
X100: VAL 0
<
<
< F I N D E B A N D E :
<
<
FINBAN: EQU $
LAI 81
STA PTRBUF
BSR REPON < FIN DE BANDE.
CPI 'D
JNE FINBAN
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
IF IGE,,,X100
LA CTRANS
ADR A,W
X100: VAL 0
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
<
< DEPLACEDEPLACEMENT SUR ADRESSE D
<
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
IF IGE,,,X100
AD CTRANS
X100: VAL 0
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 LU PAR LE SGF
< POUR 'LOAD' , ET RECUPERE DANS LES 4
< DERNIERS K DE LA MEMOIRE POUR ' L'.
<
<
SPLITQ: EQU $
LYI 0
LXI -4
PSR B,X,Y
LAI 80
CP INDEX
JNE PAVID
IF IGE,,,X100
LAD IOCBIN
SVC 0
JNE NOPAIR < ERREUR DANS LE SGF !!!!
X100: VAL 0
IF IGE,X100,X100,
<
< RECUPERATION D'UN BLOC BINAIRE DANS LES
< 4 DERNIERS K DE LA MEMOIRE :
<
LB RELBUF
RBT 0+16 < B=RECEPTEUR=BUFFER BINAIRE.
LA ABO < A=EMETTEUR=ZONE DE STOCKAGE
< DU BINAIRE RESULTANT DE
< L'ASSEMBLEUR SYMBOL.
LXI '50/2 < X=NBRE DE MOTS A DEPLACER.
MOVE < ON PROCEDE COMME SI UNE LECTURE
< SGF AVAIT EU LIEU.
ADRI '50/2,A < PROGRESSION DE LA ZONE DE
STA ABO < STOCKAGE DU BINAIRE.
X100: VAL 0
STZ INDEX
PAVID: EQU $
LX INDEX
LBY &RELBUF
IC INDEX
PLR B,X,Y
STBY &AUFRAI
CPZR Y
JNE STOCK
ANDI '60
CPI '20
JNE SPLITQ+2
ADRI 1,Y
STOCK: EQU $
JIX SPLITQ+2
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
NOPAIR: EQU $ < ERREUR DE PARITE 11.
LAI '11
BR ADRFAT
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
LXI 0 < X=0 LOG LISTING
JMP APIOCS
MSGRC: LXI 2 < SORTIE DE RC-LF
STX IOCBL+2
LXI 0
JMP RETLF
MSGERR: LXI 8 < SORTIE D'UN MESSAGE
STX IOCBL+2
LXI 1 < X=1 ERROR LISTING
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
LXI 0 < X=0 LOG LISTING
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
<
<
<
< T E S T D U R.C. E N F I N D E C O L O N N E
<
<
RCTEST: PSR A
BSR REPON
CPI 'D
PLR A
RSR
<
<
< E N T R E E D E C A R A C T E R E D ' U N E C O M M A N D E
<
<
ANSWER: PSR B,X,Y
BLANC: LAI 81
CP PTRBUF
JNE PLEIN
LAD IOCBPC
SVC 0
STZ PTRBUF
PLEIN: LX PTRBUF
LBY &BUFFX
IC PTRBUF
ANDI '7F
CPI '20
JE BLANC
PLR B,X,Y < RESTAURE B,X,Y APRES SVC TAPS ?????????
FVERIF: RSR
<
<
<
<
<
TOP: EQU $
IF IGE,X100,X100,
<
<
< 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.
X100: VAL 0
PAGE
IF IGE,X100,X100,
<
<
< G E N E R A T I O N D E ' L ' :
<
<
LOCAL
LOC: EQU $
MOK: BYTE '6D;"O"
ASCI "K!" < MESSAGE DE FIN DE GENERATION.
DEMOUT: WORD '0202 < DEMANDE DE SORTIE DU MESSAGE OK.
WORD MOK-ZERO*2
WORD 4
<
< INITIALISATION DE LA GENERATION :
<
PROG
WORD TOUDEB+128 < VALEUR INITIALE DE LA BASE C.
WORD LOC+128 < VALEUR INITIALE DE LA BASE L.
GENERE: EQU $
LRP K
ADRI -1,K
PLR C,L < INITIALISATION DE C ET DE L.
LAD KSTORE
LR A,K < INITIALISATION DE K.
<
< TENTATIVE DE GENERATION :
<
GEN1: EQU $
LAD DEMSGN
SVC 0 < APPEL DU SGN.
JNE GEN2 < CAS DES ERREURS DE GENERATION.
<
< FIN DE GENERATION :
<
LAD DEMOUT
SVC 0 < ENVOI DU MESSAGE 'OK!'.
GEN3: EQU $
LAD CCI
SVC 0 < RETOUR DEFINITIF AU CCI.
JMP GEN3
<
< TRAITEMENT DES ERREURS DE GENERATION :
< (L'ASSIGNATION AU SGN EST MANQUANTE).
<
GEN2: EQU $
LAD CCI
SVC 0 < RETOUR TEMPORAIRE AU CCI.
JMP GEN1 < VERS UNE NOUVELLE TENTATIVE.
X100: VAL 0
END
END GENERE
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.