
      HED MLOCK 
* THE MLOCK COMMAND IS USED TO TELL THE SYSTEM TO STOP USING CERTAIN
* DISC BLOCKS.  THIS CAN BE DONE EITHER BECAUSE THE BLOCKS HAVE BEEN
* FOUND FAULTY OR BECAUSE THEY HAVE INFORMATION ON THEM WHICH IS
* UNRELATED TO TSB.  THE FORMAT FOR THE COMMAND:
* 
*     MLOCK-FBLOCK[,LBLOCK] 
* 
* FBLOCK AND LBLOCK SPECIFY THE FIRST AND LAST BLOCKS TO BE MLOCKED.
* IF LBLOCK IS NOT SPECIFIED IT IS ASSUMED TO BE EQUAL TO FBLOCK. 
* 
* THE ACTION OF THE ROUTINE IS AS FOLLOWS:
*     1)  INTERPRET AND VERIFY PARAMETERS 
*     2)  INSURE THAT THE SYSTEM IS NOT USING ANY OF THE
*         SPECIFIED BLOCKS
*     3)  SEARCH THE DIRECTORY, BUILDING A TABLE WITH ONE 
*         ENTRY FOR EACH FILE OR PROGRAM WHOSE DISC ADDRESS 
*         IS IN THE RANGE OF THE SPECIFIED BLOCKS.
*     4)  USE THIS TABLE TO SEARCH THE FUSS TABLE, INSURING 
*         THAT NONE OF THE FILES ON THESE BLOCKS ARE ACTIVE 
*     5)  CALL OVERLAY
* 
      ORG LIBRA 
      JSB MLKNO     GET FIRST BLOCK 
      JMP MLK2      ILLEGAL FORMAT
      CPA .+54B     COMMA FOLLOWING?
      JMP MLK1      YES 
      CPA .+15B     NO, CR? 
      JMP MLK3      YES 
      JMP LFRER     NO, ERROR 
* 
* THE FIRST BLOCK OF A RANGE HAS BEEN ACCEPTED.  CHECK FOR A SECOND.
* 
MLK1  EQU * 
      DLD MLKIN     SAVE FIRST
      DST MLKFB       BLOCK 
      JSB MLKNO     GET LAST BLOCK
      JMP MLK2      ILLEGAL FORMAT
      CPA .+15B     CR FOLLOWS? 
      RSS           YES 
      JMP LFRER     NO, ERROR 
      DLD MLKFB     COMPUTE LAST BLOCK -
      JSB MLKTW       FIRST BLOCK 
      SWP 
      SZB,RSS       DIFFERENCE VALID? 
      JMP MLK4      YES 
* 
MLK2  EQU * 
      LDB .-14      NO, 
      JSB MLKER       ERROR 
      OCT 5102
      ASC 6,AD PARAMETER
* 
* A VALID SINGLE BLOCK HAS BEEN ACCEPTED. 
* 
MLK3  EQU * 
      DLD MLKIN     SAVE FIRST
      DST MLKFB       BLOCK 
      CLA           SET FOR ONE BLOCK 
MLK4  EQU * 
      INA           SAVE
      STA MLKLN       LENGTH
      LDA MHAD      => LAST WORD
      ADA .+48
      STA MLKLP       OF DISC EQT 
      DLD MLKIN     SAVE ADDRESS
      CLE,INB 
      SEZ             OF LAST 
      INA 
      DST MLKLB         BLOCK 
      JSB MLKDS     BLOCK TOO 
      SSB,RSS         LARGE?
      JMP MLK2      YES 
* 
* LOCATE DISC ON WHICH BLOCKS ARE TO BE LOCKED. 
* NOTE: IF THE TWO BLOCK ADDRESSES ARE NOT ON THE SAME DISC, AN 
*       ERROR MESSAGE IS ISSUED.
* 
MLK5  EQU * 
      LDA MLKLP     NO, MOVE
      ADA .-6         TO NEXT DISC
      STA MLKLP         EQT ENTRY 
      JSB MLKDS     BLOCK ON
      SSB             THIS DISC?
      JMP MLK5      NO
      INA           YES, SAVE 
      STA MLKLA       LAST BLOCK
      DLD MLKFB     FIRST 
      DST MLKIN       BLOCK 
      JSB MLKDS         ON THIS 
      CLE,SSB             DISC ALSO 
      JMP MLK2      NO
      STA MLKFA     YES, SAVE IT
