ASMB,R,L,C * NAME: SY.TR * SOURCE: 92070-18074 * RELOC: 92070-16074 * PGMR: M.L.K. * * *************************************************************** * * (C) COPYRIGHT HEWLETT-PACKARD COMPANY 1979. 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 92070-1X074 REV.1941 790709 * * * THIS ROUTINE SEARCHES THE ID SEGMENTS FOR ANY CURRENTLY * USING THE DISC PASSED AS A PARAMETER. IT ALSO TESTS THE * LOCATION OF THE SYSTEM FILE AND THE SWAP AREA. IT RETURNS * A LIST OF ADDRESSES POINTING TO THE ID SEGMENT NAMES USING * THE DISC AND THE HIGHEST DISC ADDRESS IN USE. * SKP ENT SY.TR EXT .ENTR,CR.LU,$ID#,$IDA EXT $IDSZ,$SWLU SUP SPC 3 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 LDA $ID# GET NUMBER OF ID SEGMENTS CMA,INA SET NEGATIVE FOR LOOP COUNTER STA LPCNT AND SAVE LDB $IDA GET START OF ID SEGMENTS STB IDPTR AND SAVE * LOOP ADB .27 POINT TO LU IN ID SEGMENT LDA B,I NOW GET IT AND B377 AND ISOLATE LU CPA DISC THE ONE WE ARE LOOKING FOR? RSS YES, SKIP JMP NEXT NO, GO TRY THE NEXT ONE * ADB N15 BACK UP TO NAME AND PUT ITS ADDRESS LDA B,I GET NAME SZA,RSS ZERO (NO PROGRAM)? JMP NEXT YES, SKIP THIS ID SEGMENT JSB STUFF IN THE ARRAY BECAUSE IT CONFLICTS SECT ADB .13 POINT TO ID WORD WITH SECTOR (26) LDA B,I GET SECTOR AND B377 AND ISOLATE IT ALS SHIFT FOR LOGICAL SECTORS INB POINT TO MAIN TRACK WORD (27) LDB B,I AND GET IT JSB HIEST UPDATE HIGHEST DISC ADDRESS * NEXT LDB IDPTR GET CURRENT ID POINTER ADB $IDSZ AND INCREMENT TO THE NEXT ID SEGMENT STB IDPTR SAVE FOR NEXT ROUND ISZ LPCNT ARE WE DONE? JMP LOOP NO, CHECK NEXT ID SEGMENT * * CHECK FOR SWAPPING AREA * LDA $SWLU GET THE SWAPPING DISC'S LU CPA DISC SAME AS OURS? CCB,RSS YES, SET B TO INDICATE SWAP AREA JMP TERM NO, GO TERMINATE JSB STUFF PUT SWAP INDICATOR IN THE ARRAY LDA SSEC,I GET SWAP SECTOR LDB STRAK,I GET SWAP TRACK 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 RECIEVES TEST DISC ADDRESSES IN A AND B (A = SECTOR * AND B = TRACK) AND COMPARES THEM AGAINST TRACK,I AND SECTOR,I. * IT THEN STORES THE HIGHEST DISC ADDRESS IN TRACK,I AND SECTR,I. * HIEST NOP STA TMP SAVE SECTOR FOR LATER LDA TRACK,I GET CURRENT TRACK CMA,INA SET IT NEGATIVE ADA B ADD THE NEW TRACK VALUE SSA POSITIVE OR NEGATIVE? JMP HIEST,I NEGATIVE, SO EXIT * SZA,RSS SAME TRACK? JMP SECTS YES, TEST SECTOR * STB TRACK,I NEW TRACK IS GREATER SO STORE IT LDB TMP AND STORE NEW SECTOR STB SECTR,I JMP HIEST,I EXIT * SECTS LDA TMP GET NEW SECTOR LDB SECTR,I GET CURRENT SECTOR CMB,INB MAKE IT NEGATIVE ADB A SUBTRACT CURRENT FROM NEW SECTOR SSB,RSS IS THE NEW SECTOR GREATER OR EQUAL? STA SECTR,I YES, SO STORE IT JMP HIEST,I EXIT * TMP NOP 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 IS IT FULL? JMP STUFF,I YES, EXIT INA NO, INCREMENT THE NEGATIVE 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 N15 DEC -15 N1 DEC -1 .13 DEC 13 .27 DEC 27 B377 OCT 377 STRAK DEF $SWLU+1 SSEC DEF $SWLU+2 * LPCNT NOP IDPTR NOP CNT NOP CONFLICT COUNT * A EQU 0 B EQU 1 END EQU * END