      JSB STAPN     SEARCH FOR PACK NO. 
      JSB ER6 
      JSB SRCD2     FILE FOUND ?
      JSB TNXTP     GET NEXT PACK NO. 
      LDA DPNO      GET THE DECIMAL VALUE OF PACK NO. 
      STA ARG7,I    PACK STATB
      ADB D8
      LDA B,I       HIGHEST RECORD ACCESSED ON DISC 
      ADB MD4 
      JMP STA4A 
      SPC 1 
CKSLM NOP           CHECK STATUS LIMITS 
      LDA ARG7      ADDR. OF STATB
      JSB CKCLM     CHECK CORE LIMITS 
      JSB ER9       OUT-OF-LIMITS 
      JMP CKSLM,I 
      SPC 3 
STAT5 EQU *         SECTORS LEFT ON PACK
      LDB D2        NO. WDS. TO CHECK 
      JSB CKSLM 
      LDA ARG5,I    PAKNO 
      SSA 
      JSB ER15
      JSB ST6PN     STATUS SEARCH FOR P.N.
      JMP S5PAK     SYSTEM PACK 
      ADB D3       INCREMENT TO STARTING T/S FIELD
      LDA B,I       GET STARTING T/S
      JSB PRETS     PREPARE T/S FOR I/O 
      CLA           READ
      LDB PAKSC     GET SUBCHANNEL
      JSB PRWIO     READ FIRST SECTOR OF EFMP PACK NO.
      LDB A$BUF     GET ADDR OF DIRECTORY ENTRY 
      ADB D4        INCREMENT TO SIZE FIELD 
      LDA B,I       GET SIZE
      ADB D4        INCREMENT TO LSA FIELD
      LDB B,I       GET LSA 
      CMB,INB       CALCULATE SECTORS UNUSED
      ADA B 
STA5A EQU * 
      LDB ARG7      ADDR. OF STATB
      INB 
      STA B,I       PACK NO. SECT. LEFT INTO STATB+1
      JMP EFCON     RETURN TO MAIN
S5PAK EQU * 
      LDB SYSSC     GET SYSTEM SUBCHANNEL 
      STB PAKSC     STORE SUBCHANNEL
      JSB SETD2     SET UP FOR DOS-M DIR. 
      LDB APN00     GET ADDR OF NAME
      JSB SRCD3      SEARCH DIRECTORY 
      JMP STA5B     NO PN000
      ADB D4
      LDA B,I       FILE LENGTH (IN SECTORS)
      LDB NSUWA     NO. SECT. USED IN W/A 
      CMB,INB 
      ADA B         CALC. NO. SECT. LEFT IN W/A 
      JMP STA5A 
STA5B EQU * 
      CLA 
      JMP STA5A 
      SPC 3 
STAT6 EQU *         NAME OF NTH. FILE 
      LDA ARG4      POINTER TO NAME BUFFER
      LDB D3
      JSB CKCLM     CHECK CORE LIMITS 
      JSB ER9       OUT-OF-LIMITS 
      LDA ARG5,I    PAKNO 
      SZA,RSS 
      JSB ER15
      SSA 
      JSB ER15
      LDA MD3       NO. OF WDS TO CLEAR 
      LDB ARG4      POINTER TO NAME BUFFER
      JSB STZ 
      JSB ST6PN     SEARCH FOR P.N. 
      JSB ER15      BRANCH DOES NOT OCCUR 
      LDA ARG7,I    DESIRED FILE NO. "N"
      SZA,RSS 
      JSB ER23
      SSA 
      JSB ER23
      CLA,INA 
      STA ENTNO     ENTRY NO. IN DIRECTORY
      LDA ADPNE     GET ADDR OF DUMMY PACK NO. ENTRY
      STA PNEAD     STORE 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
      JSB SETD1     SET UP FOR EFMP SEARCH
      CCB           NO COMPARE SWITCH 
      STB NOPAS     STORE SWITCH
      JSB SRCD3     SEARCH DIRECTORY
      JSB ER21      END-OF-FILE 
      STB ADRFL     ADDR. OF FILE 
      LDA AINVC     POINTER TO INVALID CHAR.
      JSB CMPAR     COMPARE NAMES 
      JMP *+2 
      JMP STA6A 
      LDA ENTNO     CURRENT DIR. ENTRY NO.
      CPA ARG7,I    DESIRED FILE POSITION?
      JMP *+3 
      ISZ ENTNO     BUMP DIR. ENTRY NO. 
      JMP STA6A 
      LDA MD3 
      STA MOVCT     NO. WDS. TO MOVE
      LDA ADRFL     ADDR. OF FILE IN $BUF 
      LDB ARG4      DESTINATION BUFFER
      JSB MOVE      INSERT FILE NAME OF NTH FILE
      ADB MD1 
      LDA B,I       5TH CHAR, LO 8 BITS 
      AND H8BT      SAVE ONLY 5TH CHAR
      STA B,I       RESTORE IT
      JMP EFCON     RETURN TO MAIN
