.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