TOOLS This directory contains various tools of use in reading and pulling apart programs from the VAX SIG tapes (and from other sources). There are several categories. The first are tape copiers. Programs TCOPY.* and TCPY*.* are for tape to tape copies, format indepentdent. TCOPY is for VAX, native mode, where TCPY is for RSX or compat mode VMS. These programs just copy one foreign mounted tape to another, independent of tape format. They will handle block sizes too large for ANSI tape, so are more useful for this than the COPY command. Second are tape-disk-tape copy programs. These are for use where you want to do image tape copies with one tape drive, or where you want to make lots of copies of a tape. They create container files on disk of all data on a tape, or write the container files to a tape which is then identical to the original tape. The tapes must be mounted foreign. BIGTPC is the RSX copy program. Use it on PDP11; not on VAX. VMSTPC is the VMS version. Use it on VMS. Both do several asynchronous QIO$s and are AST driven, thus extremely fast. The PDP11 version will handle tape block sizes up to 11,000 bytes; the VAX version will handle tape blocks up to 32766 bytes (due to RMS limitations). Due to their great speed, they are better for copying one tape to many if you have the disk space needed for the container files. Next are the LZW compress and decompress programs. These are compatible with Ui*x Compress also. They are used to compress files or decompress them. The executables supplied should work OK on all current VMS versions. The sources have a newly-fatal bug in that when conditioned for VMS they do a realloc on a memory area that was not the result of a malloc in the first place. This is easily fixed (and will be when the current .EXE's stop working), but the .EXE's here are linked with the object libraries for the old C runtime which treated this realloc as a malloc and did the right thing. If you have a file from a un*x system with .Z at the end, it is generally compressed; use LZDCMP to decompress it. Frequently Un*x sites compress TAR images on disk. The practice in VMS land is to use LZCMP on VMS Backup savesets. Same idea; different tools. For VMS V4, the LZCMP/LZDCM programs work and are fairly clean. For VMS V5, you probably have to use LZCOMP/LZDCMP. There is a glitch in LZDCMP that may fail to completely decompress a file. We don't know why this is, but I suggest copying the compressed file to a longer file, and doing SET FILE/EOF on it prior to the decompress so that all valid data can be extracted; it seems to be an incorrect response to end of data, so adding a block or two to the end of the file should get around the problem. It only occurs for files from unix, so a copy of Compress is provided. This should be used instead. To use, copy or rename what you want decompressed from, say, file.taz to file.tar_z, define compress as a foreign command (e.g. $compress:== $sys$disk:[90avaxlt.tools]compress) Then use compress -d to decompress, e.g. $compress -d file.tar It will decompress file.tar_z and if it succeeds will delete it and leave file.tar in your directory. This can be de-TARred with tarread. This decompress was provided thanks to Jym Dyer. They work fine in VMS V5.x. To decompress files of type .TAR_Z or .TAR_LZW or .TAZ, you need to do the following steps: 1. Define COMPRESS and TARREAD23A to execute those images (i.e., make symbols up). 2. Use commands like these: $ rename file.taz file.tar_z $ compress -d file.tar $ assign file.tar tape: $ tarread23a xv which will decompress the compressed tar saveset and (in the tarread step) pull it apart into a directory tree starting at your current directory). The ZOO archiver is fairly heavily used. It creates single files which contain compressed copies of multiple files. You can extract one or multiple (or all) files from a ZOO archive, or list directories of the files, without any extra steps. First define the ZOO command. This is done by just defining a symbol to run ZOO, e.g. $ ZOO:==$sys$disk:[90avaxlt.tools]zoo Then issue commands. If file SRC.ZOO exists in a directory the command $ ZOO V src will list the directory of the archive. $ ZOO E// src * will extract all files from the archive. This form of the command will create any needed subdirectories as it goes thus recreating the original directory tree. $ ZOO e src file.doc will extract just file.doc out of the archive, writing it to the current directory. $ ZOO ep src file.doc will extract file.doc from src.zoo and print it to your terminal as it does so. This leads us to the last group of tools, the TAR read and write utilities. These can read or write Un*x TAR format tapes or disk files, and can be used to pull tar disk images apart on VMS. VMS TAR tape readers and writers These are the TAR handlers you should generally use! They will read TAR tapes into a directory, creating subdirectories as needed and massaging filenames to be legal in VMS V4.x. TARREAD Usage: $mount/foreign/block=10240/record=512 mta0: tape tape $assign mta0: tape $tarrdr:==$TARREAD $tarread -xv The tape will be read and files moved to a VMS directory tree starting in your current directory tree. Tapes with blocks up to 10240 can be read as is. The file can easily be edited to read larger tapes. TARWRITE usage: Mount the tape the same as for TARREAD. Assign the logical TAPE to it. Define TARWRITE symbol to run TARWRITE $tarwrite -cv [filespec,filespec,,,] e.g. $tarwrite -cv [...]*.* to write a tree to tape in TAR format. =============================================================== NAMING CONVENTIONS On the Spring 1990 tape (and succeeding tapes) the following conventions exist for file names: file.TAZ or file.TAR_Z or file.TAR_LZW: Decompress with COMPRESS, then pull the tar file apart with TARREAD23A or other TAR format reader. file.ext_Z Decompress with COMPRESS file.bck_nnnnn_Z Decompress with COMPRESS, then change with FILE to a file of fixed record length nnnnn. Then use Backup to pull apart the VMS Backup saveset. This would go something like this, for a file named, for example, emacs.bck_8192_z: $ set command [somewhere]file ! define the FILE command $ dcm:==$[somewhere]compress -d $ dcm emacs.bck_8192 $ file/type=fixed/record=8192/attr=noimpliedcc emacs.bck_8192 $ back/list emacs.bck_8192/save {generates listing, for example} file.ext_LZW Decompress with LZDCMP file.ZOO Decompress with ZOO (note: the ZOO h command lists zoo commands. To pull files apart use a command like $ zoo e// file.zoo * which will pull all files out and put into a directory tree starting at the current default.) file.LZH Decompress with LHARC (works like ZOO but leave off the // so just use command lharc e file.lzh