* 
      ADA .-4       BLOCKS
      SEZ,RSS         0-3 ARE 
      JMP MLK2          ILLEGAL 
* 
      LDA MLKLP     CHECK 
      ADA .+2         FOR 
      LDB A,I           DISC
      LDB B,I 
      SZB                 PRESENT 
      JMP MLK6      IT IS 
      LDB .-17      ERROR 
      JSB MLKER 
      OCT 5116
      ASC 8,ONEXISTENT DISC 
* 
* CHECK SST TO INSURE THAT NONE OF THE BLOCKS TO BE LOCKED
* ARE BEING USED BY THE SYSTEM
* 
MLK6  EQU * 
      LDA M512      LENGTH OF 
      STA MWORD       BOOTSTRAP 
      LDB LDBSA     CORE ADDRESS
      ADB BIT15 
      LDA MLKD.     DISC ADDRESS OF 0,1 
      JSB DISCZ,I   READ BOOTSTRAP
      JMP DDERR 
      LDA LDBSA,I   NUMBER
      ADA .-5         OF SYSTEM 
      STA MLKCT         SEGMENTS
      LDB LDBSA     => FIRST
      ADB .+3         DISC
      STB MLK8          ADDRESS 
      LDA .-2       LENGTH OFFSET 
      LDB .+4       SIZE OF ENTRY 
      JSB MLK7
* 
* CHECK SYSTEM LIBRARY ROUTINE BLOCKS 
* 
      LDA MLKSL     => DISC 
      STA MLK8        ADDRESS 
      CCB           -# OF 
      STB MLKCT       ENTRIES 
      LDA .+2       LENGTH OFFSET 
      JSB MLK7
* 
* CHECK DIRECTORY BLOCKS
* 
      LDA MLDIR 
      ADA .+5       => DISC ADDRESS 
      STA MLK8
      LDA MLKM8     -# OF 
      STA MLKCT       ENTRIES 
      LDA .+32      SET FOR 
      STA MLKNO       CONSTANT 32 BLOCK 
      CLA               LENGTH
      LDB .+7       SIZE OF ENTRY 
      JSB MLK7
* 
* CHECK SWAP BLOCKS 
* 
      LDA MLKTD     => DISC 
      STA MLK8        ADDRESS 
      LDA NPORT     -# OF 
      STA MLKCT       ENTRIES 
      LDA .+40      LENGTH
      STA MLKNO       SET FOR 
      CLA               CONSTANT 40 BLOCKS
      LDB MLKTT     SIZE OF ENTRY 
      JSB MLK7
* 
* CHECK IDT BLOCKS
* 
      LDA MLKID     => DISC 
      STA MLK8        ADDRESS 
      LDA .-3       -# OF 
      STA MLKCT       ENTRIES 
      LDA .+32      SET LENGTH
      STA MLKNO     FOR CONSTANT
      CLA               32 BLOCKS 
      LDB .+4       SIZE OF ENTRY 
      JSB MLK7
* 
* CHECK ADT BLOCKS
* 
      LDA MLKAT     => DISC 
      STA MLK8        ADDRESS 
      LDA .-8       -# OF 
      STA MLKCT       ENTRIES 
      CLA           LENGTH STILL 32 BLOCKS
      LDB .+3       SIZE OF ENTRY 
      JSB MLK7
      JMP MLK10 
* 
* THIS ROUTINE CHECKS EACH ENTRY IN A TABLE FOR BLOCK OVERLAP.
* UPON ENTRY: 
*     A = DISTANCE FROM DISC ADDRESS TO LENGTH
*     B = SIZE OF EACH ENTRY
*     MLK8 = => DISC ADDRESS OF FIRST ENTRY 
*     MLKCT = -# OF ENTRIES IN THE TABLE
* 
MLK7  NOP 
      STA MLKT1     STORE LENGTH OFFSET 
      STB MLKT2       AND ENTRY SIZE
MLK70 EQU * 
      CCB           SET FOR PRINTING ERROR MESSAGE
      LDA MLKT1     LOAD LENGTH OFFSET
      JSB MLKCK     CHECK THIS ADDRESS
