Summary of changes from 4.43 to 4.44
------------------------------------

* Changes to the Disassembler

  - A major issue  with  how  comments  get  unloaded  before  exiting  the
    Disassembler has finally been found. The database was not being updated
    with the proper flags to indicate  that  the  comment  was  now  stored
    externally.

  - Attempting to disassemble a project for  a  second  time  would,  under
    certain circumstances, result in no output being generated even if  the
    assembly filename was changed.

  - Changes to destination links of direct strings would not work and would
    result in  the  removal  of  the  string  as  well  as  cause  a  "data
    corruption" message.

  - My code to detect a duplicate label/variable name was broken. It  would
    pass some obviously duplicate names, and fail some unique ones.

  - When changing a existing label or variable name,  you  could  sometimes
    change it to a duplicate name. I was only checking for a duplicate name
    on new labels and variables.

  - Re-wrote one core function (calculate memory array usage) for speed.

  - When generating a  disassembly  to  file,  and  specifying  the  output
    formatting to be "just like it is on  screen",  the  comments  are  now
    output in their full length. They used to be  cut  off,  just  like  on
    screen.

  - I've added a bunch more C64 zero page and low memory references  (below
    1Kb). I also added some debugging code to detect  duplicate  names  and
    addresses in these definitions. When I tried it, I  indeed  found  some
    duplicates in both the C64 and 1541  definitions  and  they  have  been
    fixed.

  - The "Src:" filename display was not being  cleared  when  switching  to
    another source file, leaving parts of the previous names behind.

  - A table being displayed would get broken up into multiple small  tables
    if a database entry existed within the table even if it had no label.

  - Sometimes the disassembly display for a file will start  right  at  the
    end, at the "End of file." line. When this  happens,  the  only  cursor
    movement that works immediately is HOME. I haven't figured out why this
    happens, but the condition is now detected and corrected  so  the  file
    will display from the beginning of the file instead.

  - The opening dialog when starting  a  new  project  used  to  ask  about
    skipping the load address on the files, and had a  checkbox  to  select
    it. It was confusing and  has  been  redesigned.  Also,  under  certain
    circumstances, the load address would be lost.

  - When starting a new project and you said "No" when  asked  to  use  the
    first two bytes  as  the  load  address,  subsequent  calls  to  set  a
    destination variable or link would be flaky.

  - The Fkeys displayed in the fkey bar in both the Project Manager and  DB
    Editor would revert back to the main fkeys if you called up the Opening
    Window from either subfunction. They would still  work  correctly,  but
    the text labels assignments would be wrong.

  - Fixed some  storage  issues  with  the  various  in-memory  arrays  for
    label/variable names, comments and direct/variable strings. Much  empty
    space could result  when  many  changes  are  made  to  these  entries.
    Hopefully this condition has been eased.

  - Fixed some visual and operational issues in the Add/Edit tables dialog.
    The tables are  now  all  lined  up  underneath  each  other,  and  the
    selection dot for them now works properly. The  SIZE  value  was  being
    retained between dialogs and so I have defaulted it to zero (blank).

  - Fixed error in final Auto-label dialog where the ending address was not
    shown properly.


* Discovered several nasty bugs in the GCR conversion routines

  - Conversion of D64+error bytes with error 20's was broken when going  to
    ZipCode6 and G64.

  - Conversion of ZipCode6 and G64 with specific errors (typically 20's) or
    missing sectors to D64+error bytes was broken. I  wasn't  checking  for
    missing sectors when reconstructing the D64, so some would  get  missed
    messing up tracks.

  - ZipCode6 sectors weren't  being  de-interleaved  properly.  This  could
    cause sectors in a track to be out of order.

  - Conversion from G64 to ZipCode6 when tracks were  missing  sectors  was
    broken. The ZipCode6 wasn't being re-interleaved properly.

  - The track offsets in the G64 headers were being written wrong

  - F64/D64 files were not being read correctly

  - Error 29 was not being generated properly and was coming out  as  error
    27 instead

  - Going directly between ZipCode6 and G64 didn't work right as I was  not
    re-ordering the sectors into linear order (0-x). Going  to  a  D64  was
    fine.

  - Both panels will now get updated if  they  are  pointing  to  the  same
    directories.


* Fixed some small bugs in  ZipCode/D64  conversion,  specifically  in  the
  ZipCode code portion.

  - During a multi-file conversion, if a ZipCode file was missing  a  file,
    the previous converted D64 would be deleted.

  - The checkbox button [ ] in  the  initial  dialog  box  for  ZipCode/D64
    conversion was on a different line from the button text.

  - If any error happens during conversion, the relevant filename will  now
    be shown in the error dialog box.


* Changes to the ROM/EPROM conversion

  - Rearranged the main dialog for space. Now I can easily add more options
    when needed.

  - Added "Swap D3/D4 data lines" option to allow for encrytion of the  ROM
    for the Excelerator Plus  FSD-2  and  Oceanic  118  drives.  They  have
    encrypted the ROM this way and swapped the D3/D4  lines  on  the  logic
    board to decrypt the data.

  - Changed the extensions to proper ones. Motorola Exormax is now EXO  and
    Intel Intellec 8 is now MCS.

  - Added many more known ROMs, mostly JiffyDOS, to the internal list


* Added EPROM (ASCII) format conversion to the Alt-F10 menu. This  function
  converts the common ASCII formats such  as  Intel  Intellec  8,  Motorola
  Exormax and Hexadecimal ASCII back to binary. The source ASCII file  type
  is usually auto-detected correctly.


* Some LNX files weren't recognized because  their  signature  was  shorter
  than expected.  I've  changed  the  way  LNX  signatures  are  parsed  to
  recognize shorter or longer ones. I've also changed  the  signature  that
  64Copy creates LNX files with, removing the version number and making  it
  more generic.


* Fixed a small bug in my CheckXXX code  dealing  with  logging.  A  string
  variable was defined too small and could be populated with a  very  large
  string causing memory corruption and making the logging fail (among other
  weirdness). The function to show the log failure was also somewhat broken
  as the long filename log file would be trimmed down to 20 characters  but
  the display window would be 76 characters wide.


* CheckZipCode6 has been enhanced to report if sectors were not seen or  if
  sectors were seen multiple times on a decoded  track.  Sometimes  sectors
  can be duplicated, resulting in some sectors being  duplicated  and  some
  missing. Also illegal sector values are now reported.


* D81  subdirectory  headers  were  being  created  with  improper  padding
  characters ($00) instead of $A0.


* The File Info (Ctrl-N) for MP3 files didn't take into account  a  ID3  V2
  TAG header. It is now detected and skipped. Now, the proper MP3  info  is
  displayed for files with a V3 ID3 V2 header. The info box also  shows  if
  either a V1.x and/or a V2.x tag exists.


* Corrected small error in ZIPDISK.DOC in my formats documents.


* Updated copyright notice to the year 2011


* Updated various locations that I am now compiling with Open Watcom v1.9

---------------------------------------------------------------------------

Summary of changes from 4.42 to 4.43
------------------------------------

* Major change to the cursor height, and what it means:

  - When the cursor is short (single line), it is in INSERT  mode,  so  any
    text typed inbetween other text won't overwrite. When it is tall,  this
    is OVERWRITE  mode,  so  any  text  typed  inbetween  other  text  will
    overwrite characters after the cursor. This applies to the Text Editor,
    the panel command-line and inside of dialog boxes.

  - When in dialog boxes and in either text, hexadecimal or  numeric  entry
    fields, you can use either the INSERT or ALT-INSERT keys to toggle  the
    INSERT OVERWRITE modes. INSERT mode is enabled by default.

  - The command-line on the panel display now supports INSERT and OVERWRITE
    modes, with INSERT as the default. When the  panels  are  visible,  you
    need to use the ALT-INSERT key to toggle the mode. When the panels  are
    not visible, the INSERT key will also work.

  - The INSERT and OVERWRITE modes  are  not  global.  Each  entity  (panel
    command-line, Text Editor and dialog box entry) have separate controls.
    The command-line setting tends to stay,  so  beware  that  changing  to
    OVERWRITE mode will keep that mode until changed again. It won't easily
    default back to INSERT. However, pressing ESC when at the panel display
    will change the mode back to INSERT.

  - The control over the cursor height from the Configuration window Visual
    Settings has been removed.

  - ALT-INSERT has been added to the dialog  box  entry  and  to  the  Text
    Editor for control over these modes, along with the normal INSERT key.

  - These changes also apply to the Disassembler as the windowing  code  is
    shared with that project as well.


* Changes to the Disassembler:

  - Labels and variables can  now  be  linked  to  create  chains,  and  to
    essentially any number of links long. You are no longer  limited  to  a
    single slave-master link. A master can  now  be  changed  to  a  slave,
    making the chain longer. Any destination labels or variables that point
    to any point in the chain  will  be  shown  as  "master  label  name  +
    difference" instead of the real chain location.

  - Removed the concept and switches for "Show  Source  Label  Only".  This
    option was used to override the linking that exists between labels  and
    variables on destination links, and simply show  the  real  label  name
    being poined to. It was never used, and became a problem with some  new
    features.

  - Auto-labelling will now link destination addresses that  are  indirect,
    so opcodes like "lda ($F3),y" will now have labels created for $F3  and
    $F4, and $F4 will be linked to $F3.

    ROM definitions like $FFD2 (chrout) will also have  an  extra  variable
    created at $FFD3  which  will  be  linked  back  to  $FFD2.  This  way,
    references to the upper address ($F4, or $FFD3 in  the  examples)  will
    show as $F3+1, or $FFD2+1.

    Two-byte indexed addresses, like LDA  $0817,X  and  LDA  $0818,X,  that
    occur within the program address range will be linked together.

  - Added 3 switches to  AutoLabel  to  control  what  extended  links  get
    created as well.  These  are  "Auto-link  zero  page",  "Auto-link  ROM
    addresses" and "Auto-link variables".

  - Can now disassemble source files with up to 20 character filenames  (16
    character C64 names + DOS extension). The previous limit  was  16.  The
    SPLIT FILE names that get used for assembly output can also support  20
    character filenames.

  - Improved the dialog box that comes up  when  attempting  to  start  the
    Disassembler with illegal files selected. You are now informed  of  the
    specific illegal files that were selected like directories, files  that
    are too big and filenames that are too long.

  - Auto-label now checks the memory usage of the storage arrays and  label
    database as it proceeds, and warns you when they start getting low. You
    will only get two warnings. Failure to ignore them  both  and  keep  on
    labelling will likely result in a full program crash.

  - Added compact naming format option for  branches,  jumps,  subroutines,
    labels & variables on the  Configuration  window  called  "Use  compact
    names for label/variable names". This reduces the size of automatically
    created names down from an average of 8 characters to 6, so more  names
    can be stored in a project. It just makes the names a little harder  to
    recognize for what they are.

  - ROM images are detected when starting a new project. If it  appears  to
    be a ROM image without load address bytes, you will be asked if this is
    the case, to enter a start address, and the project will be setup  with
    a single code region. Normally, files with load address bytes will have
    two regions created, one hidden for the load address, and  another  for
    the remaining code.

  - Removed the Configuration option "Skip first two  bytes",  and  instead
    now ask to skip the first two load-address bytes  when  you  start  the
    Disassembler with source files for a new project.

  - Label/variables names are now stored differently  in  memory,  with  no
    zero string terminator, resulting in an 11% space savings in  the  name
    array. This meant modifying several routines which  work  with  labels.
    Labels are also limited to the 7-bit ASCII range, from 32-127.

    1. Check and change labels as they are read in from  the  OVV.  If  any
       labels don't conform to the 7-bit ASCII range, modify them.

    2. All routines which allow the user  to  enter  label  names  are  now
       restricted to the 7-bit range. You can't even enter anything outside
       of this.

  - Once the Code/Data Separation routine finishes, you are no longer asked
    if you want to run the  Auto-Label  function.  It's  too  dangerous  to
    auto-label without checking the results  of  the  code/data  separation
    first, especially the newly-created tables that turn  out  to  be  code
    segments.

  - The disassembled code shown on the last page right before the line "End
    of file", would sometimes not allow editing or commenting.  It  behaved
    as though it was a blank line. It especially happened  when  the  final
    opcode was not an RTS.

  - Linked variables are  no  longer  output  to  the  assembly  file  when
    disassembling  to  an  ASM  file.  Since  they  are  invisible  to  the
    disassembly, there's no need to show them in the variable list.

  - When setting a QuickJump marker in a position that is already set,  you
    will be asked to OK it first. This way you won't mistakenly change  one
    already set by hitting the wrong keys.

  - When removing regions from the Project Manager, and you are left with a
    single region that is hidden, the hidden flag will now be automatically
    removed and you will be informed of this change.

  - Added some new key assignments.
    * J brings up the F9 "Jump to Address" window
    * Q brings up a new QuickJump drop-down menu
    * F brings up the F12 "Find" window
    * N goes to the next file in the project
    * P goes to the previous file in the project
    * I toggles the illegal opcode mode for the region

  - Added new help topics to deal with the plethor of  error  windows  that
    can happen when the Disassembler is launched, all  without  help  topic
    links.


* Added in basic PRIMO disk image detection at the request of Viktor Varga.
  The Primo computer is Hungarian, and used the 1541 as its  storage.  When
  you enter a D64 image, and it appears to be in PRIMO format, you will  be
  notified about this and to contact the PRIMO site as they are  attempting
  to  preserve  the  disk   images.   Visit   the   site   (in   Hungarian)
  http://primo.homeserver.hu for more info.


* Enhanced the Split Files (Ctrl-F8) function. You can now split files into
  a specified number of  parts  (999  maximum)  or  by  part  size  (bytes,
  kilobytes or megabytes). It is much more flexible than before.


* Added in the manipulation of ROM images  to  Alt-F10  (and  the  Commands
  menu) called "Convert ROM Images". You can strip off  the  load  address,
  expand an incomplete ROM  image  up  to  a  new  size  (with  padding  or
  duplicating the source ROM), convert to  an  EPROM-burner-friendly  ASCII
  format like Motorola Exorciser  (XOR),  Intel  Intellec  8/MDS  (INT)  or
  Hexadecimal ASCII (HAS) and split the output  into  sections.  The  EPROM
  formats are needed for EPROM burners that don't support BINARY  downloads
  but instead require files be sent in an encoded ASCII format.

  I've also included a small database of ROM checksums so that many of  the
  regular Commodore ones are recognized by this routine. If the image has a
  checksum that is in the database, then the name of the ROM and  the  part
  number (i.e. 1541 DOS 325301-01) will be shown in the  conversion  window
  otherwise it will show "unknown ROM image". If you have a ROM image  that
  you think should be in this recognition database then let me know  and  I
  can look into adding it.


* Combined several rarely-used functions (Clean WAV, Decode UU/HQX and  the
  Check DOS Files) onto Alt-F12. I am using this Fkey as a launching  point
  for the more custom & unique functions that most people will never use. I
  needed to do this because I ran out of FKeys for new functions.


* Disk images which have circular directories, which would cause an endless
  loop and a program hang  most  of  the  time,  were  not  being  detected
  properly. Some of the error messages about these faulty directories would
  be shown at the wrong times.  Many  of  the  functions  which  deal  with
  directories have been updated to better detect and report infinite loops.
  This also includes CheckDisk, and all the disk  reading  functions  (D64,
  D71, D81, D80, D82, D2M).


* When you entered a disk image, and a problem was detected that  you  were
  warned about (i.e. circular or  damaged  directory),  you  would  not  be
  warned again even if you exited that disk image.


* Circular directories found in CheckDisk were not being truncated  in  the
  correct spot. This would possibly cut the directory short.


* Added in ability to define TEXT input fields in the Button Controller  as
  7-bit input only. This limits the  input  to  ASCII  32-127,  no  special
  characters or control codes.


* When creating an image which allowed the entry of a name and  ID's  (like
  disks), the name field was restricted to 15 characters, and  the  ID  and
  DOS version fields were limited to 1 character.


* GCR (G64) images were not being created  with  the  format  ID's  in  the
  correct order in the GCR sector header. They were not matching  those  in
  18/0.


* The dialogs between Change Label and Create Images, for disk images,  are
  now consistent. The format ID's and DOS version bytes have been  combined
  on the Create  Images  dialogs,  and  you  can  now  create  images  with
  a mixed upper/lower case label and ID's.


* Converting from D64 to G64 would not preserve the format ID's. They  were
  not being read in advance to insert into the GCR sector header,  and  new
  random ones were being created. This would create a mismatch between  the
  format ID's and the ones in 18/0.


