      HED PORT
*    THE PORT COMMAND PRINTS THE CHARACTER SIZE AND BAUD
*    RATE FOR EACH PORT NUMBER. 
* 
      SPC 1 
      ORG LIBRA 
      LDA PORLB     SET LF-BLANK
      STA T35BF       IN BUFFER 
      JSB PRT       PROCESS FIRST 8 
      DEF TTY00+?RPRM 
      LDA .64       OUTPUT THEM 
      LDB T35B1 1#
      JSB T35SP 
      LDA T35BF 
      IOR HIMSK 
      STA T35BF 
      JSB PRT       PROCESS LAST 8
      DEF TTY10+?RPRM 
      LDA .64       OUTPUT THEM 
      LDB T35B1       AND TERMINATE 
      JMP LEND2 
      SPC 2 
*   PRT FILLS THE TELETYPE BUFFER WITH THE CHARACTER SIZE 
*   AND BAUD RATE OF 8 PORTS.  THE FORMAT IS: 
*         LF,BLANK,8(CHAR. SIZE-BAUD RATE,BLANK,BLANK,BLANK)
      SPC 1 
PRT   NOP 
      LDA T35B1     SET UP POINTER FOR
      INA             FIRST INFORMATION BLOCK 
      STA PPNTR 
      LDA .-8       SET UP COUNTER
      STA PCNTR 
      LDA PRT,I     SET UP POINTER TO 
      STA PRPRM       RECEIVE PARAMETER 
      JMP PRT2
* qq
PRT1  LDA ASCBB     PUT IN BLANKS 
      STA PPNTR,I     AS SEPARATORS 
      ISZ PPNTR 
PRT2  LDA PRPRM,I   A = RECEIVE PARAM 
      AND PMASK     MASK OUT CHARACTER SIZE 
      ADA PCHAR     CONVERT TO ASCII
      STA PPNTR,I     AND STORE IN BUFFER 
      ISZ PPNTR 
      LDA PRPRM,I   A = RECEIVE PARAM 
      AND B377      MASK TO BAUD RATE 
      CLB B
      DIV .100      OBTAIN HUNDREDS 
      ALF,ALF 
      STA PDIGT       AND TENS DIGIT, 
      LDA B 
      CLB               CONVERT TO ASCII, 
      DIV .+10
      ADA PDIGT           AND STORE IN BUFFER 
      ADA ASC00 
      STA PPNTR,I 
      ISZ PPNTR 
      LDA B         A = UNITS DIGIT 
      ALF,ALF 
      ADA ASC0B     CONVERT TO ASCII
      STA PPNTR,I     AND STORE IN BUFFER 
      ISZ PPNTR 
      LDA PRPRM 
      ADA .+TTY01-TTY00 
      STA PRPRM     UPDATE TTY TABLE POINTER
      ISZ PCNTR     BUMP COUNTER - DONE?
      JMP PRT1      NO
      ISZ PRT       YES 
      JMP PRT,I     RETURN
* qq
.64   EQU B100
PMASK OCT 1400
PCHAR ASC 1,0-
PORLB OCT 5040
PDIGT BSS 1 
PCNTR BSS 1 
PPNTR BSS 1 
PRPRM BSS 1 
$POR  EQU * 
      HED CHANGEID
* THE CHANGEID COMMAND CAN BE USED TO MODIFY THE PARAMETERS IN AN 
* ID ENTRY. THE MODIFIABLE ENTRIES ARE THE PASSWORD, TIME ALLOWED,
* AND DISC ALLOWED. THE POSSIBLE FORMATS ARE: 
* 
*     CHANGEID-ID,PASSWORD,TIME,DISC
*     CHANGEID-ID,PASSWORD,TIME 
*     CHANGEID-ID,PASSWORD,,DISC
*     CHANGEID-ID,,TIME,DISC
*     CHANGEID-ID,PASSWORD
*     CHANGEID-ID,,TIME 
*     CHANGEID-ID,,,DISC
      SPC 2 
      ORG LIBRA 
      SPC 1       JSB GETID     GET ID ENTRY.  
      JSB GETID 
      RSS           SKIP TO COMMA TEST. 
      JMP LFRER     FAIL IF NOTHING FOLLOWS.
      CPA .+54B     TEST FOR COMMA FOLLOWING. 
      RSS           OK. 
      JMP LFRER     FAIL IF NO COMMA FOLLOWS. 
