Modifications, fixed bugs and new features:


The early versions of 1581-Copy were 1581-Dump 0.00 and 0.20 and 1581-
Copy 0.00, 0.15, 0.20 and 0.30. These were internal design studies only
and so, feature lists or modification dates are not available anymore.
The first more or less working version was 0.40 and because it was the
first distribution, the documentation phase started there.



1581cp4:  1581-Copy, version 0.40   1998-09-28

  Mod: The whole track is read into a buffer, before writing it to disk.
       This makes the tool much more faster on systems, that run a disk
       cache in the background.

  Mod: The program isn't aborted anymore, if an error occurs, there are
       done default actions for the case of an error. Ex.: If a read
       sector fails, an empty buffer (0x00) is written to disk.

  Mod: The number of retries can now be defined via command line.

  New: Implemented the sector header Read ID command, so that track
       reading/writing can be started with the current sector number.

  Info: I gave up implementing a polling mode, because I am unable to
       handle it. So DMA based floppy disk access can be used only.



1581cp41: 1581-Copy, version 0.41   1998-10-04

  Fix: The "retry" variable wasn't initialized, so if the argument /T:xx
       is not given, the tool may fail to read and steps through all the
       tracks very quickly with an error message on each. That was an
       error combination, because I used variables that were "signed int"
       instead of "unsigned int".

  Fix: Writing wasn't possible, because I did a read operation within the
       CBM 1581 high level code.

  Fix: There was a weird condition, that prevented one of my drives from
       seeking on startup (I bought a brand new Teac 3,5" drive, so that
       I can test the tool on three different machines now). 

  Fix: Arguments weren't checked correctly



1581cp42: 1581-Copy, version 0.42   1998-10-18  (unreleased)

  Mod: Making ReadID faster, if an error occurs.

  New: One of my controllers (Adaptec AHA-2842 VL-to-SCSI, with
       integrated floppy support) has much problems with single sector
       reading, so I implemented new routines for multiple
       sector/multiple track reading (real "track access"). This could
       improve the performance under multitasking environments, too.



1581cp43: 1581-Copy, version 0.43   1998-10-18

  Fix: The multiple _track_ reading slows done the performance on some
       other controllers, so this is disabled now (see version 0.42).

  New: Introducing an interleave parameter, to increase the performance
       on unusual controllers (like my Adaptec). This is needed, because
       if the multiple sector read routine fails, the single sector read
       is used and an interleave of 2 is needed, so that the performance
       is not too low.

  New: Introducing a parameter, so that the using of the multiple read
       sector feature of the floppy disk controller can be switched off
       and it is not used for the first read/write try.



1581cp44: 1581-Copy, version 0.44   1998-11-01  (unreleased)

  Mod: Improving outFDC, so that TIMEOUTs can be detected by the caller
       of this low level function. If outFDC produces such a timeout, the
       whole operation must be cancelled, because the controller cannot
       be programmed properly.

  New: If the user presses Escape during operation, the transfer is
       aborted (this affects reading, formatting, writing).

  Mod: I disable all interrupts now, when I program the DMA controller.
       The '#defineable' option was already there, but I never tested it.
       Currently I _believe_, it would be better to do it.

  Mod: Setting single sector reading as default. The parameter "/P"
       selects "multiple sector reading" now. The new routines caused
       much more problems than they solved.



1581cp45: 1581-Copy, version 0.45   1998-11-08

  Mod: Inverted all the disk side descriptors in all the low level
       functions, so that transferring/formatting in the high level
       routines starts always with side 0 instead of side 1 (this is a
       beauty fix only). Take notice, that this doesn't change anything
       what really happens to the disk.

  New: After formatting a disk, but not writing some stuff on it, the
       BAM is written with an empty default BAM (?timer value label).

  New: Introducing a very simple BAM copier, to support people with
       heavy performance problems, that only want to transfer one file.

  New: Added a function, that is able to detect, if a disk is in, out or
       just inserted (the Disk-Change-Detection routine). I needed the
       whole last week to let it go work nearly perfect.

  Mod: Improved outFDC, so that the FDC data register is cleared, if
       there are result bytes from previous commands.

  New: Reimplementing Joe Forster's autolabel algorithm, so that mass
       importing and mass formatting becomes possible with least user
       interaction. This should be a demonstration of the new
       Disk-Change-Detection routine.

  New: Added a disk scanner util, that is able to test reading sector
       headers on all tracks and sides of the disk at all the different
       modulations (FM and MFM) and bitrates. Now some of you may be able
       to send me physical disk layouts of unknown disk types
       (CMD FD2000, FD4000 and other). Perhaps you are also able to
       identify copy protection mechanisms of some commercial sold
       software disks!



