ASMB
  HED  TRANSACTION SPECIFICATION MEMORY MANAGEMENT SUBROUTINE 
      NAM TSMG,7  92080-16530 REV.2026  800506  
  SPC 2 
*     NAME:    TSMG      TS MEM. MANAGEMENT MODULE
*     SOURCE:  &TSMG'    92080-18531
*     BINARY:  %TSMG'    ----NONE---    PART OF  %TSMG  92080-16530 
* 
*     PGMR:   FRANCOIS GAULLIER 
      SPC 2 
*     **************************************************************
*     * (C) COPYRIGHT HEWLETT-PACKARD COMPANY 1979.  ALL RIGHTS    *
*     * RESERVED.  NO PART OF THIS PROGRAM MAY BE PHOTOCOPIED, RE- *
*     * PRODUCED, OR TRANSLATED TO ANOTHER PROGRAM LANGUAGE WITH-  *
*     * OUT THE PRIOR WRITTEN CONSENT OF HEWLETT-PACKARD COMPANY.  *
*     **************************************************************
   SKP
* 
*     THIS PROGRAM IS A PART OF THE:
* 
*                      DATA CAPTURE SOFTWARE
*                        ( D A T A C A P )
* 
*     IT USES FEATURES OF THE TERMINAL MONITOR SOFTWARE (TMS).
* 
*     THIS MODULE: TSMG IS A T.U.S. OF THE TMP
*                   (TRANSACTION MONITOR PROGRAM) 
* 
*            TSMG MANAGE THE MEMORY (ALLOCATION/DEALLOACTION) FOR 
*            ALL THE TRANSATION SPECIFICATIONS (THE WORKING SET)
*            OF A TMP COPY. TSMG ALSO RETURN A STATE OF A TRANSACTION 
*            SPECIFICATION WHEN 'ZTMP' NEED IT. 
* 
* 
*     PARAMETERS ARE IN THE 2ND COMMON BLOCK: 
* 
*       TSNUM     T.S. NUMBER 
*       SQUAL     STATE QUALIFIER 
*       J         STATE INDEX 
*       ERRCD     STATUS RETURNED TO CALLING PROGRAM
*       STATE(38) BUFFER TO RETURN THE STATE PARAMETERS 
*       STLEN     STATE LENGTH RETURNED TO THE USER 
* 
*     SQUAL = -1   DELETE A TRANS. SPEC. FROM THE WORKING SET 
*                  THE TS# MUST BE DEFINED IN 'TSNUM' AND BE NEGATIVE 
*                  THE HEADER IS RETURN TO TE CALLER INTO STATE 
*             -2   ADD A TRANS. SPEC. TO THE WORKING SET
*                  TS (5 WORDS) IS DEFINED IN STATE[1:5]
*                  MEDIA (4 WORDS) IS DEFINED IN STATE[6:9] 
*             -3   LOAD ALL TRANS. SPEC. CONTAINED ON THE MEDIA 
*             -4   GET DIRECTORY FOR LISTING PURPOSE
*                  STATE(1) IS THE FIRST ENTRY NUMBER RETURNED
*            -10   RETURN HEADER OF THE 1ST NEGATIVE TS # 
*            -11   SET THE TS# FORM NEGATIVE TO POSITIVE OR VICE VERSA
*                  TO MAKE THAT TS ACCESSIBLE OR NOT FORM THE 
*                  DATACAPTURE TERMINALS. 
*                  'TSNUM' IS SET WITH THE TS#
* 
*           >      ---> SQUAL IS DEFINED ON BIT 7-0 ONLY
*                  DEPENDING ON THE VALUE OF BIT 8 (0/1), THE STATE 
*                  WILL BE MOVE FROM FROM/TO 'TSMG' TO/FROM THE CALLER
* 
*              0   SEARCH STATE QUAL. = 0 AND STATE INDEX = J 
*              1   SEARCH STATE QUAL. = 1 AND STATE INDEX = J 
*              2   SEARCH STATE QUAL. = 2 AND STATE INDEX = J 
*             10   OPEN A T.S.
*                  TS (5 WORDS) IS DEFINED IN STATE[1:5]
*                  'TSNUM' IS SET WITH THE TS#
*             11   CLOSE A T.S. 
*             12   OPEN A T.S. FOR THE STORAGE
*             13   CLOSE A T.S. FOR THE STORAGE 
* 
*     ERRCD =  0   OPERATION SUCCESFULLY EXECUTED 
*            NOT 0 DEFINE THE TYPE OF THE ERROR.
* 
* 
***********************************************  F. GAULLIER  (HPG)  ***
* 
  HED  WORKING STORAGE DESCRIPTIONS 
