;$IO SEQIO SEQUENTIAL I/O TO NON FILE STRUCTURED DEVICES ;. 15-SEPT-76 P. CANNON ;. THIS MODULE PROVIDES THE FORTRAN PROGRAMMER WITH ACCESS ;. TO THE QIO$ MACRO. THE USER CAN READ/WRITE BLOCKS OF ;. DATA ON A NON-DIRECT ACCESS DEVICE. THIS MODULE'S ;. PRIMARY USE IS FOR DIRECT I/O TO MAGNETIC TAPE AND OTHER ;. NON-FILE STRUCTURED DEVICES. ;. ;. CALL ISEQRD(FDB,BUF,LB) ;. CALL ISEQWT(FDB,BUF,NB) ;. CALL SEQRD(FDB,BUF,LB,/NBT/,/IER/) ;. CALL SEQWT(FDB,BUF,NB,/NBT/,/IER/) ;. ;. FDB FILE DESCRIPTOR BLOCK ;. BUF USER SUPPLIED DATA BUFFER ;. LB LENGTH OF BUFFER IN BYTES ;. NB NUMBER OF BYTES TO WRITE ;. NBT NUMBER OF BYTES TRANSFERRED ;. IER ERROR FLAG ;. POSITIVE IMPLIES NO ERROR ;. ZERO IMPLIES END OF FILE ;. NEGATIVE IMPLIES HARDWARE I/O ERROR ;. .TITLE SEQIO - SEQUENTIAL I/O TO NON FILE STRUCTURED DEVICES .IDENT /V01/ .PSECT .GLOBL ISEQRD,ISEQWT,SEQRD,SEQWT .GLOBL PARM,BIOCMP,FTQIO .SBTTL ISEQRD - READ A SEQUENTIAL BLOCK,RETURN IMMEDIATELY EF: .WORD 0 ;ADDRESS OF PARAMETER LIST .WORD 0 ;NBR OF TIMES CALLED ISEQRD: MOV R5,EF ;SAVE ADDRESS OF PARAMETER LIST INC EF+2 ;ADD ONE TO THE NBR OF TIMES CALLED JSR PC,PARM ;LOAD PARAMETERS ;R4= NBR OF PARAMETERS ;RO= ADDRESS OF FDB ;R1= ADDRESS OF DATA BUFFER ;R2= NBR OF BYTES TO READ MOV #I0.RVB,R3 ;LOAD FUNCTION CODE FOR READ A ;VIRTUAL BLOCK JSR PC,FTQIO ;PERFORM THE QIO$S DIRECTIVE RTS PC ; ; .SBTTL ISEQWT - WRITE A SEQUENTIAL BLOCK,RETURN IMMEDIATELY EF1: .WORD 0 ;ADDRESS OF PARAMETER LIST .WORD 0 ;NBR OF TIMES CALLED ISEQWT: MOV R5,EF1 ;SAVE ADDRESS OF PARAMETER LIST INC EF1+2 ;ADD ONE TO THE NBR OF TIMES CALLED JSR PC,PARM ;LOAD PARAMETERS ;R4= NBR OF PARAMETERS ;RO= ADDRESS OF FDB ;R1= ADDRESS OF DATA BUFFER ;R2= NBR OF BYTES TO WRITE MOV #IO.WVB,R3 ;LOAD FUNCTION CODE FOR WRITE ;VIRTUAL BLOCK JSR PC,FTQIO ;PERFORM THE QIO$S DIRECTIVE RTS PC ; ; .SBTTL SEQRD - READ A SEQUENTIAL BLOCK,RETURN ON I/O COMPLETE SEQRD: JSR PC,ISEQRD ;SET UP THE READ REQUEST SUB #3,R4 ;COMPUTE THE NBR OF OPTIONAL PARAMETERS JSR PC,BIOCMP ;WAIT ON I/O TO COMPLETE,UPDATE THE ;OPTIONAL PARAMETERS RTS PC ; ; .SBTTL SEQWT - WRITE A SEQUENTIAL BLOCK,RETURN ON I/O COMPLETE SEQWT: JSR PC,ISEQWT ;SET UP THE WRITE REQUEST SUB #3,R4 ;COMPUTE THE NBR OF OPTIONAL PARAMETERS JSR PC,BIOCMP ;WAIT ON I/O TO COMPLETE,UPDATE THE ;OPTIONAL PARAMETERS RTS PC .END