.TITLE HST$PO - PURGE HISTROGRAM OVERFLOW TABLE .IDENT /19MAY7/ ;11:50:00, LV ; .ENTRY HST$PO - PURGE HISTOGRAM OVERFLOW TABLE ; ;+ ; H S T $ P O ; ; PURPOSE: ROUTINE TO PURGE HISTOGRAM OVERFLOW TABLE. ; THIS ROUTINE REQUESTS THE OVERFLOW MANAGEMENT TASK ; TO REMOVE ENTRIES FROM THE OVERFLOW TABLE THAT ARE ; NO LONGER NEEDED. ; ; INTERFACE: CALLING SEQUENCE: ; CALL HST$PO ; ; ENTRY CONDITIONS: ; R3 = ADDRESS OF HDB ; ; EXIT CONDITIONS: ; ALL ENTRIES FOR THE HISTOGRAM DESCRIBED ; BY THE HDB ARE REMOVED FROM THE OVERFLOW TABLE. ; ; UNCHANGED REGISTERS: R3,R4,R5 ; CHANGED REGISTERS: R0,R1,R2 ; ; LANGUAGE: MACRO-11 ; ; RESTRICTIONS: NOT FORTRAN-CALLABLE. THIS ROUTINE IS INTERNAL TO THE ; HISTOGRAM PACKAGE AND IS NOT INTENDED FOR GENERAL USE. ;- ; REVISIONS: ; 01-JUN-75 MK WRITTEN ; 14-DEC-76 MK TRY TO REPEAT SEND IF OUT OF NODES ; 19-MAY-77 LV UPDATED TO CONFORM TO STANDARDS ; .MCALL SDAT$C,RQST$C,WSIG$S ; MSG: .WORD 0,0,0,0,0 ;MESSAGE FOR OVERFLOW TASK ; .ENABL LSB HST$PO:: MOV #MSG+2,R0 ;POINT TO LOW ENTRY MOV R3,R1 ADD #HDB.SZ,R1 ;POINT TO HDB SIZE ENTRY MOV (R1),R2 ;COMPUTE HIGH CHANNEL DEC R2 ADD -(R1),R2 BITB #HFL.DK,HDB.FL(R3) ;CORE OR DISK? BEQ 1$ ;CORE CLRB (R0)+ ;SET UP LOW CHANNEL MOVB (R1)+,(R0)+ MOVB (R1)+,(R0) BIS #4,(R0)+ ;SET DISK FLAG MOVB #377,(R0)+ ;SET UP HIGH CHANNEL MOVB R2,(R0)+ SWAB R2 MOVB R2,(R0) BR 2$ 1$: MOV (R1),(R0)+ ;SET UP LOW CHANNEL CLR (R0)+ MOV R2,(R0)+ ;SET UP HIGH CHANNEL CLR (R0)+ 2$: SDAT$C HSTOVF,MSG ;SEND MESSAGE TO OVERFLOW TASK BCC 3$ ;DID IT GO? CMP @#$DSW,#IE.INS ;NO - IS TASK INSTALLED? BEQ 4$ ;NO - FORGET IT WSIG$S ;WAIT AND TRY AGAIN BR 2$ 3$: RQST$C HSTOVF 4$: RETURN .END