* 
      JSB FIDT     INPUT ID ENTRY 
      JMP CHA3     FOUND IT 
* 
      LDA CHA2E     OUTPUT NO ID MESSAGE
      STA MOVES 
      LDA T35B1 
      STA MOVED 
      LDB .-6 6+
      JSB MOVEW 
      LDA .+11
      LDB T35B1 
      JMP LEND2 2

CHA2E DEF *+1 
      OCT 5116      LF-N
      ASC 5,O SUCH ID 
* 
* B NOW POINTS TO THE CORRECT ID. 
* *q
CHA3  INB           SET CHAID TO POINT TO THE 
      STB CHAID      PASSWORD.
      STB CHAI1     STORE COPY IN CHAI1.
      JSB T35CH,I   GET FIRST CHARACTER OF POSSIBLE 
      JMP LFRER      PASSWORD--ERROR IF NONE. 
      CPA .+54B     IF COMMA, WE DON'T WANT TO
      JMP CHA5       CHANGE PASSWORD. 
      CLB           INITIALIZE PASSWORD 
      ISZ CHAID       TO NULLS. 
      STB CHAID,I 
      ISZ CHAID 
      STB CHAID,I 
      LDB CHAI1     SET CHAID TO POINT AT 
      STB CHAID       PASSWORD AGAIN. 
      LDB .-3       SET COUNTER FOR 3 WORD
      STB CHAC       PASSWORD.
CHA4  ALF,ALF       SET LEFT CHARACTER OF WORD. 
      STA CHAID,I 
      JSB T35CH,I   GET RIGHT CHARACTER.
      JMP CHA10     TERMINATE IF CR.
      CPA .+54B     IF COMMA, WE'RE DONE WITH 
      JMP CHA5       PASSWORD.
      IOR CHAID,I   MERGE IN WITH LEFT CHAR.
      STA CHAID,I 
      ISZ CHAC      TEST FOR ALL OF PASSWORD IN.
      RSS           NOT ALL IN YET. 
      JMP CHA6
      ISZ CHAID     BUMP POINTER. 
      JSB T35CH,I   GET ANOTHER PASSWORD CHARACTER. 
      JMP CHA10     DONE IF CR. 
      CPA .+54B     TEST FOR COMMA. 
      JMP CHA5
      JMP CHA4      LOOP. 
* qq
CHA6  JSB T35CH,I   TEST FOR TOO MANY PASSWORD CHARS. 
      JMP CHA10     END OF REQUEST. 
      CPA .+54B     TEST COMMA. 
      RSS 
      JMP LFRER     FAIL. 
* 
CHA5  LDA CHAI1     SET CHAID TO POINT TO 
      ADA .+3       TIME ALLOWED. 
      STA CHAID 
* 
      JSB T35CH,I   GET 1ST CHAR OF POSSIBLE TIME.
      JMP LFRER     ERROR IF NONE.
      CPA .+54B     IF COMMA, GO TO DO DISC PART. 
      RSS 
      JSB CHA#      OTHERWISE GET NEW ALLOTTED TIME.
      ISZ CHAID     SET POINTER TO ALLOTTED DISC
      ISZ CHAID      SPACE. 
      JSB T35CH,I   GET FIRST DIGIT OF DISC.
      JMP LFRER     FAIL IF NONE. 
      JSB CHA#      COMPUTE IT. 
      JMP LFRER     RETURN HERE IS ILLEGAL. 
* 
CHA10 LDA IDTLA,I OUTPUT UPDATED ID TRACK 
      STA WORDR
      LDA IDTRA,I 
      LDB LIBD
      JSB DISC,I,a
      JMP LEND
* CHA# SCANS THE INPUT BUFFER FOR A # FROM 0 TO 65535. IF IT FINDS
* ONE, IT STORES IT IN CHAID,I. IF NO CHARACTER FOLLOWS THE #,
* CHA# TRANSFERS TO CHA10. IF A COMMA FOLLOWS IT RETURNS. IF AN 
* ERROR IS FOUND, IT TRANSFERS TO LFRER. THE 1ST CHARACTER OF 
* THE NUMBER IS IN A UPON ENTRY.
      SPC 1 
