home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
rtsi.com
/
2014.01.www.rtsi.com.tar
/
www.rtsi.com
/
OS9
/
OSK
/
NETWORK
/
netpbm_src.lzh
/
NETPBM
/
VMS
/
Make_PBMplusShr.com
< prev
next >
Wrap
Text File
|
1996-11-18
|
10KB
|
281 lines
$!
$! Make shareable image out of PBMPLUS libraries. This command procedure
$! takes no arguments, but must be placed in the top-level PBMPLUS directory.
$!
$! It uses the following input library files:
$!
$! [.PBM]LIBPBM.OLB,[.PGM]LIBPGM.OLB,[.PPM]LIBPPM.OLB,[.PNM]LIBPNM.OLB
$!
$! This procedure generates the following files if missing or out-of-date:
$!
$! TRANSVEC.OBJ Object file containing transfer vector for PBMPLUSSHR.
$! PBMPLUSSHR.EXE Shareable image file for PBM libraries.
$! PBMPLUSSHR.OPT Linker options file for linking utility program against
$! the PBMPLUSSHR.EXE shareable image.
$!
$ instruct = 0
$ proc = f$environment("PROCEDURE")
$ proc_cdt = f$cvtime(f$file(proc,"CDT"))
$ if f$search("TRANSVEC.OBJ") .EQS. "" THEN GOTO NEW_TRANSVEC
$ if f$cvtime(f$file("TRANSVEC.OBJ","CDT")) .GTS. PROC_CDT THEN GOTO TRANSVEC_DONE
$ NEW_TRANSVEC:
$ instruct = 1
$ Write SYS$Output "Making new transvec.obj..."
$ Macro /NoList /Object = TRANSVEC.OBJ Sys$Input
; PMBPLUS_TRANSFER_VECTOR
; This routine defines a transfer vector for use in creating shareable image
;
; define macro to make transfer vector entry for a given routine. Entry mask
; is obtained from routine we are transfering to. Jump to word past entry
; since these are VAX procedures (written in FORTRAN).
;
.MACRO TRANSFER_ENTRY routine
;
.TRANSFER routine
.MASK routine
JMP routine + 2
;
.ENDM TRANSFER_ENTRY
;
.TITLE PBMPLUS_TRANSFER_VECTOR
.IDENT /01/
.PSECT PBMPLUS_XVEC PIC,USR,CON,REL,LCL,SHR,EXE,RD,NOWRT,NOVEC
;
; Simply go through iap procedures and declare transfer vector
; entry points for them. New procedure must be added to the END
; of this list.
;
TRANSFER_VECTOR:
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;Library LIBPBM
;Module ARGPROC
TRANSFER_ENTRY BACKGROUND_PROCESS
TRANSFER_ENTRY GETOPT
TRANSFER_ENTRY GETREDIRECTION
TRANSFER_ENTRY SET_OUTFILE_BINARY
;Module LIBPBM1
TRANSFER_ENTRY PBM_INIT
TRANSFER_ENTRY PM_ALLOCARRAY
TRANSFER_ENTRY PM_ALLOCROW
TRANSFER_ENTRY PM_BITSTOMAXVAL
TRANSFER_ENTRY PM_CLOSE
TRANSFER_ENTRY PM_ERROR
TRANSFER_ENTRY PM_FREEARRAY
TRANSFER_ENTRY PM_FREEROW
TRANSFER_ENTRY PM_INIT
TRANSFER_ENTRY PM_KEYMATCH
TRANSFER_ENTRY PM_MAXVALTOBITS
TRANSFER_ENTRY PM_MESSAGE
TRANSFER_ENTRY PM_OPENR
TRANSFER_ENTRY PM_OPENW
TRANSFER_ENTRY PM_PERROR
TRANSFER_ENTRY PM_READBIGLONG
TRANSFER_ENTRY PM_READBIGSHORT
TRANSFER_ENTRY PM_READLITTLELONG
TRANSFER_ENTRY PM_READLITTLESHORT
TRANSFER_ENTRY PM_USAGE
TRANSFER_ENTRY PM_WRITEBIGLONG
TRANSFER_ENTRY PM_WRITEBIGSHORT
TRANSFER_ENTRY PM_WRITELITTLELONG
TRANSFER_ENTRY PM_WRITELITTLESHORT
TRANSFER_ENTRY PM_READ_UNKNOWN_SIZE
;Module LIBPBM2
TRANSFER_ENTRY PBM_READMAGICNUMBER
TRANSFER_ENTRY PBM_READPBM
TRANSFER_ENTRY PBM_READPBMINIT
TRANSFER_ENTRY PBM_READPBMINITREST
TRANSFER_ENTRY PBM_READPBMROW
;Module LIBPBM3
TRANSFER_ENTRY PBM_WRITEPBM
TRANSFER_ENTRY PBM_WRITEPBMINIT
TRANSFER_ENTRY PBM_WRITEPBMROW
;Module LIBPBM4
TRANSFER_ENTRY PBM_GETC
TRANSFER_ENTRY PBM_GETINT
TRANSFER_ENTRY PBM_GETRAWBYTE
;Module LIBPBM5
TRANSFER_ENTRY PBM_DEFAULTFONT
TRANSFER_ENTRY PBM_DISSECTFONT
TRANSFER_ENTRY PBM_DUMPFONT
TRANSFER_ENTRY PBM_LOADFONT
TRANSFER_ENTRY PBM_LOADBDFFONT
TRANSFER_ENTRY MK_ARGVN
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;Library LIBPGM
;Module LIBPGM1
TRANSFER_ENTRY PGM_INIT
TRANSFER_ENTRY PGM_READPGM
TRANSFER_ENTRY PGM_READPGMINIT
TRANSFER_ENTRY PGM_READPGMINITREST
TRANSFER_ENTRY PGM_READPGMROW
;Module LIBPGM2
TRANSFER_ENTRY PGM_WRITEPGM
TRANSFER_ENTRY PGM_WRITEPGMINIT
TRANSFER_ENTRY PGM_WRITEPGMROW
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; Library LIBPPM
;
;Module LIBPPM1
TRANSFER_ENTRY PPM_INIT
TRANSFER_ENTRY PPM_READPPM
TRANSFER_ENTRY PPM_READPPMINIT
TRANSFER_ENTRY PPM_READPPMINITREST
TRANSFER_ENTRY PPM_READPPMROW
;Module LIBPPM2
TRANSFER_ENTRY PPM_WRITEPPM
TRANSFER_ENTRY PPM_WRITEPPMINIT
TRANSFER_ENTRY PPM_WRITEPPMROW
;Module LIBPPM3
TRANSFER_ENTRY PPM_ADDTOCOLORHASH
TRANSFER_ENTRY PPM_ADDTOCOLORHIST
TRANSFER_ENTRY PPM_ALLOCCOLORHASH
TRANSFER_ENTRY PPM_COLORHASHTOCOLORHIST
TRANSFER_ENTRY PPM_COLORHISTTOCOLORHASH
TRANSFER_ENTRY PPM_COMPUTECOLORHASH
TRANSFER_ENTRY PPM_COMPUTECOLORHIST
TRANSFER_ENTRY PPM_FREECOLORHASH
TRANSFER_ENTRY PPM_FREECOLORHIST
TRANSFER_ENTRY PPM_LOOKUPCOLOR
;Module LIBPPM4
TRANSFER_ENTRY PPM_COLORNAME
TRANSFER_ENTRY PPM_PARSECOLOR
;Module LIBPPM5
TRANSFER_ENTRY PPMD_CIRCLE
TRANSFER_ENTRY PPMD_FILL
TRANSFER_ENTRY PPMD_FILLEDRECTANGLE
TRANSFER_ENTRY PPMD_FILL_DRAWPROC
TRANSFER_ENTRY PPMD_FILL_INIT
TRANSFER_ENTRY PPMD_LINE
TRANSFER_ENTRY PPMD_POINT_DRAWPROC
TRANSFER_ENTRY PPMD_POLYSPLINE
TRANSFER_ENTRY PPMD_SETLINECLIP
TRANSFER_ENTRY PPMD_SETLINETYPE
TRANSFER_ENTRY PPMD_SPLINE3
;Module BITIO
TRANSFER_ENTRY PM_BITINIT
TRANSFER_ENTRY PM_BITFINI
TRANSFER_ENTRY PM_BITREAD
TRANSFER_ENTRY PM_BITWRITE
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; Library LIBPNM
;Module LIBPNM1
TRANSFER_ENTRY PNM_INIT
TRANSFER_ENTRY PNM_READPNM
TRANSFER_ENTRY PNM_READPNMINIT
TRANSFER_ENTRY PNM_READPNMROW
;Module LIBPNM2
TRANSFER_ENTRY PNM_WRITEPNM
TRANSFER_ENTRY PNM_WRITEPNMINIT
TRANSFER_ENTRY PNM_WRITEPNMROW
;Module LIBPNM3
TRANSFER_ENTRY PNM_BACKGROUNDXEL
TRANSFER_ENTRY PNM_BACKGROUNDXELROW
TRANSFER_ENTRY PNM_BLACKXEL
TRANSFER_ENTRY PNM_INVERTXEL
TRANSFER_ENTRY PNM_PROMOTEFORMAT
TRANSFER_ENTRY PNM_PROMOTEFORMATROW
TRANSFER_ENTRY PNM_WHITEXEL
;Module LIBPNM4
TRANSFER_ENTRY MEM_CREATE
TRANSFER_ENTRY MEM_FREE
TRANSFER_ENTRY PR_DUMP
TRANSFER_ENTRY PR_LOAD_COLORMAP
TRANSFER_ENTRY PR_LOAD_HEADER
TRANSFER_ENTRY PR_LOAD_IMAGE
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; allocate extra space to allow for code modifications without changing
; the size of the shared image.
;
.BLKB 2048-<.-TRANSFER_VECTOR> ; Reserve 4 pages.
;
.END
$ TRANSVEC_DONE:
$!
$! Create new options file if needed.
$!
$ if f$search("PBMPLUSSHR.OPT") .EQS. "" THEN GOTO NEW_OPTFILE
$ if f$cvtime(f$file("PBMPLUSSHR.OPT","CDT")) .GTS. PROC_CDT THEN GOTO OPTFILE_DONE
$ NEW_OPTFILE:
$ instruct = 1
$ write sys$output "Making new pbmplusshr.opt..."
$ CREATE PBMPLUSSHR.OPT
PBMplusShr /Share
Sys$Share:VAXCRTL /Share
PSECT_ATTR = ARGPROC_VERSION,GBL,NOSHR
PSECT_ATTR = OPTARG,GBL,NOSHR
PSECT_ATTR = OPTERR,GBL,NOSHR
PSECT_ATTR = OPTIND,GBL,NOSHR
PSECT_ATTR = OPTOPT,GBL,NOSHR
PSECT_ATTR = PGM_PBMMAXVAL,GBL,NOSHR
PSECT_ATTR = PNM_PBMMAXVAL,GBL,NOSHR
PSECT_ATTR = PPM_PBMMAXVAL,GBL,NOSHR
$!
$ OPTFILE_DONE:
$!
$ if f$search("PBMPLUSSHR.EXE") .EQS. "" THEN GOTO NEW_SHAREABLE
$ EXE_CDT = f$cvtime(f$file_attributes("PBMPLUSSHR.EXE","CDT"))
$ if EXE_CDT .LTS. PROC_CDT THEN GOTO NEW_SHAREABLE
$ if f$cvtime(f$file("[.PBM]LIBPBM.OLB","RDT")) .GTS. EXE_CDT THEN GOTO NEW_SHAREABLE
$ if f$cvtime(f$file("[.PGM]LIBPGM.OLB","RDT")) .GTS. EXE_CDT THEN GOTO NEW_SHAREABLE
$ if f$cvtime(f$file("[.PPM]LIBPPM.OLB","RDT")) .GTS. EXE_CDT THEN GOTO NEW_SHAREABLE
$ if f$cvtime(f$file("[.PNM]LIBPNM.OLB","RDT")) .GTS. EXE_CDT THEN GOTO NEW_SHAREABLE
$ GOTO SHAREABLE_DONE
$ NEW_SHAREABLE:
$ instruct = 1
$ write sys$output "Making new pbmplusshr.exe..."
$ Link /Map = PBMPLUSHSR.MAP /Share = SYS$DISK:[]PBMPLUSSHR.EXE Sys$Input/Option
COLLECT=FIRST,PBMPLUS_XVEC
COLLECT=GLOBALS1,PGM_PBMMAXVAL,PNM_PBMMAXVAL,PPM_PBMMAXVAL
COLLECT=GLOBALS2,ARGPROC_VERSION,OPTARG,OPTERR,OPTIND,OPTOPT
TRANSVEC.OBJ
[.PBM]LIBPBM/LIB,[.PGM]LIBPGM/LIB,[.PPM]LIBPPM/LIB
[.PNM]LIBPNM/LIB,SYS$SHARE:VAXCRTL/SHARE
UNSUPPORTED = 1 ! force demand zero pages
GSMATCH=LEQUAL,2,1 ! Major ID = 2, minor ID = 2
PSECT_ATTR = ARGPROC_VERSION,NOSHR
PSECT_ATTR = OPTARG,NOSHR
PSECT_ATTR = OPTERR,NOSHR
PSECT_ATTR = OPTIND,NOSHR
PSECT_ATTR = OPTOPT,NOSHR
PSECT_ATTR = PGM_PBMMAXVAL,NOSHR
PSECT_ATTR = PNM_PBMMAXVAL,NOSHR
PSECT_ATTR = PPM_PBMMAXVAL,NOSHR
!PSECT_ATTR = ,LCL,NOSHR
$!
$ SHAREABLE_DONE:
$ if .NOT. instruct then write sys$output "All PBMPLUSSHR files up to date."
$ if .NOT. instruct then exit $status
$ create sys$output
Define the logical name PBMPLUSSHR as "disk:[dir]PBMPLUSSHR", where
disk and [dir] are the disk and directory containing the
shareable image PBMPLUSSHR.EXE and linker options file PBMPLUSSHR.OPT.
You can then link an executable against the image with the command
LINK program.OBJ,PBMplusShr/Option
$ exit $status