* Fixed up the scroll bar positioning code in the Help Viewer. It was  very
  old and incorrect.


* You can now specify the partition name, image label and format ID's  when
  you create a partition or disk type (1541, 1571, 1581) when inside a  D2M
  image.


* Added image label and ID/DOS ver entry  to  D2M  and  DNP  Create  Images
  dialog windows. Before, all these values were auto-generated.


* When creating a D2M from Create Images, you can now specify the partition
  name separate from the partition (image) label.


* Improved Unicode detection, reducing false detection when in  the  Viewer
  and Text Editor.


* Fixes and cleanup in the CRT.TXT format document. Added CRT types 28-31.


* Added new CRT types to CheckCRT. Also, the /EXROM and  /GAME  line  logic
  levels are reported better (low or high, active or inactive).


* Now compiling with Open Watcom v1.8


* Updated more HELP topics

---------------------------------------------------------------------------

Summary of changes from 4.41 to 4.42
------------------------------------

* If the screen height (line count) is changed when a command  is  executed
  on 64Copy's command line, the old video  size  is  restored  when  64Copy
  reloads. For example, shell out when the line count is  50,  an  external
  command changes the height back to 25, then 64Copy will restore the video
  height back to 50 lines. Combine this with the  retaining  of  the  video
  information (below), and you lose almost nothing on screen.


* When switching between video modes  (25,  43,  50  lines),  either  using
  Alt-F9 or through some external command that changes the mode,  the  text
  information in the DOS window under the panels is now saved and  restored
  to the new window. For example, when you switch down from 50 line  to  25
  line, 25 lines of text from the bottom of the DOS window are retained and
  transferred to the new 25 line window. Also, when going from a 43 to a 50
  line screen, the 43 line screen is retained and  transferred  to  the  50
  line screen. This way, information that exists on the DOS window will  be
  retained for viewing and not lost in the line switch.


* D81 images were not being created correctly.  Some  important  DOS  bytes
  were missing from the BAM sector at 40/2, but were present  in  the  next
  BAM sector at 40/3. This would result in unusable images in VICE or on  a
  real drive.


* The rules for detecting disk image SEPARATOR files has been modifed.  Now
  it is thusly:

  - Files must have a 0 block size in its directory entry

  - The track/sector pointer must be 18/0 or 18/1 (actual track depends  on
    image type) or an illegal track value (like 0, or too high)


* Convert changes:

  - New rules for detecting SEPARATOR files (above) have been implemented.

  - DOS filenames were being truncated  too  short  when  copying  into  an
    image, with the switch "remove DOS extensions" enabled. This  was  only
    evident on longer file names, where  the  name+extention  was  over  15
    characters long.

  - SEPARATOR files were losing their track and sector references.  If  one
    was pointing to 18/0, it would be recreated with 0/0.


* CheckDisk changes

  - New rules for detecting SEPARATOR files (above) have been implemented.

  - Important DOS descriptor bytes are now being checked. If they  are  not
    correct (like the DOS version byte in the header sector), you  will  be
    asked if they can be corrected.

  - The displayed load address of the file being checked was  incorrect.  I
    don't know when I could have broken this.

  - Added a new switch "Skip SEPARATOR files". There used to  be  one  with
    the same name on  the  main  CheckXXX  window,  but  this  one  does  a
    different job. I've added the switch  called  "Check  for  dir  x-link"
    which scans for any file cross-linked with the  directory  chains,  but
    enabling "Skip SEPARATOR files" will ignore those that match  the  disk
    image SEP rules.

  - Updated the CheckXXX Configuration window and the main  CheckXXX  check
    window with the new switches.

  - It used to be that  if  you  enabled  "skip  SEPARATOR  files"  on  the
    CheckXXX check  window,  ALL  files  that  were  crosslinked  with  the
    directory would be skipped. This included those files  that  were  real
    files, and not just SEP files. Now SEP files  are  detected  separately
    from those that are real files.

  - SEPARATOR files no longer show a load address, since  they  don't  have
    one.

  - Recovering a named deleted file (not  an  unnamed  file  chain),  could
    cause directory corruption and truncation depending on where  the  file
    was located in the directory.


* You can now (again) enter the disk label, ID's and DOS version bytes when
  creating new images using F12. The names and ID's  are  auto-filled  with
  proper values if you don't want to change them. This change also involved
  modifications in Convert and Format Images code.


* Re-arranged the menu on F12, Create Images. They are now  grouped  better
  and not so haphazard.


* When a data line (BYTE table) was being displayed  in  the  Disassembler,
  and a single-line comment existed for that line, there was no  indication
  that a comment existed, no ";" or "" characters unless you went to  edit
  it. Now you will at least see a ";" to show that a comment exists.


* The track column in CheckGCR only contained the track location once in  a
  while so it was hard to know what track was being displayed.  I've  added
  the track display to almost every line.


* When the GCR conversion routines were written, the memory requirement was
  quite large. I've reduced it down somewhat, which allowed  me  to  reduce
  the STACK size for the linker from 15000 bytes to 10000.  Hopefully  this
  doesn't break something. If it's an issue, the program  will  crash  with
  STACK OVERFLOW errors.


* Added a Panel Defaults  option  to  the  Options  pull-down  menu,  right
  underneath the Panel Layout entry. This is the same function  as  in  the
  Panel Layout Editor, F5 "Reset All Panels". There was no other simple way
  to reset the panel layouts in the event that they got messed up,  so  now
  there is.

---------------------------------------------------------------------------

Summary of changes from 4.4 to 4.41
-----------------------------------

* Tagging filenames and directories, when the "include DIRS in +/- tagging"
  was enabled under panel  Filter  would  also  wrongly  include  the  ".."
  directory entry.


* When 64copy would shell  out  when  executing  command-line  commands  or
  execute external editors/viewers but  not  actually  quit,  the  inactive
  panel path was not being retained. This  would  result  in  the  inactive
  panel path being set to the same as the active one.


* The ALT-key filename search was not working  well.  It  would  not  match
  properly on searches over 1 character long, the C code was very  old  and
  poorly written, and directories were initially excluded. I've updated  it
  so that filename matching is now exact, searching starts out  from  where
  the highlight bar is sitting and directories  are  now  included  in  the
  search. Also, pressing CTRL-Enter will now show the  next  match  in  the
  panel list, if one exists.


* The 64COPY.HTM web form of  the  help  file  did  not  work  properly  in
  Firefox. You could view the page, but could not jump to any  topics  from
  the index. This was due to my incorrect use of HTML indexing,  which  did
  work in Internet Explorer. I've also cleaned up the HTML  and  added  the
  proper <HTML>, <HEAD> and <BODY> tags, making it a  complete  and  proper
  web page.

---------------------------------------------------------------------------

Summary of changes from 4.3b3 to 4.4
------------------------------------

* The entire 64Copy project, including the Disassembler, has moved to  Open
  Watcom C 1.7, the latest  version  of  the  open  source  compiler.  This
  required some changes to the overlay link structure and some code fixing,
  but it appears to be working. I've also started  compiling  64Copy  as  a
  386-optimized application, so it might no longer work on an XT or 286.


* You can now open up CRT files (read-only)  like  other  image  files  and
  extract the CHIP modules out. The CRT panel layout is a slightly modified
  T64 display.


* The unification of code continues:

  - GEOS disk detection was being done separately by several disk  routines
    (D81, D2M/DNP) instead of through the central one. Modified the central
    routine to work with all disk types, and not just D64 & D71 only.

  - I had many of the same GEOS signatures  used  through  the  code.  Both
    signatures for the detection (reading) and generating (writing) of GEOS
    files have been unified into two global strings.


* Disassembler changes:

  - The functionality of SPLIT  filenames  and  split  points  used  during
    disassembly to split the output into multiple  ASM  files  was  broken.
    Even if you set SPLIT points and filenames for  each  region  only  the
    first one would be honoured and no SPLIT  in  the  output  files  would
    occur.

  - Changed the rules governing the "Output name" on the Alt-F2 Disassemble
    to File window. It is now auto-filled with  the  first  SPLIT  filename
    from the first visible region. If  you  change  this  entry,  what  you
    entered takes priority over  any  SPLIT  name  defined  for  the  first
    visible region. If no SPLIT name  is  defined  for  the  first  visible
    region, one will be auto-generated, used, and  inserted  as  the  SPLIT
    name for the first visible region.

  - When Disassembling to Files (Alt-F2), if a split name was  not  defined
    for the first visible region, one  would  get  assigned.  However,  the
    split flag was not being enabled so this filename would not be used for
    future source generations and one would be auto-generated again.

  - Added "Auto-overwrite" option to the Alt-F2 Disassemble to File  window
    beside the "Output name" entry box. With this  enabled,  if  an  output
    filename already exists it will simply be overwritten. If this  is  not
    enabled, and an  output  filename  already  exists,  you  will  now  be
    presented with a dialog to either overwrite or rename the output file.

  - When in the Project Manager window (F2) in the regions list, typing "S"
    or Alt-F3 to toggle the SPLIT flag, the flag was not  being  set  after
    you entered a split filename. Also, now if there is a filename defined,
    the flag will simply toggle and not ask for a filename again.

  - You are no longer required to enter SPLIT filenames. If you don't enter
    one or delete an  existing  name  from  the  Edit  window,  it  becomes
    auto-assigned and will be generated automatically when  the  code  gets
    disassembled.

  - When in the Project Manager, in the Edit Region Entry window (F3),  the
    split filename entry box is now always visible and editable.

  - When disassembling to a file, and  a  table  immediately  followed  the
    variable list, the beginning of the table would have an  extra  address
    inserted from the variable list.

  - The Code/comments filename being used for a code region is now shown at
    the bottom of the Edit Region Entry (when in the Region  Editor).  This
    is for troubleshooting purposes only.

  - References to "Change files" relating to changing to a different source
    file are now called "Switching files".


* Some Convert changes:

  - For both converting and copying/moving into image files, the ability to
    remove the DOS extensions from files has been added. Enable the "Remove
    DOS Extentions"  option  to  do  so.  This  way,  files  with  unneeded
    extensions like ".prg" won't be copied into  an  image  file  with  the
    extension.

  - The reading of disk images with more than the allowed file count for  a
    standard central directory (D64, D71, D80,  D82,  D81)  or  directories
    that go off the standard directory track are now better  supported  but
    you will receive a warning dialog about the problems.

  - The Convert GCR and creating a GCR image (F12) now  use  a  standard  9
    byte tail gap for each sector  when  creating  GCR  (G64)  images.  The
    alternating (and likely erroneous) odd/even  sector  tail  gap  is  now
    gone.

  - Added a switch to enable the automatic extension  of  disk  directories
    off the normal directory track when the normal directory fills up. This
    only applies to those disk images where the directory mormally  resides
    on a single directory like D64, D71, D81, D80 and D82. This  switch  is
    always off by default and is not  user-settable  on  the  Configuration
    window because it is so dangerous. The option is  only  available  from
    the conversion dialog or the copying into existing disk  images  dialog
    windows.


* With the change to allow extended directories, some small changes had  to
  be made to the CheckDisk routines to allow for directory sectors off  the
  normal track wrt the free sector count. No  other  changes  in  CheckDisk
  seemed necessary.


* Good improvements to HELP

  - An HTML web page version of the help file  is  now  included  with  the
    archive, called 64COPY.HTM. This is for  those  who  want  to  see  the
    entire help file, full screen, so that reading and searching through it
    is much easier. It is a work in progress as conversion from  my  screen
    dependant help files to HTML is problematic and neither perfect nor bug
    free yet.

  - Many error windows were found to have no corresponding HELP topic. I've
    added many of them in, but this will be an ongoing project as many  are
    buried deep in code and are hard to see and find.

  - Many HELP file updates.


* I've been using my core  windowing  code  in  another  project  and  made
  improvements to it so I've  incorporated  these  changes  back  into  the
  windowing code for 64Copy. The biggest invisible change is the  inclusion
  of the Merseinne Twister random number generator instead of  the  default
  RAND included in Open Watcom C library.


* In the HEX Editor, added in the display of the  decoded  GCR  header  and
  sector header for GCR/G64 viewing on Alt-F11 and Alt-F12. These functions
  are only useful when working on GCR-encoded data files like G64.


* The Rename/Move/Copy (F5/F6) file collision dialog box has been modified.
  I've removed the ability to enable the logging feature  and  added  in  a
  rename file option instead. This way you can rename  the  offending  file
  and continue with the move/copy.


* The mono/laptop color mode flag (Configuration/Visual Settings)  was  not
  being honored when 64Copy reloaded after executing external commands.  It
  would come back in color mode.

  - Some of the default colors in mono/laptop mode were wrong and have been
    fixed.


* The Change Drive dialog (Alt-F1/F2) has  been  modified  to  include  the
  error window which used  to  preceed  it  when  a  drive  was  no  longer
  accessible or available. Now the Change Drive dialog  will  also  include
  the drive error (unable to read, drive not available)  before  the  drive
  letter list.


* The F12 Create Images function was creating faulty  40-track  images  for
  Dolphin DOS or Professional DOS only. Parts of the 18/0  header  and  BAM
  area for the extra tracks were being overwritten with zeros.


* The Disk Error Editor (Shift-F12) would intermittently crash the program.
  I was failing to set some important variables  under  certain  conditions
  and would end up overwriting areas of memory.


* If a Windows environment is detected, the screen saver is now disabled by
  default since Windows already has a screen saver. It will work  and  stay
  enabled if enabled manually. If the INI  file  is  deleted,  it  will  be
  disabled again. This is due to the high amount  of  CPU  that  the  NTVDM
  under Windows uses to run any of  the  screen  savers,  even  the  simple
  Blanker. On a laptop, this makes the CPU run unnecessarily hot  and  runs
  the fans too much.


* When deleting whole words (Ctrl-Backspace) in the Text Editor, while  the
  screen was shifted to the left, and the cursor  position  would  hit  the
  left edge, the cursor position would get messed up and the  screen  would
  not shift back to the right.


* Updated the User Menu (F2) main window. Moved the DELETE and EDIT options
  from the Fkey bar to the main window and expanded the main window.


* Some pull-down menus weren't dropping properly. The Error Editor and  BAM
  Editor main menus wouldn't drop until you released the  mouse.  The  Text
  Editor, HEX Editor and Panel Layout Editor would drop down the wrong menu
  under certain circumstances.


* Updates to some FORMATS documents:

  - Updated the CRT.TXT file with  extra  notes  about  recently-discovered
    cartridges with incorrect header size values. 

  - Updated the G64.TXT file with a better explanation of  the  track  size
    value in the header. Also  removed  the  erroneous  odd/even  tail  gap
    information. This also gave me the chance to do some housekeeping  with
    smaller rewrites throughout the document.

  - Updated the D64.TXT document  with  extra  information  about  SpeedDOS
    clones.

  - Updated D64, D71,  D81  &  D80/D82  documents  with  information  about
    oversized directories, where  too  many  files  exist  for  the  normal
    directory.

  - Added a "Compiler/Editor" line to the header of every topic.


* Added PayPal method of registering 64Copy  to  both  the  HELP  file  and
  FAQ.TXT. Updated some of the FAQ portions.

---------------------------------------------------------------------------

Summary of changes from 4.2 to 4.30b3
-------------------------------------