CHA#  NOP 
      CLB           INITIALIZE # TO ZERO. 
      STB CHAID,I 
CHA7  ADA M72B      TEST FOR DIGIT. 
      SSA,RSS S
      JMP LFRER     FAIL. 
      ADA .+10
      SSA 
      JMP LFRER     FAIL. 
      STA CHAD      SAVE DIGIT. 
      LDA CHAID,I   GET OLD VALUE.
      MPY .+10       * 10 
      CLE 
      ADA CHAD       + NEW DIGIT. 
      SEZ,SZB,RSS   TEST FOR OVERFLOW.
      RSS           OK
      JMP LFRER     FAIL
      STA CHAID,I   STORE AGAIN.
      JSB T35CH,I   GET NEXT CHAR.
      JMP CHA10     DONE IF CR. 
      CPA .+54B     RETURN IF COMMA.
      JMP CHA#,I
      JMP CHA7      ELSE LOOP.
      SPC 1 
CHAID EQU LTEMP 
CHAI1 EQU LTEMP+1 
CHAC  EQU LTEMP+2 
CHAD  EQU LTEMP+3 
$CHA  EQU * 
      HED ANNOUNCE
*   THE ANNOUNCE (ANNOY) COMMAND IS USED TO SEND A MESSAGE FROM 
*   THE SYSTEM CONSOLE TO THE USER CONSOLES.  THE FORMAT IS:
* 
*           ANN-<PORT #>,<MESSAGE TEXT> 
* 
*   WHERE PORT # IS AN INTEGER BETWEEN 0 AND 15 OR 'ALL' AND
*   MESSAGE IS A STRING OF CHARACTERS ENDING WITH A CARRIAGE
*   RETURN. II
* qq
      ORG LIBRA 
      JSB T35CH,I   GET 1ST CHAR
      JMP LFRER 
      CPA ANN.A     'A' 
      JMP ANN2      YES 
      ADA M72B      NO
      SSA,RSS         DIGIT?
      JMP LFRER     NO
      ADA .+10      MAYBE 
      SSA 
      JMP LFRER     NO
      STA LTEMP     YES, SAVE IT
      JSB T35CH,I   NEXT CHAR 
      JMP LFRER 
      CPA .+54B     COMMA?
      JMP ANN1      YES 
      ADA M72B      NO
      SSA,RSS         DIGIT?
      JMP LFRER     NO
      ADA .+10      MAYBE 
      SSA 
      JMP LFRER     NO
      STA LTEMP+1   YES 
      LDA LTEMP 
      MPY .+10
      ADA LTEMP+1   NUMBER
      STA LTEMP 
      ADA NPORT 
      SSA,RSS       TOO BIG?
      JMP LFRER     YES, ERROR
      JSB T35CH,I 
      JMP LFRER 
      CPA .+54B     COMMA?
      RSS           YES 
      JMP LFRER     NO
ANN1  EQU * 
      CCA           SET FOR 
      STA LTEMP+1    ONE PORT 
      JMP ANN3
ANN2  EQU * 
      JSB T35CH,I   NEXT CHAR 
      JMP LFRER 
      CPA ANN.L     'L'?
      JSB T35CH,I   YES - NEXT CHAR 
      JMP LFRER     NO
      CPA ANN.L     'L'?
      JSB T35CH,I   YES - NEXT CHAR 
      JMP LFRER     NO
      CPA .+54B     COMMA?
      RSS           YES 
      JMP LFRER     NO
      LDA NPORT     # OF PORTS
      STA LTEMP+1 
      CLA           1ST PORT IS 0 
      STA LTEMP 
ANN3  EQU * 
      LDA .+15B     CR
      JSB ANNCH 
      LDA .+12B     LF
      JSB ANNCH 
      LDA .+12B     LF
      JSB ANNCH 
      LDA .+7B      BELL
      JSB ANNCH 
