;$IO FTQIO - ISSUE A QIO$S MACRO REQUEST ;. 29-FEB-80 P. H. CANNON CHANGE TO $S FORM OF MACRO ;. FOR CLEF$ AND SETF$ ;ENTER ; THE FOLLOWING OFFSETS IN THE FDB : ; "F.BKEF" CONTAINS THE EVENT FALG ; "F.LUN" CONTAINS THE LOGICAL UNIT NUMBER ; "F.STBK CONTAINS THE ADDRESS OF THE TWO WORD I/O STATUS BLOCK ; ; R3 CONTAINS THE I/O FUNCTION CODE TO EXECUTE ; R1 AND R2 CONTAIN OPTIONAL PARAMETERS WHOSE MEANINGS DEPEND ; ON THE I/O FUNCTION CODE IN R3. ;EXIT ; THE REQUESTED I/O FUNCTION IS INITIATED. ;PROCESSING NOTES ; IF A DIRECTIVE ERROR IS ENCOUNTERED, THE EVENT FALG IS SET. ; THIS ALLOWS THE USER TO DECODE AN ERROR AFTER ISSUING A ; CALL TO THE WAIT MODULE REGARDLESS OF WHETHER THE ERROR IS ; AN I/O OR DIRECTIVE ERROR. ; THE QIO$ MACRO DOES NOT SPECIFY THE STATE OF THE EVENT ; FLAG IF QIO$ ENCOUNTERS A DIRECTIVE ERROR. ; IN THE "FTQIO" MODULE THE FOLLOWING STEPS ARE TAKEN TO ; ENSURE THE STATE OF THE EVENT FLAG. ; 1) THE EVENT FLAG IS CLEARED. ; 2) THE QIO$S MACRO IS ISSUED. ; 3) IF A DIRECTIVE ERROR OCCURS, THE EVENT FLAG IS SET. ; ; THE GENERAL FORM OF THE QIO$S MACRO IS : ; QI0$S FNC,LUN,(EFN),(PRI),(ISB),(AST),(PRL) ; ; WHERE: ; FNC I/O FUNCTION CODE ; LUN LOGICAL UNIT NUMBER ; EFN EVENT FLAG NUMBER ; PRI PRIORITY; IGNORED, BUT MUST BE PRESENT ; ISB ADDRESS OF 2-WORD I/O STATUS BLOCK ; AST ADDRESS OF AST SERVICE ROUTINE ENTRY POINT ; PRL PARAMETER LIST OF THE FORM ; ; NOTE: IF THE DIRECTIVE IS REJECTED,THE SPECIFIED EVENT ; FLAG IS NOT GUARANTEED TO BE CLEARED OR SET. THUS, ; IF THE TASK INDISCRIMINATELY EXECUTES U WAIT FOR ; FIRECTIVE AND THE QIO DIRECTIVE IS REJECTED, THEN ; THE TASK MAY WAIT FOREVER. CARE SHOULD ALWAYS BE ; TAKEN TO INSURE THAT THE DIRECTIVE WAS SUCCESSFULLY ; COMPLETED. ; .TITLE FTQIO - ISSUE A "QIO$S" MACRO REQUEST .IDENT /V01/ .PSECT .GLOBL FTQIO .MCALL QIO$S .MCALL CLEF$S,SETF$S FTQIO: CLEF$S F.BKEF(R0) ;CLEAR EVENT FLAG QIO$S R3,F.LUN(R0),F.BKEF(R0),#0,F.STBK(R0),,R1,R2 TSTB F.ERR+1(R0) ;DID A DIRECTIVE ERROR OCCUR ? BMI 1$ ;YES - THEN SET THE EVENT FLAG ;SO WAIT$ WILL NOT LOOP FOREVER. RTS PC 1$: SETF$S F.BKEF(R0) ;SET THE EVENT FLAG RTS PC .END