1581cp46: 1581-Copy, version 0.46   1998-11-24

  Mod: Changed the calculation of the "real" size of an sector from
       256*BytesPerSectorValue to 128u<<BytesPerSectorValue. The old
       method was definetly wrong. With the sector size of 512 bytes
       (CBM 1581 BpS value of 2), there was no difference in the result
       and so I didn't recognize it until now, where I started the
       DISKSCAN implementation of the Raw-Mode-Read-Track function, where
       I need sector sizes of 8192, 16384 and 32768 bytes (values 6, 7
       and 8).

  Mod: Changing disk drive descriptors from 0 & 1 to A: and B:

  Mod: Changed the format and R/W GAP sizes. The R/W GAP size does only
       affect the multiple sector reading or writing of disks. On a CBM
       1581 format the GAP sizes are a little bit smaller, than on the
       format I choosed and especially the CBM 1581 format GAP size was
       smaller than the 1581-Copy R/W GAP size. Now it is absolutely
       clear to me, that the multiple sector R/W couldn't work correctly
       with CBM 1581 formatted disks (and a test approved this:
       formatting a disk with version 0.46 and trying to read with
       version 0.45 and the switch /P).

       Old 1581-Copy format GAP size was: 46  0x2E
       Old 1581-Copy R/W GAP size was:    42  0x2A
       CBM 1581 format GAP size is:       35  0x23
       CBM 1581 R/W GAP size is:          ???
       New 1581-Copy format GAP size is:  35  0x23
       New 1581-Copy R/W GAP size is:     12  0x0C

       There's still another difference between the CBM 1581 and a PC
       floppy disk format: The PC FDC creates the so named System 34
       format, while the CBM 1581 creates the "ISO" format. The
       difference is, that on the "System 34", there's a header of 146
       bytes instead of 32 bytes with the "ISO" format (there are 114
       byte more with the "System 34"), but I think, that doesn't matter.
       When the track is beeing formatted, it may overwrite this header
       at the end of the format process. Until now no one detected any
       problems with this and because in the past the GAP sizes were
       bigger, the header was overwritten all the time.

  Fix: The low level command seek should be more reliable now, because it
       checks the internal controller track value against the destination
       track number (after sense interrupt status).

  Fix: The low level command recalibrate should be more reliable now by
       letting it check the track 0 signal (drive status command).

  Mod: Implemented a 1581 high level function for resetting the drive
       controller, so that the drive is recalibrated after.

  New: Implemented a Media-Detection routine, so that CBM 1581 compatible
       disks can be detected reliably. This routine should also check,
       which drive type (5,25" or 3,5") is currently used, this means a
       hardware check (asking the CMOS).



1581cp47: 1581-Copy, version 0.47   1998-11-29  (unreleased)

  Fix: One of the error messages said, that there was an error, when
       "writing" a track, but in fact, the track couldn't be _read_.



1581cp48: 1581-Copy, version 0.48   1998-12-02  (unreleased)

  Mod: A complete restructuring of the whole low level code, so that the
       CMD FD2000 disk format can be recognized in the future.
       Additionally I added some comments and changed the interface
       of many of the functions. This needs a change of the high level
       CBM programming library, too.

  Mod: All the different FDC command sets are now issued by one body
       function, that does the common programming sequences.

  Mod: I simplified and reduced the code by only reading one side of a
       cylinder (a track), but not the whole cylinder. This is needed
       before implementing the verify routine. It may result in a loss
       of transfer speed, but it saves more memory, because of the half
       buffer size is needed and less code.

  Mod: The multiple sector read/write routines don't automatically issue
       the single sector routines after an error anymore. This has to be
       done from the main program now.

  New: Removed the /W switch by making it possible to autodetect, if the
       source is an image or disk drive (the ':' of the disk drive
       descriptor is done for this).