ADRFL OCT 0,0       ADDR. OF FILE 
STA6A EQU * 
      LDA SRCDR     GET RETURN ADDR 
      ADA MD1       SET TO ORIGINAL ADDR
      STA SRCDR     STORE UPDATED RETURN ADDR 
      JMP EBIAS     GET NEXT ENTRY
      SPC 3 
STAT7 EQU * 
      LDA ARG4,I    GET SUBCHANNEL
      SSA           NEGATIVE ?
      JSB ER23      YES 
      CMA,INA 
      ADA SCCNT 
      SSA           LEGAL VALUE FOR SUBCHANNEL
      JSB ER23      NO
      LDA ARG4,I    GET THE SUBCHANNEL
      STA PAKSC     STORE SUBCHANNEL
      LDA ARG7,I    GET ENTRY NUMBER
      SZA,RSS       ZERO ?
      JSB ER23      YES 
      SSA           NEGATIVE
      JSB ER23      YES 
      CLA,INA 
      STA ENTNO     INITIALIZE COUNTER
      JSB SETD2     SET UP FOR DOS-M SEARCH 
      CCB 
      STB NOPAS     NO COMPARE SWITCH 
      JSB SRCD3     SEARCH DIRECTORY
      JSB ER21      END OF DIRECTORY
      LDA PN
      CPA B,I       1ST TWO CHARS OF NAME EQUAL 'PN' ?
      RSS           YES 
      JMP GTNX1     NO
      ADB D2        INCREMENT TO 3RD WORD OF NAME 
      LDA B,I       GET TYPE FILED
      AND L7BT      CLEAR MEANINGLESS BITS
      CPA B13       ASCII ? 
      JMP AINIT     YES 
      CPA B12       BINARY ?
      JMP NINIT     YES 
      JMP GTNX1     NO
AINIT EQU * 
      CLA           INITIALIZED INDICATOR 
      RSS 
NINIT EQU * 
      CLA,INA       UNINITIALIZED INDICATOR 
      STB SVDEA     SAVE ENTRY ADDR 
      LDB ARG4      GET ADDR OF RETURN BUFFER 
      STA B,I       STORE INDICATOR 
      LDA SVDEA     RESTORE ADDR
      ADA MD1       BACK UP TO 3RD CHAR 
      JSB CNPND     IS IT DECIMAL ? 
      JMP GTNX1     NO
      LDB ENTNO     GET ENTRY NO. 
      CPB ARG7,I    EQUAL TO REQUESTED NO. ?
      JMP SRET1     YES 
      INB           INCREMENT COUNTER 
      STB ENTNO 
GTNX1 EQU * 
      LDA SRCDR     GET RETURN ADDR 
      ADA MD1       SET TO ORIGINAL ADDR
      STA SRCDR     STORE UPDATED RETURN ADDR 
      JMP GTNXE     GET NEXT ENTRY
SRET1 EQU * 
      LDB ARG5      GET ADDR OF RETURN BUFFER 
      STA B,I       STORE PACK NO.
      JMP EFCON     RETURN
SVDEA BSS 1         SAVE ADDR OF ENTRY
ENTNO BSS 1         ENTRY NO. 
      SPC 3 
STAPN NOP 
      LDA ARG4      GET ADDR OF FILE NAME 
      JSB NAM0?     CHECK NAME
GARG5 EQU * 
      LDA ARG5,I    GET PACK NO 
      JSB CKPN      CHECK PACK NO 
      SZA,RSS       PN000 ? 
      JMP STAPN,I   YES 
      LDA ARG5,I    GET PACK NO.
      JSB GETPN     PACK NO. AVAILABLE ?
      JSB ER6       NO
      STB SVDEA     SAVE DIRECTORY ENTRY ADDR 
      JSB SVPNS     SAVE PACK NO. SEARCH ENVIRONMENT
      LDB SVDEA     RESTORE DIRECTORY ENTRY ADDR
      ISZ STAPN     P+2 
      JMP STAPN,I   RETURN
ST6PN NOP 
      LDA ST6PN     GET RETURN ADDR 
      STA STAPN     STORE RETURN ADDR 
      JMP GARG5     CHECK PACK NO.
SRCD2 NOP 
      LDA ADPNE     GET ADDR OF DUMMY PACK NO. ENTRY
      STA PNEAD     STORE ADDR