MLK8  NOP 
      LDA MLK8      UPDATE
      ADA MLKT2       TO NEXT 
      STA MLK8          ADDRESS 
      ISZ MLKCT     FINISHED? 
      JMP MLK70       NO
      JMP MLK7,I      YES - RETURN
MLK10 EQU * 
* 
**  SEARCH DIRECTORY FOR ENTRIES WHICH       ** 
**  LIE IN THE RANGE OF BLOCKS TO BE LOCKED  ** 
* 
*  READ EACH DIRECTORY TRACK AND CHECK FOR DISC ADDRESSES WHICH LIE 
*  IN THE RANGE OFTHE BLOCKS TO BE LOCKED. FOR EACH SUCH ENTRY
*  FOUND, ADD A 4-WORD ENTRY TO A TABLE CONSISTING OF:
*     1)  A POINTER TO THE DIREC ENTRY FOR THIS DIRECTORY TRACK 
*     2)  A POINTER TO THIS ENTRY'S POSITION IN THE DIRECTORY 
*     3)  THE TWO-WORD DISK ADDRESS OF THE FILE OR PROGRAM
* 
      LDA MLKRP     BUFFER FOR ENTRIES TO 
      STA MLKRD       RETURN TO DISC ADT
      CLA           INITIALIZE COUNT
      STA MLKTC       OF TABLE ENTRIES
      LDB L8192     => BEGINNING
      STB MLKTP       OF TABLE BUFFER 
      LDB MLDIR     DIREC 
MLK11 EQU * 
      STB MLKDI       POINTER 
      LDA B,I       ANY ENTRIES 
      SZA             ON THIS TRACK?
      JMP MLK13     YES 
MLK12 EQU * 
      ADB .+7       NO, BUMP POINTER
      CPB MLKDU     ALL FINISHED? 
      JMP MLK20     YES 
      JMP MLK11     NO
MLK13 EQU * 
      STA MWORD     FOR DISC TRANSFER 
      CCB           COMPUTE # 
      DIV .+12        OF ENTRIES
      STA MLKCT         ON TRACK
      LDA MLKDI 
      ADA .+5       => DISC ADDRESS 
      LDB LIBDI     READ IN 
      JSB DISCZ,I     DIRECTORY TRACK 
      JMP DDERR 
* 
      LDB LIBD      INITIALIZE
      ADB .+8         DIRECTORY 
MLK14 EQU * 
      STB MLKDP         POINTER 
      CLB           SKIP RETURN ON FOUND
      LDA .+3       DISTANCE BETWEEN ADDR AND LENGTH
      JSB MLKCK     CHECK THIS ADDRESS
MLKDP NOP 
      JMP MLK15     NOT IN RANGE
      JMP MLK17     NO SPECIAL ENTRY FOUND
      LDB MLKDP     => DISC ADDRESS 
      LDA B,I 
      STA MLKRD,I   SAVE FIRST WORD 
      INB 
      ISZ MLKRD 
      LDA B,I 
      STA MLKRD,I   SAVE SECOND WORD
      ISZ MLKRD 
      ADB .+2 
      LDA B,I       GET LENGTH
      SSA,RSS 
      JMP *+4       IT POSITIVE 
      ALF,ALF       CONVERT 
      IOR HIMSK       TO
      CMA,INA           BLOCKS
      STA MLKRD,I   SAVE THE LENGTH IN BLOCKS 
      ISZ MLKRD 
MLK17 EQU * 
      LDB MLKDI     SAVE POINTER
      STB MLKTP,I     TO DIREC
      ISZ MLKTP         IN TABLE
      LDB MLKDP     SAVE POINTER TO 
      STB MLKTP,I     DIRECTORY ALSO
      ISZ MLKTP     GET DISC
      DLD B,I         ADDRESS 
      DST MLKTP,I       AND SAVE
      LDB MLKTP     ADVANCE TABLE 
      ADB .+2         POINTER 
      CPB LULEN     OVERFLOW? 
      JMP MLK16     YES 
      STB MLKTP     NO
      ISZ MLKTC     BUMP COUNT OF TABLE ENTRIES 
MLK15 EQU * 
      LDB MLKDP     BUMP DIRECTORY
      ADB .+12        POINTER 
      ISZ MLKCT     FINISHED THIS DIRECTORY TRACK?
      JMP MLK14     NO
      LDB MLKDI     YES, CHECK
      JMP MLK12       NEXT TRACK