1581cp49: 1581-Copy, version 0.49   1998-12-16

  New: Adding performance measurements, so that the time needed for a
       transfer operation is printed out. 

  New: Added a verify routine for format and write operations, but take
       notice, that this doesn't mean, that the disk contents are
       compared against the source buffer. The written sectors are only
       CRC checked by the FDC again. The DMA controller knows a "verify"
       mode, but I couldn't find out, how to check, if there were
       differences or not.

  Mod: The high level library has been restructured, so that there are
       now only 2 body functions for single sector and multiple sector
       track reading, writing and verifying. This reduced the code size
       a lot. The format routines has not been added, because it needs
       some extra handling.

  Mod: Changing the error reporting in the high level library, so that
       the cylinder number and other parameters are corrected to the
       logical CBM naming.

  New: Added a media type FDC parameter change function, so that other
       formats can generally be supported with the low level routines.
       But there will not be all 1581-Copy parameters supported, like
       the BAM copy switch.

  New: A first version of CMD FD2000 disk support has been added for test
       purposes. Currently this format is not well supported, e.g. BAM
       copying is not able and most likely will never be, because the CMD
       partitioning system seems to be very complex. The writing of a
       default BAM and system partition is currently not supported too,
       but this will be added, after I got some (empty) images.

  Mod: Improved readSectorID, so that variable timeouts can be selected.
       This way I was able to realize a much faster media detection
       routine.

  New: Added default extension generation (D81 and D2M), if a filename is
       given, that doesn't contain an extension. Filenames, that should 
       not contain an extension can be specified by adding a dot to the
       end (IMAGE. ). If a disk is written, the routine searches for
       files with the different extensions until it finds a matching
       combination of an image and disk media type.



1581cp50: 1581-Copy, version 0.50   1999-05-13

  Mod: Changed the default disk formatting label from "1581 Copy format"
       to "1581 copy format" so that commodore users are no longer
       confused by graphical chars.

  New: If the disk is write protected and data has to be written or the
       disk has to be formatted, there comes a write protect error
       message now and the whole operation is aborted immediately.

  Mod: Added more support for CMD's FD 2000 disks. When formatting a
       disk only, there's some default data written to the disk now.
       The physical layout of such disks is as follows:
          81 cylinders per disk, 2 heads per cylinder (a track),
          10 sectors per track (per head), 1024 bytes per sector,
          sector header side ID descriptors are _swapped_ like with
          the CBM 1581 disks.
       BAM copying of FD2000 remains still disabled, I don't want to
       integrate the complex partitioning system of these disks.

  Mod: Integrated a very simple RLE decompressing routine for all the
       different headers.

  Mod: Integrated the formatting into the main transferring loop, so that
       it wouldn't be a so big problem to integrate intel's controller
       feature "format'n'write" later. By the way this change made the
       tool 5 seconds faster, if you format a disk and write an image to
       it.

  New: Now that formatting is integrated into the main transferring loop
       it was no further problem to add the special extended command of
       the intel 82078 FDC, that makes it possible to format and write a
       track at once.
       The problem is, that none of my machines is able to execute this
       command correctly. My 486 machine could be detected as an intel
       controller 82078 with the chipmask stepping 3. But the command
       seems not to work at this machine, too. All what happens is that
       the FDC does a normal formatting and so writes the wrong data to
       the disk. Well, I think, I have to search for some more
       documentation about different controller implementations to fix
       this.
       Because of this problems, verifying is forced when you use this
       feature. Please, if you have some success with this, report this
       to me.

  Rmv: I removed the DISKSCAN utility from the package, because it won't
       be needed anymore. I don't plan to integrate more different floppy
       disk formats into 1581-Copy.

  Mod: Again did some more integration of the format process. Now it has
       been added directly into the single/multiple sector high level
       functions. This way a track is beeing reformatted again, if
       verifying is enabled and fails. Additionally this brought me an
       fucking great speedup. Formatting, writing and verifying a disk
       should be done within 115 seconds (multiple sector enabled, but
       without the 82078 format'n'write feature).

  New: Created some user menu entries for The Star Commander, so that
       disk images can be directly transferred from within SC.