* I've had outstanding requests to add support for D80 (8050), D82  (8250),
  D2M (FD2000), DNP (CMD hard disk) images as well as GEOS/VLIR  files  and
  proper REL support. Work had started on some of these  over  three  years
  ago but the v4.2 disassembler rewrite took priority. I also had  to  stop
  because I found out that over the many  years  of  64COPY's  development,
  almost all of the disk image routines had been coded to use DIRECT ACCESS
  into the image (very lame)! This meant I had to  rewrite  many  different
  functions.

  The D80 & D82 image support appears to be complete. D2M and DNP  are  not
  complete but enough is done to warranty usage  and  testing.  They  still
  require some changes and new functionality to be complete.  GEOS  &  VLIR
  files are now supported, and REL is now handled properly as well.

  The list of changes done so far is detailed below:

  - All the direct access routines had to be changed  over  to  use  sector
    reads/writes through a central routine.

  - All disk-related functions  have  been  modified  or  re-written  (Make
    Image, Swap C64 Files, Change Label, Rename  C64  File,  Format  Image,
    Change C64  File  Attributes,  all  D64-related  core  code,  Directory
    Editor, etc). The BAM and ERROR BYTE editors were radically altered  to
    allow for easier additions of new disk image types.

  - The Format Images and Make Images functions have changed  radically  as
    well. I used to create and format by calling the C function  CHSIZE  to
    create a blank file (all zeros) of a specified size, but  have  removed
    this method in favor of  writing  the  new  image  (or  formatting  the
    existing  image)  sector  by  sector.  It  will  be  slower  but   more
    compatible.

  - In the process of adding D80 & D82  support,  I  also  restuctured  the
    support for container images, like X64 and D2M, those that  have  other
    images inside them: X64 contains a header  that  defines  the  type  of
    image it contains and D2M can contain D64, D71 and D81 images  as  well
    as native partitions. These changes will facilitate  support  for  more
    X64 variants (and not just the D64 one I support now), along with D2M.

  - Convert required major changes to the disk support to allow for copying
    VLIR records and GEOS info sectors. The convert code goes back to  when
    I first wrote 64Copy (1994) and therefore was tricky to change  without
    breaking something. Things did end up breaking, so I hope I got all  of
    the problems fixed. GEOS  &  VLIR  files  are  supported  in  all  disk
    formats, even D80 & D82.

  - Convert now also works with REL files properly. Instead of  relying  on
    the sequential data track and sector chains being correct and  matching
    the side-sector chain data, I now read the side-sectors  and  read  the
    data sectors from them. REL files can  only  be  converted/copied  into
    disk images, DOS binary, ARK, LNX and PC64 (R00) formats.

  - I've had some issues  with  REL  conversion  to  ARK  files  which  was
    reported to me many years ago. The calculations  for  the  side  sector
    block counts and  last  side  sector  usage  stored  in  the  ARK  were
    sometiomes wrong. Also, conversion was sometimes incomplete where  some
    data was getting lost at either the beginning or the end  of  the  file
    being copied. Hopefully these are all cleared up now.

  - Restrictions have been placed on  the  conversion/copying  of  T64  FRZ
    (memory snapshot) files. They are special file types, and can  only  be
    converted/copied to another T64. An error window will be put up if  any
    other image type or destination is chosen. No such  restriction  exists
    for VICE VSF files as they are simply DOS files  and  don't  require  a
    specific file to reside in.

  - If copying files into a GEOS-formatted disk and  the  normal  directory
    track gets full, you will now be asked  about  copying  into  the  GEOS
    border sector.


* When I wrote the LFN functions a few years ago, I  neglected  to  enhance
  the PC64 filename conversion algorithm. Basically, when  a  filename  was
  converted from any C64 source to a DOS binary I was always going  to  the
  short name 8.3 functions. I've now made it so that going to any  non-PC64
  LFN destination will convert the filename to an LFN name, as close to the
  source name as possible (upper/lower, spaces). A PC64  destination  or  a
  non-LFN-enabled filesystem destination will always use  the  non-LFN  8.3
  functions.


* 6502 Disassembler changes:

  - Set Table user settings are now retained between uses. No more  needing
    to key in the same table values for each successive table.  The  region
    setting was also not user changeable.

  - Single-line comments (not custom code segments) are now  shown  at  the
    end of the  opcode  line,  without  any  different  color  (it  is  too
    complicated to do multiple colors  on  one  line).  This  allows  small
    comments to not break up the disassembly flow. Multi-line comments  are
    still displayed in a different color before the assigned opcode line.

  - Added extra check when loading older project  (OVV)  files  with  newer
    comment (CMT) files to prevent empty comments  from  being  set  in  an
    entry.

  - Most of the menu entries dealing  with  deleting  items  did  not  work
    right. The assigned Fkeys were wrong  and  you  would  end  up  getting
    another smaller pop-up menu and be forced to  choose  the  menu  option
    again. It was very frustrating.

  - Added a new config switch (to the  Edit  menu)  to  disable/enable  the
    display of lines  which  need  destination  links  added  or  have  bad
    opcodes. This option is always on by default  whenever  you  enter  the
    Disassembler. This switch allows the  code  to  be  shown  without  any
    visual distractions.

  - Ctrl-END would sometimes not bring you to the exact end of the file, in
    some cases it would be fileend-1.

  - Sometimes tables would be created with LBL instead of the  TABL  header
    for the label name.

  - The hex numbers (address and data) displayed  in  the  Database  Editor
    were a mixed bag of upper/lower case. They are now all the same case.


* Changes to the G64 (GCR) conversion code:

  - My detection of the  track  count  in  a  G64  was  wrong,  and  always
    defaulted to 40 tracks. I now correctly detect the highest track seen.

  - Added a switch to the G64 conversion window called "Limit  dest  to  35
    tracks", which is disabled by default. This  will  keep  the  resulting
    ZipCode6 or D64 to no more than 35  tracks,  even  if  the  source  G64
    contains 42 tracks.

  - I now warn the user of conversion  problems  and  set  the  track  size
    accordingly, assuming you haven't set the "limit dest..."  switch  from
    above:

    a) when half-tracks exist as they won't get converted

    b) when less than 35 tracks exist, the output size is set to 35 tracks

    c) when more than  40  tracks  exist  as  track  41  and  42  won't  be
       converted, and the output size is set to 40 tracks

    d) when the track count is between 36 and 39, the output size is set to
       40 tracks


* More HELP changes:

  - Added  extra  information  to  topic  73  "Memory  Requirements"  about
    64Copy's RAM requirements and how to get  the  most  free  memory  when
    running in a DOS box under Windows 2000/XP.

  - Many other topic updates