* 
*                        ***********************
*  ADDRESS     --------->*                     *
*              !         *                     *
*    !     F   !         *                     *
*    !     O   !         *                     *
*    !     R   !         *    TR. SP.    A     *
*    !     M   !         *                     *
*    !         !         *                     *
*    !         !         *                     *
*    ! +   S   !         *                     *
*    !     P   !         ***********************
*    !     E   !  ------>*                     *
*    !     C   !  !      *                     *
*    !     I   !  !      *                     *
*    !     F   !  !      *    TR. SP.    C     *
*  \ ! /   I   !  !      *                     *
*   \!/    C   !  !      *                     *
*    .     A   !  !      *                     *
*          T   !  !      ***********************
*          I   !  !  --->*                     *
*          O   !  !  !   *                     *
*          N   !  !  !   *                     *
*          S   !  !  !   *    TR. SP.    B     *
*              !  !  !   *                     *
*              !  !  !   *                     *
*              !  !  !   *                     *
*              !  !  !   ***********************
*              !  !  !   *          !          *<-----  FWA 
*              !  !  !   *          !          *
*              !  !  !   *         \!/         *
*              !  !  !   *          .          *
*              !  !  !   *                     *
*              !  !  !   *   AVAILABLE         *   LENWS = LWA - FWA + 1
*              !  !  !   *          SPACE      *
*              !  !  !   *                     *
*              !  !  !   *          .          *
*              !  !  !   *         /!\         *
*              !  !  !   *          !          *
*              !  !  !   *          !          *<-----  LWA 
*              !  !  !   ***********************
*          D   !  !  !   * "IN USE"  COUNTER   *
*          I   !  !  ----+ POINTER TO T.S. B   *
*          R   !  !      * T.S. # OF T.S. B    *
*          E   !  !      ***********************
*          C   !  !      * "IN USE"  COUNTER   *
*          T   !  -------+ POINTER TO T.S. C   *
*          O   !         * T.S. # OF T.S. C    *
*          R   !         ***********************
*          Y   !         * "IN USE"  COUNTER   *
*              ----------+ POINTER TO T.S. A   *
*                        * T.S. # OF T.S. A    *
*                        ***********************
*                                               <-----  .DIRE 
* 
  HED TRANSACTION SPECIFICATIONS MANAGEMENT SUBROUTINE
      ENT TSMG
      EXT .ENTR,&MVW,EXEC,TMDFN,TMPZ,TMSOP
      EXT TSRD
  IFZ 
      EXT DBUGR 
D21   DEC 21
  XIF 
* 
A     EQU 0 
B     EQU 1 
D1    DEC 1 
D35   DEC 35
      SUP 
  SPC 2 
      COM TSNUM,SQUAL,J,ERRCD,STLEN,STATE(90) 
      COM .COM. 
* 
MEDIA EQU STATE+5 
  SPC 3 
TSMG  NOP 
      JSB .ENTR 
      DEF TSMG
* 
* 
  SPC 2 
  IFZ 
      JSB DBUGR 
      DEF *+2 
      DEF D21 
  XIF 
  SPC 2 
      CLA,RSS 
      JMP TSMG0 
      STA *-2       CLEAR FIRST TIME FLAG 
* 
      JSB EXEC
      DEF *+3 
      DEF D22 
      DEF D3        SWAP THE WHOLE PARTITION
  SPC 1 
