PAGE SOLAR: VAL 0 < VERSION T1600 : SOLAR,X200,,X200 SOLAR: VAL 1 < SOLAR 16.65 : SOLAR,,X200, IGE: VAL 1 < GENERATION D'UNE BRANCHE DE < L'OVERLAY DE 'GE'. IGE: VAL 0 < GENERATION D'UNE VERSION < 'PROCESSEUR DE BASE DE CMS4'. IF IGE,,,X100 IDP "SYMBOL - RELEASE 16/03/1975" X100: VAL 0 IF IGE,X100,X100, IDP " S - RELEASE 31/12/1974" X100: VAL 0 IF SOLAR,X200,,X200 IDP "VERSION T1600" X200: VAL 0 IF SOLAR,,X200, IDP "VERSION SOLAR 16.65" X200: VAL 0 IDP "JOHN F. COLONNA" < < < A S S E M B L E U R S Y M B O L : < < < NOTA : < L'ASSEBLEUR SYMBOL EST EN FAIT L'ASSEMBLEUR ASM < (ASM=ASSEMBLEUR SQUELETTIQUE MINABLE) PRODUIT < PAR UNE USINE QUI S'EST LANCEE DANS L'INFORMATIQUE < JE VEUX PARLER DE LA TELEMECANIQUE . DONC , CET < ASM A ETE ADAPTE AUX BESOINS PREMIERS DU < CLIENT (MOI EN L'OCCURENCE) , EN RESPECTANT < L'INTERFACE AVEC UCPRS-CMS4 , ET LES FABULEUX < SERVICES QU'IL MET A LA DISPOSITION DES < UTILISATEURS .... < ON PEUT OBTENIR 2 VERSIONS DE < L'ASSEMBLEUR : < 1- IGE<=0 : GENERATION D'1NE VERSION < 'PROCESSEUR DE BASE DE CMS4' , < 2- IGE>0 : GENERATION D'UNE BRANCHE DE < L'OVERLAY DE 'GE'. < < 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 DE L'ITEM. LTNI: VAL '561 < LONGUEUR TOTALE D'UN ITEM < (EN-TETE+CORPS). PILE: VAL 'FF0-6 < PILE UTILISEE PAR LE SYSTEME < 'GE' ET PAR LA BRANCHE ' S' < LORS DES CHARGEMENTS OVERLAY. NBLIGV: VAL 35 < NBRE DE LIGNES/PAGE. NBCARV: VAL 74 < NBRE DE CARACTERES/LIGNE. X100: VAL 0 PAGE < < < B U F F E R S : < < TABLE ZERO: EQU $ < ZERO RELATIF DU PROGRAMME. IF IGE,,,X100 DZS 'C < INTERFACE AVEC CALL DITEM: EQU $ IF SOLAR,X200,,X200 ASCI "ASMT" X200: VAL 0 IF SOLAR,,X200, ASCI "ASMS" X200: VAL 0 X100: VAL 0 IF IGE,X100,X100, < < < C H A R G E M E N T D E S O V E R L A Y S : < < PROG DZS 7 < ZONE DE TRANSMISSION DES < ARGUMENTS DE 'GE'. < < ENTRY DE CHARGEMENT : < OVL: EQU $ < ON A ICI : < A=@DEMSGN , < W=@BRANCH. SVC 0 < APPEL DU SGN. JNE Z14 < CAS DES ERREURS DE CHARGEMENT. BR 5,W < EN CAS DE CHARGEMENT OK , ON < PASSE LA MAIN A LA BRANCHE < CHARGEE. < < CAS DES ERREURS DE CHARGEMENT : < Z14: EQU $ RSR < RETOUR EN ERREUR. < < < E N - T E T E D U P R O C E S S E U R : < < TABLE BRANCH: EQU $ ASCI " S " X100: VAL 0 BYTE '04;'D0 IF IGE,X100,X100, WORD '1FE0 < TAILLE EN OCTETS. X100: VAL 0 IF IGE,,,X100 DBCHIT: EQU $ WORD SIZE < TAILLE EN OCTETS X100: VAL 0 WORD ASM < ADRESSE DE RUN DE SYMBOL. PROG IF IGE,,,X100 WORD 0 < POUR FAIRE $=$+1. X100: VAL 0 IF IGE,X100,X100, WORD NBCARV*NBLIGV < POUR FAIRE $=$+1 , ET AUSSI < POUR VALIDER LES INDEX D'ACCES < A L'ITEM1 LORS DE LA SIMULATION < DE LA LECTURE DES CARTES. X100: VAL 0 PSYMB: EQU $ LRP L BR -2,L < ENTRY DANS SYMBOL. < < BUFFERS DE TRAVAIL DE SYMBOL : < IF IGE,X100,X100, WORD FINASS < PERMET D'ABORTER LES ASSEM- < BLAGES EN ERREUR PAR 'BR 9,W'. X100: VAL 0 IF IGE,,,X100 ABORT: WORD NDS < LORS DE LA RENCONTRE D'UN < ERREUR '17' DANS LA VERSION < PROCESSEUR DE BASE DE CMS4 , < ON EDITE LES SYMBOLES NON DEFINIS < PUIS ON ABORTE L'ASSEMBLEUR. X100: VAL 0 ZACQ1: DZS 9 < BUFFER DE SORTIE DU LISTING. ZACQ: DZS 41 < BUFFER D'ENTREE UNE LIGNE IF IGE,,,X100 BUFSGF: DZS 128 < BUFFER POUR LES FICHIERS X100: VAL 0 BUFBIN: DZS 41 < BUFFER DE SORTIE DU BINAIRE. PAGE < < < C O M M O N D E S Y M B O L : < < COMMON COMMUN: EQU $+128 IF SOLAR,,X200, < < < C O N S T A N T E S F L O T T A N T E S : < < ZCDF: WORD 0 ACDF: WORD CDF ACOMFL: WORD COMFL CEFLT: WORD TFLOAT+1 M3800: WORD '3800 ZFLOAT: DZS 6 AZFL: WORD ZFLOAT+1,X ARETD: WORD RETDIR X200: 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 SECTION DANS TSYMB. TESAT: WORD PTESAT < TEST 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). IF IGE,X100,X100, AOVL: WORD OVL < ROUTINE DE CHARGEMENT DES < OVERLAYS. ASIMUL: WORD SIMUL < SIMULATION LECTURE DE CARTES < A PARTIR DE L'ITEM1. X100: VAL 0 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 IF IGE,,,X100 ABFSG0: WORD BUFSGF ABFSGF: WORD BUFSGF+1,X X100: VAL 0 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 ABUFBN: WORD BUFBIN+1,X < +1 A CAUSE DE L'INTERFACE SGF. 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 SOLAR,,X200, RETEQ1: WORD RETEQ-1 X200: 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 IF IGE,X100,X100, 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. X100: VAL 0 PAGE < < DEFINITION DU NVP DE SORTIE IMPLICITE : < IF IGE,,,X100 NVPO: VAL '0402 < VALEUR IMPLICITE SI 'SYMBOL'. KNVPO: VAL 0 X100: VAL 0 IF IGE,X100,X100, NVPO: VAL '0202 < VALEUR IMPLICITE SI ' S'. KNVPO: VAL 'B-2*'100 < DE FACON A PASSER SUR NVP='B. X100: VAL 0 < < < 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 0 < @OCTET DE 'SYMBOL'. DEBMAC: EQU $-1 < ZONE INITIALISEE PAR MACQ. SIGNE: WORD 0 SIGN1: WORD 0 ETAT: WORD 0 LG: WORD 0 INDICA: WORD 0 COND: DZS 2 SYMBOL: DZS 3 VALEUR: EQU SYMBOL INDHEX: EQU SYMBOL+1 CSTE: EQU SYMBOL+2 FINMAC: EQU $-1 NIVSYM: WORD 0 CLE: WORD 0 IF IGE,,,X100 IOCB: WORD '0101 < ENTREE CARTES SUR NVP=1 WORD ZACQ-ZERO*2 WORD 80 X100: VAL 0 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 0 < @OCTET DE 'SYMBO2'. WORD 22 NELT: WORD 0 NLIG: WORD 0 IF IGE,,,X100 IOCB5: WORD '0302 < SORTIE BINAIRE. WORD BUFBIN-ZERO*2 WORD '52 X100: VAL 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 0 NDEP: WORD 0 ETATS: WORD 0 IF SOLAR,,X200, SECMAX: WORD 0 X200: 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 NBLIG: WORD 0 SITUAT: WORD 0 DEPLA2: WORD 0 IBUFBN: WORD 0 SYMBO2: DZS 3 FININ: EQU $-1 WORD '2B WORD 0 RCLF: WORD '0D0A ASCI "ERA " IF SOLAR,X200,,X200 ZTR: WORD '28 X200: VAL 0 IF SOLAR,,X200, ZTR: WORD 0 X200: 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 SOLAR,X200,,X200 WORD 0 X200: VAL 0 SAUPAG: WORD '0D50 M3277: WORD 3277 IOCB6: WORD 0 IF IGE,,,X100 IOCB7: WORD 0 X100: VAL 0 IF IGE,X100,X100, IOCB7: WORD '0205+KNVPO < PAGE SERA EN FAIT UN EFFACEMENT < DE L'ECRAN DE LA VISU. X100: VAL 0 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 SOLAR,,X200, INACTD: WORD 0 INFL: WORD 0 X200: VAL 0 FINLAN: EQU $-1 IF SOLAR,X200,,X200 KSTORE: EQU $-1 DZS 17 < PILE DE SYMBOL. X200: VAL 0 IF SOLAR,,X200, KSTOR: WORD AKSTOR KSTOR3: WORD AKSTOR+3 KSTOR4: WORD AKSTOR+4 X200: VAL 0 IF SOLAR,X200,,X200 DEMMEM: WORD '0004 < CETTE DEMANDE D'ALLOCATION < 8K MEMOIRE N'EST UTILISEE QUE < PAR LA VERSION BATCH (CR+LP) < DE SYMBOL ; DANS TOUS LES CAS < ELLE EST RECOUVERTE PAR LA < PILE AU COURS DE L'ASSEMBLAGE. WORD 0 WORD '4000 < DEMANDE DE 8K MOTS. X200: VAL 0 DEBRES: EQU $-1 DZS FINSAV-DEBSAV < ZONE DE SAUVEGARDE. IF IGE,,,X100 OPNBO: WORD '0304 < OPEN-NEW ENREGISTREMENT. WORD 1 < CLEF=1.0. WORD 0 X100: VAL 0 CCI: WORD '0001 < APPEL DU CCI. IF IGE,X100,X100, DEMSGN: WORD '0602 < DEMANDE 'LOAD SOUS :SYS' AU SGN. WORD 0 < ADRESSE DE LA 2EME BRANCHE < D'OVERLAY (' Z') , INITIALISEE < LORS DE LA GENERATION. WORD ZERO-BRANCH+PILE-LTNI-LTNI*2 WORD -1 X100: VAL 0 PAGE < < < A D R E S S E S D ' E R R E U R S : < < MERR: WORD ERR < 0 ERREUR DE PARITE (SUPPRIMEE) . UTILISEE DANS LA VERSION ' S' < 1- CARTE AYANT PLUS DE 80 CARACTERES < 2- CARTE 'END' ABSENTE DE L'ITEM1 < 3- BINAIRE OVERFLOW. < 1 ERREUR D'ECRITURE. < 2 ERREUR DANS UNE EXPRESSION. < 3 ETIQUETTE INTERDITE OU MANQUANTE. < 4 SYMBOLE INCORRECT. < 5 EXPRESSION INTERDITE. < 6 EXPRESSION NON DEFINIE. < 7 DEPLACEMENT HORS-LIMITES. < 8 DOUBLE DEFINITION. < 9 SATURATION DES TABLES. < 10 CHAINAGE INCORRECT < 11 ADRESSE INACCESSIBLE. < 12 PASSAGE DU $ AU-DELA DE 32K. < 13 CONTEXTE IMPROPRE. < 14 ADRESSE <0 OU >32K. < 15 LIMITE DE SECTION 'PROG' NON ATTEINTE. < 16 ENCHAINEMENT DES SECTIONS INCORRECT. < 17 SYMBOLE(S) NON DEFINI(S) LORS DE LA RENCONTRE DU 'END'. < < OPERATIONS SUR FICHIER D'ENTREE < IF IGE,,,X100 OPEN5O: WORD '0505 < OPEN 5 OLD WORD 2 < CLE 2.0 WORD 0 CLOS5S: WORD '0507 < CLOSE 5 SAVE WORD 2 WORD 0 AEOT: WORD EOT AECHO: WORD ECHO LCNF: WORD SPLCNF < SP DE LECTURE SUR FICHIER INDIN: DZS 1 < INDEX DE LECTURE SUR FICHIER X100: VAL 0 IF SOLAR,,X200, DEMMEM: WORD '0004 WORD 0 WORD '2000 X200: VAL 0 IF IGE,,,X100 PATCH: VAL COMMUN+128-$ DZS PATCH X100: VAL 0 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 SOLAR,X200,,X200 WORD '092F < BIO. X200: VAL 0 IF SOLAR,,X200, WORD '61A0 < XM. X200: 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 SOLAR,X200,,X200 WORD 0 X200: VAL 0 IF SOLAR,,X200, WORD '324D < LRM. X200: 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 SOLAR,,X200, 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. X200: 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 SOLAR,,X200, 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 '998F;'0D00 < FLOAT. X200: 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 SOLAR,X200,,X200 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 X200: VAL 0 IF SOLAR,,X200, 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 X200: VAL 0 TALON: BYTE 0;'21;3;'21;'22;5;6;5;6;5 IF SOLAR,X200,,X200 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 X200: VAL 0 IF SOLAR,,X200, 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 X200: 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 IF SOLAR,,X200, AKSTOR: EQU $-1 DZS 100 X200: VAL 0 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. LGINI: VAL FININ-DEBIN < LONGUEUR DE LA ZONE A INITIALISER < AU LANCEMENT DE SYMBOL. LCALEX: VAL FINCAL-DEBCAL LMACQ: VAL FINMAC-DEBMAC LTABCO: VAL FINTAB-TABCO < LONGUEUR TABLE DES CODES < OPERATION. LTABTY: VAL 16 LTSYMB: VAL 6 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 IF IGE,X100,X100, < < 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 $ X100: VAL 0 IF SOLAR,,X200, LB KSTOR LR B,K < INITIALISATION DE LA PILE K. X200: VAL 0 LXI LGINI < INITIALISATION DE SYMBOL. STZ &ADINI JDX $-1 IF SOLAR,,X200, IC NBLIG X200: VAL 0 STZ LIST2 LYI LTSYMB STY NSYMB LXI -1 < INITIALISATION DE TSYMB. C1: EQU $ ADRI 1,X LBY &SYMBIN STBY &ATSYMB CPI 'FF JNE C1 SURCH: EQU $ IF SOLAR,X200,,X200 LAD KSTORE LR A,K < INITIALISATION DE K. X200: VAL 0 BSR PAGE < SAUT DE PAGE !?!!!!?!?! IF IGE,,,X100 < < TEST D'ASSIGNATION DES NVP 4 & 5 : < LYI '81 < POUR TEST 'NVP NON ASSIGNE'. LBI 'F < 'F EST UNE FONCTION INEXISTANTE. SBT 5+16 < NVP=4. STB IOCB6 LAD IOCB6 SVC 0 < TEST D'ASSIGNATION DU NVP=4. CPR X,Y < TEST DES CONDITIONS DE RETOUR. JNE Z3 < OK , NVP=4 ASSIGNE. < < SI NVP=4 NON ASSIGNE , ON PREND NVP=2 POUR OUT : < LAI 2 < NVP=2=OUT. STBY IOCB1 STBY IOCB2 STBY IOCB3 STBY IOCB4 LAD IOCB6 < RESTAURE A=@IOCB6. Z3: EQU $ IF IGE,,,X100 SBT 7+16 < NVP=5. STB IOCB6 SVC 0 < TEST D'ASSIGNATION DU NVP=5. CPR X,Y < TEST DES CONDITIONS DE RETOUR. JE Z2 < NVP=K NON ASSIGNE < < DANS LE CAS NVP=K, ON OUVRE LE FICHIER CORRESPONDANT EN OLD (CLE 2.0) < STZ INDIN < OBLIGER LA LECTURE SUR FICHIER LXI 0 LAI 'FF STBY &ABFSGF LAD OPEN5O < OPEN 5 OLD SVC 0 JE Z2 LAD CCI < ERREUR SVC 0 JMP $-1 Z2: EQU $ X100: VAL 0 < < OUVERTURE EN MODE NEW DU FICHIER BINAIRE : < LAD OPNBO SVC 0 JE Z1 < L'OUVERTURE S'EST FAITE EN < NEW AVEC LA CLEF 1.0. CPR X,Y JE Z1 < NVP=3=BO N'EST PAS ASSIGNE < MAIS ON ASSEMBLE MALGRE TOUT. LAD CCI SVC 0 < ABORT DE L'ASSEMBLAGE DANS LE CAS < D'UNE OUVERTURE IMPOSSIBLE. JMP $-1 < CAS D'UN !GO. Z1: EQU $ < < TEST DE FONCTIONNEMENT EN BATCH : < LB IOCB < ACCES A LA DEMANDE D'ENTREE < DES LIGNES A ASSEMBLER. ADRI 9,B < ON LA FAIT PASSER DE LA FONCTION < '01 A LA FONCTION '0A : < SUR CR : LA FONCTION '0A EST < INEXISTANTE (ERREUR < '11) , < SUR VISU : LA FONCTION '0A < (=ECRITURE GRAPHIQUE) < EST INACCESSIBLE A < A L'INSTANT (ERREUR < '03). STB IOCB LAD IOCB SVC 0 < ENVOI DE LA FONCTION '0A SUR < LE NVP D'ENTREE DES LIGNES. LR X,A < A=CODE ERREUR. CPI '03 < EST-CE FONCTION INACCESSIBLE ??? JE Z100 < OUI , C'EST DONC UN ASSEMBLAGE < DU TEMPS PARTAGE ... LAI 2-SOLAR*80 < SINON , C'EST UN ASSEMBLAGE < DU BATCH. STA IOCB+2 < ON DOUBLE LE COMPTE OCTETS DE < LA DEMANDE D'ENTREE , AFIN DE < BLOQUER LE SWAPPING OUT PENDANT < LA LECTURE DES CARTES !!!! ADRI -1,B < AFIN DE METTRE LA FONCTION 0 < DANS IOCB CE QUI EVITERA QUE < LE HANDLER LECTEUR DE CARTES < NE FASSE SON PROPRE ECHO DE < LA CARTE LUE. IF IGE,,,X100 LAI 1 < NOP SUR REMISE ECHO STA AECHO X100: VAL 0 IF SOLAR,X200,,X200 < < PASSAGE A 8K MOTS DE MEMOIRE : < LA ATDEP SBT 3 < TRANSLATION DU SOMMET DES < TABLES DE TRAVAIL . (+4K MOTS). STA ATDEP ADRI -1,A STA ATDEP1 ADRI -1,A STA ATDEP2 LAD DEMMEM SVC 0 < PASSAGE DE 4K A 8K MOTS. X200: VAL 0 Z100: EQU $ ADRI -9,B STB IOCB < RESTAURE LA DEMANDE IN SUR < LA FONCTION '01. X100: VAL 0 < < MISE EN @OCTET DES @ DE SYMBOL ET SYMBO2 : < LAD SYMBOL SLLS 1 STA IOCB3+1 < POSITIONNEMENT @OCTET DU BUFFER. LAD SYMBO2 SLLS 1 STA IOCB2+1 < POSITIONNEMENT @OCTET DU BUFFER. STZ IBUFBN LAI 'A3 < DECLARATION DE BINAIRE < TRANSLATABLE ASSEMBLEUR. LBI 0 BSR ASPSO1 STZ INDEND LXI -1 IF SOLAR,X200,,X200 JMP C4 < VERS LA LECTURE D'UNE CARTE. X200: VAL 0 IF SOLAR,,X200, JMP C5 < ET C'EST PARTI ... X200: VAL 0 DEPART: EQU $ LXI LGLAN STZ &ADLAN JDX $-1 IF IGE,,,X100 LA IOCB2 STA IOCB3 X100: VAL 0 IF SOLAR,X200,,X200 LAD KSTORE LR A,K X200: VAL 0 IF SOLAR,,X200, LA KSTOR LR A,K < INITIALISATION DE LA PILE K. X200: VAL 0 IC DEPLA2 IC NLIG SVCTAP: EQU $ BSR SPSAV CPZ INDO JE NEWASK DC INDO < TRAITEMENT 'DO' EN COURS. JMP Z20 NEWASK: EQU $ IF IGE,,,X100 BSR LCNF JAE Z20 BR AEOT X100: VAL 0 IF IGE,X100,X100, BSR ASIMUL < SIMULATION 'LECTURE CARTE' < DANS L'ITEM1. X100: VAL 0 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 SOLAR,X200,,X200 ADRI 19,X STX IOCB4+2 X200: VAL 0 IF SOLAR,,X200, ADRI 1,X STX IOCB1+2 ADRI 18,X STX IOCB4+2 X200: 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'. IF SOLAR,,X200, 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 < REMETTRE DES BLANCS 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 X200: VAL 0 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 SOLAR,,X200, ADRI -16,A < LE REPERTOIRE SOLAR 16.65 < EST PLUS ETENDU QUE CELUI < DU PAUVRE T1600. X200: 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 SOLAR,X200,,X200 CPI 130 < TRAITEMENT 'IF' EN COURS ?? X200: VAL 0 IF SOLAR,,X200, CPI 146 < TRAITEMENT IF EN COURS. X200: VAL 0 JE DIRECT < DIRECTIVE 'EOT'. IF SOLAR,X200,,X200 CPI 131 X200: VAL 0 IF SOLAR,,X200, CPI 147 X200: VAL 0 JE DIRECT < DIRECTIVE 'END'. BRADEP: EQU $ BR ADEP IF SOLAR,X200,,X200 C17: EQU $ CPI 118 JG DIRECT X200: VAL 0 IF SOLAR,,X200, 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 $ X200: 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 SOLAR,,X200, CPI 101 JNE C22 IC INACTD < ACTD. C22: EQU $ X200: VAL 0 CPZ SITUAT JL C23 LAI 13 < INSTRUCTIONS RENCONTREES HORS BR MERR < D'UNE SECTION 'PROG'. C23: EQU $ IF SOLAR,X200,,X200 ADRI -111,A JALE C24 ADRI -40,W JMP CLASS2 C24: EQU $ ADRI 15,A X200: VAL 0 IF SOLAR,,X200, 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 X200: 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 LB NACQ < SAUVEGARDES. LA CARLU < DANS KSTORE. LY NSYMB 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 < ELIMINATION SAUVEGARDES. 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 SOLAR,,X200, CPI '1D JE INSPSR < LRM TRAITE COMME UN PSR. X200: 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 STY NSYMB STA CARLU STB NACQ 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 SOLAR,,X200, CPZ INACTD < EST-CE UN ACTD ??? JE C39 < NON. CPI 7 < ACTD ? JG EREXPA SLLS 5 X200: VAL 0 JMP C39 DIRIF: EQU $ < DIRECTIVE 'IF'. IF SOLAR,,X200, LAD IOCB4 SVC 0 < EDITION DE LA CARTE 'IF'. X200: VAL 0 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'. IF SOLAR,X200,,X200 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 X200: VAL 0 IF SOLAR,,X200, LR A,W LXI 0 CEPACA: EQU $ BSR RECSEC XR A,Y RBT 0 SLRS 8 CPR A,W JNE CEPACA LB SOM < EVALUATION DE LIMINF. ADRI -128,B CPR Y,B JLE C55 LR B,Y C55: EQU $ STY MOTINF X200: VAL 0 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 IF SOLAR,X200,,X200 LY KSTORE+4 < DIRECTIVE 'DSEC'. X200: VAL 0 IF SOLAR,,X200, LY &KSTOR4 < DSEC. X200: VAL 0 STY NSYMB < SUPPRESSION NOUVEAU SYMBOLE < EVENTUEL. 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 SIGMA JL REFEXT < SYMBOLE EXTERNE. 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 REFEXT: EQU $ CPZ SOM JNE DEPFAU < DEPLACEMENT ASSOCIE AU SYMBOLE. LAI 0 CPZ LIST2 JG C65 < SECOND PASSAGE. LA &NIV TBT 12 JC DEJCHA ORI '88 DC TRANS < TRANS=-1. STA &NIV LAI 0 JMP C64 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 ENT: EQU $ < DIRECTIVE 'ENT'. LBI '84 JMP C66 EXT: EQU $ < DIRECTIVE 'EXT'. LBI 'A0 C66: EQU $ CPZ LIST2 JG C69 < SECOND PASSAGE. CPZ NIV JNE C67 BERA6: EQU $ < SYMBOLE DEJA DEFINI. LAI 6 BR MERR C67: EQU $ LA &NIV ANDI 'FC JANE BERA6 < SYMBOLE DEJA CHAINE. CPZ SOM JE C68 DEPFAU: EQU $ < DEPLACEMENT ASSOCIE AU SYMBOLE. LAI 1 BR MERR C68: EQU $ LA &NIV ORR B,A STA &NIV 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 SOLAR,X200,,X200 JE C70 IC SECOUR < SECOND PASSAGE. X200: VAL 0 IF SOLAR,,X200, JE C70 IC SECMAX < SECOND PASSAGE. LA SECMAX STA SECOUR X200: 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 SOLAR,X200,,X200 IC SECOUR LA SECOUR X200: VAL 0 IF SOLAR,,X200, IC SECMAX LA SECMAX STA SECOUR X200: VAL 0 CPI 128 IF IGE,,,X100 JL C72 X100: VAL 0 IF IGE,X100,X100, JL Z23 X100: VAL 0 LAI 9 < NOMBRE DE SECTIONS>127. BR MERR C72: EQU $ IF IGE,X100,X100, < < < 2 E M E B R A N C H E D E L ' O V E R L A Y ' Z ' : < < ZBR: EQU $ ASCI " Z " BYTE '04;'D0 Z23: 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-Z23 ZEROV: EQU ZERO+X10 < ERREUR D'ASSEMBLAGE SI < MAUVAISE IMPLANTATION .... X100: VAL 0 ORI '80 SLLS 8 OR &NIVSYM STA &NIVSYM LY NSYMB < ACTUALISATION KSTORE. IF SOLAR,X200,,X200 STY KSTORE+4 X200: VAL 0 IF SOLAR,,X200, STY &KSTOR4 X200: VAL 0 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 < CHAINAGE SUR 'WORD'. 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 IF SOLAR,,X200, JAG C89 BR CEFLT < CAS DU FLOTTANT. C89: EQU $ X200: VAL 0 CPI 18 JG C77 LB SOM < SORTIE LISTING ('EQU' ET 'VAL'). BSR CONVER < B=VALEUR CONVERSION. STY &ZACQ13 < POIDS FORTS VALEUR. STA &ZACQ14 < 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 SOLAR,X200,,X200 BSR SPLIST < PERFO MOT+SORTIE LISTING. CPZ PVIR X200: VAL 0 IF SOLAR,,X200, 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 X200: 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 SOLAR,,X200, CPZ SECOUR JE C91 < ERREUR : AUCUNE SECTION < N'EST ENCORE DEFINIE !! X200: VAL 0 LA COMDE SLRS 3 < AINSI QUE LE BIT13 ('ENT'). SLLS 3 IF SOLAR,X200,,X200 JMP C93 X200: VAL 0 IF SOLAR,,X200, BR RETEQ1 X200: 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 IF SOLAR,,X200, LA COMDE X200: VAL 0 TBT 11 IF SOLAR,X200,,X200 LA COMDE X200: VAL 0 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 ETATS < 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 ETATS 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 < ADRESSE DEBUT DE SECTION < DANS TSYMB. 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 < W=0 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 IF IGE,,,X100 PSTH: EQU $ < DIRECTIVE 'PSTH'. SBT 8 PSTS: EQU $ < DIRECTIVE 'PSTS'. CPZ SITUAT JLE C109 NR13: EQU $ LAI 13 < INTERDITES DANS 'DSEC'. BR MERR C109: EQU $ CPZ INBRE JNE C110 SBT 0 < NUMERO PAS ENCORE CONNU. C110: EQU $ LR A,B LAI 'B2 BSR ASPSO1 BR ASORLI < SORTIE LISTIONG. X100: VAL 0 IF IGE,X100,X100, < NOTA : < SOUS ' S' , LES DIRECTIVES PSTH < ET PSTS NE SONT PAS RECONNUES !!! X100: VAL 0 DO: EQU $ < DIRECTIVE 'DO'. STA INDO IF SOLAR,,X200, LAD IOCB4 SVC 0 < EDITION DE LA CARTE 'DO'. BSR PAGIN X200: VAL 0 IF IGE,,,X100 BSR LCNF JAE C1300 BR AEOT C1300: EQU $ X100: VAL 0 IF IGE,X100,X100, BSR ASIMUL < SIMULATION 'LECTURE CARTE' < DANS L'ITEM1. X100: VAL 0 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 CPZ LIST2 JG FINASS < SECOND PASSAGE. LXI 0 < OK , RECHERCHE 'EXT' ET 'ENT'. CEND: EQU $ LA &ATSYMB TBT 13 JC SYMENT < 'ENT'. ANDI '28 CPI '28 JE SYMEXT < 'EXT'. CEND1: EQU $ BSR SYMUL JNE CEND 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 IF IGE,,,X100 BSR PAGE LAI '6D < LIBERER L'IMPRIMANTE SWBR A ORI '0D STA SYMBOL LAD IOCB3 SVC 0 LAD CLOS5S < CLOSE 5 SAVE SVC 0 LA OPNBO ORI 3 < MISE EN MODE 'CLOSE-SAVE'. STA OPNBO LAD OPNBO SVC 0 < FERMETURE DE L'ENREGISTREMENT < BINAIRE. LAD CCI SVC 0 < RETOUR AU CCI. JMP $-1 < CAS D'UN !GO. X100: VAL 0 IF IGE,X100,X100, < < PREPARATION DU CHARGEMENT DE L'OVERLAY : < 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. LAI "L" SBT 2 < A=' L'. STA 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 X100: VAL 0 EOT: EQU $ < DIRECTIVE 'EOT'. IF IGE,X100,X100, LAI 13 < INTERDIT EN OVERLAY BR MERR X100: VAL 0 IF IGE,,,X100 LA IOCB < CHANGER LE NUMERO DE NVP IBT 5 < ET DE COMMANDE IBT 12 ECHO: EQU $ IBT 15 STA IOCB LXI -1 STA &ABASC LXI 0 STA &ABASC SLRS 10 < CHANGER LE DEBUT DES BUFFERS LB AZACQ < ET LE NOMBRE DE CARACTERES LYI 80 JAE C3000 LB ABFSG0 LYI 255 ADRI 1,Y C3000: EQU $ SLLD 1 STB IOCB+1 STY IOCB+2 BR ADEP X100: VAL 0 SYMEXT: EQU $ < SYMBOLE EXT. LAI 'A5 JMP C116 SYMENT: EQU $ < SYMBOLE ENT. CPI 6 JE CEND1 < 'OFF'. LAI '3A C116: EQU $ STX ZTR LR A,L < SAUVEGARDE DE A. LAD &ATSYMB < A=ADRESSE DU SYMBOLE. BSR TRASYM < TRANSFERT DANS SYMBOL. BSR SPTAS < PUIS DANS BUF. LR L,A < RESTAURATION DE A. BSR ASPSO2 LX ZTR ADRI 1,X LB &ATSYMB < MOT VALEUR. LAI '22 BSR ASPSO1 LX ZTR < RESTAURATION DE X. JMP CEND1 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 IF IGE,,,X100 CPZ NR < EST-CE UNE VRAIE CARETE NDS , < OU UNE CARTE NDS SIMULEE SUITE < A UNE ERREUR '17' ??? JNE FINASS < NON , ERREUR '17' : ABORT .... X100: VAL 0 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'. LXI 0 C120: EQU $ LA NSYMB CPR A,X JE C119 < TERMINE. LR A,L < L=NSYMB. LA &ATSYMB LBI 3 ANDR A,B ADRI 2,B < B=LONGUEUR DU SYMBOLE. JAL PLUSUN < NOM DE SECTION. ANDI 'C4 JANE PLUSUN < SYMBOLE ABSOLU , NON DEFINI OU ENT. LA &ATSYMB SLRS 8 < A=NUMERO DE SECTION. CP BINARY JE TASSER < SYMBOLE A ELIMINER. PLUSUN: EQU $ ADR B,X JMP C120 TASSER: EQU $ LR X,Y < SAUVEGARDE DE X. C121: EQU $ ADR B,X CPR X,L JE ACTUAL < ACTUALISATIONS. LA &ATSYMB SBR B,X STA &ATSYMB ADRI 1,X JMP C121 ACTUAL: EQU $ < ACTUALISATION DE NSYMB. SBR B,L LR L,A STA NSYMB LR Y,X < ACTUALISATION DE TDEP. LAD &ATSYMB LR A,L < L=ADRESSE DU SYMBOLE ELIMINE. LR B,W < W=LONGUEUR DU SYMBOLE ELIMINE. LXI 0 DEPUL: EQU $ LA NDEP CPR X,A JNE C122 LR Y,X JMP C120 < ACTUALISATIONS TERMINEES. C122: EQU $ LA &ATDEP SCLD 1 SLRS 1 < MEMORISATION DE A0 DANS B. CPR A,L JG DEPUL1 SBR W,A SLLS 1 SCRD 1 < RESTITUTION DE A0. STA &ATDEP DEPUL1: EQU $ ADRI -3,X JMP DEPUL PAGE IF IGE,X100,X100, < < < 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 71 < POUR REMETTRE A 'SPACE' 72 < 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 X100: VAL 0 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 SOLAR,X200,,X200 IC RANG < MISE A JOUR RANG DE L'ELEMENT. X200: 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 SOLAR,,X200, IC RANG X200: 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 73 < FIN DE CARTE? JL C2200 LAI '0D JMP C2201 C2200: EQU $ LBY &AZACQ C2201: EQU $ STA CARLU CPZ ETAT 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 ETAT 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 IF SOLAR,X200,,X200 STX KSTORE+3 X200: VAL 0 IF SOLAR,,X200, STX &KSTOR3 X200: VAL 0 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 ETAT 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 < SAUVEGARDE ADRESSE MOT DE < COMMANDE. STA NIVSYM LAD SYMBOL LR A,W LA LG < LONGUEUR DANS A. STA &ATSYMB < ET DANS LE MOT DE COMMANDE. 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 4 JL C155 RSR C155: EQU $ IF SOLAR,,X200, PSR B,Y LAI 1 < 2K SUPPLEMENTAIRES SLLS 11 LR A,Y SLLS 1 AD DEMMEM+2 STA DEMMEM+2 LAD DEMMEM SVC 0 JNE PLUMEM LX NDEP < DEPLACER TDEP LAD &ATDEP ADRI 1,A LR A,B ADR Y,B NGR X MOVE LA ATDEP < DEPLACEMENT DEBUT TABLE ADR Y,A STA ATDEP ADRI -1,A STA ATDEP1 ADRI -1,A STA ATDEP2 PLR B,Y RSR PLUMEM: EQU $ X200: VAL 0 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 < SYMBOLE NON TROUVE : A=0. LAD &ATSYMB < SAUVEGARDE ADRESSE DU MOT < DE COMMANDE. 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 $ CPZ IBUFBN JNE C160 LXI 39 < RAZ DE BUFBIN. STZ &ABUFBN JDX $-1 C160: EQU $ LXI -4 C161: EQU $ LBY &ABUF < ELIMINATION DES NULLS. JAG C162 LAI 'A0 STBY &ABUF C162: EQU $ JIX C161 LX IBUFBN < RANGEMENT DANS BUFBIN. LA BUF STA &ABUFBN ADRI 1,X LA BUF+1 STA &ABUFBN ADRI 1,X STX IBUFBN LBY BUF CPI '30 JE PERBIN < COMMANDE 'EOF'. LA CHECK < CALCUL DU CHECKSUM. AD BUF ADCR A AD BUF+1 ADCR A STA CHECK LAI 40 < TEST SU BUFFER COMPLET. CPR A,X JNE SPERFO < NON. PERBIN: EQU $ CPZ LIST2 JG C163 < SECOND PASSAGE. IF IGE,,,X100 LAD IOCB5 SVC 0 < SORTIE BINAIRE SUR SGF. X100: VAL 0 IF IGE,X100,X100, < < SIMULATION D'UNE ECRITURE SUR < FICHIER SEQUENTIEL : < LB ABO < B=RECEPTEUR=ZONE IMPLANTEE < EN TETE DES 4 DERNIERS K. LA ABUFBN RBT 0 < RAZ DU BIT INDEX. LXI '50/2 < X=NBRE DE MOTS CONSTITUANT UN < ARTICLE DU FICHIER BINAIRE. MOVE < SIMULATION DE L'ECRITURE SGF. ADRI '50/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 -'50/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. X100: VAL 0 C163: EQU $ STZ IBUFBN SPERFO: EQU $ RSR IF IGE,X100,X100, < < TRAITEMENT DES ERREURS : < Z22: EQU $ ADRI -1,K < RECUPERATION DU BSR D'APPEL. BR ERA0 < ERREUR 0 D'ASSEMBLAGE. X100: VAL 0 < < < 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 18 < PLUS DE SORTIE DU 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 IF IGE,,,X100 LAI 2 STA IOCB3+2 LAI '0D SWBR A ORI "@" STA SYMBOL X100: VAL 0 LAD IOCB3 SVC 0 PLR X STZ NBLIG RSR < < < PPAGIN: EQU $ < MISE EN PAGE. IC NBLIG LA NBLIG IF IGE,,,X100 CPI 55 X100: VAL 0 IF IGE,X100,X100, CPI NBLIGV < TEST PAR RAPPORT AU NBRE DE < LIGNES SUR UN ECRAN DE VISU. X100: VAL 0 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 : < < IF IGE,X100,X100, PSTH: EQU NR13 < ERREUR 13. PSTS: EQU NR13 < ERREUR 13. X100: VAL 0 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. BSR SORCLF LAD IOCB2 SVC 0 STZ BASCUL < CHANGEMENT DU NVP D'ENTREE. IF IGE,,,X100 LA NR < TEST DE L'ERREUR PRODUITE ??? CPI 17 < EST-CE LA FATALE ERREUR '17' ??? JNE E1947 < NON , L'ASSEMBLAGE PEUT SE < POURSUIVRE .... < < CAS DE LA FATALE ERREUR '17' : < EORR W,W < RAZ DE LA BASE W. BR ABORT-ZERO,W < VERS L'EDITION DES SYMBOLES < NON DEFINIS , PUIS L'ABORT.... < < CAS DES AUTRES ERREURS : < E1947: EQU $ BR RETER X100: VAL 0 IF IGE,X100,X100, LAI BRANCH-ZERO LR A,W < W=@BRANCH. BR 9,W < LES ASSEMBLAGES EN ERREUR < SONT ABORTES (VERS 'EOT'). X100: VAL 0 PAGE IF SOLAR,,X200, < < < T R A I T E M E N T D E S C O N S T A N T E S < F L O T T A N T E S : < < TFLOAT: EQU $ IC NACQ < < ENTRY DU MODULE : < LAI -1 LR A,W LYI 0 LBI "+" < SIGNE DE LA MANITISSE PAR DEFAUT. LX NACQ LBY &AZACQ CPI '20 JE TFLOAT < ELIMINATION DES 'SPACE'. CPI "+" JE C177 CPI "-" JNE C178 C177: EQU $ LR A,B < SAUVEGARDE DU SIGNE DE LA < MANTISSE DANS B. MANTIS: EQU $ IC NACQ C178: EQU $ LX NACQ LBY &AZACQ CPI "." JNE C179 LR Y,W < ON A TROUVE UN 'POINT'. JMP MANTIS C179: EQU $ CPI "E" JE EXPOS < ON A TROUVE LE DEBUT DE < L'EXPOSANT. CPI '0D JE C180 < FIN DE CARTE SANS EXPOSANT. RBT 8 CPI '30 < TEST PAR RAPPORT A '0'. JL NFLOAT < ERREUR. CPI '39 < TEST PAR RAPPORT A '9'. JG NFLOAT < ERREUR. LBY &AZACQ LR Y,X STBY &AZFL LR X,A CPI 8 < LA MANTISSE COMPORTE-T'ELLE < PLUS DE 8 CHIFFRES ??? JE NFLOAT < OUI , ERREUR. ADRI 1,Y JMP MANTIS < AU CHIFFRE SUIVANT. < < CAS OU ON A TROUVE LA FIN DE LA MANTISSE : < EXPOS: EQU $ IC NACQ < PASSAGE AU CARACTERE SUIVANT. C180: EQU $ PSR Y SLLD 8 ORR Y,B STB ZFLOAT CPZR W JGE C181 < CORRECTION DE L'EXPOSANT. LR Y,W < PAS DE '.' : LA DIFFERENCE=0. C181: EQU $ SBR Y,W BSR CALEX < CALCUL DE L'EXPOSANT. JAE C182 < OK. < < ERREURS FLOTTANTES : < CDF: EQU $ < A T T E N T I O N : PROVISOIRE ! NFLOAT: EQU $ LAI 1 BR MERR < < CAS DES BONS NBRES FLOTTANTS : < C182: EQU $ LA SOM ADR W,A < CORRECTION DE L'EXPOSANT. PLR X STBY &AZFL LAD ZFLOAT LR A,Y LXI 0 STZ ZCDF BSR ACDF < CONVERSION ... CPZ ZCDF < COMMENT CELA S'EST-IL PASSE ??? JNE NFLOAT < MAL , ERREUR. PSR B < BIEN OK. IC PAS LR A,B LAI '24 IC INFL BR ACOMFL < C'EST TOUT ... X200: VAL 0 PAGE IF IGE,,,X100 < < < LECTURE D'UNE CARTE SUR LECTEUR OU SUR FICHIER. < < SPLCNF: EQU $ LA IOCB < LECTURE FICHIER? SLRS 8 CPI 1 JNE C1100 LAD IOCB SVC 0 LAI 0 RSR C1100: EQU $ LX INDIN < LECTURE SUR FICHIER LBY &ABFSGF < FIN DE SECTEUR? CPI 'FF JNE C1101 LAD IOCB < OUI - RELORE SVC 0 JNE C1108 CPZ &ABFSG0 JL C1108 STZ INDIN < INDEX A ZERO C1101: EQU $ LXI -40 < METTRE LA CARTE A BLANC LAI '20 SLLS 8 ORI '20 STA &AZACQX JIX $-1 LBI -80 < INDEX OUT LX INDIN < INDEX IN C1102: EQU $ LBY &ABFSGF < RELEVER UN CARACTERE ADRI 1,X CPI 'FE < FIN DE CARTE JE C1107 TBT 8 < EST-CE REPETITION /TABULATION? JC C1103 XR X,B < NORMAL - LE PLACER STBY &AZACQX ADRI 1,X XR X,B JMP C1102 C1103: EQU $ RBT 8 CPI 80 < REPETITION OU TABULATION? JGE C1104 ADRI -80,A LR A,B JMP C1102 C1104: EQU $ ADRI -80,A < REPETITION LR A,Y LBY &ABFSGF < CARACTERE A REPETER ADRI 1,X XR X,B < LE PLACER C1105: EQU $ STBY &AZACQX ADRI 1,X CPZR Y < FINI? JE C1106 ADRI -1,Y < NON - CONTINUER JMP C1105 C1106: EQU $ XR X,B JMP C1102 C1107: EQU $ STX INDIN LAI 0 < CODE DE RETOUR RSR C1108: EQU $ LAD CLOS5S < FIN DE FICHIER - LE FERMER SVC 0 STZ INDIN < OBLIGER LA LECTURE SUR LE SUIVANT LXI 0 LAI 'FF STBY &ABFSGF C1109: EQU $ LAD CCI < RETOYR MONITEUR SVC 0 < POUR REASSIGNATION DE 5 LAD OPEN5O < OUVRIR 5 SVC 0 JNE C1109 LAI 1 RSR X100: VAL 0 PAGE < < < T O P U T I L E D E S Y M B O L : < < 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 : < < 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. X100: VAL 0 PAGE IF IGE,X100,X100, < < < G E N E R A T I O N D E L A B R A N C H E ' S ' : < < LOCAL LOC: EQU $ SGN1: WORD '0402 < DEMANDE DE GENERATION DE LA 1ERE < BRANCHE D'OVERLAY (' S'). WORD BRANCH-ZERO*2 WORD ZERO-BRANCH+PILE-LTNI-LTNI*2 WORD -1 SGN2: WORD '0402 < DEMANDE DE GENERATION DE LA 2EME < BRANCHE (' Z') DE L'OVERLAY. AZBR: WORD ZBR-ZERO*2 < ADRESSE D'OCTET DE LA 2EME < BRANCHE D'OVERLAY (' Z'). WORD ZERO-BRANCH+PILE-LTNI-LTNI*2 WORD -1 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 COMMUN < VALEUR INITIALE DE LA BASE L. WORD LOC+128 < VALEUR INITIALE DE LA BASE L. GENERE: EQU $ LRP K ADRI -1,K PLR C,L < INITIALISATION DES BASES C & L. LAD KSTORE LR A,K < INITIALISATION DU REGISTRE K. < < MISE A JOUR DE DEMSGN : < LA AZBR STA DEMSGN+1 < DEMSGN EST INITIALISEE AVEC < LA 2EME BRANCHE D'OVERLAY (' Z') < < TENTATIVE DE GENERATION DE ' Z' : < GEN1: EQU $ LAD SGN2 SVC 0 < ENVOI DE LA DEMANDE AU SGN. JNE GEN2 < ERREUR DE GENERATION. < < TENTATIVE DE GENERATION DE ' S' : < GEN4: EQU $ LAD SGN1 SVC 0 < TENTATIVE DE GENERATION DE LA < 1ERE BRANCHE (' S'). JNE GEN5 < ERREUR DE CHARGEMENT. < < CAS D'UNE GENERATION OK : < LAD DEMOUT SVC 0 < ENVOI DU MESSAGE OK. GEN3: EQU $ LAD CCI SVC 0 < LORS D'1NE BONNE GENERATION , JMP GEN3 < ON FAIT UN RETOUR DEFINITIF AU < CCI. < < ERREUR DE GENERATION DE ' Z' : < GEN2: EQU $ LAD CCI SVC 0 < ON FAIT UN RETOUR TEMPORAIRE < AU CCI , POUR COMPLETER LES < ASSIGNATIONS MANQUANTES. JMP GEN1 < VERS UNE NOUVELLE TENTATIVE. < < ERREUR DE GENERATION DE ' S' : < GEN5: EQU $ LAD CCI SVC 0 < RETOUR AU CCI. JMP GEN4 < TRY AGAIN .... X100: VAL 0 PAGE IF IGE,,,X100 < < < GENERATION EN TANT QU'ITEM. < < FITEM: EQU $ LGIT: VAL FITEM-DBCHIT*2 SIZE: EQU ZERO+LGIT LOCAL LONGR: VAL FITEM-DITEM DEMITE: WORD '0402 < DEMANDE DE GENERATION WORD DITEM-ZERO*2 WORD LONGR*2 WORD 6 PROG WORD DEMITE+128 WORD COMMUN GENERE: EQU $ LRP L LR L,C LA -2,L LR A,L LA -1,C LR A,C IF SOLAR,,X200, LA KSTOR X200: VAL 0 IF SOLAR,X200,,X200 LAD KSTORE X200: VAL 0 LR A,K ITEDEM: EQU $ LAD DEMITE SVC 0 JE FINGEN LAD CCI SVC 0 JMP ITEDEM FINGEN: EQU $ LAD CCI SVC 0 JMP FINGEN END GENERE