ASMB,R,B,L,C,X     $EX31                        7905                            
      HED EFMP EXEC MODULE
      NAM $EX31,1,0                             7905                            
      ENT $EX31 
      EXT ERROR, EFCON
      EXT FTRBE,NXPTL,PNEAD,APN00,DESIZ,DPNO
      EXT A$BUF 
      EXT NOTRB,NSUWA,WPTRB,NXOTL,NXTFP 
      EXT OPNTB,STSWA,TRBUF,TRBSZ,ARQP1,DPNO
      EXT OPNT1,PAKSC,TRKIO,SECIO,CNAME,NOSEC 
      EXT OPNSZ,OPNTE,MOVCT,GNS,GSC 
      EXT VALSU 
      EXT MASUB 
****************************************************            7905            
*                                                  *            7905            
*        REV         4-21-75                       *            7905            
*                                                  *            7905            
****************************************************            7905            
      SPC 3 
$EX31 EQU * 
      NOP           DUMMY 
      LDB MD8 
      STB MOVCT     INITIALIZE NO. WORDS TO MOVE
      LDA ARQP1     ADDR. OF SOURCE 
      LDB AARG1     ADDR. OF DESTINATION
      JSB MOVE      MOVE THE ARRAY
      LDA ARG2,I
      ADA AJMPT     ADDR. OF JUMP TABLE 
      JMP A,I       EXECUTE PROPER FUNCTION 
AJMPT DEF JMPTB-1,I 
JMPTB EQU *         JUMP TABLE
      DEF FUN01     FUNCTION 1
      DEF FUN02     FUNCTION 2
      DEF FUN03     FUNCTION 3
      DEF FUN04 
      DEF FUN05 
      DEF EFCON 
      DEF FUN07 
      HED DEFINE FUNCTION 
* 
*     DEFINE FUNCTION 
* 
FUN01 EQU *         FUNCTION 1
      CLA           INVALID SETUP SO FAR
      STA VALSU     VALUE SETUP FLAG
      LDA ARG3      OPNTB 
      LDB ARG4,I    OPNSZ 
      SZB,RSS       VALID SIZE TABLE? 
      JSB ER23      NO
      SSB 
      JSB ER23
      CMB 
      ADB D128
      SSB,RSS       .GE.? 
      JSB ER23      NO
      LDB ARG4,I    OPNSZ 
      JSB CKCLM     CHECK CORE LIMIT
      JSB ER9       OUT-OF-BOUNDS 
      STA OPNTB     SAVE POINTER TO OPEND TABLE 
      STA NXPTL     NEXT AVAILABLE PACK NO. ENTRY 
      STB OPNSZ     SAVE SIZE OF OPENED TABLE 
      ADA B 
      ADA MD1       CALCULATE END ADDR. 
      STA OPNTE     END OF OPEN TABLE 
      LDA ARG6      GET ADDR OF NO. OF PACK NO.'S 
      INA 
      LDA A,I       GET NO. OF PACK NO.'S 
      SSA           NEGATIVE ?
      JSB ER23      YES 
      LDB D4
      JSB MPY       CALC. SIZE OF PACK NO. AREA 
      ADA OPNTB     START OF TRB ENTRY
      STA FTRBE     SAVE START OF TRB ENTRY 
      SZB           OVERFLOW ?
      JSB ER23      YES 
      LDA ARG6,I    NOTRB 
      SZA,RSS 
      JSB ER19
      SSA 
      JSB ER19
      STA NOTRB     NO. OF TEMP. RECD. BUFFERS
      LDB D3
      JSB MPY       CALC. NO. WDS. USED ON OPNTB
      ADA FTRBE     START OF OPEN TABLE 
      STA NXOTL     NEXT OPEN TABLE LOC.
      STA OPNT1     START OF OPENED TABLE 
      ADA WPOTE     ADD ENOUGH FOR 1 OPEN ENTRY 
      SZB           OVERFLOW? 
      JSB ER23      YES 
      CMA,INA 
      ADA OPNTE     END OF OPEN TABLE 
      SSA           ENOUGH ROOM 
      JSB ER23      NO
      LDA D128      WDS/SECT. 
      LDB ARG7,I    TRBSZ 
      SZB,RSS 
      JSB ER23
      SSB 
      JSB ER23
      CPB D1
      JSB ER23
      STB TRBSZ     SAVE TEMP. RCD. BUFF. SIZE
      JSB MPY       CONVERT SECTORS TO WORDS
      SZB 
      JSB ER23
      SSA 
      JSB ER23
      STA WPTRB     WORDS IN 1 TRB
      LDB NOTRB 
      JSB MPY       CALC. TOTAL WDS. IN TRB 
      SZB 
      JSB ER23
      SSA 
      JSB ER23
      STA TWTRB     TOTAL WORDS IN TRB'S
      LDB A 
      LDA ARG5      POINTER TO TRB
      JSB CKCLM     CHECK CORE LIMITS 
      JSB ER9       OUT-OF-BOUNDS 
      STA TRBUF 
      CMA,INA 
      ADA OPNTE     END OF OPEN TABLE 
      SSA           TRBUF .GT. OPNTE
      JMP TRBOK     YES, NO OVERLAP 
      LDA TRBUF     ADDR. OF TRB
      ADA TWTRB     CALC. END OF TRB
      CMA,INA       +1
      ADA OPNTB     START OF OPEN TABLE 
      SSA           END OF TRBUF .LT. OPNTB 
      JSB ER23      NO, THEN OVERLAP
