      HED APPEND* THE APPEND COMMAND ALLOWS A USER TO APPEND A LIBRARY PROGRAM ON TO* THE END OF HIS CURRENT PROGRAM. THE FIRST STATEMENT OF THE NEW* PROGRAM MUST HAVE A SEQUNCE NUMBER GREATER THAN THAT OF THELAST * STATEMENT OF THE ORIGINAL PROGRAM. IF THE NEW SECTION IS PROTECTED* THE ENTIRE PROGRAM WILL BECOME PROTECTED. * * THE CODE FOR APPEND MUST FOLLOW THE CODE FOR "GET".       SPC 1       ORG LIBRA     THE CODE IS IDENTICAL TO "GET"      LDA MLINK+1   UP TO LOCATION GET10.       ORG GET10 *       JSB DATE      SET DATE OF LAST REFERENCE      LDB GETPD      INTO DIRECTORY ENTRY.      ADB .+5       STA 1,I       ADB .-4       SAVE LIST BIT.      LDA 1,I       STA APPLS       ADB .+5       GET PROGRAM DISC ADDRESS      DLD 1,I        AND LENGTH.      STA GETD      STB GETLN *       LDA GETP,I    WRITE DIRECTORY       STA WORD       BACK TO DISC.      LDA GETP      ADA .+6       LDA 0,I       LDB LIBD      JSB DISCL *       JSB RDPRG     READ IN USER'S PROGRAM AND      JSB DCMPL      DECOMPILE IT.*       LDA GETLN     TEST FOR PROGRAM TOO      CMA,INA        LARGE.       ADA PBPTR     LAST WORD+1 OF COMBINED PROGS.      STA GETPB       CMA,INA       COMPUTE NEGATIVE      ADA U5343     TOTAL LENGTH.       SSA,RSS       COMPARE WITH MAX ALLOWED.       JMP APP1      O.K.      LDA MLINK+1   SET MAIN TO SAY PROGRAM IN      ADA .-?LINK    CORE.      STA MAIN      LDA .-18      LDB *+2       JMP LIBER       DEF *+1       OCT 5120      LF-P      ASC 8,ROGRAM TOO LARGE* APP1  LDA GETLN     READ IN APPENDED      STA WORD       PROGRAM.       LDA GETD      LDB PBPTR       ADB BIT15       JSB DISC,I* * SCAN ORIGINAL PROGRAM TO DETERMINE LAST SEQUENCE NUMBER.*       LDA PBUFF     SET A TO POINT AT LENGTH OF       INA            FIRST STATEMENT.       LDB PBPTR     SET B TO POINT AT LENGTH OF       INB            FIRST NEW PROGRAM.       CPA 1         IF EQUAL, PROGRAM IS NULL, SO       JMP APP2       IT'S OK. * APP5  STA APPS      SAVE LOCN OF THIS STATE. LENGTH.      ADA 0,I       LINK TO NEXT ONE.       CPA 1         IF SAVE AS B, APPS=>LAST STATE.       RSS       JMP APP5      OTHERWISE, LOOP.*       CCA           GET SEQUENCE # OF LAST STATE-       ADA APPS       MENT.      LDA 0,I       MAKE NEGATIVE AND SUBTRACT      CMA,RSS        ONE. APP2  CCA           SET TO -1 (SEQNO=0) IF NO PROG. *       LDB ENDSK     WAIT FOR DISC TO TERMINATE.       SZB       JMP *-2 *       ADA PBPTR,I   CHECK THAT FIRST SEQUENCE # IS      SSA,RSS        GREATER THAN LAST ONE OF OLD       JMP APP3        PROGRAM.*       LDA MLINK+1   SET MAIN TO SAY PROGRAM IN      ADA .-?LINK    CORE.      STA MAIN      LDA .-24      ERROR.      LDB *+2       JMP LIBER       DEF *+1       OCT 5123      LF-S      ASC 11,EQUENCE NUMBER OVERLAP * APP3  LDA GETPB     SET NEW VALUE OF      STA PBPTR      PBPTR.       LDB MLINK+1   GET USER ID.      ADB .+?ID-?LINK       LDA 1,I       INB           SET POINTER TO NAME.      CPA A000      TEST FOR SPECIAL      JMP APP6       USER.      LDA APPLS     IF NOT, GET LIST BIT      AND BIT15      AND MERGE INTO NAME.       IOR 1,I       STA 1,I APP6 ADB  .-?NAME   SET MAIN.       STB MAIN      JMP LLEND     TERMINATE.* APPLS EQU LTEMP+6 APPS  EQU LTEMP+7 $APP  EQU *       HED HELLO * THE HELLO COMMAND IS USED TO LOG A USER ON TO THE SYSTEM. IT* PERFORMS THE FOLLOWING FUNCTIONS: *     1) IF A USER IS ALREADY ON, HE IS LOGGED OFF. *     2) READ USER ID AND PASSWORD, AND ENTER INTO TTY TABLE.       SPC 2       ORG LIBRA       LDA MLINK+1   SET HELID TO      ADA .+?ID-?LINK POINT TO USER'S       STA HELID     ID.       ADA .+?TIME-?ID SET POINTER TO      STA HELTP       STARTING TIME.      ADA HELSP     COMPUTE PORT NUMBER.      CLB       DIV .+TTY01-TTY00       STA HELPT     SAVE IT.      CPB HELID,I   TEST FOR USER IN CORE.      JMP HEL7      GO INPUT IDT. *       LDA M128      INPUT FUSS TABLE      STA WORD      LDA FUSS,I      LDB LIBDI       JSB DISCL *       LDA HELPT     COMPUTE LOCATION OF USER'S      ALF,RAR        FUSS.      ADA LIBD      STA LTEMP *       CLA           ZERO OUT HIS SECTION.       LDB .-8       STA LTEMP,I       ISZ LTEMP       INB,SZB       JMP *-3 *       LDA FUSS,I    WRITE BACK TO       LDB LIBD       DISC.      JSB DISCL *       LDA PHR       SET UP TIMING FOR NEW USER      CLE       ADA DATIM+1    LOGGED ON      SEZ       ADA M36K      LDB MLINK+1       ADB .+?PHON-?LINK       STA 1,I       ADB .+?MASK-?PHON       CLF 0       LDA 1,I       IOR PHT       STA PHT HEL7  LDA IDLEN     INITIATE      STA WORD       READING      LDA IDLOC       IDT.      LDB LIBDI       JSB DISCL       LDA HELID,I   GET CURRENT ID.       SZA,RSS       IF 0, NO LOGOFF IS NECESSARY.       JMP HEL1* *       DLD HELTP,I   GET STARTING TIME.      CMA,INA       MAKE BOTH PARTS NEGATIVE.       CMB,INB       DST HELTM     SAVE.       DLD DATIM     GET CURRENT TIME.       ADA HELTM     COMPUTE DIFFERENCES:A=#OF HRS,      CLE           B=# OF 100 MS UNITS,      ADB HELTM+1    E INDICATES SIGN OF B.       STB HELTM+1   SAVE UNITS.       MPY D60       CHANGE HRS TO MINS.       STA HELTM       LDA HELTM+1   GET UNIT COUNT. IF E=0      SEZ,RSS       THEN COUNT AS NEGATIVE.       CCB       DIV D600      CHANGE TO MINUTES.      ADA HELTM     ADD PREVIOUS COMPUTATION +1       STA HELTM *       LDA HELID,I   SET UP LOGOFF       IOR BIT15      ENTRY.       JSB HELOG *       LDB LIBD      SET B TO POINT AT FIRST ID.       LDA HELID,I   GET USER'S ID.      CPA 1,I       SEARCH FOR ENTRY.       JMP *+3       ADB .+8       JMP *-3 *       ADB .+5       COMPUTE NEW TOTAL TIME.       CLE       LDA 1,I       ADA HELTM       SEZ           IF OVERFLOW, USE MAXIMUM.       CCA       STA 1,I *       LDA IDLOC       LDB LIBD      JSB DISCL *       STA HELID,I   REMOVE USER'S ID FROM TABLE.* * CONVERT ID* HEL1  JSB GETID     TRANSLATE ID.       RSS       JMP GTFER     ERROR--NO COMMA       CPA .+54B       RSS       JMP GTFER     ERROR--NO COMMA.*       LDB IDLEN     SEARCH IDT FOR      CMB,INB        NEW USER'S ID.       ADB LIBD      LDA IDHEL2  CPB LIBD      JMP HELF      NOT THERE.      ADB .-8       CPA 1,I       RSS           FOUND       JMP HEL2*       LDA .-3       CHECK PASSWORD.       STA HELC      STB HELPHEL3  ISZ HELP      BUMP TO NEXT PASSWORD ENTRY.      JSB LCHAR     GET 1ST CHAR. OF PASSWORD.      CLA           0 IF CR.      ALF,ALF       FIRST CHAR ON LEFT.       STA HELGT       JSB LCHAR     2ND CHAR.       CLA       ADA HELGT       CPA HELP,I    COMPARE TO CORRECT ONE.       RSS       JMP HELF      ISZ HELC      JMP HEL3      JSB LCHAR     CHECK FOR CR.       JMP *+4        O.K. HELF  LDA .-16      PRINT ILLEGAL ACCESS MESSAGE.       LDB HELK      JMP LIBER * * PASSWORD OK--NOW CHECK FOR ANY TIME LEFT*       ISZ HELP      COMPUTE       DLD HELP,I     ALLOWED TIME-TIME TO DATE.       CMA,CLE,INA       ADA 1       SEZ       JMP HELG      NO TIME LEFT. *       LDA ID        MAKE LOG ENTRY.       JSB HELOG       DLD DATIM      SET STARTING TIME AND ID       DST HELTP,I     INTO TABLE.       LDA ID        INSERT NEW ID AND CLEAR       CLB            NAME.      DST HELID,I       LDA PBUFF     ALSO SCRATCH      LDB MLINK+1       ADB .+?PROG-?LINK       STA 1,I       ADB .+?MASK-?PROG CLEAR PHT-BIT.      LDA 1,I       CMA       CLF 0       AND PHT       STA PHT       LDA A000      MOVE SETUP FOR      STA LTEMP      $HELLO PROGRAM       LDA HELM        INTO LTEMP(0:3).      STA LTEMP+1       DLD HELM+1      DST LTEMP+2 *       JSB DLOOK     SEARCH FOR PROGRAM IN LIBRARY.      JMP HEL6      FOUND IT. * * HEL4  LDA .-6       OUTPUT READY MESSAGE      LDB READY       JMP LIBER HELG LDA .-14       LDB HELH      JMP LIBER * * * * SET UP USER TO RUN $HELLO PROGRAM.* HEL6  LDB LTEMP+5   TEST FOR FILE       ADB .+2       LDA 1,I       SSA       JMP HEL4*       ADB .+4       GET PROGRAM DISC ADDRESS AND      DLD 1,I        LENGTH.      STA HELTM     SAVE DISC ADDRESS.      STB HELC      STORE LENGTH.       CMB,INB       COMPUTE FIRST       ADB PBUFF      UNUSED WORD.       STB HELPB       CMB,INB       TEST FOR OVERFLOW.      ADB U5343       SSB       JMP HEL4* *       JSB RDPRG     READ IN FIXED AREA.       LDA HELC      READ IN $HELLO.       STA WORD      LDA HELTM       LDB PBUFF       ADB BIT15       JSB DISCL       LDA HELPB     SET PBPTR.      STA PBPTR       LDA CMSK      CLEAR COMPILED      AND CFLAG      BIT.       STA CFLAG       LDA LMSK      SET HFLAG TO SAY THIS IS      IOR HFLAG      A LOGON PROGRAM.       STA HFLAG       CLA       STA SYMTB     CLEAR OUT-OF-STORAGE FLAG.* * NOW SET QUEUE ENTRY TO RUN. *       CLF 0         PLAY SAFE.      LDB MLINK+1   GET POINTER TO LINK.      ADB .-?LINK   SET MAIN TO SAY USER IN       STB MAIN       CORE.      ADB .+?STAT       LDA %SYNT+1   SET STATUS TO RUN.      STA 1,I       ISZ TIMEF     SET FLAG FOR TIMING.      STF 0         INTERRUPT BACK ON.      JMP *+1,I       DEF CMPLE * HELOG NOP           MAKE ENTRY IN LOG TABLE.      LDB LOGCT     WAIT UNTIL      CPB .+16       THERE'S ROOM.      JMP *-2       LDB LOGP2     SET POINTER TO NEXT LOC.      INB            IN LOG QUEUE.      CPB LOGND       LDB LOGBG       CLF 0         INHIBIT INTERRUPT.      STB LOGP2       STA LOGP2,I   ENTER ID.       LDA DATIM     GET DAY COUNT.      CLB           GET HOURS OF TODAY.       DIV .+24      LDA 1       MPY D60       CONVERT TO MINS.      STA HELGT     SAVE.       LDA DATIM+1   GET UNIT COUNTER.       ADA D36K      ADJUST.       DIV D600      GET IN MINUTES.       ADA HELGT       ISZ LOGP2     PUT IN QUEUE.       ALF       IOR HELPT     MERGE IN PORT NUMBER      STA LOGP2,I       ISZ LOGCT     BUMP COUNT      STF 0         INTERRUPT BACK ON.      JMP HELOG,I   RETURN. HELSP ABS -TTY00-?IDHELPT EQU LTEMP+1 HELID EQU LTEMP+6 HELTP EQU LTEMP+7 HELTM EQU LTEMP+8 HELC EQU LTEMP+10 HELP  EQU LTEMP+11HELGT EQU LTEMP+12HELPB EQU LTEMP+13HELM  ASC 3,HELLO $HEL  EQU *       HED BYE * THE BYE COMMAND IS USED TO LOG A USER OFF. BYE MUST PERFORM THE * FOLLOWING FUNCTIONS:*     1) DETERMINE AMOUNT OF CONSOLE TIME USED*     2) UPDATE USER'S CLOCK IN ID-TABLE*     3) SET FLAG FOR SYSTEM TO UNHOOK. *     4E OUTPUT TERMINATION MESSAGE       SPC 2       ORG LIBRA       LDB MLINK+1   SET ECHO BIT TO FULL DUPLEX.      ADB .+?MASK-?LINK       LDA 1,I       IOR PLEX      STA PLEX      CLF 0         SET IOTOG TO SAY INPUT.      [F]      LDA 1,I                                    [F]      IOR IOTOG                                  [F]      STA IOTOG                                  [F]      LDA 1,I       ALSO SET OUTPUT              [F]      IOR MPOUT      LINE TO 1 TO PREVENT        [F]      STA MPOUT       CHATTER.                   [F]      STF 0                                      [F]      ADB .+?ID-?MASK  GET USER'S ID.       STB BYEID       LDA 1,I       SZA           IF ID=0, THIS IS SPECIAL & WE       JMP BYE1       WANT TO INITIATE A HANGUP.       ADB .+?MASK-?ID       CLF 0       LDA 1,I       TURN OFF USER'S TAPE MODE    [F]      CMA            BIT.                        [F]      AND TAPEF                                  [F]      STA TAPEF                                  [F]      LDA PHO       SET UP DISCONNECT BIT.      IOR 1,I       STA PHO       LDA 1,I       CLEAR       CMA            PHONES       AND PHT         TIMING      STA PHT          BIT.       JMP LLEND BYE1  LDA M128      INPUT FUSS TABLE.       STA WORD      LDA FUSS,I      LDB LIBDI       JSB DISCL *       LDA MLINK+1   COMPUTE USER'S PORT NO.       ADA BYESP       CLB       DIV .+TTY01-TTY00       STA BYEPT *       ALF,RAR       COMPUTE LOCATION OF USER'S FUSS.      ADA LIBD      STA LTEMP+1       LDA .-8       CLEAR USER'S FUSS.      STB LTEMP+1,I       ISZ LTEMP+1       INA,SZA       JMP *-3 *       LDA FUSS,I    WRITE FUSS      LDB LIBD       BACK TO DISC.      JSB DISCL *       LDA IDLEN     INITIATE      STA WORD       READING      LDA IDLOC       ID TABLE.       LDB LIBDI       JSB DISC,I*       LDA MLINK+1       ADA .+?TIME-?LINK  SET POINTER TO START TIME.       DLD 0,I          GET STARTING TIME.       CMA,INA       SET BOTH PARTS NEGATIVE.      CMB,INB       DST BYETM     SAVE      DLD DATIM     NOW GET CURRETN TIME.       ADA BYETM     COMPUTE DIFFERENCES: A=# OF HRS,      CLE           B=# OF 100 MS UNITS,      ADB BYETM+1    E INDICATES SIGN OF B.       STB BYETM+1   SAVE UNITS.       MPY D60       CHANGE HRS TO MINS.       STA BYETM       LDA BYETM+1   GET UNIT COUNT. IF E=0      SEZ,RSS       THEN COUNT AS NEGATIVE.       CCB       DIV D600      CHANGE TO MINUTES.      ADA BYETM     ADD PREVIOUS COMPUTATION PLUS       STA BYETM *       LDA LOGCT     CHECK FOR ROOM IN LOG TABLE       CPA .+16      JMP *-2       LDA LOGP2     SET LOGP2 TO NEXT LOCATION IN       INA            LOG TABLE.       CPA LOGND       LDA LOGBG       STA LOGP2       LDA BYEID,I   PLACE ID IN LOG TABLE AND       IOR BIT15      SAY LOGOFF.      STA LOGP2,I       ISZ LOGP2       DLD DATIM     COMPUTE TIME OF DAY.      STB BYETM+1   SAVE UNIT COUNTER.      CLB           GET # OF HRS IN B BY MOD'ING      DIV .+24       OFF THE DAY COUNT.       LDA 1       MPY D60       CONVERT TO MINS.      STA BYET      SAVE THAT.      LDA BYETM+1   GET UNIT COUNTER.       ADA D36K      ADJUST      DIV D600       GET MINUTES.       ADA BYET      PACK TOGETHER AND PUT IN LOG      ALF       IOR BYEPT       STA LOGP2,I    TABLE.       ISZ LOGCT     BUMP COUNTER.       LDA ENDSK     WAIT FOR DISC       SZA            TO TERMINATE.      JMP *-2 *       LDB LIBD      SET B TO POINT AT FIRST ID.       LDA BYEID,I   GET USER'S ID.      CPA 1,I       SEARCH FOR ENTRY.       JMP *+3       ADB .+8       JMP *-3 *       ADB .+5       COMPUTE NEW TOTAL TIME.       CLE       LDA 1,I       ADA BYETM       SEZ           IF OVERFLOW, USE MAXIMUM.       CCA       STA 1,I *       LDA IDLEN     NOW WRITE       STA WORD       ID-TABLE       LDA IDLOC       BACK OUT.       LDB LIBD      JSB DISC,I*       CLA           REMOVE USER'S ID      STA BYEID,I    FROM TABLE *       LDA .+12B       JSB LOUT*       LDA BYETM       CLB           OUTPUT # OF MINUTES.      DIV .100      STB BYET      ADA .+60B       JSB LOUT      HUNDREDS      LDA BYET      CLB       DIV .+10      STB BYET      ADA .+60B       JSB LOUT      TENS      LDA BYET      ADA .+60B       JSB LOUT      UNITS.*       LDA .-25      OUTPUT THE REST OF      LDB BYEM       THE MESSAGE.       JSB LTYPE       LDA .+40      LDB MLINK+1       ADB .+?PHON-?LINK BYE2  CLE       ADA DATIM+1       SEZ       ADA M36K      CLF 0       STA 1,I       ADB .+?MASK-?PHON       LDA PHT       SET TIMER BIT.      IOR 1,I       STA PHT       JMP LLEND BYEID EQU LTEMP BYETM EQU LTEMP+1 BYET  EQU LTEMP+3 BYEPT EQU LTEMP+4 BYEM  DEF *+1       ASC 13, MINUTES OF TERMINAL TIME. BYESP ABS -TTY00-?LINK$BYE  EQU *       HED KILL* THE KILL ROUTINE IS USED TO DELETE A PROGRAM FROM THE USER* LIBRARY. THE PROCESS IS AS FOLLOWS: *     1) CHECK FORMAT AND DETERMINE PROGRAM NAME. *     2) SEARCH DIRECTORY FOR ENTRY.*     3) OBTAIN LOCATION AND LENGTH.*     4) COLLAPSE DIRECTORY.*     5) UPDATE ADT AND IDT.      SPC 1       ORG LIBRA       SPC 1       CCA           SET FLAG TO SAY WE HAVE TO CHECK      STA KILTS      FOR BUSY FILE.       LDA MLINK+1   GET USER'S ID.      ADA .+?ID-?LINK       LDA 0,I       STA LTEMP     STORE IN LTEMP.       LDA DLTEM     SET UP POINTER FOR      INA           NAME.       STA KILP      LDA .-3       SET UP COUNTER.       STA KILCKIL1  JSB LCHAR     GET LEFT CHAR.      LDA .+40B     BLANK IF NONE.      ALF,ALF       STA KILP,I      JSB LCHAR     GET RIGHT CHAR.       LDA .+40B       IOR KILP,I      STA KILP,I      ISZ KILP      BUMP POINTER.       ISZ KILC      ANY MORE?       JMP KIL1      YES.      LDA LTEMP+1       CPA ASCBB       JMP KIL2      NO CHARS--ERROR.      JSB LCHAR     TEST FOR TOO MANY.      JMP KIL3      O.K.* KIL2  LDB *+3       LDA .-13      JMP LIBER       DEF *+1       OCT 5111      ASC 6,LLEGAL NAME * KIL3  JSB DLOOK     SEARCH DIRECTORY FOR PROGRAM.       JMP KIL10     FOUND.* KIL5  LDA .-16      LDB *+2       JMP LIBER       DEF *+1       OCT 5116      ASC 7,O SUCH PROGRAM* * FOUND ENTRY. NOW REMOVE IT. * KIL10 LDB KILPD     GET LOCATION OF DISC ADDRESS.       STB MOVED       ADB .+6       DLD 1,I       A=DISC ADDRESS, B=LENGTH.       STA KILD      SAVE THEM.      STB KILN*       ISZ KILTS     TEST FOR OK TO KILL.      JMP KIL18     O.K.      LDB KILPD     TEST FOR FILE.      ADB .+2       LDA 1,I       SSA,RSS       JMP KIL18     NOT A FILE. *       LDA M128      READ IN FUSS TABLE      STA WORD      STA KILC      SAVE IN KILC ALSO.      LDA FUSS,I      LDB LIBDI       JSB DISCL *       LDA MLINK+1   COMPUTE USER'S      ADA KILSP      PORT #.      CLB       DIV .+TTY01-TTY00       ALF,RAR       COMPUTE LOCATION OF       ADA LIBD       USER'S FUSS.       STA KILDF     ZERO OUT USER'S FUSS.       LDA .-8       STB KILDF,I       ISZ KILDF       INA,SZA       JMP *-3       LDA LIBD      SEARCH FUSS TABLE TO SEE IF       LDB KILD       FILE IS BEING USED.KIL20 CPB 0,I       JMP KIL19       ADB B200      CPB 0,I       JMP KIL19     NOT OK      ADB M128      INA       ISZ KILC      JMP KIL20       LDA FUSS,I    WRITE BACK FUSS TABLE.      LDB LIBD      JSB DISCL       JMP KIL3      GO GET DIRECTORY AGAIN. * KIL19 LDA .-12      LDB *+2       JMP LIBER       DEF *+1       OCT 5106      LF-F      ASC 5,ILE IN USE* KIL18 LDB KILPD     SET UP PARAMETERS FOR MOVE.       ADB .+8       STB MOVES       ADB KILP,I      ADB MLIBD       JSB MOVEW *       LDA KILP,I    REDUCE DIRECTORY LENGTH BY 8.       ADA .+8       STA KILP,I      STA WORD      WRITE DIRECTORY BACK OUT.       LDA KILP      ADA .+6       LDA 0,I       LDB LIBD      STB MOVES       JSB DISCL *       LDA KILP      ADJUST WORDS 1-4 OF DIREC.      INA       STA MOVED       LDB .-4       JSB MOVEW *       JSB RDIAT     READ IN ADT AND IDT.      LDA KILN      GET PROGRAM LENGTH.       ARS,ARS       CONVERT TO      ARS,ARS        SECTORS.       ARS,ARS       CMA,INA       STA KILN      CMA,INA       ADB .+7       ADJUST DISC       ADA 1,I        USAGE.       STA 1,I *       LDB ADTAD KIL13 LDA KILD      FIND THE FIRST ADT ENTRY >      CMA,CLE,INA    RELEASED SPACE.      ADA 1,I       SEZ       JMP KIL12     FOUND ONE.      ADB .+2       JMP KIL13 * KIL12 STB KILP      SAVE POINTER TO IT.       ADB .-2       TEST FOR PREVIOUS ENTRY ADJACENT      LDA 1,I        TO NEW ONE.      INB       ADA 1,I       CPA KILD      JMP KIL14     IT IS--GO COMBINE AREAS.*       LDA KILD      TEST FOR NEXT ENTRY ADJACENT TO       ADA KILN       NEW ONE.       CPA KILP,I      JMP KIL15     IT IS--GO COMBINE AREAS.* * THE NEW ENTRY IS ADJACENT TO NEITHER THE PRECEDING NOR THE FOLLOW-* ING ENTRIES. WE HAVE TO CREATE ROOM FOR IT BY SLIDING DOWN THE* ADT.* *       LDB WORD      IF NO ROOM TO EXPAND ADT, WE      CPB M5440      HAVE TO LOSE THE SPACE.      JMP KIL50       CMB           SET UP SOURCE FOR THE MOVE.       ADB LIBD      STB MOVES       ADB .+2       SET UP DESTINATION.       STB MOVED       CMB,INB       COMPUTE LENGTH.       INB       ADB KILP      JSB MOVEB     MOVE IT.      LDA KILD      INSERT NEW      LDB KILN       ENTRY.       DST KILP,I*       LDA ADLEN     ADJUST ADLEN.       ADA .-2       STA ADLEN       JMP KIL50 * * COME HERE WHEN THE NEW AREA IS ADJACENT TO THE FOLLOWING ONE, BUT * NOT TO THE PRECEDING ONE. KIL15 DLD KILP,I    GET FOLLOWING ENTRY.      ADB KILN      COMBINE LENGTHS.      LDA KILD      USE NEW DISC ADDRESS.       DST KILP,I    REPLACE.      JMP KIL50 * * COME HERE WHEN THE NEW AREA IS ADJACENT TO THE PRECEDING AREA.* KIL14 LDA 1,I       ADD LENGTH OF OLD AREA TO       ADA KILN       LENGTH OF NEW ONE.       STA 1,I       LDA KILD      NOW TEST TO SEE IF TEH COMBINED       ADA KILN       AREA IS ADJACENT TO THE NEXT       CPA KILP,I      JMP KIL17     IT IS--GO COMBINE THEM. * KIL50 LDA IDLEN     WRITE ADT/IDT TO DISC.      AND M64       ADA ADLEN       STA WORD      LDA IDLOC       LDB LIBD      JSB DISCL       LDA KILTS     DID WE JUST KILL A      SZA,RSS        FILE?      JMP LLEND     NO.       JSB RDPRG     IF WE DID, WE HAVE TO DICOMPILE       JSB DCMPL      THE GUY TO MAKE SURE HE DOESN'T      LDA MLINK+1     USE IT.       ADA .-?LINK   LEAVE USER IN CORE.       STA MAIN      JMP LLEND     TERMINATE.* * NEW AREA WAS ADJACENT TO 2 OTHERS. COMBINE THEM ALL.* KIL17 ISZ KILP      COMBINE       LDA 1,I        THE      ADA KILP,I     LENGTHS.       STA 1,I       INB           COLLAPSE ADT.       STB MOVED     SET UP MOVE DESTINATION.      ADB .+2       STB MOVES SET UP SOURCE.      ADB MLIBD     COMPUTE # OF WORDS      ADB WORD       TO MOVE.       JSB MOVEW *       ISZ ADLEN     REDUCE SIZE OF ADT BY       ISZ ADLEN      TWO.       JMP KIL50 * KILP   EQU LTEMP+4KILPD EQU LTEMP+5 KILC  EQU LTEMP+6 KILDS EQU LTEMP+7 KILD  EQU LTEMP+9 KILN  EQU LTEMP+10KILTS EQU LTEMP+11KILDF EQU LTEMP+12KILSP ABS -TTY00-?LINK$KIL  EQU * 