.TITLE PARAMS .ident /BL1.0/ ; ; CALL PARAMS(IPARS,Isize) ; IPARS(1) = Number of params passes to subr ; IPARS(2) = 0 if param 1 is null/non 0 if OK ; IPARS(n) = 0 if param n-1 is null .... ; Isize = Size of array IPARS ; .ENTRY PARAMS,^M CMPB (AP),#2 ; Any params ? BLSS 30$ ; Insufficient ? MOVZBL @8(AP),R2 BLEQ 30$ ; Bad param ? MOVL 4(AP),R3 BEQL 30$ ; Bad param ? MOVL 8(FP),R0 ; Previous frame MOVZBL (R0),R1 ; Previous arg count ADDL #4,R0 ; First param MOVB R1,(R3)+ ; Param count 10$: DECL R2 ; Done yet? BLEQ 30$ ; Yes ? TSTL (R0)+ ; Get it BNEQ 15$ ; No params CLRB (R3)+ ; Signal none BRB 16$ 15$: MOVB #-1,(R3)+ ; Signal param 16$: SOBGTR R1,10$ ; Not done DECL R2 ; Done yet? BLEQ 30$ ; Yes ? 20$: CLRB (R3)+ ; Clear extra SOBGTR R2,20$ ; Done ? 30$: RET .END