MLK16 EQU * 
      LDB .-18      TABLE OVERFLOW
      JSB MLKER 
      OCT 5114
      ASC 8,OCK FEWER BLOCKS
* 
* NOW COMPARE TABLE JUST BUILT WITH FUSS TABLE TO 
* DETERMINE IF THE TRACKS TO BE LOCKED CONTAIN ACTIVE FILES 
* 
MLK20 EQU * 
      LDA MLKTC     SKIP CHECKING 
      CMA,INA,SZA,RSS FUSS IF NO
      JMP MLK30         TABLE ENTRIES 
      STA MLKTC 
      LDA M2000 
      STA MWORD 
      ARS           NUMBER OF FUSS
      STA MLKCT       TABLE ENTRIES 
      LDA FUSS      READ
      LDB LIBDI       FUSS
      JSB DISCZ,I       TABLE 
      JMP DDERR 
      LDB LIBD      INITIALIZE
      STB MLKTP       FUSS POINTER
MLK21 EQU * 
      DLD MLKTP,I   GET FUSS ENTRY
      IOR B         CHECK 
      SZA,RSS         FOR ZERO
      JMP MLK23-1   IT IS, SKIP IT
      LDB L8192     NON-ZERO, SET 
      ADB .+2         TABLE POINTER IN (B)
      LDA MLKTC     NUMBER OF 
      STA MLKDI       TABLE ENTRIES 
MLK22 EQU * 
      LDA B,I       COMPARE 
      INB             FIRST WORD
      CPA MLKTP,I       OF ENTRIES
      JMP *+5 
      IOR BIT15 
      CPA MLKDI,I 
      RSS 
      JMP MLK25     UNEQUAL 
      ISZ MLKTP     EQUAL,
      LDA B,I         COMPARE 
      CPA MLKTP,I     SECOND WORD 
      JMP MLK24     EQUAL, FILE IN USE
      CCA           UNEQUAL, MOVE 
      ADA MLKTP       POINTER BACK
      STA MLKTP         TO FIRST WORD 
MLK25 EQU * 
      ADB .+3       BUMP TO NEXT TABLE ENTRY
      ISZ MLKDI     FINISHED TABLE? 
      JMP MLK22     NO
      ISZ MLKTP     YES 
MLK23 EQU * 
      ISZ MLKTP     BUMP TO NEXT FUSS ENTRY 
      ISZ MLKCT     FINISHED FUSS 
      JMP MLK21     NO
      JMP MLK30     YES 
* 
MLK24 EQU * 
      ADB .-3       GET POINTER 
      STB MLKTP       TO DIREC
      LDB B,I           IN (B)
      LDA B,I       TRACK 
      STA MWORD       LENGTH
      ADB .+5 
      LDA B 
      LDB LIBDI       DIRECTORY 
      JSB DISCZ,I       TRACK 
      JMP DDERR 
      LDA MLKTP     SET POINTER 
      INA             TO DISC ADDRESS 
      LDA A,I           IN DIRECTORY
      STA MLK26           FOR SUBROUTINE
      CCB           OUTPUT
      LDA .+3         'CAN'T
      JSB MLKCK         LOCK' 
MLK26 NOP                 MESSAGE 
* 
* MLKNO SCANS THE INPUT STRING FOR AN INTEGER LESS THAN 2**19. IF 
* FOUND IT RETURNS TO (P+2) WITH THE INTEGER IN MLKIN[0:1] AND
* THE FOLLOWING CHARACTER IN (A). ERRORS EXIT TO (P+2). 
* 
MLKNO NOP 
      CCB           SET FLAG FOR
      STB MLKTP       NUMBER OCCURRENCE 
      CLB           INITIALIZE
      STB MLKIN       TWO-DIGIT 
      STB MLKIN+1       RESULT