*     EXT COR.A 
*   XEQT  EQU 1717B 
*   AVMEM EQU 1751B 
*   BGLWA EQU 1777B 
* 
*     LDA XEQT      GET ID SEG ADDR 
*     JSB COR.A     GET FWA 
*     STA FWA 
*     CMA,INA 
*     LDB BGLWA     GET BACKGROUND LWA
*     ADA AVMEM     CHECK IF PROGRAM RUN IN FORGR./BACKGR.
*     SSA,RSS       FOREGROUND ?
*     LDB AVMEM     YES, USE FORGROUND LWA
*     ADB DM2 
*     LDA FWA       B=LWA 
*     CMA,INA 
*     INA 
*     STB .DIRE 
*     ADB DM1 
*     STB LWA 
*     ADA B 
*     STA LENWS 
  SPC 2 
      JSB EXEC      MEMORY SIZE REQUEST 
      DEF *+5 
      DEF D26 
      DEF FWA       FIRST WORDS AVAILABLE 
      DEF LENWS     # OF WORDS AVAILABLE
      DEF TEMP1     PARTITION LENGTH
* 
      LDB FWA       RECALL 1ST WORD AVAIL.
      ADB LENWS     TO INTIT DIRECTORY POINTER
      STB .DIRE 
      ADB DM1 
      STB LWA 
  SPC 2 
TSMG0 JSB TMDFN     LINK WITH TMS 
      DEF *+6 
      DEF TSNUM     NO CB # 0 
      DEF TSNUM     NO CB # 1 
      DEF TSNUM     NO CB # 2 
      DEF TSNUM     CB # 3
      DEF .COM.     CB END
  SPC 2 
      CCB           SET 'MEDIA OPEN FLAG' TO
      STB MDOPN     MEDIA IS CLOSE
* 
      LDA SQUAL     GET THE STATE QUALIFIER 
      SSA           IS IT TO ACCESS OR ADD/DELETE OPERATION 
      JMP CHANG     ADD / DELETE OPERATIONS 
      AND RBYTE     ISOLATE SQUAL 
      CPA D10       OPEN A TRANSACTION SPECIFICATION ?
      JMP TSOPN     YES 
      ALF,RAL       IT IS A STATE QUALIFIER 
      IOR J         MERGE WITH STATE INDEX
      STA TEMP2 
* 
      LDA TSNUM     SEARCH IN DIRECTORY 
      JSB DIREC 
      JMP NOTIN     TRANSACTION NOT PRESENT, ERROR = -1 
* 
      LDA SQUAL     RECALL STATE QUALIFIER
      AND RBYTE     ISOLATE SQUAL 
      CPA D11       CLOSE A TRANSACTION SPECIFICATION ? 
      JMP TSCLS     YES 
      CPA D12       OPEN FOR STORAGE ?
      JMP OPENS 
      CPA D13       CLOSE FOR STORAGE 
      JMP CLOSS     YES 
  SPC 2 
      LDX PTFOM     NOW, SEARCH A SPECIFIC STATE
      DSX 
      LDB LENB1 
      INB 
NEXST STB A 
      LBX B,I       GO TO NEXT LINK 
      SZB,RSS       END OF TRANSACTION ?
      JMP NOSQ      YES, STATE & INDEX NOT FOUND. 
      INA 
      STA TEMP1 
      LAX A,I       GET  SQ & J 
      AND RBYTE 
      CPA TEMP2     IS IT THIS STATE ?
      RSS           YES, RETURN STATE PARAMETERS TO USER
      JMP NEXST     NO, LOOP UNTIL END OF TRANSACTION 
  SPC 1 
      LDA TEMP1     SETUP TO MOVE THE STATE VECTOR
      CMA,INA 
      ADA B 
* 
* 
      STA STLEN     WORD COUNT FOR THE STATE
      ADA =D-81 
      SSA,RSS 
      JMP INTER     INTERNAL ERROR !! 
      CCA 
      ADA TEMP1 
* 
MVSTA ADA PTFOM     ABSOLUTE ADDR OF THIS STATE 
      LDB SQUAL     MOVE DATA FROM/TO 'TSMG'
      CLE,SSB       NEGATIVE SQUAL ?
      JMP MVST3     YES, ALWAYS FROM 'TSMG' 
      BLF,BLF       TO/FROM CALLER
      ERB           SET MOVE SENSE INTO E REG.
MVST3 LDB .STAT     GET TO ADDR 
* 
      SEZ 
      SWP 
      MVW STLEN 
* 
* 
      JMP EXIOK     RETURN WITH GOOD STATUS 