* Formats document updates:

  - Updated the D80-D82 document with  more  info  on  the  BAM  breakdown,
    interleaves, etc.

  - Updated the CRT document with new CRT  types  (#19-27).  Thanks  go  to
    Marco Van Den Heuvel for the new CRT type info and samples.

  - Updated GEOS.TXT

  - Renamed D2M & to D2M-DNP and extensively updated with new info  on  the
    DNP native partition layout.


* Button Controller changes:

  - One long-standing bug is finally gone. A good example of how it worked:
    If you are in the Alt-F6  Configuration  window,  if  you  changed  the
    active button at the bottom of the window to CANCEL and then went  back
    to select a topic and hit return, you would be allowed to make changes.
    Now the CANCEL button will be honored when  you  press  ENTER  and  the
    dialog will be exited.

  - Somewhere along the line I broke support for buttons in a  window  that
    were not in the "confirmation" area at the bottom of the  window  (i.e.
    the "OK", "Cancel" area. See Alt-F6, Screen Savers  panel  for  a  good
    example.  It  contains  a  Test  and  Config  button  outside  of   the
    confirmation area). If you tried to double click  either  the  Test  of
    Config buttons, the window would simply be dismissed. You could get the
    button to work by typing the hot key  (the  upper-case  letter  in  the
    button title).

  - Added a new button type called "Button Unchangeable". It is not used in
    64Copy as of yet but was added to support another project I am  working
    on.

  - Added a new button type called "Supress Zeros" which will  make  all  0
    values (in both decimal and hex input areas) to  show  an  empty  input
    area. This button is not yet used in 64Copy.


* The panel header display when in an image file (e.g. D64, D2M) no  longer
  shows the DOS drive and path. Instead you now get just the image name and
  track size of the image. If you are in a D81, D2M or  DNP  then  you  see
  some extra info regarding directory depth, partition info etc.


* When creating sub-directories in a D81 image, you can  now  specify  what
  track to start the it on. The default values will  be  the  largest  free
  space and its track location.


* The character set used to draw the panel borders (single or double width)
  is now unified into a comprehensive array. This may not sound  like  much
  but I had code bits scattered all over which  were  hard-coded  with  the
  parts of the character sets used to draw the borders. Now that  they  are
  all centralized, I can modify the sets much easier.


* I've always had four (yup, four) different routines for drawing a  scroll
  bar at the right side of a window (HEXEDIT, VIEWER,  HELP  and  the  main
  panel display). I've finally unified them  all  together  into  a  common
  window function. They also access a new unified scroll bar character set.


* Saving a new file in the Text Editor, but entering  an  illegal  filename
  would result in an error window about the illegal filename, but then  the
  editor would exit without saving the file.


* An annoying bug has finally been squished in the Delete  Files  function.
  At random, if you pressed F8 to deleted any files (tagged  or  otherwise)
  you would not be presented with  a  dialog,  and  nothing  would  happen.
  Shelling out or quitting & restarting would clear up the problem.


* Added the file offset to the alternate T64  panel  display  layout.  This
  shows the real offset into the T64 that the selected file starts at.


* In the Panel Editor, added "Restore  All  Panel  Defaults"  to  F5.  This
  restores all the panel layouts to  the  program  defaults.  This  can  be
  helpful if the panel layouts have changed, but the changes are not  being
  reflected in the layouts.


* The command Show Tagged Size (Alt-F5) was missing from the main menus  so
  it was added to the Command menu.


* Cancelling a CheckDisk at just the wrong  time  would  generate  a  false
  "invalid BAM" message.


* Depending on when I changed the overlay layout, error windows  that  were
  supposed to show a message and a filename (in quotes) would not show  the
  correct message.


* The Shift-F1 key  still  said  "FormatMake"  even  though  it  no  longer
  supports Making new images. Also the F12 key  was  labelled  "MakeArchiv"
  even though the files it creates are called Images.


* Color Config was missing one title (Underline text),  making  the  titles
  from Full-screen down off by one, and not likely making much sense.


* Removed the FAQ  portion  from  the  README.TXT  and  created  a  FAQ.TXT
  document.


* More code cleanup. I've removed a bunch of "ifdef/ifndef" statements  for
  defining customizations and commented code segments that  are  no  longer
  applicable. Hopefully nothing broke in the process.

---------------------------------------------------------------------------

Summary of changes from 4.10a2 to 4.20
--------------------------------------

* The 6502 Disassembler has been completely re-written. The changes are  so
  enormous that I can't hope to write them all down. The  biggest  addition
  is the Project Manager (F2) which manages adding  &  deleting  files  and
  regions in a project, There is support  for  up  to  100  files  and  250
  regions in a project, with a database that can hold up to 10000 entries.

  Basically every function, feature and core routine was redone, and it  is
  vastly improved from the previous versions. Read the  HELP  topics  under
  Disassembler for more info. Below is the list  of  smaller  changes  made
  during the alpha release phase.

  Here's some more changes from previous alpha release to present:

  - Added Auto-Label back to Alt-F3. It now handles  ROM  variables,  other
    variables along with regular code labels & linking. No source label  or
    source variable linking will occur.

    The initial implimentation was very slow and  it  took  some  weeks  to
    track down why. It turns out my quicksort algorithm, fast as it is, was
    the wrong one for  the  list  type  and  sort  condition.  Changing  my
    database from sorting on  every  entry  added  or  deleted  to  a  very
    customized insertion/deletion-based algorithm fixed  the  speed  issue,
    and quicksort is still called under the right conditions.

  - Added in executable code &  data  tables  separation  on  Alt-F1.  This
    function attempts to separate  executable  code  from  data  tables  by
    navigating the code, determining  what  areas  of  the  code  were  not
    executed and assuming they are data tables. There are  many  ways  this
    funtion can fail, and  they  are  all  detailed  in  a  warning  dialog
    displayed when the function is initiated.

  - Added a "What Is This Code" function to F8. This displays the character
    sets, assembly instruction, BASIC instruction and  ASCII  control  code
    for a specific immediate value code. It also appears  when  settings  a
    destination link on an immediate mode value.

  - Redesigned the Memory Usage (Alt-I) window  with  everything  sectioned
    into areas making it easier to understand and look for specific info.

  - In the Database Editor, added display entry filtering to  F2.  Now  you
    can selectively choose what you want to see in  the  database  display.
    Also, the visible and total databse  entry  count  is  visible  in  the
    header bar.

  - In the Database Editor, added Toggle Display to F12. This  toggles  the
    display of label links  (source  and  destination)  between  names  and
    region/address. This setting is  also  avaiable  on  the  Configuration
    window, but assigning it to an Fkey makes it  easy  to  find  out  what
    region a link points to.

  - You now must enter a filename when enabling  output  splitting  in  the
    Project Manager. Old  OVV4  Project  files  which  have  split  enabled
    without a filename will have a name auto-generated  during  disassembly
    time.

  - Changed the display of invalid opcodes from "???"  to  "BAD",  and  the
    disassembly line also gets hilited.

  - Entering or  linking  a  variable  from  the  disassembly  window  (set
    variable) would not update the window.

  - Added some new delete functions  to  the  menus  (delete  source  link,
    delete skip line, delete code/comments).

  - Altered the Alt-F5/Alt-F6/Alt-F7 keys  to  bring  up  menus  of  delete
    options instead of  going  directly  to  a  specific  delete  function.
    Removed Alt-F7 usage.

  - In the Database Editor, any bad entries (those  with  broken  links,
    invalid checksums or region/address values  that  don't  exist  in  the
    regions list) are hilited so you can see them easier.

  - You can now enter an output filename  from  the  Disassemble  To  Files
    dialog (Alt-F2). The name entered here will be used if  no  split  name
    has been designated for the first output file.

  - When linking to a linked source, you can now specify to show the actual
    destination link rather  than  show  link+diff.  e.g.  instead  of  the
    disassembly showing "lda zp_fb+1,y" when zp_fc is linked to  zp_fb,  it
    will now show "lda zp_fc,y".

  - Link Destination To Variable will now  auto-generate  a  variable  name
    when no present variable entry or ROM entry matches.

  - Fixed some operational and display bugs with  the  Set  Label  and  Set
    Variable windows. Sometimes linking would be enabled when it  shouldn't
    be, or disabled whe it should be allowed. I also improved  the  display
    of the link counts, separating them into source and destination.

  - Made the main header bar look just like 64Copy, with the version number
    prominently displayed.

  - I'm  experimenting  with  the  overlay  structure,  trying  to  find  a
    tolerable solution that balances free memory with execution  speed.  Be
    aware that these changes might manifest strange errors.

  - When a Search was done, you would likely  be  brought  back  the  wrong
    source file and offset. Also, the search string would be erased.

  - Could not delete a table if you selected it somewhere within it and not
    right at the beginning label.

  - Could not remove links on variables.

  - Could not use direct strings on 2-byte destination addresses in tables

  - Add/edit/delete tables now accessible from the Destination pulldown and
    popup menus.

  - Project Manager had two sets of duplicate Fkeys and was missing all the
    Table ones.

  - Pressing CTRL-C no longer unceremoniously exits the program.

  - Critical errors (INT24 calls) are now trapped.

  - HELP topic content continues to improve and evolve


* The  HELP  subsystem  has  undergone  another  major  revision  with  the
  replacement of the existing custom compression algorithm with stock  LZSS
  code. Much restructuring has occurred with the resulting savings of about
  5-10Kb reduction in direct memory savings, and about  20Kb  reduction  in
  the required memory footprint to display a topic. I've  also  pulled  the
  topic names and assigned fkeys out of memory, and instead get  them  from
  the help file when needed. Now as I add more topics the amount of  memory
  required won't increase like it used to.

  - Topics were being displayed 1 line too long  (extra  blank  line  being
    inserted). This didn't affect much but those topics that  were  exactly
    one screen long would show the extra line and be scrollable.


* Improved button dependancies. Now I can have nested dependancies where  a
  child button, in order to be visible and accessible, can be dependant  on
  the accessibilty of multiple nested buttons. This is most evident in  the
  Disassembler, under the Database Editor using the Filter  options.  There
  are 3 levels of nested buttons there.


* Updated the README.TXT document:

  - Joe Forster/STA informed me about the availability of software  drivers
    that provide long filename support under Windows  NT.  He  tested  them
    with 64Copy and reports they  appear  to  work.  Anyone  still  running
    Windows NT is invited to try them.

  - I neglected to include  in  HELP  and  various  documents  that  64Copy
    converts between G64, D64+F64 and  ZipCode  as  well  as  the  CheckF64
    features that were finished over a year ago.


* Added a new color to the full screen functions called "Hilight". This  is
  a complementary color to Underline and Bold.


* Error & warning windows  (those  shown  in  red)  were  being  drawn  two
  characters too wide, which made text positioning look  wrong,  especially
  when the text was not centered in the window.


* Changes to Menu code:

  - Menus without a quickkey (hilighted in yellow)  were  not  showing  the
    associated Fkey in the correct position.

  - Menus with numbers defined as quickkeys would not honor the quickkey.

  - When a menu was initially displayed by using the mouse,  many  of  them
    did not start in the correct menu where the mouse click occurred.


* Gave the Long Filename functions the ability to report back on  how  many
  file handles are being used at any given time. This info is now  included
  in the Opening window, grouped along with the number of available windows
  and free memory.


* Some full screen functions were not starting the pull-down menu  (in  the
  header bar) correctly. If the mouse was clicked in the header bar but not
  over a menu item, the menu which was  dropped  would  be  a  default  one
  rather than the closest to the mouse pointer.


* Text Editor changes:

  - When pasting HEX data into the Text Editor, the starting HEX address in
    the dialog box was munged.

  - The header bar values would be written  in  the  wrong  locations  when
    doing a search & replace.


* Many other small core  code  bugs  were  fixed  during  the  disassembler
  rewrite, both in 64Copy core code (much  of  which  is  shared  with  the
  Disassembler) and in the core routines of the Disassembler itself.


* Pressing CTRL-C numerous times no longer  causes  the  screen  to  scroll
  down.

---------------------------------------------------------------------------

Summary of changes from 4.10a1 to 4.10a2
----------------------------------------

* Changes to the 6502 Disassembler:

  - Maximum source file size is now set at  65535,  up  from  the  previous
    63999 bytes.

  - You can now start the disassembler with multiple source  files  tagged.
    Only the first one will be used and saved in the OVV for now, but  this
    is done in preparation for the upcoming changes allowing  for  multiple
    source files in a project.

  - Added the internal command "@DIS" to the EXT  Extension  file.  If  you
    associate a file type (like OVV files)  with  "@DIS",  then  by  simply
    pressing return on an OVV file, the Disassembler will be called up just
    like you had pressed SHIFT-F4. Note that you  can  associate  any  file
    extension with this command, i.e. BIN, ML or whatever common  extension
    you use for source files.

    Add (or modify) the following OVV entry in the EXT file to this:
    OVV : @DIS

  - You must now open an OVV file directly in order to work on an  existing
    disassembly project. I have removed the ability to open an existing OVV
    by opening the source file.

    Opening any source file defaults to starting a  new  project.  You  can
    name the project when you are finished. This gives you complete control
    over the name of the project (OVV) files.

  - Re-wrote much of the code that deals with OVV handling. Most of this is
    in preparation of the new OVV layout (version 4) for  the  disassembler
    rewrite. Things like CRC protection on the OVV file,  CRC  verification
    on the source file(s) so that source changes can be detected,  allowing
    multiple source files (where right now you only have one), etc. Not all
    of these features will show up right away, but they are planned.

  - Added a Project field in the header bar that shows  the  project  (OVV)
    name you are working on. If there's a "?", then  the  project  has  not
    been named yet.


* I only found out very recently that I can use "//" as  a  comment  for  a
  line of C code. I've gone through all my code replacing my usage of "/* C
  commands here */". Hopefully I didn't screw anything up.


* I found that when an critical error  occurs  during  a  hard  disk/floppy
  operation  in  the  DOS  emulation  under  Windows,  an  incorrect  value
  (deverror) gets returned from INT 24. This value  is  important  for  the
  display of the drive letter where the error occurred. So for now, when  a
  critical error occurs, the error message will be displayed  but  not  the
  drive letter where it happened.

---------------------------------------------------------------------------

Summary of changes from 4.00b2 to 4.10a1
----------------------------------------

* Major additions and small fixes to the 6502 Disassembler:

  - Added "quick-jump" markers. Pressing ALT and one  of  the  numeric  row
    keys ("1" through "0") assigns the  present  address/offset  marker  to
    that key. Pressing the number key by itself jumps back  to  the  marked
    spot.

    A new menu called "QuickJump" shows the address/offset that is assigned
    to a particular key. Also, a "QJ:----------" has been added to the info
    display that shows which marker has been set. Pressing the ALT-Plus  or
    the ALT-Minus keys will cycle through the list forwards or backwards.

  - When you press F9 to goto a new address, the present address is stored.
    Pressing ALT-F9 will jump back to the previous stored address.

  - Label sizes (user and pre-defined ROM) have  been  reduced  down  to  8
    characters in length. The previous size of 16 characters was too  long,
    and I doubt that _any_ C64 assemblers would support labels that long.

    Because of the label size change, over-size labels  that  were  allowed
    and found in older OVV projects are "reduced" down to 8  characters  by
    several different methods. If none of these  produce  a  unique  label,
    then a generic one or a random one is made. You will be  informed  when
    this occurs.

  - Where a table starts is now shown on-screen, and how far it goes up to.
    There will be a "tab-xxxx" entry right after  the  address  zone.  This
    indicates that a table (TAB) has started, and where it  extends  up  to
    (XXXX). This should help to tell where tables  are  and  how  far  they
    extend to, especially when you have tables that exist inside of  larger
    tables (nested tables).

  - The Region Editor (F2) was  not  showing  the  region  entries  in  the
    window. They were all blank.

  - I've changed all references from "ORG" to "Region" as that is what they
    are now called.

  - Added option to save the output ASM files in various text formats (DOS,
    Mac or  Unix).  The  output  was  being  incorrectly  saved  with  Unix
    delimiters by default.

  - Changed the options for selecting how  to  format  the  output  of  the
    disassembled ASM file. There are now 4 different methods:

    * No formatting: Nothing is done, output is very compact

    * Indent non-labelled code line by 2: All code lines without labels are
    indented by 2.

    * Align labels/ops in columns: Labels  are  aligned  at  column  0  and
    operands are aligned at column 10.

    * Just like it is on screen: The output looks  just  like  it  does  on
    screen, with address/offset/region/label/operand/comment.

  - The disassembled output when going to a C64 format was being  converted
    wrong when upper/lower case was mixed, especially evident on comments.

  - Enabled a flashing cursor on the line that the hilite bar is on.


* Changes to the GCR Conversion routine:

  - The created G64 image now follows more closely to that  of  a  standard
    1541 disk layout. Track sizes are similar, and the tail  gaps  are  now
    variable in size, rather than fixed at 6 bytes.  Track  sizes  are  now
    fixed in size using the same numbers as MNIB and tail gaps are set  (by
    odd/even sectors) by the following chart:

        Trk Range   Size     Tail Gap
                            (even/odd)
        ---------   ----    ----------
           1-17     7692       9/9
          18-24     7142       9/19
          25-30     6666       9/13
          31-       6250       9/10

  - Corrected some badly formatted error messages (the text in them  wasn't
    centered in the window)

  - The D64 associated with an F64 file can now be of  any  size.  However,
    only the first 35 tracks will be converted.  Any  tracks  above  35  or
    attached error bytes are ignored.


* Changes to the Create G64 Image:

  - The file that is created follows the  same  track  size  and  tail  gap
    specifications as the G64 Conversion routine (see above).

  - The "Use $4B $01 pattern" switch wasn't working. The  disk  was  always
    created with what the default was set to.


* Internal G64 read-code changes:

  - If the data following a SYNC mark is byte-aligned, then  the  G64  read
    routines will read one byte at a time rather than a bit at  a  time,  a
    somewhat faster method.


* I had the wrong keyboard scancode for the ALT-2 key  combination,  so  it
  wasn't working.


* The detection of Fkeys being clicked by the mouse when a  window  was  up
  (not full-screen but a window like F2: User Menu) was not working.


* FORMATS document updates:

  - Updated the SIDPLAY.TXT, F64.TXT, G64.TXT and D2M.TXT documents


* Added the save formats (DOS text, Macintosh and Unix) to the save dialogs
  of the Text Editor and the Disassembler output. Now you  can  select  the
  type of file to save when either saving the entire file or  only  save  a
  tagged block.


* When trying to edit a text file which  is  too  large  for  the  internal
  editor to handle, you will be asked if you want to run  the  user-defined
  external editor instead. There is also an option in both this dialog  box
  and under Configuration/Editors & Viewers called "Use external when  file
  too large" that when set will always default to the external editor  when
  the file size exceeds 64K, the limit of the internal editor.


* Fixed a small problem in the button dependancy code

---------------------------------------------------------------------------

Summary of changes from 3.40b1 to 4.00b1
----------------------------------------

* Added "Program execution logging"

  - This allows the tracing of subroutine execution, and possibly bugs.  It
    only traces "core" routines (windowing, panel drawing, mouse, keyboard,
    fkey bar) so a bug in the Text Editor outside  of  the  monitored  code
    will not be traceable.

  - You can enable it by either specifying "/log" on  the  command-line  or
    use the Options menu Program Trace entry.

  - It likely will not be present in the standard release  version  of  the
    program due to the amount of memory it uses, but it will be enabled  in
    the beta releases. When a bug shows up  which  might  be  traceable  by
    execution logging, I can send out a special version of the program with
    logging capability to help track down the problem.


* Added several new Convert  modes  on  F11,  mostly  related  to  GCR-type
  images:

  - D64+F64->G64: Converts D64 and the F64  error  bytes  to  a  G64  (GCR)
                  image. This will likely  be  a  very  popular  conversion
                  method, especially for the  Unicorn  (64CD96)  CD  files.
                  Provided  that  the  F64   error   codes   are   properly
                  understood, this conversion should be almost perfect.

  - D64+F64->ZipCode Sixpack: Converts D64  and  the  F64  error  bytes  to
                              ZipCode Sixpack files. Not terribly useful as
                              some of the F64 errors cannot be  represented
                              in ZipCode. Most should convert ok, though.

  - D64+F64->D64+errors: Convert D64 and the F64 error bytes  to  D64  with
                         error bytes.  This  should  also  prove  to  be  a
                         popular conversion as all  emulators  support  the
                         error byte form of D64, and not the F64 form.  Not
                         all the F64 errors can be represented by  the  D64
                         error bytes.

  - G64->D64+errors: Converts G64 (GCR) images to D64 + error  bytes.  This
                     is a problematic conversion because  all  of  the  low
                     level data that comprises the errors is lost.

  - G64->ZipCode Sixpack: Converts G64  (GCR)  images  to  ZipCode  Sixpack
                          files.  Most  of  the  data  relating  to   error
                          reproduction can be stored in  ZipCode,  but  not
                          all.

  - D64+errors->ZipCode Sixpack: Converts D64 and error  bytes  to  ZipCode
                                 Sixpack   files.   Not   a   very   useful
                                 conversion,   really   only    good    for
                                 transfering the resulting file back  to  a
                                 C64. All the errors are reproduced.

  - D64+errors->G64: Converts D64 and error bytes to a G64 (GCR) image. All
                     the errors are reproduced, but if the copy  protection
                     works on a D64, there's no need to create  a  G64.  If
                     the protection doesn't  work  with  the  existing  D64
                     error codes, it likely won't work  with  a  G64  image
                     either.

  - ZipCode Sixpack->G64: Convert ZipCode Sixpack GCR files to a G64  (GCR)
                          image. All errors contained in the ZipCode  files
                          are transferred to G64.

  - ZipCode Sixpack->D64+error: Convert ZipCode Sixpack GCR files to a  D64
                                image with error bytes. This is not a  very
                                useful conversion  as  all  the  data  that
                                comprises the errors are lost.


* Major change to the pull-down menu system:

  - Re-wrote major parts of the menuing system so that menus are defined as
    needed,  and  now  exist  in  all   full-screen   functions   (editors,
    disassembler, viewer etc).

  - The full-screen functions already have F9 used for other functions,  so
    I cannot assign the "menu drop  down"  option  to  that  key.  Instead,
    either enable the "ALT key drops menus" option, or use  the  mouse  and
    click in the title bar to access the menus.

  - This menu change also means that I've temporarily lost the  ability  to
    disable menu entries when a given function isn't available. I  hope  to
    put this feature back later.

  - All the pop-up menus that existed in the various editors  on  the  left
    mouse button have been re-written to now use the new  menu  controller.
    This allows for greater flexibility in  menu  definition,  and  pop-ups
    look like regular menus.

  - Moved all emulator-related items in the panel menus to a new menu entry
    called "EMULATOR", between the FILE and COMMAND menus. It seemed a more
    appropriate place to group them there.


* Changes and additions to the CheckDisk function:

  - Added Check F64 files. It only scans  for  errors  and  anomolies,  but
    doesn't decipher them as nobody seems to know how F64  works.  For  now
    its main usefulness will be for the author to try to understand  better
    how the combination of code, ID and checksum value makes  up  an  error
    code.

  - Major improvements to CheckG64. It is no longer a simple  track  offset
    dump but now analyses all the data in all valid tracks and  displays  a
    complete list of  what  it  finds.  This  includes  gaps,  SYNC  marks,
    headers, etc. All errors are also detected, and displayed in  order  of
    precedence.

  - Added the option "Overwrite old log files" to allow for always creating
    new log files, rather than  always  appending  to  them  or  having  to
    manually delete them before another check.

  - In Check ZipCode Sixpack, the sector value displayed  is  now  what  is
    actually stored in the header.

  - I've changed one of the options to "Do extra disk checks", moved a  few
    dialogs, removed a few others and basically  tried  to  streamline  the
    whole process. Selecting the "Do extra disk  checks"  will  bypass  the
    normal warning dialog box that you would get halfway through the scan.

  - I've also made a few of the checks a bit  smarter,  detecting  if  they
    need to run or not, and reporting as such.

  - The "scan for lost chains" check will now skip chains which  were  also
    skipped in the "scan for deleted files" check. This prevents  duplicate
    chains showing up.

  - When entering a filename to assign to a recovered chain,  the  filename
    would not have been put into the directory properly.


* Major changes to the Disassembler:

  - I've removed it from within 64COPY and made it an external  application
    (64DISASM.EXE), only executable from 64COPY. The reason for breaking it
    out is very simple, I needed to give it more memory. The change  should
    be seamless, but...

  - Now that it is an external application, there are likely  going  to  be
    some things that are different from  the  way  the  64COPY  application
    works. I've tried to bring  along  all  the  niceties  (screen  savers,
    clock, colors, help files, drop-down & pop-up menus etc), but there may
    still be problems.

  - Also, now that I've got more memory,  I've  raised  the  maximum  label
    count to 6000 and increased the memory for label name storage by  15Kb.
    This should allow more room for those big disassemblies.

  - Fix: sometimes you could not set labels or tables, because the  address
    values would be rejected as out-of-range.

  - If 64DISASM.EXE wasn't available in the PATH environment variable,  and
    you were not in the 64COPY home path, then the disassembler  would  not
    launch. All you would see was a "Bad command or filename" error in  the
    DOS window under the panels.


