.TITLE RDAF .IDENT /201083/ ; Version: 3.0 ; File:[22,310]RDAF.MAC ; Author: Jim Bostwick 20-Oct-83 (clone from P2util) ; History: ; ; Last Edit: 9-MAY-1989 18:47:35 .REM | Procedure RDAF(VAR Flags:Event_Flag_set );External; {*USER* Pascal-3 procedure to return the state of all event flags (except Group Globals). Some of these flags are reserved by RSX for its use, but you can read them anytime. The Group Global efns in Flags are all cleared by this procedure - this does not reflect their actual status, if any! Directive status available in $DSW on return. .NOTE Companion procedure RDXF reads all efns, including group globals. .end note } | ; ; Assemble with PASMAC.MAC as prefix file. ; ; NOTE: Since Gentyp2.Pas defines a f0 (null EFN), the resulting ; type Event_Flag_set contains 65 members, despite being a ; subrange f1..f64. To overcome this, RDAF must shift the ; flag set returned by RDAF$ one bit right, and clear b0 ; (f0 can never be set if the executive doesn't know of its ; existence!). ; ; 20-Oct-83 -- the above still applies, but we now have 97 ; elements in the set. ; ; 9-May-89. Philip Hannay. Now we have 128 elements in ; the set (VMS$EVENT_FLAG) using GENERAL.TYP. However, the ; RSX subrange remains f1..f96, and since we are working with ; the set as a VAR, we do not have to make any changes to ; RDXF. ; ; ; j.m.b. 013182, 042782, 102083 ; .MCALL RDAF$S PROC RDAF PARAM FLAGS, Address SAVE BEGIN MOV FLAGS(SP),R0 ;R0->FLAG BUFFER RDAF$S R0 MOV #8., R1 ;LOOP COUNTER ASLB (R0)+ ;SHIFT UP ONE BIT POSITION 1$: ROLB (R0)+ ;ROTATE REST OF BYTES SOB R1, 1$ ;DO ALL THIRTEEN (13)!! BYTES OF PASCAL EFN-SET MOV #4., R1 ;COUNTER FOR G.G. FLAGS 2$: CLRB(R0)+ ; CLEAR A G.G. SOB R1, 2$ ;CLEAR ALL G.G.'S ENDPR .END