* 
* 
  SPC 2 
NOSQ  JMP WSOVF     ERROR = -2
RBYTE OCT 377 
  HED OPEN / CLOSE A TRANSACTION SPECIFICATIONS 
TSOPN JSB SRCTS     SEARCH THE TS IN THE WORKING SET
      ISZ B,I       BUMP 'IN USE' COUNTER 
* 
TSOP4 LDA B,I       GET 'IN USE' COUNTER
      ADB D2        TO GET THE TS#
      LDB B,I 
      STB TSNUM     SET 'TSNUM' VARIABLE
      LDX J         GET DATACATURE TERMINAL LU
      SBX .LUTB     AND SAVE TS# INTO LUTABLE 
      STA J         RETURN THE 'IN USE' COUNTER 
* 
      LDB LENB1 
      ADB DM1 
      STB STLEN     SAVE LENGTH FOR THE MOVE
      INB           LEAVE ROOM FOR THE LU COUNT 
      ADB .STAT     --> ABSOLUTE ADDR 
      CLE,ELB       --> BYTE ADDR 
      STB TEMP1 
* 
      LDX D63       RETURN ALL LU USING THIS TS#
TSO10 LAX .LUTB 
      CPA TSNUM     TS # COMPARE ?
      RSS           YES 
      JMP TSO15     NO, GO TO NEXT LU 
      CXA           STORE THAT LU INTO STATE
      SBT           AS A BYTE 
TSO15 DSX           END OF LU TABLE ? 
      JMP TSO10     NO, CONTINUE
* 
      LDA TEMP1     YES, CALCULATE THE NUMBER 
      CMA,INA       OF LU USING THIS TS 
      ADA B         AND STORE IN INTO  STATE(STLEN+1) 
      LDX STLEN 
      SAX .STAT,I 
* 
      CLA,INA 
      JMP MVSTA     PERFORM THE MOVE. 
* 
LENB1 DEC 37
  SPC 2 
TSCLS CLA           CLOSE THE TRANSACTION 
      LDX J         CLEAR THE TS# INTO THE LU TABLE 
      SAX .LUTB 
      CCA           DECREMENT THE 
CLOS2 ADA B,I       "IN USE" COUNTER, 
      STA B,I       B WAS SET BY DIREC SUBROUTINE !!
      JMP EXIOK     RETURN WITH GOOD STATUS 
* 
OPENS LDA =B400     (+1) ON LEFT BYTE 
      JMP CLOS2 
CLOSS LDA =B177400  (-1) ON LEFT BYTE 
      JMP CLOS2 
  SPC 2 
TEMP1 NOP 
TEMP2 NOP 
D5    DEC 5 
D10   DEC 10
D11   DEC 11
D12   DEC 12
D13   DEC 13
D26   DEC 26
D63   DEC 63
DM2   DEC -2
* 
.LUTB EQU * 
      REP 64
      DEC 0 
  HED   LOAD / ADD   TRANSACTION SPECIFICATIONS PROCESS 
CHANG CPA =D-1      DELETE A TS FORM THE WORKING SET ?
      JMP DEL       YES 
      CPA =D-4      GET DIRECTORY OF THE WORKING SET ?
      JMP DIR       YES 
      CPA =D-10     GET 1ST NEG TS # ?
      JMP SRHNG     YES 
      CPA =D-11     MAKE THIS TS ACCESSIBLE ? 
      JMP CHTSN     YES 
  SPC 3 
*     DETAILS OF THE  LOAD-A-TRANSACTION-SPECIFICATIONS LIBRARY 
  SPC 1 
*     1)  READ IN TRANSACTION SPECIFICATIONS USING 'TSRD' PROGRAM 
*         OPTION:  MAXIMUM BUFFER LENGTH FOR BINARY RECORD
*                  REWIND MEDIA 
*     2)  MOVE LIBRARY NAME INTO THE TS HEADER. 
*     3)  SET MEDIA DESCRIPTOR TO NOT REWIND IT NEXT TIME 
*     4)  CHECK IF THIS TRANSACTION IS NOT ALREADY IN THE WORKING SET 
*     5)  ADD A DIRECTORY ENTRY IN THE TRANSACTION DIRECTORY
*     6)  UPDATE POINTER TO AVAILABLE SPACE 
*           ( FWA , LWA , LENWS ) 
*     7)  IF NOT THE END-OF-FILE  GOTO STEP 1.
*     8)  RETURN GOOD STATUS TO THE CALLING PROGRAM.
  SPC 3 
