SNIP version 2.04 copyright 1991-1999 Richard Nowell
I wrote this utility years ago as a computer project for a college course. 
Originally it was meant for 360k floppies, but as computers evolved, I found
it remained useful and it was worth the occasional update.  

SNIP FILE UTILITY: Description and Purpose:
SNIP cuts a big file into floppy-sized files or whatever size you specify so
it can be transported on diskettes.  Big files such as compressed archives
(ZIP, CAB), graphics files (BMP, PCX) or sound files (WAV, MP3) and so on. 
At the other computer SNIP will reassemble the original file from the slices. 
SNIP works on more than just diskettes.  It can also be handy on 100M ZIP
drives or if your e-mail limits file attachment sizes, etc. 

Details: Each file slice is sized to fit on one disk and is given numbered
extensions like .1, .2 to .999, and is dated with the original file's date-
stamp.  One zero-byte ID-file is put on the first disk to store the original
filename extension, date & time and the total number of snipped pieces.  SNIP
is typically used with 1.4Mb disks and defaults to that size.  It is pretty
much automatic, prompts for disk insertion and warns of overwriting files.  

INSTALLATION:
 MSDOS: Simply unzip and copy SNIP.EXE to your DOS utils subdirectory or some
directory on the path (like C:\DOS).  Other files in the Zip archive:
SNIP204.TXT is this text description. FILE_ID.DIZ & SNIP204.XML are file
descriptions used by shareware distributers and can be deleted.

 WIN95/98: SNIP was written to work with MSDOS 3.3 to 6.2, but it also works
in Windows 95, although long filenames are truncated to the old 8.3 lengths. 
Copy SNIP.EXE to the "C:\Windows\SendTo" directory so it can be used within
Windows Explorer with the right-click "SendTo" mouse option.  If you want it
to default to the floppy, then set SNIP's properties so the working directory
is drive A: (in Explorer, right-click on SNIP.EXE and find Properties-Program-
WorkingDirectory).  There are no DLL or INI files to worry about.

OPERATION:
Snipping files from the DOS command prompt:
 SNIP [Drive:][Path\]Filename.Ext [Snipsize]  {Drive, path & size optional}
 Examples:
 SNIP                 no arguments gives brief instructions
 SNIP D:\SUB\TEST.ZIP snips a sourcefile from subdirectory D:\SUB and
                      creates 1.4Mb Snipfiles in the current directory.
 SNIP TEST.ZIP        no snipsize defaults to 3.5"HD 1.4 Mb
 SNIP TEST.ZIP 1.2    specify floppy size [360, 720, 1.2, 1.4, 1.7 or 2.8].
 SNIP TEST.ZIP 180k   specify integer size in bytes, k(1024b) or M(1024kb)

Size: any slice size can be specified from 1 byte to 2.1 gig.  Size can be
given in a number of formats: as either a common floppy size [360, 720, 1.2,
1.4 etc.], or if you know it, the exact number of integer bytes {730112}, and
accepts suffixes like "k" to mean kilobytes {1kb= 1024 bytes} or "M" to mean
megabytes {1Mb= 1024kb}.  You can tailor the size to the device: eg. if your
e-mail had a maximum file attachment size of 1Meg you could pick that.

Snipping files using a Drag & Drop system:
Within Windows-95 Explorer, select the file, right-click the mouse, and choose
Send-To SNIP.  SNIP will prompt for an empty disk in drive A, and ask for more
empty disks as required.  Note that SNIP will default to the standard 1.4 Mb
size but will ask just in case you want other sizes.
Assembly: FROM DOS PROMPT  {Snip will try to assemble any file with .1}
SNIP [Drive:][Path\]Filename.1
assembles file slices File.1, File.2 etc. from the specified drive & directory
into one big file in the working directory, and names the new file
FILENAME.EXT with the file extension from the SNIP~n.ext ID-file.  If no ID-
file is found, SNIP will ask for a file extension.  If more than one ID-file
exists (if you have snipped a number of files in a directory) the one with the
same date as the .1 file is used.

Example: At drive C:,SNIP A:TEST.1 will merge TEST.1+TEST.2 into C:TEST.ZIP. 
When loading from diskettes on A: or B:, SNIP will prompt for the next disk. 

FROM WIN95 EXPLORER (Drag & Drop):
Insert the floppy with the first SNIP file, with the ".1" extension.  Using
Windows Explorer, right-click on the file and choose Send-To SNIP.  SNIP will
ask which directory to assemble in.  Type in the path where you want it put. 
Note that SNIP doesn't support long filenames, so give the shorter 8.3 aliases
(which Windows 95 still supports).  If you can't think of one, you can pick
a temporary working directory like C:\WINDOWS\TEMP then later drag from there. 
SNIP will prompt for the remaining disks as required.

Typical Example (from command prompt):
1. Copying a big file to drive A: using 1.4Meg diskettes:
Switch to a MSDOS prompt and put a blank formatted diskette in drive A:.  Make
drive A: the working drive by typing A:  Next run SNIP and specify drive, path
and filename of the file to be sliced.
 SNIP D:\SUB\TEST.ZIP  {default size here is 1.4M}
 SNIP will warn how many empty disks you require.  Hit enter to continue. 
