      HED DISC* THE DISC COMMAND ALLOWS THE SYSTEM OPERATOR TO INFORM THE SYSTEM* OF ANY CHANGES IN THE DISC CONFIGURATION. THE FORMAT OF THE DISC* COMMAND IS AS FOLLOWS:* * DISC-N,SC,SIZE*  OR * DISC-N,SC * * N IS A DIGIT FROM 1 TO 3 INDICATING THE NUMBER OF A DISC. SC IS * AN OCTAL NUMBER SPECIFYING THE SELECT CODE OF THE HIGH PRIORITY * DISC CHANNEL. SIZE IS THE NUMBER OF SECTORS PER DISC TRACK. * IF SC=0, THE DISC IS REMOVED FROM THE SYSTEM. THIS IS ALLOWED ONLY* IF ALL TRACKS ARE LOCKED. IF SC>0 AND THE DISC IS ALREADY DEFINED,* THE SELECT CODE IS CHANGED. IF THE DISC IS NOT DEFINED, THE SC AND* SIZE ARE ADDED TO THE DISC TABLE, NEW ENTRIES ARE ADDED TO THE* ADT, AND A NEW DIRECTORY TRACK IS ESTABLISHED IF NECESSARY.       SPC 2       ORG LIBRA       JSB T35CQ     GET FIRST CHAR--SHOULD BE 1,2,3.      JMP LFRER       ADA M60B      TEST.       CPA .+1       JMP *+6       CPA .+2       JMP *+4       CPA .+3       RSS       JMP LFRER *       STA DISCN     SAVE DISC NO.       ADA ?ATBL     COMPUTE TBL LOCATION      STA DISTB      FOR DISC.      JSB T35CQ     TEST FOR COMMA.       JMP LFRER       CPA .+54B       RSS       JMP LFRER       JSB T35CQ     GET SELECT CODE.      JMP LFRER       ADA M60B      TEST FOR OCTAL.       SSA       JMP LFRER       ADA .-8       SSA,RSS       JMP LFRER       ADA .+8       STA DISSC     START OF SELECT CODE.       JSB T35CQ     GET NEXT CHAR.      JMP DISC1     IF CR THERE IS NO SIZE.       STA 1         TEST FOR OCTAL.       ADB M60B      SSB       JMP DISC2     NOT OCTAL.      ADB .-8       SSB,RSS       JMP DISC2       LDA DISSC     BUILD SELECT CODE.      ALF,RAR       ADB .+8       ADA 1       STA DISSC       JSB T35CQ     NEXT CHAR.      JMP DISC1     NO SIZE FIELD.DISC2 CPA .+54B     COMMA TEST.       CLA,RSS       JMP LFRER     FAIL.       CPA DISSC     SC=0?       JMP LFRER     YES--ERROR. DISC4 STA DISIZ     SET SIZE TO 0.      JSB T35CQ     GET SIZE DIGIT.       JMP DISC3     END OF FIELD.       ADA M72B      DEC.DIGIT TEST.       SSA,RSS       JMP LFRER       ADA .+10      SSA       JMP LFRER       STA DISCT     SAVE DIGIT VALUE.       LDA DISIZ     *10 AND ADD IN.       MPY .+10      SSA,RSS       OVERFLOW TEST.      SZB       JMP LFRER       ADA DISCT     ADD NEW DIGIT.      JMP DISC4     LOOP. * DISC3 LDA DISIZ     MAKE SURE SIZE IS VALID.      ADA M128      ADA .-1       SSA,RSS       JMP DISR1     ERROR.      ADA .+39      LDB DISTB,I   ALSO TEST FOR ZERO IN       SSA,RSS         TBL.      SZB       JMP DISR1     ERROR.*       LDB DISSC     COMPUTE PROPER TRACK PREFIX       RSS           BY SEARCHING TBL AND FINDINGDIS11 ADB B100       THE SMALLEST UNUSED PREFIX FOR       LDA ?ATBL     THIS SELECT COSE.       STA DISP      LDA .-4       STA DISCT DIS12 LDA DISP,I    GET TBL ENTRY.      AND B377      GET SELECT CODE INFO.       CPA 1         TEST FOR USED.      JMP DIS11     ALREADY USED.       ISZ DISP      BUMP TO NEXT TBL ENTRY.       ISZ DISCT     END OF TBL?       JMP DIS12     NO      LDA DISIZ     INSERT INFO INTO      ALF,ALF        TABLE.       ADA 1         MERGE IN SELECT CODE&PREFIX.      STA DISTB,I * * UNLOCK DISC TRACKS **       LDB DISCN       RBL,RBL       ADB DTRAX     B=>TRAX TABLE       CLA           CLEAR       STA 1,I       INB            ALL      STA 1,I       INB             FOUR      STA 1,I       INB              WORDS.       STA 1,I * * COMPUTE THE NUMBER OF NEW TRACKS WE CAN ADD.*       LDA M64       MAX=-64.      STA DISCM       AND IDLEN     # OF WORDS CONSUMED BY IDT.       ADA ADLEN      + THOSE CONSUMED BY ADT.       ADA P5440     SUBTRACTED FROM 5440      ARS           A=# OF ENTRIES AVAIL.       LDB 0         COMPARE TO 64.      CMA,INA       ADB M64       SSB       STA DISCM     =-# OF NEW ENTRIES.       LDA ADLEN     READ ADT.       STA WORD      ADA DISCM       ADA DISCM       STA ADLEN       LDB DISCM       CMB,INB,SZB,RSS       JMP LEND      BLS       ADB LIBD      PLACE TO READ IT TO.      STB MOVES       ADB BIT15       LDA ADLOC       JSB DISCL     READ IT.* * INSERT NEW ENTRIES INTO THE ADT.*       LDA DISCN     PREPARE ADDRESS OF 1ST TRACK.       RAR,RAR       STA DISTR       LDA LIBD      SET DESTINATION POINTER.      STA MOVED DISC6 LDA MOVES,I   GET DISC ADDRESS OF NEXT ENTRY.       CMA,CLE,INA       ADA DISTR       SEZ,RSS       JMP *+4       FOUND A PLACE FOR NEW ENTRIES.      LDB .-2       MOVE ENTRY AND      JSB MOVEW      LOOK AGAIN.      JMP DISC6 *       LDB DISIZ     NOW PUT IN NEW ENTRIES.       LDA DISTR DISC7 DST MOVED,I   STORE IN TABLE.       ISZ MOVED     BUMP POINTER.       ISZ MOVED       ADA B400      BUMP TRACK  ADDRESS.      ISZ DISCM     ANY MORE?       JMP DISC7     YES * * * DETERMINE WHETHER WE WANT TO ALLOCATE A NEW DIRECTORY TRACK BY* COMPARING THE # OF DISCS TO THE # OF DIRECTORY TRACKS.*       LDA .-4       COUNTER       STA DIST1       LDA DIRD0       ADA .+6       STA DIST2       LDA ?ATBL       STA DIST3       CLB DISC5 LDA DIST2,I   TEST DIRECTORY TRACK.       SZA       INB       LDA DIST3,I   TEST DISC.      SZA       ADB .-1       ISZ DIST3     BUMP POINTERS.      LDA DIST2       ADA .+7       STA DIST2       ISZ DIST1     TEST COUNTER.       JMP DISC5     LOOP. * * IF B<0 WE WANT TO ALLOCATE A DIRECTORY TRACK. *       SSB,RSS       JMP DISC8 * * FIND AN ADT ENTRY WHICH IS EXACTLY ONE TRACK LONG.*       LDB LIBD      INITIALIZE      STB DIST2      POINTER. DISC9 DLD DIST2,I   GET ADT INFO.       RAL,RAL       GET TRACK       AND .+3        LENGTH.      ADA ?ATBL       LDA 0,I       ALF,ALF       AND B377      CPA 1       JMP *+4       FOUND ONE.      ISZ DIST2     BUMP POINTER.       ISZ DIST2       JMP DISC9 *       LDB DIRD0     NOW FIND FREE DIRECTORY ENTRY.      ADB .+6       CLA       CPA 1,I       JMP *+3       ADB .+7       JMP *-3       LDA DIST2,I   STORE DISC ADR. IN.       STA 1,I *       LDB DIST2       STB MOVED     REMOVE ENTRY FROM ADT.      ADB .+2       STB MOVES       ADB ADLEN       ADB MLIBD       JSB MOVEW       ISZ ADLEN       ISZ ADLEN * DISC8 LDA ADLEN     WRITE OUT ADT.      STA WORD      LDA ADLOC       LDB LIBD      JSB DISCL       JMP LEND      EXIT. * * DISC1 LDA DISSC     SELECT-CODE-ONLY SPECIFIED.       SZA           SC=O?       JMP DISR1     NO--ILLEGAL.      LDB DISCN     MAKE SURE ALL TRAKCS ARE LOCKED.      RBL,RBL       ADB DTRAX       LDA 1,I       INB       AND 1,I       INB       AND 1,I       INB       AND 1,I       INA,SZA       JMP DISR1     ILLEGAL REQUEST.      STA DISTB,I   INSERT 0 IN TABLE.      JMP LEND* * PRINT ERROR MESSAGE * DISR1 LDA T35B1       STA MOVED       LDA DISR2       STA MOVES       LDB .-8       JSB MOVEW       LDA .+16      LDB T35B1       JMP LEND+2DISR2 DEF *+1       OCT 5111      ASC 7,LLEGAL REQUEST$DIS  EQU *       SPC 1       ORG LTEMP DISTB BSS 1 DISP  BSS 1 DISCN BSS 1 DISSC BSS 1 DISIZ BSS 1 DISCT BSS 1 DISCM BSS 1 DISTR BSS 1 DIST1 BSS 1 DIST2 BSS 1 DIST3 BSS 1       HED MAGTAPE * THE MAGTAPE COMMAND IS USED TO TELL THE SYSTEM OF THE EXISTENCE * OF A MAGTAPE UNIT. THE FORMAT IS: *     MAGTAPE-SELECT CODE [*]                                    [F]* THE SELECT CODE SPECIFIED IS THE LOWER NUMBERED OF THE 2* CODES FOR THE TAPE. A CODE OF 0 INDICATES THAT NO TAPE EXISTS.* IF AN ASTERISK IS INSERTED, A 7970 CONTROLLER IS INDICATED.    [F]      SPC 1       ORG LIBRA       JSB MAGDG     GET FIRST DIGIT.      ALF,RAR       MULTIPLY BY 8 AND SAVE.       STA LTEMP       SZA,RSS       JMP MAG1      JSB MAGDG     GET 2ND DIGIT.      ADA LTEMP     COMPUTE #.      STA LTEMP       JSB T35CQ     ANY MORE CHARACTERS?         [F]      JMP MAG2      NO.                          [F]      CPA .+52B     ASTERISK?                    [F]      RSS           YES.                         [F]      JMP LFRER     NO--BAD NEWS.                [F]      LDA LTEMP     SET BIT 15 TO INDICATE       [F]      ADA BIT15      7970.                       [F]      STA LTEMP                                  [F]MAG1  JSB T35CQ     CHECK FOR ANY MORE CHARACTERS.      RSS           O.K.      JMP LFRER MAG2  LDA LTEMP     GET S.C. AGAIN.              [F]      AND B77       DON'T LOOK AT 3030/7970 BIT. [F]      CPA B77       ILLEGAL IF 77.      JMP LFRER       SZA                                        [E]      ADA .-16B     THE                          [E]      SSA            CLAY                        [E]      JMP LFRER       SUPER                      [E]      LDA LTEMP        PATCH.                    [E]      STA MAGSC     STORE IN SYSTEM LOCATION.       JMP LEND* MAGDG NOP           GET AN OCTAL DIGIT.       JSB T35CQ       JMP LFRER     FAIL IF NONE.       STA 1       AND .-8       TEST FOR OCTAL DIGIT.       CPA .+60B       RSS       JMP LFRER     FAIL.       XOR 1         CONVERT TO BINARY.      JMP MAGDG,I    RETURN.$MAG  EQU *       HED PHONES* THE PHONES COMMAND IS USED TO INITIALIZE THE TELEPHONE LOGIC* IN THE SCHEDULER. THE FORMAT FOR THE PHONES COMMAND IS: * *     PHONES-SELECT CODE, TIME LIMIT* * IF SELECT CODE =0. THE COMMAND INDICATES THAT THE AUTO-DISCONNECT * SHOULD BE IGNORED. OTHERWISE, IT INDICATES THE LOCATION OF THE* AUTO-DISCONNECT BOARD. TIME LIMIT REFERS TO THE NUMBER OF SECONDS * ALLOWED A USER TO LOG ON. IT IS OPTIONAL, AND IF NOT SUPPLIED IT* IS LEFT AT 120.       SPC 1       ORG LIBRA       CLA *                                                                [E]PHO2  STA LTEMP     INITIALIZE SC=0       AND D100      SELECT CODE                  [E]      SZA            OVERFLOW?                   [E]      JMP LFRER                                  [E]      JSB T35CQ     GET A CHARACTER.      JMP PHO1      END OF INPUT.       CPA .+54B     TEST FOR COMMA.       JMP PHO1      END OF S.C.       AND .-8       TEST FOR OCTAL DIGIT.       CPA .+60B       RSS           O.K.      JMP LFRER     ERROR.*                                                                [E]      XOR T35LC     GET DIGIT VALUE.      LDB LTEMP     MULTIPLY PREVIOUS VALUE BY 8      RBR,BLF        AND COMPUTE NEW NUMBER.      ADA 1       JMP PHO2PHO1  LDA LTEMP     CHECK FOR SC BETWEEN 16B & 77B. *                                                                [E]      SZA,RSS       JMP PHO3      SELECT CODE=0.               [E]      ADA .-16B       SSA       JMP LFRER *                                                                [E]      LDA T35LC     IF LAST CHAR WAS CR, USE 120      CPA .+15B      SECONDS. OTHERWISE READ # OF       JMP PHO4        SECONDS.*       CLA           INITIALIZE COUNT TO 0.PHO6  STA LTEMP+1                                [E]      ADA PH324     TEST FOR TOO BIG             [E]      SSA,RSS                                    [E]      JMP LFRER                                  [E]      JSB T35CQ     GET A CHAR.       JMP PHO5      LAST CHAR.      ADA M72B      TEST FOR DIGIT.       SSA,RSS       JMP LFRER       ADA .+10      SSA       JMP LFRER       LDB LTEMP+1   MULTIPLY OLD VALUE BY 10 AND [E]      RBL,RBL        ADD IN NEW.      ADB LTEMP+1                                [E]      RBL       ADA 1       JMP PHO6PHO5  LDA LTEMP+1   A=INPUT VALUE                [E]      MPY .+10      RSS                                        [E]PHO4  LDA PHOST     IF NOT GIVEN, USE STANDARD VAL.       STA PHR *                                                                [E]* SET UP INSTRUCTIONS IN THE SCHEDULER                           [E]*                                                                [E]      CLF 0                                      [E]      LDA LTEMP     SET UP OTA.                  [E]      STA PHSC      SET UP SELECT CODE.          [E]      IOR PHOTA                                  [E]      STA PHOD1,I                                [E]      ADA M64       SET UP LIA.                  [E]      STA PHOD2,I                                [E]      STA *+1       EXECUTE LIA.                 [E]      NOP                                        [E]      STA PHL       SET UP "LAST INPUT"          [E]*       LDA *+1       SET RSS IN TO ALLOW PHONE    [E]      RSS                              LOGIC.    [E]PHO3  STA PHSC      SET UP SELECT CODE.          [E]      STA PHOD3,I                                [E]      JMP LEND      TERMINATE.* * PHOD1 DEF SCH53 PHOD2 DEF SCH41 PHOD3 DEF SCH1PHOTA OTA 0 PHOST DEC 1200PH324 DEC -324$PHO  EQU *       HED LANGUAGE PROCESSOR ERROR MESSAGES       ORG LIBRA       DEC -7      ASC 15,OUT OF STORAGE       DEC -13       ASC 15,ILLEGAL OR MISSING INTEGER       DEC -13       ASC 15,EXTRANEOUS LIST DELIMITER      DEC -14       ASC 15,MISSING ASSIGNMENT OPERATOR      DEC -15       ASC 15,CHARACTERS AFTER STATEMENT END       DEC -14       ASC 15,MISSING OR ILLEGAL SUBSCRIPT       DEC -15       ASC 15,MISSING OR BAD LIST DELIMITER      DEC -14       ASC 15,MISSING OR BAD FUNCTION NAME       DEC -15       ASC 15,MISSING OR BAD SIMPLE VARIABLE       DEC -12       ASC 15,MISSING OR ILLEGAL 'OF'      DEC -13       ASC 15,MISSING OR ILLEGAL 'THEN'      DEC -12       ASC 15,MISSING OR ILLEGAL 'TO'      DEC -13       ASC 15,MISSING OR ILLEGAL 'STEP'      DEC -14       ASC 15,MISSING OR ILLEGAL DATA ITEM       DEC -8      ASC 15,ILLEGAL EXPONENT       DEC -10       ASC 15,SIGN WITHOUT NUMBER      SPC 2       ORG LIBRA       DEC -14       ASC 15,MISSING RELATIONAL OPERATOR      DEC -11       ASC 15,ILLEGAL READ VARIABLE      DEC -14       ASC 15,ILLEGAL SYMBOL FOLLOWS 'MAT'       DEC -15       ASC 15,MATRIX CANNOT BE ON BOTH SIDES       DEC -15       ASC 15,NO '*' AFTER RIGHT PARENTHESIS       DEC -15       ASC 15,NO LEGAL BINARY OPERATOR FOUND       DEC -12       ASC 15,MISSING LEFT PARENTHESIS       DEC -13       ASC 15,MISSING RIGHT PARENTHESIS      DEC -15       ASC 15,PARAMETER NOT STRING VARIABLE      DEC -11       ASC 15,UNDECIPHERABLE OPERAND       DEC -15       ASC 15,MISSING OR BAD ARRAY VARIABLE      DEC -15       ASC 15,STRING VARIABLE NOT LEGAL HERE       DEC -15       ASC 15,MISSING OR BAD STRING OPERAND      DEC -8      ASC 15,NO CLOSING QUOTE       DEC -14       ASC 15,72 CHARACTERS MAX FOR STRING       DEC -15       ASC 15,STATEMENT HAS EXCESSIVE LENGTH       SPC 2       ORG LIBRA       DEC -15       ASC 15,MISSING OR BAD FILE REFERENCE      DEC 15      ASC 15,UNDEFINED STATEMENT REFERENCE      DEC 13      ASC 15,NEXT WITHOUT MATCHING FOR      DEC 12      ASC 15,SAME FOR-VARIABLE NESTED       DEC 11      ASC 15,FUNCTION DEFINED TWICE       DEC 13      ASC 15,VARIABLE DIMENSIONED TWICE       DEC 12      ASC 15,LAST STATEMENT NOT 'END'       DEC -7      ASC 15,UNMATCHED FOR      DEC -9      ASC 15,UNDEFINED FUNCTION       DEC -8      ASC 15,ARRAY TOO LARGE      DEC -14       ASC 15,ARRAY OF UNKNOWN DIMENSIONS      DEC 7       ASC 15,OUT OF STORAGE       DEC 13      ASC 15,DIMENSIONS NOT COMPATIBLE      DEC -14       ASC 15,CHARACTERS AFTER COMMAND END       DEC -15       ASC 15,BAD FORMAT IN FILES STATEMENT      DEC -13       ASC 15,MISSING OR PROTECTED FILE      SPC 2       ORG LIBRA       DEC 11      ASC 15,GOSUBS NESTED TEN DEEP       DEC 13      ASC 15,RETURN WITH NO PRIOR GOSUB       DEC 12      ASC 15,SUBSCRIPT OUT OF BOUNDS      DEC 11      ASC 15,NEGATIVE STRING LENGTH       DEC 15      ASC 15,NON-CONTIGUOUS STRING CREATED      DEC 8       ASC 15,STRING OVERFLOW      DEC 6       ASC 15,OUT OF DATA      DEC 9       ASC 15,DATA OF WRONG TYPE       DEC 12      ASC 15,UNDEFINED VALUE ACCESSED       DEC 9       ASC 15,MATRIX NOT SQUARE      DEC 15      ASC 15,REDIMENSIONED ARRAY TOO LARGE      DEC 11      ASC 15,NEARLY SINGULAR MATRIX       DEC 12      ASC 15,LOG OF NEGATIVE ARGUMENT       DEC 12      ASC 15,SQR OF NEGATIVE ARGUMENT       DEC 9       ASC 15,ZERO TO ZERO POWER       DEC 15      ASC 15,NEGATIVE NUMBER TO REAL POWER      SPC 2       ORG LIBRA       DEC 15      ASC 15,ARGUMENT OF SIN OR TAN TOO BIG       DEC -15       ASC 15,OVER/UNDERFLOWS - WARNING ONLY       DEC -15       ASC 15,LAST INPUT IGNORED, RETYPE IT      DEC 11      ASC 15,SECOND FILES STATEMENT       DEC 14      ASC 15,NON-EXISTENT FILE REQUESTED      DEC 15      ASC 15,WRITE TRIED ON READ-ONLY FILE      DEC 13      ASC 15,END-OF-FILE/END OF RECORD      DEC -14       ASC 15,BAD INPUT, RETYPE FROM ITEM      DEC 13      ASC 15,LOG OF ZERO - WARNING ONLY       DEC 15      ASC 15,ZERO TO NEGATIVE POWER-WARNING       DEC 15      ASC 15,DIVIDE BY ZERO - WARNING ONLY      DEC 14      ASC 15,EXP OVERFLOW - WARNING ONLY      DEC 12      ASC 15,OVERFLOW - WARNING ONLY      DEC 12      ASC 15,UNDERFLOW - WARNING ONLY       DEC -13       ASC 15,EXTRA INPUT - WARNING ONLY       DEC -8      ASC 15,READ-ONLY FILES:       SPC 2       ORG 0       NOP           SIGNAL LOADER THAT WE'RE DONE.      END 