Farba Research VAX Assembler Example

        .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

Farba Products WORK