.TITLE IOLCCO - CANCEL CNTL-O ON SPECIFIED LUN .IDENT /JN001/ ;WRITTEN BY J. NEELAND ;LAST MODIFIED 810512. ; ;FUNCTION: ; TO CANCEL CNTL-O STATE THAT MAY EXIST ON SPECIFIED LUN, AND TO ISSUE ; AFTERWARDS TO REALIGN PRINTOUT ; ;USAGE: EITHER - ; CALL IOLCCO(LUN) ; OR ; IERR=IOLCCO(LUN), IF YOU WISH TO TEST RETURNED STATUS ;WHERE: ; LUN = LOGICAL UNIT NUMBER ON WHICH TO CANCEL CNTL-O ; IERR = +1 FOR SUCCESS, NEG FOR I/O ERROR, ; +N FOR DIRECTIVE ERROR N-1 ; .MCALL QIO$,DIR$,QIOW$ ; IOLCCO::TST(R5)+ ;MAKE SURE WE HAVE BEEN GIVEN A LUN BNE 1$ ;HAVE TO HAVE AT LEAST 1 PARAMETER MOV #IE.BAD,R0 ; ELSE RETURN BAD PARAMETERS RETURN 1$: MOV @(R5),CCOQIO+Q.IOLU ;INSERT THE LUN # INTO QIO PARAM LIST MOV #IO.CCO,CCOQIO+Q.IOFN ;SET UP INITIALLY FOR CANCEL CNTL-O DIR$ #CCOQIO ;CANCEL THE CONTROL-O BCS DIRERR ;OOPS - GO GET ERROR CODE CMPB IOSB,#IS.SUC ;DID WE SUCCEED? BNE EXIT ; SKIP IF NOT MOV #IO.WVB,CCOQIO+Q.IOFN ;CHANGE TO A NORMAL WRITE DIR$ #CCOQIO ;OUTPUT TO REALIGN PRINTOUT BCS DIRERR ;CATCH ANY STRANGE ERRORS EXIT: MOVB IOSB,R0 ;GET THE I/O COMPLETION STATUS RETURN ; AND WE'RE DONE ; ; DIRERR: MOV $DSW,R0 ;GET THE ACTUAL DIRECTIVE ERROR CODE NEG R0 ;MAKE IT POSITIVE TO DISTINGUISH FROM I/O ERRORS INC R0 ; AND OFFSET BY 1 TO SEPARATE FROM IO.SUC RETURN ; AND RETURN WITH A FAILURE... ; ;DATA AREA ; IOSB: .BLKW 2 ;I/O STATUS BLOCK TO CHECK CCOACH COMPLETION CCOQIO: QIOW$ IO.CCO,,5,,IOSB,, ;IOLCCO ROUTINE USES EFN #5 CRBUF: .BYTE 15,0 ;JUST A SINGLE IS NECESSARY ; .END