MLKN1 EQU * 
      JSB T35CQ     GET A CHARACTER 
      JMP MLKN2     CR
      LDB A 
      ADB M72B
      SSB,RSS       DIGIT?
      JMP MLKN2     NO
      ADB .+10      MAYBE 
      SSB 
      JMP MLKN2     NO
      STB MLKTP     YES, SAVE IT
      LDA MLKIN+1   GET PREVIOUS
      LDB MLKIN       RESULT
      ASL 2         MULTIPLY BY 4 
      CLE           ADD PREVIOUS
      ADA MLKIN+1     RESULT, 
      SEZ               PRODUCING 
      INB                 MULTIPLICATION
      ADB MLKIN             BY 5
      ASL 1         NOW 10*PREVIOUS RESULT
      CLE           ADD IN
      ADA MLKTP 
      SEZ             NEW DIGIT 
      INB 
      STB MLKIN     SAVE NEW
      STA MLKIN+1     RESULT
      LDA B         TOO 
      AND .+7 
      CPA B           BIG?
      JMP MLKN1     NO
      JMP MLKNO,I   YES 
MLKN2 EQU * 
      ISZ MLKTP     DID NUMBER OCCUR? 
      ISZ MLKNO     YES 
      JMP MLKNO,I   NO
* 
* MLKDS TAKES THE DISC ADDRESS IN MLKIN[0:1] AND COMPUTES IT
* RELATIVE TO THE DISC WHOSE EQT ENTRY IS POINTED TO BY MLKTP,
* EXITING WITH THE RESULT IN [(B),(A)]. 
* 
MLKDS NOP 
      DLD MLKLP,I   GET FIRST SECTOR NUMBER 
      CLE,ERA       CONVERT TO
      ERB             BLOCKS
      JSB MLKTW     COMPUTE RELATIVE ADDRESS
      SWP 
      JMP MLKDS,I 
* 
* MLKER OUTPUTS AN ERROR MESSAGE TO THE CONSOLE 
* 
MLKER NOP 
      STB MLKTP 
      LDA T35B1     MOVE
      STA MOVED       MESSAGE 
      LDA MLKER         INTO
      STA MOVES           CONSOLE 
      BRS                   BUFFER
      JSB MOVEW 
      LDA MLKTP 
      CMA,INA 
      LDB T35B1 
      JMP LEND2     OUTPUT IT 
* 
* MLKCK CHECKS WHETHER A GIVEN TABLE ENTRY IS IN THE RANGE OF THE 
* BLOCK  TO BE LOCKED  UPON ENTRY (A) CONTAINS THE DISTANCE IN THE
* TABLE BETWEEN THE ADDRESS AND THE LENGTH AND JSB,I => THE DISC
* ADDRESS.
MLKCK NOP 
      STB MLKEX 
      STA MLKTI     SAVE TABLE INCREMENT
      LDB MLKCK,I   => DISC 
      STB MLKBR       ADDRESS 
      ISZ MLKCK 
      DLD MLKBR,I   GET DISC ADDRESS
      DST MLKIN 
      IOR B         SKIP
      SZA,RSS         CHECK 
      JMP MLKCK,I       IF ZERO 
      DLD MLKFB     SUBTRACT FIRST
      JSB MLKTW       BLOCK ADDRESS 
      SSA           IN RANGE? 
      JMP MLKC1     NO
      DLD MLKLB     YES, CHECK AGAINST
      JSB MLKTW       LAST BLOCK
      SSA,RSS       IN RANGE? 
      JMP MLKCK,I   NO
      ISZ MLKEX     YES, PRINT ERROR? 
      JMP MLKC5     NO
      LDA MLKIN+1   YES, GO 
      LDB MLKIN       OUTPUT
      JMP MLKC2         ERROR MESSAGE 
MLKC1 EQU * 
      JSB MLKEC     CHECK FOR MIDDLE OF ENTRY 
      DEF MLKFB       OVERLAPPING FIRST BLOCK 
      JMP MLKCK,I   IT DOESN'T
      ISZ MLKEX     ID DOES, PRINT ERROR? 
      JMP MLKC4     NO
      LDA MLKFB+1   YES 
      LDB MLKFB 
MLKC2 EQU * 
      DIV DVSRS     COMPUTE 
      STB MLKFA 
      LDB MLKD3       FIRST PAIR
      STB MLKLA 
      JSB MLKNM         OF DIGITS 
      LDA MLKFA     COMPUTE 
      CLB 
      DIV .100        SECOND PAIR 
      STB MLKFA 
      JSB MLKNM         OF DIGITS 
      LDA MLKFA     COMPUTE THIRD 
      JSB MLKNM       PAIR OF DIGITS
      LDB .-24      OUTPUT
      JSB MLKER       MESSAGE 
      OCT 5103
      ASC 8,AN'T LOCK BLOCK 
