home *** CD-ROM | disk | FTP | other *** search
/ Meeting Pearls 3 / Meeting_Pearls_III.iso / Pearls / arc / Disk-Archiver / xDM / PackDev.doc < prev    next >
Text File  |  1995-07-02  |  22KB  |  591 lines

  1. Program(s):         PackDev
  2. Version:            1.4
  3. Author:             Christian Wasner
  4. Date:               02-Jul-95
  5.  
  6.  
  7. -i) READ THE SECTION ABOUT PARAMETERS !!! THERE ARE MAJOR CHANGES !!!
  8.  
  9. o) Version
  10.  
  11. $VER: PackDev.doc V1.3 (02-Jul-95)
  12.  
  13.  
  14. i) Disclaimer
  15.  
  16. The  author  cannot  be held liable for the suitability or accuracy of this
  17. manual  and/or  the  program(s)  it  describes.   Any  damage  directly  or
  18. indirectly caused by the use or misuse of this manual and/or the program it
  19. describes is the sole responsibility of the user her/him self.
  20.  
  21.  
  22. ii) Copyright/Distribution
  23.  
  24. All  files mentioned in iii) are (C) Copyright 1994, 1995 Christian Wasner.
  25. All rights reserved.
  26.  
  27. These  programs  are  FREEWARE, so no financial donations are required (but
  28. welcome).   They  may  be  freely  distributed  as long as all files remain
  29. unchanged and are included with the distribution.  Distribution on disks or
  30. CDs is permitted only on the disks or CDs from Fred Fish or the Aminet CDs.
  31. Electronical  distribution (e.g.  by Aminet, mailboxes, modems) is allowed.
  32. Inclusion  into freeware software packages is allowed, inclusion into other
  33. packages must be expressly allowed by me in written form.
  34.  
  35.  
  36. iii) Files
  37.  
  38. The following files should come along:
  39.  
  40. PackDev      (23384 bytes)
  41. PackDev.doc  (22455 bytes)
  42.  
  43.  
  44. iv) Documentation
  45.  
  46. Program:       PackDev
  47.  
  48. Template:      FROM/O,TO/O,P=PACK/K/O,XB=XPKBUFSIZE/K/N/O,M=MEMTYPE/K/O,
  49.                CU=CLRUNUSED/S/O,ETDF=ETDFORMAT/S/O,TDF=TDFORMAT/S/O,
  50.                ALL/S/O,NV=NOVERBOSE/S/O,Q=QUIET/S/O,NC=NOCONFIRM/S/O,
  51.                VIEWFILE/K/O,VIEWFILESYS/K/O,TESTFILE/K/O,BLOCKLIST/K/O,
  52.                PASSWORD/K/O
  53.  
  54. Purpose:       Reading/writing  data  directly from/to filesystems with xpk
  55.                support.
  56.  
  57. Specification:
  58.  
  59. With  this program you can read or write data directly from/to a disk.  The
  60. blocks  of  the  disk are read and stored into a file.  When reading from a
  61. DOS  disk,  only  the  blocks  that are used are archived.  When writing an
  62. archive  to  a  disk,  only  the  blocks are written that are stored in the
  63. archive.   Optionally  the  data read from a disk can be packed with an xpk
  64. packer.   The  program  currently  only has a shell interface, but it won't
  65. crash if started from workbench.
  66.  
  67. All  this  sounds like "Oh no, yet another DMS clone", but this program can
  68. handle  any device with a filesystem (e.g.  DHx:, DFx:, a RAD:  of any size
  69. etc.),  DMS can only handle floppy disks or devices with the size of floppy
  70. disks.   Even  Non-DOS disks can be handled (but then all blocks are read).
  71. Another  advantage  of  PackDev is that is doesn't use stolen code like the
  72. authors  of DMS do (see below).  PackDev supports the xpk packer system, so
  73. it's  much  more  flexible  than DMS.  You can use any xpk packer you like,
  74. i.e.   you  can  use a packer suited to the type of data on the disk.  When
  75. comparing  size,  you  see that PackDev is only 22 KB long.  If you pack it
  76. with PowerPacker, it would be less than 12 KB !
  77.  
  78. A disk is read as follows:
  79.  
  80.    1. Read device data from DOS and the disk bootblock
  81.    2. Check  if  the  file  system of the disk is supported (currently OFS,
  82.       FFS,  OFS  International,  FFS International, OFS Directory Dache and
  83.       FFS Directory Cache are supported)
  84.    3. Inhibit device
  85.    
  86.    If the filesystem is supported and the ALL keyword is not set:
  87.  
  88.    4. Read root block (contains location of block allocation map = BAM)
  89.    5. Read BAM and store it (after packing, if specified)
  90.    5. Read used blocks and store them (after packing, if specified)
  91.    6. Quit
  92.  
  93.    If the filesystem is not supported or the ALL keyword is set:
  94.  
  95.    4. Read all blocks and store them (after packing, if specified)
  96.    5. Quit
  97.  
  98. Writing functions similarly.
  99.  
  100. When  writing to a filesystem, DevPack will only allow filesystems that are
  101. exactly  of  the  same  partition  size,  block size and number of reserved
  102. blocks.   If the disk should be formatted, the track size of the disk (e.g.
  103. 11 blocks for a floppy disk) must currently be equal, too.
  104.  
  105. The following parameters are supported:
  106.  
  107. FROM, TO
  108. ========
  109.  
  110. These  parameter  specifies  the source data and the destination data.  The
  111. source  is specified first and the destination second.  Either both or none
  112. of  these  two  keywords must be set.  If the one parameter is a filesystem
  113. the  other  one  must  be  a  file  and vice versa.  If both parameters are
  114. specified along with their keywords, they can be placed anywhere and in any
  115. order  of the command string.  If VIEWFILE, VIEWFILESYS or TESTFILE is set,
  116. FROM and TO must not be used.
  117.  
  118. File  names will be handled the following way:  When writing to the file, a
  119. suffix  ".pkd"  will  be  added to the file name if it's not present.  When
  120. reading  from  it and the file name doesn't contain the ".pkd" suffix, it's
  121. checked  first  if  there is a file <name>.pkd.  If this file doesn't exist
  122. then the original file name is used.
  123.  
  124. Note that copy-protected disks (i.e.  with a custom track format) cannot be
  125. handled.
  126.  
  127. Examples:
  128.  
  129. DH0: foobar           Read data from DH0: and write it to foobar.pkd
  130. foobar DH0:           Read data from foobar.pkd (foobar if not present) and
  131.                       write it to DH0:
  132.  
  133. TO foobar FROM DH0:   Read data from DH0: and write it to foobar.pkd, other
  134.                       parameters  can be placed anywhere between, before or
  135.                       after them.
  136.  
  137. PACK (or P)
  138. ===========
  139.  
  140. This  parameter  is  optional,  but  strongly  suggested.   It  may only be
  141. specified  along  with  a  READ action, because when writing to a disk, the
  142. packer type of the archive is automatically recognized.  Along with PACK an
  143. xpk  packer  name and the efficiency can be specified (separated by a ".").
  144. Note  that  some  xpk  packers ignore the efficience value. A discussion of
  145. packer speed is found in v).
  146.  
  147. When  comparing with DMS, a general rule is :  The less full a disk is, the
  148. slower is DMS because DMS always reads all blocks, even if they are not put
  149. into the archive (maybe ParCon is afraid of "lamers" who think, DMS forgets
  150. to read these blocks :-).
  151.  
  152. Examples:
  153.  
  154. PACK NUKE    (Use NUKE packer with default efficiency)
  155. P SHRI.75    (Use SHRI packer with efficience 75)
  156.  
  157. MEMTYPE (or M)
  158. ==============
  159.  
  160. This  parameter is optional.  It specifies the memory type that is used for
  161. device  buffers.   Some  older  devices  may  require chip memory for their
  162. buffers.   For  example,  under  1.3  the  trackdisk.device  needed chipmem
  163. because  it  used  the blitter to decode the data (not because the disk DMA
  164. functions  with chipmem only).  Possible values are CHIP, FAST, ANY.  Under
  165. 2.0+ trackdisk doesn't need chipmem any longer. Default is ANY.
  166.  
  167. Examples:
  168.  
  169. M CHIP (chipmem will be used or program fails)
  170. M FAST (fastmem will be used or program fails)
  171. M ANY  (default: highest-priority memory will be used)
  172.  
  173. XPKBUFSIZE (or XB)
  174. ==================
  175.  
  176. This  parameter  is  optional  and  can only be specified along with a READ
  177. action  along with an xpk packer.  It specifies the number of device blocks
  178. to  be  buffered before packing.  If not specified, the default buffer size
  179. of  the  xpk packer is used or blocks with a total size of 65536 bytes when
  180. no  packer  is  specified.  Some packers have minimum or maximum buffer and
  181. some  packers  are  more efficient with a larger size, so this parameter is
  182. implemented.   If a packer is specified, the default buffer size is the one
  183. of  the packer, if not, 65536 bytes (both will be extended to a multiple of
  184. the device block size).
  185.  
  186. Examples:
  187.  
  188. XB 200  (buffer = 200 blocks, 100KB along with a block size of 512 bytes)
  189. XB 50   (buffer = 50 blocks)
  190.  
  191. CLRUNUSED (or CU)
  192. =================
  193.  
  194. This  optional  parameter  is allowed only when writing to a disk.  If set,
  195. all  unused  blocks are overwritten with zeroes.  This has the disadvantage
  196. that  the  write operation becomes slower, but has the advantage that tools
  197. like  DiskSalv  ((C)  by  Dave  Haynie)  don't find old file fragments when
  198. trying  to  undelete  an  accidentally deleted file (deleted after usage of
  199. PackDev, of course).  This parameter is unset by default.
  200.  
  201. Example:
  202.  
  203. CU     (PackDev overwrites unused tracks with zeroes)
  204.  
  205. ETDFORMAT (or ETDF)
  206. ===================
  207.  
  208. This  parameter  is  optional.  It should be set if you want to write to an
  209. unformatted  floppy disk.  It may not function if you write to a hard disk,
  210. because  this  parameter causes PackDev to use a system format routine that
  211. functions  with floppy disks (DFx:) but may not function with other devices
  212. (like oktagon.device, my scsi device, it took hours to find this out).  The
  213. advantage  of this format routine is that label buffers can be written with
  214. it  in  one  row  (Filenotes are NOT stored here, I told this in an earlier
  215. version  of  the  doc file, ahem...).  TDFORMAT will start an extra run for
  216. the  label  buffers  (see below).  For programmers:  This causes PackDev to
  217. format with ETD_FORMAT. ETDF is unset by default.
  218.  
  219. Example
  220.  
  221. ETDF  (enhanced format routine for floppies activated)
  222.  
  223. TDFORMAT (or TDF)
  224. =================
  225.  
  226. This  parameter  is optional.  It should not be set if you want to write to
  227. an  unformatted floppy disk.  It will function if you write to a hard disk,
  228. because  this  parameter  causes  PackDev to use the general format routine
  229. that  should  function with any disk device that is supported by DOS.  This
  230. general  system  format  routine (TD_FORMAT, to be specific) is slower than
  231. the  format  routine  stated  above, because it needs an extra write run to
  232. write  the label buffers (don't ask my why, I don't know).  I don't suggest
  233. to  use this parameter for hard disks because their tracks don't need to be
  234. Amiga-formatted.   It  is  implemented because there may exist some devices
  235. that  need formatting but don't support the enhanced routine.  TDF is unset
  236. by default.
  237.  
  238. Example
  239.  
  240. TDF  (standard format routine activated)
  241.  
  242. ALL
  243. ===
  244.  
  245. This  parameter  can  be  used when reading from a device.  If set, PackDev
  246. reads  all  blocks from the device, no matter if the filesystem is known or
  247. not.   This  is useful for all these poor demo disks that have a filesystem
  248. on  it, but also raw data on blocks that are not used by the filesystem.  I
  249. hesitated  before  implementing this parameter because I HATE disks of this
  250. kind,  but  SiliconSurfer  insisted  on  it.  Come on boys, stop these lame
  251. combination of DOS and trackloaders...
  252.  
  253. Example
  254.  
  255. ALL  (All blocks are read)
  256.  
  257. NOVERBOSE (or NV)
  258. =================
  259.  
  260. This  parameter  suppresses  the  output of the blocks currently worked on.
  261. This  is  useful  when  redirecting the output to a file.  It's disabled by
  262. default.
  263.  
  264. Example
  265.  
  266. NV  (no output of blocks currently worked on)
  267.  
  268. QUIET (or Q)
  269. ============
  270.  
  271. If  this  parameter  is  set, nothing is written to the standard output and
  272. nothing  is  read  from  the  standard input.  This means that Packdev will
  273. always abort if there are any problems (read/write error, ^C pressed, write
  274. to existing file etc.) and reports no error text.  It's disabled by default.
  275.  
  276. Example
  277.  
  278. Q  (No input and output)
  279.  
  280. NOCONFIRM (or NC)
  281. =================
  282.  
  283. If  this  parameter is set, PackDev will never ask for user input, i.e.  it
  284. will  immediately  start  with  the  specified  action  without waiting for
  285. confirmation.   When  errors  occur,  PackDev  will  always abort (see also
  286. QUIET).  This is useful when starting PackDev with a file as standard input
  287. or when starting it from another program. It's disabled by default.
  288.  
  289. Example
  290.  
  291. NC  (No input)
  292.  
  293. VIEWFILE
  294. ========
  295.  
  296. This  keyword will make PackDev output a file's filesystem information.  It
  297. must be specified along with a file name and nothing else.
  298.  
  299. Example
  300.  
  301. VIEWFILE foo.bar
  302.  
  303. VIEWFILESYS
  304. ===========
  305.  
  306. This  keyword will make PackDev output some information about a filesystem.
  307. It must be specified along with a filesystem name and nothing else.
  308.  
  309. Example
  310.  
  311. VIEWFILESYS DH0:
  312.  
  313. TESTFILE
  314. ========
  315.  
  316. if  PackDev  is  started  with  this parameter, along with a file name, the
  317. complete  archive is read for testing purposes.  It must be specified along
  318. with a file name and nothing else.
  319.  
  320. Example
  321.  
  322. TESTFILE foo.bar
  323.  
  324. BLOCKLIST
  325. =========
  326.  
  327. If  this  parameter  is  set along with a file name, an ASCII block list is
  328. generated,  one  line  for  each block with the block number in decimal nad
  329. hexadecimal notation.  This parameter cannot be set along with VIEWFILE and
  330. VIEWFILESYS.
  331.  
  332. Example
  333.  
  334. BLOCKLIST foobar
  335.  
  336.  
  337. PASSWORD
  338. ========
  339.  
  340. Setting  this  parameter  allows  usage of the XPK packers that are able to
  341. crypt  the data.  It can be used in combination with creating an archive if
  342. an xpk packer is used that supports crypting.  When extracting or testing a
  343. crypted  archive  you  must  specify  the password or decrypting will fail.
  344. Also  note  that  there are countries where crypting data is not allowed or
  345. restricted.   So  if  you live e.g.  in the Iran, be careful that your head
  346. isn't chopped off...
  347.  
  348. Example
  349.  
  350. PASSWORD YouWillNeverGuessThis
  351.  
  352.  
  353. Examples for usage:
  354. ===================
  355.  
  356.  
  357. Reading  the  disk in DF0:  and storing the data into RAM:disk.pkd, packing
  358. it with the SHRI algorithm with best efficiency:
  359.  
  360.     PackDev DF0: RAM:disk P SHRI.100
  361.  
  362.  
  363. Reading  the  disk in DF0:  and storing the data into RAM:disk.pkd, packing
  364. it with the SHRI algorithm with default efficiency:
  365.  
  366.     PackDev DF0: RAM:disk P SHRI
  367.  
  368.  
  369. Crypting DF0: to RAM:Secret.pkd, using the IDEA algorithm:
  370.  
  371.     PackDev DF0: RAM:Secret P IDEA.100 PASSWORD StupidPassword
  372.  
  373.  
  374. Decrypting RAM:Secret.pkd to df1:, a password is assumed to be needed:
  375.  
  376.     PackDev RAM:Secret DF0: PASSWORD StupidPassword
  377.  
  378.  
  379. Writing data from DH0:dh1data.pkd to DH1:
  380.  
  381.     PackDev DH0:dh1data DH1:
  382.  
  383.  
  384. Writing  data  to  an  unformatted  floppy disk (DF1:), not asking for user
  385. input, nonstandard parameter order, creating a block list file.
  386.  
  387.     PackDev ETDF NI FROM DF1: TO DH0:disk BLOCKLIST ram:disk.blocks
  388.  
  389.  
  390. Viewing the header of a .pkd file (ram:abc.pkd; not present: ram:abc):
  391.  
  392.     PackDev VIEWFILE ram:abc
  393.  
  394.  
  395. Viewing device information of DH0:
  396.  
  397.     PackDev VIEWFILESYS DH0:
  398.  
  399.  
  400. Testing archive integrity of foobar.pkd, an encrypted archive
  401.  
  402.     PackDev TESTFILE foobar PASSWORD YohMan
  403.  
  404. v) XPK packers and their efficiency with PackDev
  405.  
  406. Here  is a list of all XPK packers I know.  Note that some seem to be buggy
  407. (HUFF  crashed with older versions of PackDev.  It was my fault, sorry) and
  408. some don't function correctly with the default buffer size (see above) etc.
  409. You  will  get a short info about them if they are installed on your system
  410. when starting PackDev.  The entries under "Packing efficiency" are produced
  411. with  a  strongly  fragmented  floppy  disk (880k size, 44% full), using an
  412. A500/030/25MHz with 4 MB Fast and 1 MB Chip RAM.  This list is not complete
  413. because  my  test  disk  is  lost  and  I  don't want to do all this again.
  414. Especially the graphical representation was hard work.
  415.  
  416. ----- Info -------   ----- Packing efficiency -----
  417. Packer     Version   Pack time    File size   Speed
  418.                      [seconds]     [bytes]  [bytes/s]
  419.  
  420. xpkMASH:     1.98     43.56s       181792      9150
  421. xpkCBR1:     1.2      25.34s       336400     15750
  422. xpkCRM2:     1.1     Library cannot be opened
  423. xpkACCA:     1.0      25.88s       228472     15450
  424. xpkCRMS:     1.1     Library cannot be opened
  425. xpkLHLB:     1.0      81.00s       188620      4900
  426. xpkSQSH:     1.10     46.74s       204340      8550
  427. xpkSMPL:     1.0      27.08s       335356     14750
  428. xpkSHRI:     2.0      87.78s       169400      4550
  429. xpkRLEN:     1.1      26.64s       329140     15000
  430. xpkRDCN:     3.3      25.80s       229836     15450
  431. xpkNUKE:     1.0      33.52s       192960     11900
  432. xpkNONE:     1.0      24.64s       413128     16200
  433. xpkIMPL:    1.0.79   174.26s       191792      2250
  434. xpkIDEA:     1.99    Cryptor, no specs determined
  435. xpkHUFF:     0.63    Functions now, no specs determined
  436. xpkHFMN:     1.28     26.16s       289696     15250
  437. xpkFEAL:     1.03    Cryptor, no specs determined
  438. xpkFAST:     1.06     38.22s       220156     10450
  439. xpkENCO:     1.0     Cryptor, no specs determined
  440. xpkDLTA:     0.1      24.84s       412932     16050
  441. xpkDHUF:     0.58     25.00s       412980     15950
  442. xpkCBR0:     1.0      25.32s       336400     15750
  443. xpkBLZW:     3.0      27.18s       242384     14700
  444. xpkRAKE:     1.5      28.60s       190484     13950
  445.  
  446.  
  447. Graphical representation of packing efficiency (incomplete)
  448.  
  449. Ratio unpacked/packed [%]
  450.  
  451.      ^
  452.      |                 + SHRI
  453.      |
  454.      |                  + LHLB           + MASH
  455.  200 +        + IMPL                                + NUKE  + RAKE
  456.      |                                 + SQSH
  457.      |                                        + FAST                ACCA,
  458.      |                                                            + RDCN
  459.      |                                                         + BLZW
  460.      +
  461.      |
  462.      |                                                            + HFMN
  463.      |                                                           + RLEN 
  464.      |                                                     SMPL +   + CBR1
  465.  100 +
  466.      |                                                              + DHUF,
  467.      |                                                                DLTA,
  468.      |                                                                CBR1,
  469.      |                                                                NONE
  470.   50 +---------+---------+---------+---------+--------+----------+-------->
  471.      0                  5000               10000               15000
  472.                                                             Speed [bytes/s]
  473.  
  474. Following  the  graph,  the  best  packer for me is RAKE when I read from a
  475. floppy drive, because gain*bytes has a maximum value for this packer.  If I
  476. wanted  to  read  from a fast device (RAD:, FFx:, DHx:), one of the packers
  477. more  to  the  left (e.g.  MASH or SHRI) may be better because the time for
  478. reading the disk will become shorter.  The more to the left the entries are
  479. here, the more they will be shifted to the right in this case and the speed
  480. will  become less important.  Unpack speed is not considered here, this may
  481. also  affect your (and my) choice.  Experiment with SHRI, MASH, NUKE, RAKE,
  482. RDCN or ACCA, they seem to be most effective.
  483.  
  484.  
  485. vi) Compatibility
  486.  
  487. This  program  needs OS V2.0+ to run.  If you want to use xpk packers (very
  488. likely),  you  need  the  xpkmaster.library and some packer sublibraries (I
  489. suggest  SHRI,  MASH,  NUKE, RAKE, RDCN or ACCA).  The xpk package and some
  490. more  sublibraries  should  be  present  in  any good pd mailbox and in the
  491. Aminet.   They  are  not  included  here  because it's much larger than the
  492. PackDev package.
  493.  
  494.  
  495. vii) Bugs
  496.  
  497. If  the  disk  should  be  formatted,  the track size of the disk (e.g.  11
  498. blocks  for a floppy disk) must currently be equal to the track size of the
  499. disk  from  which  the file is read.  This is not necessary, but coding the
  500. thing  this way is easier and faster.
  501.  
  502. Should you detect a bug, please tell me (email or phone). Be as specific as
  503. you can.
  504.  
  505.  
  506. viii) Future
  507.  
  508. What may be done in the future:
  509.  
  510. GUI  (yes, really, I will do it...tomorrow :-))
  511. Device that treats an archive like a disk
  512. Built-in packer
  513.  
  514.  
  515. What will not be done in the future:
  516.  
  517. DMS compatibility (see below)
  518.  
  519. Localization  (I  hate those zillions of useless files, there is no support
  520. for  people  who  cannot speak English.  This sounds arrogant, but I think,
  521. this tool should not be used by inexperienced users anyway)
  522.  
  523. Versions  for each type of processor (I made the experience that doing this
  524. causes  a  negligible speedup that is not worth even writing this sentence,
  525. but perhaps there will be a C compiler that can do better...)
  526.  
  527.  
  528. ix) My personal opinion
  529.  
  530. Note that PackDev will never support the DMS packing algorithm, because the
  531. current  authors  of  DMS  (ParCon)  use  stolen code from the original DMS
  532. (which  was  written  by  someone else who has not given up his copyrights)
  533. and  release  DMS  as shareware.  In my opinion, they are not allowed to do
  534. so.   It's  not  enough to assume that you can do with copyrighted material
  535. what  you want, only because you cannot contact the real authors.  It would
  536. be  OK  to  release DMS in the public domain, but making money with someone
  537. else's  code  is called FRAUD and THEFT.  It's worse than piracy - shame on
  538. you,  ParCon  !!!   Note  that  you may own pirate software if you bought a
  539. "registered"  version  of  DMS  that  has  a version greater than 1.11.  An
  540. interesting consequence:  It may not matter if you use a cracked version of
  541. DMS  or  a "registered" version.  If ParCon doesn't have the copyrights for
  542. DMS, they cannot sue for cracking it.  I've seen mailboxes that put cracked
  543. versions of DMS into their PD area for this reason.
  544.  
  545.  
  546. x) How to contact me
  547.  
  548. Christian Wasner
  549.  
  550. Phone  ++49-40-7236349
  551.  
  552. Email: u241045@niesel.dkrz.d400.de
  553.        CRISI@BLACKBOX.SHNET.ORG
  554.  
  555. If possible, use email.  If you phone me, please do it from 8pm to 10pm and
  556. don't forget that I have Central European Time here, so 8pm for you may not
  557. mean 8pm for me !
  558.  
  559.  
  560. xi) History
  561.  
  562. Aug-14 1994 V1.0 - Initial release, never released I think...
  563.  
  564. Aug-18 1994 V1.1 - Minor bugs fixed
  565.  
  566. Apr-16 1995 V1.2 - Problems  with  OFS disks fixed (PackDev didn't know the
  567.                    number of free/used blocks)
  568.                  - ALL, NOVERBOSE, QUIET and NOCONFIRM keyword added
  569.                  - Doc file corrected and improved
  570.                  - Filesystem  type  is  now  read  from block 0 instead of
  571.                    reading  it from the DOS node, because the latter always
  572.                    contains DOS\0 for Amiga floppies
  573.                  - Minor bugfixes
  574.  
  575. Apr-30 1995 V1.3 - If the partition with LIBS: on it is to be handled,
  576.                    PackDev could not open XPK (sub-)libraries, fixed
  577.                  - Minimum XPK buffer size corrected
  578.                  - TESTFILE parameter added
  579.                  - Checksums installed, in case an xpk packer doesn't keep
  580.                    them..
  581.                  - Argument handling changed (you got me, Christian...)
  582.                  - BLOCKLIST parameter added
  583.                  - PASSWORD parameter added
  584.  
  585. Jul-02 1995 V1.4 - OS 2.0 workaround: Filesystems cannot be inhibited if
  586.                    the DosList is locked. Now it is unlocked before
  587.                    inhibiting (Thanks, Golly).
  588.                  - Bugfix: DosList was locked with LDF_READ|LDF_DEVICES,
  589.                    but unlocked with LDF_READ|LDF_VOLUMES.
  590.                  - Minor docfile editing.
  591.