      HED DELETE* THE DELETE COMMAND ALLOWS A USER TO DELETE A SECTION OF HIS * PROGRAM IN A SINGLE LINE. THE FORMAT IS:*     DELETE-M,N*  OR *     DELETE-M* WITH THE FIRST FORMAT, ALL LINES FROM M THROUGH N ARE * DELETED. WITH THE SECOND, ALL LINES FROM M TO THE END OF* THE PROGRAM ARE DELETED.      SPC 1       ORG LIBRA       JSB DELNM     GET M.      STA DELM      LDA DEL99       CPB .+54B     IF COMMA FOLLOWS, GO      JSB DELNM      GET N.       STA DELN      CPB .+15B     NEXT CHAR MUST BE A CR.       JMP DEL2      JMP ILFER * DEL2  CMA           CHECK FOR M<=N      ADA DELM      SSA,RSS       JMP ILFER *       JSB RDPRG     READ IN PROGRAM AND       JSB DCMPL      DECOMPILE IT.*       LDA PBPTR     LOCATE FIRST      LDB DELM       STATEMENT TO BE DELETED.       JSB FNDPS       RSS       NOP       STB MOVED *       LDA PBPTR     LOCATE FIRST STATEMENT      LDB DELN       NOT TO BE DELETED.       STA MOVES       CPB DEL99       JMP DEL3      INB       JSB FNDPS       RSS       NOP       STB MOVES * DEL3  LDB MOVES     IF DEST=SOURCE, NOTHING DELETED.      CPB MOVED       JMP DEL4      CMB,INB       OTHERWISE, MOVE UP.       ADB PBPTR       CMB,INB       JSB MOVEW       LDA MOVED     SET NEW VALUE OF      STA PBPTR      PBPTR.       LDA MLINK+1   TELL SCHEDULER THAT       ADA .-?LINK    PROGRAM IS IN CORE.      STA MAIN      JMP LLEND * DEL4  LDA MLINK+1       ADA .-?LINK       STA MAIN      LDA .-17      LDB *+2       JMP LIBER       DEF *+1       OCT 5116      LF-N      ASC 7,OTHING DELETED      OCT 6400      CR* * DELNM READS A NUMBER FROM THE USER'S BUFFER. IN CASE OF ERROR IT* GOES TO DEL1. OTHERWISE IT RETURNS WITH A=# AND B=NEXT CHAR.* DELNM NOP       CLA           INITIALIZE TO 0.DEL7  STA DELT                                   [E]      JSB LCHAR     GET A CHARACTER.             [E]      NOP       STA 1         SAVE IN B.      ADA M72B      TEST FOR DIGIT.       SSA,RSS       JMP DEL6      ADA .+10      SSA       JMP DEL6      LDB DELT      MAKE SURE LAST VALUE         [E]      ADB DELMX      WAS LESS THAN 1000.         [E]      SSB,RSS                                    [E]      JMP ILFER     BAD NEWS.                    [E]      LDB DELT      MPY OLD VALUE BY 10.      RBL,RBL       ADB DELT      RBL       ADA 1         ADD IN NEW. *                                                                [E]      JMP DEL7      LOOP. * DEL6  LDA DELT      GET VALUE       SZA           FAIL IF ZERO.       JMP DELNM,I       JMP ILFER * DELM  EQU LTEMP DELN  EQU LTEMP+1 DELT  EQU LTEMP+2 DEL99 DEC 9999DELMX DEC -1000                                  [E]$DEL  EQU *       HED TIME* THE TIME COMMAND PRINTS THE USER'S CONSOLE TIME DURING THIS * SESSION AND HIS TOTAL CONSOLE TIME TO DATE.       SPC 1       ORG LIBRA       SPC 1       LDA .-16      OUTPUT START OF       LDB TIM1       MESSAGE.       JSB LTYPR       LDB IDLEN     SET UP DISC TRANSFER      STB WORD       LENGTH.      LDA IDLOC     INITIATE DISC       LDB LIBDI      TRANSFER OF IDT.       JSB DISC,I*       LDA MLINK+1   COMPUTE LOC OF USER'S       ADA .+?TIME-?LINK  STARTING TIME.       DLD 0,I       GET STARTING TIME.      CMA,INA       MAKE NEGATIVE AND       CMB,INB        SAVE IN TIMT.      DST TIMT      DLD DATIM     GET CURRENT TIME.       ADA TIMT      COMPUTE DIRRERENCES: A=# OF HRS;      CLE           B=# OF 100 MS UNITS.      ADB TIMT+1     E=-SIGN OF B.      STB TIMT+1    SAVE UNITS.       MPY D60       CHANGE HRS TO MINS.       STA TIMT      LDA TIMT+1    GET UNIT COUNT. IF E=0      SEZ,RSS        THEN COUNT IS NEGATIVE.      CCB       DIV D600      CHANGE TO MINS.       ADA TIMT      ADD IN PREVIOUS AMT.      STA TIMT      JSB TIMPR     PRINT IT. *       LDA .-14      OUTPUT SOME MORE      LDB TIM2       CHARACTERS.      JSB LTYPR *       LDA ENDSK     WAIT FOR DISC TO      SZA            FINISH.      JMP *-2 *       LDA MLINK+1   GET USER ID.      ADA .+?ID-?LINK       LDA 0,I       LDB LIBD      SEARCH IDT.       CPA 1,I       JMP *+3       ADB .+8       JMP *-3 *       ADB .+5       GET TIME TO DATE.       LDA 1,I       ADA TIMT      ADD IN CURRENT TIME.      JSB TIMPR     PRINT IT. *       LDA .+15B     OUTPUT CR.      JSB LOUT      JMP LLEND     TERMINATE.* TIM1  DEF *+1       OCT 5103      LF-C      ASC 7,ONSOLE TIME = TIM2  DEF *+1       ASC 7, TOTAL TIME = TIM3  DEF *+1       ASC 5, MINUTES. * * TIMPR OUTPUTS THE INTEGER IN A TO THE CONSOLE.* TIMPR NOP       SZA,RSS       SPECIAL CASE OF ZERO.       JMP TIMP1       STA TIMNM     SAVE ORIGINAL NUMBER.       LDB TIMXK     GET INITIAL DIVISOR OF 10000.       STB TIMDV TIMP4 CLB           COMPUTE A DIGIT.      DIV TIMDV       STB TIMN      SAVE REMAINDER.       CPB TIMNM     IF REMAINDER=ORIGINAL NUMBER      JMP TIMP2     THIS IS A LEADING ZERO.       ADA .+60B     OUTPUT      JSB LOUT       DIGIT. TIMP2 LDA TIMDV     PRODUCE NEW DIVISOR.      CLB       DIV .+10      STA TIMDV       SZA,RSS       DONE IF DIVISOR IS ZERO.      JMP TIMP3       LDA TIMN      GET # AGAIN AND LOOP.       JMP TIMP4 TIMP1 LDA .+60B     OUTPUT SINGLE 0.      JSB LOUTTIMP3 LDA .-9       PRINT       LDB TIM3       "MINUTES."       JSB LTYPR *       JMP TIMPR,I * TIMXK DEC 10000 TIMN  EQU LTEMP TIMT  EQU LTEMP+1 TIMNM EQU LTEMP+3 TIMDV EQU LTEMP+4 $TIM  EQU *       HED PROTECT * THE PROTECT COMMAND CAN BE USED BY A000 TO PROTECT PROGRAMS AND * FILES FROM BEING READ BY OTHER USERS. ALL THE COMMAND DOES IS TO* SET BIT 15 OF WORD 1 IN THE DIRECTORY ENTRY FOR THE PROGRAM.      SPC 1       ORG LIBRA       SPC 1       LDA MLINK+1   GET USER'S ID.      ADA .+?ID-?LINK       LDA 0,I       CHECK FOR PROPER      CPA A000       USER.      JMP PRO1*       LDA .-19      LDB *+2       JMP LIBER       DEF *+1       OCT 5120      LF-P      ASC 9,RIVILEGED COMMAND * PRO1  STA LTEMP     PLACE ID INTO LTEMP.      LDA DLTEM     SET POINTER FOR PROGRAM NAME.       STA PROC      LDA .-3       SET UP COUNTER.       STA PROD      JSB LCHAR     GET FIRST CHAR.       JMP PRO2      ERROR IF NONE.PRO3  ALF,ALF       SAVE CHARACTER IN       ISZ PROC       TABLE.       STA PROC,I      JSB LCHAR     GET RIGHT CHAR.       LDA .+40B     IF END CHANGE TO BLANK      IOR PROC,I      STA PROC,I      JSB LCHAR     GET NEXT CHAR.      LDA .+40B       ISZ PROD      DO WE WANT IT?      JMP PRO3      YES.      CPA .+40B     MUST BE A BLANK.      JMP PRO4* PRO2  LDA .-13      LDB *+2       JMP LIBER       DEF *+1       OCT 5111      LF-I      ASC 6,NVALID NAME * PRO4  JSB DLOOK     SEARCH FOR PROG. IN DIRECTORY.      JMP PRO6      FOUND.*       LDA .-16      LDB *+2       JMP LIBER       DEF *+1       OCT 5116      LF-N      ASC 7,O SUCH PROGRAM* PRO6  LDB LTEMP+5   SET PROTECT BIT.      INB       LDA 1,I PRO7  IOR BIT15       STA 1,I *       LDB LTEMP+4   WRITE OUT DIRECTORY.      LDA 1,I       STA WORD      ADB .+6       LDA 1,I       LDB LIBD      JSB DISC,I      JMP LLEND PROD  EQU LTEMP+6 PROC  EQU LTEMP+7 $PRO  EQU *       HED UNPROTECT * UNPROTECT IS IDENTICAL TO PROTECT EXCEPT THAT IT CLEARS THE * PROTECT BIT INSTEAD OF SETTING IT.      ORG LIBRA       LDA MLINK+1       ORG PRO7      ELA,CLE,ERA       HED OPEN* THE OPEN COMMAND IS A USER FUNCTION WHICH CAUSES THE SYSTEM TO* CREATE ROOM FOR A DATA FILE. THE FORMAT FOR THE COMMAND IS: * *     OPEN-FILENAME,LENGTH* * THE FILENAME IS SUBJECT TO ALL THE RULES OF PROGRAM NAMES. THE* LENGTH IS A DECIMAL INTEGER FROM 1 TO 128 INDICATING THE FILE * LENGTH IN SECTORS.      SPC 2       ORG LIBRA       LDA MLINK+1   GET ID AND STORE      ADA .+?ID-?LINK    IN LTEMP.      LDA 0,I       STA LTEMP       LDA DLTEM     SET UP POINTER FOR      STA OPEP       NAME.      LDA .-3       SET UP COUNTER.       STA OPEC      CLA           SET FLAG SAYING FIRST       STA OPEF       CHAR.OPE1  JSB OPER      GET A CHARACTER.      ALF,ALF       STORE IN      ISZ OPEP       NAME AREA.       STA OPEP,I      JSB OPER      GET RIGHT CHAR.       IOR OPEP,I    MERGE IN.       STA OPEP,I      ISZ OPEC      TEST FOR ANY MORE.      JMP OPE1*       JSB OPER      NEXT CHARACTER MUST BE      CPA .+40B      BLANK.       JMP OPE2      JMP ILFER     OUTPUT ILLEGAL FORMAT MESSAGE.* OPER  NOP           GET NEXT CHAR FOR NAME.       LDA OPEF      TEST TO SEND BACK BLANK.      CPA .+40B       JMP OPER,IOPER1 JSB LCHAR     GET NEXT CHAR.      JMP ILFER     FAIL IF NONE.       LDB 0         SAVE IN B.      AND .140      SKIP CONTROL CHARS.       SZA       CPA .140      JMP OPER1       LDA OPEF      GET 1ST CHAR. FLAG.       SZA           TEST FOR 1ST CHAR.      JMP OPER2     NOT.      CPB .+54B     TEST FOR COMMA OR $       JMP ILFER       CPB .+44B       JMP ILFER OPER3 LDA 1         RETURN CHAR IN B      ISZ OPEF      JMP OPER,IOPER2 CPB .+54B     COMMA TEST      RSS       JMP OPER3       LDA .+40B       STA OPEF      JMP OPER,I* * GET FILE LENGTH.* OPE2  CLA           INITIALIZE # TO 0       STA OPEF      JSB LCHAR     GET A CHAR.       JMP OPE3      DONE      ADA M72B      DIGIT TEST.       SSA,RSS       JMP ILFER       ADA .+10      SSA       JMP ILFER       STA OPEC      SAVE DIGIT.       LDA OPEF      MPY .+10      BUILD NEW       CLE            NUMBER.      ADA OPEC      SEZ,SZB,RSS   OVERFLOW CHECK.       JMP OPE2+1      JMP ILFER * OPE3  LDA OPEF      TEST FOR LEGAL VALUE.       CMA,CLE,INA,SZA,RSS       JMP ILFER       ADA B200      SEZ,RSS       JMP ILFER *       LDA OPEF      CMA,INA       ASL 6       STA OPEFN       JSB RDIAT     READ IDT AND ADT.       ADB .+6       TEST FOR USER OUT OF CORE.      LDA 1,I       CMA,CLE       INB       ADA 1,I       ADA OPEF      SEZ,RSS       JMP OPE4*       LDB *+3 OPE7  LDA .-16      JMP LIBER       DEF *+1       OCT 5106      ASC 7,ILE SPACE FULL* * SEARCH ADT FOR SPACE TO PUT THE FILE. * OPE4  LDA ADLEN     GET ADT ENTRY       ARS            COUNTER IN C.      STA OPEC      LDB ADTAD     SET B TO POINT AT FIRST ENTRY.      INB OPE6  LDA 1,I       TEST FOR BIG ENOUGH.      CMA       ADA OPEF      SSA       JMP OPE5      IT IS.      ADB .+2       ISZ OPEC      JMP OPE6OPE12 LDB *+2       END OF ADT.       JMP OPE7      DEF *+1       OCT 5123      LF-S      ASC 7,YSTEM OVERLOAD* OPE5  ADB .-1       SAVE LOCN OF ADT ENTRY.       STB OPEC      INA       STA OPEDF     SAVE -# OF SECTORS LEFT.      LDA 1,I       SAVE DISC ADDRESS ALSO.       STA OPEDS *       LDA LTEMP+2   SET       IOR BIT15     FILES       STA LTEMP+2   BIT       JSB DLOOK     SEARCH FOR ENTRY.       JMP OPE8      ENTRY FOUND--ILLEGAL. *       LDB LTEMP+4,I IF DIRECTORY TRACK IS       CPB M5440      FULL, DO       JMP OPE98       OVERLAY.*       CMB           SET UP SOURCE       ADB LIBD       FOR MOVE.      STB MOVES       ADB .+8       SET UP DESTINATION.       STB MOVED       CMB           COMPUTE LENGTH.       ADB .+16      ADB LTEMP+5       JSB MOVEB *       LDA DLTEM     MOVE 4 WORDS IN FOR       STA MOVES      NEW ENTRY.       LDA LTEMP+5       ADA .+8       STA MOVED       LDB .-4       JSB MOVEW       JSB DATE      STORE DATE IN ALSO.       ISZ MOVED       STA MOVED,I       ISZ MOVED       LDB OPEFN       LDA OPEDS       DST MOVED,I *       LDA LTEMP+4,I ADJUST DIRECTORY      ADA .-8        LENGTH.      STA LTEMP+4,I       STA WORD      LDA LTEMP+4   WRITE DIRECTORY       INA            BACK OUT.      STA MOVED       ADA .+5       LDA 0,I       LDB LIBD      STB MOVES       JSB DISCL *       LDB .-4       RESET       JSB MOVEW      DIREC. * OPE11 JSB RDIAT     GET IDT AND ADT AGAIN.      ADB .+7       LDA OPEF      ADJUST AMOUNT OF DISC USED.       ADA 1,I       STA 1,I *       LDB OPEDF     GET -# OF SECTORS LEFT IN ADT.      LDA OPEF      GET # OF SECTORS USED.      CMB,INB,SZB     TEST FOR ANY PART LEFT.       JMP OPE9      NON EMPTY ADT ENTRY.*       LDB OPEC      SQUEEZE OUT ADT ENTRY.      STB MOVED       ADB .+2       STB MOVES       ADB MLIBD       ADB WORD      JSB MOVEW *       ISZ ADLEN     REDUCE ADLEN BY 2.      ISZ ADLEN       ISZ WORD      REDUCE TRANSFER LENGTH      ISZ WORD       BY 2.      JMP OPE10 * OPE9  ADA OPEC,I    MODIFY ADT ENTRY.       DST OPEC,I* OPE10 LDA IDLOC     WRITE IDT/ADT BACK TO DISC.       LDB LIBD      JSB DISCL *       LDB M85       WRITE -1 (EOF) IN EACH OF 85      STB OPEC      SECTORS.      LDB LIBD      CCA       STA 1,I       ADB B100      ISZ OPEC      JMP *-3 *       LDA OPEDS     A=FILE ADDRESS.       LDB OPEF      B=FILE LENGTH.      ADB M85       FILE>85 SECTORS?      SSB       JMP OPE13     NO.       STB OPEF      SET UP 2ND TRANSFER LENGTH.       LDB M5440     WRITE OUT FIRST 85 SECTORS.       STB WORD      LDB LIBD      JSB DISCL       LDA OPEDS     ADVANCE DISC ADDRESS      ADA P85        85 SECTORS FOR 2ND PART. OPE13 LDB OPEF      GET # OF SECTORS.       BLF           ADJUST TO       RBL,RBL        WORDS.       CMB,INB       SET UP TRANSFER       STB WORD       LENGTH.      LDB LIBD      WRITE TO DISC.      JSB DISC,I      JMP LLEND     TERMINATE.* OPE8  LDB *+2       JMP OPE7      DEF *+1       OCT 5104      ASC 7,UPLICATE ENTRY* OPE98 LDA M252      SET UP OVERLAY      STA WORD      LDA OPEOV,I       LDB #LIBI       JMP LIBRA+252 M85   DEC -85 * OPEDS EQU LTEMP+6 OPEFN EQU LTEMP+7 OPEF  EQU LTEMP+8 OPEDF EQU LTEMP+9 OPEP  EQU LTEMP+10OPEC  EQU LTEMP+11* OPEOV DEF SAVE+1+COM6-COM3*       ORG LIBRA+252       JSB DISCL       JMP LIBRA       JMP OPE11     NORMAL RETURN.      JMP OPE12     ERROR RETURN$OPE  EQU * 