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