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