LD00  LDA LENWS     GET FREE SPACE LEN
      ADA =D-20     SECURITY !
      SSA 
      JMP WSOVF     WORKING SET OVERFLOW
      STA INDIC 
* 
  SPC 1 
I/O   JSB TSRD      READ THE TRANSACTION SPECIFICATION
      DEF *+10
.MEDI DEF MEDIA     MEDIA 
      DEF INDIC     MAXIMUM LENGTH
      DEF IST       STATUS RETURNED HERE
.STAT DEF STATE     TS NAME / NUMBER / SC 
      DEF FWA,I     BUFFER ADDR FOR BINARY
      DEF SOUBU     BUFFER ADDR FOR SOURCE (11 WORDS ONLY)
      DEF IDCB      IDCB BUFFER 
      DEF IHD       BUFFER FOR HEADER 
      DEF IMODE     MODE 0
* 
*  CHECK TO SEE IF DEVICE WAS 'NOT READY' 
* 
      STA ASAVE 
      STB BSAVE 
      STX XSAVE 
      STY YSAVE 
      JMP STCK
* 
ASAVE NOP 
BSAVE NOP 
XSAVE NOP 
YSAVE NOP 
* 
STCK  LDA IST 
      CPA DM99
      JMP IONR
      JMP IOOK
* 
*  I/O WAS NO GOOD
* 
IONR  LDA MEDIA 
      STA MESG+4
      LDA MEDIA+1 
      STA MESG+5
      JSB TMSOP 
      DEF *+5 
      DEF D2
      DEF D1
      DEF MESG
      DEF MSGLN 
* 
*  PAUSE FOR 10 SEC AND TRY AGAIN 
* 
      JSB TMPZ
      DEF *+2 
      DEF D1000 
      JMP I/O 
* 
*  DATA AND MESSAGES
* 
DM99  DEC -99 
MESG  ASC 12,/TSMG:  XXXX NOT READY!
MSGLN DEC -24 
D1000 DEC 1000
* 
*  I/O WAS OK 
* 
* 
IOOK  LDA ASAVE 
      LDB BSAVE 
      LDX XSAVE 
      LDY YSAVE 
      CLB           SET 'MEDIA OPEN FLAG' TO
      STB MDOPN     MEDIA IS OPEN.
  SPC 1 
      LDA MEDIA     RESET THE LIBRARY NAME TO POSITIVE
      SSA           TO STORE LIBNAME INTO TS HEADER 
      CMA,INA 
      STA MEDIA 
* 
* 
      CLA           RESET THE ERROR FLAG IN THE TS HEADER 
      JSB STER. 
      INB           MOVE THE LIBRARY NAME INTO THE TS 
      LDA .MEDI     HEADER WHERE IT SUPOSE TO BE
      MVW D4
* 
      LDA IST       RECALL 'TSRD' STATUS
      SZA 
      JSB ER        ERROR ! 
* 
      LDA MEDIA     RECALL FIRST WORD OF MEDIA
      SSA,RSS       AND MAKE IT NEGATIVE TO NOT 
      CMA,INA       OPEN OR REWIND THE MEDIA
      STA MEDIA 
* 
      LDA FWA       RECALL THE TS# OF THE TS JUST LOADED
      ADA D4
      LDA A,I 
      CMA,INA       MAKE IT NEGATIVE, SO NOBODY CAN ACCESS IT 
      STA FNUM      SET TS# FOR THE DIRECTORY 
      CMA,INA       SET IT POSITIVE AGAIN TO SEARCH FOR DUPLICATE 
      JSB DIREC     IS THIS TS ALREADY IN THE WORKING SET ? 
      JMP LD090     NO, NO DUPLICATE, CONTINUE
* 
      LDA =D-3      YES, SET ERROR INTO THE TS HEADER 
      JSB STER.     AND CONTINUE
   SPC 2
