      HED SAVE* THE SAVE COMMAND IS USED TO SAVE PROGRAMS IN THE USER LIBRARY.* THE PROCEDURE IS AS FOLLOWS:*     1) CHECK THAT PROGRAM IS LISTABLE (OR ID=A000), HAS A NAME, *        AND ISN'T NULL.*     2) DECOMPILE. *     3) CHECK FOR IDT OR ADT OVERFLOW. *     4) CHECK FOR DUPLICATELY NAMED PROGRAM. *     5) UPDATE DIRECTORY.*     6) UPDATE IDT AND ADT.*     7) MOVE PROGRAM TO LIBRARY AREA.* * STEP 5 IS WRITTEN AS AN OVERLAY, WHICH IS CALLED WHENEVER THE PAR-* TICULAR DIRECTORY TRACK NEEDED IS ALREADY FULL. ITS JOB IS TO GAR-* BAGE COLLECT THE DIRECTORY TRACKS.      SPC 2       ORG LIBRA       SPC 1       LDB MLINK+1   B=>LINK WORD.       ADB .+?ID-?LINK  ID LOCN.       STB MOVES       ADB .+?PROG-?ID       STB SAVP      ADB .+?DISC-?PROG       STB SAVD      DLD MOVES,I   A=ID,B=1ST WORD OF NAME.SAV1  SZB           TEST FOR NO PROGRAM NAME.       CPB ASCBB       JMP SAV3      LDB SAVP,I    TEST FOR NULL PROGRAM.      LDA .-11      CPB PBUFF       JMP SAV4*       LDB SAVP      TEST FOR COMPILED.      ADB .+?MASK-?PROG       LDA 1,I       AND CFLAG       SZA,RSS       JMP SAV5      NOT COMPILED. *       JSB RDPRG     READ PROGRAM TO CORE.       JSB DCMPL     DECOMPILE IT.       LDA PBPTR     RESET PROGRAM BOUND       STA SAVP,I     INTO TABLE.      CMA,INA       COMPUTE # OF      ADA USE        WORDS.       STA WORD      LDA SAVD,I    GET DISC ADDRESS.       LDB USE       WRITE OUT TO      JSB DISCL      DISC.* SAV5  LDB SAVP,I    COMPUTE - PROGRAM LENGTH.       CMB,INB       ADB PBUFF       STB SAVWD     SAVE IN WORDS       ASR 6          AND      STB SAVLN       SECTORS.*       JSB RDIAT     READ IN IDT AND ADT. (B=>ID ENT)      ADB .+7       GET DISC USED TO DATE.      LDA 1,I       CMA,INA       GET TOTAL AMNT TO BE USED AS      ADA SAVLN      NEGATIVE.      ADB .-1       CLE       ADA 1,I       COMPARE WITH ALLOTMENT.       SEZ       JMP SAV6      OK.       LDB *+3 SAV9  LDA .-16      JMP LIBER       DEF *+1       OCT 5106      LF-F      ASC 7,ILE SPACE FULL* * SEARCH ADT FOR SPACE TO PUT THE PROGRAM.* SAV6  LDA ADLEN     GET ADT ENTRY       ARS            COUNTER IN SAVC.       STA SAVC      LDB ADTAD     SET B TO POINT AT       INB            FIRST ENTRY. SAV8  LDA 1,I       TEST ENTRY      ADA SAVLN       SSA,RSS       JMP SAV7      FOUND ONE BIG ENOUGH.       ADB .+2       BUMP B TO NEXT ENTRY.       ISZ SAVC      TEST FOR ANY MORE.      JMP SAV8      LOOP. * SAV23 LDB *+2       PRINT "SYSTEM OVERLOAD"       JMP SAV9      DEF *+1       OCT 5123      LF-S      ASC 7,YSTEM OVERLOAD* SAV12 LDB *+2       PRINT "DUPLICATE ENTRY"       JMP SAV9      DEF *+1       OCT 5104      LF-D      ASC 7,UPLICATE ENTRY* SAV7  ADB .-1       SET SAVA TO POINT AT ADT      STB SAVA       ENTRY.       STA SAVDF     SAVE # OF SECTORS LEFT.       LDA 1,I       STA SAVDS *       LDA DLTEM     MOVE ID/NAME ENTRY TO       STA MOVED      LTEMP(0:3).      LDB .-4       JSB MOVEW       JSB DLOOK     SEARCH FOR ENTRY.       JMP SAV12     ENTRY FOUND--ILLEGAL. *       LDB SAVI,I    IF TRACK IS FULL, GO DO       CPB M5440      OVERLAY SECTION.       JMP SAV98 *       CMB           SET UP SOURCE FOR       ADB LIBD       MOVE.      STB MOVES       ADB .+8       SET UP DESTINATION.       STB MOVED       CMB           COMPUTE LENGTH.       ADB .+16      ADB SAVS      JSB MOVEB *       LDA DLTEM     MOVE 5 WORDS IN FOR       STA MOVES      NEW ENTRY.       LDA SAVS      ADA .+8       STA MOVED       LDB .-4       JSB MOVEW       JSB DATE      STORE DATE IN ALSO.       ISZ MOVED       STA MOVED,I       ISZ MOVED       LDA SAVDS     INSERT DISC ADDRESS AND       LDB SAVWD      LENGTH.      DST MOVED,I *       LDA SAVI,I    ADJUST      ADA .-8        DIRECTORY      STA SAVI,I      LENGTH.       STA WORD      LDA SAVI      WRITE DIRECTORY BACK OUT.       INA       STA MOVED       ADA .+5       LDA 0,I       LDB LIBD      STB MOVES       JSB DISCL *       LDB .-4       RESET DIREC.      JSB MOVEW * SAV21 JSB RDIAT     READ IN ADT AND IDT       ADB .+7       LDA SAVLN     ADJUST AMOUNT       CMA,INA        OF DISC      ADA 1,I         USED.       STA 1,I *       LDB SAVDF     GET NEW ADT ENTRY LENGTH      LDA SAVLN     COMPUTE NEW ADT ENTRY LOC.      CMA,INA       ADA SAVA,I      DST SAVA,I    SET NEW ADT ENTRY.      SZB           TEST FOR ADT ENTRY ALL USED.      JMP SAV22     NO--GO TO WRITE TO DISC.*       LDB SAVA      SQUEEZE OUT ADT ENTRY.      STB MOVED     DESTINATION IS LOC OF ENTRY       ADB .+2        BEING REMOVED; SOURCE IS       STB MOVES       NEXT ENTRY.       ADB MLIBD     B=# WORDS PRECEDING.      ADB WORD      B=-# OF WORDS TO MOVE.      JSB MOVEW *       ISZ ADLEN     REDUCE SIZE OF ADT BY 2 WORDS.      ISZ ADLEN       ISZ WORD      REDUCE # OF WORDS TO WRITE OUT      ISZ WORD       BY TWO.SAV22 LDA IDLOC     WRITE IDT/ADT TO DISC.      LDB LIBD      JSB DISCL *       JSB RDPRG     READ USER PROGRAM AGAIN.      LDA SAVWD     WRITE IT OUT.       STA WORD       TO LIBRARY.      LDA SAVDS       AREA.       LDB PBUFF       JSB DISC,I*       JMP LLEND SAV98 LDA M252      SET UP      STA WORD       OVERLAY.       LDA SAVOV,I       LDB #LIBI       JMP LIBRA+252 SAV3  LDA .-16SAV4  LDB *+2       JMP LIBER       DEF *+1       OCT 5116      LF-N      ASC 7,O PROGRAM NAME* SAVI   EQU LTEMP+4SAVS  EQU LTEMP+5 SAVDS EQU LTEMP+6 SAVWD EQU LTEMP+7 SAVA  EQU LTEMP+8 SAVC  EQU LTEMP+9 SAVP  EQU LTEMP+10SAVD  EQU LTEMP+11SAVDF EQU LTEMP+12SAVLN EQU LTEMP+13* SAVOV DEF SAVE+1+COM6-COM3*       ORG LIBRA+252       JSB DISCL     CALL IN OVERLAY.      JMP LIBRA       JMP SAV21     NORMAL RETURN       JMP SAV23     ERROR RETURN$SAV  EQU *       HED SUPERSAVE * THE SAVE OVERLAY ROUTINE IS CALLED BY THE SAVE AND OPEN ROUTINES* * WHENEVER THEY WANT TO MAKE A DIRECTORY ENTRY ON A TRACK THAT IS * ALREADY FULL. THE FOLLOWING LOCATIONS MUST BE APPROPRIATELY SET:*     LTEMP(0:3)=1ST 4 WORDS OF ENTRY.*     LTEMP(4:5)=SAME AS LEFT BY DLODIC *     LTEMP(6:7)=DISC ADR AND LENGTH OF ENTRY.      ORG LIBRA       SPC 1       LDA DIRD0     GET FIRST DIRECTORY TRACK PNTR. * * COMPUTE TOTAL # OF WORDS IN DIRECTORIES.*       ADA .+6       POINT TO DIRECTORY DISC ADDRESS.SUP1  LDB 0,I       GET IT IN B.      ADA .-6       SZB,RSS       TEST FOR NONEXIST ENT DIRECTORY.      JMP SUP2      LDB 0,I       GET DIRECTORY LENGTH.       ADB SUPS      ADD TO      STB SUPS       TOTAL.       ISZ SUPB      BUMP DIRECTORY TRACK COUNTER. SUP2  CPA DIRD3     LAST DIRECTORY TRACK?       JMP *+3       YES       ADA .+13      NO--GO TO NEXT ONE.       JMP SUP1*       LDA SUPS      GET TOTAL # OF DIRECTORY WORDS.       CCB           DIVIDE BY 8 TO GET      ASR 3          ENTRY COUNT.       DIV SUPB      COMPUTE # IN EACH DIRECTORY.      CPA M680      SZB,RSS       TEST FOR FULL UP.       CPA M681      JMP SUP3      ADA .-1       INCREASE # OF ENTRIES/TRACK BY 1      STA SUPS       AND SAVE IN S.       ADB .-1       LET B COUNT HOW MANY WILL HAVE      STB SUPB       THIS LARGER SIZE.*       LDB DIRD0     GET POINTER TO 1ST TRACK AGAIN.       ADB .+6        POINT TO ITS DISC ADDRESS. SUP4  LDA 1,I       SZA,RSS       IF 0 DON'T GIVE IT ANYTHING.      JMP SUP5      ISZ SUPB      TEST FOR ANY MORE BIG TRACKS.       RSS           YES--DON'T SWITCH.      ISZ SUPS      SWITCH TO SMALLER SIZE      LDA SUPS      GET -# OF ENTRIES ON TRACK.       ALS,ALS       CONVERT       ALS            TO WORDS.SUP5  STA SUPP,I    STORE IN TABLE.       ADB .-6       TEST FOR DONE.      CPB DIRD3       JMP SUP6      ADB .+13      BUMP TO NEXT TRACK.       ISZ SUPP      BUMP TABLE POINTER ALSO.      JMP SUP4* TABLE NN NOW CONTAINS THE NEW LENGTHS OF THE 4 DI-* RECTORY TRACKS. * SUP6  LDA DEFNN     SET UP POINTER      STA SUPP       TO NN AGAIN. * * THE MAIN PART OF THE ALGORITHM CONSISTS OF TWO SECTIONS. IN THE * FIRST SECTION WE READ AS POSSIBLE INTO THE SWAP AREA. IN THE 2ND* SECTION WE WRITE OUT AS MUCH AS POSSIBLE. THE ENTIRE PROCEDURE IS * THEN REPEATED UNTIL WE ARE FINISHED. THE FOLLOWING MEANINGS ARE * ASSOCIATED WITH THESE VARIABLES:* *     SUPK1=>DIREC ENTRY FOR TRACK BEING READ.*     SUPL1=>DIREC ENTRY FOR TRACK BEING WRITTEN. *     SUPK2=# OF WORDS READ SO FAR FROM K1. *     SUPL2=# OF WORDS WRITTEN SO FAR ON L1.*     SUP  =# OF WORDS IN CORE. *     SUPP => -# OF WORDS TO BE WRITTEN ON L1.* SUP7  LDA SUPL2     IS # OF WORDS WRITTEN SO FAR ON       CMA,INA        L1=# OF WORDS TO BE WRITTEN?       CPA SUPP,I      JMP SUP10     YES--GO ADVANCE L19 * SUP8  LDA SUP       ARE THERE 5432 WORDS IN CORE?       ADA M5432       SSA,RSS       JMP SUP11     YES--GO TO WRITE SECTION.       STA WORD      NO--SAVE -# OF COREWORDS AVAIL.       LDB SUPK1     HAVE WE READ ALL 4 TRACKS?      CPB DIRD4       JMP SUP11     YES--GO TO WRITE SECTION.       LDA SUPK1,I   A=-# OF WORDS ON THIS TRACK.      ADA SUPK2     A=-# NOT READ YET.      SZA           ENTIRE TRACK READ?      JMP SUP9      NO.       ADB .+7       YES--BUMP K1 TO NEXT TRACK.       STB SUPK1       STA SUPK2     SET # OF WORDS READ TO 0.       JMP SUP8      TEST THIS TRACK.* SUP9  STA 1         B=-# OF WORDS NOT YET READ ON K1      CMB,INB       MAKE POSITIVE.      ADB WORD      IS # OF WORDS ON TRACK> # OF      SSB            WORDS WE HAVE ROOM FOR?      JMP *+4       NO--READ IN ENTIRE TRACK.       LDA WORD      GET-# WE HAVE ROOM FOR.       ADA B77       REDUCE TO NEXT SMALLER      AND M64        SECTOR SIZE.       SZA,RSS       IF WE CAN'T READ IN ANY, GO TO      JMP SUP11      WRITE SECTION. *       STA WORD      SET WORD = -# OF WORDS TO READ.       LDA SUPK2     GET # OF WORDS READ SO FAR.       CLB           DIVIDE BY 64 TO GET       ASR 6          SECTOR ADDRESS.      LDB SUPK1     GET DIRECTORY       ADB .+6        TRACK ADDRESS.       ADA 1,I       LDB LIBDI     COMPUTE CORE LOCATION       ADB SUP        TO READ INTO.      JSB DISCL     READ IT IN. *       LDB WORD      UPDATE # OF WORDS       CMB,INB        IN CORE.       ADB SUP       STB SUP       LDB WORD      UPDATE # OF WORDS       CMB,INB        READ FROM K1.      ADB SUPK2       STB SUPK2 *       LDA SUPTG     HAVE WE INSERTED THE NEW ENTRY      SZA            YET?       JMP SUP8      YES--GO TRY TO READ MORE.       LDA SUPK1     ARE WE READING THE TRACK IT WAS       CPA LTEMP+4    TO GO ON?      RSS           YES.      JMP SUP8      NO--GO TO READ MORE.      ADB LIBD      DETERMINE IF WE HAVE READ IN THE      CMB,INB        ENTRY PRECEDING THE NEW ONE.       ADB LTEMP+5       SSB,RSS       JMP SUP8      NO--CAN'T INSERT YET. *       ISZ SUPTG     SET TOGGLE TO SAY WE'VE INSERTED      ADB .+8       B=-# OF WORDS TO BE MOVED.      LDA LIBD      COMPUTE DESTINATION       ADA SUP        OF WORDS TO BE       ADA .+7         MOVED.      STA MOVED       ADA .-8       COMPUTE SOURCE      STA MOVES       JSB MOVEB     CALL REVERSE MOVER. *       LDA MOVES     NOW SET UP DESTINATION AT FIRST       INA            POSITION IN THE HOLE.      STA MOVED       LDA DLTEM     SET SOURCE AT LTEMP.      STA MOVES       LDB .-4       MOVE IN FIRST 4       JSB MOVEW      WORDS.       ISZ MOVED     SKIP 5TH WORD.      JSB DATE      INSERT DATE IN 6TH WORD.      STA MOVED,I       ISZ MOVED     INSERT DISC ADDRESS AND       DLD LTEMP+6    LENGTH IN 7TH AND 8TH WORDS.       DST MOVED,I       LDA SUP       ADD 8 TO # OF WORDS IN CORE.      ADA .+8       STA SUP       JMP SUP8* * COME HERE WHEN CURRENT OUTPUT TRACK HAS BEEN FILLED.* SUP10 LDA SUPL1     TEST FOR LAST TRACK.      CPA DIRD3       JMP SUP16     ALL DONE--GO CLEAN UP DIREC.      ADA .+7       BUMP TO NEXT TRACK.       STA SUPL1       CLA           SET # OF WORDS WRITTEN SO FAR       STA SUPL2      TO 0.      ISZ SUPP      BUMP POINTER TO WORDS TO BE       JMP SUP7       WRITTEN.       SPC 3 * THE NEXT SECTION IS THE OUTPUT SECTION. WE ONLY COME TO THIS SEC- * TION WHEN WE HAVE DETERMINED THAT NO MORE CAN BE READ. IN THIS* PART WE WRITE OUT AS MUCH AS POSSIBLE UNTIL WE HAVE EXHAUTED ALL* WE HAVE IN CORE OR WE REACH THE POINT WHEN FURTHER OUTPUT WOULD * DESTROY INFORMATION NOT YET READ. IN THIS SECTION, THE VARIABLE * SUPS = # OF WORDS THAT HAVE BEEN OUTPUT FROM THE CURRENT CORE * LOAD.       SPC 2 SUP11 CLA           SET # OF WORDS OUTPUT SO FAR TO SUP15 STA SUPS       ZERO.      LDA SUPL2     SET WORD = -# OF WORDS LEFT       ADA SUPP,I     TO BE WRITTEN ON L1.       LDB SUPL1     TEST FOR WRITING ON A TRACK NOT       CPB SUPK1      COMPLETELY READ.       JMP SUP12     WE ARE. SUP13 LDB SUPS      SET B=# OF WORDS LEFT IN CORE.      CMB,INB       ADB SUP       STB SUPB      SAVE IN B.      ADB 0         COMPARE WITH # WE WANT TO WRITE.      SSB,RSS       JMP SUP14     HAVE ENOUGH. -# IS IN A.      LDA SUPB      ONLY WRITE WHAT WE HAVE.      AND M64       USE ONLY FULL SECTOR'S WORTH      CMA,INA       MAKE NEGATIVE.      JMP SUP14 SUP12 LDB SUPL2     IF WRITING ON UNREAD TRACK, MAKE      CMB,INB        SURE WE DON'T GO INTO UNREAD       ADB SUPK2       AREA.       ADB 0       CMB,SSB,INB,RSS       ADA 1         CHANGE A TO AVOID OVERLAY.      JMP SUP13 * * A  NOW  CONTAINS -# OF WORDS WE'RE GOING TO WRITE.* SUP14 STA WORD      IF NO WORDS TO BE       SZA,RSS        WRITTEN GO TO SLIDE CORE FOR       JMP SUP17       NEW INPUT.      CMA,INA       STA SUPB      LDA SUPL2     TEST FOR FIRST WRITE ON THIS      SZA            TRACK.       JMP SUP18 *       LDA SUPL1     IF FIRST WRITE,       INA       STA MOVED      ADJUST DIREC TO TELL       LDA LIBD        NEW FIRST ENTRY ON THAT       ADA SUPS         TRACK.       STA MOVES       LDB .-4       JSB MOVEW       CLA * SUP18 CLB           CONVERT WORDS TO SECTOR       ASR 6          ADDRESS.       LDB SUPL1     ADD IN TRACK ADDRESS.       ADB .+6       ADA 1,I       LDB LIBD      COMPUTE CORE      ADB SUPS       ADDRESS.       JSB DISCL     OUTPUT TO DISC.       LDA SUPB      ADJUST # OF WORDS OUTPUT TO       ADA SUPL2      TRACK.       STA SUPL2       LDA SUPB      ADJUST # OF CORE WORDS WRITTEN      ADA SUPS       OUT SO FAR.      JMP SUP15     LOOP FOR ANY MORE WRITING.* * COME   HERE WHEN WE CAN'T WRITE ANYMORE.* SUP17 CPA SUPS      IF NOTHING WRITTEN AT ALL, GO TO      JMP SUP7       TRY AND READ AGAIN.      LDB SUPS      ADJUST # OF WORDS IN CORE.      CMB,INB       ADB SUP       STB SUP       CMB,INB       MAKE NEGATIVE FOR CORE MOVE.      LDA LIBD      SET DESTINATION AND SOURCE.       STA MOVED       ADA SUPS      STA MOVES       JSB MOVEW       JMP SUP7* * ALL TRACKS WRITTEN BACK. NOW UPDATE WORD COUNTS IN* DIREC.* SUP16 LDA DEFNN+1       STA DIREC       LDA DEFNN+2       STA DIREC+7       LDA DEFNN+3       STA DIREC+14      LDA DEFNN+4       STA DIREC+21      LDA SUPR1     SET UP RETURN ADDRESS.      STA SUPRSUP3  LDA M251      SET WORD COUNT.       STA WORD      LDA LIB,I     GET DISC ADDRESS.       LDB #LIBI       JMP SUPR-1DEFNN DEF *+1       BSS 4 M5432 DEC -5432 M681  DEC -681M680  DEC -680SUPR1 JMP LIBRA+254 M251  DEC -251SUPB  OCT 0 DIRD4 DEF DIREC+28SUPS  DEC -8SUP   OCT 0 SUPP  DEF DEFNN+1 SUPK1 DEF DIREC SUPK2 OCT 0 SUPL1 DEF DIREC SUPL2 OCT 0 SUPTG OCT 0       ORG LIBRA+250       JSB DISCL     OVERLAY.SUPR  JMP LIBRA+255 SET FOR ERROR RETURN. $$SAV EQU *       HED GET * THE GET ROUTINE IS RESPONSIBLE FOR LOADING A PROGRAM FROM THE * USER LIBRARY. IT CAN BE USED TO LOAD FROM EITHER THE USER'S * PRIVATE LIBRARY OR FROM THE PUBLIC LIBRARY. IF THE PROGRAM IS TO* BE FROM THE PUBLIC LIBRARY, THE PROGRAM NAME SHOULD BE PRECEDED * BY A DOLLAR SIGN ($).       SPC 1       ORG LIBRA       SPC 1       LDA MLINK+1   GET USER'S ID.      ADA .+?ID-?LINK       STA GETI      LDA 0,I       STA LTEMP     STORE IN LTEMP.       LDA DLTEM     SET UP POINTER FOR NAME.      INA       STA GETP      LDA .-3       SET UP COUNTER.       STA GETC      JSB LCHAR     GET FIRST INPUT CHAR.       JMP GET1      ERROR IF NONE.      CPA .+44B     IF $ GO TO SET UP FOR       JMP GET2       SEARCHING PUBLIC LIBRARY.GET3  ALF,ALF       SAVE CHARACTER IN TABLE.      STA GETP,I      JSB LCHAR     GET RIGHT CHARACTER.      LDA .+40B     IF END CHANGE TO BLANK.       IOR GETP,I      STA GETP,I      ISZ GETP      BUMP POINTER.       JSB LCHAR     GET NEXT CHARACTER.       LDA .+40B       ISZ GETC      DO WE WANT IT?      JMP GET3      YES.      CPA .+40B     NO--A SHOULD NOW BE BLANK.      JMP GET4* GET1  LDA .-13      LDB *+2       JMP LIBER       DEF *+1       OCT 5111      ASC 6,NVALID NAME * GET2  LDA A000      SET UP FOR PUBLIC LIBRARY SEARCH      STA LTEMP       JSB LCHAR     GET FIRST CHAR OF NAME.       JMP GET1      FAIL IF NONE.       JMP GET3* GET4  JSB DLOOK     SEARCH DIRECTORY FOR PROGRAM.       JMP GET9* GET6  LDA .-16      LDB *+2       JMP LIBER       DEF *+1       OCT 5116      ASC 7,O SUCH PROGRAMGET9  LDB GETPD     TEST FOR FILE RATHER      ADB .+2        THAN PROGRAM.      LDA 1,I       SSA,RSS       JMP GET10 *       LDA .-16      LDB *+2       JMP LIBER       DEF *+1       OCT 5105      LF-E      ASC 7,NTRY IS A FILE* * FOUND CORRECT ENTRY. FIRST CHECK TO SEE IF IT FITS* GET10 ADB .+5       GET PROGRAM       LDA 1,I         LENGTH.       STA GETLN       CMA,INA       COMPUTE FIRST       ADA PBUFF      UNUSED WORD.       STA GETPB       CMA,INA       COMPUTE NEGATIVE      ADA U5343     TOTAL LENGTH.       SSA,RSS       COMPARE WITH MAX ALLOWED.       JMP GET13     OK      LDA .-18      LDB *+2       JMP LIBER       DEF *+1       OCT 5120      LF-P      ASC 8,ROGRAM TOO LARGE* GET13 JSB DATE      SET NEW DATE      LDB GETPD      INTO       ADB .+5       DIRECTORY.      STA 1,I       INB           GET PROGRAM       LDA 1,I        DISC ADDRESS.      STA GETD*       LDA GETP,I    WRITE DIRECTORY       STA WORD       BACK TO      LDA GETP        DISC.       ADA .+6       LDA 0,I       LDB LIBD      JSB DISCL *       LDA GETI,I    GET USER'S ID       ISZ GETPD     BUMP POINTERS UP TO       ISZ GETI      FIRST WORD OF NAME.       LDB GETPD,I   GET FIRST WORD OF NAME.       CPA A000      IF SYSTEM MASTER, CLEAR       ELB,CLE,ERB    RUN-ONLY BIT.      STB GETI,I    STORE FIRST WORD OF NAME.       ISZ GETI      BUMP POINTER TO NEXT WORD.      DLD LTEMP+2   GET LAST 2 WORDS OF NAME.       DST GETI,I    STORE IN TABLE. *       LDB MLINK+1   SET TO NULL PROGRAM       ADB .+?PROG-?LINK       LDA PBUFF       STA 1,I       JSB RDPRG     READ IN CURRENT USER PROGRAM.       LDA GETLN     SET UP TRANSFER       STA WORD       FOR READING IN PROGRAM.      LDA GETD      LDB PBUFF       ADB BIT15       JSB DISCL       LDA GETPB     SET PBPTR.      STA PBPTR       LDA CMSK      SET COMPILE BIT TO SAY      AND CFLAG        NOT COMPILED.      STA CFLAG       CLA           CLEAR OUT-OF-STORAGE      STA SYMTB       FLAG.       LDA MLINK+1   SET MAIN.       ADA .-?LINK       STA MAIN      JMP LLEND     TERMINATE.* GETP  EQU LTEMP+4 GETPD EQU LTEMP+5 GETI  EQU LTEMP+6 GETC  EQU LTEMP+7 GETDS EQU LTEMP+8 GETLN EQU LTEMP+10GETPB EQU LTEMP+11GETD  EQU LTEMP+12$GET  EQU * 