ANN4  EQU * 
      CLA           ALLOW BLANKS
      STA T35C1 
      JSB T35CH,I   NEXT CHAR 
      JMP ANN5      CR
      JSB ANNCH     OUTPUT IT 
      JMP ANN4      LOOP
ANN5  EQU * ww
      JSB ANNCH     CR
      LDA .+12B     LF
      JSB ANNCH 
      LDA .+12B     LF
      JSB ANNCH 
      LDA ANNJM     RESTORE BLANK 
      STA T35C1       SUPPRESSION 
ANN6  LDA TTYTP 
      ADA LTEMP 
      LDB A,I       B => USER'S TTY TABLE 
      ADB .+?STAT 
      LDA B,I       A = STATUS
      CPA .+2       IS STATUS INPUT WAIT? 
      RSS 
      JMP ANN7      NO
      ADB .+?TSTA-?STAT 
      LDA B,I       YES, REMOVE 
      AND NINBT       'NO INPUT 
      STA B,I            ALLOWED' BIT 
      ADB .+?RPRM-?TSTA  TURN 
      LDA B,I 
      ADB .+?TNUM-?RPRM    ECHO 
      LDB B,I 
      JSB MUXR,I             ON 
ANN7  ISZ LTEMP     BUMP PORT#
      ISZ LTEMP+1   ALL PORTS DONE? 
      JMP ANN6      NO
      JMP LEND      ALL DONE
* 
* 
ANNCH NOP 
      STA LTEMP+2   SAVE CHAR 
      LDA LTEMP+1   # OF PORTS
      STA LTEMP+3 
      LDA LTEMP     1ST PORT
      STA LTEMP+4 
ANNC1 LDB TTYTP     FIND TTY TABLE FOR
      ADB LTEMP+4     FOR THIS PORT 
      LDB 1,I 
      ADB .+?ID     IS HE ACTIVE? 
      LDA 1,I         CHECK ID TO 
      SZA,RSS           FIND OUT
      JMP ANNC2     NOPE - GET NEXT PORT
      ADB .+?CCNT-?ID 
      LDA 1,I       CHECK 
      ADA .-1         IF
      CPA MAXBL         BUFFER FULL 
      JMP ANNC1     YES 
      ADB .-?CCNT   NO - OK TO OUTPUT 
      LDA LTEMP+2 
      JSB POCR,I    OUTPUT CHARACTER
ANNC2 ISZ LTEMP+4   BUMP PORT # 
      ISZ LTEMP+3   ALL DONE? 
      JMP ANNC1     NO
      JMP ANNCH,I   YES 
* 
ANN.A OCT 101 
ANN.L OCT 114 
ANNJM JMP T35C0 
$ANN  EQU * 
      HED SLEEP 
* 
*     THE SLEEP COMMAND IS A SYSTEM COMMAND WHICH 
*     IS USED FOR SYSTEM SHUTDOWN. SLEEP IS CALLED
*     AFTER ALL USER DISCS HAVE BEEN REMOVED FROM 
*     THE SYSTEM WITH THE 'DISC-DN,<SUBCHANNEL>'
*     DIRECTIVE. THE SLEEP ROUTINE PERFORMS 
*     THE FOLLOWING FUNCTIONS:
* *q
*     1) PLACE ALL USERS IN DISCONNECT MODE 
*     2) OUTPUT SPECIFIED MESSAGE TO ALL TERMINALS
*     3) DISCONNECT ALL USERS 
*     4) LOG OFF ALL ACTIVE USERS 
*     5) CLEAR FUSS TABLE 
*     6) DUMP SYSTEM DISC TO CARTRIDGE DISC 
* 
      ORG LIBRA                                  X) 
      CLA           BLOACK
      STA DCLC1,I     CLOCK 
      LDA T35CP     SAVE CONTENTS OF LOCATION 
      ARS           POINTED TO BY T35CP 
      LDB A,I 
      STB LTEMP+3 
      LDA .+16
      LDB MAGMS 
      JSB TTY35,I   ASK IF MAG TAPE 
      LDA T35F1     WAIT FOR RESPONSE 
      SZA 
      JMP *-2 
      STA T35F2 
      LDA T35F2 
      SZA,RSS Su
      JMP *-2 
      LDA T35B1,I   LOAD RESPONSE 
      ALF,ALF 
      AND B177      GET SINGLE CHARACTER
      CLB 
      CPA SY        IS IT YES?
      INB           YES SET MAG TAPE FLAG 
      STB MGFLG 
      CLF 0 
      LDA DCLC2,I   UNBLOACK
      STA DCLC1,I     CLOCK 
      SZB 
      JMP MG.SP 
