LEX 'MMLEX' * (c) Copyright PPC Paris 1986 ID #E1 MSG 0 POLL 0 ENTRY MXD CHAR #F ENTRY MXM CHAR #F ENTRY MDIR CHAR #F ENTRY MEM CHAR #F KEY 'MAXD' TOKEN 57 KEY 'MAXM' TOKEN 58 KEY 'MEMD' TOKEN 59 KEY 'MEMM' TOKEN 60 ENDTXT A-MULT EQU #1B349 ATNFLG EQU #2F442 Attn EQU 12 BSERR EQU #0939A CHKMAS EQU #425C CSRW5 EQU #0ED2C D=AVMS EQU #1A460 DEVPAR EQU #1BF0 ENDTAP EQU #44D9 FNRTN4 EQU #0F238 Flg EQU 11 GDIRST EQU #4843 GETERR EQU #6791 GETMBX EQU #3B62 HDFLT EQU #1B31B I/OFND EQU #118BA LEXPIL EQU #FF MEMERR EQU #0944D R A[A]= 00002 dir. start B=B-A A B[A] = # maxrec - vol.label R2=A R2= dir. start D1=D1+ 8 D1^ code long. directory P= 4 GOSUB GETALR => A[A]= 0xxxx Dir.Len B=B-A A B[A]=maxmem aprÉs format. ?ST=1 Flg Est-on entrÅ via MEMM GOYES MEM10 C=A A Sauvegarde de DirLen dans C MEM10 A=A-1 A ) A => R2 = compteur AR2EX ) A[A] = DIR START ABEX A A[A]=Maxmem aprÉs format. R3=A R3=compteur mem :tape ?ST=1 Flg Est-on entrÅ via MEMM GOYES MEM20 CSL A ) Non: division de C[A] par CSRB ) 8 pour obtenir le max dir R3=C ) R3 compteur mem dir MEM20 GOSUB GET#FL Routine commune de comptage A=R3 A= rÅsulat GET#FL ?ST=1 Flg Est-on entrÅ via MEMM ? RTNYES Retour de MEMM GOTO SORTIE Retour de MEMDIR GET#FL A=R1 D1=A D1^ MS-512 A=B A A[A] = # enregis. È lire GOSUB JUMPER CON(5) READR# GOC ERReur B=B+1 A B[A] = prochain # enr. A=R1 D1=A D1 ^ MS - 512 GOSUB GET#E Routine de comptage des 8 * entrÅes directory d'un enr. A=R2 ) DÅcrÅmentation de R2 A=A-1 A ) # d'enregistrements du RTNC ) dir & retour si fin R2=A Autrement sauvegarde GONC GET#FL B.E.T ERReur GOTO erreur GET#E LC(5) #FFFF C[3:0]=FFFF, masque de com- * paraison du rideau de fin d * de directory P= 8 8 = 8 entrÅes / enregist. A=0 A get#e P=P-1 Compteur RTNC Sortie si fin D1=D1+ 16 D1=D1+ 4 D1^ type de fichier A=DAT1 4 A[3:0] =type de fichier ?A=C A Est-ce le rideau (FFFF) GOYES R3=OK Oui: fin du s.prog. ?A#0 A A=0 => fichier purgÅ ! GOYES R3-1 incrÅ D1=D1+ 12 ) On passe È l'entrÅe D1=D1+ 16 ) suivante MEM30 D1=D1+ 16 ) GONC get#e B.E.T R3-1 ?ST=1 Flg MEMM ?? GOYES R3-M Oui => R3- long fichier A=R3 )autrement R3 A=A-1 A ) -1 seulement pour R3=A ) MEMDIR GONC incrÅ B.E.T. R3-M D1=D1+ 12 D1^ long. du fich. en #rec. C=P 4 Sauveg. pointeur # dir RSTK=C P= 4 GOSUB GETALR A[A] long. # rec. du fich. C=RSTK CPEX 4 Restitution CR3EX ) C=C-A A ) R3 = R3 - # rec CR3EX ) D1=D1+ 8 Ajustement GONC MEM30 B.E.T R3=OK C=RSTK Fin pop et retour RTN ************************************************** * Cette routine sauvegarde 5 niveaux de pile ************************************************** r