TRBOK EQU * 
      LDA NOTRB     NO. TRB 
      LDB D3
      JSB MPY       CALC. NO. WDS. USED IN OPNTB
      CMA,INA 
      LDB FTRBE     GET START OF FIRST TRB ENTRY
      JSB STZ       ZERO OUT TRB ENTRY AREA 
      LDA NOTRB 
      CMA,INA 
      STA DEFIN     SET UP INDEX
      LDA TRBUF     START OF TRB
      LDB FTRBE     GET START OF FIRST TRB ENTRY
      STA B,I       SET UP POINTER TO EACH TRB
      ADB D3        BIAS FOR NEXT POINTER 
      ADA WPTRB     NO. WDS/TRB 
      ISZ DEFIN     FINISHED W/ ALL OF TRB POINTERS 
      JMP *-4       NO
      CCA           VALID SETUP 
      STA VALSU     VALID SETUP FLAG
      JMP EFCON     RETURN TO MAIN
DEFIN OCT 0         TEMP STORAGE
      HED CREATE FUNCTION 
* 
*     CREATE FUNCTION 
* 
FUN02 EQU *         FUNCTION 2
      JSB CKVSU     CHECK IF VALID DEFINE PREVIOUSLY
      JSB CKNAP     CHECK NAME AND PACK NO. 
      SZA,RSS       PN000 ? 
      JMP SSUBC     YES 
      SSA           TRY ALL PACKS ? 
      JMP CGTPN     YES 
      CLA,INA       SEARCH FOR EXISTING ENTRY 
      LDB ARG4,I    GET SPECIFIC PACK NO. 
      JSB CKPNT     PACK NO. IN OPEN TABLE ?
      RSS           NO. 
      JMP SEDIR     YES 
CGTPN EQU * 
      LDA ADPNE     GET ADDR OF DUMMY PACK NO. ENTRY
      STA PNEAD     STORE ADDR
      LDA ARG4,I    GET PACK NO.
      JSB GETPN     PACK NO. FOUND ?
      JSB ER6       NO
INPNE EQU * 
      STB SVAEN     SAVE ENTRY ADDR 
      JSB SVPNS     SAVE PACK NO. SEARCH ENVIRONMENT
      LDB SVAEN     RESTORE ENTRY ADDR
      ADB D3        INCREMENT TO T/S START FIELD
      LDA B,I       GET START T/S OF EFMP AREA
      LDB PNEAD     ADDR OF PACK NO. ENTRY
      STA B,I       STORE STARTING T/S
SEDIR EQU * 
      JSB SETD1     SET UP FOR EFMP SEARCH
      JSB SRCDR     SEARCH DIRECTORY
      RSS           FILE NAME NOT FOUND 
      JSB ER2       DUPLICATE FILE NAME 
      STB NXTFP     SAVE NEXT FILE LOC. 
      JSB REQS?     CALCULATE SECTORS NEEDED
      JSB CKSPC     ENOUGH SPACE ?
      JMP MORPK     NO
      LDA MXWPE     EFMP ENTRY DIRECTORY SIZE 
      JSB CKDSP     ENOUGH DIRECTORY/FILE SPACE ? 
      RSS           NO
      JMP EFCON     YES 
      SZA,RSS       NO FILE SPACE 
      JMP MORPK     YES 
      LDA ARG4,I    GET PACK NO.
      SSA,RSS       TRY ALL PACKS ? 
      JSB ER24      NO
      JMP NXTPN     CONTINUE SEARCH 
