.TITLE LIBINT .IDENT /MAR/ ; THIS MODULE PROVIDES THE NECESSARY INTERFACES TO THE SYSTEM LIBRARIAN ;ROUTINES, THAT ARE NOT AVAILABLE TO FORTRAN. THESE INTERFACES ARE ;REQUIRED BY THE ROUTINES ("OPNLIB" AND "GETSHP") THAT MANIPULATE THE ;PICTORIAL SHAPE LIBRARY IN REAL-TIME. ; ;WRITTEN BY E. NICHOLAS CUPERY 31 JULY 1981 .PSECT LIBINT,PIC,NOWRT,SHR,OVR,GBL ;SUBROUTINE LIBINT ; ; THIS SUBROUTINE IS CALLED BY FORTRAN SUBROUTINE "GETSHP", TO CREATE ;STRING DESCRIPTORS ACCEPTABLE TO THE VAX/VMS LIBRARIAN ROUTINES. STRING ;DESCRIPTORS (".ASCID" TYPE) ARE REQUIRED FOR BOTH THE ASCII SHAPE NAME ;AND THE SHAPE BUFFER ITSELF. THIS SUBROUTINE IS REQUIRED BECAUSE "GETSHP" ;DOES NOT HAVE THE REQUIRED INFORMATION IN CHARACTER-TYPE FORMAT. THIS ;SUBROUTINE WILL ALSO RETURN THE VALUE FOR "LBR$_KEYNOTFND", WHICH IS NOT ;AVAILABLE TO FORTRAN. ;CALLING SEQUENCE: CALL LIBINT(SHAPBF,SHPASC,LIBNSS) ; ; WHERE; SHAPBF = SHAPE BUFFER (512.-BYTE ARRAY) ; SHPASC = ASCII SHAPE NAME (6-BYTE ARRAY) ; LIBNSS = STORAGE FOR "LBR$_KEYNOTFND" VALUE [LONGWORD] .ENTRY LIBINT, ^M<> ;ENTRY MASK TSTL (AP)+ ;POINT TO THE 1ST CALL ARGUMENT MOVAL BUFADD,R0 ;ADDRESS OF SHAPE BUFFER ADDRESS STORAGE CELL MOVL (AP)+,(R0) ;STORE SHAPE BUFFER ADDRESS IN ".ASCID" BLOCK MOVAL NAMADD,R0 ;ADDRESS OF SHAPE-NAME ADDRESS STORAGE CELL MOVL (AP)+,(R0) ;STORE SHAPE-NAME ADDRESS IN ".ASCID" BLOCK MOVL LIBNSS,@(AP) ;STORE VALUE OF "LBR$_KEYNOTFND" FOR CALLER RET ;RETURN TO CALLER .PAGE $LBRDEF ;DEFINE VAX/VMS SECRET MAGIC CONSTANTS $DSCDEF ;DEFINE VAX/VMS SECRET MAGIC CONSTANTS .PSECT LIBIND,NOEXE ;BEGIN STUFF NEEDED TO INITIALIZE & OPEN THE LIBRARY ; LINDEX::.LONG 0 ;STORAGE FOR SHAPE LIBRARY'S FILE INDEX LFUNCT::.LONG LBR$C_READ ;"INITIALIZE-FOR-READ" FUNCTION-CODE LIBNAM::.ASCID /SY:[1,54]SHPLIB.TLB/ ;SHAPE LIBRARY FILE NAME ;BEGIN DEFINITION OF "BAD" RETURN STATUS VALUES OF SPECIFIC INTEREST ; LIBNSS: .LONG LBR$_KEYNOTFND ;"NO-SUCH-SHAPE" RETURN-STATUS VALUE ;BEGIN SHAPE-NAME STRING DESCRIPTOR BLOCK ; SHPDES::.WORD 6 ;SIX CHARS IN SHAPE NAMES .BYTE DSC$K_DTYPE_T ;STRING TYPE (TEXT) .BYTE DSC$K_CLASS_S ;STRING CLASS (SCALAR) NAMADD: .LONG 0 ;STORAGE FOR ADDRESS OF ASCII SHAPE NAME ;BEGIN SHAPE-BUFFER STRING DESCRIPTOR BLOCK ; BUFDES::.WORD 512 ;512 BYTES FOR SHAPES .BYTE DSC$K_DTYPE_T ;STRING TYPE (TEXT) .BYTE DSC$K_CLASS_S ;STRING CLASS (SCALAR) BUFADD: .LONG 0 ;STORAGE FOR SHAPE BUFFER ADDRESS .END