.TITLE RSD1 - TEST MACRO ; .MCALL VRCD$S,DRERR$ DRERR$ ; ; RSD1I - SET UP THE AST SEQUENCE FOR RSD1 ; PARMS: .WORD 2 ; NO. OF ARGS .WORD RSD1 ; AST ROUTINE .WORD IERR ; RSD1I:: MOV #PARMS,R5 ; F4P CALL JSR PC,RECASI TST IERR ; ERROR ON AST SET-UP ? BEQ DONE ; NO MOV #-1,IERR ; YEP, MAKE IERR -1. DONE: BR RETURN ; ; ; RECEIVE THE MESSAGE FORM EITHER $$$SSD OR ...CPT ; RSD1:: ; MOV #IE.ITS.,IDS ; DEFAULT TO NO MORE MESSAGES RECLOP: VRCD$S ,#IBF1,#13.,#ITI ; RECEIVE THE DATA CMP #IE.ITS,@#$DSW ; NO MORE DATA? BEQ CHKERR ; NO, CHECK THE LAST ERROR MOV @#$DSW,IDS ; SAVE THIS ERROR BR RECLOP ; AND LOOP TILL NO MORE DATA ; CHKERR: CLR IERR ; CLEAR ERROR FLAG CMP #IE.ITS,IDS BEQ RETURN ; NO DATA TO PROCESS - RETURN TO CALLER ; MOV #-2,IERR ; SET ERROR FLAG IN RSD1C COMMON TST IDS ; DIRECTIVE ERROR ? BLT RETURN ; YES - RETURN TO CALLER ; CLR IERR ; CLEAR ERROR FLAG ; ; CHECK SENDING TASK NAME - SHOULD BE $$$SSD OR ...CPT ; CMP IBF2,CPTNAM ; ...CPT ? BEQ CPT ; YES CMP IBF2,SSDNAM ; $$$SSD ? BNE RETURN ; NOPE, DON'T DO ANYTHING ; ; HERE TO UPDATE THE SWITCH VALUES IN /LSWCM/ COMMON ; CLR R2 ; SET TO PACK SWITCHES INTO 1 WORD MOV #16.,R0 ; LOOP COUNTER (16 SWITCHES) MOV #ENDSW,R1 ; LSWCM ADDRESS OF SWITCH 15 ; PACK: ASL R2 ; MOVE LAST SWITCH OVER TST -(R1) ; IS IT .TRUE. ? BEQ NXT1 ; NO, ITS ZEROED INC R2 ; YES, TURN ON BIT ZERO FOR SHIFT NXT1: SOB R0,PACK ; GET NEXT SWITCH ; ; CHECK THE /CL SWITCH OPTION, BIT 0 IN IBF(3) ; BIT #1,IBF3 BEQ NOCLR ; /CL NOT SPECIFIED, DON'T CLEAR CLR R2 ; YES /CL, ZERO THE SWITCH REGISTER NOCLR: BIS IBF4,R2 ; TURN ON ALL SWITCHES SPECIFIED BIC IBF5,R2 ; TURN OFF SWITCHES SPECIFIED (-15,-0) ; ; UNPACK THE SWITCH REGISTER BACK INTO LSWCM ; MOV #16.,R0 MOV #ENDSW,R1 ; SWITCH 15 ADDRESS UNPACK: CLR -(R1) ; SET TO .FALSE. INITIALLY TST R2 ; CHECK HIGH BIT BGE NXT2 ; NOT SET, DON'T SET SWITCH COM (R1) ; SET, MAKE SWITCH .TRUE. NXT2: ASL R2 ; SHIFT TO GET NEXT SWITCH SOB R0,UNPACK ; GET THE NEXT ONE BR RETURN ; ; HERE TO STUFF CPU TICKS ACCUMULATED INTO COMMON ; CPT: MOV IBF3,KCPU MOV IBF4,KCPU+2 INC CPTDON ; INDICATE DATA RECEIVED FORM ...CPT ; RETURN: RETURN ; SSDNAM: .RAD50 /SSD/ CPTNAM: .RAD50 /CPT/ ; .PSECT RSD1C,RW,D,OVR,GBL IERR: .WORD IDS: .WORD ITI: .WORD IBF1: .WORD IBF2: .WORD IBF3: .WORD IBF4: .WORD IBF5: .WORD IBF: .BLKW 10. ; .PSECT LSWCM,RW,D,OVR,GBL LSWTCH: .BLKW 16. ENDSW = LSWTCH+32. ; .PSECT CPUTIM,RW,D,OVR,GBL KCPU: .BLKW 2 CPTDON: .WORD .END