ASMB,R,L,C HED RETRV: RJE TRACE SUPPORT ROUTINE * (C) HEWLETT-PACKARD CO.1978 * NAM RETRV,7 91780-16016 REV.1840 780725 ENT RETRV EXT .ENTR,IFBRK,EXEC EXT #TBUF,#OVRN,#RDPT,#WRPT,#BFEN * * DATE: 780725 * NAME: RETRV * SOURCE: 91780-18018 * RELOC: 91780-16016 (PART OF) * PGMR: D. BOLIERE * * **************************************************************** * * (C) COPYRIGHT HEWLETT-PACKARD COMPANY 1978. 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. * * **************************************************************** * * THIS SUBROUTINE IS USED BY THE TRACE CAPABILITY OF RJE/1000 TO * RETRIEVE DATA FROM A CIRCULAR SPEED BUFFER LOCATED IN THE * RJE/1000 MODULE CALLED #COMN. THIS DATA IS IN THE FORMAT OF TWO * WORDS PER ENTRY. RETRV COLLECTS THIS DATA AND BLOCKS IT INTO THE * USERS BUFFER. WHEN EITHER THE USERS BUFFER IS FULL, OR WHEN A * OPERATOR BREAK OF THE TRACE PROGRAM IS DETECTED, THE BLOCK OF * DATA IS RETURNED TO THE CALLER. * * FORMAT OF SPEED BUFFER IN #COMN: * * #TFLG NOP 0=TRACE OFF,1=TRACE ON * #TBUF DEF BUF FWA OF SPEED BUFFER * #OVRN NOP NON-ZERO INDICATES THE NUMBER OF OVERRUNS * CAUSED BY THIS RETRV NOT EMPTYING THE SPEED * BUFFER AS FAST AS RJE/1000 FILLS IT. * #RDPT DEF BUF POINTER INTO SPEED BUFFER OF NEXT ENTRY TO * RETRIEVE * #WRPT DEF BUF POINTER INTO SPEED BUFFER OF NEXT ENTRY TO * BE WRITTEN BY RJE/1000. * #BFEN DEF BFEN LAST WORD ADDRESS OF CIRCULAR SPEED BUFFER * BUF BSS 200 TRACE BUFFER LOCATED IN SSGA * BFEN DEF * NEXT WORD PAST BUFFER * * * CALLING SEQUENCE: * * CALL RETRV (BUF,BUFCT,OVRN) * * WHERE: BUF=USERS BUFFER (AT LEAST 128 WORDS) * BUFCT=LENGTH OF BLOCK OF DATA RETURNED TO CALLER * OVRN= UPON ENTRY: + INDICATES THAT RETRV SHOULD * INITIALIZE ITSELF AND THE * SPEED BUFFER POINTERS * - INDICATES THAT RETRV SHOULD * JUST REFILL THE USERS BUFFER * UPON EXIT: - INDICATES TO CALLER THAT MORE * DATA IS AVAILABLE AFTER THIS * CALL * + INDICATES TO CALLER THE NUMBER * OF OVERRUNS DETECTED AND THAT * A BREAK OF TRACE HAS BEEN * ENTERED BY THE USER. * BUF NOP BUFCT NOP OVRN NOP * RETRV NOP JSB .ENTR PASS PARAMETER ADDRESSES DEF BUF * LDA BUFLN INITIALIZE COUNT TO REPORT TO CALLER STA BUFCT,I ARS DIVIDE BY 2 CMA,INA COMPLEMENT STA CNTR AND INITIALIZE INTERNAL COUNTER LDA BUF STA PTR SETUP INTERNAL BUF POINTER LDB OVRN,I SSB CALL SAYS TO RE-START? JMP START NO, JUST RE-FILL THE BUFFER * ADA D5 YES, SETUP YEAR POINTER STA PTR6 JSB EXEC SAVE SIX WORD TIME STAMP DEF *+4 IN FIRST SIX BUFFER LOCATIONS DEF D11 PTR NOP FWA OF BUFFER PTR6 NOP ADDRESS OF WORD SIX * LDA PTR6 INA STA PTR RESET BUF PTR TO 7TH WORD LDA CNTR ADA D3 STA CNTR BUMP INTERNAL COUNTER * LDA #TBUF STA #RDPT STA #WRPT CLA STA #OVRN STA OVCNT * START CCA TELL CALLER THAT LAST RECORD NOT STA OVRN,I YET FOUND * LOOP JSB IFBRK CHECK BREAK STATUS DEF *+1 SSA BREAK? JMP EXIT YEP, GO TELL USER * LDA #RDPT CPA #WRPT POINTERS THE SAME? RSS JMP FETCH NO, MUST BE NEW DATA TO GET! * LDA #OVRN BUFFER OVERRUN? SZA,RSS JMP LOOP NO, REPEAT CHECKS * OVER CLA OVERRUN!!! STA #OVRN CLEAR FLAG ISZ OVCNT BUMP OVERRUN COUNT LDA #WRPT STA #RDPT RESET READ PTR DLD OVCNT CREATE AN OVERRUN ENTRY DST PTR,I SAVE ENTRY SAVE ISZ PTR ISZ PTR ISZ CNTR BUMP COUNTER RSS JMP RETRV,I IF BUFFER FULL, RTN TO CALLER JMP LOOP RETURN FOR CHECKS * FETCH DLD #RDPT,I GET POSSIBLE DATA DST PTR,I SAVE IN TEMP BUFFER LDA #OVRN FETCH OVERRUN FLAG SZA OVERRUN? JMP OVER YEP, FORGET DATA! * ISZ #RDPT NO, BUMP TEMP PTR ISZ #RDPT LDA #RDPT CPA #BFEN AT END OF SPEED BUFFER? LDA #TBUF YES, WRAP-AROUND STA #RDPT JMP SAVE FINISH BOOKKEEPING * EXIT LDA BUF COMPUTE AMOUNT OF DATA IN CMA,INA TEMP BUFFER ADA PTR STA BUFCT,I REPORT PROPER COUNT TO CALLER LDA OVCNT STA OVRN,I REPORT LAST RECORD TO CALLER JMP RETRV,I * * D3 DEC 3 D5 DEC 5 D11 DEC 11 BUFLN DEC 128 CNTR NOP * OVCNT NOP OCT 020000 * *STRBF DEF #BUF END