MORPK EQU * 
      LDA ARG4,I    GET PACK NO.
      SSA,RSS       TRY ALL PACKS ? 
      JSB ER4       NO
NXTPN EQU * 
      JSB REPNS     RESTORE PACK NO. SEARCH ENVIRONMENT 
      JSB GTNPN     CONTINUE PACK SEARCH
      JSB ER14      NO PACK AVAILABLE 
      JMP INPNE     PACK FOUND
      SPC 1 
SSUBC EQU * 
      CLA,INA       SEARCH FOR ACTIVE ENTRY INDICATRO 
      LDB ARG4,I    GET PACK NO.
      JSB CKPNT     PACK NO. IN OPEN TABLE ?
      JMP NENTF     NO
      CLA           ENTRY FOUND SWITCH
      STA PNESW     STORE SWITCH
      JMP COPTE 
NENTF EQU * 
      CLA           SEARCH FOR AVAILABLE ENTRY INDICATOR
      JSB CKPNT     PACK NO. ENTRY AVAILABLE ?
      JSB ER16      NO
      CLA,INA       NEW ENTRY USED SWITCH 
      STA PNESW     STORE SWITCH
      LDA SYSSC     GET SYSTEM SUBCHANNEL 
      STA PAKSC     STORE IT
      JSB SETD2     SET UP FOR DOS-M SEARCH 
      LDB APN00     GET PACK NO.
      JSB SRCDR     SEARCH FOR PN000
      RSS            PN000 NOT FOUND
      JMP BPNE      GO BUILD PACK NO. ENTRY 
      JSB CRPN0     CREATE PN000
      JMP COPTE 
BPNE  EQU * 
      ADB D3        INCREMENT TO STARTING T/S FIELD 
      LDA B,I       GET STARTING T/S
      STB SVAEN     SAVE DIRECTORY ENTRY ADDR 
      LDB PNEAD     GET PACK NO. ENTRY ADDR 
      STA B,I       STORE STARTING T/S IN PACK NO. ENTRY
      STA STSWA     STORE STARTING T/S
      LDB SVAEN     RESTORE DIRECTORY ENTRY ADDR
      INB           INCREMENT TO SIZE FIELD 
      LDA B,I       GET SIZE FO PN000 
      LDB PNEAD     GET ADDR OF PACK NO. ENTRY
      INB           INCREMENT TO SIZE FIELD IN PACK NO. ENTRY 
      STA B,I       STORE PN000 SIZE IN PACK NO. ENTRY
      INB           INCREMENT TO DIRECTORY SIZE FIELD 
      LDA SECTR     GET DIRECTORY SIZE
      ADA MD1 
      STA B,I       STORE DIRECTORY SIZE IN PACK NO. ENTRY
      INB           INCREMENT TO LSA FIELD
      CLA            LSA IS ZERO
      STA B,I       STORE LSA IN PACK NO. ENTRY 
      STA NSUWA     STORE LSA 
COPTE EQU * 
      JSB REQS?     CALCULATE SECTORS NEEDED
      JSB CKSPC     IS SUFFICIENT SPACE AVAILABLE ? 
      JSB ER17      NO
      LDB ARG3      GET ADDR OF FILE NAME 
      JSB CKOPN     CHECK IF OPEN 
      RSS           NOT OPEN
      JSB ER2       DUPLICATE NAME
      LDA B         NEXT OPEN TABLE LOCATION
      CPA OPNTE     END OF O.T.?
      JSB ER18      YES 
      CMA,INA 
      ADA OPNTE     CALC. NO. WDS. LEFT IN O.T
      INA 
      ADA MWPOT     (-) WORDS PER OPEN TABLE ENTRY
      SSA           O.T FULL
      JSB ER18      YES, NO OPEN BUFFER SPACE AVAIL.
      LDA MXWPE     GET ENTRY SIZE
      STA DESIZ     STORE ENTRY SIZE
      STB NXTFP     ADDR OF DIRECTORY ENTRY 
      JSB PKDIR     PACK DIRECTORY
      LDB NXTFP     GET START OF OPEN TABLE ENTRY 
      CLA 
      ADB D6        INCREMENT TO SECURITY FIELD 
      STA B,I       SECURITY CODE 
      ADB D4
      STA B,I  PACK NO. 
      INB 
      INA 
      STA B,I  TRB NO.
      INB 
      LDA SYSSC     SYST. SUB CH. 
      STA B,I       SUB. CH.
      INB 
      CLA 
      STA B,I       T/S CURRENTLY IN CORE 
      INA           INITL. TO RECD. NO. 1 
      INB 
      STA B,I       NEXT RECD. BEING PROCESSED
      CLA 
      INB 
      STA B,I       "HRA" IN CORE 
      INB 
      STB NXOTL     SAVE NEXT OPEN TABLE LOCATION 
      LDA NXTFP     GET ADDR OF NEXT FILE POSITION
      JSB STPNO     STORE PACK NO. OFFSET 
      LDA NXTFP     GET ADDR OF FILE ENTRY
      JSB SFSTS     STORE STARTING T/S
      LDB PNEAD     GET PACK NO. ENTRY
      ADB D3        INCREMENT TO LAST SECTOR ALLOCATED
      LDA B,I       GET THE NEW LSA 
      STA NSUWA     STORE NEW LSA 
      LDA PNESW     GET PACK NO. ENTRY USED SWITCH
      SZA,RSS       NEW ENTRY USED ?
      JMP EFCON     NO
      LDA NXPTL     UPDATE NEXT ENTRY AVAILABLE ADDR
      ADA D4
     STA NXPTL
      JMP EFCON 
      HED MISC. CREATE ROUTINES 
      SPC 3 