When the first disk is full, a beep occurs to prompt you to put in next disk. 
Label the disks 1 to N as required.  Label the first disk with the original
filename: eg. TEST.ZIP, disk 1 of 2.  If a disk hasn't enough free space, or
it is defective or write-protected, SNIP will request another disk.  

2. Restoring TEST.ZIP from slices on floppy disks 1 to N, to drive D:\SUB. 
Read the filename you recorded on the first disk of the series, put disk 1 in
A:  Make drive D:\SUB the default drive by typing D:  then CD \SUB.  Then type
SNIP with the floppy drive letter, filename (with the .1 extension).
 SNIP A:TEST.1  {here the drive letter is important}
When that disk is copied, a beep prompts for another disk.  If the file
already exists, SNIP will ask permission to overwrite it.

Typical Example: (from Win95 Drag & Drop)
1. Copying a large file TEST.ZIP to drive A: on 1.4Meg diskettes:
Click on "Windows Explorer" or "My Computer".  Find the subdirectory where the
big file is kept.  Right-click on the big file "TEST.ZIP", and pick "Send-To"
and SNIP.  SNIP will ask you to put a blank disk in A:, then will start
copying snipfiles to the floppy.  SNIP will beep and ask for floppies as
required.

2. Assembling a file from floppies:
Insert the floppy with the first TEST.1 snip file.  Start "Windows Explorer"
or "My Computer" and pick drive A:.  Right-click on the "TEST.1" file and
choose Send-to SNIP.  SNIP will ask what subdirectory to assemble in: lets
type in "C:\PROGRA~1".  SNIP will check if that is a valid subdirectory (if
not, it will ask again).  SNIP also checks if enough free space is available
on that drive.  Then SNIP prompts you to plug-in disks in sequence until the
entire file is assembled.  
TECHNICAL NOTES:
Authenticity Check: File Size & CRC: SNIP.EXE 26,272 bytes CRC= E7742A4B 
(32bit CRC code according to PKZip 2.04g)

Failsafe: If you lose SNIP, you can still reassemble the files with the DOS
COPY command: eg. COPY TEST.1/B +TEST.2/B TEST.ZIP

ID-File: The original file's extension and the number of snippets are stored
on a zero-byte file called SNIP~2.ZIP on disk 1.  Here the 2 is a count of how
many subfiles, and ZIP was the original file extension.  The file's date and
time are stamped the same as the original.
The SNIP ID-File is copied to the first floppy with the .1 file.  TIP: If you
want to copy zero-byte files in DOS, use the XCOPY command.

Floppy Standard Sizes:
  5.25"DD=   362,496 (354K)     3.5"DD=   730,112 (713K) bytes
  5.25"HD= 1,213,952 bytes      3.5"HD= 1,457,664 bytes
                                3.5"    1,716,224 (Microsoft CAB disks)
Give Integer Sizes Only: SNIP works with integer numbers so you should not
give it real numbers.  If you were to enter 1457664 bytes as 1423.5K it would
truncate it to 1423 bytes.  The decimal point acts as a separator when
converted to an integer value and VAL() misses the "K".  But Snip watches for
the list of special number strings like "1.4" and translates them properly. 
Please don't put commas in the number either.  Not 1,213,952 but 1213952.

LIMITATIONS:
 Theoretical Size Limits: SNIP allows a range of filesizes from 1 byte to 2
gigabytes (2,147,483,647 bytes).  The program keeps filesizes in 32-bit signed
long-integer variables which would overflow beyond that number. {2^31 -1}

 Large Harddrives: for harddrives with free space exceeding 2 Gigs, Pascal
will return a freespace value of 2,147,155,968 bytes.  So if you have 20 Gigs
free SNIP will report only 2Gigs free.  That's still lots!

Recompiled for Faster Machines:
 Pascal patch: SNIP was originally written in Borland TurboPascal 5.5, which
gave a runtime initialization error when used on fast computers over 200MHz. 
This version was recompiled with TurboPascal7 using Pedt Scragg's CRT.TPU Aug
1999 patch that fixes this timer calibration problem.

Network Drives: Known minor bug: Pascal will give a warning of 0-bytes free
in a network directory, but I ignore this and proceed and things work ok.  I
have to tweak this in the next version.

Bad Floppy Disks: SNIP requires that the entire disk area is usable.  Beware
of new preformatted floppies with bad sectors.  If you want to be sure they
have no flaws, fully reformat them with the unconditional switch.  
"FORMAT A: /u".  (A quick format isn't enough.)  

DISCLAIMER: although successfully tested with MSDOS 3.3 to 6.2, Windows 95/98,
and on a network, there is such a variety of operating systems and hardware
it won't work on everything.  Send a description of any problems to
"nowell@cotr.bc.ca" and maybe I can change the source code to solve it.

ShareWare: This software is fully functional: if you find it useful, then send
me $5 and your name and e-mail address.  When there are updates I will e-mail
them to you.

Rick Nowell, 
2700 College Way, College of the Rockies, Cranbrook, BC. Canada, V1C 5L7