*                                                (X)
*     SCAN THE DIRECTORY FOR REFERENCES TO DISCS (X)
*     OTHER THAN THE SYSTEM DISC. ERROR IF A     (X)
*     REFERENCE IS FOUND                         (X)
*                                                (X)
      CLB,CCE     SET DIRECTORY POINTER            [X]
      ELB,BLS        TO 2*DISC SUBCHANNEL          [X]
      STB LTEMP                                  (X)
      LDB DIRD0    SET LTEMP+1 TO POINT          (X)
      ADB .+14     TO FIRST WORD OF              (X)
      STB LTEMP+1  USER DISC DIRECTORIES         (X)
      LDB .-6                                    (X)
      STB LTEMP+2                                  [X]
* *q
SLE0  LDB LTEMP+1  INDEX (B) TO DIRECTORY        (X)
      ADB .+6      DISC ADDRESS                  (X)
      LDA 1,I      GET DIRECTORY TRACK ADR IN (A)(X)
      SZA          GO TO SLE00 UPON FINDING      (X)
      JMP SLE00    THAT THE DISC IS ON SYSTEM    (X)
      ADB .+1                                    [X]
      STB LTEMP+1  UPDATE TO NEXT DIR ENTRY      (X)
      ISZ LTEMP                                  (X)
      ISZ LTEMP+2  ALL DIRECTORY TRACKS CHECKED? (X)
      JMP SLE0     NO                            (X)
MG.SP EQU * 
      CLB                                        X) 
      STB T35C1    NO DEBLANKING ON ASR35        X) 
      STB MPCOM                                  X) 
      LDA MLINK                                  X) 
      STA T35LK                                  X) 
*                                                X) 
      LDB NPORT     PLACE ALL USERS IN ABORT
      STB LTEMP    MODE AND WAIT FOR OUTPUT      X) 
      LDB DTTY0    TO COMPLETE                   X) 
SLE1  ADB .+?STAT                                X) 
      CCA FF
      STA 1,I                                    X) 
      ADB .+?CCNT-?STAT                          X) 
      STA 1,I                                    X) 
      ADB .-?CCNT+TTY01-TTY00                    X) 
      ISZ LTEMP                                  X) 
      JMP SLE1                                   X) 
*                                                X) 
      LDA ONEI     OUTPUT                        X) 
      LDB DEH      LINE-FEED                     X) 
      JSB TTY35,I                                X) 
* qq
      LDA T35CP     RESTORE CONTENTS OF LOCATION
      ARS           POINTED TO BY T35CP 
      LDB LTEMP+3 
      STB A,I 
*                                                X) 
      JSB SLE4   WAIT FOR ALL OUTPUT TO END.
* qq
***   OUTPUT SLEEP MESSAGE TO ALL ACTIVE USERS   X) 
*                                                X) 
      LDA .+15B    FIRST OUTPUT CR-LF-LF         X) 
      JSB SLECH                                  X) 
      LDA .+12B                                  X) 
      JSB SLECH                                  X) 
      LDA .+12B                                  X) 
      JSB SLECH                                  X) 
*                                                X) 
      JSB T35CQ    OUTPUT 'SLEEP' MESSAGE        X) 
      JMP *+3      TO ALL ACTIVE USERS           X) 
      JSB SLECH                                  X) 
      JMP *-3                                    X) 
*                                                X) 
      JSB SLECH    THEN ...                      X) 
      LDA .+12B    OUTPUT CR-LF-LF               X) 
      JSB SLECH                                  X) 
      LDA .+12B                                  X) 
      JSB SLECH                                  X) 
*                                                X) 
      JSB SLE4   WAIT FOR ALL OUTPUT TO END.
* 
*     NOW DISABLE MUX 
* 
      CLC MPX       DISABLE MUX.
      CLC DSCB      DISABLE PHONES. 
