JMP PP * * * COMPLEMENTATION A 10 D'UNE CHAINE * * JSB CMP10 * DEF ADRCH * * CMP10 NOP LDA CMP10,I STA GARST LDB 0,I B= AD. DE LA CH. LDB 1,I B=-N CMB,INB INB B=N+1 CLA STA RET ISZ CMP10 BEGIN ADB DM1 STB IND LDA GARST,I JSB CARI ADA RET CPA O60 JMP IDEM CMA,INA ADA O152 LDB 0 LDA IND JSB STORI CLA,INA STA RET IDEM LDB IND CPB D1 JMP CMP10,I JMP BEGIN * * CONSTRUCTION DE LA CHAINE POMME * * GROS NOP LDB GROS,I STB GROS2 JSB CHZER .POMM DEF POMME LDB NB0 CLA SLB,RSS CCA INB BRS ADB POMME JSB RCOP. GROS2 NOP LDA GROS2,I JSB LIBER JSB CMP10 DEF POMME LDA POMME STA GROS2,I LDB GROS2 JSB SAVE ISZ GROS JMP GROS,I SPC 5 SPC 6 MULTA NOP CLB LDA X2 POINTEUR CHAINE 2 JSB SIGNE CLB,INB STB OP21 CLB LDA X1 POINTEUR CHAINE 1 JSB SIGNE CLB,INB STB OP11 ADB X1,I COMPARAISON LONGUEUR CMB,INB ADB X2,I ADB OP21 SSB,RSS TEST L(CH1) > L(CH2) JMP MULT3 OUI,PAS DE PERMUTATION JSB PERM DEF X1 DEF X2 LDA OP11 IL FAUT AUSSI PERMUTER LDB OP21 LES OP11 & OP21 STA OP21 STB OP11 MULT3 JSB MULTI JMP MULTA,I * * * MULTIPLICATION * -------------- * * MULTI NOP LDA APAR2 STA GARST LDA X1,I ADA X2,I JSB CHZER DEF PAR2 LDA OP11 COMPARAISON DES SIGNES CPA OP21 DES CHAINES 1 ET 2 JMP MULT4 CLA,INA SI NECESSAIRE MISE EN PLACE LDB O55 DU SIGNE - DANS LE 1ER JSB STORI CAR. DE LA CHAINE RESULTAT MULT4 LDA X1,I CMA,INA STA OP10 INITIALISATION DES STA OP1 POINTEURS CHAINE 1 LDA X2,I CMA,INA INITIALISATION DU POINTEUR STA OP2 CHAINE LDA PAR2,I CMA,INA STA P0 INITIALISATION POINTEUR NIVEAU STA P " " " COURANT MCH CLA STA R RAZ RETENUE COURANTE LDA X2 LDB OP2 JSB CARI CHARGEMENT DANS .OP2 D'UN ADA OM60 CARACTERE CHAINE 1 STA .OP2 ET CONVERSION BINAIRE SZA,RSS EST IL NUL ? JMP ZERX2 OUI,TRAITEMENT ZERX2 MCAR LDA PAR2 LDB P JSB CARI CHARGEMENT DANS .P DU CAR. ADA OM60 COURANT CHAINE RESULTAT STA .P ET CONVERSION BINAIRE LDA X1 LDB OP1 JSB CARI CHARGEMENT DU CARACTERE CH. 1 ADA OM60 ET CONVERSION BINAIRE SZA,RSS EST IL NUL ? JMP ZERX1 OUI, TRAITEMENT ZERX1 MPY .OP2 NON , MULTIPLICATION JSB RNU STA R1 ADB .P LDA 1 JSB RNU STA R2 ADB R LDA 1 JSB RNU STA R3 ADB O60 RANGEMENT DU CARACTERE LDA P CHAINE RESULTAT APRES JSB STORI CONVERSION ASCII LDA R3 ADA R2 ADDITION DES RETENUES ADA R1 LA SOMME EST <= A 9 STA R JMP MULT5 ZERX1 LDA R TRAITEMENT ZERX1 ADA .P JSB RNU STA R ADB O60 LDA P JSB STORI MULT5 LDA P DECREMENTATION DES POINTEURS ADA DM1 CHAINES 1 ET RESULTAT STA P ET REINITIALISATION LDA OP1 ADA DM1 STA OP1 CPA OP11 TEST FIN DE BALAYAGE CHAINE 1 RSS JMP MCAR NON ,TRAITEMENT MCAR LDB R OUI ,CONVERSION ASCII ET ADB O60 RANGEMENT DANS CHAINE RESULTAT LDA P DE LA RETENUE JSB STORI LDA OP10 STA OP1 ZERX2 LDA P0 TRAITEMENT ZERX2 ADA DM1 DECREMENTATION POINTEUR NIVEAU STA P0 STA P LDA OP2 " " " CHAINE 2 ADA DM1 STA OP2 CPA OP21 TEST FIN DE BALAYAGE CHAINE 2 RSS JMP MCH NON, TRAITEMENT MCH JSB NORM OUI, NORMALISATION DEF PAR2 HLT 0B RESULTAT VERRRREUX JMP MULTI,I * * RNU NOP CALCULE LA RETENUE CLB DIV D10 (B)= CHIFFRE BINAIRE JMP RNU,I (A)= RETENUE " SPC 5 * * * DIVISION * -------- * DIVIS NOP DIVIDENDE:DV1 LDA X1 DIVISEUR:X1 LDB ZERO QUOTIENT:DV3 JSB COMPA RESTE:DV4 RSS .ER10 JSB ERR10 DIVISION PAR ZERO LDA DV1,I ML1=-NOMBRE INITIAL DE STA ML1 CARACT. DE DV1 CLB STB OP11 OP11 SERVIRA A SAVOIR SI DV1 STB R0 ET X1 ST DE MEME SIGNE OU NON LDA DV1 JSB SIGNE JMP SIGN1 DV1<0 C2 LDA X1 JSB SIGNE JMP SIGN2 X1<0 SUIT1 LDA DV1,I -NDV1 CMA,INA STA NDV1 ADA X1,I (A)=NDV1-NX1 SSA JMP QUOT0 NDV1 32767 STA EXPOS MPY NBDEE SZB .ER21 JSB ERR10 NB. DE DEC. TROP GRAND STA NBDEE LDA X1 TEST DU SGN DE L'ARGUMENT JSB SIGNE ISZ IND2 C'EST NEGATIF ON SAUTE JMP EXPO2 POSITIF. LDA .X1 SUPRESSION DU SGN - JSB SIGN0 JSB NORM DEF X1 HLT 0B EXPO2 CLA INITIALISATION DES POINTEURS STA OP11 POUR LES MULTI. STA OP21 CCB LDA EXPOS SLA TEST DU BIT 0 DE L'EXPOSANT JMP EXPO3 ET DECALAGE. STB IND2 ARS STA EXPOS LDA CHUN 1 MIS DANS PAR3 JSB RANGE STA PAR3 LDA PAR3A STA 1,I JMP EXPO4 EXPO3 ARS STA EXPOS LDA X1 JSB DUPLI DEF PAR3 EXPO4 LDA EXPOS SZA,RSS JMP EXPO5 LDA X2 JSB LIBER LDA X1 JSB DUPLI DEF X2 JSB MULTI LDA X1 JSB LIBER LDA PAR2 STA X1 LDB .X1 JSB SAVE LDA EXPOS TEST DU BIT 0 DE L'EXPOSANT SLA ET DECALAGE JMP *+4 ARS STA EXPOS JMP EXPO4 ARS STA EXPOS JSB PERM DEF PAR3 DEF X2 JSB MULTI LDA PAR3 JSB LIBER LDA PAR2 STA PAR3 LDB PAR3A JSB SAVE JMP EXPO4 EXPO5 LDA IND2 SZA TEST DU SIGNE ARGUMENT JMP EXPO6 LDA X2 X1 EST <0 ,X2 EST IMPAIR JSB LIBER LDA PAR3,I MISE EN PLACE DU SGN - ADA DM1 EN TETE DE PAR3 JSB CHZER DEF X2 LDA .X2 STA GARST CLA,INA LDB O55 JSB STORI LDB X2 INB CCA JSB RCOP. DEF PAR3 JSB PERM DEF PAR3 DEF X2 EXPO6 LDA X1 LIBERATION DES CHAINES X1 ET X2 JSB LIBER LDA X2 JSB LIBER JMP EXPO,I SPC 4 * * * PERMUTATION DES RESERVATION * * JSB PERM * DEF ADCH1 * DEF ADCH2 * PERM NOP LDB PERM LDA 1,I LDA 0,I STA GPERM INB LDA 1,I LDA 0,I LDB PERM,I STA 1,I ISZ PERM LDA GPERM LDB PERM,I STA 1,I JSB LONG LDA 1,I STA GPERM LDA PERM,I STA 1,I LDA GPERM,I LDB GPERM JSB SAVE ISZ PERM JMP PERM,I * * * FABRICATION D'UNE CHAINE DE 0, SAUVEE DS ADRCH * * LDA -N * JSB CHZER * DEF ADRCH * * CHZER NOP STA CARNB -N LDA GARST STA GAR12 POUR LE SAUVER LDA CHZER,I STA GARST POUR L'ESPACE A DROITE LDA .NBCA JSB RANG1 STA GARST,I LDA GARST STA 1,I LDA CARNB CMA,INA INA ARS CMA,INA A=-(NB. TOTAL DE MOTS-2) STA CHZE0 LDA GARST,I INA LDB DBLZE JSB REMPL CHZE0 NOP LDA CARNB CMA,INA INA N+1 LDB O40 ESPACE SLA,RSS N+1 PAIR? JSB STORI OUI, ON MET L'ESPACE LDA GAR12 STA GARST RESTORE GARST ISZ CHZER JMP CHZER,I SPC 3 * * DUPLI * DUPLI FABRIQUE UNE CHAINE EGALE A PTRCH * ET LA SAUVE DANS ADCH * * LDA PTRCH * JSB DUPLI * DEF ADCH * SPC 2 DUPLI NOP JSB RANGE STB TEMP2 LDB DUPLI,I STA 1,I STB TEMP2,I ISZ DUPLI JMP DUPLI,I SPC 3 * * ZERCH * * ZERCH FABRIQUE LA CHAINE ZERO ET LA * SAUVE DANS ADCH. * ATTENTION !! LE DEF EST AVANT LE JSB * -------------------- * * RSS * DEF ADCH * JSB ZERCH * SPC 2 ZERCH NOP LDA ZERO JSB RANGE STB TEMP2 LDB ZERCH ADB DM2 LDB 1,I B = ADRESSE DE ADCH STA 1,I METTRE L'ADRESSE DE RANGEMENT STB TEMP2,I POUR LA SUUVE JMP ZERCH,I * LST HED ** SOUS PROGRAMMES UTILITAIRES ** * UNL IMPRI,LECTU * UNL ************************************************************* * PROGRAMME IMPRI PERMETTANT D'IMPRIMER UNE CHAINE * * APPEL: LDA PTRCH POINTEUR VERS 1ER MOT CHAINE * * LDB LU LOGICAL UNIT * JSB IMPRI * ************************************************************* * IMPRI NOP STA GCH STB GLU LDB PTRFI CPB TABIF LDB .TABI REINITIALISE AU DEBUT DE PILE CPB PTRDE JMP ATTEN LA TABLE EST PLEINE STA 1,I EMPILE L'ADRESSE LDA 0,I INB STA TEMP2 ADA D4095 SSA .ER24 JSB ERR10 LDA TEMP2 AND O7777 STA TEMP2 LDA GLU ALF,ALF ALF IOR TEMP2 STA 1,I EMPILE -NB. CARAC. & LU INB CPB PTRDE JMP ATTEN STB PTRFI JMP IMPRI,I ATTENTION : PAS DE TEST FIN D'IMPRESSION ATTEN JSB STATS SSA JMP ATTEN JSB FIMP IMPRESSION SUIVANTE LDA GCH LDB GLU JMP IMPRI+1 SPC 2 QNEQT NOP ADA LUTAB LDA 0,I JMP QNEQT,I SPC 2 STATS NOP LDA NEXLU JSB QNEQT POUR AVOIR L'EQT # MPY D17 ADA D3 ADA EQTAB LDA 0,I JMP STATS,I SPC 3 FIMP NOP LDB PTRDE ADB D2 CPB PTRFI JMP FIMP,I CPB TABIF LDB .TABI REINITIALISE AU DEBUT DE PILE CPB PTRFI JMP FIMP,I STB PTRDE LDA 1,I INA STA BUF.. INB LDA 1,I ALF AND O17 ADA TYAD3 OCT 20000 STA COWO1 CONTROL WORD IMPRESSION LDA 1,I IOR MASK3 170000 POUR REFAIRE NEG. STA TEMP2 INB CPB PTRFI JMP FIMP2 LA TABLE EST VIDE CPB TABIF LDB .TABI CPB PTRFI JMP FIMP2 INB LDA 1,I ALF AND O17 STA NEXLU PROCHAIN LU FIMP2 JSB EXEC LANCE L'IMPRESSION DEF *+5 DEF D2 DEF COWO1 BUF.. NOP DEF TEMP2 JMP FIMP,I SPC 3 WAIT NOP ATTENDS LA FIN DE TOUTES LES I/O WAIT2 LDB PTRDE ADB D2 CPB PTRFI JMP WAIT3 CPB TABIF LDB .TABI CPB PTRFI JMP WAIT3 LA TABLE EST VIDE. JSB STATS STAT. ? AVANT LA NEW DEMANDE SSA JMP *-2 JSB FIMP JMP WAIT2 WAIT3 LDA EQT# CMA,INA STA TEMP2 POUR COMPTER LDB EQTAB ADB D3 WAIT5 LDA 1,I SSA DEVICE BUZY ? JMP WAIT5 YES - WAIT FOR COMPLETION ADB D17 NO ISZ TEMP2 JMP WAIT5 FOR THE NEXT DEVICE. JMP WAIT,I SPC 4 ************************************************************* * PROGRAMME DE LECTURE D'UNE CHAINE. * * JSB LECTU * * REMARQUES:LECTU FAIT LA GESTION DE LA TABLE DES SYMBOLES * * LE NOMBRE DE CARACTERES LUS EST DE 80 * * RETOUR (A)=AD. C.B.S. * ************************************************************* * LECTU NOP CLA STA INGOT PSITIONNE SUCCES LDA COWI1 SI C'EST LE TAPE-READER AND O17 PAS DE WAIT. CPA D1 JSB WAIT ATTENTE FIN DES IMPRESSIONS JSB EXEC DEF *+5 DEF D1 DEF COWI1 ADB1. DEF BUFLI+1 DEF DM80 AND O240 STATUS ? SZA EOT ? JMP LECEO OUI, END OF TAPE. LEC02 CMB,INB POUR AVOIR LE -NB. CARAC. STB BUFLI ‡