.TITLE CDWAKE .IDENT /V001/ ; ; AUTHOR: ; DAVID M. BERG ; FERMI NATIONAL ACCELERATOR LABORATORY ; BATAVIA, IL 60510 ; ; UPDATE HISTORY: ; V01 - 7AUG84 - DB - ORIGINAL VERSION (RSX ONLY) ; ; ++ ; ; FUNCTION: ; ; THIS ROUTINE INFORMS THE DRIVER THAT THE DEVICE ASSOCIATED WITH THE ; SPECIFIED CHANNEL HAS BEEN RELEASED BY THE CONTROLLING PROGRAM. ; ; CALLING SEQUENCE: ; ---------------- ; ; CALL CDWAKE(CHAN,STAT) ; ; MACROS: ; ------ .MCALL RT$RSX RT$RSX ; .IF NDF RT11 ; .MCALL CHT$DF,CDI$DF,ERR$DF .MCALL PUSH,POP,ASSUME,$CM82 .MCALL QIOW$S CHT$DF ;DEFINE CHANNEL TABLE OFFSETS CDI$DF ;DEFINE I/O FUNCTION CODES ERR$DF ;DEFINE ERROR RETURNS ; ; ; GLOBALS: ; ------- .GLOBL CDWAKE ;ROUTINE ENTRY POINT .GLOBL $FNDCH ;SUBROUTINE TO FIND CHANNEL TABLE ENTRY .GLOBL $DSW .PAGE ; ; INPUTS TO ROUTINE ; ----------------- ; R5 IS THE ADDRESS OF A FORTRAN ARGUMENT LIST ; ; OUTPUTS ; ------- ; STATUS IS RETURNED IN STATUS ARGUMENT ; ; ; COMMON AREA CDCM82 ; ------------------ $CM82 ;DEFINE PSECT CDCM82 ; ; COMMON FOR ERROR IN NO. OF ARGUMENTS ; .PSECT CDERR,RW,GBL,D,OVR,REL CDERR: .BLKW .PSECT ; ; CDWAKE:: PUSH ;SAVE REGISTERS MOV @2(R5),R1 ;CHANNEL NUMBER CALL $FNDCH ;LOOK FOR CHANNEL BLOCK TST R5 ;FOUND IT? BEQ XNOCHN ;ERROR IF NOT MOVB CH.FLG(R5),R2 ;EVENT FLAG USED TO WAIT SUB #4,SP ;ALLOCATE I/O STATUS BLOCK ON STACK MOV SP,R3 ;ADDRESS OF STATUS BLOCK QIOW$S #IO.AWA,R1,R2,,R3 ;ISSUE AWAKE FUNCTION BCC 5$ ;DIRECTIVE ERROR? ADD #4,SP ;CLEAN OFF STACK BR XDRERR ; 5$: MOVB (R3),R4 ;STATUS AFTER COMPLETION ADD #4,SP ;CLEAN OFF STACK BR EXIT ; XNOCHN: MOV #ER.CHN,R4 ;CHANNEL NOT FOUND BR EXIT ; XDRERR: MOV $DSW,R4 ;DIRECTIVE ERROR BR EXIT ; EXIT: POP ;RESTORE ARGUMENT POINTER MOV R4,@4(R5) ;RETURN STATUS POP ;RESTORE OTHER REGISTERS RETURN ; .ENDC ; .END