* qq
*                                                X) 
***   NOW WE HAVE TO LOG OFF ALL ACTIVE USERS    X) 
*                                                X) 
*                                                X) 
      LDB DTTY0    SEARCH USER TABLES            X) 
      ADB .+?ID    FOR ACTIVE IDS.               X) 
      LDA NPORT 
      STA LTEMP                                  X) 
SLE2  LDA 1,I      GET ID                        X) 
      SZA,RSS      TEST FOR ACTIVE               X) 
      JMP SLE3     NOT ACTIVE USER               X) 
      STB LTEMP+1  SAVE POINTER                  X) 
*                                                X) 
***   COMPUTE TIME USED                          X) 
*                                                X) 
      ADB .+?TIME-?ID                            X) 
      DLD 1,I      GET STARTING TIME             X) 
      CMA,INA      SET BOTH PARTS NEGATIVE       X) 
      CMB,INB                                    X) 
      CLF 0                                      X) 
      ADA DATIM    (A) = # HRS USED              X) 
      CLE                                        X) 
      ADB DATIM+1  (B) = # UNITS, OVERFLOW IN (E)X) 
      STF 0                                      X) 
      STB LTEMP+2  SAVE # OF UNITS               X) 
      MPY D60      HRS ==> MINS                  X) 
      STA LTEMP+3                                X) 
      LDA LTEMP+2  GET UNITS COUNT; IF E=0       X) 
      SEZ,RSS      THEN COUNT AS NEGATIVE        X) 
      CCB                                        X) 
      DIV D600     CHANGE TO MINUTES             X) 
      ADA LTEMP+3  ADD IN OTHER MINUTES          X) 
      STA LTEMP+2  TOTAL IN LTEMP(2)             X) 
*                                                X) 
***   SEARCH IDT FOR USER                        X) 
*                                                X) 
      LDA LTEMP+1,I                              X) 
      STA ID       SET UP FOR FIDT
      JSB FIDT      FINDT ID ENTRY
      ADB .+5      COMPUTE NEW TOTAL TIME        X) 
      CLE                                        X) 
      LDA 1,I                                    X) 
      ADA LTEMP+2                                X) 
      SEZ          IF OVERFLOW,                  X) 
      CCA          USE MAXIMUM                   X) 
      STA 1,I                                    X) 
*                                                X) 
      LDA LOGCT    CHECK FOR ROOM IN LOG TABLE   X) 
      CPA .+16
      JMP *-2                                    X) 
      LDA LOGP2    SET LOGP2 TO NEXT LOCATION    X) 
      INA          IN LOG TABLE                  X) 
      CPA LOGND                                  X) 
      LDA LOGBG                                  X) 
      STA LOGP2                                  X) 
      LDA LTEMP+1,I                              X) 
      IOR BIT15    PLACE ID IN LOG TABLE         X) 
      STA LOGP2,I                                X) 
      ISZ LOGP2                                  X) 
      DLD DATIM    COMPUTE TIME OF DAY           X) 
      STB LTEMP+2  SAVE UNIT COUNTER             X) 
      CLB                                        X) 
      DIV .+24                                   X) 
      LDA 1                                      X) 
      MPY D60      CHANGE TO MINUTES             X) 
      STA LTEMP+3  SAVE                          X) 
      LDA LTEMP+2  CHANGE UNITS TO MINUTES       X) 
      ADA D36K                                   X) 
      DIV D600                                   X) 
      ADA LTEMP+3  COMPUTE TOTAL TIME            X) 
      ALF          ROTATE                        (X)
      LDB NPORT     ADD IN PORT NUMBER. 
      CMB,INB 
      ADB LTEMP 
      ADA B Bi
      STA LOGP2,I  STORE IN TABLE                X) 
      ISZ LOGCT    INDEX COUNTER                 X) 
      LDA IDTRA,I   WRITE ID
      LDB LIBD        TRACK 
      JSB DISCL         BACK OUTP 
*                                                X) 
      LDB LTEMP+1  GET POINTER AGAIN             X) 
SLE3  ADB .+TTY01-TTY00                          X) 
      ISZ LTEMP    TEST FOR DONE                 X) 
      JMP SLE2                                   X) 