SNXTD EQU * 
      ADB D3        INCREMENT TO STARTING T/S FIELD 
      LDA B,I       GET STARTING T/S
      LDB PNEAD     STORE ITIN PACK NO. ENTRY 
      STA B,I 
      JSB SETD1     SET UP FOR EFMP SEARCH
      LDB ARG4      GET ADDR OF FILE NAME 
      JSB SRCD3     FILE NAME FOUND ? 
      JMP SRCD2,I   NO, RETURN P+1
      ISZ SRCD2     P+2 
      JMP SRCD2,I   RETURN
TNXTP NOP 
      LDA ARG5,I    GET PACK NO.
      SSA,RSS       TRY ALL PACKS ? 
      JSB ER3       NO
      JSB REPNS     RESTORE PACK NO. SEARCH ENVIRONMENT 
      JSB GTNPN     PACK NO. AVAILABLE ?
      JSB ER6       NO
      JMP SNXTD     YES 
      HED CHANGE FILE NAME
* 
*         CHANGE FILE NAME
* 
FUN13 EQU * 
      JSB CKVSU     CHECK IF VALID DEFINE PREVIOUSLY
      JSB CKNAP     CHECK NAME AND PACK NO. 
      LDA ARG3      GET ADDR OF CURRENT FILE NAME 
      ADA D3        GET ADDR OF NEW FILE NAME 
      JSB NAM0?     CHECK NEW NAME
      LDA ARG4,I    GET PACK NO.
      SSA           TRY ALL PACKS ? 
      JMP SANPN     YES 
      SZA,RSS       PN000 ? 
      JMP CNINC     YES 
      LDB ARG3      GET CURRENT FILE NAME 
      JSB CKOPN     IS IT OPEN ?
      JMP CKPN1     NO
      STB CFNEN     SAVE OPEN TABLE FILE ENTRY ADDR 
      LDA ARG4,I    GET PACK NO.
      ADB D10       INCREMENT TO PACK NO. FIELD 
      CPA B,I       PACK NO.'S EQUAL ?
      RSS           YES 
      JMP CKPN1     NO
      LDB ARG3      GET ADDR OF NEW FILE NAME 
      ADB D3
      JSB CKOPN     DUPLICATE ENTRY ? 
      RSS           NO
      JSB ER2       YES 
      JSB SETD1     SET UP FOR EFMP 
      LDB CFNEN     GET OPEN TABLE ENTRY ADDR 
      ADB D12       INCREMENT TO SUBCHANNEL FIELD 
      LDA B,I       GET SUBCHANNEL
      STA PAKSC     STORE SUBCHANNEL
      ADB MD10      BACK UP TO PACK NO. OFFSET FIELD
      LDA B,I       GET PACK NO. OFFSET 
      AND L8BT      CLEAR THE LEFT BYTE 
      LDB D4
      JSB MPY       CALC. THE DISPLACEMENT
      ADA OPNTB     CALCULATE ADDR OF PACK NO. ENTRY
      STA PNEAD     STORE THE PACK NO. ENTRY ADDR 
      LDB ARG3      GET ADDR OF NAME
      ADB D3
      JSB SRCD3     SEARCH FOR DUPLICATE
      RSS           NO DUPLICATE
      JSB ER2       DUPLICATE 
      LDB CFNEN     GET ADDR OF OPEN TABLE ENTRY
      JSB GETDE     GET DIRECTORY ENTRY 
      LDB CNAME     GET ADDR OF DIRECTORY ENTRY 
CINAD EQU * 
      JSB CNGNM     CHANGE NAME IN DIRECTORY ENTRY
      CLA,INA       WRITE 
      LDB PAKSC     SUBCHANNEL
      JSB PRWIO     WRITE NEW NAME
      LDB CFNEN     GET OPEN TABLE ENTRY ADDR 
      JSB CNGNM     CHANGE NAME IN OPEN TABLE 
      JMP EFCON     RETURN
CKPN1 EQU * 
      CLA,INA       CHECK FOR PACK NO.
      LDB ARG4,I    GET PACK NO.
      JSB CKPNT     PACK NO. IN TABLE ? 
      RSS           NO
      JMP SRCD1     YES 
SANPN EQU * 
      LDA ARG4,I    GET PACK NO.
      JSB GETPN     PACK NO. AVAILABLE ?
      JSB ER6       NO