LD090 LDB FWA       UPDATE WORKING STORAGE POINTER
      LDY LWA       AND DIRECTORY.
      ADB FWA,I     ADD T.S. LENGTH 
      LDA FNUM      RECALL T.S. # 
      SAY 0B        PUT T.S. # IN DIRECTORY 
      DSY 
      LDA FWA       RECALL ADDRESS OF THE T.S. IN BUFFER
      SAY 0B        PUT T.S. ADDR IN DIRECTORY
      DSY 
      CLA 
      SAY 0B        CLEAR "IN USE" COUNTER
      DSY 
EXIT2 STB FWA       SAVE NEW START OF WORKING STORAGE 
      STY LWA       SAVE NEW END OF WORKING STORAGE 
      CMB,INB 
      ADB LWA       COMPUTE NEW LENGTH OF THE WORKING STORAGE 
      INB 
      STB LENWS     SAVE NEW LENGTH OF WORKING STORAGE
      LDA SQUAL 
      CPA =D-3      IS IT THE LOAD REQUEST ?
      JMP LD00      YES, CONTINUE TO ADD TRANSACTION SPEC.
      CPA =D-1      IS IT THE DELETE REQUEST ?
      JMP EXIOK     YES, EXIT 
* 
CLSMD JSB CLMED     CLOSE MEDIA 
      JMP CLSER     CLOSE MEDIA ERROR RETURN
      JMP EXIOK 
  SPC 2 
CLMED NOP           CLOSE THE MEDIA IF IT WAS OPEN
      LDA MDOPN     RECALL MEDIA OPEN FLAG
      SZA           OPEN ?
      JMP CLME7     NO, DON'T CLOSE IT
      JSB TSRD      YES, CLOSE THE MEDIA
      DEF *+10
      DEF MEDIA     MEDIA 
      DEF D3        CLOSE REQUEST 
      DEF IST       STATUS RETURNED HERE
      DEF *         DUMMY 
      DEF SOUBU     DUMMY BIN BUFFER
      DEF SOUBU     DUMMY SOURCE BUFFER 
      DEF IDCB      IDCB BUFFER 
      DEF IHD       HEADER INFO (NEVER RETURNED)
      DEF IMODE     MODE 0
      CCB           CLEAR 'MEDIA OPEN FLAG' 
      STB MDOPN 
* 
      LDA IST       RECALL STATUS 
      SZA,RSS 
CLME7 ISZ CLMED     YES, RETURN P+2 
      JMP CLMED,I 
* 
MDOPN NOP           OPEN MEDIA FLAG 
   SPC 1
EXIOK CLA           RETURN GOOD STATUS TO CALLING PROGRAM.
EXIT  STA ERRCD 
      JSB CLMED     CLOSE MEDIA IF NECESSARY
      NOP           ERROR RETURN
      JMP TSMG,I
  SPC 1 
* 
*     TSRD (TRANSACTION SPECIFICATION LIBRARY READ) ERROR 
* 
ER    NOP 
      CPA D2        END OF FILE ? 
      JMP EOF 
      CPA D3        WS OVERFLOW ? 
      JMP WSOVF 
      CPA D7        SECURITY CODE ERROR ? 
      JMP ER.SC 
      CPA D8        LIBRARY UP TO DATE ?
      JMP BADLB     NO
      CPA D4        ILLEGAL PARAMETERS ?
      JMP INTER     YES, INTERNAL ERROR 
      JMP BADMD     ILLEGAL MEDIA 
* 
ER.SC LDA =D-6      SET ERROR INTO TS HEADER
      JSB STER.     AND CONTINUE
      JMP ER,I
* 
  SPC 2 
STER. NOP           STORE ERROR CODE
      LDB FWA       INTO THE WORD 16 OF THE HEADER
      ADB =D15
      STA B,I 
      JMP STER.,I 
  SPC 2 
FWA   DEF WS        FWA OF AVAILABLE SPACE
LWA   DEF .WSE-1    LWA OF AVAILABLE SPACE
LENWS ABS .WSE-WS   (LWA - FWA + 1)  AVAILABLE SPACE LENGTH 
.DIRE DEF .WSE      END OF DIRECTORY ADDR + 1 
  SPC 3 