*                                                X) 
***   CLEAR FUSS TABLE                           X) 
*                                                X) 
      LDA LOGCT    WAIT FOR LOG TABLE            X) 
      SZA          TO EMPTY                      X) 
      JMP *-2                                    X) 
      CPA T35F1    WAIT FOR TTY TO STOP          X) 
      RSS                                        X) 
      JMP *-2                                    X) 
* 
***   READ IN SLEEP OVERLAY 
* 
      LDA M252                                   (X)
      STA WORD                                   (X)
      DLD LIB,I                                  (X)
      LDA 1                                      (X)
      LDB #LIBI                                  (X)
      JMP LIBRA+254                              (X)
* *q
* 
***   INFORM SYSTEM OPERATOR TO DOWN DISC 
* 
SLE00 LDA LTEMP    COMPUTE SUBCHANNEL            (X)
      CLE,ERA      OF DISC TO BE REMOVED         (X)
      IOR SLPM-1   ADD ASCII NUMBER BITS         (X)
      STA SLPML-1  AND STORE IN MESSAGE          (X)
      LDA SLPM                                   (X)
      LDB SLPML    TRANSFER                      (X)
      STA MOVES     THE MESSAGE                  (X)
      LDA T35B1      TO THE CONSOLE              (X)
      STA MOVED       TTY BUFFER                 (X)
      JSB MOVEW        AND                       (X)
      LDA SLPML         INITIATE PRINTING        (X)
      ALS                                        [X]
      CMA,INA                                    (X)
      LDB T35B1                                  (X)
      JMP LEND2     RETURN. 
* 
      ASC 1, 0                                   (X)
SLPM  DEF *+1                                    (X)
      OCT 5104      LF-D
      ASC 6,OWN SUBCH 0 
SLPML ABS SLPM-SLPML+1                           (X)
*                                                X) 
* 
*                                                X) 
***   SLECH OUTPUTS THE CHARACTER IN (A) TO      X) 
***   ALL ACTIVE USER TERMINALS                  X) 
*                                                X) 
SLECH NOP                                        X) 
      STA LTEMP    SAVE CHARACTER                X) 
      LDA NPORT     SET PORT COUNT
      STA LTEMP+1                                X) 
      LDB DTTY0    GET INITIAL POINTER           X) 
      ADB .+?ID                                  X) 
SLEC1 LDA 1,I      TEST FOR ACTIVE               X) 
      SZA,RSS                                    X) 
      JMP SLEC2    INACTIVE USER TERMINAL        X) 
      STB LTEMP+2  SAVE POINTER                  X) 
      ADB .+?CCNT-?ID 
      LDA 1,I 
      ADA .-1       IS U BUFFER ALMOST FULL?
      CPA MAXBL 
      JMP *-3 
      ADB .-?CCNT 
      LDA LTEMP                                  X) 
      JSB POCR,I    OUTPUT IT 
      LDB LTEMP+2  GET ID POINTER AGAIN          X) 
SLEC2 ADB .+TTY01-TTY00                          X) 
      ISZ LTEMP+1  TEST FOR DONE                  (X) 
      JMP SLEC1                                  X) 
      JMP SLECH,I                                X) 
* 
*  WAIT FOR ALL OUTPUT TO END 
* 
SLE4  NOP 
      LDA NPORT 
      STA LTEMP+3 
      LDB DTTY0 
      ADB .+?TSTA   GET TTY STATUS. 
SLE5A LDA B,I       IS IT IN INPUT MODE?
      AND IOBT
      SZA,RSS 
      JMP SLE5A     NO. WAIT. 
      ADB .+TTY01-TTY00  YES. NEXT PORT.
      ISZ LTEMP+3   ALL DONE? 
      JMP SLE5A     NO. 
      JMP SLE4,I    YES.
* 
* 
MAGMM OCT 5115
      ASC 7,AG TAPE SLEEP?
MAGMS DEF MAGMM 
SY    OCT 131 
      ORG LIBRA+254                              (X)
      JSB DISCL                                  (X)
      JMP LIBRA                                  (X)
$SLE  EQU *                                      (X)
