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