ASMB,R,L,C HED @DISP - 91705-16102 * (C) HEWLETT PACKARD CO. 1976 NAM @DISP,6 91705-16102 REV A 741230 SPC 1 ****************************************************************** * * (C) COPYRIGHT HEWLETT-PACKARD COMPANY 1976. 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. * ****************************************************************** SPC 2 * * @DISP * SOURCE: 91705-18102 * BINARY: 91705-16102 * JIM HARTSELL * JULY 30, 1974 * * PRIVILEDGED SUBROUTINE FOR RTE-C SATELLITE * RESIDENT LIBRARY. @DISP RETURNS THE ADDRESS OF * THE HIGHEST PRIORITY QUEUE ENTRY (OR FIFO) THAT IS * FLAGGED "READY TO SHIP". IF NONE, OR AN ENTRY IS * PENDING A REPLY, @DISP WILL RETURN A ZERO. * * CALLING SEQUENCE: (CALLED BY @REFA, @INTR) * * JSB @DISP * * ON RETURN, (A) = QUEUE ENTRY ADDR, OR ZERO. * ENT @DISP * EXT %ACT,$LIBR,$LIBX * A EQU 0 B EQU 1 * * INITIALIZE TO SEARCH PARMB REQUEST QUEUE. * @DISP NOP JSB $LIBR DISABLE THE INTERRUPT SYSTEM. NOP * LDA MD100 INITIALIZE TO LOWER THAN STA TEMP1 LOWEST POSSIBLE PRIORITY. CLA STA QENT SET FOR "NONE FOUND". LDA %ACT STA TEMP2 TOP OF ACTIVE LIST. * * SEARCH THE QUEUE FOR AN ENTRY THAT'S READY TO SHIP. * LOOP LDA TEMP2,I GET LINK TO NEXT ENTRY. STA TEMP2 SZA,RSS JMP EOL QUIT IF END OF LIST. INA LDB A,I FETCH FLAG WORD. CPB B2 JMP EOLA QUIT IF ENTRY PENDING A REPLY. CPB B1 THIS ONE READY TO SHIP? RSS JMP LOOP NO, GO TO NEXT ENTRY. * * AN ENTRY READY TO SHIP HAS BEEN FOUND. CHECK PRIORITY. * ADA B2 LDB B,I GET PRIORITY. ADB TEMP1 SSB,RSS GREATER THAN CURRENT PRIORITY? JMP LOOP NO GO TO NEXT ENTRY. * * THE ENTRY IS HIGHER PRIORITY. UPDATE POINTERS. * LDB A,I UPDATE HIGHEST CURRENT CMB,INB PRIORITY. STB TEMP1 LDA TEMP2 UPDATE ADDRESS OF STA QENT QUEUE ENTRY TO SERVICE. JMP LOOP GO SEARCH REST OF QUEUE. * * END OF LIST OR END OF SEARCH. * EOLA CLA (A) = 0 WHEN ENTRY FOUND THAT JMP EXIT IS PENDING A REPLY. EXIT. * EOL LDA QENT ENTRY FOUND? SZA,RSS JMP EXIT NO, EXIT WITH (A) = 0. INA LDB B2 YES, SET FLAG = "PARMB SENT". STB A,I * LDA QENT ADDR OF QUEUE ENTRY. * EXIT JSB $LIBX ENABLE INTERRUPT SYSTEM. DEF @DISP SPC 5 * * CONSTANTS AND WORKING STORAGE. * B1 OCT 1 B2 OCT 2 MD100 DEC -100 TEMP1 NOP TEMP2 NOP QENT NOP * SIZE EQU * * END