MLKC3 EQU * 
      BSS 3         FOR BLOCK NUMBER
MLKC5 EQU * 
      JSB MLKEC     CHECK FOR MIDDLE OF ENTRY 
      DEF MLKLB       IN RANGE OF LAST BLOCK
      RSS           IT ISN'T
MLKC4 EQU * 
      ISZ MLKCK 
      ISZ MLKCK 
      JMP MLKCK,I 
* 
* 
MLKEC NOP 
      LDA MLKTI     GET LENGTH OFFSET 
      SZA           IS LENGTH CONSTANT? 
      JMP *+3         NO - GO GET LENGTH
      LDB MLKNO       YES - LOAD LENGTH 
      JMP *+4 
      LDA MLKBR     (A) =>
      ADA MLKTI       LENGTH
      LDB A,I 
      SSB,RSS 
      JMP *+4       + BLOCKS
      CCA           - WORDS 
      RRR 8         CONVERT TO
      CMB,INB         + BLOCKS
      ADB .-1 
      LDA MLKBR,I   COMPUTE 
      ISZ MLKBR 
      CLE             FIRST 
      ADB MLKBR,I 
      SEZ               UNUSED
      INA 
      DST MLKIN           BLOCK 
      LDA MLKEC,I 
      DLD A,I       SUBTRACT FIRST
      ISZ MLKEC 
      JSB MLKTW       BLOCK ADDRESS 
      SSA,RSS       IN RANGE? 
      ISZ MLKEC     YES 
      JMP MLKEC,I   NO
* 
* MLKNM COMPUTES A NUMBER <100 TO ASCII AND SAVES IT FOR OUTPUTTING 
* 
MLKNM NOP 
      CLB 
      DIV .+10
      ALF,ALF 
      ADA B 
      ADA ASC00     CONVERT TO ASCII
      STA MLKLA,I 
      ISZ MLKLA 
      JMP MLKNM,I 
* 
* READ IN OVERLAY 
* 
MLK30 EQU * 
      LDA MOLEN     WORD COUNT FOR
      STA MWORD       MLOCK OVERLAY 
      LDA LIB 
      INA 
      INA 
      LDB #LIBI 
      JMP MORG
* 
MLKD. DEF . 
MLDIR DEF DIREC 
MLKDU DEF DIREU 
MOLEN ABS LIBRA-MORG
MLKD3 DEF MLKC3 
MLKTD DEF TTY00+?DISC 
MLKM8 DEC -80 
MLKTT ABS TTY01-TTY00 
* 
      ORG LIBRA+512-17
MORG  EQU * 
      JSB DISCZ,I   READ OVERLAY
      JMP SICKP,I 
      JMP LIBRA     EXECUTE IT
* 
* MLKTW SUBTRACTS THE TWO-WORD INTEGER IN[(A),(B)] FROM MLKIN[0:1], 
* LEAVING THE RESULT IN [(A),(B)].
* 
MLKTW NOP 
      CMB,CLE,INB   NEGATE
      CMA,SEZ 
      CLE,INA         SUBTRAHEND
      ADB MLKIN+1   ADD IN
      SEZ 
      INA             MINUEND 
      ADA MLKIN 
      JMP MLKTW,I 
* 
MLKIP DEF MLKIN 
* 
MLKTC EQU LTEMP 
MLKLA EQU LTEMP+1 
MLKFA EQU LTEMP+2 
MLKLP EQU LTEMP+3 
MLKDI EQU LTEMP+6 
MLKTP EQU LTEMP+7 
MLKPP EQU LTEMP+8 
MLKND EQU LTEMP+9 
MLKN  EQU LTEMP+11
MLKAD EQU LTEMP+12
MLKBR EQU LTEMP+13
MLKFB EQU LTEMP+14
*                         LTEMP+15
* 
* LTEMP+4,5 AND 10 ARE ALSO USED
* 
MLKEX EQU MLKN
MLKTI EQU MLKAD 
MLKXB EQU MLKPP 
MLKT1 EQU MLKRD     LENGTH OFFSET 
MLKT2 EQU MLKPP     SIZE OF ENTRY 
MLKID DEF IDEC+1
MLKAT DEF ADTAT 
MLKSL DEF DADSL 
$MLO  EQU * 