* REQS? - CALC. NO. OF SECTORS IN A FILE
* ENTER:
*         ARG5,I = FILE LENGTH (IN RECORDS) 
*         ARG6,I = RECORD LENGTH (IN WORDS) 
* EXIT: 
*         A = NO. OF SECTORS
*         NOSEC = NO. OF SECTORS
* 
REQS? NOP           CALC. REQ. NO. OF SECTORS 
      LDA ARG5,I    FILE LENGTH (IN RECORDS)
      SZA,RSS 
      JSB ER23      INVALID FILE LENGTH 
      SSA 
      JSB ER23      INVALID FILE LENGTH 
      LDB ARG6,I    RECORD LENGTH (IN WORDS)
      SZB,RSS 
      JSB ER5       INVALID RECORD LENGTH 
      SSB 
      JSB ER5       INVALID RECORD LENGTH 
      RBL 
      SSB 
      JSB ER5 
      CMB,INB 
      ADB WPTRB     WDS/TRB 
      SSB           .GT. ONE-HALF TRB 
      JSB ER26      YES 
      LDB ARG6,I
      JSB MPY       CALC. FILE LENGTH IN WORDS
      JSB DIV       CALC. FILE LENGTH IN SECTORS
      DEF D128
      SOC           OVERFLOW? 
      JSB ER23      YES, INVALID ARGUEMENTS 
      SZB           PART OF ADDITIONAL SECTOR USED? 
      INA           YES 
      STA NOSEC     SAVE NO. OF SECTORS 
      JMP REQS?,I   RETURN
      HED DESTROY FUNCTION
* 
*         DESTROY 
* 
FUN03 EQU * 
      JSB CKVSU     CHECK IF VALID DEFINE PREVIOUSLY
      JSB CKNAP     CHECK NAME AND PACK NO. 
      SZA,RSS       PN000 ? 
      JMP SYSTP     YES 
      SSA           TRY ALL PACKS ? 
      JMP STDPN     YES 
      LDB ARG3      GET ADDR OF FILE NAME 
      JSB CKOPN     FILE OPEN ? 
      RSS           NO
      JMP RDSEC     YES 
SRPNT EQU * 
      CLA,INA       PACK NO. ENTRY ACTIVE SWITCH
      LDB ARG4,I    PACK NO.
      JSB CKPNT     PACK NO. IN OPEN TABLE
      RSS           NO
      JMP SNDIR     SEARCH NEXT DIRECTORY 
STDPN EQU * 
      LDA ADPNE     GET ADDR OF DUMMY PACK NO. ENTRY
      STA PNEAD     STORE ADDR
      LDA ARG4,I    GET PACK NO.
      JSB GETPN     PACK NO. AVAILABLE ?
      JSB ER6       NO
INTP1 EQU * 
      STB SVAEN     SAVE ENTRY ADDR 
      JSB SVPNS     SAVE PACK NO. SEARCH ENVIRONMENT
      LDB SVAEN     RESTORE ENTRY ADDR
      ADB D3        INCREMENT TO STARTING T/S FIELD 
      LDA B,I       GET STARTING T/S
      LDB PNEAD     GET ADDR OF PACK NO. ENTRY
      STA B,I       STORE STARTING T/S