SVPNN EQU * 
      STB SVDEA     SAVE DIRECTORY ENTRY ADDR 
      JSB SVPNS     SAVE PACK NO. SEARCH ENVIRONMENT
      LDB SVDEA     RESTORE DIRECTORY ENTRY ADDR
      ADB D1        GET ADDR OF 3RD AND 4TH CHARS OF NAME 
      STB APNSV     SAVE ADDR OF 3RD CHAR OF PACK NO. 
      LDA ADPNE     GET ADDR OF DUMMY PACK NO. ENTRY
      STA PNEAD     STORE ADDR OF DUMMY PACK NO. ENTRY
      ADB D2        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
SRCD1 EQU * 
      JSB SETD1     SET UP FOR EFMP 
      LDB ARG3      GET ADDR OF NEW NAME
      ADB D3
      JSB SRCD3     SEARCH FOR DUPLICATE
      RSS           NO DUPLICATE
      JSB ER2       DUPLICATE 
      LDB ARG3      GET CURRENT FILE NAME 
      JSB SRCD3     NAME FOUND ?
      RSS           NO
      JMP CTCOP     YES 
      LDA ARG4,I    GET PACK NO.
      SSA,RSS       TRY ALL PACKS ? 
      JSB ER3       NO
      JSB REPNS     RESTORE PACK NO. SEARCH ENVIRONMENT 
      JSB GTNPN     PACK NO. AVAILABLE ?
      JSB ER6       NO
      JMP SVPNN     YES 
CTCOP EQU * 
      STB DEAD1     SAVE DIRECTORY ENTRY ADDR 
      ADB D6       INCREMENT TO SECURITY FIELD
      LDA ARG5,I   GET SECURITY IN PARM LIST
      CPA B,I       EQUAL ? 
      RSS           YES 
      JSB ER7       NO
      LDA ARG4,I    GET PACK NO.
      SSA,RSS       ALL PACKS ? 
      JMP CNOD      NO
      LDB ARG3      GET CURRENT NAME
      JSB CKOPN     FILE OPEN ? 
      JMP CNOD      NO
      LDA DPNO      GET PACK NO.
      ADB D10       INCREMENT TO PACK NO. FIELD 
      CPA B,I       PACK NO.'S EQUAL ?
      RSS           YES 
      JMP CNOD      NO
      LDB ARG3      GET ADDR OF NEW NAME
      ADB D3
      JSB CKOPN     CHECK FOR DUPLICATE IN OPEN TABLE 
      RSS           NO DUPLICATE
      JSB ER2       DUPLICATE 
      LDB DEAD1     GET DIRECTORY ENTRY ADDR
      JMP CINAD 
CNOD  EQU * 
      LDB DEAD1     GET DIRECTORY ENTRY ADDR
      JSB CNGNM     CHANGE NAME 
      CLA,INA       WRITE 
      LDB PAKSC     SUBCHANNEL
      JSB PRWIO     WRITE NEW NAME
      JMP EFCON     RETURN
CNINC EQU *         CHANGE NAME IN CORE 
      LDB ARG3      ADDR. OF FILI NAME
      JSB CKOPN     CHECK IF FILE OPEN
      JSB ER3       NOT OPEN
      STB DEAD1     SAVE OPEN TABLE ENTRY ADDR
      ADB D10 
      LDA B,I       PACK NO.
      SZA           TEMP FILE?
      JSB ER3       NO
      LDB ARG3      GET ADDR OF NEW NAME
      ADB D3
      JSB CKOPN     DUPLICATE OPEN
      RSS           NO
      JSB ER2       YES 
      LDB DEAD1     GET DIRECTORY ENTRY ADDR
      JSB CNGNM     CHANGE NAME 
      JMP EFCON     RETURN TO MAIN
      SPC 1 
      SPC 1 
CNGNM NOP           CHANGE NAME 
      LDA MD2 
      STA MOVCT     NO. WDS. TO MOVE
      LDA ARG3      ADDR. OF SOURCE 
      ADA D3
      JSB MOVE      MOVE NAME 
      LDA A,I       3RD WD. OF NAME (SOURCE)
      AND H8BT      STRIP 5TH. CHAR.
      STA TCSTR 
      LDA B,I       3RD WD. OF DESTINATION
      AND L8BT      STRIP LO 8 BITS 
      IOR TCSTR 
      STA B,I       REPACK 3RD. WD. OF ENTRY
      JMP CNGNM,I   RETURN
TCSTR BSS 1         TEMP. STORAGE 
DEAD1 BSS 1         ADDR OF DIRECTORY ENTRY 
ADPNE DEF DPNE      ADDR OF DUMMY PACK NO. ENTRY
DPNE  BSS 4         DUMMY PACK NO. ENTRY
CFNEN BSS 1         ADDR OF OPEN TABLE ENTRY
APNSV BSS 1        ADDR OF PACK NO. 
      HED MISCEL. 
