ASMB,R,L,C HED (FMGR) SY.TR: SEARCH FOR PROGRAMS USING A DISC * NAME: SY.TR * SOURCE: 92071-18074 * RELOC: 92071-16074 * PGMR: M.L.K. * MOD: E.D.B. * * *************************************************************** * * (C) COPYRIGHT HEWLETT-PACKARD COMPANY 1980. ALL RIGHTS * * * RESERVED. NO PART OF THIS PROGRAM MAY BE PHOTOCOPIED, * * * REPRODUCED OR TRANSLATED TO ANOTHER PROGRAM LANGUAGE WITHOUT* * * THE PRIOR WRITTEN CONSENT OF HEWLETT-PACKARD COMPANY. * * *************************************************************** * NAM SY.TR,7 92071-1X074 REV.2041 800506 * ENT SY.TR * EXT .ENTR, CR.LU, .XLD EXT $ID#, $IDA, $IDSZ, $SWLU SUP SKP * * DESCRIPTION * * THIS ROUTINE SEARCHES THE ID SEGMENTS FOR ANY CURRENTLY * EXECUTING PROGRAMS USING THE SPECIFIED DISC. * IT ALSO TESTS FOR USE OF THE SYSTEM AND SWAP FILES. * A LIST OF ADDRESSES POINTING TO THE ID SEGMENT NAMES USING * THE DISC AND THE HIGHEST DISC ADDRESS IN USE IS RETURNED * * CALLING SEQUENCE: * * COUNT = SY.TR(DISC, ARRAY, ASIZE, TRACK, SECTR) * * WHERE: * * COUNT WILL BE THE NUMBER OF ACTIVE PROGRAMS ON DISC * * DISC IS THE DISC TO BE EXAMINED * * ARRAY WILL CONTAIN THE ID SEGMENT ADDRESSES * * ASIZE IS THE LENGTH OF ARRAY * * TRACK WILL BE THE TRACK ADDRESS OF LAST ACTIVE PROGRAM * * SECTR WILL BE THE SECTOR ADDRESS OF LAST ACTIVE PROGRAM SKP * * ENTRY * DISC NOP ARRAY NOP ASIZE NOP TRACK NOP SECTR NOP * SY.TR NOP JSB .ENTR SET UP PARAMETERS DEF DISC * CLA INITIALIZE STA CNT CLEAR CONFLICT COUNT CCA SET TRACK STA TRACK,I AND SECTOR STA SECTR,I TO -1 TO INDICATE NOT USED LDA ASIZE,I SET UP TO COUNT THE ENTRIES IN THE ARRAY CMA,INA SET IT NEGATIVE SSA,RSS IF IT WAS NEGATIVE OR 0 CCA SET IT TO 1 STA ASIZE NOW STORE IT * JSB CR.LU GO GET DISC LU DEF *+2 DEF DISC,I * SZA,RSS IF NOTHING FOUND, JMP SY.TR,I EXIT * STA DISC SAVE DISC LU JSB .XLD GET NUMBER OF ID SEGMENTS DEF $ID#+0 CMA,INA SET NEGATIVE FOR LOOP COUNTER STA LPCNT AND SAVE * JSB .XLD GET START OF ID SEGMENTS DEF $IDA+0 STA IDPTR AND SAVE * CLA,INA INITIALIZE STA IDSEG ID SEGMENT NUMBER * LOOP LDA IDPTR GET ID POINTER ADA .12 POINT TO NAME JSB .XLD GET FIRST WORD OF NAME DEF A,I SZA,RSS IF DORMANT (ZERO), JMP NEXT THEN GO TRY NEXT ENTRY * LDA IDPTR ADA .27 POINT TO LU IN ID SEGMENT JSB .XLD NOW GET IT DEF A,I AND B377 ISOLATE LU CPA DISC IF NOT ON SPECIFIED DISC, RSS JMP NEXT THEN GO TRY NEXT ENTRY * LDB IDSEG JSB STUFF PUT SEGMENT NUMBER INTO CONFLICT ARRAY * LDA IDPTR ADA .25 POINT TO ID WORD WITH SECTOR (WORD 26) JSB .XLD GET IT DEF A,I AND B377 ISOLATE SECTOR ADDRESS ALS AND CONVERT INTO BLOCKS STA TSECT SAVE FOR TEST * LDA IDPTR ADA .26 POINT TO MAIN TRACK WORD (WORD 27) JSB .XLD GET IT DEF A,I JSB HIEST UPDATE HIGHEST DISC ADDRESS * NEXT JSB .XLD GET ID SEGMENT SIZE DEF $IDSZ+0 ADA IDPTR BUMP ID SEGMENT POINTER STA IDPTR AND SAVE FOR NEXT ROUND ISZ IDSEG INCREMENT ID SEGMENT NUMBER ISZ LPCNT IF NOT FINISHED, JMP LOOP THEN GO CHECK NEXT ID SEGMENT SKP * * CHECK FOR SWAPPING AREA * JSB .XLD GET THE SWAPPING DISC'S LU DEF $SWLU+0 CPA DISC IF ON SPECIFIED DISC, CCB,RSS THEN SET B TO INDICATE SWAP AREA JMP TERM ELSE TERMINATE * JSB STUFF PUT SWAP INDICATOR IN THE ARRAY JSB .XLD GET SWAP SECTOR DEF $SWLU+1 STA TSECT SAVE FOR TEST JSB .XLD GET SWAP TRACK DEF $SWLU+2 JSB HIEST UPDATE HIGHEST DISC ADDRESS * * PUT TERMINATING 0 IN BUFFER * TERM CLB PUT TERMINATING 0 IN THE ARRAY JSB STUFF LDA CNT GET CONFLICT COUNT ADA N1 SUBTRACT 1 FOR TERMINATING ZERO JMP SY.TR,I AND EXIT SKP * * THIS ROUTINE TESTS PASSED DISC ADDRESSES (A = TRACK AND * TSECT = SECTOR) AND COMPARES THEM AGAINST TRACK,I AND SECTR,I. * IT THEN STORES THE HIGHEST DISC ADDRESS IN TRACK,I AND SECTR,I. * HIEST NOP LDB TRACK,I GET CURRENT TRACK CMB,INB SET IT NEGATIVE ADB A ADD THE NEW TRACK VALUE SSB POSITIVE OR NEGATIVE? JMP HIEST,I NEGATIVE, SO EXIT * SZB,RSS SAME TRACK? JMP SECTS YES, TEST SECTOR * STA TRACK,I NEW TRACK IS GREATER SO STORE IT * LDA TSECT AND STORE NEW SECTOR STA SECTR,I JMP HIEST,I EXIT * SECTS LDA TSECT GET NEW SECTOR LDB SECTR,I GET CURRENT SECTOR CMB,INB MAKE IT NEGATIVE ADB A SUBTRACT CURRENT FROM NEW SECTOR SSB,RSS IF THE NEW SECTOR GREATER OR EQUAL? STA SECTR,I THEN SAVE IT JMP HIEST,I EXIT SKP * * THIS ROUTINE ADDS THE CONTENTS OF THE B REGISTER TO THE * USER'S ID ARRAY. * STUFF NOP ISZ CNT INCREMENT CONFLICT COUNT LDA ASIZE GET THE REMAINING ARRAY SIZE SZA,RSS IF ARRAY FULL, JMP STUFF,I THEN EXIT * INA INCREMENT THE COUNT STA ASIZE AND SAVE FOR NEXT TIME STB ARRAY,I STORE B INTO ARRAY ISZ ARRAY AND POINT TO NEXT ENTRY JMP STUFF,I RETURN SKP * * STORAGE * N1 DEC -1 * .12 DEC 12 .25 DEC 25 .26 DEC 26 .27 DEC 27 * B377 OCT 377 * LPCNT NOP LOOP COUNTER IDPTR NOP ID SEGMENT ADDRESS POINTER IDSEG NOP ID SEGMENT NUMBER CNT NOP CONFLICT COUNT * TSECT NOP TEST SECTOR * A EQU 0 B EQU 1 * END EQU * * END