SNDIR EQU * 
      JSB SETD1     SET UP FOR EFMP SEARCH
      JSB SRCDR     FILE IN DIRECTORY ? 
      RSS           NO
      JMP DSENT     YES 
      LDA ARG4,I    GET PACK NO.
      SSA,RSS       TRY ALL PACKS ? 
      JSB ER3       NO
      JSB REPNS     RESTORE PACK NO. SEARCH ENVIRONMENT 
      JSB GTNPN     CONTINUE SEARCH 
      JSB ER6       NO PACK NO. AVAILABLE 
      JMP INTP1     SEARCH DIRECTORY
RDSEC EQU * 
      ADB D10       INCREMENT TO PACK NO. FIELD 
      LDA ARG4,I    GET PACK NO.
      CPA B,I       PACK NO.'S EQUAL ?
      RSS           YES 
      JMP SRPNT     NO
      ADB D2        GET FILE SUBCHANNEL 
      LDA B,I 
      STA PAKSC     SAVE SUBCHANNEL 
      ADB MD12      BACK UP TO START OF ENTRY 
      JSB GETDE     GET DIRECTORY ENTRY 
      LDB CNAME     GET CURRENT ENTRY ADDR
DSENT EQU * 
      STB FILPO     FILE POSITION 
      ADB D6
      LDA B,I       PICK UP SECURITY CODE 
      CPA ARG5,I    VALID?
      RSS           YES 
      JSB ER7 
      LDB FILPO     FILE POSITION 
      LDA INVCH     INVALID CHAR. 
      STA B,I 
      INB 
      STA B,I 
      INB 
      STA B,I 
      CLA,INA       WRITE SWITCH
      LDB PAKSC     GET SUBCHANNEL
      JSB PRWIO     WRITE DIRECTORY ENTRY 
      LDB ARG3      GET ADDR OF FILE NAME 
      JSB CKOPN     FILE OPEN ? 
      JMP EFCON     NO
      LDA DPNO      GET PACK NO.
      ADB D10       INCREMENT TO OPEN TABLE PACK NO.
      CPA B,I       PACK NO.'S EQUAL ?
      RSS           YES 
      JMP EFCON     NO
      ADB MD8       BACK UP TO PACK NO. OFFSET FIELD
      LDA B,I       GET PACK NO. OFFSET 
      STA SVPNO     SAVE OFFSET 
      ADB MD2       BACK UP TO START OF OPEN TABLE ENTRY
      JSB MOVOT 
      LDA SVPNO     GET PACK NO. OFFSET 
      JSB MVPNT     UPDATE PACK NO. ENTRY TABLE 
      JMP EFCON     RETURN
SYSTP EQU *         SYSTEM PACK 
      LDB ARG3      GET ADDR OF FILE NAME 
      JSB CKOPN     CHECK IF FILE OPENED
      JSB ER3       NAME NOT IN WORK AREA 
      STB FILPO     SAVE FILE POSITION
      ADB D10       INCREMENT TO PACK NO
      LDA B,I       GET PACK NO.
      SZA           PN000 ? 
      JSB ER15      NO
      JSB POST      POST ALL TRB'S
      JSB RPWKA     REPACK WORK AREA
      JMP EFCON     RETURN TO MAIN
      SPC 1 
* 
* REPACK DISC 
* 
RPWKA NOP           REPACK WORK AREA
      LDA STSWA     STARTING T/S IN WORK AREA 
      JSB T.STS     CONV. TO SECTORS
      ADA NSUWA     NO. SECT. USED IN WORK AREA 
      JSB STT.S     CONV. TO T/S
      LDB SYSSC     SYSTEM SUB CH.
      STB DISSC     DESIRED SUB CH. 
      LDB FILPO     FILE POSITION 
      JSB RPDIS     REPACK DISC 
      JMP UDNSU     UPDATE NO. SECT. USED IN WK AREA
      STA FILPO+1   SAVE SUB LENGTH MOVED 
      LDB FILPO     FILE POSITION IN OPEN TABLE 
      STB FILSE     CURRENT FILE POSITION IN O.T. 
      ADB D3
      LDA B,I       T/S OF FILE TO BE DELETED 
      JSB T.STS     CONV. TO SECTORS
      STA FILSE+1 