* Major changes to the HELP system:

    This is the biggest change  which  has  kept  version  3.5  from  being
    released for almost two years. It was a  major  re-write  of  the  help
    code, the help compiler, the structure  of  each  help  topic  and  the
    structure of the HLP file. I'm glad it's almost done,  but  I've  still
    got more work in breaking up the big topics and adding many subtopics.

  - I've completely altered the layout  of  the  HELP  file  to  allow  for
    "sub-categories" under the main topic list. This change  allows  me  to
    have 255 main topics, with up to 256 sub-categories each  (you  do  the
    math... it's a lot of entries). All memory required  is  now  allocated
    only when needed, so the programs memory requirements should not be  as
    great.

  - All the topics have been restructured, with section  headers  preceeded
    by an HTML-like tag, replacing my original  clumsy  method  of  special
    characters as markers. This change makes the  structure  more  readable
    (for me!) so new topics will be easier to build.

  - Topics with sub-categories will have a ''  beside  them  in  the  HELP
    window. You can open topics to view the sub-entries by clicking on  the
    '' arrow with the mouse, or using the right-arrow key on the keyboard.
    You can close an open  topic  by  using  the  mouse,  or  pressing  the
    left-arrow on the keyboard.

  - As a result of the rapid increase in the topic count, not  all  of  the
    dialogs and error windows that come up will have the proper  help  ID's
    assigned, and I will continue to fix this.

  - Lines that contain hilited or bolded  text  were  not  bring  formatted
    properly by my Text Editor. Now, the editor takes these characters into
    account when formatting a paragraph. This may not seem  important,  but
    the HELP topics are formatted more consistently.

  - I've tried to make more sense in my help files, windows  and  documents
    of the difference between "image" and  "archive"  files.  I've  removed
    almost all occurances of the words "emulator  files"  and  replaced  it
    with "image files". "Archive"  generally  refers  to  compressed  files
    which would be stored for backup. "Image" refers to  almost  all  other
    C64-related files. Hopefully this removes some confusion.

  - If there topic is missing from the HELP file, the title bar will  still
    show the help id values.

  - The compression used is now more dynamic.

  - Updated and added many more topics/subtopics.


* Major changes to the Button Controller:

  - Redesigned and reorganized much of  the  internals:  memory  allocation
    algorithm & structure, button storage structure, the  way  buttons  get
    assigned and destroyed, how they get drawn. All of  this  was  for  the
    next feature:

  - Added "unavailable buttons"  where  buttons  are  greyed  out  and  not
    accessible (can't click on or cursor/tab to) when an  option  they  are
    dependant on is disabled. The best example to see is the Screen  Savers
    configuration window. Disabling the "Enable Screen Saver"  option  will
    grey out all the buttons.

  - All input areas specified as HEX input were always defaulting to 2 byte
    words. I now honor whether they are 1 byte (char) or two  bytes  (word)
    wide.


* Major update to the panel Filter function (under the Left or Right  panel
  menus)

  - Redesigned the dialog box to allow for more options  and  much  greater
    flexibility in selecting/deselecting  what  files  and  directories  to
    display in each panel. You can now display, or choose not to display:

     * Directories (also using a pattern-match filter)

     * Executables (EXE, COM, BAT, CMD)

     * Images (virtually all of the emulator image types there are)

     * Files with hidden or system attribute set

     * Any other file type not covered above
  
  - Found out that the logic I was using for the old filter settings,  when
    parsing the  directory,  was  very  faulty.  Hopefully  it's  all  been
    corrected in this change.

  - The default value for showing files was "show only"  instead  of  "show
    all".


* Added in a basic WAV file cleaner under the Commands  menu.  It  is  very
  simplistic, only made to remove single-sample errors that  get  generated
  when reading from scratched CD's. It  has  trouble  cleaning  audio  that
  contains loud cymbal crashes as it will mangle it quite badly.

  There is a sensitivity scale, ranging from 0 to 100, where higher numbers
  mean the routine will clean every little thing it finds, even if it's not
  noise. Play with this value to see the difference in the cleaned output.

  You can use a WAV editor (Cool Edit,  Sound  Forge)  to  set  cue  points
  around the affected areas, and then select  the  option  'Use  CUE/Marker
  points for cleaning boundaries' to only clean those areas. This keeps the
  possible WAV distortion to a minimum.


* Changes to the Configuration windows:

  - Added Next & Prev(ious) buttons to  all  sub-windows  to  allow  easier
    navigation.

  - Removed 'Recalc Pause' button from Other Things panel and moved it to a
    checkbox  option  instead.  Checking  it  will   do   a   pause   value
    recalculation.

  - Broke up the topic Image Conversion into "Image Conversion" and  "Image
    Creation". Moved many buttons around.

  - Added a new button under Image Creation called 'Auto-detect  DOS  type"
    which, when enabled, will attempt  to  detect  the  extended  DOS  type
    (Speed, Dolphin, Prologic) of the  D64  image.  If  it's  not  enabled,
    anytime you try to enter an extended image, you will be asked what type
    of image it is.


* Changes to the Text Editor:

  - Added in a New File menu command under the File menu. This  allows  you
    to quit editing the present document and restart  the  editor  with  an
    empty unnamed document.

  - When in search/replace mode, it would not update the  status  bar  with
    X/Y cursor locations, TAG size, etc until after the function was done.

  - Added in option "X Scroll Size". This is the number of columns that the
    screen will rotate left or right when cursoring or typing past the left
    or right edged.

  - If you cursored to the right, scrolling the screen contents off to  the
    left, clicking with the mouse to place the cursor would not  place  the
    cursor in the correct location.

  - Added in rudimentary Unicode detection  &  conversion.  If  the  option
    "Auto-convert Unicode files" is enabled, the file will be  checked  and
    if it matches what I support  for  Unicode  (see  above),  it  will  be
    automatically converted. If it is not enabled, you  will  be  asked  to
    convert the file first.

  - When copying tagged data to the clipboard, the tagged area is no longer
    cleared.

  - Tagging text with the right mouse button would not start the  tag  area
    correctly under certain circumstances.

  - The editor now recognizes my formatting characters that I use  for  the
    HELP files and will properly do a paragraph format, rather than  making
    some lines too short.


* Changes to FORMATS documents:

  - Added a "Last updated:" line to each document. This way  the  DOS  time
    stamp and the "Last update" line do not have to corrsespond.

  - Changed many of the docs, changing the useage of the  terms  "ARCHIVE",
    "IMAGE",  "EMULATOR"  and  "CONTAINER"  so  that  they  are  now   used
    consistently.

  - Updated CRT.TXT by adding a sample HEX dump for type 14, 16, 18  &  19.
    Added WRPSPEED.JPG which is the schematic for CRT type 16.  Included  a
    small write-up from Markus Brenner regarding mode switching.

  - Updated D64.TXT doc. Moved the REL file layout  to  it's  own  document
    (REL.TXT). Added in a section on  C128  auto-boot  disks.  Added  table
    describing differences between various  'speeder'  DOS's.  Updated  the
    error tables and descriptions.

  - Updated the DISK.TXT document.

  - Updated BINARY.TXT

  - Added info to the GEOS.TXT doc.

  - Updated the F64.TXT document extensively

  - Updated the G64 document. Added in a description of the 1541 GCR layout

  - Added WAV description (because I needed it).


* Fixes to the Disk Directory Editor

  - Getting a BAM message that exceeded the button width would  cause  some
    screen corruption


* Added Disk Error Editor to the SHIFT Fkey menu on  F12,  beside  the  BAM
  Editor entry. Removed the old assignment for "Opening Window" display.


* Added in a "Combine File" function on CTRL-F7, to  combine  tagged  files
  into one. This is one of  my  speciality  functions,  written  because  I
  needed it. It comes in useful for combining text files into one.


* Added in a "Split File" function on CTRL-F8, to split  large  files  into
  sizes which are easier to transport, like copying to a  floppy.  This  is
  another of my specialty functions, which I need once in a while.


* Improved the File Compare function (CTRL-F5). There  is  now  a  progress
  bar, you can cancel the operation on long file compares, and the  compare
  will only stop when too many errors have occurred to show in the  results
  window.


* Removed some items from the CTRL Fkey menu and added  in  the  "Combine",
  "Split" and "Compare" options.


* Added the capability of having a timer set on a window,  so  it  will  be
  canceled after a specified time, in seconds. The main opening window  has
  a timer of 10 seconds on it, so it will automatically go away after  that
  time.


* Added a "String Search" function to CTRL-F9. This is a simplistic version
  of the UNIX command "strings" which will search a file  and  display  (or
  log to a file) runs of alpha-numeric characters (strings)  of  a  minimum
  length.


* Changes for non-80 column screens. I tried  playing  with  VGA  utilities
  that allow for screen sizes like 120x64,  and  many  things  didn't  look
  quite right:

  - I've removed all the hard-coded bits dealing  with  80  column  screens
    that I could find.

  - Changed the panel drawing routines and panel location  calculations  so
    that a greater than 80 column screen will show full-width panels.

  - Changed the Function Keybar drawing routines to pad the descriptions on
    screens wider than 80 columns.

  - Changed the detection routine so that I can  now  determine  the  exact
    lines per  screen.  Before,  I  could  only  detect  three  line  modes
    (25/43/50)

  - I'm sure I haven't got all the things which still assume an  80  column
    screen, but I will tackle them as they come along.


* Changed some of the characters used  for  the  menus  and  window  border
  drawing. Windows 2000 (and also XP) has hijacked specific characters like
  the checkmark symbol and replaced with something unusable. So, instead of
  the checkmark beside some of the menu items, you now see the "+"  symbol.
  Instead of the vertical and horizontal lines meeting in the  panels,  now
  they don't.


* Added a "No Change" option to the  Screen  Size  section  of  the  Visual
  Options configuration window. This setting will force the program to  use
  the existing  video  mode  (lines/columns)  when  launched,  rather  then
  overriding it to a specific size.


* Added new option "Auto-convert Unicode files" to the  Editors  &  Viewers
  page of the Configuration. When enabled, the Text Editor and File  Viewer
  will attempt to detect when a Unicode  file  is  being  opened.  If  this
  option is off, you will be asked if you  want  to  convert  it.  With  it
  enabled, the conversion will happen automatically.

  I only support a small subset of Unicode. If the text file starts with FF
  FE and has 00 for every other byte, then it appears to be Unicode.


* Added Unicode Format conversion type to Convert PETASCII  to  ASCII.  See
  above for the Unicode files I detect as the subset  is  very  small.  The
  configuration switch "Auto-convert Unicode Files" has no effect here.


* Added CRT type 18 to CheckCRT.


* The panel variables were not all swapped  properly  when  doing  a  "Swap
  Panels". Some of the D81 support variables were not swapped properly.


* Clicking with the mouse when the ALT-SEARCH window is up will cancel  the
  search and do the mouse click.


* Added a "Reset" button to the Alt-F7 Search window. This  allows  you  to
  clear the default drive search tags and select your own.


* Changes for GEOS support:

  - Wrote a new routine to do better detection  for  GEOS  files  (SEQ  and
    VLIR), regardless of disk format.

  - Changed the panel listing routines to show when a file is a GEOS  type.
    It will show a "VLI" when a GEOS VLIR file is  detected,  and  a  "GEO"
    when an GEOS non-VLIR file is detected.

  - Files in the BORDER sector will now be displayed in the panel  listing.
    This applies only to D64 and D71. I do not know what a GEOS format disk
    on either D2M or D81 would look like.


* Extracted filenames from UUE files  are  now  full-size.  Filenames  that
  contained spaces would get truncated at the first space.


* Internal structure changes:

  - I attempted to restructure many  of  the  variables  used  for  various
    functions into a series of C structures,  to  make  management  easier.
    However, things didn't go too well, and I had to reverse those changes.
    I don't suspect too many typing mistakes occured in the  reversal,  but
    you never know.

  - Now, I'm renaming many global variables into groups, so that they  make
    more sense. This is similar  in  scale  the  above  aborted  change  to
    structures, but is hopefully less destructive.

  - I removed the dependancy that my Windowing functions have from the main
    code in an attempt to make them more portable. These functions  include
    window management, buttons control,  screen  saver,  keyboard  control,
    help display, pull-down menus, clock display, mouse  control  and  long
    filename functions. This might cause some problems especially regarding
    how these functions are externally configurable (like screen saver).  I
    don't see anything, but...


* Changes to Color Configuration:

  - The F9 fkey would not say "Restore" colors when it should have.

  - Added the color value in the window display.

  - Added a new color definition called Unavailable Button.  This  will  be
    used in the future for button controller enhancements.


* Changes to the error logging facility in RENAME/MOVE.

  - The RETRY count was off by 1

  - The line separator was <LF> only, not <LF><CR>

  - The reported bytes lost was grossly wrong.

  - The file errors count was wrong

  - Added '# Skipped' entry. This counts the  number  of  files  which  are
    skipped during the copy because of read errors and file collisions.


* The Ctrl-R "Re-read disk/directory contents" will  now  get  the  present
  working disk/directory first, and then re-read  the  contents.  By  doing
  this, if the drive/path has somehow changed for the  panel,  it  will  be
  reflected in the path and contents of the panel.


* Added a new option to the Convert main window... "Add C64 type to  name".
  This allows you to add the C64 filetype (PRG, SEQ, etc) extension to  the
  destination filename when converting them to  Binary/PRG  (DOS  binaries)
  only. Typically, when you convert to a DOS binary, the C64 filetype  info
  is lost, so this way you can keep it in the file extension  if  you  want
  to.


* Removed two  options  from  the  Configuration/Panels  window  "Keep  top
  menubar visible" and "Menubar off when panels off". You  no  longer  have
  the ability to remove the top bar of the program at any time. This change
  was necessary because of changes to the Windowing code.


* Added CRT filetype to File Info window


* Some changes to the D64 HEX Editor:

  - If a D64 has an 'F64' file (error file) associated with it, the  header
    bar will show the data from the F64 for that sector.

  - When copying data to the clipboard, the paste address for the  data  is
    now set to the start of the copied range (offset from the beginning  of
    the sector), rather than 0.

  - Removed the "active cursor". You now have to click in either the HEX or
    the ASCII area to place the cursor.

  - If you entered an invalid track or sector in the  F9  "goto"  function,
    the "allowed range" would be wrong. You  would  also  not  be  given  a
    window to re-enter the proper values, but rather the entry boxes  would
    be in the main display panel!

  - When copying tagged data to the clipboard, the tagged area is no longer
    cleared.


* Changes to the HEX Editor

  - When copying tagged data to the clipboard, the tagged are is no  longer
    cleared.


* Check DOS Files (ALT-F12) was not visible on the menus. Added it  to  the
  Commands menu.


* My logic for detecting D64 extended DOS types (40  track  images)  wasn't
  working. I could not detect  the  difference  between  freshly  formatted
  Speed DOS and Dolphin DOS disks. I re-wrote the detection method, and now
  if I can't tell what the DOS is, you will get  a  dialog  asking  you  to
  choose the DOS type, with the most likely  candidate  being  the  hilited
  one.


* Changes to the Create New Images (F12) function:

  - Added the creation of G64 images. Right now, they only support  35  and
    extended 40 track D64  layout  (no  half-tracks),  basically  the  same
    options that D64 has.

  - Added the different DOS type selections (Speed, Dolphin & ProLogic)  to
    the Create D64 Image dialog box. Added full support  for  ProLogic  DOS
    disk type.

  - Added some extra options to the Create D64 and Create X64 windows.


* Changes to the Disk Error Editor

  - D64 Error Editor didn't drop the menus when you clicked  in  the  title
    bar.

  - Right-clicking on a BAM entry will bring up a  pop-up  menu  for  error
    selection values.

  - Some  warning  messages  would  be  displayed  if  you  tried  to  edit
    nonsupported image types (like DOS files, directories). These  are  now
    ignored.


* Changes to the Disk BAM Editor:

  - There is no longer an 'active cursor' where moving the  mouse  (without
    clicking the mouse button) would move the selection  cursor  around  as
    well. Now you have to click to move the selection cursor around.

  - Added a pop-up menu on the right mouse button. Click on a BAM entry  to
    get the allowed menu options.

  - Some  warning  messages  would  be  displayed  if  you  tried  to  edit
    nonsupported image types (like DOS files, directories). These  are  now
    ignored.


* Launching the program from a floppy no longer causes the panel  directory
  contents to be shown before the panels themselves are drawn.


* The way the program remembered that an LFN filesystem  was  detected  was
  broken.  If  you  restored  the   default   settings   to   the   program
  configuration, it would not remember that an LFN was detected, but things
  still kind of worked.


* I was losing about 2-4K every time I shelled out. Fixed.


* Selecting "Drive Info" from the menu opposite to the active  panel  would
  bring up the info for the active panel.


* When trying to set a custom message in the Message Control Center in  the
  Disk Directory Customizer, the window would not be dismissed properly.


* My mouse code was incorrectly generating a "mouse drag" mouse event  when
  it should not have, and it was only affecting the  Panel  Layout  Editor.


* The DOS Change Attributes window,  when  multiple  files  were  selected,
  would not let you mouse-click change the CLR column attributes.  The  SET
  column would always change instead.


* A few panel variables were getting lost when shelling out of the  program
  while displaying an extended disk  image  (40  track)  in  a  panel.  The
  extended disk type was not being preserved, and the  40  track  flag  was
  being clobbered. This would result  in  a  40-track  Dolphin  disk  being
  displayed as a 35-track Speed disk.


* When converting a ZipCode 6-pack file, the inactive panel path was  being
  altered and not restored.


* You could crash the program quite handily when trying to change the panel
  sort while trying to display a large directory (>700 elements).

---------------------------------------------------------------------------

Summary of changes from 3.30 to 3.40 b1
---------------------------------------

* Substantially changed the Disassembler (not finished yet!)

  - ALL addresses are  fully  label-able,  and  labels  may  be  up  to  16
    characters long. This means that the pre-defined ROM addresses are  now
    changeable, like so many people wanted. In the case where  you  do  not
    supply a label name, the disassembler will try to select an appropriate
    label based on the following rules:
     - If you branch backwards (loop) then the label starts with "loop"
     - If you branch forwards (skip) then the label starts with "skip"
     - Setting a table, label starts with "tabl"
     - Zero page starts with "zp_"
     - JSR starts with "sub_"
     - JMP starts with "goto"
     - All other labels are "labl"

  - There are several hundred pre-defined ROM, RAM and I/O addresses  which
    can automatically be assigned when you start a disassembly. If  you  do
    not want to auto-assign the labels, this feature can be disabled in the
    configuration window before disassembling.

  - There are 4000 entries available in my  label/table  array.  Note  that
    each entry can  have  several  modifiers  (label,  table,  link  label,
    comment and blank line insert). There is enough  space  in  my  comment
    array for a *minimum* of 2000 comments (assuming a maximum  use  of  30
    bytes per comment) and 4000 labels (assuming an average size of 9 bytes
    per label).

  - Tables have much more flexibility.

    - Select from several table types
      1. BYTE
      2. WORD (lo/hi format)
      3. DBYTE (hi/lo format)
      4. ASC (or  TEXT).  Lines  will  break  when  a  NULL  ($00)  occurs.
         Displayed text is shown in a "simulated C64 font" and not ASCII
      5. FONT (defaults to BYTE table, BINARY format, 1 byte wide, 8  lines
         long)
      6. SPRITE (defaults to BYTE table, BINARY format, 3  bytes  wide,  22
         lines long with a single byte terminator)

    - Select from 5 different bases to display them in
      1. HEX
      2. unsigned DECIMAL  (only positive)
      3. signed DECIMAL (+/-)
      4. OCTAL
      5. BINARY

    - Change the display width (in bytes).

    - Enter the starting address and the size of the table (rather than the
      start/end addresses). This is particularly useful for FONT and SPRITE
      tables, as they must be multiples of either 8 or 64 bytes, and simply
      entering the size needed is better. Any value entered into  the  SIZE
      field overrides the END ADDRESS value.

    - You can define tables within  tables,  overlap  addresses  etc.  This
      allows you to define one encompassing table for  a  whole  area,  and
      subdivide it down easily.

    - If you are displaying WORD or DBYTE table data, and the 2-byte  value
      being displayed matches a defined  label,  then  the  value  will  be
      replaced by the label (provided the option "[ ] Allow Labels" is  set
      for the table range).

  - When disassembling any  file  for  the  first  time,  the  Disassembler
    Configuration window is brought up, allowing you to set features before
    disassembling begins. This is especially useful if you don't  want  the
    ROM/IO labels to be auto-assigned.

  - The following display items  have  blank  lines  either  preceeding  or
    following them, and this feature is not disableable:
    - After RTS and JMP opcodes
    - Before and after ORG= statements
    - Where tables end
    - Where code ends and tables start
    - After each entry in a FONT and SPRITE table

  - You can "link" one address to another. This is done either in the F5 or
    F6 label functions by entering either an address  or  a  label  in  the
    "Link this address to" fields. This  is  particularly  useful  for  the
    indirect addressing mode  display,  i.e.  "LDA  ($F7),Y"  would  almost
    always have $F8 linked to $F7. Any display of the $F8 address will show
    the label assigned as "$F7+1".

    All label windows (master/slave and partial labels) will  show  a  link
    count, if any exists.

  - You can create "partial" labels. This only applies to lines which  load
    registers in absolute addressing mode, i.e. LDA #$45.  You  can  assign
    this opcode to load one half of a label/address, i.e. "LDA  #<lbl_c045"
    would load the lo byte of the address assigned to "lbl_c045". There  is
    no labeling of absolute values (i.e. labelname = #$45).

  - Moved "disassemble" to ALT-F2 (was on F2).

  - Added an "ORG="  control  panel  on  F2.  From  here,  you  can  assign
    different starting  address  values  throughout  the  code.  There  are
    provisions for up to 12 ORG regions.

  - Added "Edit Other" on F11. From here you can edit comments,  or  insert
    blank lines after opcodes. If the comment, or even a piece of it can be
    seen, then you will see the ";" with some or all of the comment.  Since
    comments can be up to 250  characters  long,  comment  truncation  will
    occur quite a bit. Blank lines are really only  useful  in  making  the
    disassembly display and output more readable by separating code areas.

  - Added rudimentary searching on F12/ALTF12. Whatever you can see on  the
    display, you can search for it. This search also allows  for  wildcards
    (* and ?).

  - Added a Configuration page on ALT-F11. From  here  you  can  alter  the
    program address, skip the  first  two  bytes  of  the  file  (if  these
    constitute the program address), change the output file type, and a few
    other things.

  - The AUTOLABEL (ALT-F3) is a much smarter now. It will  auto-create  the
    "link" labels for you. i.e. If you have a "LDA ($F7),Y",  then  a  link
    between $F8 and $F7 will be created, along with the  proper  labels  if
    necessary. It also uses the  same  rules  mentioned  earlier  regarding
    label names.

  - Added a cursor bar, so now you can select the line  to  work  on.  This
    change alone makes the Disassembler *much* easier to use than previous.
    It is no longer necessary to hand-enter every address  for  labels  and
    tables. Simply move the cursor bar to the line you want  labeled  or  a
    table range set, and select your function.

  - Right-mouse clicking in the "source" label  zone  (from  left  edge  of
    screen to just before the opcode column) will bring up  a  pop-up  menu
    for  source  label   functions   (set/modify   source   labels/tables).
    Right-mouse clicking in the "destination" label zone (from  the  opcode
    column to the right edge of the screen) will bring up the "destination"
    label   functions   (set/modify   destination   labels/tables,    jump,
    commenting).

  - Removed all of those annoying  "info"  windows  after  setting/clearing
    labels & tables.

  - Removed the now unnecessary "Command>" line from bottom of display.

  - Re-arranged the F5/F6 set/clear labels functions. I  now  differentiate
    between source address (left column  program  address)  an  destination
    address (address following the opcode column). F5 sets the source label
    and F6 sets the destination label. The ALT-F5 and  ALT-F6  keys  remove
    the source and destination labels respectively.

  - Re-arranged the F7/F8 set/clear table  address  range  functions.  They
    work on the same principle as F5/F6.

  - All address entry fields default to the addresses contained  under  the
    highlited cursor  line,  depending  on  whether  you  have  selected  a
    "source" or "destination" function.

  - Redesigned the F5 through F8 set/clear dialog boxes.

  - Removed RETURN and SPACEBAR  as  keys  that  scrolled  the  disassembly
    window down.

  - Disassembling to a file (Alt-F2) now supports C64 SEQ  (no  line  #'s),
    C64 PRG (line #'s) and DOS TXT filetypes.

  - Added display of stats (variable useage  and  other  things)  to  ALT-I
    (Info)

  - Broke down the HELP topic into many different entries, to cover all the
    additions and improvements.

  - Conversion from old OVV 1.0 files (before version 3.4) should be ok.


* Removed all of the keyboard MACRO playback/recorder code, references  and
  HELP file entries. Personally, I never found it useful. As it  was  never
  capable of recording mouse movement and clicks, that  very  much  limited
  it's capabilities. Also, it was much too  strict  in  its  playback,  not
  knowing how to handle unexpected errors and conditions,  which  could  be
  fatal to your data. Removing it freed up about 14Kbytes of RAM,  which  I
  can definitely use for better additions.


* I've relaxed the rules (yet again!) to determine what  is  a  valid  disk
  image (D64, D71, D81, X64). As long as the file size is greater or  equal
  to the base size (i.e. 174848 for a D64, 819200 for a D81),  it  will  be
  considered a "legal" disk image, and 64COPY  will  try  to  work  on  it.
  However, I've also added in a warning message box  when  you  attempt  to
  work on a non-standard D64.


* Changed the code for ARC, SDA and SFX files to correct for some anomolous
  file headers. I was given  some  file  samples  which  didn't  match  the
  standards, and causes 64COPY some grief to display the contents.


* Added disk serial#, volume label and file  system  to  the  CTRL-L  "Disk
  Free" window.


* T64 files now get created with a more descriptive tape label, rather than
  the standard "DEMO TAPE".  I  thought  I  was  already  doing  this,  but
  apparently not.


* Added in two new options to the Config/Panel Options window,  "[  ]  Save
  active panel path on exit" and "[ ] Save inactive panel  path  on  exit",
  for the saving of the paths when quitting the program. A recent change in
  version 3.3 meant I started  to  save  the  current  panel  path,  but  I
  reversed that and now only the non-active panel will be saved by default.


* Mass-conversion of PC64 (P00) files no longer causes  corruption  of  the
  filenames in the panel display.


* When converting from P00 files to T64, the resulting T64 is  now  created
  with a minimum of extra blank entries in the  directory.  The  value  for
  empty entries is never more  than  the  "T64  Directory  Size"  from  the
  configuration window.


* Button Controller changes:

  - Simplified the setup necessary for making specific button types ("[  ]"
    and "( )"). I now can specify whether to align on center/left/right  on
    these types of button. This change affects all windows with those  type
    of buttons. It also *could* affect the list, arrow and input areas.

  - Button widths were not calculated properly  when  no  button  name  was
    assigned.

  - Modified the code to allow for pop-up menus (a single left-click on  an
    item to bring up a menu).  This  will  be  an  on-going  upgrade,  with
    pop-ups slowly being introduced throughout the  program.  So  far  I've
    added them to the Disassembler and the Text Editor.  This  modification
    was made at a *very low level* in the mouse code, and  so  will  likely
    mess up other functions. I've fixed everything I could find, but little
    things continue to manifest themselves.

  - HEX input can now handle up to 4-byte HEX numbers (unsigned long)


* Changes to the FORMATS.ZIP documents:

  * Updated .CRT doc. Added chart showing control line states and cartridge
    ROM locations. Added in the new CRT types.
  * Updated .WRA (Wraptor) doc
  * Added .S20 Phau Zeh VIC-20 snapshot image description
  * Added .PCV PCVIC VIC-20 snapshot image description
  * Added in a  DISK.TXT  doc,  describing  how  Commodore  disks  allocate
    sectors for files (written by Joe Forster/STA)
  * Updated the SDA, SFX and ARC topics due to some  unusual  sample  files
    which were sent to me that did not adhere to the standard.
  * Added .VSF, the VICE snapshot layout
  * Added in D2M (FD2000) image layout


* Fixed a bug dealing with the tags on files  in  the  panels  "moving"  to
  other files when certain panel operations were done. Many functions  were
  updated, so look out for tags moving around  after  file  operations,  as
  this means I haven't fixed them all yet.


* Added a window scroll-bar to the HEX Editor and  File  Viewer  functions.
  Removed the "" scroll indicators in the information bar.


* "Clear Tags" in the HEX Editor wasn't working  as  it  should.  I  wasn't
  clearing out some important variables.


* Appending to existing LOG files now works again. I must have  broken  the
  "append" function in my file routines some  time  ago.  This  meant  that
  trying to append to any  existing  log  file  (DOS  copy  error  logging,
  CheckD64 logging) would result in that log file being overwritten.


* Removed the changes I previously made to the CHANGE DISK  LABEL  routine,
  so that you can once again enter the ID and DOS VERSION as one.


* Changes to the Delete dialog and status windows:

  - The "selected size" is no longer calculated automatically, but there is
    now a button asking if you want this calculation to be done.

  - The status window is now a fixed width, showing  much  more  info  than
    before (total files to delete, directory count, total bytes).


* Some changes to the Copy/Move (F5/F6) files routine:

  - Redesigned the entire "copy status" window. Now the window is  a  fixed
    size, showing source & destinations paths, total files  to  copy,  size
    copied and to copy (in bytes), and total # of errors  encountered.  The
    new design allows much more info to be  shown  than  before,  and  it's
    easier to watch when a copy is happening.

  - Added the LOG path onto the "Copy Files"  window.  This  makes  logging
    disk errors during copies/moves easier.

  - Redesigned the file name collision dialog. You now have the option to:

    * "cOpy" the file (or "mOve" if moving)
    * "copy All" (or "move All" if  moving)  to  force  all  the  files  to
      copy/move, regardless of wether a collision happens or not.
    * "Skip", to not copy this one file
    * "Skip All" to skip all future filename collisions
    * "Log" to enable error logging, if it has not been enabled.

  - If a file error was detected (read/write/open), the error type was  not
    being sent to the LOG file correctly, only junk was being sent.

  - If you press ESC during a copy/move, you will now be asked if you  want
    to cancel, rather than simply exiting  the  copy/move.  Not  cancelling
    will continue the process with no data loss.

  - Added an option, to enable/disable  the  "calculating  size"  function.
    Sometimes you may *not* want to do the  calculation,  especially  on  a
    drive which could be damaged.

  - Added a "retry" option, to re-read difficult  files.  This  forces  the
    program to re-read up to the specified retry count before giving up  on
    a file.


* Added some extra file type detection into the FILE INFO screen. Now,  MP3
  audio files (up to ID1.1) are detected,  and  pertintant  information  is
  shown.


* Added a screen-saver hotkey combination on CTRL-F10.


* Executing 64COPY without any 64COPY.INI file resulted in an empty  dialog
  box that just said "DRIVE"!. This no longer happens.


* Added in a "Check DOS Files" routine on ALT-F12. This allows you to check
  a source drive/directories to see if the files are readable. This may not
  seem to useful (and for many it will not be), but if you have a CD-R or a
  CD-RW, and the need exists to check the whole thing  for  integrity  (all
  650Mb of it!), this routine will do so. The  default  path  goes  to  the
  64COPY path.


* Added ability to read/write Macintosh and Unix text  files  in  the  Text
  Editor. The Macintosh uses the <CR> (carriage return) as a line delimiter
  instead of the PC's <CR><LF>, and Unix uses only  the  <LF>.  If  a  file
  being read for editing only uses anything other than the PC/DOS standard,
  it will be converted to <CR><LF>. When saving files (or blocks), you will
  be informed as to the format being saved in,  changeable  in  the  Editor
  Configuration or the main Configuration windows.


* File Viewer can now display  Macintosh  (carriage-return  line  delimited
  only) and Unix (line-feed only) text files properly.


* Changed some Configuration windows (Editors/Viewers, Panel  Options)  for
  new features. Added a new Configuration window covering the  options  for
  the File Copy/Move function (F5/F6).


* Changes to the HELP:

  1. When HELP didn't have the memory to display the topic, the HELP window
     would not be drawn properly or the previous topic was not cleared out.

  2. Updated and  fixed  *many*  more  HELP  screens.  Added  "Dedication",
     "Features & Shortcuts" & "Processing Files" topics.

  3. Topics over 255 lines long would get truncated.


* Fixed a cursor positioning bug in the window SETCURSOR routine.


* The window showing file access errors was not correctly showing the right
  filename. Usually it showed garbage for the filename.


* Added file time and date to the Change Attribute window.  No  editing  of
  this info yet.


* Changes to the File Compare:

  - Added in a CRC32 calculation. The numbers  are  shown  in  the  header,
    following the filenames. The CRC32 adds an extra layer of verification.

  - Added an intro dialog with the option to disable the  CRC  calculation.
    Doing a CRC on a large file can take some time, so having  the  ability
    to skip it is handy.

  - If the file sizes are different, the program will ask if you  want  the
    compare to continue.

  - You can now cancel the CRC32 calculation while it is in progress.


* Added basic decoding of UU and HQX files on Alt-F10. UU/UUE (uuencode) is
  a common PC format and HQX is a common Macintosh format. They are used to
  encode binaries into a text-readable format which are then either  mailed
  to individuals or posted to internet newsgroups.


* Some system color changes:

  - Added in a BOLD text color to  the  full-screen  functions.  This  BOLD
    color  will  slowly  be  incorporated  into  most  of  the  full-screen
    functions. It will make the screen display a little nicer to read.

  - Changed some of the default system colors.

  - The version of the CLR file has changed. Any custom colors you have set
    will be lost.


* Added some more error checking to the  ZipCode-to-D64  converter  dealing
  with missing sectors, and improved the error messages.


* Unified the "Disk Repair" and "Tape Repair" windows under Config/CheckXXX
  to be one window called "File Repair". This option now  covers  repairing
  *all* files, be it Disk, Tape or CRT.


* Changes to the CheckXXX routines:

  - Continuous output in CheckZipCode (both  4-pack  and  6-pack)  was  not
    working.

  - Added some new options to the CheckDISK/TAPE/ZIP dialog window:

    1. "Skip disk SEP files" allows you to skip the  "directory  separator"
       files, without having to go to the  CONFIG  window  and  change  the
       scan/repair options the hard way.

    2. "Enable file repair"  allows  you  to  enable/disable  the  "repair"
       function, and just do a simple scan. It is the same option as in the
       Config/CheckXXX window called "File Repair"

    3. "Continuous output" allows you to not have the  screen  output  stop
       after one page with a "continue" prompt.

  - Added continuous output  control  to  T64  and  Disk  (D64/X64/D71/D81)
    images.

  - Improved the diagnostic messages in CheckDisk.

  - Added the display/repair of CRT contents. This allows you  to  see  the
    various "chip" contents in the CRT's. The only repair available for now
    is the correction of the "header size". Many CRT files  exist  with  an
    incorrect header size value of 32, when it should be 64. For what  it's
    worth, this is now correctable.

  - Added the display of G64 (GCR) disks. For now they are "Scan Only",  no
    fixing. This allows you to see the track offsets and speed zones in the
    G64's.

  - Changed the screen output of the CheckZipCode 4-pack  and  CheckZipCode
    6-pack to a more organized table layout style. It should be  easier  to
    read.

  - Added better information display (X64 header  info)  on  X64  files  in
    CheckD64.

  - Recovered files in the disk images would not show up in  the  directory
    listing until the image was re-read.

  - Scan Mode was not being set right, and would  sometimes  get  stuck  on
    "scan only" mode.

  - X64's would not be checked properly only when inside the image.


* Removed the "Show time estimate" option from the Config/CopyMove  window.
  This option is no longer used as the estimate is now always visible.


* Reduced the amount of files that the panels  can  display  to  799  (from
  999). This was to free up some more memory.


* Internally restructured the programs overlay layout (gained some  memory,
  lost some memory). I'm still striving to get a good layout, with the best
  memory savings, and still make it runnable from  floppy...  not  an  easy
  balance.


* Set the default path for the Copy/Move log file to be  the  64COPY  path,
  rather than "C:\".


* The drop-down menu items (on F9) will now move with the mouse  scrolling.
  This makes them consistent with the new pop-up menus I have introduced.


* The cursor location was not  being  restored  when  exiting  the  ALT-key
  filename search.


* The Clipboard now stores the file offset address from where HEX data  was
  copied.


* Pasted HEX data from the clipboard into the Text  Editor  will  now  know
  what address it was copied from. It will be entered by default  into  the
  "address" field of the Paste dialog box.


* Dates displayed in the panels beyond the year 2000 (i.e. 2001, 2002) were
  shown as 2000 (00).


* The date/time display in the "Change  Attributes"  window  for  directory
  entries is now correct. It use to display the "zero" date "Jan  1,  1980"
  and "00:00:00 am". I am now using the date and time shown  in  the  panel
  listing.


* More spelling mistakes corrected.

---------------------------------------------------------------------------


Summary of changes from 3.20 beta 2 to 3.30 full release
--------------------------------------------------------

* Holding down the ALT key while left-clicking in any  column  of  a  panel
  (only in DOS panel mode) will change the sort to that column. So, if  you
  want to sort by Name, simply ALT-click in the NAME column (or panel Title
  bar) to set the sort.

  Right-clicking in the panel display while holding the ALT key  down  will
  change  the  panel  style  (any  type)  between  the  "normal"  and   the
  "alternate" display.


* The passing in of one image name on the  command-line  for  quick-display
  was broken.


* Changes to the 6502 Disassembler:

  1. F9 GOTO address dialog will now contain the last address entered as  a
     default address

  2. Changed the OVV file layout to allow for version changes. Old  version
     OVV's will still be readable, and will be converted to the new  format
     when changes are saved.

  3. You can now enter a $0000 address as  the  starting  address  for  the
     disassembled code.

  4. If you do not set the starting address, you can still use the F9  GOTO
     function. It use to be locked out if the starting address was unknown.

  5. Finally fixed a long-standing bug in the Disassembler where two  bytes
     on the end of the file being disassembled would not always be shown.


* Both panel paths are now stored in the INI file, so when you re-start the
  program, both panels will be where they left off.


* Doing a SEARCH (ASCII or HEX) in  the  HEX  editor  would  fail  to  find
  matches when the match was at the end of the search  buffer.  This  could
  happen throughout the file being searched, and not just at the end.


* Rewrote the CHANGE DISK/TAPE  LABEL  routine  (SHIFT-F10).  The  one  for
  changing DISK labels didn't handle the ID and  DOS  VERSION  bytes  well.
  Also, both were not C64 character-set and upper/lower case friendly.


* When changing the SORT method (Name, Ext, Time, Size), the  tags  in  the
  panel will no longer be cleared unless you change to/from Unsorted.


* Improved the display of error windows involving filenames.  Now,  instead
  of seeing "Can't open filename" without the file file in  question  being
  shown, you will see the filename (and many times with the path as well).


* Pasting of a SEP group from inside the Directory Editor was broken if the
  SEP group started with or contained a non-existant entry.


* Under certain circumstances, the panel header description  of  X64  files
  was wrong. If you previously had an  extended  D64  displayed  (40-track,
  "S/40/E"), then the X64 would say the same thing.  I  was  neglecting  to
  clear out one variable.


* Replaced some repetitious code with a  new  function  call.  This  mostly
  affects the padding on filenames in images (Make new image, Format image,
  Rename files).


* The WINDOW and LFN (long filename) routines  are  now  self-initializing.
  This may not be important to the average user, but it helps me greatly as
  it prevents major problems when I forget  to  pre-condition  them  before
  useage.


* Rewrote the way menus get disabled when the panels are  off.  It  is  now
  much more flexible.


* You are no longer asked for a second  confirmation  when  deleting  files
  with hidden/system attributes set. They are treated like all other files.


* When a DOS file copy failed, and LOGGING is  enabled,  the  log  probably
  would not contain the reason that the copy failed.


* If a filename collision happens when copying files, and  the  destination
  files had some of the special attributes set (system/readonly),  and  you
  specified  to  overwrite  "all"  files,  then  those  with  the   special
  attributes would still not be copied.


* Moved the "testing team  credits"  from  the  CONCLUDE.TXT  file  in  the
  FORMATS.ZIP  archive  to  the  README.TXT  with   the   standard   64COPY
  distribution archive, which is where it always should have been.


* Additions/changes to the FORMATS.ZIP document:

    1. Added .G64 GCR file description
    2. Added Sidplay/PSID format description
    3. Added .TAP tap file description
    4. Added .CRT file description
    5. Added PC64 ROM file description


* Changed some personal information in the online HELP and TXT documents.

---------------------------------------------------------------------------

Summary of changes from 3.20 beta 1 to 3.2 beta 2
-------------------------------------------------

* Fixed a major bug: when converting a T64 file to a D64, the load  address
  of the T64 file would get mangled.


* Added read-only extract support for SPYne and CPK files. They  work  just
  like ARK or LBR where you can extract files, but you can't add/delete  to
  them.


* Added a new support file  "64COPY.DIR"  which  holds  all  the  Directory
  Customizer settings. I've recently started to do a lot  of  additions  to
  this routine, and now allow multiple BAM message saving, custom SEPARATOR
  files, and the  storing  of  groups  of  SEPARATOR  files,  all  to  make
  customizing the directory much quicker and easier.


* Major changes to the Directory Editor:

  1. Mouse/keyboard tagging was one line off.

  2. Added a series of selectable file separator patterns on F7,  with  the
     last one user-definable.

  3. Rewrote the way I deal with BAM messages by combining all the  MESSAGE
     keys (ALT-F3/F4/F5) into one Message Control Center on ALT-F3. You can
     now store up to 5 messages, and view the one in the current D64 image.
     The F9 key is now the hot-key for setting the BAM message assuming you
     have selected the one you want in the Message Control Center.

  4. Added a SEPARATOR control center on ALT-F7. This allows you to tag and
     save a common group of separators to a special area and them give  the
     grouping a name. Thus whenever you need them, you can paste them  into
     a disk image. It allows for up  to  5  groups  of  separators,  of  10
     entries each.


* Added a GEOS file info viewer to the FILES menu as "View GEOS  info"  (or
  use CTRL-V as a shortcut). This viewer shows you the GEOS ICON, structure
  type,  load  addresses,  creation  date/time,  creator  and  other   text
  information fields. If the file is not in GEOS format, you will be  told,
  and no information will be displayed.


* You can now  click/enter  Wraptor  (WRA),  Compressed  ARKive  (SRK)  and
  LHA/LZH/LZS/SFX archives to view the contents, but you can  do  *nothing*
  else with them (no  conversion,  deletion,  etc).  SRK  will  show  which
  subfiles are compressed, WRA will show the correct filetypes it  supports
  (SEQ, PRG, USR, GEOS), and LHA will show  the  compression  type  (-LH?-)
  used on each file.


* If certain errors occurred when extracting files from  ARC/SDA  archives,
  extraction would fail on *all* ARC/SDA file from then on.


* You can now create images (F12) on  disks  with  no  root  entries  (like
  floppies).


* The codes displayed in the error editor  now  correspond  to  the  actual
  drive errors. i.e. 0 is error 20, 1 is error 21 ... 9 is error 29. 'F' is
  still defined as error 74.


* When copying files into a T64, and you don't  have  the  Config/Emulators
  switch "Auto-expand T64 dir." enabled, then when the directory fills up I
  will now ask if you want to expand the directory anyways.


* If the switch "Use dir track for files" is enabled, and any  sectors  are
  available on track 53 of a D71 disk, they will be used. The "blocks free"
  count will also reflect the free sectors on track 53.


* Convert now honors  the  native  D71  interleave  of  6.  This  value  is
  adjustable  on  the  Config/Emulator  page.  D81  sector  interleave   is
  hard-coded to 1.


* Added a series of selectable file separators for disk images on InsertSep
  (SHIFT-F7). The last one is user-definable.


* When trying to run 64COPY from a floppy (which I do, but I doubt  anybody
  else does), and you accidentally execute something from the  command-line
  by hitting return, you will now be asked  if  you  want  to  execute  the
  command.


* Accidentally broke the passing of startup command-line execution for the
  options "QUIET", "MONO" etc. They are back now.


* You can now pass in a name of an archive to display on the  command-line,
  or by using associations under Win95 and double-clicking on it.


* Rewrote much of D64-to-ZipCode to gain a reasonable speed increase.  Also
  rewrote portions of ZipCode-to-D64 to clean up the code.


* The diagnostic output of CheckZip (4 and 5 pack ZipCode) was missing some
  information when decoding specific sections of RLE-encoded sectors.


* In the Text Editor, the CURSOR LEFT key, when it hits  the  left  margin,
  will now go to the end  of  the  previous  line,  providing  some  cursor
  wrapping function.


* CheckZip Sixpack now shows the offset into the  file  where  each  sector
  resides.


* When switching the panel display from an X64 to a D64,  it  was  possible
  that the program would start to display the D64 as though it was an  X64,
  due to a variable not getting set.


* When converting from D64 to a diskpacked zipcode, the disk  ID  contained
  in the zipcode is the cosmetic ID from the D64 image at 18/0 offset  162,
  rather than a hardcoded value.


* The BAM Editor display allows you to select your own  character  set  for
  the used/free map from "*+þOX" for allocated and "úù-. " for free.  This
  is on F6 when in BAMEDIT.


* Added a check for GEOS disks to the CheckDisk routine. If  it  thinks  it
  encounters a GEOS disk, you  will  be  warned  about  continuing  due  to
  possible disk corruption.


* The RIGHT menu didn't have the CTRL-F assignment for  the  FILTER  window
  shortcut.


* If you issued a "re-read" command from the menu for the opposite  panel,
  only the presently active panel would get refreshed.


* Additions/changes to the FORMATS documents:

  - Added SPYne "SPY" file description
  - Added 64NET "N64" file description
  - Added 64LAN "L64" file description
  - Added CCS64 "CRT" cartridge file description
  - Updated the ZIP topic
  - Updated the WRA topic
  - Updated the F64 topic
  - Updated the GEOS topic
  - Updated *many* other topics (thanks to Joe Forster/STA!)
  - Added a revision history to all the TXT doc's, to better track changes


* Fixed some bad HELP screens

---------------------------------------------------------------------------

Summary of changes from 3.10 beta 3 to 3.20 beta 1
--------------------------------------------------

  Thats right folks, a new version, and this time  I  never  even  got  the
previous 3.10 version out of beta and officially released.  What  with  the
long filename functions included in 3.10, and now the  D71  and  D81  image
support, I felt a need to  change  the  version.  The  amount  of  internal
changes to handle the new 1571 (D71) and 1581 (D81) images was  so  massive
that I had no option but to change the version.

  I can't start to  list  what  all  had  to  be  modified  and  re-written
throughout the program to support these images, but suffice it to say  that
this version has to be  tested  all  over  again.  Almost  no  function  or
sub-routine was spared in the re-write.


* Added full support for D71 and D81 image  files.  No  emulator  yet  uses
  them, but Star Commander does support them, and will have  *native*  high
  speed transfer routines for the 1571 and 1581.


* Added in read-only extract  support  for  filepacked  ZipCode  (A!xxxxxx)
  files. They work just a normal DOS directory. Hit return on  one  of  the
  parts and select the files to copy/convert.


* Added in convert-to-D64-only support for Sixpack ZipCodes  (#!!xxxxx)  on
  F11. The 6 zipcode files will be read, analysed for  what  errors  exist,
  and converted into a D64 image, with the error bytes attached. Any  major
  errors decoding the data will be reported.


* I have changed *many* routines from using "static"  to  "dynamic"  memory
  allocation for large strings. This seemed  to  alleviate  a  major  stack
  overrun problem I was having, and I hope I didn't break too  much.  As  a
  result, I was able to reduce the  stack  size  down  significantly  (from
  32000 to 10000 bytes).


* Re-structured many subroutines in my overlay template to gain  back  more
  free memory (and of course I keep adding more to the program, taking some
  this "free memory" right back!)


* You can now switch the  panel  font  between  the  C64  upper  and  lower
  character sets (simulated sets) by holding down the  ALT  followed  by  a
  SHIFT key, or by the switch "Show C64 names in  lower  case"  located  on
  Config/Panel Setup. This also applies to the display in the D64 Directory
  Customizer and the D64 Hex Editor.

  Note: this is not the full font support I want to include, but its close.
  Now at least, you can switch the  panel  display  to  read  some  of  the
  filenames you couldn't read before, especially when the case was mixed.

  Because of the changes relating to the font modifications, I had to alter
  some  of  the  routines  that  depend  on  displaying  and  entering  C64
  characters (D64 Dir Edit, D64 Hex Edit, a few others). Be aware that  all
  may not be well yet!


* Changes to the Convert routine:

  1. Added a new switch to the Config/Emulator page "Auto-expand T64  dir."
     which when set will expand a  T64  directory  (if  necessary)  if  the
     directory will overflow before the copy is finished. Now, you can copy
     as much as you need into a T64 (up to the maximum  files  displayable)
     without getting the "T64 directory is full" error.

  2. When converting files (from DOS), if a filename contains either "_" or
     "~", they will be converted to spaces.

  3. Restructured the code, moving some code out to subroutines to  reclaim
     some of the memory I have lost recently with the add-on of  supporting
     D71 and D81 images.

  4. When converting files into a disk image (D64, X64, D71,  D81),  and  a
     duplicate filename is encountered, you now have the ability to  change
     the name, or skip the filename.

  5. Converting files to P00 format with the  switch  "Use  long  C64  dest
     names" enabled would generate a bad DOS P00 filename,  seeing  as  all
     P00 files must be short names.

  6. Crosslinked files in disk images were no longer being reported  during
     a Convert.


* Changes to the Directory Editor:

  1. I allowed you to enter strange ALT-key combinations when it should not
     have.

  2. Dummy entries that are created now have the track set to point to  the
     start of the directory, making them appear to be  separator  files  by
     default.

  3. The dialog boxes for Set Columns (F2) looked terrible, so I redesigned
     them.

  4. The BACKSPACE key now works again.


* Changes to the HELP code:

  1. Altered the main index screen to make finding topics a little  easier.
     Each heading is now in a different color from the subtopics, with  the
     subtopics indented.

  2. Made extensive changes to the way I display text  and  its  attributes
     (BOLD, CENTER, etc).

  3. The mouse cursor would disappear when displaying the contents  of  any
     topic.


* Some changes to the Text Editor:

  1. Finally added paragraph justification. When the switch is  set  ("[  ]
     Justify  paragraph  on  format"  in  Config/Editors  or   the   Editor
     Configuration window), any paragraph being "Block  Formatted"  (ALT-B)
     will be justified to the maximum line width.

  2. Added new switch "Append this block to this file" to the "Save  Block"
     (F11) key. Now you can either save any tagged block to a new file,  or
     append it  to  an  existing  file.  If  you  are  appending,  and  the
     destination filename doesn't exist, you will be asked if you  want  to
     create it.

  3. When pasting data into a text document, you can now enter the starting
     address for the block. It use to assume a starting address of zero.

     It will also determine how many digits long the address should  be  by
     the starting address and the number of bytes being pasted.

     Any value being pasted below 33 ASCII (control codes and spaces)  will
     be converted to a "ú" in the  ASCII  display  section.  This  prevents
     pasting of  LINEFEED,  CARRIAGE  RETURNS  and  FORM  FEED  codes  that
     *really* screw up the editor.

     You also have control over whether you want:
     - ASCII block appended
     - Starting address prepended
     - Block title header prepended
     - Style of HEX numbers (C-style "0x??" or simple HEX list)

  4. Block Format (ALT-B) will now remove extra spaces in the lines  before
     it re-formats the entire paragraph.

  5. Restructured the code to optimize the memory useage.

  6. Block Format will now move the screen up if the cursor bar  goes  into
     the last few lines of the screen, so you can see what else  is  coming
     up before formatting it, rather than forcing you to scroll the  screen
     up manually.

  7. If the REPLACE fails (can't find a string to replace),  the  tag  area
     will now be set in the right place.


* Many additions and changes to the FORMATS.TXT document:

  1. Added a new section to many of the topics  about  "what  it  takes  to
     support xxx format". This might prove helpful to those people who want
     to understand and work with (especially creating/writing) the  various
     file formats.

  2. Added description of CVT, a format used  to  transfer  GEOS  files  as
     sequential files.

  3. Added description of D71, the 1571 disk layout.

  4. Added description of D81, the 1581 disk layout.

  5. Added description of F64, a rare companion file to the D64.


* Changes to the Snake Game screen saver:

  1. The saver would still appear to run out of snakes, and not regenerate.
     The error turned out to be  that  some  snakes  were  being  generated
     invisible (black color), so you could not see them.

  2. Added a new config option called "Place obstructions". With this,  you
     can place a random number of "blocks" as  obstructions  to  the  snake
     movements.


* Changes to the Color Configuration:

  1. Increased program colors to 100 per  mode  (B/W  and  COLOR)  for  200
     total.

  2. Added some color schemes to the F9 (now the "Set  Scheme"  key).  From
     there, you can load the default colors, or 3 pre-defined color schemes
     (Phil's, Alternate 1 or Alternate 2).

  3. The color "Input area hilited" for the Error Windows has been changed,
     although in order to see the change you will have to go to  the  Color
     Config window, Error Windows heading, and  press  F9  to  restore  the
     colors.

  4. If you loaded a color scheme (previously just default), and then  went
     back in to edit the  colors,  the  new  scheme  would  not  be  active
     anymore.

  5. Corrected some  bad  color  values,  and  linked  a  few  more  colors
     together.


* Changes to the Disassembler:

  1. If "Include labels for common ROM and  I/O  calls"  was  enabled  when
     Disassembling a file (F2) and a BYTE table was encountered, the output
     might be incorrect, and could contain ROM or I/O lable references.

  2. Restructured the code to gain  more  free  memory  back  (specifically
     changes to reduce the stack size down)


* Changes to better support CD-ROM disks:

  1. The "read-only" attribute is no longer kept when copying files from  a
     CD-ROM.

  2. The file time/date is now properly kept when copying from CD-ROM.

  3. Cleaned up many routines, most of which use to heavily  complain  when
     working with files on *any* write-protected disk, such as CD-ROM.

  4. Most routines will now "flash" the "View Only" message in the info bar
     when working with files that can't be modified.


* Changes to the long-filename (LFN) code:

  1. If I attempted to close a file handle that had  already  been  closed,
     the results would be unpredictable. I likely do this in  the  program,
     and that would account for some strange bugs.

  2. The "auto-detect" of an LFN-compatible OS didn't work right. It  would
     say that pure DOS was LFN capable.

  3. The date/time of files copied to/from remotely mounted disks  (network
     drives) is now done properly.

  4. Filenames that need to  be  created  will  now  default  to  uppercase
     extensions (like "D64" rather than "d64") to try to keep the number of
     LFN entries to a minimum. However if you change the  name  so  it  has
     lower-case properties, then the name will be created LFN.


* ALT-UPARROW and ALT-DOWNARROW  now  adjust  the  height  of  the  panels,
  similar to the "% of screen" field in the Config/Visual page, but  now  a
  line at a time, versus a percentage of the screen height.


* Implemented preliminary code to support "INFO", "QUICKVIEW" and "DIRTREE"
  panel modes. The actual code for these panel modes won't  come  for  some
  time, but I thought it would be good to get the prliminary  work  out  of
  the way.


* Changing a C64 filename that contained graphics characters would  totally
  destroy the filename. Also, you could not change the name of a  separator
  file if there was already another name the same.


* Added a new menu item "Mini Status" under the OPTIONS menu. This controls
  whether the INFO or FREE line gets displayed at the bottom of the panel.
  "BRIEF" only turns on the INFO line, "FULL" turns on the  INFO  and  FREE
  line, "OFF" turns them both off.


* Added a new option to the Miscellaneous page called "Use  CRSR-LEFT/RIGHT
  nav.". This will make the  CURSOR-LEFT  key  act  like  a  "back  up  one
  directory level" command ("CD .."), and the CURSOR-RIGHT key will go into
  the directory or image/emulator file under the hilite bar.

  Instead of using the HOME/CURSORDOWN/ENTER sequence to enter directories,
  it makes directory and file navigation  much  easier,  but  substantially
  changes the way the program works/feels.


* Files whose extension was shorter than 3 characters  would  be  displayed
  when "show only executables" or "show only emulator files" was checked in
  the Filter menus.


* Added a new "Panel Settings" page to the Configuration, and moved some of
  the switches from other screens (various Visual and Other) to it.


* The ALT-key search routine now works a little differently. It will search
  from the present location of the panel hilight bar down until it finds  a
  matching filename. If none are found, then it will search from the top of
  the list for a matching name.


* If one panel drive letter was different from another, the  ALT-Fx  change
  drive window may not show the correct active drive letter.


* The MACRO routine no longer records *any* mouse  movements,  clicking  or
  dragging, but only records keyboard strokes.


* Re-assigned ALT-UPARROW & ALT-DOWNARROW (recall history) to  CTRL-UPARROW
  & CTRL-DOWNARROW.


* The Button Controller now handles  HEXADECIMAL  ($0000  to  $FFFF)  entry
  fields, and limits the input to 0-9 & A-F. Also, NUMERIC entry areas  can
  now only have numeric characters entered into them, such as 0-9, "+"  and
  "-".


* The HEX Editor now shows the tagged area amount.


* If the panels  have  just  been  redrawn,  and  the  hilite  bar  in  the
  non-active panel was overtop of a long filename, the status line  at  the
  bottom of the panel would only show the short  name  until  you  switched
  (tabbed) to that panel.


* The "Use long C64 dest. names"  switch  under  the  Config/Emulator  page
  would still work even if the master "Use long filenames" switch from  the
  Config/Miscellaneous page  was  off.  Now,  all  long  filename  switches
  (including Panel Setup's "Display long filename only") are  dependant  on
  the master Miscellaneous switch.


* Added a new switch to the Emulator page of the Configuration called "Keep
  DOS filename case". This will keep the upper/lower  nature  of  the  case
  (usually from a long filename), rather than converting  the  filename  to
  upper only for a C64 file.


* Renaming the file inside of a P00 would corrupt the DOS filename.


* CheckZipCode will now page the output if you send it to the  screen.  You
  will be given the option to do "continuous" output, cancel  the  listing,
  or simply display another page.


* If the panels were off,  the  LEFT/RIGHT  menu  sort  options  are  still
  visible, but selecting one of them would not change the sort  setting  as
  it should.


* If you got an error window (BAM warning, WipeFile, etc),  the  key/button
  pressed was not passed back to the calling routine  properly.  Cancelling
  the window might not be recognized as a cancel command.


* Added a switch for the WipeFile pattern to the Miscellaneous page of  the
  Configuration. This lets you set the overwriting pattern, either "linear"
  where a  repeating  pattern  of  00,  01,  02,...,FF  is  written,  or  a
  completely random block.


* Doing any form of "Jump to ROOT" command (CTRL-\, ALT-\, etc) when inside
  of an image file would only back out of the file to the  directory  where
  it was in.


* The disk ID bytes for created disk images (either by Convert or F12)  are
  now randomly chosen from text and numeric  characters  instead  of  being
  hard-coded to the same value.


* The menu which drops down on an F9  (or  tapping  the  ALT  key)  is  now
  dependant on what panel you are currently in, just like Norton Commander.
  The LEFT menu will drop if you are in the left panel, and the RIGHT  menu
  will drop if you are in the right panel.


* The "Swap Panel" command was not swapping all the new panel  variables  I
  had created over the last few months.


* Added the switch "[ ] Include directory tracks  as  file  space"  to  the
  window when copying into disk images (D64/X64/D71/D81). This is the  same
  switch as on the Config/Emulator Conversion window called "[  ]  Use  dir
  trak for files".


* When in 25-line mode, the right-hand window shadow is  now  double-width,
  so that the shadows appear to be the same thickness.


* Delete Files (F8 or SHIFT-F8) would allow you to try to delete  the  ".."
  directory.


* Added a new option to the Panel Setup menu item called "[ ]  Show  scroll
  bar" where you can turn off either panel right-hand border scroll bar.


* Unified all the search/replace strings among the various  editors/viewers
  into one common string.


* Spaces at the beginning of the command-line  are  are  checked  for,  and
  removed, in more functions before they are executed. A blank command-line
  does  nothing,  and  can  (should!)  be  removed  before   doing   cursor
  navigation, processing the command-line, etc. I've always done this,  but
  simply expanded it to operate in more routines.


* The Panel Layout Editor would lose changes made to the layouts and  would
  not  notice  that  changes  had  been  made  when  exiting   under   some
  circumstances.


* You could not create a directory separator (SHIFT-F7) immediately after a
  D81 sub-directory (DIR), but you could after a partition (CBM).


* Clicking the  "WipeFile..."  button  when  deleting  (F8)  files  or  D81
  partitions from inside disk  images  (D64,  D71,  D81)  would  not  do  a
  wipefile, but just a mere delete.


* If you used SHIFT/CTRL/ALT keys and clicked on the FKEY bar function  you
  wanted, it might not have gotten the function you wanted.


* Finally added in a internal "write sector" routine, to write sectors  out
  to disk images. I've implemented it in most routines that work with  disk
  images.


* Assigned CTRL-F to call up the FILTER menu item automatically. Added this
  short-cut key to the MENUS as well.


* The Filter option "Include SEPS in +\- tag" is now defaulted on.


* Spelling mistakes corrected.


* Many changes to the FORMATS.ZIP


* I've found a bug in Windows95 which  affects  how  a  *long*  destination
  filename gets created, and at first it appeared to be  a  bug  in  64OPY.
  Here's how to duplicate it from the 64COPY command line. Note you  *must*
  be in Win95 to see this.

    1. Copy (F5) a file, upper case name only, to a destination.

    2. Rename the destination file (SHIFT-F6) after the copy so it  is  now
       lower case. This creates a LFN entry of the lower case name.

    3. Delete (F8) the renamed file.

    4. Now copy (F5) the file again, still in uppercase only, and see  what
       name, and in what case, the destination is in. It will appear in LFN
       as a *lower* case name, not upper.

  What appears to be happening is Win95  thinks  that  the  old  LFN  entry
  matches the new name, and doesn't  realize  that  the  case  is  actually
  wrong, and to re-write the name correctly. This only happens  when  there
  *was* a filename at the destination, with an LFN entry of the same  name,
  but in the wrong case.

-------------------------------------------------------------------------------

Summary of changes from 3.10 beta 2 to 3.10 beta 3
--------------------------------------------------

* Changes to the Convert routine:
  - Added create-only ARK support into the Convert routine. You can create
    them (and copy out of them), but you can't add to or delete from them.
  - Added full REL file support. You can copy them out of D64, ARK, LNX,
    ARC/SDA and R00 (PC64) files, and copy into D64/X64, LNX, R00 and ARK.
    They can be copied into T64's and DOS binaries, but they cease to be
    REL files.
  - If converting a ZipCode to a D64 failed, a partially created D64 file
    would be left.
  - The filetype would get mangled (set to FRZ) when copying T64 files into
    other T64 files.


* Changes to Config/Screen Saver window:
  - Re-designed the config window, moving the "Test Savers" button and
    adding a "Config" button.
  - Arranged the list of savers into a user-selectable list. Now you select
    the specific saver you want to work with and either press Test or
    Config.
  - The checkboxes beside the saver names still exist, to enable/disable
    their execution.
  - Added extra configuration options to all the screen savers (under the
    config button).
  - When the SNAKE GAME ran out of snakes, they would not always
    regenerate.


* Changes to the MACRO control center (CTRL-F9):
  - Added new buttons for Play, Record and Delete.
  - Any Fkeys that are not available in a particular mode are not shown.
  - Added two of the Config option switches "Auto-chain recording" and
    "Auto-repeat playback".


* Changes to the Text Editor:
  - The tagging (F7/F8) in the Text Editor has been improved/fixed.
  - Added "delete word right" (CTRL-T), "delete word left" (CTRL-BACKSPACE)
    and "delete to end of line" (CTRL-K)
  - Added in a Norton Editor mode switch "Use Norton Editor keys". It
    emulates *most* of the operations of Norton Edit (like live tagging on
    F3), but the screen colors are not the same, and there are some subtle
    differences.


* Added a new switch to the Config/Emulator page called "Use long C64 dest.
  names" which allows you to create long DOS names from long C64 names.
  i.e. If you have a filename "forb. forest ii", the converting to a DOS
  binary with this switch on, the resulting filename will be
  "forb._forest_ii.ext". Notice the '.' characters of C64 names will be
  retained. When not running an LFN os, make sure you don't enable this
  switch.

  This switch is also under program control, but only when the program is
  first executed. Once the program is running, you can change the switch
  manually. If 64COPY detects you are running under a long filename OS
  (Win95), then this will be turned on. If you're running under DOS only,
  this will be turned off. You can still change the switch during normal
  program operations, but be aware that the program *might* change it for
  you.


* Removed a long-time (annoying!) bug in the screen saver. If you hit an
  "extended" key (like an Fkey or an ALT-key) to bring back the panel
  display when any screen saver is running, the keystroke would not be
  fully taken out of the keyboard buffer, making the mouse buttons
  inoperative and causing *lots* of other problems.


* Turning the panels on/off (using ESC) enough times with the titlebar
  visible would eventually cause an "Internal error: no more windows
  available".


* You can now cancel the changes made in the FILTER menu item, PANEL SETUP
  menu item, Color Configuration and Program Configuration windows by
  clicking the CANCEL button, or hitting ESC on the keyboard. Clicking on
  the OK button will go ahead with the changes.


* Increased the user-settable options to 200, to make room for individual
  screen saver configuration (and more).


* When the clock changed from 12:59 to 1:00, the leading "1" from the "12"
  would remain, making the time appear to say "11:xx" instead of "1:xx".


* The cursor was accidentally being left activated when calling some
  functions from the menus, but only when the menus were brought up using
  the mouse, not F9.


* The "Button Controller" can now handle confirmation buttons "OK/CANCEL"
  with an active key other than the first key of the button name (i.e.
  instead of a "Configure" button using the 'C' key, I can send it in as
  "conFigure", with the 'F' being the active key). Up until now I could not
  use buttons starting with the 'C' key, since that key is always reserved
  for "Cancel", whether its a visible button or not.


* Greatly improved the randomness of the random number generator.


* Added an extra line to the info header line of the File Viewer, to allow
  for very long filenames.


* Changes to many entries in the FORMATS.TXT doc (esp. dealing with REL
  file support in various file types)


* ARK files would not display file sizes over 256 blocks properly, and
  under some circumstances you could not extract from them properly.


* Fixed some cursor movement and highlighting bugs in the D64 HEX Editor.


* Formatting a D64 image would cause the BAM for track 18 to be incorrect
  (18/0 and 18/1 would not be allocated for the BAM and directory)


* The HEX Editor now displays the ASCII code (hex and decimal) of the
  character you are on.


* ZipCode's being displayed in the left panel no longer claim to have error
  bytes attached (35/E)


* Compare can now compare two files in the same panel.