MOVE  NOP 
      JSB MASUB 
      DEC 1 
POST  NOP 
      JSB MASUB 
      DEC 2 
POSTW NOP 
      JSB MASUB 
      DEC 3 
CKVSU NOP 
      JSB MASUB 
      DEC 4 
NAM0? NOP 
      JSB MASUB 
      DEC 5 
CKPN  NOP 
      JSB MASUB 
      DEC 7 
SVPNS NOP 
      JSB MASUB 
      DEC 8 
CKNAP NOP 
      JSB MASUB 
      DEC 9 
SETD1 NOP 
      JSB MASUB 
      DEC 10
SETD2 NOP 
      JSB MASUB 
      DEC 11
GETDE NOP 
      JSB MASUB 
      DEC 12
REPNS NOP 
      JSB MASUB 
      DEC 13
CNPND NOP 
      JSB MASUB 
      DEC 15
GETPN NOP 
      JSB MASUB 
      DEC 17
CKOPN NOP 
      JSB MASUB 
      DEC 18
SRCD3 NOP 
      JSB MASUB 
      DEC 19
GTNPN NOP 
      JSB MASUB 
      DEC 20
CKCLM NOP 
      JSB MASUB 
      DEC 22
CMPAR NOP 
      JSB MASUB 
      DEC 23
CKPNT NOP 
      JSB MASUB 
      DEC 24
T.STS NOP 
      JSB MASUB 
      DEC 26
STT.S NOP 
      JSB MASUB 
      DEC 27
STZ   NOP 
      JSB MASUB 
      DEC 28
GRTXX NOP 
      JSB MASUB 
      DEC 29
PRETS NOP 
      JSB MASUB 
      DEC 34
PRWIO NOP 
      JSB MASUB 
      DEC 35
MPY   NOP 
      JSB MASUB 
      DEC 36
DIV   NOP 
      JSB MASUB 
      DEC 37
      SKP 
ER2   EQU * 
      OCT 0 
      LDA D2
      JSB ERR 
ER3   EQU * 
      OCT 0 
      LDA D3
      JSB ERR 
ER6   EQU * 
      OCT 0 
      LDA D6
      JSB ERR 
ER7   EQU * 
      OCT 0 
      LDA D7
      JSB ERR 
ER9   EQU * 
      OCT 0 
      LDA D9
      JSB ERR 
ER10  EQU * 
      OCT 0 
      LDA D10 
      JSB ERR 
ER11  EQU * 
      OCT 0 
      LDA D11 
      JSB ERR 
ER13  EQU * 
      OCT 0 
      LDA D13 
      JSB ERR 
ER15  EQU * 
      OCT 0 
      LDA D15 
      JSB ERR 
ER21  EQU * 
      OCT 0 
      LDA D21 
      JSB ERR 
ER23  EQU * 
      OCT 0 
      LDA D23 
      JSB ERR 
ER26  EQU * 
      OCT 0 
      LDA D26 
      JSB ERR 
ERR   NOP 
      LDB ERR 
      ADB MD3 
      LDB B,I       PICK UP LOC OF ERROR
      JMP ERROR 
      HED CONSTANTS AND VARIABLES 
A     EQU 0 
B     EQU 1 
.     EQU 53B 
L7BT  EQU 73B 
L8BT  EQU 74B 
H8BT  EQU 75B 
SCCNT EQU 156B
SYSSC EQU 155B
MXWPE DEC 9         WORDS/DIRECTORY ENTRY 
MD11  DEC -11 
MD10  EQU .-10
MD8   EQU .-8 
MD7   EQU .-7 
MD4   EQU .-4 
MD3   EQU .-3 
MD2   EQU .-2 
MD1   EQU .-1 
D1    EQU .+1 
D2    EQU .+2 
D3    EQU .+3 
D4    EQU .+4 
D5    EQU .+5 
D6    EQU .+6 
D7    EQU .+7 
D8    EQU .+8 
D9    EQU .+9 
D10   EQU .+10
D11   DEC 11
D12   DEC 12
D13   DEC 13
D14   DEC 14
D15   DEC 15
D21   DEC 21
D23   DEC 23
D26   DEC 26
D128  DEC 128 
B12   EQU D10       BINARY
B13   EQU D11       ASCII 
MAXRC DEC 32767     MAX. RECORD NO. 
AARG1 DEF ARG1
ARG1  OCT 0 
ARG2  OCT 0 
ARG3  OCT 0 
ARG4  OCT 0 
ARG5  OCT 0 
ARG6  OCT 0 
ARG7  OCT 0 
ARG8  OCT 0 
      END 
                                                  