MINOT EQU *         MORE IN O.T.
      LDB FILSE     CURRENT FILE POSITION IN O.T. 
      ADB WPOTE     WORDS PER O.T. ENTRY
      LDA B 
      CMA 
      ADA NXOTL     NEXT O.T. LOC.
      SSA           .GE.? (FINISHED?) 
      JMP UDNSU+1   FINISHED,UPDATE NO. SECT. USED
      STB FILSE     NEW FILE POSITION 
      ADB D10 
      LDA B,I       PACK NO.
      SZA           FILE IN WORK AREA?
      JMP MINOT     NO
      ADB MD7 
      LDA B,I       T/S IN WORK AREA
      JSB T.STS     CONV. TO SECT.
      CMA 
      ADA FILSE+1   STARTING T/S OF ORIGINAL FILE 
      SSA,RSS       THIS AREA .GE. AREA MOVED?
      JMP MINOT     NO
      LDA B,I       OLD T/S 
      JSB T.STS     CONV. TO SECTORS
      ADA FILPO+1   SUB. LENGTH MOVED 
      JSB STT.S     CONV. BACK TO T/S 
      STA B,I       NEW T/S FOR START OF FILE INFO. 
      JMP MINOT     MORE IN OPEN TABLE
UDNSU EQU *         UPDATE NO. SEC. USED IN WK AREA 
      STA FILPO+1   SAVE SUB LENGTH MOVED 
      LDB FILPO     FILE POSITION IN O.T. 
      ADB D2        INCREMENT TO PACK NO. OFFSET FIELD
      LDA B,I       GET PACK NO. OFFSET 
      STA SVPNO     SAVE PACK NO. OFFSET
      ADB MD2       BACK UP TO START OF ENTRY 
      JSB MOVOT     MOVE SUBSEQUENT O.T. ENTRIES
      LDA SVPNO     GET PACK NO. OFFSET 
      JSB MVPNT     UPDATE PACK NO. TABLE 
      LDA NSUWA     NO. SECT. USED IN WORK AREA 
      ADA FILPO+1   SUB. LENGTH MOVED 
      STA NSUWA 
      CLA,INA       SEARCH FOR ACTIVE ENTRY 
      CLB           PACK NO. OF 0 
      JSB CKPNT     PACK NO. ENTRY FOUND ?
      JMP RPWKA,I   NO
      LDA NSUWA     GET NEW LSA 
      LDB PNEAD     GET ADDR OF PACK NO. ENTRY
      ADB D3        INCREMENT TO LSA FIELD
      STA B,I       STORE NEW LSA IN PACK NO. ENTRY 
      JMP RPWKA,I   RETURN
ADPNE DEF DPNE      ADDR OF DUMMY PACK NO. ENTRY
DPNE  BSS 4         DUMMY PACK NO. ENTRY
SVPNO BSS 1         SAVE FOR OFFSET 
SVAEN BSS 1         SAVE FOR ENTRY ADDR 
FILPO OCT 0,0       FILE POSITION 
FILSE OCT 0,0       FILE SECTOR 
      HED OPEN FUNCTION 
* 
*         OPEN FUNCTION 
* 
FUN04 EQU * 
      JSB CKVSU     CHECK IF VALID DEFINE PREVIOUSLY
      JSB CKNAP     CHECK NAME AND PACK NO. 
      SZA           PN000 ? 
      RSS           NO
      JMP OTMFL     YES 
      LDB ARG3      GET FILE NAME 
      JSB CKOPN     FILE OPEN ? 
      RSS           NO
      JSB ER25      YES 
      LDA NXOTL     GET NEXT OPEN TABLE ENTRY 
      ADA WPOTE     ADD SIZE OF ENTRY 
      ADA MD1 
      CMA,INA 
      ADA OPNTE     ROOM FOR NEW ENTRY ?
      SSA           YES 
      JSB ER18      NO
      LDB ARG4,I    GET PACK NO.
      SSB,RSS       TRY ALL PACKS ? 
      JMP SOPNT     NO
      LDA ADPNE     GET ADDR OF DUMMY PACK NO. ENTRY
      STA PNEAD     STORE ADDR
      JMP GFSPN 
SOPNT EQU * 
      CLA,INA       SEARCH FOR ACTIVE ENTRY 
      LDB ARG4,I    GET PACK NO.
      JSB CKPNT     PACK NO. IN TABLE 
      RSS           NO
      JMP SPNE1     YES 
      CLA           SEARCH FOR AVAILABLE ENTRY
      JSB CKPNT     ENTRY AVAILABLE ? 
      JSB ER16      NO
      CLA           NEW ENTRY SWITCH
      STA PNESW     STORE SWITCH
GFSPN EQU * 
      LDA ARG4,I    GET PACK NO.
      JSB GETPN     PACK NO. AVAILABLE ?
                                                                                                                                                                                                                                          