FNUM  NOP 
INDIC NOP 
IST   NOP 
SOUBU BSS 11
IDCB  BSS 144 
* 
D2    DEC 2 
D3    DEC 3 
D4    DEC 4 
D7    DEC 7 
D8    DEC 8 
IHD   BSS 15
IMODE DEC 0 
   HED DELETE  A TRANSACTION SPECIFICATIONS PROCESS 
*     DETAILS OF THE  DELETE-A-TRANSACTION-SPECIFICATIONS  OPERATION
  SPC 1 
*     1)  CHECK THAT 'TSNUM' DEFINE THE TS# AND IS A NEGATIVE NUMBER
*     2)  CHECK THAT THIS TS IS IN THE WORKING SET
*     3)  CHECK THAT THE TS IS NOT 'IN USE' 
*     4)  SUPPRESS THE ENTRY IN THE TS DIRECTORY
*     5)  REPACK THE WORKING SET MEMORY TO SUPPRESS THIS TS 
*           AND RETREIVE THE MEMORY SPACE 
*     6)  UPDATE IN, ALL NEEDED DIRECTORY ENTRY, THE POINTER TO 
*           THE TS TO REFLECT THE CHANGE
*     7)  UPDATE POINTER TO AVAILABLE SPACE 
*           ( FWA , LWA , LENWS ) 
*     8)  RETURN GOOD STATUS TO THE CALLING PROGRAM.
  SPC 3 
