; ******************************************************* ; * * ; * THIS SOFTWARE WAS DEVELOPED WITH SUPPORT * ; * FROM THE NATIONAL INSTITUTES OF HEALTH: * ; * NIH CA06927 * ; * NIH CA22780 * ; * * ; * DIRECT INQUIRIES TO: * ; * COMPUTER CENTER * ; * THE INSTITUTE FOR CANCER RESEARCH * ; * 7701 BURHOLME AVENUE * ; * PHILADELPHIA, PENNSYLVANIA 19111 * ; * * ; * NO WARRANTY OR REPRESENTATION, EXPRESS OR * ; * IMPLIED, IS MADE WITH RESPECT TO THE * ; * CORRECTNESS, COMPLETENESS, OR USEFULNESS * ; * OF THIS SOFTWARE, NOR THAT USE OF THIS * ; * SOFTWARE MIGHT NOT INFRINGE PRIVATELY * ; * OWNED RIGHTS. * ; * * ; * NO LIABILITY IS ASSUMED WITH RESPECT TO * ; * THE USE OF, OR FOR DAMAGES RESULTING FROM * ; * THE USE OF THIS SOFTWARE * ; * * ; ******************************************************* ; * * ; * THIS SOFTWARE WAS DESIGNED FOR USE ON A * ; * PDP-11/70 OPERATING UNDER IAS V3.0 USING * ; * THE IAS PDP-11 MACRO ASSEMBLER. * ; * * ; ******************************************************* .TITLE GETPUT FORTRAN GET/PUT INTERFACE .IDENT /ICR001/ ; .MCALL FDOF$L,FCSBT$,GET$S,PUT$S ; FDOF$L ;DEFINE FDB OFFSETS FCSBT$ ;DEFINE FDB BIT DEFINITIONS FFDBLN = 6*2 ;LENGTH OF FORTRAN FDB HEADER RECCNT = 4-FFDBLN ;OFFSET TO FORTRAN RECORD COUNT I4 ; .PSECT $MACOD,RW,I,LCL,CON GETFDB: MOV @2(R5),R2 ;GET LUN CALL $FCHNL ;GET ASSOCIATED FFDB BCS 100$ ;CS - ILLEGAL LUN ADD #FFDBLN,R0 ;OFFSET TO REAL FDB MOV SP,R1 SUB #14,SP ;MAKE ROOM FOR SAVE MOV (R1),(SP) ;SET UP FOR COROUTINE MOV F.URBD(R0),(R1) MOV F.URBD+2(R0),-(R1) MOV F.NRBD(R0),-(R1) MOV F.NRBD+2(R0),-(R1) MOV F.RACC(R0),-(R1) ;SAVE FORTRAN FDB INFO MOV R0,-(R1) JSR PC,@(SP)+ ;CALL COROUTINE MOV (SP)+,R1 ;GET FORTRAN FDB ADDRESS MOV (SP)+,F.RACC(R1) ;RESTORE FORTRAN FDB INFO MOV (SP)+,F.NRBD+2(R1) MOV (SP)+,F.NRBD(R1) MOV (SP)+,F.URBD+2(R1) MOV (SP)+,F.URBD(R1) RETURN 100$: MOV #IE.ILU,R0 ;INVALID LUN MOV R0,@10(R5) TST (SP)+ RETURN ; ;GET LOGICAL RECORD ENTRY POINT ; CALL GET(LUN,BUF,SIZE,STAT) ; .ENABL LSB GET:: CALL GETFDB ;GET FORTRAN FDB BIC #FD.PLC,F.RACC(R0) ;CLEAR LOCATE MODE GET$S R0,4(R5),@6(R5) ;GET A RECORD BCS 110$ ;CS - IT FAILED MOV F.NRBD(R0),@10(R5) ;RETURN RECORD LENGTH ADD #1,RECCNT(R0) ;BUMP FORTRAN RECORD COUNTER ADC RECCNT+2(R0) MOVB F.ERR(R0),R0 ;RETURN STATUS RETURN ; ;PUT LOGICAL RECORD ENTRY POINT ; CALL PUT(LUN,BUF,SIZE,STAT) ; PUT:: CALL GETFDB ;GET FORTRAN FDB BIC #FD.PLC,F.RACC(R0) ;CLEAR LOCATE MODE PUT$S R0,4(R5),@6(R5) ;PUT A RECORD BCS 110$ ;CS - IT FAILED CLR @10(R5) ;RETURN SUCCESS ADD #1,RECCNT(R0) ;BUMP FORTRAN RECORD COUNTER ADC RECCNT+2(R0) MOVB F.ERR(R0),R0 ;RETURN STATUS RETURN 110$: MOVB F.ERR(R0),R0 ;GET ERROR - SIGN EXTEND MOV R0,@10(R5) ;AND RETURN IT RETURN .DSABL LSB .END