1581cp51: 1581-Copy, version 0.51   1999-08-17

  Fix: When calling the low level command "readSectorID" the function
       returned always "false (0)", when called with a timeout of less
       than 0, what means to not to wait for command completion. This is
       needed for the the disk change detection. This error caused no
       bug, but I discovered it while developing 1541-Copy, a hardware
       supported GCR disk reader.

  Fix: The function "readSectorID" is internally called with a NULL
       pointer for the result structure. This caused a segmentaion
       violation, when compiled with DJGPP. The pointer is tested against
       NULL now before any values are written to it.

  Mod: Disabling the extended floppy disk controller code again by
       commenting it out (#ifdef FDCintel82078), because there have not
       been any positive success reports and I don't see any use.

  New: Added support for some unusual CBM1581 disks, for an example such
       ones, that are copied with the Maverick suite. The side
       description IDs of the sector headers of such disks are marked
       with 0 on both sides instead of 1 (side 0) and 0 (side 1). Take
       notice that 1581-Copy does recogize such disks only in read mode,
       you will not be able to write any contents to such a disk, please
       reformat the disk, if you want to write anything to it.

  Mod: Extended the "ignore SideIDs" feature to the write and verify
       functions, but it can be disabled via a compile switch. I want to
       discuss this first and let some testers give me some results.
       Formatting still remains "hard wired" to swapped SideIDs, I don't
       see any reason, why to allow such sophisticated formats like the
       Maverick's one.

  Fix: Found and fixed a very annoing bug in the single sector copy
       routine. If no sector to do could be found anymore and the current
       retry loop is exited, the first sector to do in the next loop was
       calculated wrong. I had to restore the old value of the last
       sector done, if the loop is exited.

  Mod: After some test reports the "ignore SideIDs" feature is now always
       used in the read, write and verify routines.

  New: Added the URL of the fdutils-package for all the linux freaks,
       who want to have a more comfortable (technically aspect) way of
       transferring different disk layouts.

  New: Made the CBMcheckDisk function independent from the SideIDs, too.
       This required an additional parameter, so that the check can be
       disabled/enabled by user request (the default remains enabled).
       An additional command line parameter let's the user disable the
       "correct CBM side ID swap" check. But then 1581-Copy has nearly no
       chance to detect incompatibilities between source and destination.

  Info: All experimentations with a real verify or better named a compare
       routine, that utilizes the FDC command "ScanEqual" failed. It
       seems that ScanEqual doesn't work at least with my controller, so
       I did a "brute force" test by reading the disk contents into
       another buffer and letting the processor do the comparison, but
       this CPU based comparison was much too much too slow, so I do the
       simple CRC verify again.

  Mod: Doubling the size of the track buffer, so that both sides of a
       track can be transferred to/from the harddisk at once. This
       synchronizes harddisk reads/writes with floppy drive head steps.
       It was no good solution to do harddisk transfers between diskette
       head changes, because harddisk transfers sometimes needs more time
       than changing the head of the floppy drive. I could detect bad
       performance effects especially on non SMARTDRIVEd systems. This
       should be a good compromise to the changes made to version 0.48.

  New: Added an additional performance analysis, that prints out the
       estimated time for completion. It's a track based analysis.

  Mod: Changed the "changeExtension" function, so that extension changing
       can be forced, if multiple disk operation is enabled.

  Mod: 1581-Copy is now distributed under the label "FairLight tools".
       Bacchus encouraged me to do this after beeing one of the main
       distribution sites of 1581-Copy for a long time. A positive side
       effect is, that 1581-Copy gets its own mail address this way.



1581cp52: 1581-Copy, version 0.52   2000-06-26

  Mod: Started restructuring the biggest heap of shit of 1581-Copy, the
       main program. Without this, I don't feel able to implement further
       enhancements like FD2000 BAM copy support.

  New: Added some information, so that the user knows, when a retry of an
       operation is done after some failure. Along with this I changed
       the type of some of the retry counter variables from "uint8" to
       "signed char", others have been left as "uint".

  Mod: I got my own internet domain, so there are some changes to my
       contact informations.

  Fix: The Format'n'Write routine must do the seeking itself, because it
       doesn't call the central CBMPreRWV function.

  Fix: With the code restructuring I forgot the format option. It was
       impossible to format any disk.

  Mod: Changed the FDC version determining code, so that the version and
       part ID of more modern extended controllers is submitted directly
       to the caller's context (instead of reinterpreting the results and
       defining own FDC version IDs).

  Mod: Enabling finally the extended floppy disk controller code
       (especially for intel 82078 FDCs).

  New: Special 82078 compatible commands have been added for test
       purposes (#ifdef). Now I can test the really 1581 compatible ISO
       format (instead IBM's System34). But Nicolas, the 82078 tester has
       got a very special high speed tape controller, that needs another
       option, so that the FDC takes special handling for the external
       48 MHz oscillator (instead normally 24 MHz).

  Fix: Formatting a disk only did also "write" something to every track
       of the disk, but not only to the track containing the BAM.

  Fix: When formatting a disk with BAM copy writing enabled, unmarked
       tracks weren't formatted also. Now unmarked tracks are always
       formatted and verified, if selected.

  New: D81 and D2M disk images with error info attached are also
       recognized now. 1581-Copy doesn't use any information from the
       error block, neither does it create image files with error info
       attached itself. That is because I don't know, which _real_ error
       codes (job codes) the 1581 or FD2000 drive could create for which
       scenario (protection schemes).

  Mod: Changed the return codes of the command line interface, the return
       codes are now as follows:

        0 -  operation completed successfully, or the multiple disks copy
             loop has been exited by user request

        1 -  command line parameter error or help called
        2 -  operation has been aborted by user request

       10 -  configuration error, wrong drive type (no 3,5" drive)
       11 -  disk write protect error (format protect error, too)
       12 -  unrecoverable disk transfer error on at least 1 track
             (read, write, format, or verify errors)
       13 -  no or CBM incompatible disk found with switch /N

       20 -  image file open error
       21 -  image file read error
       22 -  image file write error
       23 -  no CBM compatible image file(s) found

       30 -  automatic filename (index) generation error
       31 -  automatic extension generation error

      1xx -  special debug return codes

      Note: general FDC communication errors are currently not caught,
            I _need_ C++ exception handling, arghhhh!!!

  Fix: When 1581-Copy had to wait too long for a new disk, the motor
       switched to off and the detector couldn't detect a disk change
       anymore, the last status given was "(old) disk is in" instead of
       "disk is out". It seems, that this bug occurs only in the DOS box
       of Win9x and only after some files have been copyied to a normal
       disk with DOS/XCOPY previously.

  Mod: Removed the examples from the help screen, users are redirected to
       the manual instead (the help should fit into 25 lines and there's
       enough room for some new options)

  New: Added a note to the GNU-License to the help screen

  New: Added support for multitasting OSes by calling INT 2F/0x1680 in
       the disk change and the controller interrupt wait loop; it
       releases the current virtual machine time-slice on every count.

  New: Handle "FDC doesn't answer ..." errors in a better way. It should
       be checked, if the disk status has changed, so that missing
       sectors don't produce an error.

  Mod: Using multiple sector copy as standard now, single sector copying
       is enabled with the switch "/S". Because more and more users are
       working under Win9x, the multiple sector feature is a faster and
       better preselection.

  Fix: When formatting a disk only, the BAM copy switch is not allowed

  Mod: Changing BAM copy from cylinder based copying to track based
       markers, that should save some more time. Wow, you won't believe
       how fast the step motor can run, if there has only one side of a
       cylinder to be copied.

  New: Added the parameter "/R:xxx", so that the step rate interval
       length can be preassigned by the user. The parameter's dimension
       is 0.25 milli seconds. It didn't increase the standard copy speed
       (with lower times), but may have advantages when BAM copying disks
       with big gaps of unallocated tracks.

  Mod: Changed the "1581-Copy setup", so that intel 82078 options are
       only printed, if such a controller is detected.

  New: Added an autodetection for external 48 MHz osciallators, when
       intel 82078 FDCs in a 64 pin chip design are used. These
       controllers need a "fix" to operate with 24 MHz.

  New: Added a parameter, so that the autodetection of an external 48 MHz
       oscillator of intel 82078, 64pin chips can be overstriked by a
       fixed value (48 Mhz external oscillator installed: yes, no)

  New: Added a switch for disabling the diskchange detection at the
       startup of 1581-Copy for better batch integration (/N). this is
       for letting 1581-Copy abort, if an incompatible disk format is
       detected so that the calling program can better react to this
       "user error", 1581-Copy will not hang in the diskchange loop.

  Mod: The BAM allocation determination code has been restructured
       completely, so that embedded images can be supported.

  Fix: If no multiple disk operation is selected, 1581-Copy should
       nevertheless generate a new file name, if there is no extension
       given. This didn't work and 1581-Copy always overwrote existing
       files. Overwrite mode nevertheless is available, you only have to
       specifiy an extension with the destination file name. The provided
       sc.mnu file for The Star Commander should work now as specified.

  Mod: The sc.mnu file has been changed to meet the command line
       parameter changes of 1581-Copy (replaced /P switch, new /N
       switch).

  Mod: The sources have been changed a little bit, so that they can be
       compiled with Watcom C too. But I couldn't see any advantages with
       this compiler, except that the code becomes bigger.

  Info: Creating a Win32 console mode application of 1581-Copy failed,
       because VC++ rejected too much of the DOS dependent stuff. Watcom
       C is able to build a Win32 console application, but produces code
       that cannot executed properly.



1581cp53: 1581-Copy, version 0.53   2001-02-11

  New: Added a first version of FD2000 BAM copy support.

  Mod: FD2000 native mode partitions do know their own size, so it is not
       needed anymore to take this information from the system partition.

  Fix: 1581-Copy didn't work with PTS-Dos, but produced a complete hangup
       (GO64 article). This only happened, when PTS-DOS was started in
       Windows incompatible mode.
       After months of debugging, I realized, that there went something
       wrong with the DMA buffer transfer, and that PTS-DOS and the whole
       PC was in fact _CRASHED_ completely. Something happened, that
       could never be debugged, only testing different scenarios and
       reading many books about the PC's hardware helped in this case.
       Well the truth is, that not only PTS-DOS was affected by this bug,
       but potentially all DOSes, where 1581-Copy was loaded into the
       memory in a way, so that the track cache buffer crosses a page
       boundary (64 kB). Because the DMA chip cannot transfer data about
       such a page boundary, it overwrote data at the beginning of the
       same page. In the case of PTS-DOS, the BIOS data area was
       affected. This is a very critical bug and all older versions of
       1581-Copy are affected by it, so that I have to recall and remove
       these versions from the web.

  Mod: Because the buffer allocation and DMA transfer routines have been
       fixed, some other fixes (no real fixes) could be removed and the
       compilation could be optimized again. Now I can create a COM
       executable again and the low level routines can be optimized to
       fastest speed.

  Rmv: The really 1581 compatible ISO format (instead IBM's System34)
       will not be used in future versions, because at least Nicolas
       couldn't see any practical advantages and I'm the last one, who
       needs "real emulation" like 1541 track step noise, 1802 monitor
       feeping or "bad" 6581 SID chip quality.

  Mod: The Format'n'Write routine is called now without always doing a
       verify operation after. At least Nicolas couldn't detect any
       problems with it.

  Mod: Added the follwing return code:
       40 - track buffer allocation error
       This can happen, if there's not enough memory, or if the routine
       is not able to allocate a buffer, that does _not_ cross a page
       boundary.



1581cp54: 1581-Copy, version 0.54   2002-07-14

  Fix: The buffer allocation routines of version 0.53 weren't as well
       implemented as I thought, they had some problems and disadvantages
       and so a complete new buffer management has been designed. The
       disadvantage is, that I can forget the tiny memory model forever
       now (creating .COM executables).

  Mod: Because of the new buffer management, the sources can be compiled
       with Watcom again.
       
  Mod: The meaning of the following return code has been changed:
       40 - buffer access out of range
       This can happen, if some job tries to access buffer memory, that
       is not in the allowed range of the initialised buffer memory.

  Mod: Some stupid static string compressions were undid.

  Mod: Some of the high level routine error strings have been grouped
       together into one string array (joberr).

  Mod: All email adresses have been changed into a non standard format
       ("@" and "." replaced by "_(at)_" and "_(dot)_"), so that they
       hopefully cannot be automatically interpreted by web grabbing
       machines.



My Could-Be-Done/To-Do list for further releases:

  New: Adding another switch (/Q - quiet operation) for batch processing
       that prevents 1581-Copy from printing too much info to the screen
       (setup, what to do, ...); there's no real use for most batch
       programs, so this is delayed until someone requests it.

  New: Adding support for the very unusual FD1000 disks, what means, that
       the detection code has to be expanded. If a 800 KB disk has been
       detected (probably a native CBM1581 disk) it has to be checked, if
       there's a system partition at track 81. If it is, it would mostly
       be a CMD FD1000 disk and 81 tracks have to be copied into an D1M
       image.

  Mod: Perhaps: Checking, if the use of virtual dma services is needed or
          at least useful (up to now, I couldn't find any reasons for
          needing this).

  New: Perhaps: Adding a possibility to list the main/root directory of
          an image or disk drive, so that disks can be distinguished
          easier. This topic has been discarded, because I don't want to
          do this with FD2000 disks; it's simply too much work, I would
          have to implement a more sophisticated track cache, that does
          the handling of single CBM block read requests.

  New: If FD2000 BAM is done, I could try to implement some sort of
       FD2000 "(sub)partition copy", that means to transfer the contents
       between D64, D71 and D81 images and FD2000 partitions. Well, this
       can only be done after directory listing has been implemented so
       that the user can decide which partition number to copy. And it's
       a difficult task, because I cannot use "whole track" operations
       like now; I would need to emulate real track/sector cache, that
       reads a track, changes some sectors and writes back the cache.

  The following ideas for a new tool named MFCOPY are delayed until I
  realized some other projects (there are too many, as always):

  Mod: Perhaps, don't know: Expanding the Media-Detection routine, so
          that all IBM-PC 3,5" standard disk formats are detected, too.

  Mod: Idea for the OO redesign: A "SetDriveParameter" (bitrate,
          modulation, header ID information to seek for) method, that
          is dependend from the selected drive, track and head, so
          that different sector schemes can be defined for each track
          and head (like with OS/2's XDF disks).

  Mod: Idea for the OO redesign: Implementing a great idea about an
          automatic registration process for new implemented custom
          objects for new disk types, that I got. A user should simply
          be able to implement a new object for his special disk type
          without changing anything from the main program. A simple
          init sequence (generating a static object, that does the
          registration with its default constructor) and a disk type
          detection method that the user has to implement should it
          make possible, that the main program can transfer disks
          without knowing anything about the disk layout. This will
          result in a _framework_ for all known and unknow disk types
          then. Will anybody really need this anymore, now that
          CD-Recordables and -Rewritables are the disks of today?



My planning for 1581cp55: 1581-Copy, version 0.55   2002-mm-dd

  the next steps from my To-Do list:

  Fix: Fixing all bugs found and/or reported

  New: HTML versions of the documentation

  Mod: More code restructurings (after D2M-BAM copy ???)
       - new routine for parameter checking..., let's check against a
         matrix a la (xx0x00110x -> this combination gives that error)
       - transferDisk(FILE *, drive, xfer, ...??? ) routine
       - consequently combining Write/Verify/Format/Read into one
         variable/enum

  New: Adding support for an optional configuration file (1581COPY.CFG),
       where the user can predefine his most important switches. Command
       line switches will toggle such predefined values then. The use of
       the config file should be made optional by another switch (/C).



Note: There will be never a version greater 0.99 of 1581-Copy, because I
      want to develop only the basic routines for im- and exporting 1581
      disk images, testing and fixing it until there are no errors
      reported anymore.