DEL   LDA TSNUM     GET THE TS# 
      SSA,RSS       IS IT OK ?
      JMP INTER     NO, IT MUST BE NEG. (ERROR # -15) 
      JSB DIREC     YES, SEARCH IN DIRECTORY
      JMP NOTIN     T.S. NOT FOUND
      SZA           T.S. FOUND, IS IT "IN USE" ?
      JMP INUS      YES, DELETE IS NOT ALLOWED. 
      CMB,INB       NO, SETUP TO REPACK THE DIRECTORY 
      ADB LWA 
      INB           NEGATIVE WORD COUNT 
      STB DEL3
* 
      LDA PTFOM     DELETE WILL BE PERFORMED, RETURN
      INA           THE TS HEADER TO THE CALLER 
      LDB LENB1     GET HEADER LENGTH 
      ADB DM1 
      STB STLEN 
      LDB .STAT 
      MVW STLEN 
* 
      LDB DEL3      RECALL LENGTH AFTER THIS TS 
      SZB,RSS       IS THAT THE LAST T.S. IN ?
      JMP DEL9      YES, SPECIAL AND EASY CASE
  SPC 1 
      LDA LWA 
      INA 
      LDB A 
      ADB D3        SET FROM & TO ADDR
      JSB &MVW      MOUVE WORD BACKWORD 
DEL3  NOP 
      INA 
      LDA A,I       GET ADDR OF NEXT T.S. (FROM ADDR) 
      INB           SAVE FIRST ADDR. OF T.S. POINTER
      STB DIREC     TO NOT UPDATE.
      LDB PTFOM,I   GET OLD T.S. LENGTH 
      CMB,INB 
      STB TEMP      AND SAVE NEG LENGTH 
      LDB A         COMPUTE LENGTH TO MOUVE 
      CMB,INB 
      ADB FWA 
      STB DEL3
      LDB PTFOM     GET TO ADDR 
      MVW DEL3      REPACK T.S. BUFFER
* 
      LDB LWA       NOW UPDATE T.S. POINTER WORD IN THE 
      ADB D2        DIRECTORY 
DEL5  ADB D3
      CPB DIREC     END OF UPDATE FIELD ? 
      JMP DEL7      YES, GOTO FINISH THE DELETE PROCESS 
      LDA B,I       NO, UPDATE POINTER
      ADA TEMP      SUSTRACTING THE DELETE T.S. LEN 
      STA B,I 
      JMP DEL5      LOOP UNTIL END OF UPDATE FIELD
   SPC 1
DEL7  LDB TEMP
      ADB FWA       COMPUTE NEW  FWA
DEL8  LDY LWA 
      ADY D3        COMPUTE NEW LWA 
      JMP EXIT2     AND RETURN TO CALLER
* 
DEL9  LDB PTFOM     THIS IS THE NEW FWA 
      JMP DEL8      RETURN
  SPC 2 
BIT15 OCT 100000
  HED GET TRANSACTION SPECIFICATIONS DIRECTORY PROCESS
********************  SQUAL = -4  ************************************
*                                                                    *
*     RETURN INFORMATION TO 'TSE' TO PRINT OUT THE DIRECTORY.        *
*                                                                    *
*     STATE(1) = THE FIRST ENTRY # THAT WILL BE RETURNED.            *
*                (1ST IS 0)                                          *
*     THE NUMBER OF ENTRIES RETURNED TO 'TSE' IS IN 'STLEN',         *
*     0 INDICATE THAT THE ENTIRE DIRECTORY HAS BEEN TRANSFERED.      *
*     THE INFORMATION RETURNED IN 'STATE' HAS THE FOLLOWING FORMAT:  *
*     (10 WORDS PER DIRECTORY ENTRY)                                 *
*        STATE[N:N]       'IN USE' COUNTER.                          *
*        STATE[N+1:N+5]   TS NAME / NUMBER / SC                      *
*        STATE[N+6:N+9]   LIBRARY NAME / CR#                         *
*                                                                    *
**********************************************************************
  SPC 2 
DIR   LDA =D-3      TRANSFERT ONLY 3 DIRECTORY ENTRIES AT 
      STA TEMP1     A TIME. 
      LDA STATE     RECALL THE FIRST ENTRY NUMBER 
      MPY D3        TO COMPUTE THE DIRECTORY POINTER
      CMA,INA 
      ADA .DIRE 
      ADA DM1 
      STA TEMP      SAVE THE INITIAL DIRECTORY POINTER
      LDB .STAT     INITIALISE THE TO POINTER 
      INB           SKIP THE FIRST WORD 
  SPC 1 
DIR03 CPA LWA       END OF DIRECTORY ?
      JMP DIR05     YES, RETURN 
      ADA DM2       NO, PRESET A
      STA TEMP2     AND SAVE DIRECTORY POINTER
      LDA A,I       GET IN USE COUNTER
      STA B,I       AND STORE IT INTO STATE TO PASS IT
      INB 
      LDA TEMP2     RESTORE A 
      INA 
      LDA A,I       GET TRANS. SPEC. ADDR 
      INA           SKIP TS LENGTH
      MVW D5        AND MOVE TS NAME, NUMBER & SC 
      ADA D10       SKIP GARBAGE
      MVW D4        AND MOVE LIBRARY NAME 
      LDA TEMP2     RESTORE DIRECTORY POINTER 
      ADA DM1 
      ISZ TEMP1     TRANSFERT MORE ENTRY ?
      JMP DIR03     YES, CONTINUE 
* 
DIR05 CMA,INA       NO, COMPUTE THE NUMBER OF ENTRY 
      ADA TEMP      TRANSFERED AND RETURN 
      CLB 
      DIV D3        BACK INTO NUMBER OF ENTRY 
      SZB 
      JMP INTER 
      STA STLEN     SET THE NUMBER OF ENTRY TRANSFERED
      JMP EXIOK     AND RETURN
  HED SPECIAL LOAD/ADD UILITY REQUEST 
********************  SQUAL = -10  ***********************************
*                                                                    *
*     SRHNG  RETURNS THE HEADER OF THE FIRST NEGATIVE TS# FOUND IN   *
*     THE DIRECTORY. IT IS USE DURING THE ADD/LOAD A TS PROCESS.     *
*                                                                    *
**********************************************************************
  SPC 2 
SRHNG CLA           RESET DATACAPTURE TERMINAL LU 
      STA J 
      LDB .DIRE     SEARCH THE FIRST NEG TS#
SRH03 ADB DM1 
      CPB LWA       END OF DIRECTORY ?
      JMP NOTIN     YES, RETURN ERROR -1
      LDA B,I       GET TS# 
      ADB DM2       PRESET DIRECTORY POINTER
      SSA,RSS       NEGATIVE NUMBER ? 
      JMP SRH03     NO, CONTINUE THE SEARCH 
      INB           YES, RETREIVE TS SPEC.
      LDA B,I 
                                                                                                                                                                                                                    