Help Index

Introduction
Dedication
About Help
Troubleshooting
Keyboard Reference
Command-line options
Features & Shortcuts
Memory Requirements
C64 font support
Windows Long Filenames (LFN)
Obtaining the latest release
Screen Saver Features
Program Trace (debug logging)
Panel Operations
Panel Layout
ALT-Key Filename Matching Shortcut
Panel File Selection Methods
Toggle Panel(s) On/Off
Switch Panels
Re-read Panel
Swap Panels
Jump to Root of Drive
Redraw screen
Change Video Size
Filename Completion
Sort Order
Process Files
Insert/Overwrite Mode
DOS Operations
Change DOS File Attributes
Exit Program
Show Total Directory Size
Delete Files/Directories
Check DOS Files
Drive Information
File Information
Display/Select Command History
Create New DOS Directory
Display Opening "Welcome" Banner
Print Files
Copy/Move/Rename Files
Change Panel Drive
Search For Files
Compare Two Files
Combining Files
Splitting Files
String Search
Custom & Unique Functions
Convert ROM Images
Decoding UU & HQX
Fix WAV File
Convert Files To/From Image Formats
Converting D64 to 4-pack ZipCode's
Converting 4-pack ZipCode's to D64
Convert GCR/F64 Files
Create Image File
Format Image
Create D2M Partition
Creating D81 sub-directories
Make CMD/D2M Subdirectories
Check Image Files
Check Disk Image Files
Check T64 Files
Check 4-pack ZipCode files
Check Sixpack ZipCode for integrity
Check CRT Files
Check G64 (GCR) Files
Check F64 & D64 File
Other Image Functions
Change Disk File Attributes
Read Images, Overview
Disassembler
Change Disk/Tape Image Labels
Rename Files
Unlist Basic Program
Convert PETASCII to IBM DOS files
View GEOS File Info
Swap Disk Image Filenames
Create Disk File Separators
Delete Disk File Separators\Delete files
Editors and Viewers
Disk BAM Editor
Disk Error Byte Editor
Disk HEX Editor
Customize Disk Directory
Text Editor
HEX Editor
File Viewer
Pull-down Menus
LEFT menu
FILES menu
EMULATOR menu
COMMANDS menu
OPTIONS menu
RIGHT menu
Program Customization
Color configuration
Change program configuration
Change Editor/Viewer Settings
Change Keyboard/Mouse Settings
Change Screen Settings
Image Creation Settings
Image Conversion Settings
CheckXXX Options
Change Screen Saver Settings
Change Panel Options
Change File Copy/Move Settings
Change Miscellanous Settings
Save Settings
Panel Options
Change Mini Status
Filter settings
Panel Layout Editor
Edit .EXT Extension File
User Menu
Program particulars
Internal versus External editors/viewers
Supported File Formats
External Support Files
64COPY Environment variable
Other Notes
Miscellaneous Things
Development Notes
Disclaimer and User Liscence!
Shareware Cost
Program philosophy
Differences from Norton Commander
Distribution file breakdown
Included code segments
Contacting the author
Famous Last Words


About Help (1/0)

Help about HELP, what a concept! This command brings up the HELP window for whatever topic you are on or in. It will also give you the main HELP index, where you can choose whatever topic you want.

From the main index, you may see triangular arrows beside topics. This means that the topic can be opened to show its sub-contents. Use the right arrow key on the keyboard to open a topic, and the left arrow key to close it.

You can also use the mouse to work the help topic display. Right clicking on the triangular arrow will open/close the topic. Left clicking on a sub-topic will close the topic.



Back to index

Change DOS File Attributes (2/0)
Ctrl-A

This is the window you get if no files are tagged. You can change the individual attributes for this file. Also, the modification time and date get displayed (but not changeable yet).

+----- Change Attributes ------+
| Change file attributes for |
| "FILES.C" |
| |
| set |
| [x] Archive |
| [ ] Read only |
| [ ] Hidden |
| [ ] System |
| |
| Date: 7-16-2000 |
| Time: 2:21:22 pm |
|------------------------------|
| [ OK ] [ Cancel ] |
+------------------------------+

If some files are tagged, the window changes. Here you can change the attributes of the group of files, setting or clearing specific bits.

+----- Change Attributes ------+
| Change file attributes for |
| 7 files selected. |
| |
| set clr |
| [x] [ ] Archive |
| [ ] [ ] Read only |
| [ ] [x] Hidden |
| [ ] [ ] System |
| |
|------------------------------|
| [ OK ] [ Cancel ] |
+------------------------------+



Back to index

ALT-Key Filename Matching Shortcut (3/0)
ALT-key

If you hold down the ALT key and press any alphanumeric key, the hilite bar will jump to the first directory or filename which matches what was typed. You can type in as many characters as needed to narrow down to the filename you are looking for.

|editor2  c  |    27956| 2-26-97| 9:42a*
|editor2 obj| 16058| 2-26-97| 9:43a*
|evalc64 c | 2445| 2-06-97|11:14a*
|evalc64 obj| 2008| 2-25-97|12:11a*
|exit c | 2447| 2-25-97|11:04a*
|exit obj| 2256| 2-25-97|12:14a*
|files c | 7656| 2-06-97|11:14a*
|files obj| 5996| 2-25-97|12:15a*
|file_id diz| 385| 2-14-97| 3:00a*
|------------+---------+--------+------|
|files c 7656 2-06-97 11:14a|
| Free on D: 128,155,648 bytes |
+--------------------------------------+
Search: FIL_

To find other matches, press Control-Enter. This will move the highlight bar down, and back around to the top of the list, to the next match. If no other match is found, the bar will not move.

This function is most useful if the displayed panel is in DOS mode and the sort is set to NAME and ASCENDING.



Back to index

Format Image (4/0)
Shift-F1

You can format many types of images, mostly the disk images, but also LNX and T64. Any label/ID contained in an image will be retained. You can also format most disk images for use in GEOS.




Format Image: T64/LNX/D80/D82 (4/1)
Shift-F1

The following dialog box applies to formatting a T64, LNX, D80 or D82 image. These have no special formatting options.

+---------- Format Image ----------+
| |
| "SAMPLE.T64" |
| Format this image file? |
| |
+----------------------------------+
| [ Yes ] [ Cancel ] |
+----------------------------------+

Once formatted, the image will still retain the old label and ID's.




Format Image: D64/D71/D81/X64 (4/2)
Shift-F1

If you are formatting a D64, D71, D81 or X64 image, this is the dialog you will get. Note that the button [ ] Format it as GEOS will appear in the box . This allows you to format the disk for use in GEOS, with border sectors.

+---------- Format Image ----------+
| |
| "SAMPLE.D64" |
| Format this image file? |
| |
| [ ] Format it as GEOS |
| |
+----------------------------------+
| [ Yes ] [ Cancel ] |
+----------------------------------+

Once formatted, the image will still retain the old label and ID's.




Format Image: D81 partition (4/3)
Shift-F1

If you are in a D81 partition, you will get this dialog box. Note that the button [ ] Format it as GEOS will appear in the box. This allows you to format the partition for use in GEOS, with border sectors.

+-------- Format Partition --------+
| |
| "SAMPLE.D81" |
| Format this D81 partition? |
| |
| [ ] Format it as GEOS |
| |
+----------------------------------+
| [ Yes ] [ Cancel ] |
+----------------------------------+

Once formatted, the image will still retain the old label and ID's.




Format Image: DNP (CMD) (4/4)
Shift-F1

If you are in a DNP (CMD native hard disk) image, you will get this dialog box. Note that the button [ ] Format it as GEOS will appear in the box. This allows you to format the partition for use in GEOS, with border sectors.

+---------- Format Image ----------+
| |
| "SAMPLE.DNP" |
| (CMD HD native partition) |
| Format this image file? |
| |
| [ ] Format it as GEOS |
| |
+----------------------------------+
| [ Yes ] [ Cancel ] |
+----------------------------------+

Once formatted, the image will still retain the old label and ID's.




Format Image: D2M System Partition (4/5)
Shift-F1

If you are formatting the system partition of a D2M (CMD) image, you will get this dialog. Formatting the system partition will remove the partition list so the disk appears empty!

+---------- Format Image ----------+
| |
| "SAMPLE.D2M" |
| (D2M system partition) |
| Format this image file? |
+----------------------------------+
| [ Yes ] [ Cancel ] |
+----------------------------------+




Format Image: D2M native partition (4/6)
Shift-F1

If you are formatting a CMD native partition from in a D2M image, this is the dialog you will get. Note that you can format this partition for use in GEOS.

+---------- Format Image ----------+
| |
| "PARTITION 01" |
| (contained D2M native partition) |
| Format this image file? |
| |
| [ ] Format it as GEOS |
| |
+----------------------------------+
| [ Yes ] [ Cancel ] |
+----------------------------------+

Once formatted, the image will still retain the old label and ID's.




Format Image: D2M 1541/1571/1581 partition (4/7)
Shift-F1

If you are formatting a 1541, 1571 or 1581 partition in a D2M image, this is the dialog you will get. Note that you can format the partition for use in GEOS.

+---------- Format Image ----------+
| |
| "15xx PARTN 13" |
| (contained 15xx image) |
| Format this image file? |
| |
| [ ] Format it as GEOS |
+----------------------------------+
| [ Yes ] [ Cancel ] |
+----------------------------------+

Once formatted, the image will still retain the old label and ID's.



Back to index

Disk BAM Editor (5/0)
Shift-F11

Assigned BAM editor keys:
Toggle sector allocation SPACE
Set sector as used KEYPAD +
Set sector as free KEYPAD -
Set/clear/toggle whole track F3
Set "Blocks Free" count F2
Change BAM display characters F6
Exit F10

Simply go to the track/sector you want to change, and alter the allocation flag. The track/sector location is always visible in the info bar at the top of the screen. D64/X64 and D71 images require very little explanation, except that the screen layout is different between them.

If the disk is an extended D64 format (i.e. 40 track), there will be an extra block of tracks (36 through 40) tacked onto the right of the BAM display.

If the image is a D81, then the screen layout changes a bit. There is no longer any sector titles displayed, as there is simply no room for them. In 43 line mode there will be no track title line either.

For a D81 in 25 line mode, the whole D81 BAM can't be displayed (as it needs at least a 43 line screen), so the screen is effectively split, with it initially displaying sectors 0-19. Scrolling down to the bottom of the screen past sector 19, and the display redraws, showing sectors 20-39.

When inside of a D81 subdirectory, the display will change again. You will be limited in the track range that you can edit, with the locked out tracks being inaccessible (*).




Popup Menu (5/1)

This is the menu which comes up on a right mouse button click on any sector location.

  Bam                           
+------------------------------+
| Clear bit Keypad - |
| Set bit Keypad + |
| Toggle bit Spacebar |
| sEt/toggle track F3 |
+------------------------------+

Clear Bit - Clears the 'used' flag and frees up the sector in the BAM map

Set Bit - Sets the 'used' flag and allocates the sector in the BAM map

Toggle Bit - Flips the useage bit (on->off, off->on) in the BAM map

Set/Toggle track - Presents a dialog box to either toggle (flip) all the bits for the selected track, or set all the bits 'used'




Pull-Down Menus (5/2)

These are all the pull down menus, accessible by clicking the mouse in the title bar (top line). There's not a lot of options, so all the menus are presented here.

  File         
+-------------+
| eXit F10 |
+-------------+

Exit - Exit the BAM Editor



  Bam                           
+------------------------------+
| Clear bit Keypad - |
| Set bit Keypad + |
| Toggle bit Spacebar |
| sEt/toggle track F3 |
| ---------------------------- |
| set Blocks free F2 |
+------------------------------+

Clear Bit - Clears the allocated flag for the sector in the BAM map. This makes the sector appear available to DOS

Set Bit - Sets the allocated flag for the sector in the BAM map. This makes the sector appear used and unavailable to DOS

Toggle Bit - Toggles (flips) the allocation flag for the sector (used->free, free->used) in the BAM map

Set/toggle Track - Presents another dialog box where you can select to either set the entire track as being allocated, or flipping all the bits to their opposite state.

Set Blocks Free - Sets the blocks free value that gets returned at the end of a directory listing. This value can be set separate from what the BAM map shows as free/used.



  Misc                      
+--------------------------+
| Change display set F6 |
| ------------------------ |
| Help F1 |
+--------------------------+

Change Display Set - Allows changing of the character set used to display the BAM map.

Help - Gets help on topics for the BAM editor




Exit & Save Changes (5/3)
F10, ESC

+---------- Save Changes ----------+
| |
| Save changes made to the BAM? |
| |
+----------------------------------+
| [ Yes ] [ No ] [ Cancel ] |
+----------------------------------+

Select Yes to save the changes made to the BAM, No to throw away the changes or Cancel to return back to the BAM Editor window.




Change Display Character Set (5/4)
F6

+-- Choose BAM Display Set --+
| |
| Used Free |
| (*) "*" (*) "ú" |
| ( ) "+" ( ) "ù" |
| ( ) "*" ( ) "-" |
| ( ) "" ( ) "." |
| ( ) "O" ( ) " " |
| ( ) "X" |
+----------------------------+
| [ Ok ] [ Cancel ] |
+----------------------------+

Here you can change the display character set for the BAM map. Select the characters you want for the Used and Free sector markers.




Set Blocks Free (5/5)
F2

+--------- Set Blocks Free ----------+
| Enter new value (0-8670) |
| 35 |
|------------------------------------|
| [ Ok ] [ Reset ] [ Cancel ] |
+------------------------------------+

Enter the Blocks Free value that you want the directory to show. This value is only a cosmetic value in relation to the BAM map. It doesn't alter any of the allocation bits.

Select Reset to force the recalculation of what the Blocks Free value should be, based on the allocated and free bits in the BAM.




Change Track Allocation (5/6)
F3

+------- Change Track --------+
| |
| Select track operation... |
| |
| 1 - Set all on |
| 2 - Clear all |
| 3 - Toggle bits |
| |
+-----------------------------+
| [ Ok ] [ Cancel ] |
+-----------------------------+

Select Set all on to allocate all sectors on the selected track.

Select Clear all to deallocate all sectors on the selected track.

Select Toggle bits to flip the allocation bits for the selected track, Used to Free and Free to Used.



Back to index

Convert Files To/From Image Formats (6/0)
F5, F6, F11

In order to convert C64 files, you generally have to go into it first by hitting ENTER on it. This applies to most supported file formats (D64, D71, D81, D80, D82, X64, T64, LNX, LBR, ARK, ARC, SDA, 4-pack ZipCode, filepacked ZipCode and sixpack ZipCode) except BINARY and G64. 64COPY treats C64 images like subdirectories, and pressing ENTER on them makes the program read the central directory of the image and present you with a list of all of the files. Simply trying to convert file (e.g. D64 or T64), by using F11 (Convert) will result in either a 4-pack ZipCode being created (not necessarily what you wanted), or an unuseable file since it is treated as a DOS file and not a C64 file.

Those files that cannot be entered, like G64, are converted by simply selecting them and pressing F11 to convert them to another format.

Once you are inside the image you can use F5/F6/F11 to convert to any other format. The only exception to this rule is the P00 format (used in the PC64 emulator). These are treated as if you have gone into them since they only contain one file per image, and making you actually enter them was a waste of time.

+------------- Convert Files --------------+
| |
| "names & position" selected... |
| Choose destination format... |
| |
| D64 (disk) ARK (ARKive) |
| T64 (tape) D71 (1571) |
| P00 (PC64) D81 (1581) |
| PRG (Binary) D80 (8050) |
| X64 (disk) D82 (8250) |
| LNX (LyNX) |
| |
| [ ] Create separate files |
| [ ] Auto-convert filenames |
| [ ] Keep DOS filename case |
| [ ] Add C64 type to name |
| [ ] Remove DOS extensions |
| [ ] Extend disk directory |
+------------------------------------------+
| [ OK ] [ No ] [ Cancel ] |
+------------------------------------------+

Once you get the Convert dialog box up, you are presented with a series of filetypes, which are the ones you can convert to. By default, selected files will all be converted into one image. You can override this behaviour by enabling the create separate files and force each selected file to be put into separate files. Converting to binaries (PRG) or P00 files will always default to creating separate files, as that is their nature.

By selecting the Add C64 type to name, you can attach the C64 file extension (PRG, SEQ, etc) to the destination DOS file (Binary/PRG only). When converting to DOS binaries, the C64 filetype will be lost, so this can help to identify what the original file type was.

If you don't want the DOS extensions on the source files to be copied into the destination image, then check the Remove DOS extension option. Enabled, the DOS extensions will be stripped off all source files before being copied to the destination.

One very dangerous switch is Extend disk directory. This one allows you to extend the directory off the normal directory track when the directory fills up. If a disk is created that has directory sectors off the normal track, and these are used in an emulator or on the real floppy drive, the disk directory can become corrupted if you attempt to write to the disk. For this reason this switch is always off whenever the program is restarted and is not settable from the Configuration window. If you want these types of disks created, you must consciously enable this setting.

PRG (Binary) is not really a filetype, but is a native DOS file. Converting to PRG will create a DOS file, without any extension. You could lose some portion of the filename due to DOS filename restrictions, and you will lose what type of file it is (PRG, SEQ, USR) as the extension is not attached. Unless you know how to use this type, it is highly recommended not to.

The highlighted convert type (from the above window) is selectable in the Configuration window under Image Options, subsection Convert Default, as are the checkbox options.

G64's, D64's (with or without F64 error files) and Sixpack ZipCode files are all inter-related and can be easily converted between each other. To convert any of these between the other, select only one at a time and press F11. The window that comes up allows for different destination types depending on what source type is selected. Selecting "no" will bring up the standard Conversion dialog. The conversion matrix is as follows:

SourceType     Destinations Allowed                      
---------- ------------------------------------------
G64 -> D64 with error bytes, Sixpack Zipcode
D64+F64 -> G64, Sixpack Zipcode, D64 with error bytes
D64 -> G64, Sixpack Zipcode
SixZip -> G64, D64 with error bytes

If you press F11 on a 4-pack ZipCode (#!xxxxxx) or a D64 (and not inside of the file), you will get a different dialog box as the program knows what the file is. The dialog box for ZipCode<->D64 and D64<->ZipCode is basically the same.

+---------- Convert ZipCode/D64 -----------+
| |
| "BLAST141.D64" selected. |
| Do you want to convert the items to |
| the appropriate counterparts? |
| (Press NO for main CONVERT window) |
| |
| [ ] Auto-convert filenames |
+------------------------------------------+
| [ Yes ] [ No ] [ Cancel ] |
+------------------------------------------+

4-pack ZipCodes can only be Converted into D/X64's as they serve no other function, and D64's, when converted as a DOS file, can only be converted into 4-pack Zipcode's. However, if you say "no" to this conversion, you will be brought into the normal F11 convert window (see above).

If you press F11 on a Sixpack ZipCode section, you will get a dialog box very similar to the one above for converting 4-pack zipcode's to D64's.



If your source is an image file, and you press F5/F6, several possible things will happen, depending on what is being displayed in the opposite panel.

1. If you have another image file in the opposite panel (other than LBR/ARK/PC64/ARC/SDA/SPY/ZipCode), you will be presented with a "copy into XXX image" window. If you press "no", you will be brought to #2.

+------------ Copy into xxx Image -------------+
| |
| "labyrinth" selected. |
| Do you want to put this file into the xxx? |
| |
| [ ] Remove DOS extensions from source |
| [ ] Include directory tracks as file space |
| [ ] Extend disk directory |
| |
| (Press NO for main CONVERT window) |
|----------------------------------------------|
| [ Yes ] [ No ] [ Cancel ] |
+----------------------------------------------+

2. If you have a DOS directory open, you will be presented with the normal Convert Files window. See the top of this HELP topic for that window.

For information on the Extend disk directory option, read the section previously about it.



The way conversion is done in 64Copy may seem confusing, but it was the only way to handle the various images that exist. Here is a short chart for converting files in from-to style:

Source    Dest.       What Happens                                
------- --------- --------------------------------------------
DOS bin D64, T64, Get the Copy into XXX image first.
LNX, X64, Saying "no" brings up the normal DOS Copy
D71, D81, window.
D80, D82
Any other Normal DOS Copy window
G64 D64, Zip6 Get a dialog asking Convert G64 File.
Saying no brings up the Convert Files
window.
Any img D64, T64, Get the Copy into XXX image first.
LNX, X64, Saying "no" brings up the Convert Files
D71, D81, window.
D80, D82
Any other Normal Convert Files window.
D64,X64 DOS bin Get the Convert D64 to ZipCode window.
(in DOS) Saying "no" brings up the normal Convert
Files
window.
ZipCode DOS bin Get the Convert ZipCode to D64 window.
(in DOS) Saying "no" brings up the normal Convert
Files
window.



NOTES: Separator files (those designed to act as headers between a group of others) can be copied between some images. The exceptions are PC64, T64 and Binary. Those formats have no provisions for separators, and if you try to copy separators into them, they will be skipped.

Also, D81 partition (CBM) files can't be copied at all, and are deselected before the conversion begins. Since they can contain sub-files and other directories, along with files that contain physical track and sector references, moving them would be pointless, and also would almost always prove fatal to the files they contain.



Back to index

Check T64 Files (7/0)
Alt-F3

T64 files, by their very nature, can't be checked for too many faults without simply removing the faulty file. The T64 format is expandable, meaning you add onto the end of the file, changing its size. Therefore one can never be sure of how big the files contained within should be.

Checks are made for legal offset values, ones that point into the file, and not beyond the end of the file, or into the directory area. If one is found, the entry is removed, but no data is removed.

+---------------- Errors ----------------+
| |
| "gunstar" |
| |
| This file entry is bad: Bad offset. |
| Remove the entry? |
| |
+----------------------------------------+
| [ Yes ] [ No ] [ Cancel ] |
+----------------------------------------+

I also check for holes in the directory, empty entries which the C64S emulator does not like to see. If they are found, I ask to remove the blank space.

+----------- Spaces In Directory ------------+
| |
| The central directory has empty entries. |
| It is highly recommended to remove these! |
| Do you want to remove them? |
| |
+--------------------------------------------+
| [ Yes ] [ No ] [ Cancel ] |
+--------------------------------------------+

The last thing I look for are correct used/total entry counters. Contained in the directory are two different counters, one which holds the total number of directory enries, and another which holds the number of used entries. If the actual number of used entries does not correlate with the counter, it is corrected.

+---------- Incorrect Used Count ----------+
| |
| The "used entries" counter is incorrect. |
| (0 claimed, 74 actually used) |
| Fix the counter? |
| |
+------------------------------------------+
| [ Yes ] [ No ] [ Cancel ] |
+------------------------------------------+

The CheckT64 routine can also run in SCAN ONLY mode, only reporting what it finds with no correction. Go to the Configuration window, CheckDisk/Tape/Zip Options page and change the settings for T64 Repair and Log Results



Back to index

Color configuration (8/0)
Ctrl-F6

64COPY allows you to change any color in the program. Colors are grouped by function type, so changing the look of a particular area of the program is relatively easy. Select the area you want to change and hit return to enter the alteration window.

+--------- Color Configuration ----------+
| |
| Select area to change |
| |
| 1 - Main display panels |
| 2 - Dialog boxes |
| 3 - Confirmation windows |
| 4 - Error windows |
| 5 - Full-screen functions |
| 6 - Pull-down menus |
| 7 - Help window |
| 8 - Other colors |
+----------------------------------------+
| [ Edit ] [ OK ] [ Cancel ] |
+----------------------------------------+

If at any time you are not happy with the color settings, pressing F9 will bring up a scheme selection window. From here you can load a series of predefined color layouts, including the program default colors. Clicking on "cancel" (or pressing ESC) will cancel any changes. This way if the settings are very messed up, you can recover them quickly.

Once you have selected the area you want to change, here is the window you might see...

+------------- Error windows --------------+
| |
| Color synchronize:On |
| |
| >>>(1) Window border ($4F)<<< |
| (1) Window title ($4E) |
| (1) Text/background ($4F) |
| (1) Hilited text ($4E) |
| (1) Inactive button ($4F) |
| Active button ($1F) |
| (1) Unavailable button ($4C) |
| (1) Selected button ($4A) |
| Input area ($1F) |
| Input area hilited ($3F) |
| Progress bar graph ($0F) |
| |
|------------------------------------------|
| [ Ok ] [ Cancel ] |
+------------------------------------------+

These are the active F-keys, when in the color edit window.

Change foreground color     F5 
Change background color F6
Restore default colors
(this area only) F9
Synchronize on/off F11



Select the color you want to change, and use F5 and F6 to change the foreground or background colors.

With Color Synchronize on, adjusting the background color will result in all colors with the same synchronize value, i.e. (1), to change together. Colors with no value are independant of all others. Turn Sync off (F11) to adjust colors independantly. The foreground colors are always independant of the Sync setting.

Note that you usually can't set the color of something to be invisible (same foreground and background color). The change foreground and change background color commands have checks built in to look for invisible colors, especially dealing with color groups. If they see one, the foreground color will be adjusted.

If somehow one is set to be invisible and you try to exit this window, the following error window will appear:

+-------------------- Attention ---------------------+
| |
| Some colors are set to make the text invisible. |
| OK to continue with these colors anyways? |
| |
|----------------------------------------------------|
| [ OK ] [ Cancel ] |
+----------------------------------------------------+

The program does not want you to use colors which will make things invisible, so you must answer this window with an OK to continue.



Back to index

Change program configuration (9/0)
Alt-F6

Selecting this brings up a dialog asking you for what area you want to modify, each one a different topic. Select what topic you want to change to go into the change window.

Here we can alter some of the programs features like changing the external editors, image file conversion defaults, confirmations, etc. Active functions are usually denoted with an 'x' in the '[ ]' box. Text areas have a small entry box.

+-------- Program Configuration ---------+
| |
| Select area to change |
| |
| 1 - Editors/Viewers |
| 2 - Mouse/Keyboard |
| 3 - Visual Options |
| 4 - Image Creation |
| 5 - Image Conversion |
| 6 - CheckDisk/Tape/ZipCode |
| 7 - Screen Savers |
| 8 - Panel Options |
| 9 - Copy/Move Files |
| A - Disassembler Options |
| B - Other Things |
+----------------------------------------+
| [ Edit ] [ OK ] [ Cancel ] |
+----------------------------------------+

Keep in mind that if you choose Cancel, all changes made to any of the sub-areas will be discarded.

Pressing F9 will restore all the program settings back to internal defaults. Don't forget to save the new settings, if necessary. You can cancel at any time with the Cancel button, or by pressing ESC.

+------------------ Restore Defaults ------------------+
| |
| Restore all the program settings back to default? |
| |
+------------------------------------------------------+
| [ Yes ] [ No ] |
+------------------------------------------------------+



Back to index

Check Disk Image Files (10/0)
Alt-F3

This is one of the most useful features of 64COPY. When inside of a disk image (D64, X64, D71, D81, D80, D82), or just having the hilite bar on top of the disk filename, pressing ALT-F3 will perform a Checkdisk to verify integrity of a disk which has been generated using Star Commander, X1541, Disk64e or Trans64. It looks for such things as cross-linked files, illegal track and sector values, invalid directory entries (such as separators, and illegal file start track and sectors). It will also, on your ok, clear out unmapped sectors (by filling them with zero's, which allows for better compression if you plan to store them). It also does a few more things, so give it a try. It is a very fast way to see if the disk transferred ok (using any of the above mentioned programs). Of course, it does not verify if the data in a sector is valid (no practical way to do this without CRC error information).

Below is sample output from the CheckDisk routine:


File: 1.D64 Mode:Scan/repair Log:No
Filename: 1.D64
Scan mode: repair/query
Repair method: in-depth
Reading t/s links, please be patient!
Reading track 35... done!
Checking directory integrity... ok.
Checking files...
Filename | Addr| T/S | Status
------------------------------------------------------------------
"names & position",S|$3120| 17/0 |appears ok.
"additional info" ,R|$524D| 17/2 |appears ok.
"jkcss2" ,P|$0801| 19/8 |appears ok.
"jkcss" ,P|$0801| 20/0 |appears ok.
"sort.comp" ,P|$0801| 27/2 |appears ok.
"find.comp" ,P|$0801| 28/3 |appears ok.
"sort.o" ,S|$0615| 30/5 |appears ok.
"find.o" ,S|$1BD2| 31/0 |appears ok.
"turbo/64" ,P|$C000| 33/2 |appears ok.
------------------------------------------------------------------
BAM and "Blocks free" count OK (38 free).
No errors found. Life is good!

If you are checking an X64 image, the following information will also be displayed in the Checkdisk output immediately following the repair method line. It shows whether the X64 header is valid or not:


X64 signature: 43 15 41 64 (verified)
version: 01.02
Disk type: 1541
Tracks in image: 35
# of disk sides: 1
Has error bytes: No
Description: no description present

CheckDisk is very useful when verifying the integrity of files downloaded from any of the FTP sites, or converted directly from the 1541. It also logs all of the output by appending to a file called .CHK, where is the file you are currently checking. The log contains all of the information seen in the on-screen output window.

Much work has gone into the CheckDisk routine. With features such as file undeletion, truncation (rather than deletion) of files with bad track/sector links, recovery of lost chains (allocated and linked sectors, but no corresponding directory entry), and better detection of wrong sector links, it is a very useful tool for detecting most faulty tranfers. What follows are some sample windows that might come up on a typical disk scan. Notice how the default action on most repairs is "no", just for safety's sake.

+------------------ Incorrect CBM DOS Bytes -------------------+
| |
| There is a mismatch in the CBM DOS bytes in the BAM sectors. |
| Do you want to set these bytes to their correct values? |
| |
| Not correcting these bytes could result in an unreadable |
| disk under the emulators, or on a real 1541. |
| |
+--------------------------------------------------------------+
| [ Yes ] [ No ] [ Cancel ] |
+--------------------------------------------------------------+

+---------- Incorrect File Allocation -----------+
| |
| The file "super1" has |
| an incorrect block count: |
| 219 reported used, 176 actually used. |
| Fix the block count? |
| |
+------------------------------------------------+
| [ Yes ] [ No ] [ Cancel ] |
+------------------------------------------------+



+---------- Cross-linked Files ----------+
| |
| The file "loader" is |
| cross-linked with "super1". |
| Truncate the file? |
| |
+----------------------------------------+
| [ Yes ] [ No ] [ Cancel ] |
+----------------------------------------+



+-------------- BAM Map Mismatch --------------+
| |
| The disk image has an incorrect BAM map. |
| (This can result in a wrong block count). |
| Fix the BAM map? |
| |
+----------------------------------------------+
| [ Yes ] [ No ] [ Cancel ] |
+----------------------------------------------+

The undelete, sector clear and lost chain recover routines are all after the main CheckDisk code. Once the program has checked the normal files for integrity, a more extensive scan can be selected. If the option Do extra disk checks is selected before running CheckDisk, these extra tests will be run automatically. If the option is not selected, a dialog box will appear asking if you want to continue with a more extensive scan of the disk (see below). If you had any errors reported which you did not correct, DO NOT CONTINUE. If you continue, you could cause severe disk corruption or data loss, but only if you answer YES to any of the questions which would follow.

+------------------ Continue Image Analysis? ------------------+
| |
| ** WARNING: Do NOT continue if you are unsure! ** |
| ** If you have not corrected all reported errors, STOP! ** |
| |
| Do you want to continue with a more extensive scan? |
| |
+--------------------------------------------------------------+
| [ Yes ] [ No ] [ Cancel ] |
+--------------------------------------------------------------+

The CheckDisk routine can also run in SCAN ONLY mode, only reporting what it finds with no correction. Go to the Configuration window, CheckDisk/Tape/ZipCode page and change the settings for "Disk Repair" and "Log Results".

The scan only mode is the default when CheckDisk is run on an image that is write-protected.



Back to index

Check 4-pack ZipCode files (11/0)
Alt-F3

This is not a check & correct function (like the other CheckXXX routines), but it only checks and reports any possible errors it finds. If you are having problems UnZipCoding a set of 4-pack files (due to some error reported), try running CheckZipCode on the files and see where the error comes up. If you know the format of ZipCode files, it is possible to fix them (but not easy).

Four-pack ZipCode's have two basic compression methods, Fill Sector with single byte and RLE-compress sector. The display below shows a detailed listing of all the data, and how it is decoded.

The first compression type is Fill Sector...

$1933 | 42 0F 00    |  2/15 | Fill | fill byte $00            

This shows a sector (2/15) completely filled with 00's.



The second compression type is RLE, or Run Length Encoding, which encodes sequences of repeated bytes into a smaller string. When an RLE sector is encountered, you are shown this...

$1732 | 82 0E FB 01 |  2/14 |  RLE | length=251, REP code=$01 

The REP code is what to look for. As long as this code is not encountered in the following bytes (before the next sector), we have normal sector data. As soon as this code is hit, it is displayed as...

$182E | 01 08 00    |       |  RLE | REP seq., len=8, fill=$00

The len is how many bytes wil be output, and the fill is what byte will be repeated.




Filename: 1!PLUNDE
Scan mode: scan only
Offs | Data Bytes |Trk/Sec| Type | Data Information
------------------------------------------------------------------
$0000 | FE 03 | | | Load address $03FE
$0002 | 21 21 | | | Disk ID
$0004 | 81 00 04 00 | 1/0 | RLE | length=4, REP code=$00
$0008 | | | | 1 bytes data
$0009 | 00 FF 01 | | RLE | REP seq., len=255, fill=$01
$000C | 01 0B | 1/11 | | 256 bytes follow
$010E | 81 01 D9 01 | 1/1 | RLE | length=217, REP code=$01
$0112 | | | | 214 bytes data
$01E8 | 01 2A 00 | | RLE | REP seq., len=42, fill=$00
$01EB | 01 0C | 1/12 | | 256 bytes follow
$02ED | 01 02 | 1/2 | | 256 bytes follow
$03EF | 01 0D | 1/13 | | 256 bytes follow
$04F1 | 01 03 | 1/3 | | 256 bytes follow
$05F3 | 01 0E | 1/14 | | 256 bytes follow
$06F5 | 01 04 | 1/4 | | 256 bytes follow
$07F7 | 01 0F | 1/15 | | 256 bytes follow
$08F9 | 01 05 | 1/5 | | 256 bytes follow
$09FB | 01 10 | 1/16 | | 256 bytes follow
$0AFD | 01 06 | 1/6 | | 256 bytes follow
$0BFF | 81 11 04 00 | 1/17 | RLE | length=4, REP code=$00
$0C03 | | | | 1 bytes data
$0C04 | 00 FF 01 | | RLE | REP seq., len=255, fill=$01
$0C07 | 01 07 | 1/7 | | 256 bytes follow
$0D09 | 81 12 04 00 | 1/18 | RLE | length=4, REP code=$00
$0D0D | | | | 1 bytes data
$0D0E | 00 FF 01 | | RLE | REP seq., len=255, fill=$01
$0D11 | 01 08 | 1/8 | | 256 bytes follow
$0E13 | 81 13 04 00 | 1/19 | RLE | length=4, REP code=$00
$0E17 | | | | 1 bytes data
$0E18 | 00 FF 01 | | RLE | REP seq., len=255, fill=$01
$0E1B | 01 09 | 1/9 | | 256 bytes follow



If the track is incorrect, out of range, or the sector is out of range then an error will be reported.

+------------- Continue Image Analysis? -------------+
| |
| An error has been found. Continue with analysis? |
| |
+----------------------------------------------------+
| [ Yes ] [ No ] |
+----------------------------------------------------+



Back to index

Exit Program (12/0)
F10

+-------- Quit? ---------+
| |
| Quit 64COPY? |
| |
+------------------------+
| [ Yes ] [ No ] |
+------------------------+

This function seems fairly obvious as you use it to quit the program. However, several things will happen when you do quit.

* All the open file handles will be closed

* All the windows will be removed

* Mouse pointer is disabled

* All the support files will be written (INI, CLR, MNU, PAN and DIR). If the setting on the Configuration screen for "Save Settings" is not checked, this part of the exit will not be executed, meaning any changes to any part of the program will be lost.

* You are then left at the command prompt



Back to index

Show Total Directory Size (13/0)
Alt-F5

The name Show Total Directory Size is somewhat of a misnomer, since this routine doesn't only total directories, but anything that is tagged or selected. If I have the hilite bar sitting on a sub-directory, or have tagged a group of files and directories, and I press ALT F5, then I will get a window looking something like the one below.

+------------ Calculate Sizes -------------+
| |
| Selected files total up to... |
| |
| 20,213,801 bytes (3.83% of disk) |
| |
| 10 directories, 434 files |
| |
| (Actual useage: 22,298,624 bytes, |
| cluster size of 8,192 bytes) |
| |
|------------------------------------------|
| [ OK ] |
+------------------------------------------+

This window shows the total size the selected group takes up (in megabytes), the file and directory count, along with the true amount of disk space used (measured by the cluster size). All files and directories take up more space than is recorded by DOS due to slack space at the end of all files. This information might be handy to know, in case too much slack space exists.



Back to index

Disk HEX Editor (14/0)
Alt-F4

Assigned Disk HEX Editor keys:
ASCII edit mode F2
HEX edit mode F3
Exit Editor or Cancel Edit F10
Save sector F4
Find ASCII string F5
Find new ASCII string ALT F5
Find HEX String F6
Find New HEX string ALT F6
Next sector in chain F7
Previous sector (from stack) F8
Trace sector chain to end ALT F7
Goto specific track/sector F9
Goto first TRACK/SECTOR (1/0) ALT HOME
Goto last TRACK/SECTOR on disk ALT END
Increment sector value KEYPAD +
Decerment sector value KEYPAD -
Increment TRACK value ALT KEYPAD +
Decrement TRACK value ALT KEYPAD -
Re-load sector (abandon edits) ALT R
Clear sector (fill with 0's) ALT 0
Undo changes (from last edit) ALT U
Copy into clipboard F11 (or ALT C)
Paste from clipboard F12 (or ALT V)
Turn tag area on/off ALT T
Toggle BAM allocation bit ALT F1
Error Byte Editor ALT E
BAM Editor ALT B

This editor uses the common clipboard to copy contents between the various internal editors. If you are using a 43 or 50 line screen, the clipboard will be displayed underneath the sector being edited.

The Previous Sector command (F8) relies on a stack which is added to every time a new sector is displayed. Whether you follow the sector chain (F7), jump to a new track/sector (F9) or just move up/down (KEYPAD +/-), this stack is maintained at all times.

There also exists a one sector undo buffer that can be used to undo any edits, but only from the last time you entered EDIT mode. If you have edited, gone back to VIEW mode, then edited again, you can only undo from the edits you just made, not any further back.




File Menu (14/1)

  File                
+--------------------+
| Save sector F4 |
| ------------------ |
| eXit F10 |
+--------------------+

Save Sector - Save any changes made to the displayed sector.

Exit - Exit the Disk HEX Editor




Edit Menu (14/2)

  Edit                         
+-----------------------------+
| ASCII edit F2 |
| HEX edit F3 |
| --------------------------- |
| Tag on/off Alt-T |
| --------------------------- |
| BAM editor Alt-B |
| Error editor Alt-E |
| --------------------------- |
| Reload sector Alt-R |
| Zero sector Alt-Z |
| --------------------------- |
| Copy to clipboard F11 |
| Paste from clipbrd F12 |
| cLear clipboard Alt-Z |
| --------------------------- |
| Undo Alt-U |
+-----------------------------+

ASCII Edit - Enable ASCII edit mode. A flashing cursor will appear in the ASCII display of the screen.

HEX Edit - Enable HEX edit mode. A flashing cursor will appear in the HEX display of the screen.

Tag on/off - Turn on/off tagging mode, for tagging a selection of the displayed sector.

BAM Editor - Go to the BAM editor. This has it's own help topic.

Error Editor - Go to the Error editor. This has it's own help topic.

Reload Sector - Reload's the original contents of the sector from the disk image, overwriting any changes made to the display.

Zero Sector - Set's the sector to all zeros.

Copy To Clipboard - Copies the tagged contents (or the entire sector) to the clipboard.

Paste From Clipboard - Pastes the contents of the clipboard to the sector on screen starting at the cursor position.

Clear Clipboard - Clears out the contents of the clipboard.

Undo - Undo changes since last edit. Only this one level of undo exists.




Sector Menu (14/3)

  Sector                           
+---------------------------------+
| Go to sector F9 |
| ------------------------------- |
| increment Sector Keypad + |
| Decrement sector Keypad - |
| increment Track Alt Kpd + |
| dEcrement track Alt Kpd - |
| ------------------------------- |
| Forward chain link F7 |
| Previous sector F8 |
| tRace chain F9 |
| ------------------------------- |
| toggle BAM alloc Alt-F1 |
+---------------------------------+

Go To Sector - Enter the track and sector value of the sector to edit.

Increment Sector - Go to the present+1 sector. If this exceeds the current track length, then track+1, sector 0 is loaded.

Decrement Sector - Go to the present-1 sector. If this makes the sector value negative, then track-1, last sector is loaded.

Increment Track - Go to the present+1 track.

Decrement Track - Go to the present-1 track.

Forward Chain Link - Go to the next sector pointed to by the values held in positions 0 and 1 of the present sector. If they are invalid, the chain is done.

Previous Sector - Go to the previous sector in the chain. These are taken from a stack which has stored all the previously visited sectors.

Trace Chain - Follow the sector chain (the values in positions 0 and 1) until the end.

Toggle BAM Alloc - Toggle (flip) the BAM allocation for the present sector. If it is allocated, make it free and vice versa.




Find Menu (14/4)

  Find                      
+--------------------------+
| find ASCII F5 |
| fInd ASCII new Alt-F5 |
| ------------------------ |
| find HEX F6 |
| fiNd HEX new Alt-F6 |
+--------------------------+

Find ASCII - Searches for a user-specified ASCII string. If a string has already been entered, it will use this one to search for without asking.

Find ASCII New - Searches for a new user-specified ASCII string.

Find HEX - Searches for a user-specified HEX sequence. If a sequence has already been entered, this one will be used as the search criterion without asking.

Find HEX New - Searches for a new user-specified HEX sequence.




Miscellaneous Menu (14/5)

  Misc         
+-------------+
| Toggle case |
| ----------- |
| Help F1 |
+-------------+

Toggle Case - Toggles (flips) the display case from upper case to lower case.

Help - Brings up help on a topic.




Exit (and save changes) (14/6)
ESC, F10

If any changes have been made, you will see this dialog:

+----------- Save Changes -----------+
| |
| Save changes made to this sector? |
| |
+------------------------------------+
| [ Yes ] [ No ] [ Cancel ] |
+------------------------------------+

Selecting NO will abandon all edits made. CANCEL will bring you back to the editor window. YES will save the changes made.




ASCII Edit (14/7)
F2, Alt-A

This activates editing mode in the ASCII pane. Editing mode is active when the cursor is flashing, and only in the pane where it is flashing.

The Mode: line in the header will also change depending on what is going on, from View, to Text Edit to HEX Edit.




HEX Edit (14/8)
F3, Alt-H

This activates editing mode in the HEX pane. Editing mode is active when the cursor is flashing, and only in the pane where it is flashing.

The Mode: line in the header will also change depending on what is going on, from View, to Text Edit to HEX Edit.




Tagging Control (14/9)
Alt-T

Turns on/off the tagging tagging function. Initial press of Alt-T turns on tagging. Move the cursor from the starting point to where you want the tagged area to end and press Alt-T again. The area selected will be highlited. Remember that tagging only functions from top down.




BAM & Error Editor Shortcuts (14/10)
Alt-B, Alt-E

Press ALT-B to bring you into the BAM editor. Press Alt-E to bring you into the Disk Error Editor. Once done, you are brought right back the Disk HEX Editor.




Reload Sector (14/11)
Alt-R

If you want to abandon any edits made to a specific sector, pressing Alt-R will ask to Reload the sector from the disk image.

+------------ Reload Sector -------------+
| |
| Reload sector (abandon all changes)? |
| |
+----------------------------------------+
| [ Yes ] [ No ] |
+----------------------------------------+

Saying NO will leave the sector as it is. Saying YES will reload the sector data.




Zero Sector (14/12)
Alt-Z

If a sector is unused, but it has junk in it, this is a fast way to clear it out.

+------------- Zero Sector --------------+
| |
| Clear sector by filling with zero's? |
| |
+----------------------------------------+
| [ Yes ] [ No ] |
+----------------------------------------+

Saying YES will clear the sector, setting it to all zeros. Saying NO will leave the sector as it is.




Clipboard Functions (14/13)
Alt-C, Alt-V, Alt-Z

Pressing Alt-C will give this temporary message box. It is just informing you that the sector/tagged area has been copied to the clipboard.

+-------- Info --------+
| |
| Block copied |
| |
+----------------------+

Pressing Alt-V will give this warning box, assuming something is in the clipboard. Any data pasted into a sector cannot exceed the upper boundary of the sector.

+------------------- Attention! -------------------+
| |
| The pasted area exceeds the end of the sector. |
| The paste area will be truncated |
| |
|--------------------------------------------------|
| [ Ok ] |
+--------------------------------------------------+

Pressing Alt-V, and not getting any other warning dialogs, will give this temporary message box. It is only informing you that the data was successfully pasted into the sector from the clipboard.

+-------- Info --------+
| |
| Area pasted |
| |
+----------------------+



Pressing Alt-Z will give this dialog box. Saying YES will clear the contents of the clipboard. Saying NO will leave the clipboard as it is.

+---------- Clear Clipboard -----------+
| |
| Do you want to clear the clipboard? |
| |
+--------------------------------------+
| [ Yes ] [ No ] |
+--------------------------------------+

This temporary message box will come up when the clipboard has been successfully cleared.

+-------- Info --------+
| |
| Clipboard cleared! |
| |
+----------------------+




Undo (14/14)
Alt-U

Pressing Alt-U when there is nothing in the UNDO buffer will give this warning box.

+---------------- Attention! ----------------+
| |
| There have been no changes to UNDO from. |
| |
|--------------------------------------------|
| [ Ok ] |
+--------------------------------------------+



If there is something in the UNDO buffer (some edits have been made) will give this dialog box. Pressing YES will undo from the previous edit(s). Pressing NO will leave the current sector as it is.

+--------- Undo Changes ---------+
| |
| Undo changes (from last edit)? |
| |
+--------------------------------+
| [ Yes ] [ No ] |
+--------------------------------+




Track/Sector Navigation (14/15)
Keypad +/-

These keys provide quick movement forwards and backwards through the sectors.

Keypad Plus - Go forward one sector. Once you reach the end of a track, the track count will be incremented as well.

Keypad Minus - Go back one sector. One you reach the beginning of a track (sector 0), the track count will be decremented as well.

Alt-Keypad Plus - Go forward one complete track. The track count is incremented. Once you've reached the end of the image, you will be started at the beginning again.

Alt-Keypad Minus - Go back one full track. The track count is decremented. Once you reach the beginning of the image you will be started at the end again.




Forward Chain Navigation (14/16)
F7

This function allows you to follow the present sector chaining. If the forward chain values (first two bytes of the displayed sector) contain a valid track and sector value for the disk image type, that next sector will be loaded automatically.

If the track indicator (first bytes of the displayed sector) is set to zero, this is what you will see. You are at the end of the chain.

+-------------------- Attention! --------------------+
| |
| You are already at the end of the sector chain. |
| |
|----------------------------------------------------|
| [ Ok ] |
+----------------------------------------------------+

If the track value is illegal for the disk image type, or the track value is legal but the sector value is illegal, this is the error message you will see.

+--------------------- Attention! ---------------------+
| |
| This chain contains an illegal t/s link (68/255). |
| TRACE has been stopped. |
| |
|------------------------------------------------------|
| [ Ok ] |
+------------------------------------------------------+




Toggle BAM Allocation (14/17)
Alt-F1

This function toggles the used flag in the Block Allocation Map (BAM). If the sector is labelled as free it will become allocated and vice versa.

+------------ Info ------------+
| |
| Sector allocation changed. |
| |
+------------------------------+




Find ASCII (14/18)
F5

Enter the text you want to search for in the entry area. If you want the search to be caee sensitive, check the Case sensitive search option.

+---------------------------- Search ----------------------------+
| Enter ASCII search string... |
| |
| [ ] Case sensitive search |
|----------------------------------------------------------------|
| [ Ok ] [ Cancel ] |
+----------------------------------------------------------------+




Find HEX (14/19)
F6

Enter the Hexadecimal numbers that you want to search for. You can put spaces between each HEX number (i.e. 45 DF) or group them all together (i.e. 4500).

+---------------------------- Search ----------------------------+
| Enter HEX search string... |
| |
|----------------------------------------------------------------|
| [ Ok ] [ Cancel ] |
+----------------------------------------------------------------+




Toggle Display Case (14/20)
Alt-Shift

Pressing the ALT key followed by SHIFT toggles the case of the ASCII area. This is handy if the character set you are looking at is actually lower/uppercase rather than upper/graphics.




Jump to Sector (14/21)
F9

From here you can quickly jump to any track & sector in the disk image. The ranges for the track and sector are dependent on the disk image type being viewed. A D64 has different values than a 1581.

+-- Goto Track/Sector ---+
| |
| Track:18 Sector:1 |
| |
+------------------------+




Save Changes (14/22)
F4

If any changes have been made, you will see this dialog:

+----------- Save Changes -----------+
| |
| Save changes made to this sector? |
| |
+------------------------------------+
| [ Yes ] [ No ] [ Cancel ] |
+------------------------------------+

Selecting NO or CANCEL will bring you back to the editor window. YES will save the changes made.

If there was no changes made, this is what you will see.

+----------- Attention! -----------+
| |
| There is nothing to save. |
| No changes have yet been made. |
| |
|----------------------------------|
| [ Ok ] |
+----------------------------------+




Go to Previous Sector (14/23)
F8

This function allows you to go backwards, through all the sectors that have been visited. All sectors that have been viewed or edited are stored on a stack, and these values are pulled off one at a time in reverse order until the stack is empty. Once the stack is empty, this is the error message you will get.

+------------------------ Attention! ------------------------+
| |
| There are no more previous sectors stored on the stack. |
| |
|------------------------------------------------------------|
| [ Ok ] |
+------------------------------------------------------------+




Trace Sector Chain (14/24)
Alt-F7

Pressing Alt-F7 allows you to trace the chain to it's end, either the logical end or an error is encountered. Once the last sector is encountered, you will be left there.

+------- Trace Sector Chain -------+
| |
| Trace the chain to last sector? |
| |
+----------------------------------+
| [ Yes ] [ No ] |
+----------------------------------+

Once the trace is finished, you will be notified of the chain length.

+-------------- Attention! --------------+
| |
| The chain sector count length is 2. |
| |
|----------------------------------------|
| [ Ok ] |
+----------------------------------------+



Back to index

Customize Disk Directory (15/0)
Shift-F2

Assigned Directory Editor keys:
Tag/Untag single entries INS
Group TAG entries KEYPAD +
Group UNTAG entries KEYPAD -
Invert tagged entries KEYPAD *
Set row to new values F2
Move tagged entries F3
Swap two tagged entries F5
Duplicate tagged entries F6
Insert separator entry F7
Separator Control Center ALT-F7
Delete entry(ies) F8
BAM Message Control Center F9
Save changes (no quit) F4
Save/exit editor F10 (or ESC)
Copy items to clipboard F11 (or ALT C)
Paste from clipboard F12 (or ALT V)
Undo changes ALT U
Clear Clipboard ALT Z
Soft write protect toggle ALT F1
Set "Blocks Free" value ALT F2
Edit BAM ALT B
Toggle filename display case ALT & SHIFT
ASCII chart ALT F12

This editor looks similar to the standard panel display, but displays all the extra directory entry details.

Simply copy, paste, edit and insert anything anywhere you want, and when you're done, you can save your results. This editor uses the global program clipboard, so once you copy a group of entries (F11), you can paste them multiple times (F12). This is especially useful when creating a group of custom separators, and you need to copy/paste them to multiple disks.

The keys are defined very much the same as for panel operations. Column #2 (FileType) only uses the letters S,P,U,R,D,! for Filetypes, L (or "<") for locked/unlocking and C or ("*") for closed/unclosed. You can also enter ALT-keypad values.




File Menu (15/1)

    File         
+-------------+
| Save F4 |
| ----------- |
| eXit F10 |
+-------------+

Save - Save the changes made for the new directory layout

Exit - Exit the Disk Directory Customizer




Edit Menu (15/2)

    Edit                          
+------------------------------+
| Move entries F3 |
| Swap entries F5 |
| Duplicate entries F6 |
| delete entries F8 |
| ---------------------------- |
| seT rows... F2 |
| Insert separator F7 |
| Paste sep group |
| sepArator editor Alt-F7 |
| ---------------------------- |
| cOpy to clipboard F11 |
| Paste from clipbrd F12 |
| Clear clipboard Alt-Z |
| ---------------------------- |
| Undo Alt-U |
+------------------------------+

Move Entries - This will move selected entries to the present cursor location. The clipboard is not affected by this operation.

Swap Entries - This will swap the two selected entries around. The clipboard is not affected by this operation.

Duplicate Entries - This will duplicate the selected entries to the present cursor location. The clipboard is not affected by this operation.

Delete Entries - This will permanently delete the selected entries.

Set Rows - This will present a list of options that apply to the row, depending on what column is active. A 'Filename' column will have different options than the 'Type' column.

Insert Separator - A list of separator types is presented, and you can choose which type to insert at the present cursor location.

Paste Sep Group - If there is a 'sep group' defined (see next command), they will be inserted at the present cursor location.

Separator Editor - This is where you define a 'sep group', a set of customizable separators which can be inserted anywhere, over many disks.

Copy To Clipboard - Unlike the previous 'Move Entries', this function copies the selected entries to the clipboard so they can be pasted multiple times.

Paste From Clipboard - Inserts (pastes) the contents of the clipboard into the list as the present cursor location.

Clear Clipboard - Clears the contents of the clipboard.

Undo - Undo changes made from the last edit only. You can only go back one level of edits.




Tagging Menu (15/3)

    Tagging                         
+--------------------------------+
| tAg single file Insert |
| sElect files Kpd + |
| deseLect files Kpd - |
| ------------------------------ |
| Select all Alt-Kpd + |
| Deselect all Alt-Kpd - |
| Toggle selections Kpd * |
+--------------------------------+

Tag Single File - Selects the name under the present cursor location

Select Files - Brings up a dialog box from where you can specify the filename pattern to tag. Matching filenames will be tagged.

Deselect Files - Brings up a dialog box from where you can specify the filename pattern to untag. Matching filenames will be untagged.

Select All - Selects all filenames

Deselect All - Untags all filenames

Toggle Selections - Toggles (flips) the tagging for all filenames. Those that are tagged become untagged and vice versa.




BAM Menu (15/4)

    BAM                           
+------------------------------+
| Set blocks free Alt-F1 |
| Toggle soft-write Alt-F2 |
| ---------------------------- |
| set BAM Message F9 |
| BAM message Editor Alt-F3 |
| ---------------------------- |
| BAM edit Alt-B |
+------------------------------+

Set Blocks Free - Allows the changing of the 'blocks free' count seen at the end of a directory. This number does not affect the actual BAM allocation bits.

Toggle Soft-Write - Toggles (flips) a byte in the directory which on a real 15xx drive would prevent the directory from being modified.

Set BAM message - Inserts a customized text message into the BAM sector.

BAM message editor - Allows selection of different messages from a customizable list.

BAM Edit - Brings up the BAM editor window. This function has it's own help topics.




Misc Menu (15/5)

    Misc                    
+------------------------+
| ASCII chart Alt-F12 |
| Toggle display |
| ---------------------- |
| Help F1 |
+------------------------+

ASCII Chart - Brings up a selection box where you can select characters from the IBM ASCII chart. This allows selection of some hard-to-get characters (like 16, 3) which cause problems.

Toggle Display - Toggles (flips) the case of the display character set (upper case to lower case).

Help - Brings up help on a topic




Exit & Save Changes (15/6)
ESC, F10

+---------- Save Changes ----------+
| |
| Save the changes made? |
| |
+----------------------------------+
| [ Yes ] [ No ] [ Cancel ] |
+----------------------------------+

If any changes were made to the directory, and you want to save them, click YES. If you don't want to save any changes made, click NO. Clicking on CANCEL will not exit the editor at this time.




Entry Functions (15/7)

This topic covers most of the functions related to working on groups of tagged directory entries.

F5 - Swap Two Entries

This function swaps two tagged entries. Find the two entries, tag them and press F5 to swap them.



F3 - Move Tagged Entries

This function moves a group of tagged entries to where the hilite bar is positioned. Select the entries you want to move, position the hilite bar where you want them to go and press F3 to move them. You will see an information box come and go very quickly saying that the entries were moved.

+-------- Info --------+
| |
| Entries moved. |
| |
+----------------------+



F6 - Duplicate Tagged Entries

This function duplicates a group of tagged entries. Select the entries you want to duplicate, position the hilite bar to where you want them duplicated and press F6. You will see an information box come and go very quickly saying that the entries were duplicated.

+--------- Info ---------+
| |
| Entries duplicated. |
| |
+------------------------+




Set Rows (15/8)
F2

This function allows you to change rows of data at one time. Select the row(s) you want to monify, and then click in the proper column (filename, filetyp, size, etc). Press F2 to bring up one of the following entry boxes:

This is the filename entry box:

+------------- Set Filename -------------+
| 5 rows selected. Enter filename: |
| (check the case of the name!) |
| |
|----------------------------------------|
| [ Ok ] [ Cancel ] |
+----------------------------------------+

Enter the text for the new filename.



This is the filetype entry box:

+------ Set Filetype ------+
| |
| 1 row selected. |
| Choose new file type |
| |
| (*) Del |
| ( ) Seq |
| ( ) Prg |
| ( ) Usr |
| ( ) Rel |
| ( ) !!! |
| |
| [ ] Locked |
| [x] Closed |
+--------------------------+
| [ Ok ] [ Cancel ] |
+--------------------------+

Select the filetype and the attributes to set.



This is the generic value entry box:

+------------- Set Values -------------+
| 3 rows selected. Enter value: |
| 0 |
|--------------------------------------|
| [ Ok ] [ Cancel ] |
+--------------------------------------+

Enter the correct value for the column. Some columns allow for larger numbers.




Insert Separator (15/9)
F7

This is the window you get when trying to insert a directory separator. Select the type of separator you want, or if you want a custom one select the bottom entry to type in your own.

+--------- Insert Separator ---------+
| Select separator type... |
| |
| "----------------" (dashed line) |
| "****************" (filled line) |
| "================" (equals line) |
| "----------------" (solid line) |
| "----------------" (wavy line) |
| "+--------------+" (top of box) |
| "| |" (mid of box) |
| "+--------------+" (box split) |
| "+--------------+" (bot of box) |
| undefined (custom entry) |
+------------------------------------+
| [ Ok ] [ User ] [ Cancel ] |
+------------------------------------+



If you selected to enter your own (custom entry), enter the text and/or graphics you want for your separator.

+------ Edit Custom Separator -------+
| Enter custom separator string... |
| |
|------------------------------------|
| [ Ok ] [ Cancel ] |
+------------------------------------+




ASCII Typing (15/10)

Depending on where the cursor is positioned, when you type in ASCII characters different things will happen.


# | Filename |FileTyp| Size |Track|Sectr|RelTr|RelSe|RecLen
1 |"MUSIC SELECTOR" | PRG | 182 | 17 | 0 | 0 | 0 | 0
2 |"1001 LETTER -V-"| PRG | 114 | 19 | 0 | 0 | 0 | 0
3 |"NEW MAIL/DD" | PRG | 30 | 25 | 0 | 0 | 0 | 0
4 |"JACK THE NIPPER"| PRG | 192 | 26 | 6 | 0 | 0 | 0
5 |"TURNER II" | PRG | 43 | 7 | 0 | 0 | 0 | 0
6 |"SCREEN 0" | SEQ | 7 | 5 | 0 | 0 | 0 | 0
7 |"SCREEN 1" | SEQ | 12 | 5 | 1 | 0 | 0 | 0

Typing non-numeric characters into the Size, Track, Sectr, etc fields won't work as they are strictly numeric-only fields.

The FileTyp field only recognizes the first letter of the legal filetypes (S for Seq, P for Prg, etc) along with the '<' (read-only) and '*' (Splat file) characters.

Almost anything is allowed when typing in the Filename field. Here you can delete (with the Backspace or Delete keys), or overwrite the existing entry just by typing over the existing name.

Type a backspace in a numeric-only column simply sets that column to zero.




Separator Control Center (15/11)
Alt-F7

This is the main window for the Separator Control Center. From here you select the separator group you want to edit, create (get) or paste (put) into the directory listing.

+-------------- SEPARATOR Control Center --------------+
| Name of saved SEPARATOR group |
| 1-SEPARATOR group 1 |
| 2-SEPARATOR group 2 |
| 3-SEPARATOR group 3 |
| 4-SEPARATOR group 4 |
| 5-SEPARATOR group 5 |
+------------------------------------------------------+
| [ Edit ] [ Get ] [ Put ] [ Ok ] [ Cancel ] |
+------------------------------------------------------+



If you choose to Edit a group, this is the window you get. Select the string you want to edit and click Edit.

+---------- Edit Group 1 ----------+
| SEP String 1- |
| SEP String 2- |
| SEP String 3- |
| SEP String 4- |
| SEP String 5- |
| SEP String 6- |
| SEP String 7- |
| SEP String 8- |
| SEP String 9- |
| SEP String 10- |
+----------------------------------+
| [ Edit ] [ Ok ] [ Cancel ] |
+----------------------------------+



If you select a string to edit, this is the editing window you get. It's self explanatory.

+------- Edit Separator String --------+
| Enter contents for string #1... |
| |
|--------------------------------------|
| [ Ok ] [ Cancel ] |
+--------------------------------------+



Selecting Put from the main window gives you this confirmation dialog. Be sure that the hilite bar is positioned correctly in the directory listing before saying OK or the pasted separators will go in the wrong place.

+---------- Paste Group -----------+
| |
| Insert the contents of group 1 |
| into the directory listing? |
| |
+----------------------------------+
| [ Yes ] [ No ] |
+----------------------------------+



Selecting Get from the main window gives you this dialog box, provided you have tagged the entries in the directory listing before coming here.

+----------- Store Tagged Group -----------+
| |
| Store the tagged entries into group #1, |
| and overwrite what is already there? |
| |
|------------------------------------------|
| [ Yes ] [ No ] |
+------------------------------------------+

This is the error window you get if you didn't have any directory entries tagged when you tried to Get them.

+------------------- Attention! -------------------+
| |
| There are no tagged entries in panel display. |
| You must have at least one entry tagged. |
| |
|--------------------------------------------------|
| [ Ok ] |
+--------------------------------------------------+




Clipboard Functions (15/12)
F11, F12, Ctrl-Z

This topic embodies all the Clipboard functions.

This message flashes by when you copy (F11) directory entries to the clipboard.

+------------- Info -------------+
| |
| Entries copied to clipboard. |
| |
+--------------------------------+



This message flashes by when you copy the contents of the clipboard to the directory listing.

+-------------- Info --------------+
| |
| Entries pasted from clipboard. |
| |
+----------------------------------+



Should you want to clear the clipboard of all contents, this is the dialog that comes up. Click Yes to clear, and no to cancel.

+---------- Clear Clipboard -----------+
| |
| Do you want to clear the clipboard? |
| |
+--------------------------------------+
| [ Yes ] [ No ] |
+--------------------------------------+




Undo (15/13)
Alt-U

The Undo feature is very limited, only capable of going back one operation. This means one keypress, one clipboard paste, one separator paste, etc.

If you wish to undo, press ALT-U and this is the dialog that comes up. Press Yes to revert back one step.

+--------- Undo Changes ---------+
| |
| UNDO from latest changes made? |
| |
+--------------------------------+
| [ Yes ] [ No ] |
+--------------------------------+



If there's no changes to revert from, this is the error window you see.

+------------------ Attention! ------------------+
| |
| No changes have yet been made to UNDO from! |
| |
|------------------------------------------------|
| [ Ok ] |
+------------------------------------------------+




Tag Single File (15/14)
INS

Pressing the Insert key will either tag a single directory listing entry, or untag it if it is already tagged. Simply move the hilite bar around and tag the entries you want to operate on.




Select Files (15/15)
Keypad +

This function allows you to select specific filenames in the directory listing based on a wildcard that you specify. ? and * are the allowed wildcard characters.

+----- Select Files -----+
| Enter search pattern |
| * |
|------------------------|
| [ Ok ] [ Cancel ] |
+------------------------+

So, to find all filenames starting with "s", the wildcard would be s*.*




Deselect Files (15/16)
Keypad -

Like the function Select Files, this will deselect files based on a wildcard you enter. * and ? are the allowed wildcards.

+---- Deselect Files ----+
| Enter search pattern |
| * |
|------------------------|
| [ Ok ] [ Cancel ] |
+------------------------+

To deselect all files with b as the second character, the wildcard entry would be ?a*.*




Select All (15/17)
Ctrl-Keypad +

This is a shortcut to select all tagged files in the directory listing. It is a quicker way than doing a Select All and specifying *.* for the wildcard mask.




Deselect All (15/18)
Ctrl-Keypad -

This is a shortcut to deselect all tagged files in the directory listing. It is much faster than doing a Deselect Files and specifying *.* as the wildcard mask.




Toggle Selections (15/19)
Keypad *

This is a shortcut to toggle the tagged flag on the entire directory listing. Any untagged files will now be tagged, and vice versa.




Set Blocks Free (15/20)
Alt-F1

From here you can change the Blocks Free count that you see at the end of a directory listing. On a Commodore disk, this count is entirely cosmetic.

+--------- Set Blocks Free ----------+
| Enter new value (0-8670) |
| 34 |
|------------------------------------|
| [ Ok ] [ Reset ] [ Cancel ] |
+------------------------------------+

Clicking Reset sets the count to its proper value based on the sector allocation table of the disk.




Toggle Soft Write Flag (15/21)
Alt-F2

From here you can change the soft-write protection for the image file.

+---- Soft Write-protection -----+
| |
| Soft write-protection is off. |
| Do you want to turn it on? |
| |
+--------------------------------+
| [ Yes ] [ No ] |
+--------------------------------+

Byte position 2 of the BAM sector on a disk determines the soft-write status. Depending on its contents, it can prevent writing to a disk.




BAM Message Control Center (15/22)
F9

Messages are stored at the end of the BAM sector of a disk. On a standard 1541 image (D64) the last 80 bytes of the BAM sector are unused and can be utilized for storing messages. This function allows you to store up to five messages, either taken from other disk images or ones you enter yourself.

This is the main window of the control center:

+-------------------- Message Control Center --------------------+
| Stored message |
| 1- |
| 2- |
| 3- |
| 4- |
| 5- |
| |
+----------------------Current BAM Message-----------------------+
| B0: D4 48 49 53 20 49 53 20 C2 C1 CD 20 4D 45 53 53 |HISúISú| |
| C0: 41 47 45 20 23 32 20 44 55 44 45 53 21 00 00 00 AGEú#2úDUD |
| D0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 úúúúúúúúúú |
| E0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 úúúúúúúúúú |
| F0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 úúúúúúúúúú |
+----------------------------------------------------------------+
| [ Get ] [ Set ] [ Edit ] [ Ok ] [ Cancel ] |
+----------------------------------------------------------------+



Selecting Get brings up this window. This command retrieves the message from the current image into the slot that the hilite bar is on.

+------------ Get Message -------------+
| |
| Retrieve the current image message |
| into message slot #2? |
| |
+--------------------------------------+
| [ Yes ] [ No ] |
+--------------------------------------+



Selecting Set brings up this window. If you don't want to set the BAM message from the one selected, you can select New and enter a custom message.

+---------------- Set BAM Message -----------------+
| |
| Use the message in slot #3 for the BAM message |
| or enter a new custom one now? |
| |
+--------------------------------------------------+
| [ Yes ] [ New ] [ Cancel ] |
+--------------------------------------------------+



This is the window you get when you choose to enter a new message...

+--------------------- Enter Custom Message ---------------------+
| Enter custom message (up to 80 characters)... |
| |
|----------------------------------------------------------------|
| [ Ok ] [ Cancel ] |
+----------------------------------------------------------------+



Selecting Edit brings up this window. If there's a message in the slot selected it will appear in the edit area of the window. Change/enter the message you want here.

+------------------------- Edit Message -------------------------+
| Enter new message (up to 80 characters) for slot #4... |
| |
|----------------------------------------------------------------|
| [ Ok ] [ Cancel ] |
+----------------------------------------------------------------+




BAM Editor Shortcut (15/23)
Alt-B

This shortcut brings up the Disk BAM Editor window, but it doesn't exit the Directory Customizer. Once you are done editing the BAM, you will be brought back to where you left off.




ASCII Chart (15/24)
Alt-F12

This command shows the IBM ASCII chart over two pages. From here you can select hard-to-input characters to insert into the file being edited. Characters like ASCII 16 are particularly difficult to enter manually as the BIOS intercepts it and turns the printer re-direction on and off, causing strange problems.

+\\------------------ ASCII Chart -----------------\\+
| 16 32 48 0 64 @ 80 P 96 ` |
| 17 < 33 ! 49 1 65 A 81 Q 97 a |
| 18  34 " 50 2 66 B 82 R 98 b |
| 19 35 # 51 3 67 C 83 S 99 c |
| 20 ô 36 $ 52 4 68 D 84 T 100 d |
| 21 õ 37 % 53 5 69 E 85 U 101 e |
| 22  38 & 54 6 70 F 86 V 102 f |
| 23  39 ' 55 7 71 G 87 W 103 g |
| 24  40 ( 56 8 72 H 88 X 104 h |
| 25  41 ) 57 9 73 I 89 Y 105 i |
| 26 > 42 * 58 : 74 J 90 Z 106 j |
| 27 < 43 + 59 ; 75 K 91 [ 107 k |
| 28  44 , 60 < 76 L 92 \ 108 l |
| 29  45 - 61 = 77 M 93 ] 109 m |
| 30 * 46 . 62 > 78 N 94 ^ 110 n |
| 31 * 47 / 63 ? 79 O 95 _ 111 o |
+\\------------------------------------------------\\+
| [ Ok ] [ 000-127 ] [ 128-255 ] [ Cancel ] |
+\\------------------------------------------------\\+




Toggle Display Case (15/25)
Alt-Shift

Pressing the ALT key followed by SHIFT toggles the case of the filenames. This is handy if some of the names are being shown with strange graphics characters because then you can look at them in lower case.




Delete Entries (15/26)
F8

This function deletes either the single entry under the hilite bar or an entire group of tagged entries all at once. Position the hilite bar over the entry you want to delete, or hilite all the entries you want to delete and press F8 to delete them. You will receive a dialog box asking you to confirm the entry deletion. Pressing No will cancel the delete.

+---------------- Delete Entries ----------------+
| |
| Are you sure you want to delete 5 entries? |
| |
+------------------------------------------------+
| [ Yes ] [ No ] |
+------------------------------------------------+



If no entries are tagged, then this function will assume you are only deleting the entry under the hilite bar. Then the dialog will change to the following:

+---------------- Delete Entries ----------------+
| |
| Are you sure you want to delete entry #9? |
| |
+------------------------------------------------+
| [ Yes ] [ No ] |
+------------------------------------------------+

Press No to cancel the Delete.



Back to index

Disassembler (16/0)
Shift-F4

This is a very powerful 6510 disassembler. If you are at all familiar with assembly code, or the output of a machine language monitor, the output from this disassembler will look familiar as well.

It allows for labels, tables, custom code & comments, separator lines, linked addresses and several different destination label options with partial references (upper/lower bytes of a two-byte address).

To load an existing project (OVV) file, start the disassembler with the OVV file hilighted. Failure to do this will result in a new project file being created.

To start a new disassembly project, hilite the source files you want to disassemble and press Alt-F4. It might be prudent to make a new directory exclusively for the disassembly project and put the source files in there. The disassembler generates other support files related to the project and it would be good to keep them all together.




Labels & Concepts (16/1)
F5, F6

Using custom labels is the most powerful and basic feature of the disassembler. The central database is designed to hold many thousands of entries, and labels can be 8 characters long.

When a default label name is generated, the OPCODE is inpected, and depending on what type it is the label designation will change according to this chart (where XXXX is the address reference):

Opcode     Normal Name   Compact Name
--------- ----------- ------------
JSR sub_XXXX s_XXXX
JMP gotoXXXX g_XXXX
branch+ skipXXXX f_XXXX
branch- loopXXXX b_XXXX
zeropage zp_XX z_XX
ROM ref var_XXXX v_XXXX
tables tablXXXX t_XXXX
all other lbl_XXXX l_XXXX

Labels are always lower case. Any name entered in either mixed or upper case will be converted down. The name type (compact or normal) is determined in the Configuration window. The compact name is better as it takes less room in the name array, leaving room for more labels.

There are two concepts that must be understood before label manipulation becomes easy. The first concept is the difference between source and destination labels. Source labels refer to those that are displayed before the opcode column. Destination labels refer to those that appear after the opcode column, applying to a branch, load (LDx), store (STx) and other address-related operands.

The second concept is the difference between master and slave labels. A master label is one which is not linked to another, but others can be linked to it. A slave label is one which is source linked to another, making it subserviant, and also invisible in the disassembly. Any reference to it in the displayed assembly code will be replaced with the label it is linked to, plus the difference between the two address values (i.e. lda label+1).

The most important thing to know about master and slave labels is that links only work one way, i.e. if a link is created, the slave knows it is linked but the address it is linked to does not.

Any label can be linked to another label within the same region, provided the label being linked to is a lower address value. You can create entire chains of links, as long as needed. A master link can be changed into a slave at any time and these links can also be broken.

For more information on how to link labels together, see the subtopic called Linked Labels under the Disassembler topic.

The example below shows a slave label (SLAVE) which is linked between $0818 (slave address) and $0817 (master address). Any code reference to $0818 will be replaced with $0817+1.

+--- Add/Modify Source Label ----+
| Enter label info... |
| Name: tabl0818 (0% used) |
| Addr:$0818 Region#:1 |
| [ Find name ] |
| SLAVE: 0 src, 0 dest links |
+-Link to another label----------+
| [x] Link above address to |
| Name: tabl0817 |
| Addr:$0817 |
+--------------------------------+
| [ Ok ] [ Cancel ] |
+--------------------------------+

The example below shows a master label (MASTER) assignment. It knows how many links it has (both source & destination), but can't know or display where they all are.

+--- Add/Modify Source Label ----+
| Enter label info... |
| Name: lbl_0827 (0% used) |
| Addr:$0827 Region#:1 |
| [ Find name ] |
| MASTER: 0 src, 2 dest links |
+-Link to another label----------+
| [ ] Link above address to |
| Name: |
| Addr:$ |
+--------------------------------+
| [ Ok ] [ Cancel ] |
+--------------------------------+

Name - The name given to the label.

Addr - Address of the label

Region - The region number of the label

(%x used) - This shows the how much of the name text array is being used, the higher the number the more the array is used.

[ Find Name] - This button will search for an existing label by name, and recall the contents for display or editing.

MASTER or SLAVE - This is an information line showing the status of the label. A MASTER address is a label which has other labels linked to it (second example). A SLAVE address is one which is linked to another (first example). The link count (src & dest) specifies how many labels the address is connected to.

Link to another label - This area shows the name & address of the label that the top address is linked to. The first example shows a linked label between $0818 and $0817.




Destination: Choose Correct Region (16/2)

This dialog will only come up when there is more than one region containing the destination address and there's no way for the program to select the correct one. Typically this happens when linking a destination address to a label.

This window will only show the first 9 matches, any others will simply not be shown. If there is a match in the current region, the first entry will point to that region#.

+------------ Regions Containing Destination Address ------------+
|Choose the region that the destination address ($0924) refers to|
|#|Source filename |Reg|Ofset|AdresRange|LablName|Region Comments|
|1-mazemen1.src | 1|$0002|$0801-0D86|lbl_0924|Region 1 |
|2-mazemen1.src | 2|$0588|$0801-0A1B|lbl2 |Region 2 |
+----------------------------------------------------------------+
| [ Ok ] [ Cancel ] |
+----------------------------------------------------------------+

Simply choose the correct region that the destination address points to either by number (1-9), cursoring over the entry or selecting with the mouse and selecting OK.




Deleting Source Labels (16/3)
Alt-F5

+-------- Remove Source Label ---------+
| |
| Label "start" selected. |
| |
| Remove the label at this position? |
| |
+--------------------------------------+
| [ Yes ] [ No ] |
+--------------------------------------+

This is the dialog box which comes up when removing a label with no other links, partial labels or tables assigned. If there are destination links in the code to this address, they will revert back to displaying the real address rather than the label.



+-------------- Remove Source Label ---------------+
| |
| Label "basic" selected. |
| |
| There is a table defined at this position. |
| The table will be also be removed. |
| |
+--------------------------------------------------+
| [ Yes ] [ No ] |
+--------------------------------------------------+

This is the dialog box which comes up when removing a label that has a table assigned as well. If you remove a table before removing the label, the label would still exist. This is by design. However, removing the label when a table still exists at that address will remove both entries.



+--------- Remove Source Label Links ----------+
| |
| Other source links and/or destination |
| links (1) are linked to this label. |
| Removing this label will remove these links. |
| |
| Remove the label anyways? |
+----------------------------------------------+
| [ Yes ] [ No ] |
+----------------------------------------------+

This is the dialog box which comes up when removing a label which has links to it, either a source link or a destination link. Source links are source labels which are linked to another previous address (i.e. indirect addressing mode, LDA ($F7),Y) and are never seen in the disassembly, but show up on the Database Editor.



If removing the label, as well as the source and destination links, results in any database entries being deleted, this informational window will pop up for a short time informing you of the total number of entries that were deleted.

+------------ Info ------------+
| |
| Removed 9 database entries. |
| |
+------------------------------+




Add/Edit Tables (16/4)
F7

This function allows the editing of exiting tables (Edit Table) or the addition of new tables (Add New Table). A table is any run of sequential bytes (one or more) which is not code and should be displayed as data. Functionally, there is no difference between editing and adding tables.

+------- Add New Table --------+
| Enter table info... |
| Label: sub_0fa2 (2% used) |
| Start:$0FA2 Region#:1 |
| End:$0FD3 or size: |
| Width: 10 (bytes/line) |
+------------------------------+
| Common Tables Display Base |
| ( ) .byte ( ) Hex |
| ( ) .text ( ) Dec+ |
| ( ) .word (*) Binary |
| Extra Tables ( ) Octal |
| ( ) .dbyte ( ) Dec+/- |
| ( ) .null Custom Tables |
| ( ) .shift (*) Font |
| ( ) .rta ( ) Sprite |
+------------------------------+
| [ Ok ] [ Cancel ] |
+------------------------------+

Tables are very flexible, and allow for many table types and display bases. You can enter the starting address and the size (in bytes), or the starting and ending addresses. Type in a label name if you don't like the one that is generated for you. Tables can also be defined within other tables, overlapping their ranges.

When tables are used within certain conditions, you can set the resulting destination value to a destination link, either label or table. In order to do this, a table must be a .dbyte, .word, or .rta, and be only 2 bytes long resulting in a single 2-byte address displayed as the destination. Then you can set a Destination link to either a label or variable and the address reference will change to the label/variable name.

The first set of tables is called Common Tables, because they are common to most assemblers. The .byte and .word tables can be set to display in different bases. The .asc table always displays in text and is not affected by any base change.

The second set of tables is called Extra Tables because only the more contemporary assemblers support them. The PAL Assembler only supports the Common Tables, but other assemblers might support all of them. The .dbyte and .rta tables can be set to display in different bases, but the .null and .shift tables are like .asc and always display in text.

The third set of tables is called Custom Tables because they are actually macros and override whatever values are in the table type, base and width areas with their own defaults. FONT is stored as type BYTE in base BINARY, must be a minimum of 8 bytes in size, and the table is one byte wide. SPRITE is stored as type BYTE in base BINARY, must be a minimum of 64 bytes in size, and the table is three bytes wide.

Failure to enter an END or SIZE will result in a table that is the minimum byte size for that table type. BYTE has a minimum of 1 byte and WORD/DWORD is a minimum of 2. ASC/TEXT and NULL have no defined minimum and therefore some ending or size value must be entered.

There are some very basic rules to setting tables that you should know.

* .asc (or .text) is displayed as text (simulated PETASCII), and use no base.

* .null is similar to .asc/.text except that the string ends in a 00 terminator, and the terminator is not shown on screen

* .shift is similar to .null except that the last byte is stored with the high bit on. The high bit is stripped off when displaying the text on screen.

* .rta is used to store stack return addresses, and is very similar to .word. The address shown is always +1 of the actual code destination address. When assembling, the +1 will be removed by the assembler.

* Entering a SIZE value overrides the END value.

* Entering a WIDTH which is too high or low for the table type will cause the value to be defaulted.




Deleting tables (16/5)
Alt-F7

+--------- Remove Source Table ----------+
| |
| Remove the ".byte" table entry that |
| exists from address $0845 to $0923? |
| |
+----------------------------------------+
| [ Yes ] [ No ] |
+----------------------------------------+

This will remove the specified table entry (in this case one defined at $0845). The label defined at the specified address will not be removed as a label definition is separate from a table definition. Any reference to the label will still exist, just the disassembly display will lose the table display.




Custom Code & Comments (16/6)
F11

From here you can add/edit up to 6 lines of custom code & comments. You can also insert a SKIP line at the address where the cursor bar is on. The code/comments are shown before the opcode where they are defined and the SKIP line is displayed after the opcode where it is defined.

The extra code & comments are displayed in a different color from the rest of the code to make it more visible that they are user additions. Comments must be preceeded with a ; character or it will be interpreted as custom code. Any entry lines left blank between two used lines will be set as empty comments, with just a ;.

+----------------- Custom Code & Comment Editor -----------------+
| Remember, if you want to set comments, make sure to preceed... |
| with a ; or it will be shown and compiled as an assembler... |
+-Add/edit custom code/comments at $0FA2, region 1:--------------+
| Line1:;Custom interrupt routine |
| Line2: |
| Line3: |
| Line4: |
| Line5: |
| Line6: |
+-Insert Skip Line-----------------------------------------------+
| [ ] Insert skip (separator) line after | Percent used: 0 |
+----------------------------------------------------------------+
| [ Del code/cmnt ] [ Ok ] [ Cancel ] |
+----------------------------------------------------------------+

One powerful use of this function is to insert custom pseudo-ops that might be useful. Things like .logical and .here directives instead of using the .offs capability built into the Project Manager regions window. Another use is to insert extra code for bug-fixing, and be able to comment around it.

The [ Del code/cmnt ] button is useful if you want to remove custom code or comments quickly, without having to remove all the text in each entry field and clicking ok.

Separator lines are blank lines that can be inserted following an opcode. Simply click the [ ] Insert skip (separator) line box to add one. You can add a separator line where there is already one automatically assigned (see below), but the extra line will not be shown. By default, a separator line will exist after the following things:

* Before and after *= statements

* At the end of a table

* Where the code ends and a table starts

* After each entry in a FONT or SPRITE table

When you switch to a new file, the code/comments for the active file are unloaded from memory to an exteral file (with the extension .CMT), and then the code/comments are loaded for the new file.




Project Manager: Overview (16/7)
F2

One of the more useful features in any disassembler is the ability to manage the files contained in a project, as well as specify different starting addresses and options throughout the disassembled code. Most programs contain relocatable code, where the actual starting address is not the same as is shown in the disassembly window. Downloadable drive code is a good example. Projects that contain more than one source file will have a separate set of regions for each file.

 Key Assignments 
A - add (files or regions)
E - edit (files or regions)
D - delete (files or regions)

These keys apply to the region panel only:

    F2 or R - add region                 
F3 - edit region settings
F4 - delete region entry
Alt-F2 or S - Toggle region split flag
Alt-F3 or H - Toggle hidden region flag
Alt-F4 or I - Toggle illegal opcodes flag

These keys apply to the file panel only

                 F5 or F - add new file           
F6 - edit file settings
F7 or C - Switch to file selected
F8 - delete file entry
F11 or ALT-UPARROW - move file up list
F12 or ALT-DOWNARROW - move file down list
Alt-I - Show memory & database usage
Alt-F11 - Disassembler Configuration
F10 - exit Disassembler



File Panel

The Project Manager is split into two panels, the Files panel and the Regions panel. We will look at the Files panel first.

+-- Files In Project --+
|Num Filename Size|
| 2|mazemen1.src| 1955|
| 1|mazemen2.src| 1503|
| | | |
| | | |
| | | |

This panel shows the files in the current project. A project can hold up to a maximum of 100 files. Each file is assigned a file number (Num) which is not changeable. The size is also recorded so that you can tell what files have been added if the source names are similar.

If you don't like the order of the file list, you can always re-arrange it by selecting the names to move and using F11 or F12 (or Alt  or ) to move them up or down.

As files are added, an internal calculation is done to see what the memory and database requirements might be to support all the files in the project. Once the projected usage exceeds internal limits, a message is displayed warning you of possible memory shortages.

There are two limitations on source files: they cannot exceed 65530 bytes long, and due to memory restrictions filenames must not exceed 20 characters.

Internally, when files are added to the project, a CRC of the source file is taken and stored. This way the source file can be checked for integrity and if something changes you will be informed.



Regions Panel

Now we look at the Regions panel. A maximum of 250 regions is allowed for a project.

+------------- Regions For Selected File --------------+
|Fil|Reg|Ofset|AdresRange|Type| OFFS|H|I|S|Split Name |
| 2| 2|$0000|$0000-0001| C64|$0000|Y| | | |
| 2| 3|$0002|$0801-0FA1| C64|$0000| | | |z1.asm |
| | | | | | | | | | |
| | | | | | | | | | |
| | | | | | | | | | |
| | | | | | | | | | |
| | | | | | | | | | |
| | | | | | | | | | |

Since each source file has a number assigned, each region is also tagged with the same file number. It might be redundant to show the file number here, but it has proved useful for debugging purposes.

Each region has a number assigned (Reg), which is not changeable. Each region entry also has a starting offset (Ofset) which is the number of bytes into the source file for this region, and an assigned starting address (AdresRange) which is where the actual code resides in memory, and gets expanded out to an address range. Note that all regions must have an offset $0000 entry. There is also a region type (Type) which tells the disassembler what type of device the code is meant for (C64 or drive code) and also determines what pre-defined ROM addresses to offer.

The field OFFS is a little more complicated, but it allows you to specify an offset to add to the starting address to position the code in this region at a new address. It's not very useful for disassembly, but very useful at re-assembly time as it allows code destined for a disk drive to be in-line assembled with the rest of the code, but still assemble at the correct address for the drive.

There are also three flag columns that apply at the region boundary for the entire region. The first flag column H hides the region from being displayed or disassembled. Typically if the first two bytes of a file are being used for the load address then the first region will be two bytes long and be hidden as you don't want to see the load address bytes in the disassembly. Any other code segments set to hidden will never be visible or disassembled to source assembly code so use this option carefully.

The second flag column I toggles the display of illegal (or undefined) opcodes on/off. This can be useful when trying to disassemble some special code that utilizes the undefined opcodes for copy protection.

The third flag column S toggles the SPLIT of the source code at the defined region boundary. When enabling a split, you will be asked, but not required, to enter filename for the output disassembly at this point. Filenames can be up to 20 characters long. If no filename is entered, it is set to auto-assign and one will be generated automatically when the file is disassembled.




Auto-labelling (16/8)
Alt-F3

This function allows the Disassembler to automatically label any unlabelled addresses it finds within the entire project. It can be very dangerous if used without some setup first. The most important thing to do before using this function is to get all the data tables set up first. Any data which is not yet in a table could generate a false opcode with a destination address which would require a label, making the output very messy and making the real data tables harder to find.

The auto-labeller will link labels and variables together under three conditions:

1. ROM variables: addresses that exist in the pre-defined ROM list. When an address occurs that is in the ROM list (i.e. $FFD2), a variable will be created for it. A check is then made for a variable defined at $FFD3, and if it doesn't exist one will be created. The variable at $FFD3 will now be linked with $FFD2. This would also occur for pointer addresses like those as $FFFE, FFFC, etc, as long as they are in the internal ROM list.

2. Indirect mode opcodes: any opcode in the form of ($xxxx). If the address is within the program address space, then labels will be created, otherwise variables. First, a label or variable is created, if necessary, for the first address (i.e. $FD, zero page). Then another label or variable is made, if necessary, for the next address ($FE). Then the upper address ($FE) is linked to the lower address $FD.

3. Indexed opcodes that exist within program space: those like LDA $0818,X, where the $0818 is withing program space. Similar to both link types above, first a label is made at $0818. However, no label is made for $0819. Instead, if one already exists, it will be linked to $0818. The side effect of this is that the addresses must occur in a specific order, and be seen several times, in order for a link to be made. If the addresses are not seen in the proper order (higher address first), and are only seen ones, no link will be made.



+---------------- Auto-Label Project ----------------+
| |
| Are you sure you want to auto-label all remaining |
| addresses, branches, indexes, JMP's and JSR's? |
| |
| Make sure that all tables and regions have been |
| properly defined before doing this operation! |
| |
| [x] Use compact names for labels & variables |
| [x] Auto-link zero page adresses |
| [x] Auto-link ROM addresses |
| [x] Auto-link variables |
| |
+----------------------------------------------------+
| [ Yes ] [ No ] |
+----------------------------------------------------+

Use compact names - generate shorter names (6 character vs 8 character) for all labels, variables etc. This allows for more name storage in a project.

Auto-link zero page addresses - Links two zero page addresses together when they occur in indirect addressing modes like LDA ($F7),Y. This will create variables for $F7 and $F8, and link $F8 to $F7.

Auto-link ROM addresses - When a ROM variable is encountered, both addresses (ROM and ROM+1) are set as variables and the ROM+1 is linked to ROM.

Auto-link variables - This is similar to zero page linking. When an address like LDA $0200,Y is encountered, and the address at $0201 already exists, $0201 will be linked to $0200.





Once the auto-label process starts, this dialog will show the progress:

+------------- Auto-Labelling Entire Project --------------+
| Auto-labelleling file mazemen.src (1 of 1) |
| (Press ESC to cancel) |
| ********** |
| 0%-------------------------50%----------------------100% |
+----------------------------------------------------------+



If you press ESC while Autolabel is still working, you will get this window. If you want Autolabel to continue working, select No.

+------ Autolabel In Progress -------+
| |
| Auto-label is still working! |
| |
| Are you sure you want to cancel? |
| |
|------------------------------------|
| [ Yes ] [ No ] |
+------------------------------------+





Memory arrays and database usage are tracked as the Auto-label function proceeds. When the arrays or the database start getting full, a warning is issued to cancel the operation. This warning will only happen twice (at 90% and 95% usage) and so can only be safely ignored once. Failure to ignore the error and continue auto-labelling can result in a program crash or an unstable application.

+------------------ Autolabel In Progress -------------------+
| |
| The label database or the label name array are getting |
| full and Auto-Label has not completed its task. |
| Continuing is dangerous and could crash the program! |
| |
| Should Auto-label stop working now? |
| |
|------------------------------------------------------------|
| [ Yes ] [ No ] |
+------------------------------------------------------------+

If you cancel the auto-label when warned, you will be told where the auto-label stopped, by address and region number so you can go to the address and check manually.

+--------------- Autolabel Position ---------------+
| |
| Auto-label ended on address $B0EF, region 0. |
| |
+--------------------------------------------------+
| [ Ok ] |
+--------------------------------------------------+




Disassembling to file (16/9)
Alt-F2

This function starts the disassembly process to assembler source code files. Depending on where and how many split points are set in the Project Manager regions window, the number of generated files will vary. If split points are set, but with no filename specified, the output names will be auto-generated where needed.

+------------- Disassemble To Files --------------+
| Output name:sample.asm [x] Auto-overwrite|
| Destination file format: |
| (*) Text --> (*) DOS ( ) Mac ( ) Unix |
| ( ) C64 TXT -> Max size:20480 bytes |
| ( ) C64 PRG -> Max size:20480 bytes |
| +-> Line#:10 Inc:5 Load addr:$0801 |
+-Destination style options:----------------------+
| (*) No formatting |
| ( ) Indent non-labelled code lines by 2 |
| ( ) Align labels/ops in columns |
| ( ) Just like it is on screen |
+-------------------------------------------------+
| [ Ok ] [ Cancel ] |
+-------------------------------------------------+

Output name - This entry starts out auto-filled with the SPLIT filename defined for the first visible region. If no SPLIT name is defined, it will be left blank. Any user-entered filename here will override only the first SPLIT name. If no SPLIT name is defined, and nothing is entered here, one will be auto-generated and added to the region entry as the split file. This entry box makes disassembling to a single output file very simple as you can enter the output name here.

[ ] Auto-overwrite - When enabled, output files will overwrite any existing files without checking.



There are several different output options available:

Destination file format This option provides for several different output file types (text or C64).

Text - Output will be in DOS text file format. You can switch the output between DOS which uses line delimiters, MAC which uses only delimiters and Unix which only uses delimiters. This format has no output size limitations on it as the next two have. The resulting files can be as large as needed.

C64 TXT - Output will be written in C64 text format, using the PETASCII character set and with line delimiters. This format has size limits (Max size) placed in it, with files being no bigger than 63488 bytes.

C64 PRG - Output will generate C64 program files, with line numbers. These files will typically be used with the PAL assembler. You can also change the starting line number (Line#), line increment (Inc) and starting load address (Load addr). This format has size limits on it, with files being no larger than 30000 bytes.



Destination style options This option provides for four different output styles for the disassembled output. Note that these options only apply to the Text format, and not to any of the C64 types.

No formatting - Outputs in a very compact form, with nothing done to the output.

Indent non-labelled code lines by 2 - Any lines that are code and do not have a label are indented by two. This makes the labels easier to read.

Align labels/ops in columns - All labels are output on column 2 and opcodes start at column 10. This is a very neat output, but contains a lot of extra spaces.

Just like it is on screen - Outputs the code just as it seen on screen, with code address/offset/region#, table ranges, labels, opcodes, custom code/comments, etc.



Once the disassembly starts, this dialog will show you the progress, processing each file in turn:

+---------------------- Disassembly -----------------------+
| Disassembling to file mazeda6d.asm (1 of 2) |
| (Press ESC to cancel) |
| ************************************************ |
| 0%-------------------------50%----------------------100% |
+----------------------------------------------------------+



If you press ESC while Disassemble is still working, the following dialog will come up. Press NO to continue disassembling to files.

+--------- Disassemble In Progress ----------+
| |
| Disassemble to file(s) is still working! |
| |
| Are you sure you want to cancel? |
| |
|--------------------------------------------|
| [ Yes ] [ No ] |
+--------------------------------------------+



If the output file being generated already exists in the output directory, and you've not enabled the Auto-overwrite flag, you will be presented with this dialog. Press Y to overwrite and R to rename the output file. Note that you can't cancel this window until you choose an option.

+--------- Output File Already Exists! ----------+
| |
| "wrap0001.asm" |
| already exists. Overwrite the existing file? |
| |
|------------------------------------------------|
| [ Yes ] [ Rename ] |
+------------------------------------------------+

If you choose to rename the file, you get this dialog. Cancelling this window will bring you back to the previous window.

+---- Rename Output File ----+
| Enter new output file... |
| Filename:wrap0001.asm |
+----------------------------+
| [ Ok ] [ Cancel ] |
+----------------------------+



The first output assembly file will contain all defined master variables, then code will follow. Note that slave (linked) variables will not be shown as they are not referenced in the source code. In the case below, linked variables exist for each entry between $D000-$FFFF, so there is one at $D001, $D009 etc, which are then linked back to the previous address.

*= $8000 ; C64

ddirreg = $00 cpuport = $01 zp_1b = $1b zp_1c = $1c zp_fc = $fc zp_fe = $fe scrnmem = $0400 spritex0 = $d000 spritex4 = $d008 bordrclr = $d020 bckgrnd0 = $d021 freq1_lo = $d400 colormem = $d800 vicinit = $ff81 ciainit = $ff84 ramtest = $ff87 ioinit = $ff8a scankey = $ff9f getin = $ffe4 hwintirq = $fffe

sei jsr ciainit jsr ramtest jsr ioinit jsr vicinit cli jsr sub_9fab jsr sub_8063 loop801d ldx var_7800 cpx #$17 bcs skip803c lda var_7801,x beq skip8050




Database Editor (16/10)
F3

 Assigned keys 
Options pop-up menu F5
Add/edit source label L
Add/edit source table T
Add/edit new variable V
Edit destination link D
Remove entry pop-up menu Alt-F5
Add/edit custom code or comments C or F11
Toggle SKIP line S
Goto address F9
Disassembler Configuration Alt-F11
Show label/table useage Alt-I
Filter entries F2
Toggle Display F12
Welcome window Ctrl-F12
Quit Database Editor F10



This display mode shows all the database entries: local flag (L), address/region of entry (AdresRange/REG), source labels (Lablname) and tables (Tablbase), destination links (Destnlink), SKIP lines (Skp), custom code/comments (Code/Comments), and the good/bad status of the entry (Stat). All of these elements make up one complete record in the database.



Local Column

The first column L tells whether the entry is local or remote. A * in this column means that the data shown is local to the present file number being shown in the disassembler window. Variables (VAR shown in the REG column) are always local, as are the regions defined for the present file number. All others are not contained in the file being disassembled. Note that the first few entries shown are variables.

If this column shows a -, this means the region/offset numbers couldn't be found in the regions database and therefore are in error. The stored entry doesn't relate to any of the regions or files in the project.



Address Range Column

The second column AdressRange and third column Reg show where the entry is defined for. These two generate the database KEY value, and are crucial in finding the entry in the database. If a VAR is shown in the REG field, then the entry is a variable. Variables can be used to store immediate mode, zero page, word addresses and strings.

L|AdresRange|Reg
*|$E546 |var
*|$EE4A |var
*|$FE2B |var
*|$FED1 |var
|$0FA2 | 1
|$0FD4 | 1
|$0FFF | 1
|$1056 | 1

When a variables is stored, the AdresRange is actually a key value unique to that variable. If the variable is an address value, typically this value is the address. However, if the addressis already used as a key value, a random key will be generated. This makes some variables seem very strange as low addresses get mixed with other addresses since they are stored at a random key value.



Label Name, Table & Source Link Columns

The next three columns describe the source label (LablName), any defined table (TablBase), and if the source label is linked to another source label (LinkAddr). Note that the first entry is source linked to the entry called var_fb, and that the first four entries shown are variables. If the entry is a variable, then the value under TablBase is actually the value assigned to the variable.

|LablName|TablBase/Var|LinkAddr
|var_fc |$FC |var_fb
|a_d_2 |$D40C |
|var_bd |$BD |
|sid |$D400 |
|sub_0fa2| |*BROKEN
|sub_0fd4| |
|sub_0fff| |
|sub_1056| |

If a source link points to an entry that no longer exists, the field will show a BROKEN message to indicate something is wrong instead of the label name or region/address. This does not mean that the datsbase entry is bad, just that the link is invalid.

The F12 Toggle Display key changes the display of the links between names and region/address. If you're not sure what region a destination or source link points to, you can toggle the display to show it. This option is also available on the Configuration window.



Destination Link Column

The next column DestnLink describes the destination links that exist. In the following example, one shows a Dec+, which is a Base Change, showing an immediate mode value in a different base rather than HEX. The lbl_091e entry is a link to a source label somewhere else in the program.

All destination links are view-only, no editing of these is allowed. This is because destination links are dependant on knowning the addressing mode of the opcode and the destination value, and the Database Editor doesn't know either of these.

|DestnLink|
|!var_ffff|
|#zp_ff |
| Dec+ |
|*BROKEN |

Just like above with broken source links, if the destination points to an entry that no longer exists (3'rd entry), the message *BROKEN will be shown rather that the name. If the entry starts with a ! then thise will force the assembler to always choose a two-byte opcode rather than a zero page as it might do. If the entry starts with a #, then the display will show the actual link name rather than the link+diff.



Skip Line Column

The next column is the Skp which simple shows where a SKIP line has been defined. If this column shows a YES, there is a SKIP line defined at the address shown.

The second-last column is for Custom Code & Comments. If there are any code or comments defined at the address/region shown, and they are local (* in first column), the # of lines of code/comments will be shown. The first example below shows a local definition where 6 lines of code/comments are stored. The second example is where the code is no longer local, and the number of lines of code/comments is no longer known.

|Code/Comments|
|Yes (6 lines)|
|External |



Database Entry Status Column

The last column Stat shows the checksum status of the database entry. Each time an entry is read the checksum is checked and when an entry is changed the checksum is recalculated and stored with the entry. If any of them say BAD, there's trouble, and stop disassembling right away as the corruption will likely only get worse.

Sometimes the database display can get very full, to the point of not knowing what to look for. If you don't want to view all the databse entries, select the Filter function (on F2), enable the filter and choose only the types of entries what you want to see.



If any entry has a problem (BAD or BROKEN entry, or the region/offset data is faulty) the line will be hilighted to show there's a problem.




Statistics & Memory Usage (16/11)
Alt-I

This window shows the number and types of entries in the database. It's primary use is to see how much resources the present disassembly project is using. Most of the entries should be self-explanatory.

The left half of the display details Database usage and Labels & Variables statistics (above) and the right half details the Linking, Code/Comments, Project Usage and a few other details.

Left Side
+ Database --------------------+
| DB Entries used: 106 (1%) |
| Maximum allowed: 10000 |
+ Labels & Variables ----------+
| Labels defined: 38 |
| Variables defined: 8 |
| Name Array Usage |
| Name array used: 0% |
| Name array high:$018D |
| Name array alloc: 60 Kb |
| String & Direct String Usage |
| String array used: 0% |
| String array high:$0000 |
| String array alloc: 16 Kb |
+------------------------------+
Right Side
+ Linking -----------------------+
| Source links def: 0 |
| Dest links def'd: 59 |
| Force 2-byte: 0 |
+ Code/Comments -----------------+
| Code/Comments: 5 (0%) |
| Array high mark:$0011 |
| Array allocated: 32 Kb |
+ Project Usage -----------------+
| Regions defined: 4 of 250 |
| Project files: 2 of 100 |
+ Other Statistics --------------+
| Partials defined: 6 |
| Tables defined: 2 |
| Memory free: 103648 bytes |
+--------------------------------+

The various text array allocation sizes are listed in applicable areas of the window. It is the value with the Kb after it. These sizes can possibly change from one program release to another. The code/comments size is for each file in the project, all others are for the entire project.

For the most part, these numbers will not be useful to the user, but they are good for troubleshooting problems. The HEX numbers (the HIGH MARK) is the highest location used of the specified array.



All the arrays (main database, label/variable names, code/comments and variable/direct strings) are monitored to see when they reach both 90% and 95% full. Warnings, like the one below, are issued when hitting either boundary. Once 100% is hit, the program will likely be unstable or crash entirely.

+-------------------------- Attention! --------------------------+
| |
| You have now reached 90% usage for the central database array. |
| There is still room to store more but memory is getting low. |
| Proceed with caution! |
| |
|----------------------------------------------------------------|
| [ Ok ] |
+----------------------------------------------------------------+




Configuration Window (16/12)
Alt-F11

The Disassembler Configuration window allows you to change many options, especially for the disassembly output type and assembler type.

+-------------------- Disassembler Config ---------------------+
| + General Options -----------------------------------------+ |
| | [x] Show label names for source & destination links | |
| | [x] Use compact names for label/variable names | |
| | [x] Insert SKIP line after JMP, RTS & RTI opcodes | |
| | [x] Auto-save OVV every:5 mins [ ] Show SAVE dialog | |
| + Destination file format ---------------------------------+ |
| | (*) Text -> (*) DOS ( ) Mac ( ) Unix | |
| | ( ) C64 TXT -> Max size:20480 bytes | |
| | ( ) C64 PRG -> Max size:20480 bytes | |
| | +->Line#:10 Inc:5 Load addr:$0801 | |
| + Destination style options -------+ Assembler style ------+ |
| | (*) No formatting | (*) Turbo Assembler | |
| | ( ) Indent unlabelled lines by 2 | ( ) PAL Assembler | |
| | ( ) Align labels/ops in columns | | |
| | ( ) Just like it is on screen | | |
| +----------------------------------+-----------------------+ |
+--------------------------------------------------------------+
| [ Ok ] [ Cancel ] |
+--------------------------------------------------------------+

General Options

Show label name for source... Toggles the display of label links in the Database Editor between the assigned names and the region/addresses they are stored at.

Use compact names for label/variable names When enabled, names for branches, jumps, subroutines, labels, variabels, etc. are more compact than normal. Typically, a label is LBL_XXXX, whereas the compact form is L_XXXX. Using the compact form allows for more labels in the project as there is limited memory storage for names.

See the topic Labels and Concepts for the chart of compact and normal names.

Insert SKIP line after JMP... SKIP lines are automatically inserted in various points of the code, but these two spots are user controlled. If you don't want blank lines to display after a JMP, RTS or RTI opcode, disable this option.

Auto-save OVV every... If enabled, a temporary OVV file (and the associated comment files) will be created and saved every x minutes. In the event of a system crash you can open up the OVV file from the last save and keep working. Check the [ ] Show SAVE dialog option to see when the save occurs.



Destination file format

If Text is selected, you can switch the output between DOS which uses line delimiters, MAC which uses only delimiters and Unix which only uses delimiters. This format has no output size limitations on it as the next two have. The resulting files can be as large as needed.

Selecting C64 TXT will write the files out in C64 text format, using the PETASCII character set and with line delimiters. This format has size limits (Max size) placed in it, with files being no bigger than 63488 bytes.

Selecting C64 PRG will generate C64 program files, with line numbers. These files will typically be used with the PAL assembler. You can also change the starting line number (Line#), line increment (Inc) and starting load address (Load addr). This format has size limits on it, with files being no larger than 30000 bytes.



Destination style options

This option provides for four different output styles for the disassembled output. Note that these options only apply to the Text format, and not to any of the C64 types.

No formatting - Outputs in a very compact form, with nothing done to the output.

Indent non-labelled code lines by 2 - Any lines that are code and do not have a label are indented by two. This makes the labels easier to read.

Align labels/ops in columns - All labels are output on column 2 and opcodes start at column 10. This is a very neat output, but contains a lot of extra spaces.

Just like it is on screen - Outputs the code just as it seen on screen, with code address/offset/region#, table ranges, labels, opcodes, custom code/comments, etc.



Assembler style

Select the assembler style you want to use. Each assembler has it's own syntax, and right now, only Turbo Assembler and PAL assembler are used. PAL uses .ASC tables while Turbo uses .TEXT. PAL only supports the 3 most basic table types, while Turbo supports them all. PAL uses .FIL for chaining assembler source files together while Turbo uses .INC.




Disassembler Key Assignments (16/13)

 Disassembler assigned keys 
Source pop-up menu F5
Destination pop-up menu F6
Set source label L
Set source table T
Set new variable V
Set destination link D
Delete popup menu Alt-F5
Region popup menu F7
Add custom code or comments C or F11
Toggle SKIP line S
Toggle Illegal Opcodes in region I
Database Editor F3
Project Manager F2
Disassembler Configuration Alt-F11
Show label/table useage Alt-I
Disassemble to file Alt-F2
Goto address F9 or J
Goto previous address Alt-F9
Find F12 or F
Find New Alt-F12
Save Project (.OVV) file F4
Quit Disassembler F10
Welcome window Ctrl-F12
Set QuickJump Position ALT 1 to 0
Jump to QuickJump position 1 to 0
QuickJump drop-down menu Q
Load next file in project ALT right arrow or N
Load previous file in project ALT left arrow or P

F5 (Source pop-up menu) - Brings up the pop-up menu with all the source menu options.

F6 (Destination pop-up menu) - Brings up the pop-up menu with all the destination mene options.



L (Set source label) - Position the cursor bar over the line of code you want to add a source address to. The label will be set based on the address in the left column (the "source" address). If this address is not what you want, type in the correct address (in HEX) in the dialog box.

T (Set source table address) - Position the cursor bar over the line of code you want to add a source table to. The starting table position will be set based on the address in the left column (the "source" address). If this address is not what you want, type in the correct address (in HEX) in the dialog box. Also type in the ending address into the dialog box, so that the table range is set.

V (Set new variable) - Allows you to create a new variable. All variables are visible from the Database Editor window.

D (Set destination link) - This key will bring up another pop-up menu where you can select on of several destination link types (variables, labels, strings or base change).



Alt-F5 (Delete popup menu) - Being up a menu from where you can delete entries.

F7 (Regions popup menu) - Brings up a menu where you can add a new region, edit existing region entries or delete regions.Being up a menu from where you can delete entries.



F11 or C (Add custom code or comments) - Brings up the Custom code and Comment editor window. You can add custom code (like pseudo-ops or very small code segments) or up to 6 lines of comments.

S (Toggle SKIP line) - Inserts or removes a blank line following the present opcode.



F2 (Project Manager) - Brings up the Project Manager window, where you can manage the files and regions within the disassembly project.

F3 (Database Editor) - This brings up the Database Editor window, where you can add, edit & delete any of the labels, tables, separator lines & custom code/comments that exist.

Alt-F11 (Disassembler Configuation) - This brings up the Configuration window for some generic disassembler settings.

Alt-I (Statistics and memory usage) - Displays the amount of used and free database entries that presently exist.



Alt-F2 (Disassemble to file) - Sends the disassembly output to files for editing and re-assembly. Here you can specify what type of file output you want, be it DOS text, C64 text or C64 Program format.



F9 (Goto address) - Jump to a specified address in the code. The default address will typically be based on the destination address (following the opcode column).

Alt-F9 (Goto previous address) - This is a quick-key to bring you back to the address you were at before the last Goto command.



F12 (Find) - Enter the text you wish to find, with the ? and * wildcards. If search text has already been entered previously, then pressing F12 will simply start searching automatically.

Alt-F12 (Find New) - This will force a new search to take place. Enter the text you wish to find, with the ? and * wildcards.



F4 (Save Project (OVV) file) - Saves your work (labels, tables, custom code/comments, Region settings) to an .OVV file. If this file is lost or deleted, the entire disassembly procedure will have to be done again.

F10 (Quit disassembler) - Quits the disassembler. If you have done any work, set tables/labels, program start address etc., you will be asked if you want to save your work.



Ctrl-F12 (Welcome window) - Brings up the opening Welcome window.



Alt right arrow (Switch to next file) - If there is more than one file on the project file list, the display will switch to the next one. Once the bottom of the list is reached, the display will start from the first file.

Alt left arrow (Switch to previous file) - If there is more than one file on the project file list, the display will switch to the previous one. Once the top of the list is reached, the display will start from the last file.




File Menu (16/14)

  File                    
+-------------------------+
| Save OVV F4 |
| ----------------------- |
| Next file Alt-> |
| Previous file Alt-< |
| ----------------------- |
| Disassemble Alt-F2 |
| Code/data sep Alt-F1 |
| ----------------------- |
| eXit F10 |
+-------------------------+

Save OVV - Save your work to a project (OVV) file. This file stores all the labels, tables, custom code & comments etc. related to the file being disassembled.

Next file - Switches the disassembly window to the next file in the project.

Previous file - Switches the disassembly window to the previoust file in the project.

Disassemble - Disassemble the file being worked on. The disassembly can be done in several file formats.

Code/data sep - Attempts to separate the executable code from the data tables.

Exit - Exit the Disassembler.




Edit Menu (16/15)

  Edit                   
+------------------------+
| Project Manager F2 |
| ---------------------- |
| Database Editor F3 |
| ---------------------- |
|+ Show unlabelled |
+------------------------+

Project Manager - Bring up the Project Manager window. Manage your files and regions.

Database Editor - Switch to the Database Editor window. From there, all assignments can be viewed and edited.

Show unlabelled - On by default, this switch allows you to turn off the highlighing of code lines that need attenion, like destinations that need links or bad opcodes. This reduces the visual distractions so you can look over the disassembly.




Find Menu (16/16)

  Find                 
+---------------------+
| Find F12 |
| find New Alt-F12 |
+---------------------+

Find - Search for a text string. If a text string has already been defined, you will not be asked what to search for.

Find New - Search for a new (different) text string. You will be asked what to search for first.




Project Manager: Exit (16/17)
ESC, F10

Exits the Project Manager and brings you back to the disassmbly window.




Destination Pop-up menu (16/18)
D

Pressing D on a valid destination opcode will bring up this type of pop-up menu.

+-----------------------+
| link to Label L |
| link to Variable V |
| link to String S |
| change Base B |
+-----------------------+

From here you can choose the destination type you want. Some of these menus won't be visible depending on what type of opcode and the destination address is being shown:

* Any address within the program range, including branches, will always default to Link to Label.

* Zero-page addresses will always default to Link to Variable.

* Immediate mode opcodes will bring up the Variable, String and Change Base options.




Miscellaneous Menu (16/19)

  Misc                      
+--------------------------+
| Goto address F9 |
| ------------------------ |
| Configuration Alt-F11 |
| ------------------------ |
| Memory useage Alt-I |
| ------------------------ |
| Help F1 |
+--------------------------+

Goto Address - Do a quick jump to the user-specified address.

Configuration - Bring up the configuration window.

Memory Useage - Shows the memory useage statistics (memory available, used, how many labels are used)

Help - Get help on a topic




Source Menu (16/20)
F5/Popup

Source options are generally those defined on the left side of the display, at the address being disassembled. Here's a sample line from the disassembler output:

14cc a9 00 lda #$00

The 14cc address value from the above disassembly line is the source address and can have source operations performed on it.

  Source Options           
+--------------------------+
| add/edit src Label L |
| add/edit src Table T |
| add src Variable V |
| ------------------------ |
| add/edit Code/cmnt C |
| toggle Skip line S |
| ------------------------ |
| dElete src label |
| delete src tAble |
| del coDe/comments |
| delete skip liNe |
| ------------------------ |
| Goto address F9 |
| ------------------------ |
| edIt region |
| add neW region |
| delete reGion |
+--------------------------+

Add/edit src Label - Add a new address label definition, or edit an existing address label.

Add/edit src Table - Add a new table definition, or edit an existing table definition.

Add src variable - Creates a new variable.



Add/edit Code/Comnt - Add new custom code/comment, or edit existing custom code/comments.

Toggle SKIP line - Add a new separator line, or delete an existing one.



Delete src Label - Delete an address label.

Delete src Table - Delete a table definition.

Delete code/comments - Delete any custom code or comments defined.

Delete skip line - Delete an inserted SKIP line.



Goto address - Do a quick jump to the user-specified address



Edit region - Edit the settings of the present defined region.

Add new region - Add a new region.

Delete region - Delete a defined region.




Dest. Menu (16/21)
F6/Popup

Destination options are those that are used by the opcode. Here's an example line from the disassembler output:

0816 Bd 37 08 lda $0837,x

The $0837 in the above line is the destination address and can be operated on from the destination menu.

  Dest.                      
+---------------------------+
| Edit dest link |
| add/edit src Table T |
| ------------------------- |
| 1-new label link |
| 2-new variable link |
| 3-new string link |
| 4-new base change |
| ------------------------- |
| add/edit Code/cmnt C |
| toggle Skip line S |
| ------------------------- |
| delete dest Link |
| delete src tAble |
| del coDe/comments |
| delete skip liNe |
| ------------------------- |
| WhatAmI F8 |
| Goto address F9 |
+---------------------------+

Edit dest link - If a destination link is set here, edit it.

Add/edit src Table - Add a new table or edit an existing one defined at this source address.

1-New label link - If allowed for the opcode, make a new label and link to it or link to an existing label.

2-New variable link - If allowed for the opcode, make a new variable and link to it or link to an existing variable.

3-New string link - If allowed for the opcode, create a custom string and link to it.

4-New base change - If the opcode is in immediate mode, the change the display base from that of HEX.

Add/edit Code/Comnt - Add new custom code or comments, or edit existing custom code or comments.

Toggle SKIP line - Inserts or deleted a SKIP line following the present opcode..

Delete dest Link - Delete the existing destination link.

Delete src Table - Delete any existing table defined at this source address.

Delete code/comments - Delete any existing custom code or comments at this source address.

Delete skip line - Delete any inserted SKIP line at this source address.

WhatAmI - When the cursor line is positioned over an opcode with an immediate mode value, this brings up the What Is This Code window showing some possible explanations for the immediate mode value.

Goto Address - Jump to the user-specified address




Database Editor: Options Popup Menu (16/22)

  Entry Options            
+--------------------------+
| edit src Label L |
| edit src Table T |
| edit src Variable V |
| view Dest link D |
| ------------------------ |
| add new vaRiable |
| ------------------------ |
| add/edit Code/cmnt C |
| toggle Skip line S |
| ------------------------ |
| delete src Name |
| delete src tAble |
| dElete src link |
| delete dest linK |
| delete skiP line |
| del cOde/comments |
| ------------------------ |
| Goto address F9 |
| ------------------------ |
| Filter entries F2 |
+--------------------------+

Edit src Label - Edit the existing source label.

Edit src Table - Edit the existing table.

Edit src variable - Edit the existing variable.

View dest link - Edit the existing destination link.

Add new variable - Creates a new variable that you can link to.

Add/edit Code/cmnt - Add new custom code or comments, or edit existing custom code or comments.

Toggle SKIP line - Add a new separator line, or delete an existing one.

Delete src Name - Delete an address label.

Delete src Table - Delete a table definition.

Delete src Link - Delete a source link.

Delete dest link - If a destination link exists on this entry, delete it.

Delete skip line - Delete a skip line defined.

Delete code/comments - Delete any custom code or comments defined.

Goto Address - Do a quick jump to the user-specified address

Filter entries - Enable and configure the Database display filter, to only see specified entries.




New Project Warning (16/23)

When you first call up the Disassembler without a project (OVV) file selected, the following warning box will come up reminding you that this is the first time you are disassembling these source files. Heed the warnings that you read here. If you meant to open the project (OVV) file, press ESC to exit and select the correct file.

+-------------------------- Attention! --------------------------+
| |
| You are attempting to open up source files directly. |
| This will result in the creation of a new project (OVV) |
| file. If this is what you want, then continue, otherwise |
| press ESC to exit and load an existing project (OVV) file. |
| |
| If this is the first time you are working on these files, |
| regions were defined for all the files that were selected. |
| Please check them (F2) to make sure the values are correct! |
| |
|----------------------------------------------------------------|
| [ Ok ] |
+----------------------------------------------------------------+

If you continue, it would be prudent to go to the Project Manager (F2) once the disassembly window comes up and verify that the files in the project and the regions defined for each one are correct.




Screen Layout (16/24)

Basic Concepts

The disassembler works on the concept of a source and a destination address. The left-most column is called the source address (actual code address) and the data and addresses following the opcode is called the destination.

Most of the fields in the address entry dialog boxes (labelling, tables, goto etc) will be filled in based on the addresses in the line under the cursor bar. Selecting a source address operation will take the address from the left-most column (the program code address), and selecting a destination address operation will take the address from the field following the opcode column. This makes labelling a very simple operation.



The Screen

The hilighted lines are those which have unlabelled destination address references or broken links, and require you to either set a label or a table range. Move the cursor bar to the line that needs to be worked on, and select your operation.

0924:0125:3   a9 93    start    lda #$93    
0926:0127:3 20 d2 ff jsr chrout
0929:012a:3 a9 8e lda #$8e
092b:012c:3 20 d2 ff jsr chrout
092e:012f:3 a9 08 lda #$08
0930:0131:3 20 d2 ff jsr chrout
0933:0134:3 a9 00 lda #$00
;Set screen to black
0935:0136:3 8d 20 d0 sta bordrclr
0938:0139:3 8d 21 d0 sta bckgrnd0
093b:013c:3 a2 18 ldx #$18
;Clear SID
093d:013e:3 9d 00 d4 sta sid,x
0940:0141:3 ca dex
0941:0142:3 10 fa bpl $093d
0943:0144:3 a9 0f lda #$0f

Any address can be labelled, whether it is in the middle of an opcode or not. In the example above there is a highlighted line at $0941 for the branch opcode BPL. Below is what it looks like when a destination link is created to a label point. This was done by pressing D to bring up the Link Destination To Label window.

093b:013c:3   a2 18             ldx #$18    
093d:013e:3 9d 00 d4 lbl_093d sta sid,x
0940:0141:3 ca dex
0941:0142:3 10 fa bpl lbl_093d
0943:0144:3 a9 0f lda #$0f

If a source link or destination link points to a non-existant entry, the display will revert back to showing the source link (slave) label and/or the destination address. A comment will be appended to the line showing which of the links (source and or destination) is broken and the line will become hilighted again.



Illegal & Broken Opcodes

Illegal or broken opcodes will be displayed as BAD, and the line will be hilighted until fixed. When disassembing to an output ASM file, these will be converted to a .byte $xx entry so that the original source will assemble properly.

One case where a BAD opcode can come up is when a source label is created in the middle of an opcode. In this example, we have a normal LDA opcode.

0811:0012:1   b9 3b 08          lda $083b,y

However, a source label got created (likely incorrectly) on byte 3 of the opcode. This breaks the opcode into its constituent parts in order to display the label. If you have BAD codes being displayed once in a while, this is possibly why.

0811:0012:1   b9                BAD
0812:0013:1 3b BAD
0813:0014:1 08 loop0813 php

There are legitimate cases, such as self-modifying code or when hiding code. Consider the following example of hiding code. Here we have a BCC into an opcde at $0BDA, in the middle of the BIT opcode. The BIT opcode hides an "lda #$00" opcode.

0bd5:03d6:1   90 03             bcc $0bda
0bd7:03d8:1 a9 01 lda #$01
0bd9:03da:1 2c a9 00 bit $00a9
0bdc:03dd:1 8d c0 02 sta $02c0

Once some of it is labeled, suddenly we have a BAD opcode at $0BD9 as the source label breaks the BIT opcode display. This is perfectly valid as the BAD opcode will be replaced with a ".byte $2c" when disassembled and the "lda #$00" becomes visible.

0bd5:03d6:1   90 03             bcc skip0bda
0bd7:03d8:1 a9 01 lda #$01
0bd9:03da:1 2c BAD
0bda:03db:1 a9 00 skip0bda lda #$00
0bdc:03dd:1 8d c0 02 sta $02c0



Tables

Tables should be used when a block of data is encountered. Setting a table range (start/end) tells the disassembler to display the data in a different format, depending on the table type and width specified. Move the cursor bar to the start of the data range, and press F7 to set a table range. Below are several examples of different table types (signed decimal word, hexadecimal word and a FONT entry):

              ; decimal +/-                      
081f:0020:3 tbl-0826 decimal .word 2,-80,-2,80
; HEX word
0827:0028:3 tbl-0828 hex1 .word $3688
; FONT
0829:002a:3 tbl-0830 font1 .byte %11110011
082a:002b:3 .byte %11110011
082b:002c:3 .byte %11110011
082c:002d:3 .byte %00000000
082d:002e:3 .byte %00111111
082e:002f:3 .byte %00111111
082f:0030:3 .byte %00111111
0830:0031:3 .byte %00000000



Cursor Movement

Cursor up, and how many bytes to scroll back at a time, may not seem to intuitive at first, so an explanation is in order. Cursoring up is not as simple as one would like, since there is no easy way to know exactly how many bytes to go backwards to start on a valid opcode and sometimes you get either a few BAD or incorrectly decoded opcodes for the first few lines of the display. To make things worse each line can have SKIP lines, comments and region lines so there's no way to know how many lines each opcode line will take. Instead, the top of screen is moved back only a few bytes at a time making cursoring up seem very slow.

Cursor down is much easier. The disassembly will start at the present midpoint of the display (for a 38-line display it would be line 14), and start the disassembly from there. This way you still can see some previous code, in case there is a need to.




Steps For A Successful Disassembly (16/25)

To effectively disassemble a file, try the following steps:

* Check the Disassembler Configuration window, and set anything necessary.

* Put all the source files you want to disassemble into a separate directory. Select all the source files for the project and call the Disassembler from 64Copy with Shift-F4. Since a new project will be created, regions will be defined for each source file.

* Check the Project Manager settings for the regions defined for all source files. If you are skipping the first two bytes of the source files as the load address there should be an entry for these bytes which has the hidden flag set. There should also be an entry which covers the remainder of the files, and it should not be hidden.

NOTE: For large source files it would be prudent to set a few extra region entries and SPLIT points to break up the output code.

* For a shortcut, you can try the ScanCode feature on Alt-F1 which tries to separate data tables from executable code. Once done, see how well it did, then continue on.

* Back in the main disassembly window, for each source file, start adding comments, setting branch, JSR/JMP and indexed references. Look for all 2-byte addresses in the destination field that are highlighted. These are usually indexed opcodes like "0000,x" or "($fb),y". Set any custom variables (and link them) as needed.

As another shortcut, try the AutoLabel feature on Alt-F3 which will try to label all unlabelled address references (code, zero page, ROM, etc). This feature will also link source labels & variables when they are used in indirect addressing modes i.e. lda ($xx),y

* Look for and configure the byte tables by using the labels as markers. Link any source labels as needed.

* Check over all the code again, to make sure no other addresses have been missed, or that BAD opcodes are now showing (hilighted lines).

* Use the Alt-F2 "Disassemble To File" to produce the actual disassembled .ASM files.




Save & Exit Disassembler (16/26)
ESC, F4, F10

When exiting the disassembler (ESC or F10) and changes have been made, this dialog will come up. Clicking on yes will save the project (OVV) file, with all the changes made. Clicking no will abandon all changes and exit the disassembler. Clicking cancel will return you to the disassembler without saving the changes.

+---------- Save Project (OVV) ----------+
| |
| Save the project (OVV) file? |
| |
+----------------------------------------+
| [ Yes ] [ No ] [ Cancel ] |
+----------------------------------------+




Find (16/27)
F12

This is a simple search facility, only capable of searching for things which can be seen on the screen. Since it uses wildcards, you cannot search for the literal "?" and "*" characters in the disassembly.

+------------------------- Search... --------------------------+
| Enter search string (use * and ? for wildcards)... |
| _ |
|--------------------------------------------------------------|
| [ Ok ] [ Cancel ] |
+--------------------------------------------------------------+




Goto Address or Label (16/28)
F9

Enter the label name or the address/region you want to go to and press return. The present address that you are on is stored, and by pressing ALT-F9 you can quickly go back to the original address.

+- Jump to Address/Reg --+
| Enter jump info... |
| Addr:$0958 Reg:3 |
| Label: |
+------------------------+

If you are in the Database Editor, then the dialog changes to this:

+------ Goto Label ------+
| Enter label info... |
| Addr:$ Reg: |
| Label: |
+------------------------+




QuickJump Marker Points (16/29)
1...0

+------------------+
| 1-$08F7/1 (00F8) |
| 2: - |
| 3: - |
| 4: - |
| 5: - |
| 6: - |
| 7: - |
| 8: - |
| 9: - |
| 0: - |
+------------------+

If you want to remember a specific memory address/offset so that you can come back quickly when you need to, assign the location to one of 10 quickjump marker points by pressing ALT and then one of the 1 through 0 numeric keys. The location will be assigned to the number key that you press.

Each file in the project has its own set of QuickJump points. This means you have lots of QuickJump points that can be set, but it also means you can't easily jump between files in a project.

If you want to jump back to one of the saved quickjump positions, either press the appropriate numeric key that the position was assigned to, or go to the QuickJump menu and select the correct entry.

If you want to see what settings are set to what quickjump positions, pull down the QuickJump menu to review them. There is also a QJ: display on the info bar that only shows when a particular position is set by displaying a *.

To quickly cycle through the recorded positions in the QuickJump list, press Alt + to go forward through the list, or Alt - to go backwards.



When you attempt to change an already set QuickJump position, you will be asked if you want to change it. This way you won't mistakenly press the wrong keys and mess them up.

+-------- Change QuickJump Position ---------+
| |
| This QuickJump position is already set. |
| Are you sure you want to change it? |
| |
+--------------------------------------------+
| [ Ok ] [ Cancel ] |
+--------------------------------------------+




Linked Source Labels (16/30)
L

One of the most powerful label features is to link one source label to another in a master/slave relationship. This allows you to reference many different destination addresses as a single address plus a constant. The result is typically how the original assembly code would look like. It is very useful in dealing with the zero-page addresses used in indirect addressing (lda ($fb),y) and dbyte/word address references.

You can change the status of a master label to a slave by linking the master to another label. This will create a label chain (label3->label2->label1, where label1 is now the master). Chains can be any length.

The following code segment demonstrates the concept. It refers to two different data tables, which are both .word tables, thus they start out being referenced by two different labels. This is how the disassembly would look without much being done except assigning labels to the destination addresses.



lbl_0817 .byte $01                                    
lbl_0818 .byte $00,$d8,$ff,$ff,$ff,$28,$00
...
lbl_0845 .byte $cc
lbl_0846 .byte $04,$db,$04,$ea,$04,$11,$06,$25,$06,$4c
.byte $07,$5b,$07,$6a,$07
...
lda $02d6
asl a
tax
lda lbl_0845,x
adc lbl_0817,y
sta $c3
lda lbl_0846,x
adc lbl_0818,y
sta $c4



The first table (lbl_0817/lbl_0818) is actually a word table of dec +/- values, so we change the table to that type. The second table (lbl_0845/lbl_0846) is actually a word table of hex values.

Next we link the lbl_0818 label to lbl_0817 and the lbl_0846 to lbl_0845. Position the hilite bar over the table line with the lbl_0818 and press L. This brings up the Add/Modify Source Label dialog box...

+-- Add/Modify Source Label --+
| Enter label info... |
| Name: lbl_0818 (2% used) |
| Addr:$0818 Region#:3 |
| [ Find name ] |
| (Label is not linked) |
+-Link to another label-------+
| [x] Link above address to |
| Name: lbl_0817 |
| Addr:$ |
+-----------------------------+
| [ Ok ] [ Cancel ] |
+-----------------------------+

In the Link to another label area check the [ ] Link above address to: option, enter the address or label name to link this label to and the link is made. The display of lbl_0818 will disappear and all references to it will now show up as lbl_0817+1.

Altering the tables and linking the labels will change the above code to this:



lbl_0817 .word  1, -40, -1, 40
lbl_0845 .word $04cc
.word $04db
.word $04ea
.word $0611
.word $0625
.word $074c
.word $075b
.word $076a
lda $02d6
asl a
tax
lda lbl_0845,x
adc lbl_0817,y
sta $c3
lda lbl_0845+1,x
adc lbl_0817+1,y
sta $c4



Note how all the slave labels are now gone, and all table references are now label+1. It makes for a more legible and logically flowing code display.




Load project (OVV) (16/31)

If you have previously disassembled a source file and saved a project (OVV) for it, then start the disassembler with the OVV file under the cursor bar. Failure to do this will result in a new project file being created.

+------ Load Project (OVV) ------+
| |
| Reading project (OVV) file... |
| (OVV version 4) |
| |
+--------------------------------+

When the project file is being loaded, the above dialog is what you will see, but only briefly. It shows the version of the project being loaded.



If you see this dialog, it is because you tried loading an older OVV file, or a test version which I no longer support. There are other errors that come up, some of which are very serious and will result in the OVV file being ingnored.

+------------------ Attention! ------------------+
| |
| This OVV is an unsupported version. |
| Only version 4 and higher are now supported! |
| |
|------------------------------------------------|
| [ Ok ] |
+------------------------------------------------+

The decision was made to not support any previous version of the Project (OVV) file and while this might not be popular it is necessary. The entire structure and method of storing labels, links, variables etc changed from the old disassembler.

The very act of converting an old OVV would be very arduous and would result in an incomplete project. For starters, old OVV versions did not contain any destination links, so none would exist after conversion. This means you would have to go through the project re-assigning all the destination links again.




Save Project (OVV) (16/32)
F4

Pressing F4, or trying to exit the disassembler without naming your project brings up this dialog box. Enter a project name and click ok. Do not enter any drive or path to save the project in another location as they will be removed. The source files and the project (OVV) file must be kept together as the OVV file contains the source filename(s) for the project, which are also stored without a path.

+------------------- Save Project (OVV) File --------------------+
| Enter a project (OVV) filename (no path)... |
| 4.OVV |
|----------------------------------------------------------------|
| [ Ok ] [ Cancel ] |
+----------------------------------------------------------------+




Switching Files (16/33)
Alt <- and -> arrows

If you have more than one file in your disassembly project, you need some way to easily switch between them. Pressing Alt <- (cursor left arrow) will switch to the previous file on the list, and pressing Alt -> (cursor right arrow) will switch to the next file.

All comments for the present file will be unloaded to a CMT comment file and the ones for the next file (if any) will be loaded in.




Project Manager: Add/Edit Regions (16/34)
F2/F3

From here you can add or edit a region entry, which lets you put a section of code at either a new address, or displays with different options.

+--- Add New Region Entry ---+
| Offset/Address... |
| File offset: $015D |
| Code address: $095C |
| OFFS value: $0000 |
+-Region user comment--------+
| Used for drive code |
+-Region options-------------+
| [ ] Hide code in region |
| [ ] Allow illegal opcodes |
+-Region type----------------+
| (*) C64 memory |
| ( ) 1541 drive code |
+-Assembly Output options----+
| [ ] Split assy output here |
| Filename: |
+-Code/Comments Filename-----+
| filename.cmt |
+----------------------------+
| [ Ok ] [ Cancel ] |
+----------------------------+

Regions are defined with only a single starting file offset, and not a start-end range. This way if the offset of one region is changed (or a region entry is deleted entirely), then the range for the previous one will automatically be changed. The only exception to this is offset $0000 which must exist and cannot be deleted or moved. When all other regions are deleted, it is the one which defines the entire file.



Offset/Address

File offset - this is auto-filled by where the cursor line is in the disassembly window. Things work best when the cursor is positioned to where you want things to happen. If you are editing offset $0000, this field will not be changeable.

Code address - this is the address you want the code to disassemble to. It is important that this be right or JMP/JSR addresses won't look right.

OFFS value - any value here will not affect the disassembly window, it is only included for completeness, and so that re-assembling the code will work.



Region Comment

This entry area lets you describe the region. It is useful when multiple areas contain the same addresses, and you need some way to tell them apart.



Region options

Hide code in region - if it is not necessary to display the code section specified, then you can hide it by enabling this. Keep in mind that this code section will never be visible anywhere until this switch is disabled.

Allow illegal opcodes - enable this when it appears that illegal (or undefined) opcodes are being used. This is a very rare thing to use.



Region type

Select the proper region type. Right now only two are defined... C64 and 1541.



Assembly output options

Split assy output here - Set a SPLIT point in the output disassembly, forcing the code to disassemble to a new file. This is good to prevent the output files from getting too big.

Filename - If the above option is enabled, you are required to enter a filename. If no filename is entered, the following dialog box will show:

+------------------------ Attention! ------------------------+
| |
| Split has been enabled, but no filename has been entered! |
| Please enter a filename, or press ESC to cancel. |
| |
|------------------------------------------------------------|
| [ Ok ] |
+------------------------------------------------------------+



The split filename is checked against the other split names (if entered) and against the present output directory. If there is a filename match for either check then the entered filename cannot be used. You will be required to re-enter a new name, and will be warned as follows:

+-------------------- Attention! --------------------+
| |
| The SPLIT name entered is not unique. It already |
| exists in the present output directory or is used |
| as a SPLIT name. Please enter another one. |
| |
|----------------------------------------------------|
| [ Ok ] |
+----------------------------------------------------+





If split assy output here was enabled but no split output name was entered (a condition possible when loading an older OVV4 project file) and Disassemble to file was executed, split filenames will be generated and stored with the region information. You will also receive the following information dialog explaining that this has happened.

+--------------------- Attention! ---------------------+
| |
| Split filenames were added to the region list. |
| |
| Please check the Project Manager region list to see |
| if they are OK and make any changes necessary! |
| |
|------------------------------------------------------|
| [ Ok ] |
+------------------------------------------------------+



The Code/Comments Filename entry is view only and shows the associated filename that the custom code and comments are stored in. This is mainly shown for troubleshooting purposes.




Pre-defined ROM Addresses (16/35)

This disassembler comes with a large collection of pre-defined 1541 ROM addresses, and a lesser amount of C64 addresses. No other region types have been defined as of yet. If anyone has other types to include then by all means let the author know about them.

The only place that they are available is from the Set Variable and Set Destination Link to Variable windows, by selecting the button [ ROM Look ]




Project Manager: Delete Regions (16/36)
F4, D

Position the cursor over the region entry to be deleted and press either F4 or D. The dialog will contain the region number being deleted.

+-- Delete Project Region ---+
| |
| Delete region number 1? |
| |
+----------------------------+
| [ Yes ] [ No ] |
+----------------------------+



If you try to delete the offset $0000 entry, you will receive this error window explaining why you can't do this.

+----------------- Attention! -----------------+
| |
| The offset $0000 entry cannot be deleted. |
| Each file must have a $0000 entry! |
| You may Edit this entry if needed. |
| |
|----------------------------------------------|
| [ Ok ] |
+----------------------------------------------+



When deleting regions so that only one is left, and the hidden flag is enabled, the hidden flag will be turned off and this information dialog will come up. Having a single region that is hidden means there's no code to display in the disassembler window.

+----------- Region Modified ------------+
| |
| The only remaining region was hidden. |
| The HIDDEN flag has been turned off. |
| |
+----------------------------------------+
| [ Ok ] |
+----------------------------------------+




Project Manager: Add Files (16/37)
F5, A

When adding new files to a project, the first free list position is found, and then you are asked for a filename to add.

+------- Add New File -------+
| Add new file to slot #2 |
| Filename: |
+----------------------------+
| [ Ok ] [ Cancel ] |
+----------------------------+

If you enter a name that is already on the list, you will receive an error window. If the file is OK to add, the following dialog will come up asking you to set some defaults.

+--- Add New Region(s) for New File ---+
| Since a new file is being added, a |
| new region needs to be created. |
+-Start Address------------------------+
| Region start address:$0FA2 |
+-Options------------------------------+
| [x] Start address is first two bytes |
| [ ] Allow illegal opcodes in region |
+--------------------------------------+
| [ Ok ] [ Cancel ] |
+--------------------------------------+

Region start address - If this value is not correct, then enter the correct address.

Start address is first two bytes - If you want to skip the first two bytes of the source file, whether they are being used for the load address or not, check this option. With this option checked, two regions will be created with the first one being 2 bytes long and hidden so these bytes never show up in the disassembly. The second one will refer to the remainder of the file.

Allow illegal opcode in region - If the code in this region contains illegal (undefined) opcodes then enable this option.




Project Manager: Edit Files (16/38)
F6

From here you can change the name of the file in the list. Note that you are not adding a new file, but changing this name will also change the DOS filename.

+------- Edit File Entry --------+
| Edit filename in slot #0 |
| Filename:mazemen1.src |
+--------------------------------+
| [ Ok ] [ Cancel ] |
+--------------------------------+




Project Manager: Delete Files (16/39)
F8

When deleting a file entry, you will be asked for confirmation. Deleting a file is a major step as it must delete all the database entries that refer to it, as well as comment files, region entries and finally the original file entry itself.

+------------- Delete Project File --------------+
| |
| File "mazemen2.src" (file #1) selected. |
| |
| Do you want to delete this file and all of the |
| database entries and regions it refers to? |
| |
+------------------------------------------------+
| [ Yes ] [ No ] |
+------------------------------------------------+

This is what you see if you try to delete the file presently being displayed in the disassembly window.

+--------------------- Attention! ---------------------+
| |
| You can't delete the currently active source file. |
| |
|------------------------------------------------------|
| [ Ok ] |
+------------------------------------------------------+



Removing a file from the project will likely result in many database entries being deleted. This informational window will pop up for a short time after the file and entries are deleted informing you of the total number of entries that were deleted.

+------------- Info -------------+
| |
| Removed 454 database entries. |
| |
+--------------------------------+



Side Effects

If you choose to delete a file from the project, the associated comment (.CMT) file and any pertinent database entries will be deleted right away. If you then decide to exit the Disassembler without saving the project file (OVV) the project will be left in a mixed state. The deleted source file that was removed will be back in the project, but all the comments and database entries will be gone.




Project Manager: Switching Files (16/40)
F7

Position the cursor bar in the file panel to a source file you want to switch to and press F7. This dialog will briefly appear as the source file switches to the one you selected.

+----------- Info -----------+
| |
| Switching source file... |
| |
+----------------------------+

Selecting the currently active file will result in no file switching, but the Project Manager will quit.




Project Manager: File List Arranging (16/41)
F11, F12

Position the cursor bar on a file whose position you want to re-arrange on the file list and press either F11 or Alt up arrow (cursor up) to move it up towards the top of the list, or press F12 or Alt down arrow (cursor down) to move it down towards the bottom. Note that the file numbers assigned never change.

The order of this list is important because the order of the output disassembly files is the same.




Project Manager: File Pull-Down Menu (16/42)
F9

  File                 
+---------------------+
| Add file F5 |
| Edit file F6 |
| Switch to... F7 |
| Delete file F8 |
| ------------------- |
| move Up F11 |
| move Down F12 |
| ------------------- |
| eXit F10 |
+---------------------+

Add file - Add files to the project

Edit file - Rename a file in the project.

Switch to - Switch the disassembly display to a different file.

Delete file - Delete a file from the project.

Move up - Move a file up towards the the top of the file list.

Move down - Move file down towards the bottom of the file list.

Exit - Exit the Project Manager window.




Destination: Edit Present Link (16/43)

This option is only available from the destination menu. If there is a destination link at the present location, the proper link window (variable, label, string or base) will come up. If there is no link stored, nothing will happen.




Database Editor: FILE Menu (16/44)

A very minimalist menu. All you can do is choose Exit which will exit the Database Editor window.

+-------------+
| eXit F10 |
+-------------+




Project Manager: Toggle Region Flags (16/45)
H, I, S

Each region entry has a few flags assigned, and these are also available from the Edit Regions dialog on F3.

H - toggles the HIDDEN flag for the region. Enabled means the region will not be shown in any disassembly (on screen or in an output disassembly file).

I - toggles the ILLEGAL OPCODES flag for the region. Enabled means that illegal opcodes will be decoded rather than showing as BAD in the disassembly.

S - toggles the SPLIT flag for the region. Enabled means a SPLIT point has been set, and the output disassembly file will be broken here and a new file started. You will also be required to enter a split filename if one is not defined for this region. If no filename is entered, the following error window will come up:

+------------------------ Attention! ------------------------+
| |
| Split has been enabled, but no filename has been entered! |
| Please enter a filename, or press ESC to cancel. |
| |
|------------------------------------------------------------|
| [ Ok ] |
+------------------------------------------------------------+

The split filename is checked against the other split names and against the present output directory. If there is a filename match for either check then the entered filename cannot be used. You will be required to re-enter a new name, and will be warned as follows:

+-------------------- Attention! --------------------+
| |
| The SPLIT name entered is not unique. It already |
| exists in the present output directory or is used |
| as a SPLIT name. Please enter another one. |
| |
|----------------------------------------------------|
| [ Ok ] |
+----------------------------------------------------+




Project Manager: Region Pull-Down Menu (16/46)
F9

  Region                         
+-------------------------------+
| Add region F2 |
| Edit region F3 |
| Delete region F4 |
| ----------------------------- |
| toggle HIDDEN flag Alt-F3 |
| toggle ILLEGAL flag Alt-F4 |
| toggle SPLIT flag Alt-F2 |
+-------------------------------+

Add region - Add a new region entry

Edit region - Edit the present region entry settings.

Delete region - Delete the selected region entry.

Toggle HIDDEN flag - Toggles the HIDDEN flag, making the region code visible or hiding it from the disassembly window.

Toggle ILLEGAL flag - Toggles the ILLEGAL OPCODES flag, either displaying illegal (undefined) opcodes or not.

Toggle SPLIT flag - Enabled and a SPLIT point is set, breaking the output disassembly into multiple files. Disabled and no break will happen.




Memory Requirements (16/47)

The Disassembler uses almost all of the free DOS RAM available, and this can cause some major problems in low memory conditions.

When the Disassembler is started, a free memory check is done to make sure that there will be enough memory for all functions, including the HELP windows. If there isn't even enough for the basic arrays, this fatal error will be shown and the Disassembler will quit:

+------------------ Attention! ------------------+
| |
| The Disassembler doesn't have enough memory |
| to continue. Please free up some more memory! |
| |
|------------------------------------------------|
| [ Ok ] |
+------------------------------------------------+



If there is too little, this window will come up warning you that the memory is low, and to continue with caution:

+-------------------- Attention! --------------------+
| |
| Free memory is dangerously low. If you continue, |
| the Disassembler might quit without warning |
| without saving any changes. Continue with caution! |
| |
|----------------------------------------------------|
| [ Ok ] |
+----------------------------------------------------+



If you are running 64COPY and the Disassembler from within Windows 2000 or XP, but not from a customized DOS shortcut, then do so now to try to maximize the free memory, and load most things into HMA (High Memory):

* Create a shortcut on your desktop to COMMAND.COM

* Get properties on the shortcut and go to the MEMORY tab

* My Settings are as follows:

    Conventional Memory                
Total: 640
Protected: checked
Initial Environment: 2048
Expanded (EMS) Memory
Total: None
Extended (XMS) Memory
Total: None
Uses HMA: checked
MS-DOS Protected Mode (DPMI) Memory
Total: Auto

* Most of the settings should be ok if left to their defaults except the Expanded (EMS) Memory. Set this to None.




Destination: Link To Variable (16/48)
D

From here you can set a destination address or immediate mode value to a variable.

+--- Link Dest. to Variable ---+
| Enter variable name |
| Name: voictyp2 (2% used) |
| [ ROM lookup ] |
| |
+-Choose variable type---------+
| ( ) Immediate: #$0B |
| ( ) Zero page: $0B |
| (*) 2-byte addr:$D40B |
| ( ) Cust. String:(0% used) |
| |
| [x] Force 2-byte address |
+-Partial Variables------------+
| [x] Enable partial reference |
| (*) Low ( ) High |
+------------------------------+
| [ Ok ] [ Cancel ] |
+------------------------------+

Enter the name of the variable you want to set and select the type of variable (immediate, zero page, 2-byte address or custom string).

If calling this function with a zero page or 2-byte address in the destination, a search occurs through the regions pre-defined ROM variables. If a match is found, the name will automatically be filled in. You can still type in whatever you want for a name, overriding the default values.

Enable partial reference - If the opcode is immediate mode and you want to link it to a two-byte address you must enable the enable partial reference option and choose the half of the byte (high or low) to reference.

Force 2-byte address - Under certain cases, zero page and two-byte addresses might be mis-interpreted as being always zero page by the assembler. This switch adds a ! character before the variable name telling the assembler to always use a two-byte opcode. This function works for the PAL assembler.



Explaining the code

If you are calling this function when the cursor line is over an opcode with an immediate mode value, then a display-only companion window will come with displaying the possible meanings of the immediate mode value.

+-------- What Is This Code --------+
| Value:#$93 |
| BINRY: %10010011 |
| ASCII: CLEAR THE SCREEN |
| BASIC: LOAD |
| 6502: SHA ($00),y (illegal) |
| |
| POKE-HI POK-LOHI ASC-HIGH ASCLOHI |
|** ** ******** |
|* ** * ******** |
|* ***** ** * |
|** ** * ***** no char no char |
|***** * ** ** |
|* ** * ***** * |
|** ** * ** |
|******** ******** |
+-----------------------------------+



Limitations

There's no way to link variables together from here. You can only do this from the Set Variable dialog instead. There's not enough room on screen for all those features.




Destination: Link To Label (16/49)
D

From here you can link a destination addres to a source label. When trying to set a destination link on a branch opcode, this dialog will always come up with most of the values already filled in. The link must be to an address within the present region.

+- Link Destination to Label --+
| Link destination where |
| Name: (2% used) |
| Addr:$ Region: |
| |
+-Reference what half?---------+
| (*) Low ( ) High |
+------------------------------+
| [ Ok ] [ Cancel ] |
+------------------------------+

Enter an existing label name or address & region, or a new name and address & region combination, and if allowed select the half of the byte (low/high) to reference. If the label does not exist, it will be created.

There is some logic involved with the auto-filling of the region, address and name fields. The destination address is checked against the list of regions, and if a single region is found that contains the address then the region and address fields will be filled. If that region/address also contains a label name, it will be filled in as well.

If the destination address (2-byte) cannot be found in any region, you will get this warning.

+---------------------- Attention! ----------------------+
| |
| No visible region contains the destination address. |
| You might consider linking to a variable instead. |
| |
|--------------------------------------------------------|
| [ Ok ] |
+--------------------------------------------------------+



Explaining the code

If you are calling this function when the cursor line is over an opcode with an immediate mode value, then a display-only companion window will come with displaying the possible meanings of the immediate mode value.

+-------- What Is This Code --------+
| Value:#$93 |
| BINRY: %10010011 |
| ASCII: CLEAR THE SCREEN |
| BASIC: LOAD |
| 6502: SHA ($00),y (illegal) |
| |
| POKE-HI POK-LOHI ASC-HIGH ASCLOHI |
|** ** ******** |
|* ** * ******** |
|* ***** ** * |
|** ** * ***** no char no char |
|***** * ** ** |
|* ** * ***** * |
|** ** * ** |
|******** ******** |
+-----------------------------------+



Limitations

There is no way to link labels together from here, You have to do this from the Set Label dialog.




Destination: Link To String (16/50)
D

Enter the custom string or mathematical formula you want to link to. If the destination opcode is immediate mode, select the low/high of the byte to reference.

+- Link Destination to String -+
| Enter formula/string... |
| |
| (string array 0% used) |
+-Partial References-----------+
| [ ] Enable partial reference |
| (*) Low ( ) High |
+------------------------------+
| [ Ok ] [ Cancel ] |
+------------------------------+

Keep in mind several things about strings:

* Text strings must be enclosed in quotes

* Math formulas do not need quotes

* You may use label and variables names here but these names will not change if you later change the name of a label or variable. This string is treated as simple text.



Explaining the code

If you are calling this function when the cursor line is over an opcode with an immediate mode value, then a display-only companion window will come with displaying the possible meanings of the immediate mode value.

+-------- What Is This Code --------+
| Value:#$93 |
| BINRY: %10010011 |
| ASCII: CLEAR THE SCREEN |
| BASIC: LOAD |
| 6502: SHA ($00),y (illegal) |
| |
| POKE-HI POK-LOHI ASC-HIGH ASCLOHI |
|** ** ******** |
|* ** * ******** |
|* ***** ** * |
|** ** * ***** no char no char |
|***** * ** ** |
|* ** * ***** * |
|** ** * ** |
|******** ******** |
+-----------------------------------+




Destination: Change Base (16/51)
D

From here you can change the display base of an immediate mode destination value from the default HEX display.

+-- Change Dest. Base ---+
| Value: #$21 (33) |
| Choose dest. base... |
| (*) Hex ($21) |
| ( ) Dec+ (33) |
| ( ) Binary (%00100001) |
| ( ) Octal (@041) |
| ( ) Dec+/- (33) |
+------------------------+
| [ Ok ] [ Cancel ] |
+------------------------+

Selecting the HEX option will remove any BASE destination link stored.



Explaining the code

If you are calling this function when the cursor line is over an opcode with an immediate mode value, then a display-only companion window will come with displaying the possible meanings of the immediate mode value.

+-------- What Is This Code --------+
| Value:#$93 |
| BINRY: %10010011 |
| ASCII: CLEAR THE SCREEN |
| BASIC: LOAD |
| 6502: SHA ($00),y (illegal) |
| |
| POKE-HI POK-LOHI ASC-HIGH ASCLOHI |
|** ** ******** |
|* ** * ******** |
|* ***** ** * |
|** ** * ***** no char no char |
|***** * ** ** |
|* ** * ***** * |
|** ** * ** |
|******** ******** |
+-----------------------------------+




Set Variable (16/52)
V

From here you can create a new variable, which can be linked from a table or a destination.

+------ Add/Edit Variable -------+
| Enter variable name |
| Name:sample (2% used) |
| [ ROM look ] [ Find name ] |
| MASTER: 0 src, 1 dest link |
+--------------------------------+
| Choose variable type |
| ( ) Immediate: #$00 |
| ( ) Zero page: $00 |
| (*) 2-byte addr:$D400 |
| ( ) Custom string: (0% used) |
| |
+-Link to another variable-------+
| [ ] Enable linking |
| Name: |
+--------------------------------+
| [ Ok ] [ Cancel ] |
+--------------------------------+

Enter the name of the new variable and select the proper type (immediate mode, zero page, 2-byte address or string). If you want to link this to another variable (like Linked Source Labels) then enable linking and enter the name of the existing variable you want to link to. Keep in mind that only address variables can link to lover-value address variables.

Clicking on Find Name will search the presently-defined variables for a match against the entered name. If there is a match, the displayed data will change to that of the found name.

Clicking on the ROM Look button will search the predefined ROM lists for an address match. However, since the region type is unknown with variables, you must select the region type to search.

+-- Choose Region Type --+
| Select the region to |
| search for a match... |
| (*) C64 memory |
| ( ) 1541 drive code |
+------------------------+
| [ Ok ] [ Cancel ] |
+------------------------+



Linking variables

Just like labels, you can also link variables together, and into chains. In the above example, the variable has only 1 destination link, and could also have source links. In the example below, the variable bckgrnd0 is being linked to oldfont. Only address variables can be linked, and the slave link variable must be a lower value than the master variable.

+------ Add/Edit Variable -------+
| Enter variable name |
| Name: bckgrnd0 (0% used) |
| [ ROM look ] [ Find name ] |
| SLAVE: 0 src, 1 dest link |
+--------------------------------+
| Choose variable type |
| ( ) Immediate: #$21 |
| ( ) Zero page: $21 |
| (*) 2-byte addr:$D021 |
| ( ) Custom string: (0% used) |
| |
+-Link to another variable-------+
| [x] Enable linking |
| Name: oldfont |
+--------------------------------+
| [ Ok ] [ Cancel ] |
+--------------------------------+



Custom string requirements

* Text strings must be enclosed in quotes

* Math formulas do not need quotes

* You may use label and variables names here but these names will not change if you later change the name of a label or variable. This string is treated as simple text.

* Only address variables (zero page and 2-byte) can be linked, and the slave address must be higher than the master address.



Linking Limitations

* For linking to work, the variable being linked to must already exist. The link variable cannot be created here. The simple reason is that there's not enough room in the dialog to include all the details necessary for a second variable definition.

* Linking only works between address mode variables (zero page and 2-byte) and the link must be a lower address value than the source. Attempts to change an existing linked variable to another mode other than address (immediate or string) will fail.




Delete Destination Link (16/53)
Alt-F6

If you want to delete a destination link, press Alt-F6 and select Yes.

+------- Remove Destination Link --------+
| |
| Remove the variable link that is |
| stored at this location? |
| |
+----------------------------------------+
| [ Yes ] [ No ] |
+----------------------------------------+




Database Editor: Delete Variable (16/54)
Alt-F5

When within the Database Editor, if you want to delete an existing variable, position the hilite bar to the variable, press Alt-F5 and select yes.

+---------- Remove Variable -----------+
| |
| Variable named "sample" selected. |
| |
| Remove the selected variable? |
| |
+--------------------------------------+
| [ Yes ] [ No ] |
+--------------------------------------+

If there are source variable links or destination links to this variable, you will be warned before deleting it. All of the existing links will be automatically removed before the variable is deleted.

+----------------- Remove Variable Links ------------------+
| |
| Other variables and/or destination links (2) are |
| linked to this variable. Removing this variable will |
| remove these links! Remove the variable anyways? |
| |
+----------------------------------------------------------+
| [ Yes ] [ No ] |
+----------------------------------------------------------+



If removing the variable, as well and the source and destination links, results in any database entries being deleted, this informational window will pop up for a short time informing you of the total number of entries that were deleted.

+------------ Info ------------+
| |
| Removed 8 database entries. |
| |
+------------------------------+




Opening Welcome Box (16/55)
Ctrl-F12

This is the opening Welcome window you see each time the disassembler starts up.

+-------------- Welcome To... ---------------+
| |
| 6502 Disassembler V4.20a1 (c) 1994-2005 |
| Part of the 64COPY conversion package. |
| Written by Peter Schepers, |
| |
| (Standard disclaimers apply) |
| |
| Please report bugs/enhancements to |
| schepers@ist.uwaterloo.ca |
| |
| 110176 bytes and 14 windows free |
| 0 file handles used |
| Long filename compatible OS detected |
| |
+--------------------------------------------+

It is mainly for version# display and does contain some troubleshooting information.




Database Editor: MISC Menu (16/56)

  Misc                     
+--------------------------+
| Goto address F9 |
| ------------------------ |
| Configuration Alt-F11 |
| ------------------------ |
| Memory useage Alt-I |
| ------------------------ |
| Help F1 |
+--------------------------+

Goto address - Jump to a new label position or address/region.

Configuration - Edit the disassembler configuration settings.

Memory Usage - Display the database statistics and memory usage.

Help - Bring up HELP on any topic.




Auto-save Project (OVV) (16/57)

This routine functions in the background saving temporary project (OVV) files every X minutes, with a selectable time range from 1 to 30 minutes and a default of 5. You can enable this feature, set the save time interval, and select whether you want to see the save dialog box from the Configuration window.

This can be a lifesaver because if a catastrophic error occurs and the program crashes before saving the OVV file, you can always start off from the backup name. The name (from the dialog below) is always of the form BKUPxxxx.OVV, so you know what to look for.

Only if the Show SAVE dialog option is enabled from the Configuration window will you see the dialog and know anything is happening at all.

+----------- Auto-Save ------------+
| |
| Auto-saving temporary OVV file: |
| "BKUPD35E.OVV" |
| |
+----------------------------------+

The background save routine is dependant on user activity to trigger it. If there's no keyboard activity or mouse clicks, this routine won't run. So even if the save interval is set to a minute, if there's no activity no save will happen until a key is pressed or the mouse is clicked.




Database Integrity Checksum (16/58)

The core of a good database system is built-in integrity checking and knowing when something has become corrupted. If bad programming causes areas of memory used by database storage to be overwritten, it will now be caught by the checksum that is stored for each database entry. This checksum only covers the core database and associated text strings (label name, variable/direct string) and not the Project Manager file or regions entries.

The database is constantly being access by various processes, and it is these accesses which looks for corrupted entries. This error checking does imposes a slight performance hit for each lookup, but the peace of mind is worth it. When an error is detected, you will be informed immediately by the following critical error window:

+-------------------------- Attention! --------------------------+
| |
| A data integrity failure has been detected in the database |
| and some entries have been corrupted! This should not happen! |
| Please contact the author immediately and report this. It is |
| also recommended to stop what you are doing as the corruption |
| will only get worse. This message will not be shown again. |
| |
|----------------------------------------------------------------|
| [ Ok ] |
+----------------------------------------------------------------+

Note that this window will only come up once, when the first error occurs. Heed what it says well!

The integrity status for each entry is only visible from the Database Editor in the last column called Stat. A display of OK is good. Any entries marked *BAD are corrupted.




Database Editor: Filter Entries (16/59)
F2

This function allows you to change the display rules for what database entries get displayed. Altering the display rules can dramatically shrink down the displayed entries to what you want to see. By default all entries are displayed.

+--------------- Database Filter Options ----------------+
| Select your filter requirements... |
| (*) Show all entries |
| ( ) Show only entries that have: |
| [x] Variables |
| [x] Source labels -> [x] Filter pattern:a* |
| [x] Source linked -> [x] Filter pattern:b??? |
| [x] Dest. linked --> [x] Filter pattern:var? |
| [x] Tables |
| [x] Custom code/comments |
| [x] Skip lines |
| [x] Only reference region#:1 |
+--------------------------------------------------------+
| [ Default ] [ Ok ] [ Cancel ] |
+--------------------------------------------------------+

[ Default ] - Select this button to revert the filter options back to default settings, which is to display all entries.

Show all entries - This is the default settings where all database entries are displayed.

Show only entries that have: - Selecting this without changing any rules from the default settings still displays all entries.



Select filter rules from the options below:

Variables - Enabling this shows all source variables

Source labels - Show entries with source label names. Enabling the Filter pattern sub-option and entering pattern text (with * and ? wildcards) will filter each name using the pattern. Only those matching the pattern will be displayed.

Source linked - Show entries with source links. Enabling the Filter pattern sub-option and entering pattern text (with * and ? wildcards) will filter each link name using the pattern. Only those link names matching the pattern will be displayed.

Dest. linked - Show entries with destination links. Enabling the Filter pattern sub-option and entering pattern text (with * and ? wildcards) will filter each destination link name using the pattern. Only those destination link names matching the pattern will be displayed.

Tables - Show entries with tables defined

Custom code/comments - Show entries with custom code & comments (either local or externally stored)

Skip lines - Show entries with SKIP lines.

Only reference region# - Show only those entries which match the entered region number. This option is typically off as it filters all source entries, links and destination links by comparing their region number to the entered value. Only those that match will be displayed.




Code/Data Separation (16/60)
Alt-F1

This function attempts to separate executable code from data by traversing the code and marking the areas not executed as data tables. When you first start the function, the following warning dialog comes up informing you of what you should have setup first (regions), and the limitations that exist and how the function can fail:

+--------------------------- Attention! -------------------------+
| |
| This function attempts to separate executable code from data |
| tables. It is important to have all the regions defined before |
| doing this step. This procedure is far from perfect and many |
| programming tricks and techniques can cause it to not do a |
| very good job. Things like... |
| |
| * Relocatable or Drive code |
| * Interrupt code |
| * Stack address execution |
| * Multiple regions at the same address |
| * Unconditional branches (CLC, BCC $xxxx) |
| * Indirect JuMP' code i.e. JMP ($xxxx) |
| |
|----------------------------------------------------------------|
| [ Ok ] |
+----------------------------------------------------------------+

Once you acknowledge the warning window, you are asked to enter the start address and region to begin code execution. It is important to get this right as an incorrect address could create many wrong tables. It should be the location that the program is executed from.

+------ Location to Start -------+
| Enter scan start address... |
| Address:$8009 Region:0 |
+--------------------------------+
| [ Ok ] [ Cancel ] |
+--------------------------------+

The following window, which was present all the time, shows the progress of the code scan and what was found:

+------------------ Code/Data Separation ------------------+
| Starting code/data separation: |
| Scanning...................................... |
| |
| What was discovered during the scan: |
| Total code scanned: 2896 of 3456 bytes (83%) |
| Internal JSR calls: 24 |
| Outside (ROM) calls: 14 |
| Indirect JMP calls: 0 |
| Illegal Opcodes: 0 |
| BRK Opcodes: 0 |
| HLT Opcodes: 0 |
| Max stack pointer: 17 |
| New tables added: 3 |
| |
| Separation done. Press a key to exit... |
| |
+----------------------------------------------------------+

If the Total code scanned percentage seems low (below 80%) then possibly things didn't work well and the automated approach isn't warranted. The other details are mainly for troubleshooting, unless you know the source code very well and can confirm certain details like how many Internal JSR calls actually exist.

The final data displayed, New tables added is how many new tables were created. You can verify this by looking at the Database Editor (F3) once this function is completed.

+----------------- Code/Data Separation Done ------------------+
| |
| Code/data separation has completed. Now check all the tables |
| and other regions before continuing. Once checked, you can |
| use the Auto-Label function on Alt-F3 to automatically label |
| all the remaining address references. |
| |
+--------------------------------------------------------------+
| [ Ok ] |
+--------------------------------------------------------------+

Once the code scan is complete, this information dialog will come up. It is important to check that the code/data separation procedure went well before continuing on with labelling or auto-labelling.




PETASCII Codes (16/61)
F8

This function shows what an immediate mode value could possibly represent. It decodes the ASCII control code, BASIC token, 6502 opcode and also displays the POKE (screen code, upper and lower case) and ASCII (CHR$, upper and lower case).

Sometimes in a disassembly you see the opcode LDA #$93, and don't know what the value #$93 represents. Position the cursor line over this opcode and press F8 to see the window below showing what it means. If the code is being printed to the screen, it likely means screen clear.

+-------- What Is This Code --------+
| Value:#$93 [ Prev ] [ Next ] |
| BINRY: %10010011 |
| ASCII: CLEAR THE SCREEN |
| BASIC: LOAD |
| 6502: SHA ($00),y (illegal) |
| |
| POKE POKE ASCII ASCII |
| UPRCASE LWRCASE UPRCASE LWRCASE |
|** ** ******** |
|* ** * ******** |
|* ***** ** * |
|** ** * ***** no char no char |
|***** * ** ** |
|* ** * ***** * |
|** ** * ** |
|******** ******** |
+-----------------------------------+
| [ Ok ] [ Cancel ] |
+-----------------------------------+

Selecting Prev will decrement the viewed value, and Next will increment the viewed value.

This function window, in a display format only, comes up when setting destination links from an immediate mode value.




Delete Custom Code & Comments (16/62)

Select Yes to remove any custom code or comments stored at the present address/region.

+-------------------- Remove Code/Comments --------------------+
| |
| Remove the custom code or comments stored at this location? |
| |
+--------------------------------------------------------------+
| [ Yes ] [ No ] |
+--------------------------------------------------------------+




Delete Source Link (16/63)

This delete feature is only available from the Database Editor.

+--------------- Remove Source Link ---------------+
| |
| Remove the source link stored at this location? |
| |
+--------------------------------------------------+
| [ Yes ] [ No ] |
+--------------------------------------------------+

Select Yes to delete the selected source link.




Delete Skip Line (16/64)

Select Yes to delete the skip line.



+---------------- Remove Skip Line ----------------+
| |
| Remove the SKIP line inserted at this location? |
| |
+--------------------------------------------------+
| [ Yes ] [ No ] |
+--------------------------------------------------+




Delete Source Popup Menu (16/65)
Alt-F5

  Source Options     
+-------------------+
| delete src Label |
| delete src Table |
| del Code/comments |
| delete Skip line |
+-------------------+

Delete src Label - Delete an address label.

Delete src Table - Delete a table definition.

Del code/comments - Delete any custom code or comments defined.

Delete skip line - Delete an inserted SKIP line.




Delete Dest Popup Menu (16/66)
Alt-F6

  Dest. Options      
+-------------------+
| delete dest Link |
| delete src Table |
| del Code/comments |
| delete Skip line |
+-------------------+

Delete dest Link - Delete the existing destination link.

Delete src Table - Delete any existing table defined at this source address.

Del code/comments - Delete any existing custom code or comments at this source address.

Delete skip line - Delete any inserted SKIP line at this source address.




Database Editor: Delete Popup Menu (16/67)
Alt-F5/Alt-F6/Alt-F7

  Delete Options     
+-------------------+
| delete src Label |
| delete src Table |
| dElete src link |
| delete Dest link |
| delete Skip line |
| del Code/comments |
+-------------------+

Delete src Label - Delete an address label.

Delete src Table - Delete a table definition.

Delete src Link - Delete a source link.

Delete dest link - If a destination link exists on this entry, delete it.

Delete skip line - Delete a skip line defined.

Del code/comments - Delete any custom code or comments defined.




Terms & Concepts (16/68)

This topic provides a brief description of the structure and terms used in this disassembler.

Project - This describes the file that gets saved (OVV) while disassembling files. This file contains everything that is used to disassemble source code to finally produce assembly code that can be modified and re-assembled.

It also refers to the environment that you work in (project space) while disassembling files. These files are then broken up into more objects like regions, and can contain labels, variables, tables, etc.



Files - These are the highest level objects in project space. You can add or remove files from the project as needed through the Project Manager (F2), but generally you start with a set of source files and never add/remove from them during the entire disassembly process.



Regions - These are how the source files get broken up. A region describes an address range (technically an offset range) of the file and assigns it a starting address, and region type (C64, 1541 code) and other descriptor flags.

Regions can be added and removed at will without causing any adverse affects. They are the most powerful feature of the disassembler.



Source - When viewing the disassembly window, the source area covers from the left side of the window up to and including the opcode column. This is where source operations happen (source table, source label).



Source Labels - These are objects that take the place of an address reference For example: lda $0801... the $0801 is an address reference and can be replaced with a label resulting in lda lbl_0801. The lbl_0801 would be placed at the source address $0801 so that refeences to that address can now be replaced with the label.



Linked Labels - These are simply source labels that are tied together. The higher address value always links to the lower address value. Once linked together, any reference to the higher address will be replaced with the reference to the lower address plus a constant.


lda $0802 (if $0802 was linked to $0801) would make
lda lbl_0801+1



Source Tables - These convert assembly code into neatly arranged data segments. Instead of seeing garbage for an assembly output, now will be byte, word or ASC tables. The ability to arrange data into neatly organized tables is one of the disassemblers more powerful features.



Variables - Like labels, these are not assigned to a source address but are considered free, and are used to represent different data types. They can be used to store immediate mode values (#$xx) zero page addresses ($xx), 2-byte or word addresses ($xxxx) and custom strings/formulas.

If you need to assign a math formula to a particular destination value then a variable assignment would work well.



Linked Variables - Like labels, this is two variables linked together but this only works on variables assigned to addresses, and like labels the higher value address can link to the lower value address. Once linked, any reference to the higher value variable will be replaced with the reference to the lower value plus a constant.



Destination - When viewing the disassembly window, this is the window area immediately following the opcode column to the right edge of the window. This is where destination operations occur like Link Destination to XXX, adding custom code & comments.



Destination Links & Partial Links - This is another very powerful feature of the disassembler. You can link a destination address to one of four options like a source label, variable, a custom string or change the base of an immediate mode value.



Custom Code & Comments - These are also very powerful, and allow you to insert custom code segments or comments of up to 6 lines. Comments, when the line is preceeded with a semi-colon (;), simply describe what the code segment is doing. If the line is not preceeded with a semi-colon then it is presumed to be code allowing you to add small code pieces, like pseudo-ops.



Skip Lines - Skip lines are blank lines that are inserted after opcode lines to give the disassembly a visible break in the code. Some skip lines are auto-inserted and are not changeable, like those between code and data tables.




Region popup menu (16/69)
F7

  Region Options       
+----------------------+
| Edit region F3 |
| Add new region F2 |
| Delete region F4 |
+----------------------+

Edit region - Edit the settings of the present defined region.

Add new region - Add a new region.

Delete region - Delete a defined region.




ROM Image Detection (16/70)

If a single file is being opened into a new project, and it appears to be a ROM image, you will be asked if this is the case. ROM's may or may not have the load address bytes at the beginning of the file. If it is a ROM, the load address will not be taken from the first two bytes of the file, a single region will be set up that contains the entire program address range, and you must enter the correct load address of the file here.


+--------------- ROM Image Detected ---------------+
| |
| Is the file being disassembled a ROM image? |
| If so, enter the correct load address below, |
| or click the cancel button to use the first |
| two bytes as the load address for the project. |
| |
| Load address:$8009 |
| |
+--------------------------------------------------+
| [ Yes ] [ Cancel ] |
+--------------------------------------------------+

If you cancel this window, the load address will be taken from the first two bytes, and two regions will be setup up with the first containing the load address.




Illegal Files (16/71)

Attempts to start the Disassembler when certain illegitimate are selected will bring up this dialog box. The Disassembler is limited to files only (no directories), files less than 65531 in size, and filenames no longer than 20 characters (including extension). All these types will automatically be deselected.

+--------------- Illegal Disassembler Files ---------------+
| |
| Some files selected are illegal and will not be used: |
| |
| * Directories were selected. |
| * Files with sizes > 65530 bytes were selected. |
| * Files with names over 20 characters were selected. |
| |
| Please correct this problem! |
| |
|----------------------------------------------------------|
| [ Ok ] |
+----------------------------------------------------------+




Get Load Addresses (16/72)

When starting the Disassembler with either more than one file, or a single file that is not detected as a ROM image, the this dialog will come up.

+--------------- Get Load Addresses ---------------+
| |
| Should the load address for each source file |
| be taken from the first two bytes of each file? |
| |
| If the addresses are not correct, you will have |
| to go into the Region Manager (F2) and change |
| the load addresses manually. |
| |
| |
| [x] Use first two bytes for the load addresses |
| |
+--------------------------------------------------+
| [ Yes ] [ Cancel ] |
+--------------------------------------------------+

Select Yes to use the first two bytes of each file as the load address for each file, or select No to not set the load address from the first two bytes and include them in the source code. Regardless, go into the Region Manager and check the region layouts and starting addresses for each file and region to make sure they are correct.




Project (OVV) Errors (16/73)

When loading an existing project, the Disassembler will read the OVV project file and try to verify that everything is OK before continuing. This includes finding all the source files, checking the CRC integrity of the OVV file, making sure that the OVV is the proper version numbers, etc, Various error messages can come up and most of them are fatal so the Disassembler cannot continue.



This one will come up when a source file cannot be found. All source files must exist in order to work on an existing project. The Disassembler cannot continue without all the source files.

+------------------ Attention! ------------------+
| |
| A source file could not be read and/or found. |
| The Disassembler cannot continue. |
| |
| "part01-$8000" |
| |
|------------------------------------------------|
| [ Ok ] |
+------------------------------------------------+



This one will come up when trying to load a very old version project file. Due to massive design changes between the old and present-day Disassembler, the old OVV files cannot be supported. The Disassembler will exit when this happens.

+----------------- Attention! -----------------+
| |
| This OVV is an unsupported version. |
| Only version 4 and higher are now supported! |
| The Disassembler will now exit. |
| |
|----------------------------------------------|
| [ Ok ] |
+----------------------------------------------+



This window will come up when the OVV project file is checked, and the CRC value contained in the file is different than what was calculated when it was just loaded. Once again, the Disassembler assumes that the OVV has become corrupted and cannot continue.

+----------------------- Attention! -----------------------+
| |
| The OVV file is corrupted (bad CRC) and cannot be used! |
| The Disassembler will now exit. |
| |
|----------------------------------------------------------|
| [ Ok ] |
+----------------------------------------------------------+



This window will come up when a source file appears to have been changed from when the Disassembler was last used. All source file entries are stored with a CRC value, and this is used to verify that the source files remain intact. This is not a fatal error, but you should proceed with caution.

+------------------------- CRC Mismatch -------------------------+
| |
| A CRC mismatch was detected in one or more of the source files |
| Do you still want to continue with the disassembly? |
| |
+----------------------------------------------------------------+
| [ Yes ] [ No ] |
+----------------------------------------------------------------+



This window will come up only when reading a project file where labels longer than 8 characters were still allowed. Since labels are only allowed to be 8 characters now, the longer ones must be shortened to fit the new naming scheme. This is a warning only, and is not fatal.

+--------------------- Attention! ---------------------+
| |
| Some labels were too large (more than 8 characters |
| long) and were renamed. You may have to change them |
| manually to something more preferrable! |
| |
|------------------------------------------------------|
| [ Ok ] |
+------------------------------------------------------+



This window is very rare and will only happen when working with a project file from a beta test version of the Disassembler. The internal layout of pre-release project files are not the same as the final release, and cannot be supported.

+------------------ Attention! ------------------+
| |
| The sub-revision code in this OVV is wrong. |
| This is a pre-release (old) variant of an OVV! |
| The Disassembler will now exit. |
| |
|------------------------------------------------|
| [ Ok ] |
+------------------------------------------------+




Other Startup Errors (16/74)

This topic describes the miscellaneous errors that can happen when the Disassembler is launched.



The area where the files are to be disassembled must be read/write. It can't be on a file system that is read only, like a CD.

+--------------------- Attention! ---------------------+
| |
| The drive where the source files are located appears |
| to be read-only. Please put the files to disassemble |
| on read/write media. The Disassembler will now quit! |
| |
|------------------------------------------------------|
| [ Ok ] |
+------------------------------------------------------+



When the Disassembler is launched, the files to be disassembled are sent in as names in a text file. If this text file can't be read, then the file list can't be read as well.

+----------------------- Attention! -----------------------+
| |
| Can't read the temporary file containing the file list! |
| |
|----------------------------------------------------------|
| [ Ok ] |
+----------------------------------------------------------+



There is a limitation to the number of files in a project. If you have selected too many, this is the warning you get.

+----------------------- Attention! -----------------------+
| |
| There are too many files tagged for the Project Manager |
| to handle. Please untag some before continuing. |
| |
|----------------------------------------------------------|
| [ Ok ] |
+----------------------------------------------------------+



Back to index

Delete Files/Directories (17/0)
F8

This function will delete all the selected files, recursively into directories.

+---------------- Delete Files ----------------+
| |
| 233 tagged items selected. |
| Do you want to delete all tagged items? |
| |
| [x] Calculate size of selected files |
| [ ] "WipeFile" data before delete |
|----------------------------------------------|
| [ Yes ] [ No ] |
+----------------------------------------------+

Calculate size of deleted files: enabling this makes 64COPY add up the total size (in bytes) and # of files about to be deleted, before the delete occurs. It is very useful to know beforehand how much data is being worked on.

WipeFile data before delete: enabling this means all files, sub-images or partitions being deleted will be WipeFile'd first, and cannot be recovered.



Back to index

Converting D64 to 4-pack ZipCode's (18/0)
F11

Here we can convert a group of D64's (or X64's) to 4-pack ZipCode files. Select the D64 files you want to convert and press F11. If you have selected files other than D64/X64 and 4-pack ZipCode files, then this window will not appear, but the normal Convert Window will come up.

+---------- Convert ZipCode/D64 -----------+
| |
| "RENEGADE.D64" selected. |
| Do you want to convert the items to |
| the appropriate counterparts? |
| (Press NO for main CONVERT window) |
| |
| [ ] Auto-convert filenames |
+------------------------------------------+
| [ Yes ] [ No ] [ Cancel ] |
+------------------------------------------+

Selecting yes, you will be asked for the ZipCode filename that you want to create. You can change the name/directory to whatever you like.

+------------------- Convert D64 to ZipCode -------------------+
| Convert "BLAST138.D64" into ZipCode parts... |
| D:\PETE\64COPY\1!BLAST1.38_ |
|--------------------------------------------------------------|
| [ OK ] [ Cancel ] |
+--------------------------------------------------------------+



Back to index

Text Editor (19/0)
F4

Aside from the usual cursor/tab/return keys, here is the list of the editing commands (both Qedit and Norton Edit modes)...


Qedit Mode Norton Edit
---------- -----------
Help F1 F1
Word left CTRL-left CTRL-left
Word right CTRL-right CTRL-right
Line up Up arrow Up arrow
Line down Down arrow Down arrow
Page up PgUp PgUp
Page down PgDn PgDn
Start of line HOME HOME
End of line END END
Start of file CTRL-PgUp CTRL-HOME
End of file CTRL-PgDn CTRL-END
Delete block or line F8
Delete by line F3 CTRL-Y
Delete to end of line CTRL-K CTRL-K
Delete character left BACKSPACE BACKSPACE
Delete char under cursor DELETE DELETE
Delete word left CTRL-BACKSPACE CTRL-BACKSPACE
Delete word right CTRL-T CTRL-T
Toggle Insert mode INS INS
Insert blank line F2
Save (no rename) F2
Save & rename file F4 SHIFT-F2
Save and exit (no dialog) SHIFT-F10
Save tagged block F11
Find next Text string F5 SHIFT-F7
Find new Text string ALT-F5 F7
Replace next Text string F6 SHIFT-F7
Replace new Text string ALT-F6 ALT-F7
Start tag area F7 F3
End tag area F8 F3
Unmark tagged area SHIFT-F3
Tag area resize ALT-T
Goto to line... F9 ALT-F8
Exit editor F10 F10
Show ASCII chart F12
Editor configuration ALT-F11 SHIFT-F5
Show memory usage ALT-F12 ALT-F12
Block re-format ALT-B
Duplicate tagged block ALT-C F5
Move tagged block ALT-M F6
Undo delete (by line) ALT-U
Copy to clipboard KEYPAD +
Cut & copy to clipboard KEYPAD -
Paste from clipboard KEYPAD *
Append to clipboard ALT-KEYPAD +
Cut & append to clipboard ALT-KEYPAD -




File Menu (19/1)

  File                          
+------------------------------+
| New file |
| Save F4 |
| save Tagged F11 |
| ---------------------------- |
| go to Viewer Alt-F1 |
| go to UnLister Alt-F2 |
| go to Print Alt-F3 |
| go to Disassembler Alt-F4 |
| ---------------------------- |
| eXit F10 |
+------------------------------+

New file - Quit editing the present file and start a new one. If there are edits made to the present document, you will be asked if they should be saved or not.

Save - Save changes made to file. If there's no filename given to the document, you will be asked to name it first.

Save Tagged - Save the tagged area to a separate file. Useful for extracting sections of a file to new files.

Go to Viewer - A shortcut that brings you directly into the File Viewer.

Go to Unlister - A shortcut that brings you directly into the Basic Unlister.

Go to Print - A shortcut that brings you directly into Print Files.

Go to Disassembler - A shortbut that brings you directly into the 6502 Disassembler.

Exit - Exit the Text Editor. If there are edits made to the present document you will be asked if they should be saved.




Edit Menu (19/2)

  Edit                         
+-----------------------------+
| Copy tagged Alt-C |
| Move tagged Alt-M |
| Delete tagged |
| delete Line F3 |
| Delete to EOL Ctrl-K |
| --------------------------- |
| Tag start F7 |
| taG end F8 |
| tagS off |
| --------------------------- |
| Format paragraph Alt-B |
| Insert blank line F2 |
| --------------------------- |
| Undo delete Alt-U |
+-----------------------------+

Copy Tagged - Copy the tagged area to cursor location. Clipboard contentd are not disturbed.

Move Tagged - Move the tagged area to cursor location. Clipboard contents are not disturbed.

Delete Tagged - Deletes the tagged area. Deleted information is added to the Undo buffer.

Delete Line - Deletes the line the cursor is on. Clipboard contents are not disturbed and this line is added to the Undo buffer.

Delete to EOL - Deletes everything to the right of the cursor until the end of the line. This data is not saved in the Undo buffer.

Tag Start - Sets the beginning of the tag area at the cursor location.

Tag End - Sets the end of the tag area at the cursor location.

Tags Off - Resets all tag markers, and un-hilites all tagged areas.

Format Paragraph - Reformats the paragraph from the present cursor position. It will redraw the paragraph based on the justify and line length settings. These settings are adjustable from the Configuration window.

Insert Blank Line - Inserts an empty line at the present cursor location. All data on the cursor line and below are shifted down one line.

Undo Delete - Data in the Undo buffer is permanently taken out, one line at a time, and inserted into the document at the cursor location.




Search/Replace Menu (19/3)
Pull-down Menu

  Search/Replace           
+-----------------------+
| Ssearch F5 |
| Search New Alt-F5 |
| --------------------- |
| Replace F6 |
| rEplace New Alt-F6 |
+-----------------------+

Search - Searches for a text string. If a search string has been previously defined, it will be used and you will not be asked for a search string.

Search New - Searches for a new text string. You will be asked for the new string.

Replace - Search for and replace one text string with another. If the search & replace parameters have already been entered, these will used instead of asking you.

Replace New - Search for and replace one text string with another. You will be asked for the search and replace parameters.




Clipboard Menu (19/4)

  Clipboard                          
+-----------------------------------+
| Copy to clipboard Kpd + |
| Apend to clipboard Alt-Kpd + |
| cUt to clipboard Kpd - |
| cut/append to clpbd Alt-Kpd - |
| --------------------------------- |
| Paste from clipbrd Kpd * |
| --------------------------------- |
| cLear clipboard Alt-Z |
+-----------------------------------+

Copy To Clipboard - Copies the tagged data to the clipboard. Existing clipboard contents will be replaced.

Append To Clipboard - Appends the tagged area to the data already in the clipboard.

Cut To Clipboard - Delete the tagged area, and move it to the clipboard. Existing clipboard contents will be replaced.

Cut/Append to Clipboard - Deletes the tagged area and appends it to the clipboard.

Paste From Clipboard - Clipboard data is inserted into the document at the cursor location.

Clear Clipboard - Clears out the clipboard contents.




Miscellaneous Menu (19/5)

  Misc                       
+---------------------------+
| Go to line# F9 |
| ASCII Chart F12 |
| Memory usage Shift-F12 |
| ------------------------- |
| Config Alt-F11 |
| ------------------------- |
| Help F1 |
+---------------------------+

Go to Line# - Jumps to the specified line number. Handier and a more accurate way to navigate than using page up/down keys.

ASCII Chart - Brings up a two-parts window from where you can select characters from the IBM ASCII character set.

Memory Usage - Shows the memory used/free, along with the free buffer memory and how large the buffer is.

Config - Brings up the configuration window. See that help topic for more info.

Help - Gets help on a topic.




Popup Menu (19/6)

  Tag Options          
+---------------------------+
| cOpy to clpbd |
| Append to clpbd |
| Cut to clpbd |
| cut/append to clpbd |
| Paste from clpbd |
| Delete |
| ------------------------- |
| Save tagged F11 |
| Format paragraph Alt-B |
+---------------------------+

Copy To Clipboard - Copies the tagged area to the clipboard. Existing clipboard contents are replaced.

Append To Clipboard - Appends the tagged area to the clipboard.

Cut To Clipboard - Tagged area is deleted and copied into the clipboard. Existing clipboard contents are replaced. Deleted data is added to the Undo buffer.

Cut/Append To Clipboard - Deletes the tagged area and appends it to the clipboard. Deleted data is added to the Undo buffer.

Paste From Clipboard - Inserts the clipboard data into the existing document at the cursor location.

Delete - Deletes the tagged area. Deleted data goes into the Undo buffer.

Save Tagged - Saves the tagged area to a new filename. Data is not deleted.

Format paragraph - Reformats the paragraph from the present cursor position. It will redraw the paragraph based on the justify and line length settings. These settings are adjustable from the Configuration window.




Exit & Save Changes (19/7)
ESC, F4, F10

When exiting the Text Editor, you might see this dialog box. It is only asking if you want to save any changes that have been made. Selecting No will exit the editor without saving the changes. Selecting Cancel will return back to the editor.

+----------- Save Changes -----------+
| |
| Save the changes made? |
| (in default PC/DOS format) |
| |
+------------------------------------+
| [ Yes ] [ No ] [ Cancel ] |
+------------------------------------+

Here we see the dialog for saving the file being edited. Enter the filename (with path if needed) to save the file being edited. You can also select the type of file to write, be it DOS text, Macintosh or Unix-style.

+-------------------------- Save File ---------------------------+
| Save to file... |
| EDITOR2.C |
|----------------------------------------------------------------|
| Save file as... |
| (*) DOS Text ( ) Mac ( ) Unix |
|----------------------------------------------------------------|
| [ Ok ] [ Cancel ] |
+----------------------------------------------------------------+




Save Tagged Block (19/8)
F11

+-------------------------- Save Block --------------------------+
| Save tagged block to... |
| sample.txt |
| [ ] Append tagged block to specified file |
|----------------------------------------------------------------|
| Save block as... |
| (*) DOS Text ( ) Mac ( ) Unix |
| [ ] Append tagged block to specified file |
|----------------------------------------------------------------|
| [ Ok ] [ Cancel ] |
+----------------------------------------------------------------+

This dialog lets you save the tagged area (highlighted text) out to a separate file. Select the Append tagged block... if you want to append the tagged area to an already existing file. You can also select the output format, be it DOS text, Macintosh or Unix.




Search (19/9)
F5

+-------------------------- Search... ---------------------------+
| Search for... |
| help_i |
| [ ] Case sensitive search |
|----------------------------------------------------------------|
| [ Ok ] [ Cancel ] |
+----------------------------------------------------------------+

Enter the search text in the entry area. Select Case sensitive search if you want to match the search criteria exactly as it is typed.




Search & Replace (19/10)
F6

+----------------------- Search & Replace -----------------------+
| Search for... |
| help_i |
| and Replace with... |
| |
| [ ] Case sensitive search |
|----------------------------------------------------------------|
| [ Ok ] [ Cancel ] |
+----------------------------------------------------------------+

Enter the search criteria in the search area and the text to replace in the next entry area. Select Case sensitive search if you want to match the search criteria exactly as it is typed.




Paste Other Type (19/11)
Keypad + or *

+------------ Paste Other -------------+
| |
| Clipboard data is in HEX format. |
| Convert it to a HEX dump? |
| |
| Start address (in hex):$00000030 |
| [x] Include address |
| [x] Include block header |
| [x] Include ASCII block |
| [ ] Paste as comma list |
+--------------------------------------+
| [ Yes ] [ No ] [ Cancel ] |
+--------------------------------------+

This box will only come up when pasting data from the clipboard that is non-text (like HEX or Directory data). Since pasting non-text data into a text editor could cause a whole host of formatting and display problems, you have the option to paste it in as a HEX dump.

When HEX data is copied, its source address is remembered, and this is the address which is presented in the Start address area.

Select Include address to gave the source address preceding the data on every line.

Select Include block header to insert a header line containing the area titles and HEX offsets.

Select Include ASCII block to also include the ASCII characters after the HEX numbers.

Select Paste as comma list to have the data come in as a comma delimited list instead.




Goto Line# (19/12)
F9

+- Goto Line --+
| Enter line# |
| 1 |
+--------------+

Enter the line number you want to jump to.




Configuration (19/13)
Alt-F11

+--------- Editor Config ----------+
| |
| Block format max. line width:75 |
| Tab size:8 [x] Auto-indent line |
| X Scroll size:1 |
| [x] Justify paragraph on fmt. |
| [ ] Case-sensitive search/repl. |
| [ ] Auto-wrap on cursor left |
| [ ] Use Norton Editor keys |
| [x] Auto-convert Unicode format |
| Save text files in what format: |
| (*) PC/DOS ( ) Mac ( ) Unix |
+----------------------------------+
| [ Ok ] [ Cancel ] |
+----------------------------------+

Block format max. line width: - This sets the right margin for paragraph formatting (ALT-B).

Tab size: - This is the number of spaces used when a TAB character is typed, or also is the TAB size when displaying a file with the File Viewer.

Auto-indent line: - This will indent the cursor to the position that the previous line is indented to. Also, if you are using the editor for writing C code, when you hit a "{", the cursor will indent by the number of spaces that the TAB setting is set to.

Justify paragraph on format: - With this enabled, doing a Block Format will cause the paragraph to be right-justified to the specified line width.

X-Scroll Size - This is the number of columns the screen will rotate when you cursor over or type off the right edge of the screen. Setting it to 1 makes the rotation smooth. A higher number makes the rotation jumpy.

Case-sensitive search/repl.: - If selected, the search/replace will be case sensitive, otherwise case is ignored.

Auto-wrap on cursor left: - When the cursor reaches the beginning of a text line, it will wrap around to the end of the previous text line

Use Norton Editor keys: - When set, the editor functions key are converted to Norton Editor mode. Most of the normal Fkey and ALT-key functions will be different from Qedit mode. However, the screen will not *look* like Norton Editor (colors, layout, dialogs).

Auto-convert Unicode format - An attempt is made to detect if the text file is in Unicode format. Typical unicode files start with the signature FF FE, and then consist of ASCII/00 pairs for the remainder of the file. Without this enabled, you will be asked to convert each file if it appears to be in Unicode format.

Save text files in what format: - This allows you to save files from the text editor into various common formats, very useful if you are editing files from other sources, or need to move a file to another platform. The PC/DOS option saves files in normal PC format with a standard line delimiter. The Mac option saves files with the delimiter only, and the Unix option saves files with a delimiter only.




ASCII Chart (19/14)
F12

+\\------------------ ASCII Chart -----------------\\+
| 16 32 48 0 64 @ 80 P 96 ` |
| 17 < 33 ! 49 1 65 A 81 Q 97 a |
| 18  34 " 50 2 66 B 82 R 98 b |
| 19 35 # 51 3 67 C 83 S 99 c |
| 20 ô 36 $ 52 4 68 D 84 T 100 d |
| 21 õ 37 % 53 5 69 E 85 U 101 e |
| 22  38 & 54 6 70 F 86 V 102 f |
| 23  39 ' 55 7 71 G 87 W 103 g |
| 24  40 ( 56 8 72 H 88 X 104 h |
| 25  41 ) 57 9 73 I 89 Y 105 i |
| 26 > 42 * 58 : 74 J 90 Z 106 j |
| 27 < 43 + 59 ; 75 K 91 [ 107 k |
| 28  44 , 60 < 76 L 92 \ 108 l |
| 29  45 - 61 = 77 M 93 ] 109 m |
| 30 * 46 . 62 > 78 N 94 ^ 110 n |
| 31 * 47 / 63 ? 79 O 95 _ 111 o |
+\\------------------------------------------------\\+
| [ Ok ] [ 000-127 ] [ 128-255 ] [ Cancel ] |
+\\------------------------------------------------\\+

This command shows the IBM ASCII chart over two pages. From here you can select hard-to-input characters to insert into the file being edited. Characters like ASCII 16 are particularly difficult to enter manually as the BIOS intercepts it and turns the printer re-direction on and off, causeing strange problems.




Memory Useage (19/15)
Shift-F12

+---------- Editor Specs ----------+
| |
| Memory available: 157440 bytes |
| Edit buffer free: 64117 bytes |
| Edit buffer size: 65280 bytes |
| |
+----------------------------------+
| [ Ok ] |
+----------------------------------+

This is a simple display, really only useful to the author, showing the internal numbers for free memory.




Things To Know (19/16)

This editor will auto-translate text files from the Macintosh world, Unix, and one form of PC Unicode. Unicode is a double-byte format typically with a two byte header signature. The Macintosh uses only a as a line delimiter, and Unix uses only the delimiter. Both will be treated as a DOS delimiter . As well, you can save back into any one of three formats: DOS, Mac & Unix.

The editor has two modes of operation, Qedit (by Semware) and the Norton Editor. The default mode is Qedit, but by changing the switch "Use Norton Editor keys" on the Editors page of the Configuration window (or the Editor config below), you can enable Norton Editor mode. I emulate most functions of both editors, with some subtle differences.

There is an Editor configuration window on ALT-F11 (SHIFT-F5 in Norton Editor mode)



The following only applies to Qedit mode:

There are two different ways to copy tagged text. One is the temporary clipboard, used when you do a ALT-C copy or a ALT-M move block. It copies the information into a temorary area, removes it from the editor text space if its moving it, and re-inserts it where you want it.

The second is the common clipboard. You can copy a tagged block using the KEYPAD +, cut a tagged block using KEYPAD -, or paste a block into the document with a KEYPAD *. Information copies to the common clipboard is available to all of the other internal editors.

If you need a special ASCII character (one that you cannot enter using the ALT-keypad combinations), you can call up the ASCII chart on F12. It is split into two sections, the range from $00 to $7F, and $80 to $FF. Select the page you want and click on the character you want, as many times as you want, since the window does not go away on its own. When you are finished with the chart, just ESC (or cancel) the window.




Copy/Append/Cut to Clipboard (19/17)
Keypad +, -

Press Keypad + to copy tagged text into the clipboard. This will overwrite any existing data in the clipboard.

Press ALT Keypad + to cut the tagged text and append it to the exising text in the clipboard.

Press Keypad - to cut the tagged text and paste it into the clipboard. This operation overwrites any existing text in the clipboard.




Paste from Clipboard (19/18)
Keypad *

This command pastes the information from the clipboard into the document at the present cursor location. If the data is in text format, then it will simply be pasted in to the document. If it is in HEX or DIR format then you will see the Paste Other dialog box, covered in another help topic.




Delete Text (19/19)
Popup Menu

This is a menu-only shortcut to simply delete the selected text, without disturbing the contents of the clipboard. You can still use the Undo command to bring the deleted text back.




'Go to' Shortcuts (19/20)
Alt F1-F4

Most of the full-screen functions have shortcuts assigned to the Alt F1-F4 keys. They provide quick access to some closely-related functions.

From the text editor, you can jump to the Viewer (Alt-F1), Print (Alt-F2), Basic Unlister (Alt-F3) or 6502 Disassembler (Alt-F4) Viewer Print Unlister Disassembler.




Clear Clipboard (19/21)
Alt-Z

Simply clears out the contents of the clipboard, nothing more. This frees up the memory allocated to the clipboard, reducing memory fragementation.




Copy/Move Tagged Block (19/22)
Alt C, M

Tag an area you want to move, position the cursor where you want the tagged block to go, and press ALT-C (to Copy) or ALT-M (Move) to complete the operation. If you used the mouse to select the text, select the appropriate command from the pop-up menu.




Line Operations (19/23)
F2, F3, Ctrl-K

F2 - Delete the line the cursor is on.

F3 - Insert a blank line, and push the present line down

Ctrl-K - Delete everything to the right of the cursor




Tag Operations (19/24)
F7, F8

To start tagging an area of text, press F7 (for the starting boundary) or F8 (for the ending boundary). You can start with either boundary, and tag backwards or forwards. Move the cursor to the end of the block to tag and press F8 (for a forwards tag) or F7 (for a backwards tag).

If you want to change the size of a tagged area, move the cursor to the needed location. If the cursor is before the tagged area, press F7 to set a new starting marker. If it is after the tagged area, press F8 to set a new ending marker.

If you want to turn of the tagging, press F7, then F8. This sets the starting and ending markers to the same location, which removes the tagging.




Format Paragraph (19/25)
Alt-B

This formats a block of text so that it follows the Block Format Line Width and Justify Paragraph settings in the Text Editor Configuration window.

The formatting will start from where the cursor is, and not from the beginning of the paragraph. Formatting will end where a blank line exists.

If you want a paragraph to be indented, then indent the first and second lines of the paragraph.

If you have a bulleted list following the block being formatted, make sure to leave a blank line between the paragraph and the list otherwise the list will become part of the paragraph.




Undo (19/26)
Alt-U

All text that gets deleted on a block or a line basis gets stored in an UNDO buffer. This function will insert the deleted text on a line by line basis back into the document at the cursor position.

Any text that was deleted by the BACKSPACE or DELETE keys is not stored in this buffer, and is not remembered.




Unicode Conversion (19/27)

Before the text file is opened for editing, it will be examined to see if it fits the Unicode profile that 64COPY supports. Unicode is a double-byte storage method, meaning (simply put) instead of one byte for the letter 'A' ($41), it is now stored using a byte pair ($41, $00, or ASCII/00).

64COPY only supports one type of Unicode file. The header signature $FF/$FE is optional, but it must be an even file length (divisible by two), and every other byte must be $00. If the file fits this profile, it is assumed to be in Unicode format and converted to standard ASCII before editing.




File Errors (19/28)

The text editor has encountered an error with the file being edited. Either it is too large for the editor (bigger than 64kB) or it contains line which are longer than 999 characters.

In the event of the first problem, the only the portion of the file will be loaded that fits into memory. In the event of the second error, line lines will be truncated at 999 bytes, and a new line marker inserted.




New File (19/29)

If you need to start a new file, then select this. If there are any edits to the existing document, you will asked if they should be saved first. The editor will then be restarted with no document selected.



Back to index

Drive Information (20/0)
Ctrl-L

Here we can display the disk's serial#, volume label and file system used. It also shows disk space useage, both free and used, as well as the default cluster size.

+----------- Drive D: Info ------------+
| |
| Serial#: 2962-1201 |
| Volume Label: WD1 |
| File System: FAT16 |
| |
| Used: 460,521,472 bytes (23.03%) |
| |
| Free: 1,539,571,712 bytes (76.98%) |
| |
| Total size: 2,000,093,184 bytes |
| |
| (Cluster size: 32,768 bytes) |
|--------------------------------------|
| [ Ok ] |
+--------------------------------------+

It is possible with some disks (specifically CD-ROM's) that the values displayed in this window will seem correct, but selecting all the files and doing an ALT F5 (Display Tagged Size) will be very different. When this happens, the "%" values will be very wrong, and possibly in the negative values.



Back to index

Display/Select Command History (21/0)
Alt-F8

Here we can display the last 15 commands issued on the 64COPY command line. You can select any of the commands with either the RETURN key, or double-clicking on it with the mouse to re-execute them. Pressing the DEL key will remove them, one at a time, from the list. Using CTRL-ENTER will paste the command to the command line, but will not execute it.

+---- Recall History ----+
| |
| 1-cc FILES.C |
| 2-q FILES.C |
| |
+------------------------+

When there are no commands in the History, you will get a window with no selectable entries.

+---- Recall History ----+
| |
| |
| |
+------------------------+



Back to index

Change Disk/Tape Image Labels (22/0)
Shift-F10

Here we can change the labels of either disk (D64, D71, D81 or X64) or Tape (T64) images. The window below is for a disk image. Enter the name of a disk, then the DISK ID and DOS VERSION if necessary.

+----- Change Disk Label ------+
| Image name ID/DOS Ver |
| KARATE 00 2A |
|------------------------------|
| [ OK ] [ Cancel ] |
+------------------------------+

This is the window for changing a tape label. Enter a new label (up to 24 characters), and hit return to change it.

+----- Change Tape Label ------+
| Image name |
| c64s demo tape_ |
|------------------------------|
| [ OK ] [ Cancel ] |
+------------------------------+



Back to index

Create New DOS Directory (23/0)
F7

Simply enter the name for the directory and hit return. If that name already exists, you will be informed with a "Can't create directory" window.

+------------------ Create New DOS Directory ------------------+
| Enter DOS directory name (with path if necessary) |
| newdir_ |
|--------------------------------------------------------------|
| [ OK ] [ Cancel ] |
+--------------------------------------------------------------+



Back to index

Create Image File (24/0)
F12

This is a universal window to create the various image formats like tape (T64), Lynx (LNX) and various disk images (D64, X64, D71, D81, D80, D82, D2M and DNP).

+------ Create New Image ------+
| |
| Select image type... |
| |
| 4 - D64 (1541 disk) |
| 7 - D71 (1571 disk) |
| 8 - D81 (1581 disk) |
| C - D2M (CMD FD2000) |
| N - DNP (CMD native) |
| 0 - D80 (8050 disk) |
| 2 - D82 (8250 disk) |
| G - G64 (GCR image) |
| X - X64 (1541 disk) |
| T - T64 (tape) |
| L - LNX (Lynx) |
+------------------------------+
| [ Ok ] [ Cancel ] |
+------------------------------+

Once you have selected the type, and hit enter to select, you are presented with another dialog asking for a filename and image particulars.




Create D64 Image (24/1)
F12

Here you enter the name of the file you want to create, along with the disk label, ID's and DOS bytes. You are also asked if you want to create an extended (40 track) format, what type of extended disk, and append the error byte information. You can also select to format with the original format pattern that the 1541 used ($4B 01 01...) and whether to format the disk for use in GEOS. Type in the name, select your creation options, and hit return. The file is created as you specified.

+---------------------- Create D64 Image ----------------------+
| Enter DOS image name (with path if necessary) |
| sample.d64 |
| Label:d64 image IDs:40 2a |
|-Image Options------------------------------------------------|
| [ ] Use 40 track format ----+--> (*) Use Speed DOS format |
| [ ] Append error bytes +--> ( ) Use Dolphin DOS format |
| [ ] Use $4B $01 format +--> ( ) Use ProLogic DOS format |
| [ ] Format as a GEOS disk |
|--------------------------------------------------------------|
| [ Ok ] [ Cancel ] |
+--------------------------------------------------------------+




Create T64 Image (24/2)
F12

If you selected the T64 filetype, the dialog box will include an entry field for the T64 directory size.

+---------------------- Create T64 Image ----------------------+
| Enter DOS image name (with path if necessary) |
| sample.t64_ |
|-Image Options------------------------------------------------|
| T64 directory size:90 |
|--------------------------------------------------------------|
| [ OK ] [ Cancel ] |
+--------------------------------------------------------------+

Although the program allows you to work with T64 images of up to 799 entries, the C64s emulator will only read the first 64 (and possibly less). This makes the creation of large images (greater than 64) basically useless, but you do have the ability to store large numbers of files if you need to.

Still on the topic of T64's (and this applies to LNX's as well), deleting entries at the beginning of the file takes a longer amount of time than deleting from the end, since all the entries after it must be moved back overtop of the space the deleted file occupied. With a file of several megabytes, and deleting several entries at once, this could take some time. Consider yourself warned!




Create LNX Image (24/3)
F12

If you select LNX, an empty image is created, one which is a multiple of 254 bytes long * the specified directory block size. It contains the BASIC header, LNX header, but no files. LNX files are expandable, that is they can be added to without running out of directory space (within practical limits of course!) As you add files to an LNX, the central directory will be expanded as needed. The dialog box for the creation of X64's and LNX's are exactly the same.

+---------------------- Create LNX Image ----------------------+
| Enter DOS image name (with path if necessary) |
| sample.lnx_ |
|-Image Options------------------------------------------------|
| LNX directory block size:1 |
|--------------------------------------------------------------|
| [ OK ] [ Cancel ] |
+--------------------------------------------------------------+




Create D71/D81 Image (24/4)
F12

If you selected the D71 or D81 type, you have the options of adding the error bytes to the image for formatting the disk for GEOS. You can also enter the disk label, ID's and DOS version.

+---------------------- Create D71 Image ----------------------+
| Enter DOS image name (with path if necessary) |
| sample.d71_ |
| Label:d71 image IDs:40 2a |
|-Image Options------------------------------------------------|
| [ ] Append error bytes |
| [ ] Format as a GEOS disk |
|--------------------------------------------------------------|
| [ OK ] [ Cancel ] |
+--------------------------------------------------------------+




Create D2M Image (24/5)
F12

If you selected the D2M type, you also have the option to create a native partition when the D2M is created.

+---------------------- Create D2M Image ----------------------+
| Enter DOS image name (with path if necessary) |
| sample.d2m |
| Partition name:sample partition |
| Label:d2m image IDs:1p 1h |
|-Image Options------------------------------------------------|
| [x] Create native partition of 3200 sectors. |
| [ ] Format as a GEOS disk |
|--------------------------------------------------------------|
| [ Ok ] [ Cancel ] |
+--------------------------------------------------------------+

Without some partition (like the native partition) on the disk, you couldn't do much with the image. Note that the size of the native partition is entered in 256-byte sectors rather than FD2000 system blocks which are 512-byte sectors. This is done because all other disk related displays and functions work on 256-byte sectors so this is consistent. The above example of 3200 sectors is half of the entire D2M disk, 800Kb, or the size of a D81 (1581) disk image.




Create X64 Image (24/6)
F12

Here you enter the name of the file you want to create, along with the image label, ID's and DOS version. The file is created as you specified. You can select to format the image with the original format pattern that the 1541 used ($4B 01 01...) and/or format the disk for use in GEOS.

+---------------------- Create X64 Image ----------------------+
| Enter DOS filename (with path if necessary) |
| sample.d64_ |
| Label:d64 image IDs:40 2a |
|-Image Options------------------------------------------------|
| [ ] Use $4B 01 format |
| [ ] Format as a GEOS disk |
|--------------------------------------------------------------|
| [ OK ] [ Cancel ] |
+--------------------------------------------------------------+




Create G64 Image (24/7)
F12

Here you enter the name of the file you want to create, along with the image label, ID's and DOS version. You are also asked if you want to create an extended (40 track) format, what type of extended disk, and whether to format with the original format pattern that the 1541 used ($4B 01 01...). Type in the name, select the type of extended DOS, and hit return. The file is created as you specified.

The G64 image created is compatible with a D64 image, therefore no half-tracks can be created, and only 35 or 40 track images are created.

+---------------------- Create G64 Image ----------------------+
| Enter DOS image name (with path if necessary) |
| sample.d64_ |
| Label:d64 image IDs:40 2a |
|-Image Options------------------------------------------------|
| [x] Use 40 track format ----+--> (*) Use Speed DOS format |
| [ ] Use $4B 01 format +--> ( ) Use Dolphin DOS format |
| +--> ( ) Use ProLogic DOS format |
|--------------------------------------------------------------|
| [ OK ] [ Cancel ] |
+--------------------------------------------------------------+




Create D80/D82 Image (24/8)
F12

If you selected the D80 or D82 type, you only have the option of adding the error bytes to the image. You can also enter the image label, ID's and DOS version.

+---------------------- Create D8x Image ----------------------+
| Enter DOS image name (with path if necessary) |
| sample.d8x_ |
| Label:d81 image IDs:40 2c |
|-Image Options------------------------------------------------|
| [ ] Append error bytes |
|--------------------------------------------------------------|
| [ OK ] [ Cancel ] |
+--------------------------------------------------------------+




Create DNP (CMD native) Image (24/9)
F12

If you select the DNP type, you can also specify the size of the image in tracks (at 256 sectors per track) and whether to format the image for use in GEOS.

+----------------------- Create DNP Image -----------------------+
| Enter DOS image name (with path if necessary) |
| sample.dnp |
| Label:dnp image IDs:1p 1h |
|-Image Options--------------------------------------------------|
| Create a 255 -track image (256 sectors/track) |
| [ ] Format as a GEOS image |
|----------------------------------------------------------------|
| [ Ok ] [ Cancel ] |
+----------------------------------------------------------------+



Back to index

Read Images, Overview (25/0)

Reading the central directory of an image file is usually a silent process, it just happens. Each image type, be it disk, T64 or CPK has a separate routine to read the directory into memory before it is displayed. Unless an error is detected, you will simply get the display of the image contents in the panel.




Read Images, Damaged Directory (25/1)

+---------------------- Attention! ----------------------+
| |
| The disk central directory is damaged. |
| There are too many files for a normal directory. |
| |
| Also, the disk central directory is not all stored |
| on the normal directory track. This is not a supported |
| option for this image type, so proceed with caution! |
| |
|--------------------------------------------------------|
| [ Ok ] |
+--------------------------------------------------------+

All the routines that read the directories of images can detect and show errors. The above error window is but one of many errors you could receive when reading an image.

Most of the time, there's very little you can do but read the details and acknowledge the window. Just remember that modifying an image with known issues can cause more problems.




Read Images, 40 Tracks Disks (25/2)

When attempting to enter an extended 40-track D64 image, and 64COPY cannot make an accurate determination of what type of extended DOS was used to create the image, this is the dialog that comes up.

+------ Select D64 DOS Type -------+
| 64COPY cannot determine the DOS |
| type of this image. Select the |
| one which is correct... |

If the switch to auto-detect the extended D64 disk type is not enabled (and it is not by default), then the beginning text changes to this:

+------ Select D64 DOS Type -------+
| Extended D64 DOS auto-detect is |
| not enabled. Select the DOS type |
| which is correct... |



The rest of the dialog box is still the same.

|                                  |
| 1- Speed DOS ( 15) |
| 2- Dolphin DOS ( 14) |
| 3- ProLogic DOS (-13) |
| |
| [ ] Try to auto-detect DOS type |
| |
+----------------------------------+
| [ Ok ] [ Cancel ] |
+----------------------------------+

The good news is that you do not have to guess what type of DOS to choose. The most likely candidate will be hilited first. In the above example, option 1- Speed DOS is selected because it has the highest weight number following it.

The number in brackets (15) or (-13) following the DOS type is the weight that my detection algorithm calculated for the likelihood that this is the correct DOS type, with the higher positive number being the most likely option. Negative numbered options should likely never be chosen.

If you don't want to be bothered by this dialog anymore, check the option Try to auto-detect DOS type. Once you set this, the only time you will see this dialog is when there is more than one DOS type with the same weight number and 64COPY can't decide between them.




Read Images, Unusual Sizes (25/3)

This message will come up when attempting to open a disk image that doesn't match any pre-determined size. Working with such images can cause problems.

+------------------------- Attention! -------------------------+
| |
| This appears to be a non-standard Disk image (D64/71/81/X64) |
| because the file size is unusual. Be careful when working |
| with this image as severe data corruption could happen! |
| |
|--------------------------------------------------------------|
| [ Ok ] |
+--------------------------------------------------------------+




Read Images, Damaged Image (25/4)

This message will come up with the disk central directory doesn't seem to be from a proper disk image.

+----------------------- Attention! -----------------------+
| |
| The disk directory is damaged! (Is this a valid image?) |
| Run CheckDISK to try to correct the problems. |
| |
|----------------------------------------------------------|
| [ Ok ] |
+----------------------------------------------------------+




Read Images, Write Protected (25/5)

This message will come up when a file can only be opened in read-only mode. This could be due to it being locked, or active by another process.

+---------- Attention! ----------+
| |
| File can't be modified. |
| It is open in read-only mode! |
| |
|--------------------------------|
| [ Ok ] |
+--------------------------------+




Read Images, Faulty ZipCode Image (25/6)

+-------- Attention! --------+
| |
| Unable to decode ZipCode! |
| Track value out of range. |
| Problem file: "1!4000_" |
| |
|----------------------------|
| [ Ok ] |
+----------------------------+

This error, and other similar ones, comes up when reading a faulty ZipCode Disk or ZipCode File image. The entire file is checked to find out if it can be properly opened first. If not, you can't open it directly in the panel but could still possibly convert it to D64 using the Convert (F11) function.




Read Images, PRIMO disk images (25/7)

+--------------------- Attention! ---------------------+
| |
| This appears to be a PRIMO disk image. |
| |
| Please visit http://primo.homeserver.hu for info |
| and/or send the D64 image to viktor.varga@gmail.com |
| |
|------------------------------------------------------|
| [ Ok ] |
+------------------------------------------------------+

This message should only come up when a PRIMO disk image is detected. The PRIMO was a Hungarian Z80-based computer that used the 1541 drive as its storage. The disk images are rare, and one person, Viktor Varga, asked me to include detection of Primo disk images to help track and preserve these images.



Back to index

Display Opening "Welcome" Banner (26/0)
Shift-F12

Including the Welcome... window was a blatant form of advertising on my part, but I wrote the program so I am entitled to. However, even I get tired of seeing my name when the program starts, so I included several ways to prevent the window from coming up.

+------------- Welcome To... --------------+
| |
| 64COPY Vx.xx (c) 1994-2008 |
| Built on Dec 10, 2008 |
| |
| Written by Peter Schepers |
| http://www.64copy.com |
| (Standard disclaimers apply) |
| |
| Please report bugs/enhancements to |
| schepers@ist.uwaterloo.ca |
| |
| 274176 bytes and 14 windows free |
| 0 file handles used |
| Long filename compatible OS detected |
| (program execution logging enabled) |
+------------------------------------------+

One is in the Configuration window, on the Miscellaneous page. Un-checking the option Show initial 'Welcome...' box will disable the window on startup. The second is by using a command-line switch when starting the program. If you include the /Q or /QUIET switch (case doesn't matter), the window will not be displayed even if the configuration setting says to display it.

In the above display, the entire bottom section of the window (from beneath the email address down) is diagnostic information, something which can be useful for debugging, but is likely of no interest to the typical user. If the number of windows ever goes below 14 or the file handles used goes above 0, something is wrong and this problem should be reported to the author.

I also included an "auto-detect" for Windows long filename compatability. This is not useful, except to see if the program can detect whether LFN useage is possible.



Back to index

Print Files (27/0)
Ctrl-F3

Here we can print files, either in TEXT mode, or in HEX dump mode.

+-------------- Print Files ---------------+
| |
| "TODO.DOC" selected. |
| |
| Print this file in Text or Hex mode? |
|------------------------------------------|
| [ Text ] [ Hex ] [ Cancel ] |
+------------------------------------------+

Text mode will simply send the file out to the printer with no character translation. If the file is not a TEXT file, you will end up with a very confused printer, and some unreadable printout.

HEX mode will produce a HEX dump, similar to that used by the internal clipboard.



00: 44 57 42 20 31 34 20 0D 4D 55 53 49 43 20... DWBú14úúMUSICúSE
10: 4C 45 43 54 4F 52 0D 50 0D 20 34 36 30 36... LECTORúPúú46069ú
20: 0D 31 30 30 31 20 4C 45 54 54 45 52 20 2D... ú1001úLETTERú-V-
30: 0D 50 0D 20 32 38 38 30 37 20 0D 4E 45 57... úPúú28807úúNEWúM
40: 41 49 4C 2F 44 44 0D 50 0D 20 37 33 38 34... AIL/DDúPúú7384úú
50: 4A 41 43 4B 20 54 48 45 20 4E 49 50 50 45... JACKúTHEúNIPPERú
60: 50 0D 20 34 38 35 36 37 20 0D 54 55 52 4E... Púú48567úúTURNER
70: 20 49 49 0D 50 0D 20 31 30 39 31 33 20 0D... úIIúPúú10913úúSC



Back to index

Copy/Move/Rename Files (28/0)

The Copy, Move and Rename function is very powerful and complicated. Copy is determined by pressing the F5 key. Move (F6) and Rename are a little more difficult to separate.

All the subtopics in this topic deal with these.




Copying files (28/1)
F5

Here we can copy files and directories to other directories and drives. Select the files you want to copy, press F5, and, if you need to, change the destination location by typing into the line in the window.

+------------------------- Copy Files -------------------------+
| Copy "PRINT.C" to... |
| D:\PETE\64COPY\SAMPLES\PRINT.C_ |
| [ ] Calculate size of selected files |
| [ ] Retry read on error, 1 times max. |
|--------------------------------------------------------------|
| [ ] Log encountered disk errors to file |
| Log Path:c:\copylog.txt |
|--------------------------------------------------------------|
| [ OK ] [ Cancel ] |
+--------------------------------------------------------------+

Enabling Calculate size of selected files makes the program figure out the size (in bytes) of all the tagged files before anything is actually copied/moved. This is useful for knowing how much data is actually being worked on.

Enabling the retry read on error forces the program to attempt to re-read a file if a read error occurs, up to the specified number of times. This could help in recovering some damaged files which would otherwise not be recovered.

If you click on the Log disk errors button, you must also enter a valid path/filename for the LOG file. You can choose to use the default path already in the entry box, or one pointing to another location. Any errors encountered would be logged to this file instead of an error window showing up on screen.

Typically, if you have selected the Keep date/time on file copy option on the Config/Other page, then the directory and file times are also preserved, but if you copy to a remote drive (i.e. not local to your machine) then this no longer happens. In order to preserve directory dates I must be able to manipulate the system clock, something which can't be done on a remote machine.

+-------------------------- Copying... --------------------------+
| Source: D:\PETE\64COPY\TEMP\TODO.DOC |
| Dest: E:\TEMP\TODO.DOC |
| File: 28 of 32 Size: 27,989 |
| Copied: 200,335 To Copy: 243,605 Time Est: ??:??:?? |
| # Skipped: 0 Errors: 0 Retries: 0 Max Try: 10 |
| ****** |
| 0%----------------------------50%-------------------------100% |
| *************************************************** |
+----------------------------------------------------------------+

This is the standard progress window showing what file is being copied, where it is getting copied to, the number of files being copied, the file size of the file being copied, and how far into the copy we are on the progress bar graphs.




Renaming or Moving Files (28/2)
F6

This key has multiple uses... you can move the selected files over to another location, or you can rename a single file. If you have selected several files, the program assumes you are moving, and renaming will be disabled.

+------------------------- Move Files -------------------------+
| Move 1 tagged item to... |
| D:\PETE\64COPY\SAMPLES\PRINT.C_ |
| [ ] Calculate size of selected files |
| [ ] Retry read on error, 1 times max. |
|--------------------------------------------------------------|
| [ ] Log encountered disk errors to file |
| Log Path:c:\copylog.txt |
|--------------------------------------------------------------|
| [ OK ] [ Cancel ] |
+--------------------------------------------------------------+

Enabling Calculate size of selected files makes the program figure out the size (in bytes) of all the tagged files before anything is actually copied/moved. This is useful for knowing how much data is actually being worked on.

Enabling the retry read on error forces the program to attempt to re-read a file if a read error occurs, up to the specified number of times. This could help in recovering some damaged files which would otherwise not be recovered.



If you have not selected any files, the program has to determine what you are attempting to do. If you enter the filename, with no destination path, then it assumes you are renaming. At this point, the options for calculate and retry don't apply.

+------------------------- Move Files -------------------------+
| Rename or Move "HELP.OBJ" to... |
| D:\PETE\64COPY\HELP.OBJ |
| [ ] Calculate size of selected files |
| [ ] Retry read on error, 1 times max. |
|--------------------------------------------------------------|
| [ ] Log encountered disk errors to file |
| Log Path:c:\copylog.txt |
|--------------------------------------------------------------|
| [ OK ] [ Cancel ] |
+--------------------------------------------------------------+

If you click on the Log encountered disk errors button, you must also enter a valid LOG path/filename for the LOG file. Any errors encountered would be logged to this file instead of an error window showing up on screen.




Log Error (28/3)

+---------------- Attention! ----------------+
| |
| You have entered an invalid log file/path. |
| Please re-enter a new one. |
| "C:\PETE\64CO\COPYLOG.TXT" |
| |
|--------------------------------------------|
| [ Ok ] |
+--------------------------------------------+

When you choose the Logging feature, you must enter a valid log file path as well. If it is determined that the path is invalid because the log file can't be written, you will be required to enter a new log path before continuing.




Same Directory error (28/4)

+--------------- Attention! ---------------+
| |
| Can't copy/move into the same directory! |
| |
|------------------------------------------|
| [ Ok ] |
+------------------------------------------+

The copy/move routine detects when the source and destination drives and directories are the same, and puts up the error window above. You cannot copy into the same directory without renaming the file in the opening copy/move dialog box first.




Directory Creation error (28/5)

+---------------------- Attention! ----------------------+
| |
| Can't create directory (already exists): "sampledir" ? |
| |
|--------------------------------------------------------|
| [ Ok ] [ Cancel ] |
+--------------------------------------------------------+

If you are copying or moving a directory structure, but one the directory names cannot be created at the destination, this error comes up.




File Move error (28/6)

+-------- Attention! --------+
| |
| Error doing MOVE! |
| |
|----------------------------|
| [ Ok ] |
+----------------------------+

This window only comes up when Moving files on the same disk. This is a special case because the files do not need to be copied and deleted but instead are renamed from one directory to another which is much faster. If some file won't rename to the new location, you get the above error.




Destination Out Of Space (28/7)

+----------------- Attention! -----------------+
| |
| Destination disk may have run out of space. |
| (Press ESC to cancel copy/move) |
| |
|----------------------------------------------|
| [ Ok ] [ Cancel ] |
+----------------------------------------------+

This window comes up only when the destination appears to have run out of space. Free up some space on the destination to allow the copy/move to complete.




Other errors (28/8)

+------------------ Attention! ------------------+
| |
| Unable to open/read source file: sourcefil.ext |
| |
|------------------------------------------------|
| [ Ok ] [ Cancel ] |
+------------------------------------------------+

There are some errors which can occur during a copy/move, such as the above window where the source file cannot be read. Other errors include Unable to open/write destination file, or Too many subdirectories or Can't change to directory.




Directory Delete error (28/9)

+-------- Attention! --------+
| |
| Can't delete directory! |
| |
|----------------------------|
| [ Ok ] [ Cancel ] |
+----------------------------+

Some directory or subdirectory in the path being copied or moved cannot be deleted for unknown reasons.




Delete File error (28/10)

+-------- Attention! --------+
| |
| Can't delete file... |
| "sample.ext" |
| |
|----------------------------|
| [ Ok ] [ Cancel ] |
+----------------------------+

When moving files, the actual process is copy then delete the original. It is possible that a source file cannot be deleted after it have been copied, so the above error could come up.




Files Lost error (28/11)

+---------------- Attention! ----------------+
| |
| Disk errors occurred during the copy/move. |
| Some files were probably lost! |
| |
| (2 files, 45775 bytes) |
| |
|--------------------------------------------|
| [ Ok ] |
+--------------------------------------------+

This window only comes up when files were lost due to read or write errors during a copy/move. It is for information only.




Filename Collision (Copy) (28/12)

+---------------------- File Already Exists! --------------------+
| |
| "0028_015.TOP" |
| already exists. Continue anyways? |
| |
|----------------------------------------------------------------|
| [ cOpy ] [ copy All ] [ Skip ] [ sKip all ] [ Ren ] [ Cancel ] |
+----------------------------------------------------------------+

Here we have the dialog box which comes up when a filename collision occurs during a Copy. We can choose many different options, such as cOpy this file, or copy All to copy the rest of the files without any more questions. We can also Skip this file, or sKip all to skip all remaining file collisions. You can also rename files from here with the Rename button.




Filename Collision (Move) (28/13)

+--------------------- File Already Exists! ---------------------+
| |
| "0028_015.TOP" |
| already exists. Continue anyways? |
| |
|----------------------------------------------------------------|
| [ mOve ] [ move All ] [ Skip ] [ sKip all ] [ Ren ] [ Cancel ] |
+----------------------------------------------------------------+

Here we have the dialog box which comes up when a filename collision occurs during a Move. We can choose many different options, such as mOve this file, or move All to copy the rest of the files without any more questions. We can also Skip this file, or sKip all to skip all remaining file collisions. You can also rename files from here with the Rename button.




Change Filename (28/15)

+---------- Change File Name ----------+
| Enter a different filename... |
| 0028_000.TOP |
|--------------------------------------|
| [ Ok ] [ Cancel ] |
+--------------------------------------+

If you choose to rename a file during a filename collision, this is the window you yet. Simply type in the new filename/extension to rename the file. Pressing ESC or selecting Cancel will stop the rename.



Back to index

Rename Files (29/0)
Shift-F6

This is an alternative to using the Move/Rename (F6) function to rename files. You can't use F6 to rename files inside of images (i.e. inside a D64), so I included a short-cut method to only do renaming. From here, you can rename any file/directory, even the files inside images. Tagged files are ignored, only the filename under the hilite bar is used.

+------------------------ Change Name -------------------------+
| Rename the C64 file "atomic handball" to... |
| (check the case of the name!) |
| atomic handball_ |
|--------------------------------------------------------------|
| [ OK ] [ Cancel ] |
+--------------------------------------------------------------+



Back to index

Insert/Overwrite Mode (30/0)
fff

For the main panel command-line, the Text Editor and any entry area (text, hexadecimal or numeric) in a dialog box, you can change the editing mode between INSERT and OVERWRITE mode.

For all modes, ALT-INSERT will toggle it.

For the Text Editor, use the INSERT key to toggle the mode.

For the command-line, when the panels are visible, use the ALT-INSERT key. When the panels are hidden, then the INSERT key will work.

For any entry area in a dialog box, the INSERT key will toggle the mode.

When the mode changes, the cursor height will change as well. A short 1 line cursor is INSERT mode, and a tall full-height cursor is OVERWRITE mode.

The default for the Text Editor and dialog entry is INSERT mode, and defaults everytime a new dialog is displayed or a new file is edited.

The default for the command-line is also INSERT, but usually only gets defaulted when the program starts. You can force it using ESC, which will clear out the command-line and default the mode.

Back to index

Change Panel Drive (31/0)
Alt-F1, Alt-F2

Type in the letter of the drive you want to change to, and you will be brought there.

+----------- Change Drive ------------+
| Enter xxxx panel drive: |
| A B C D E F M O W X Y |
+-------------------------------------+

Just before this window is displayed, the available drive list is checked and updated. If you are running in a networked environment, drive letters can (and usually will) change. This way, the program is always aware of what drives are available.

If a drive shows as existing, but is offline (e.g. it is a network mounted drive, but the server is down), then selecting it here might cause the program to hang for a time. Usually, after a time, the OS will timeout and you will be told the drive is unreadable. It is possible that the OS will never realize the drive is inaccessible. When this happens, the program is hung, and cannot be exited properly.

+---------- Change Drive ----------+
| |
| Drive I: doesn't exist! |
| |
| Enter right panel drive: |
| A C D E F G N P R T Y Z |
+----------------------------------+

If an error occurs trying to read the drive, the Change Drive panel will also include an error message preceeding the drive letter list informing you of what happened.



Back to index

Search For Files (32/0)
Alt-F7

This function lets you search for filenames on any drive. You can type in the file pattern you want to find (i.e. FILE*.D64"). You can also change what drives to search by picking from the active drive list. The drives you select are stored in the INI for future use.

+----------------------- File Name Search -----------------------+
| Enter search string (use * and ? as wildcards, i.e. de*.*) |
| file*.*_ |
|----------------------------------------------------------------|
| Select search drives... |
| [ ] A [ ] B [x] C [x] D [x] E [x] F [x] G [x] M |
| [x] O [x] X [x] Y |
|----------------------------------------------------------------|
| [ OK ] [ Reset] [ Cancel ] |
+----------------------------------------------------------------+

Press the Reset button to clear the selections from the listed search drive letters.



Back to index

Filename Completion (33/0)
Tab, Alt-Tab, Ctrl-Tab, Shift-Tab

This is a little-used function, similar to that offered by DOSED. The results will vary, depending on whether the panels are visible or not.

Panels ON - If you type in a portion of a filename, press ALT-TAB, and only one filename is found to match the partial, it will be appended to the command line.

Panels OFF - If there is more than one match to the partial, then you will be given a list of the filenames, to narrow down the search.

Note: - Under Windows95, ALT-TAB is a reserved key, used for task switching, and will be trapped by the OS. Use the CTRL-TAB key combination instead.



Back to index

Unlist Basic Program (34/0)
Shift-F3

This is a fairly simple routine, only allowing you to dump the BASIC file to screen or file. It takes into account most of the known list-hiding techniques, so very little should cause it problems. You can only select one file at a time to Unlist, any files you have tagged are ignored. The filename under the hilite bar will be the one that is used.

+----------- DeTokenize Basic V2.0 ------------+
| |
| "Delall.exe" selected. |
| Where do you want to DeTokenize this file? |
| |
|----------------------------------------------|
| [ Screen ] [ File ] [ Cancel ] |
+----------------------------------------------+

Selecting "File", you will be asked for a filename to dump the resultant text into.

+--------------------- UnList BASIC File ----------------------+
| Enter filename for BASIC output... |
| D:\PETE\64COPY\SAMPLES1\D.BAS_ |
|--------------------------------------------------------------|
| [ OK ] [ Cancel ] |
+--------------------------------------------------------------+

If you select "Screen", the code will be dumped to the window, pausing after every page, giving you a chance to read it. You can use several keys to move the listing forward, but pressing PAGE DOWN will cause the screen to clear and redraw (not scroll), making the display faster.

If the program listing appears to have finished, but there is still more to read in the file, then you will be asked if you want to continue the listing.

+----------------- Finished Listing? ------------------+
| |
| The BASIC listing ends before the file does. Do you |
| want me to try to decode the rest of the file? |
| |
+------------------------------------------------------+
| [ Yes ] [ No ] |
+------------------------------------------------------+

It is possible that the program being listed uses some elaborate list-hiding method that I haven't covered, so you can try to display any BASIC code past the normal end-of-file. There are several known methods of hiding listings with a small ML loader. Listing the code after the end-of-program marker will show this code.



Back to index

User Menu (35/0)
F2

Here is where you can define a shortcut for the command-line to execute. Instead of having to enter a command over and over, you can define it here, and then simply select it, either by hitting RETURN on it, or double-clicking with the mouse. Using CTRL-RETURN will paste the command to the command line, but will not execute it.

64COPY does not use the same method that most other Norton Commander clones use, namely text-based .MNU files to hold the menu structure. Instead, you enter the command into one of the numbered areas of the dialog box, and when you quit the program, the commands are stored in the .MNU file by the program.

+---------------- User Menu -----------------+
| |
| 0-pkzip !.zip *.* |
| 1- |
| 2- |
| 3- |
| 4- |
| 5- |
| 6- |
| 7- |
| 8- |
| 9- |
| |
+--------------------------------------------+
| [ Ok ] [ Edit ] [ Delete ] [ Cancel ] |
+--------------------------------------------+

Several ! commands are allowed. These, when used, will expand out to be the following:

!.! - Include filename under the hilite bar, with extension

! (or !F) - Include just the filename under the hilite bar, no extension

!E - Include just the file extension of the file under the hilite bar

!# - Include list of tagged files from the active panel on the command line

!@ - Include list of tagged files in the active window, if any tagged, sent in through the file 64COPY.LST, contained where 64COPY was executed from.

!A - Include active image file (i.e. BLAKHAWK.D64) if applicable

!: - Include only the drive letter (no directory path)

!\ - Include just the directory (no drive letter)

!D - Include directory of the active panel (without the ending '\' character. You must include this yourself)

!! - Include a '!' character

These options can be combined in any way you need. i.e. pkzip !.zip @!@ will do a PKZIP on the filename that the hilite bar is on but with the extension .zip instead, and include the list of tagged files from the active panel in 64COPY.LST. You can also stack the commands right next to each other like !D\!A\!.! to concatenate the active directory, active image file, and active filename (with extension) with separating '\' characters.



Back to index

File Viewer (36/0)
F3

File Viewer assigned keys:
Find ASCII string F5
Find new ASCII string ALT F5
Find HEX string F6
Find new HEX string ALT F6
Goto line number F9
Show blank spaces in lines F11
Toggle raw/text mode F12
Exit viewer F10
Text Editor ALT F1
Detokenize ALT F2
Print ALT F3
Disassemble ALT F4



Most of the functions are similar to the other editors (search, goto).

F11 will show where the blank spaces are in the document by replacing them with a "ú" (small dot) symbol. All & line delimiters combinations are shown as a "" symbol.

F12 toggles between normal TEXT mode display, and RAW mode, where the data (CR/LF, TAB) are shown as symbols, and do not format the text.

This viewer will auto-detect the type of file being viewed such as PC/DOS (), Macintosh ( only) and Unix ( only). This makes it very useful when viewing files from various sources.




File Menu (36/1)

  File                          
+------------------------------+
| go to Editor Alt-F1 |
| go to UnLister Alt-F2 |
| go to Print Alt-F3 |
| go to Disassembler Alt-F4 |
| ---------------------------- |
| eXit F10 |
+------------------------------+

Go to Editor - A shortcut which brings you directly into the Text Editor.

Go to Unlister - A shortcut which brings you directly into the Basic Unlister

Go to Print - A shortcut which brings you directly into Print Files.

Go to Disassembler - A shortcut which brings you directly into the 6502 Disassembler.

Exit - Exit the File Viewer




Find Menu (36/2)

  Find                      
+--------------------------+
| find ASCII F5 |
| find ASCII New Alt-F5 |
| ------------------------ |
| find HEX F6 |
| find HEX New Alt-F6 |
+--------------------------+

Find ASCII - Searches for a user-defined ASCII string. If a string has been previously entered, then that string will be used without asking.

Find ASCII new - Searches for a new user-defined ASCII string.

Find HEX - Searches for a user-defined HEX sequence. If a sequence has already been previously entered it will be used without asking.

Find HEX New - Searches for a new user-defined HEX sequence.




Miscellaneous Menu (36/3)

  Misc                
+--------------------+
| Go to line# F9 |
| show Blanks F11 |
| Raw mode F12 |
| ------------------ |
| Help F1 |
+--------------------+

Go to Line# - Jump to a specified line#

Show Blanks - Turns on the display of the hidden characters like line breaks, spaces, page breaks etc.

Raw Mode - Displays the file as if no line or page breaks exist. Each byte is displayed as it's ASCII character.

Help - Show help on a topic.




Goto Line# (36/4)
F9

+------ Goto Line -------+
| Enter line # ... |
| 400 |
+------------------------+

Enter the line number that you want to jump to in the file.




ASCII Search (36/5)
F5

+---------------------- Find ASCII String -----------------------+
| Enter ASCII search string... |
| |
| [ ] Case sensitive search |
|----------------------------------------------------------------|
| [ Ok ] [ Cancel ] |
+----------------------------------------------------------------+

Enter the search text in the entry area. Select Case sensitive search if you want to match the search criteria exactly as it is typed.




HEX Search (36/6)
F6

+----------------------- Find HEX String ------------------------+
| Enter HEX search string... |
| |
|----------------------------------------------------------------|
| [ Ok ] [ Cancel ] |
+----------------------------------------------------------------+

Enter the search HEX data in the entry area. Search data can be entered with or without spaces between the individual HEX values.




'Go to' Shortcuts (36/7)
Alt F1-F4

In the Text Editor, File Viewer and HEX Editor functions, these shortcut keys exist. The are meant to be a quick way of getting around between functions. For the File Viewer these are defined as:

Alt-F1: Jump to Text Editor

Alt-F2: Jump to BASIC Detokenizer

Alt-F3: Jump to Print Files

Alt-F4: Jump to 6502 Disassembler




Exit File Viewer (36/8)
F10, ESC

Exits the File Viewer. What else needs to be said?




Display Options (36/9)
F11, F12

F11 turns on/off the Show Blanks mode, showing where the spaces, line feeds, page breaks and other normally invisible formatting characters would be.

F12 turns on/off the RAW or Text mode display. Raw does no text formatting (for line feeds and page breaks).




Unicode Conversion (36/10)

Before the file is opened for viewing, it will be examined to see if it fits the Unicode profile that 64COPY supports. Unicode is a double-byte storage method, meaning (simply put) instead of one byte for the letter 'A' ($41), it is now stored using a byte pair ($41, $00, or ASCII/00).

64COPY only supports one type of Unicode file. The header signature $FF/$FE is optional, but it must have an even file length (divisible by two), and every other byte must be $00. If the file fits this profile, it is assumed to be in Unicode format and converted to standard ASCII before it is viewed.



Back to index

HEX Editor (37/0)
Alt-F4

Aside from the normal cursor keys, here are the editing functions:
Switch active window (ASCII or HEX) TAB
Alpha Edit mode F2
HEX Edit mode F3
Save file F4
Save tagged block F12
Cancel Editing/Exit Editor F10
Find ASCII string F5
Find new ASCII string ALT F5
Find HEX string F6
Find new HEX string ALT F6
Set starting tag F7
Set ending tag F8
Clear tags ALT F7
Resize tag area ALT T
Goto HEX address F9
Show blanks characters F11
Clear clipboard ALT Z
Paste from clipboard ALT V (or KEYPAD *)
Copy to Clipboard ALT C (or KEYPAD +)
Text Edit ALT F1
Detokenize ALT F2
Print ALT F3
Disassemble ALT F4
Decode GCR Sector Header ALT F12
Decode GCR Data Header ALT F11



The HEX editor is loosely based on FED, a shareware HEX editor. Most of the function keys are the same. The filesize cannot be changed (deleting sections, or adding to the end of the file), only the bytes inside can be changed.

Like the Text Editor, this editor also uses the common clipboard. ALT-Z, ALT-V and ALT-C all operate on the clipboard. Any data copied to the clipboard is available to all of the internal editors.




File Menu (37/1)

  File                          
+------------------------------+
| Save F4 |
| save Tagged F12 |
| ---------------------------- |
| go to Editor Alt-F1 |
| go to Unlister Alt-F2 |
| go to Print Alt-F3 |
| go to Disassembler Alt-F4 |
| ---------------------------- |
| eXit F10 |
+------------------------------+

Save - Save all the changes made to the file.

Save Tagged - Saves the tagged area to a new file. This is useful for extracting small pieces out of a larger file.

Go to Editor - A shortcut that brings you directly into the Text Editor.

Go to Unlister - A shortcut that brings you directly into the Basic Unlister.

Go to Print - A shortcut that brings you directly into Print Files.

Go to Disassembler - A shortbut that brings you directly into the 6502 Disassembler.

Exit - Exit the HEX Editor




Edit Menu (37/2)

  Edit                            
+--------------------------------+
| ASCII edit F2 |
| HEX edit F3 |
| ------------------------------ |
| Tag start F7 |
| tag End F8 |
| taGs off Alt-F7 |
| ------------------------------ |
| Copy to clipboard Keypad + |
| Paste from clipbrd Keypad * |
| cLear clipboard Alt-Z |
+--------------------------------+

ASCII Edit - Turns on ASCII edit mode, putting a flashing cursor in the ASCII area of the display.

HEX Edit - Turns on HEX edit mode, putting a flashing cursor in the HEX area of the display.

Tag Start - Turns on tagging mode, for hiliting of an area.

Tag End - Turns off tagging mode.

Tags Off - Clears any tagged areas and turns off Tag mode.

Copy To Clipboard - Copies the tagged area to the clipboard.

Paste From Clipboard - Paste the contents of the clipboard into the display starting at the present cursor location.

Clear Clipboard - Clears the contents of the clipboard.




Find Menu (37/3)

  Find                      
+--------------------------+
| Find ASCII F5 |
| find ASCII New Alt-F5 |
| ------------------------ |
| fInd HEX F6 |
| finD HEX new Alt-F6 |
+--------------------------+

Find ASCII - Searches for a user-defined ASCII string. If a string has been previously entered, then that string will be used without asking.

Find ASCII new - Searches for a new user-defined ASCII string.

Find HEX - Searches for a user-defined HEX sequence. If a sequence has already been previously entered it will be used without asking.

Find HEX New - Searches for a new user-defined HEX sequence.




Miscellaneous Menu (37/4)

  Misc                  
+----------------------+
| Go to address F9 |
| Show blanks F11 |
| -------------------- |
| Help F1 |
+----------------------+

Go to Address - Jumps to the user-specified HEX address.

Show Blanks - Shows the invisible characters in the ASCII display such as space, ASCII 0 and ASCII 255.

Help - Shows help on a topic.




Popup Menu (37/5)

  Tag Options            
+------------------------------+
| Copy Alt-C |
| Paste Alt-V |
| ---------------------------- |
| clear Tags Alt-F7 |
| ---------------------------- |
| decode GCR Header Alt-F11 |
| decode GCR Sector Alt-F12 |
| ---------------------------- |
| Save tagged F12 |
+------------------------------+

Copy - Copies the tagged contents to the clipboard.

Paste - Pastes the clipboard contents to the display starting at the present cursor location.

Clear Tags - Turns off tagging mode, and removes the hiliting from any tagged area.

Decode GCR Header - When viewing a GCR/G64 image, this decodes the bytes underneath the cursor to show the sector header. If the cursor location is wrong or the data being viewed is not GCR encoded, the decoded bytes will be meaningless.

Decode GCR Sector - When viewing a GCR/G64 image, this decodes the bytes underneath the cursor to show the sector data. If the cursor location is wrong or the data being viewed is not GCR encoded, the decoded bytes will be meaningless.

Save Tagged - Saves the tagged area to a new file. This is handy if you need to extract out a small part of a larger file.




Exit & Save Changes (37/6)
F10, F4, ESC

+----------- Save Changes -----------+
| |
| Save the changes made? |
| |
+------------------------------------+
| [ Yes ] [ No ] [ Cancel ] |
+------------------------------------+

This dialog will only come up when you press ESC after changes have been made. Select Yes to save the changes, No to exit the HEX editor without saving changes and Cancel to go back the HEX editor.




Goto Address (37/7)
F9

+----- Goto Address -----+
| Enter HEX address... |
| 4C30 |
+------------------------+

Enter the address (in HEX) that you want to jump to.




ASCII Search (37/8)
F5

+---------------------- Find ASCII String -----------------------+
| Enter ASCII search string... |
| dsgsfg |
| [ ] Case sensitive search |
|----------------------------------------------------------------|
| [ Ok ] [ Cancel ] |
+----------------------------------------------------------------+

Enter the search text in the entry area. Select Case sensitive search if you want to match the search criteria exactly as it is typed.




HEX Search (37/9)
F6

+----------------------- Find HEX String ------------------------+
| Enter HEX search string... |
| |
|----------------------------------------------------------------|
| [ Ok ] [ Cancel ] |
+----------------------------------------------------------------+

Enter the search HEX data in the entry area. Search data can be entered with or without spaces between the individual HEX values.




Copy to Clipboard (37/10)
Keypad +

Tag an area of data and press either ALT-C or KEYPAD-+.

+-------- Info --------+
| |
| Block copied. |
| |
+----------------------+

This box confirms that the data has been copied into the clipboard.




Paste from Clipboard (37/11)
Keypad *

Move the cursor to the starting location where you want the data in the clipboard to be pasted. Press ALT-V or Keypad-* to paste the data into the file.




Clear Clipboard (37/12)
Alt-Z

+---------- Clear Clipboard -----------+
| |
| Do you want to clear the clipboard? |
| |
+--------------------------------------+
| [ Yes ] [ No ] |
+--------------------------------------+

Select this function to clear the contents of the clipboard.




Save Tagged Block (37/13)
F12

+-------------------------- Save Block --------------------------+
| Save the tagged block (341 bytes) as... |
| sample.hex |
|----------------------------------------------------------------|
| [ Ok ] [ Cancel ] |
+----------------------------------------------------------------+

This saves the tagged area out to a new file. Enter the filename that you want to save to.




Shortcut Keys (37/14)
Alt-F1-F4

These ALT key combinations provide a quick shortcut to some other functions.

Alt-F1: Quick jumps to the Text Editor

Alt-F2: Quick jumps to the Basic Unlister

Alt-F3: Quick jumps to the Print Files

Alt-F4: Quick jumps to the 6502 Disassembler




Editing Modes (37/15)
F2/F3

By default, the HEX editor is in View mode. This prevents unwanted changes from being made by accidentally typing. You must enable the editing mode you want, either ASCII or HEX. When in view mode, there is no flashing cursor, only the red positioning cursor.

Pressing F2 enables the ASCII editing mode, and also enables a flashing cursor in the ASCII region. Simply type in what you want and it will overwrite the existing data.

Pressing F3 enables the HEX editing mode, and also enables a flashing cursor on the half of the nybble presently being edited. Simply type in the HEX values you want and they will overwrite the existing data.

Pressing ESC when in either editing mode will cancel the edit mode and revert back to View mode.




Tagging Commands (37/16)
F7/F8/Alt-F7

Pressing F7 starts the tagging area. Pressing F8 anywhere on or after the location that F7 was pressed will select what was inbetween. Pressing F7 and F8 on the same location selects only that byte. Pressing F8 on a location previous to where F7 was pressed cancels the tag.

While a tag is present, you can press F7 to reposition the beginning tag marker, or F8 to reposition the ending tag marker to change the size of the tagged area.

Pressing Alt-F7 will cancel any tag that exists.




Show Blanks (37/17)
F11

When viewing a file with a lot of blank areas like groups of blanks (ASCII 32, 00 or 255), this function replaces those blanks with an ASCII 250 character 'ú' . This allows you to see the blanks.




Decode GCR (37/18)
Alt-F11, Alt-F12

When working with GCR images like G64, it isn't easy to know what track and sector you are viewing as almost everything is in GCR format. If you know a little about the makeup of a GCR image (reading the GCR.TXT document included in the FORMATS.ZIP archive would help) then you would at least know that under normal circumstances sectors are preceeded by a SYNC mark, a sector header, another SYNC mark and the data block. By positioning the cursor on the appropriate byte you can display the decoded data to find what track and sector you are viewing.

+------ Decode GCR Sector Header ------+
| |
| This is the sector header block |
| |
| Header ID - $08 |
| Checksum - $0B |
| Sector - $0A |
| Track - $01 |
| FormatID1 - $58 |
| FormatID2 - $58 |
| Off Byte1 - $0F |
| Off Byte2 - $0F |
| |
+--------------------------------------+
| [ Ok ] |
+--------------------------------------+

This window shows the sector header block for track 1/10.



+------- Decode GCR Data Header -------+
| |
| This is the data block header |
| |
| Data ID - $07 |
| Checksum - $D0 |
| Off Byte1 - $B2 |
| Off Byte2 - $6F |
| |
+--------------------------------------+
| [ Ok ] |
+--------------------------------------+

This window shows the important data block bytes (not the data itself) for another sector. Note that this part doesn't include the track and sector as that only exists in the previous header block.



Back to index

Converting 4-pack ZipCode's to D64 (38/0)
F11

Here we can convert 4-pack ZipCode's to D64 (or X64) files. Select the ZipCode files you want to convert and press F11. If you have selected files other than ZipCode and D/X64 files, then this window will not appear, but the normal Convert Window will come up.

+---------- Convert ZipCode/D64 -----------+
| |
| "2!ALWAYS" selected. |
| Do you want to convert the items to |
| the appropriate counterparts? |
| (Press NO for main CONVERT window) |
| |
| [ ] Auto-convert filenames |
+------------------------------------------+
| [ Yes ] [ No ] [ Cancel ] |
+------------------------------------------+

Selecting "yes", you will be asked for the D64 filename that you want to create. You can change the name/directory to whatever you like. You can also specify whether to create an X64 file, rather than a D64.

+------------------- Convert ZipCode to D64 -------------------+
| Create "BLAST138.D64" from ZipCode parts: |
| D:\PETE\64COPY\Y\BLAST138.D64_ |
| [ ] Create X64 file |
|--------------------------------------------------------------|
| [ OK ] [ Cancel ] |
+--------------------------------------------------------------+



Back to index

Convert PETASCII to IBM DOS files (39/0)
Shift-F9

This function will convert PETASCII files back to IBM ASCII. Commodore PETASCII is similar to regular ASCII, but different word processors and editors stored the text in different ways, some as screen codes, some as ASCII (but backwards to normal ASCII), and some using other codes. Due to the differences, some translation is required. Four choices exist...

+------- Convert PETASCII to ASCII --------+
| |
| "FILE123.CBM" selected. |
| What was the source text format? |
| |
| 1 - Auto-detect format (default) |
| 2 - DOS Text (range $60-7F) |
| 3 - Standard PETASCII (range $40-5F) |
| 4 - Low PETASCII (range $00-1F) |
| 5 - Unicode format (double byte) |
| |
| [ ] Auto-convert filenames |
+------------------------------------------+
| [ OK ] [ Cancel ] |
+------------------------------------------+

Auto-detect format (default) - The program will analyse the text, and try to make a good quess as to its original format. As I have had many text samples to work with, I have tuned the auto-detect to have a very high accuracy rate.

DOS text - The text is found to be close enough to IBM ASCII not to warrant much translation. CR and CR/LF combinations will be removed and re-inserted, to take into account those files which only use LF as a line delimiter.

Standard PETASCII - The majority of the lower-case text exists in the range of $60 to $7F. On the C64, this is the lower case set, and the upper case characters are in the range over $80.

Low PETASCII - The text is stored as screen codes. The C64 has two different character sets, PETASCII and screen codes (pokes), and the two are very different. They cover the same characters, but they have different values. In this case, the lower-case text is mostly stored in the $00 to $1F range, with the upper case characters in the $40-5F range.

Unicode format - This DOS text format typically starts with a signature (presently only FF FE is looked for) and then each byte is a pair: ASCII & 00. I simple delete the first two signature bytes, and then skip every second byte (the 00) from there on.

The Auto-convert filenames button is there so you can select it and avoid having to hit return before each filename gets processed (assuming its not set already).



Back to index

Save Settings (40/0)
OPTION Menu

If Auto-save settings is off in the Configuration window, then any changes you make the configuration, panel sort, filter, etc will not be saved when you leave the program. This option will save the settings right away.

+-------- Save? ---------+
| |
| Save current settings? |
| |
+------------------------+
| [ Yes ] [ No ] |
+------------------------+



Back to index

Panel Options (41/0)
on the LEFT/RIGHT Menu

Each panel display can be configured separately to remove or display particular items. The window below shows the details which can be changed.

+--- Change xxxx panel display ----+
| |
| DOS Disk T64 Compr Others |
| (*) (*) (*) (*) (*) normal |
| ( ) ( ) ( ) ( ) ( ) alternate|
| |
| [x] Show file info status line |
| [x] Display long filename only |
| [x] Show "Disk Free" status line |
| |
| [ ] Show scroll bar |
| [ ] Panel visible on startup |
+----------------------------------+
| [ OK ] [ Cancel ] |
+----------------------------------+

The DOS category simply covers DOS directories and drives. In normal mode you see the file name and extention, size, creation date and time. In alternate mode you see the file name, extention, size, and the DOS attributes.

Changing specific options will either remove items from the display, or change the display completely. For example, un-checking the Show File Info and Show Disk Free will remove them from the panel listing.

The setting Display long filename only will result in most of the filename being displayed in the file status line, rather than the size date and time. This setting is dependant on the Use long filenames being set on the Config/Miscellaneous (ALT-F6) page.

With the option Show scroll bars enabled (default), a scroll bar is displayed down the right-hand side of the panel, indicating the relative position of the hilite bar to the top and bottom of the panel listing.

The option Panel visible on startup forces the panel to become visible when the program is first executed, no matter what state it was in when the program was terminated. Normally, if the panels are off when you quit, then they will not be displayed when the program is restarted. This option will override that behaviour.




DOS Alternate View (41/1)
on the LEFT/RIGHT Menu

Changing the DOS panel layout setting from normal to alternate will result in a more dramatic change, with some items no longer displayed (date and time) and some new info being displayed (file attributes).

The panel will shift from this style...

+----------- D:\PETE\64COPY ----Ñ------+
| Name Ext| Size | Date | Time *
|.. |>UP--DIR<|12-21-01|11:05a*
|ARCHIVED |>SUB-DIR<|12-21-01|11:05a*
|ASSEMBLY |>SUB-DIR<|12-21-01|11:07a*
|BACKUP |>SUB-DIR<|12-21-01|11:05a*
|CRT |>SUB-DIR<|12-21-01|11:05a*

to this style.

+----------- E:\PETE\64COPY ---Ñ-------+
| Name Ext | Size | Attr *
| .. | >UP--DIR< | *
| ARCHIVED | >SUB-DIR< | *
| ASSEMBLY | >SUB-DIR< | *
| BACKUP | >SUB-DIR< | *
| CRT | >SUB-DIR< | *




Other Alternate Views (41/2)
on the LEFT/RIGHT Menu

Changing any of the other image layout settings to alternate will change the display to be the same as a directory of a 1541, with size, name and file type only, with no panel lines.

+---- D:\PETE\64COPY\B\DD.D64 (35) ----+
| Size Name Type |
| .. DIR |
| 0 "----------------" del< |
| 31 "blast #016 /sci" prg< |
| 0 "----------------" del< |
| 165 "garfield" prg< |
| 165 "thing bounce bak" prg< |
| 164 "10" prg< |
| 32 "robin 2the rescu" prg< |
| 36 "blue moon" prg< |



Back to index

Filter settings (42/0)
LEFT/RIGHT Menu

Here we can change the rules for what files get displayed in the panel, and what can be group tagged. Each panel has its own configuration, so each can be customized.

+--- xxxx display & tag filter ----+
| [x] Show directories |
| [ ] Dir. filter: |
+-File Display Filtering-----------+
| (*) Show all files |
| ( ) Show selected files |
| [x] Show executables |
| [x] Show images |
| [x] Show hidden/system |
| [x] Show all others |
| [ ] File filter: |
+-Tagging Options------------------+
| [ ] Include H/S files in +/- tag |
| [ ] Include DIR's in +/- tag |
| [x] Include SEP's in +/- tag |
+----------------------------------+
| [ Dflt ] [ Ok ] [ Cancel ] |
+----------------------------------+

The Dflt button can be used to set all the options back to default settings, if things get very messed up.

Show directories - If checked, directories will be shown in the panel listing

Dir. filter: - Enable the option and enter a filename pattern to filter out some of the directories from the panel display. Only those directories which match the pattern will be displayed. You can enter a pattern and enable the filtering later.

Show all files - Enable this to display all files, regardless of type

Show selected files - Enable this to display only specific groups of files

Show executables - If checked, executables (COM, EXE, BAT and CMD) will be shown in the panel listing

Show images - If checked, emulator image files (and there's a lot of them) will be shown in the panel listing

Show hidden/system - If checked, all files with either the hidden or system attribute ("*" beside the filename) will be shown in the panel listing

Show all others - If checked, all other files that doesn't fit any of the above categories will be shown in the panel listing

File filter - Enable the option and enter a filename pattern to filter out some of the filenames from the panel display. Only those filenames which match the pattern, and pass the other above 'show ...' switches will be displayed. You can enter a pattern and enable the filtering later.

Include H/S files in +/- tag - When tagging files using the group tag keys (KEYPAD +/-/*), you can include/exclude the hidden/system files from the display.

Include DIR's in +/- tag - When tagging files using the group tag keys (KEYPAD +/-/*), you can include/exclude the directories from the display.

Include SEP's in +/- tag - When in image files, and tagging files using the group tag keys (KEYPAD +/-/*), you can include/exclude "separator" files from the display.



Back to index

Disk Error Byte Editor (43/0)
from the Disk HEX Editor

Set error code in sector            0-9, F      
Clear error code in sector SPACE
Increment error code KEYPAD +
Decrement error code KEYPAD -
Strip error info from file F3
Exit editor F10



Key  Error  Description                             
--- ----- ----------------------------------------
SPC 00 No error, sector ok
0 20 Header block not found
1 21 No sync character
2 22 Data block not present
3 23 Checksum error in data block
4 24 Write error
5 25 Write verify error
6 26 Write protect on
7 27 Checksum error in header block
8 28 Write error
9 29 Disk ID mismatch
F 74 Disk Not Ready



When a "ú" character is displayed for a specific sector, then there is no error associated with it. If a number (or letter) is being displayed ("0", "1"..."F"), then it represents the error assigned to that specific sector (see chart above). Simply add 20 to the number displayed to get the real error code. The only exception to this rule is the error 74, and it is shown as an "F".

Use the cursor keys to move to the track/sector you want to change, and alter the error by typing one of the assigned error keys above. The track and sector location (and error type) are always visible in the info bar at the top of the screen. D64 (unextended), X64 and D71 images require very little explanation, except that the map layout is different for each image type.

If the disk is an "extended" D64 format (i.e. 40 track), there will be an extra block of tracks (36 through 40) tacked onto the end of the display.

If the image is a D81, then the screen layout changes a bit. There is no sector titles displayed, as there is simply no room for them. In 43 line mode there will be no track header line either.

In D81 25 line mode, the whole D81 error block can't be displayed (as it needs at least a 43 line screen), so the screen is effectively split, with it initially displaying sectors 0-19. Scrolling down to the bottom of the screen past sector 19, and the display will redraw, showing sectors 20-39.




File Menu (43/1)
Pull-down Menu

    File                      
+--------------------------+
| Remove error info F3 |
| ------------------------ |
| eXit F10 |
+--------------------------+

Remove Error Info - This function will remove the error info block attached to the end of the disk image being edited.

Exit - Exit the Disk Error Byte Editor




Errors Menu (43/2)
Pull-down Menu

This menu is the same for both the top pull-down and the one that pops up with a right mouse button click on a sector location. Any error type can be selected from the list that is presented.

    Errors                       
+-----------------------------+
| Clear error Spacebar |
| --------------------------- |
| Set error 20 0 |
| Set error 21 1 |
| Set error 22 2 |
| Set error 23 3 |
| Set error 24 4 |
| Set error 25 5 |
| Set error 26 6 |
| Set error 27 7 |
| Set error 28 8 |
| Set error 29 9 |
| Set error 74(F) F |
+-----------------------------+

Clear error - Reset the error so that the sector has no error assigned.

Set error xx - Select the appropriate error number to assign to a sector.




Exit & Save Changes (43/3)
F4, F10, ESC

+------------- Save Changes -------------+
| |
| Save changes made to the Error Block? |
| |
+----------------------------------------+
| [ Yes ] [ No ] [ Cancel ] |
+----------------------------------------+

Select Yes to save the changes made to the error block, No to exit the Error Editor without saving the changes or Cancel to go back to the Error Editor window.




Remove Error Block (43/4)
F3

+--------- Remove Error Info ----------+
| |
| Remove error info from this file? |
| |
+--------------------------------------+
| [ Yes ] [ No ] |
+--------------------------------------+

Select Yes to remove the error block associated with the disk image, or No to leave it as is.




Miscellaneous Menu (43/5)
Pull-down Menu

    Misc        
+------------+
| Help F1 |
+------------+

Help - Get help for Disk Error Byte Editor topics



Back to index

Sort Order (44/0)
on the LEFT/RIGHT Menus

There are several different menu items which apply to sort order. Each panel can have its own sort method, but the sort only applies to DOS panels, not to image files.

Most importantly, you do not need to select the sort method from the menus anymore. All you need to do is hold down the ALT key and click in any sortable column in the panel display. If you want to sort by name, hold ALT and click in the NAME column (including the title) and the sort will switch to that column. If the sort was already set there, then the column will reverse the order of the sort.

Changing the sort type (Name, Ext, Time etc) will not clear the tags on any files you may have selected, unless you change the sort to or from "Unsorted". Then the panel information is actually re-read and displayed, and not just resorted.

| -------------------- |
| Name |
| eXtension |
|+ tiMe |
| Size |
| Unsorted |
| -------------------- |
|+ Ascending |
| dEscending |
| -------------------- |

You can also specify whether to show the panel "small to large" (or A-Z) with "Ascending" or vice versa with "Descending". If the sort method selected is "Unsorted", then no change to the panel display will take place.

The sort is also multi-level, and not just a sorting the column of information you have selected. Here is a chart of how the sort works, and on what. The last column to be sorted is always "Extension".

Sort selected    What else is sorted (in order)
------------- ------------------------------
Name Extension
Extension nothing
Time Date, Name, Extension
Size Name, Extension
Unsorted nothing



Back to index

File Information (45/0)
Ctrl-N

This will display the name, type (directory, DOS, image) of file, size (in bytes and 254-byte disk blocks) and any DOS attributes that are set.

+------------ File Information ------------+
| |
| Name: "readme.txt" |
| Type: DOS binary file |
| Size: 115 bytes (1 disk block) |
| Attr: Archive |
| |
+------------------------------------------+
| [ Ok ] |
+------------------------------------------+

If the file is a disk image (D64, X64, D71, D81) then an extra line will also be displayed showing the type of disk, be it normal or extended (with DOS type), track count, and whether there are sector error bytes attached or not.

+----------- File Information -----------+
| |
| Name: "GGG.D64" |
| Type: D64 (1541) disk image |
| Size: 197376 bytes (778 disk blocks) |
| Attr: Archive |
| D64: Speed DOS/40 tracks/error info |
| |
+----------------------------------------+
| [ OK ] |
+----------------------------------------+

If the file selected is in MP3 format (compressed audio), then the bitrate, stereo/mono mode, sample rate, and any ID3 info tag (version 1.1 only) will be displayed. Note that this is a display only, none of the info can be changed.

+--------------- File Information ---------------+
| Dos Name: "Autograph - Turn Up the Radio.mp3" |
| Type: MPEG1 file, Layer 3 encoding |
| Size: 5106572 bytes (20105 blocks) |
+-MP3 Specifications-----------------------------+
| Bitrate: 048 Kilobits Freq: 44100 Khz |
| Checksum: No Emphasis: No Mode: Stereo |
| Original: No Protect: No Copyright: No |
+-ID3 v1.1 Tag Information-----------------------+
| Title: Turn Up the Radio |
| Artist: Autograph |
| Album: Monsters of Rock |
| Year: 1999 Track#: 15 |
| Genre: Rock |
| Comment: Made with RealJukebox (tm) |
+------------------------------------------------+
| [ Ok ] |
+------------------------------------------------+



Back to index

Change Video Size (46/0)
Alt-F9

This will change the number of lines on the screen to the next highest value, from 25 to 43, to 50, and back to 25.

This feature is not the same as in most Norton Commander-like programs. Typically, using EGA Lines will toggle from 25->43 and back to 25 (in EGA mode), or if you are in 50 line mode (VGA), it will do 50->25 and back to 50. I didn't like that feature since in order to use 50 line mode (assuming you started in 25 line mode) I would have to issue the command "mode co80,50". I wanted the ability to use whatever mode was possible, so I rotate through the modes, 25->43->50->25, etc.

If for some reason the video mode cannot be changed, you will notified with an error message.



Back to index

Image Creation Settings (47/0)
Alt-F6

+--------------------- Image Creation ---------------------+
| |
| + Extended D64 Detect -----++ Disk Format Options -----+ |
| | (*) Always ask the user || [ ] Append error block | |
| | ( ) Auto-detect DOS type || [ ] 1541 "4B 01" pattern | |
| +--------------------------++--------------------------+ |
| + Extended D64 Images -----++ Disk Sect. Interleaves --+ |
| | [x] Make 40 track images || D64/X64:10 | |
| | ( ) Speed DOS || D71:6 | |
| | (*) Dolphin DOS || | |
| | ( ) Prologic DOS || | |
| +--------------------------++--------------------------+ |
| + Disk File Operations ----++ T64 Dir. Options --------+ |
| | [ ] Wipe deleted files || T64 directory size:30 | |
| | [ ] Put files on dir trk || [ ] Auto-expand T64 dir. | |
| +--------------------------++--------------------------+ |
+----------------------------------------------------------+
| [ Ok ] [ Cancel ] [ Next ] [ Prev ] |
+----------------------------------------------------------+

Extended D64 Detect - Select Auto-detect DOS type to let 64COPY detect what type of extended DOS a 40-track image uses. If you don't trust the auto-detect algorithms, then select Always ask the user to be bugged with a selection dialog every time a 40-track image is entered.

Make 40 track images - When enabled, any image created will default to 40 tracks, and the DOS type specified. Otherwise the images created will be standard 35 track.

Speed, Dolphin & Prologic DOS - Three different types of "extended" disk formats for D64 images. They only vary in where the extra BAM information is stored in the BAM block (track 18, sector 0) and the disk label resides. Speed DOS seems to be more common.

Wipe del'd disk files - This is the "WipeFile" for disk (D64, D71, D81, X64) images. When you remove a file, the sectors it took up, along with its directory entry location, will be completely erased.

Use dir track for files - When the disk image is full, the directory track (track 18 on a D64, X64 and D71, track 40 on a D81) will be used as a last resort to store files.

Append error byte info - Whether to append the error byte block when creating disk image files.

"4B 01" format pattern = This will format a D64 or X64 with the original sector format pattern (a $4B followed by 254 $01's), rather than all zero's. This is for those people who want everything "original".

Disk sect. interleaves - These entry areas let you change the sector interleaves for file storage for most disk images. The D64 entry affects X64 as well. D71 is for 1571 images. D81's always use a value of 1, and are therefore not listed nor changeable. The various hardware speeded DOS's that exist (Speed, Dolphin, Prologic) all seem to use the standard values as well, and so are not listed as well.

T64 Directory size - The default number of entries in the directory used in the creation of T64 files.

Auto-expand T64 dir. - When set, the T64 central directory will be expanded when needed so that the directory will not run out of room during a copy.



Back to index

Windows Long Filenames (LFN) (48/0)

Long filename (LFN) support will be allowed and enabled for any OS that claims to support them, and most do. Those that don't, like DOS and WindowsNT, require special drivers for access to LFN's. WindowsNT uses a different (and unknown) method to work with long filenames and is not compatible without special drivers.

The panel display still only shows the DOS short name but the status line at the bottom of the panel will show the corresponding long name, if one exists, to any file that you have the hilite bar on.

If a long filename is longer than the panel status line width (38 characters), then the filename will be trimmed down to fit into the given space, and only the most important parts will be visible. For example, the filename:

"This is a really really long filename right.extension"

which is 53 characters long will be truncated down to:

"This is a really really long fil>.ext>"

The arrow '>' characters at the ends of the components of the filename indicate that more of the filename exist, in either/or the name and extension areas.

There are various switches available to disable the use of or panel display of long filenames, if you so wish. The main switch is under Configuration/Miscellaneous called "Use long filenames", and unchecking it will revert the program back to strictly DOS 8.3 filenames.

The second set of switches control the panel file status line display of long names. They exist in the Panel Setup windows for each panel and are called "Display long filename only". With these disabled, the panel file status line will revert back to its normal "file.ext/size/date/time" that the panel always displays. With it on (default), the file status line will always display only the filename, a longname if one exists.



Back to index

Panel Layout Editor (49/0)
on the OPTIONS Menu

Assigned Panel Editor Keys
Place new object (title/column) F4
Move object INS
Delete object F8
Reload this panels defaults F9
Reload all panel defaults F5
Exit editor F10
Clear window of all objects F12
Select new panel to edit F2



You can use the mouse for even easier placement/removal.

* Select any column, line or title using either the keyboard cursor-movement keys or the left mouse button.

* Right-clicking on an object will bring up a popup menu. From here you can delete the object or choose to place a new one.

* Right-clicking on an empty area will bring up a popup menu to place a new item only.

* Use the right mouse button to grab any object and move it (rather than INSERT to tag, and cursor to move).



Simply select, delete or move any objects you want to, keeping in mind some fundamental laws about the panel layout:

* Columns can't be placed/moved into the top line of the panel (title area), nor on top of each other.

* Titles can only be placed/moved in the top line of the panel.

* Lines exist in both areas (titles and columns). In order to place a line, the entire column (title line to bottom of panel) must be clear.

* When you select an object to move, it will flash. If it cannot be moved because there is nowhere else to put it (no column wide enough), it won't go anywhere.

* You cannot place anymore than 8 columns, 8 titles and 8 lines, for 24 objects total.




Pull-Down Menus (49/1)

    File         
+-------------+
| eXit F10 |
+-------------+

Exit - Exit the Panel Layout Editor

    Edit                     
+-------------------------+
| Select layout F2 |
| Clear window F12 |
| Restore defaults F9 |
| Restore all F5 |
| ----------------------- |
| Delete item F8 |
| Place item F4 |
+-------------------------+

Select Layout - Select the panel layout to edit. There is many to choose from.

Clear Window - Clear the panel display of all elements.

Restore Defaults - Reset the panel display to the default layout for the type selected.

Restore All - Restore all panels to the program defaults

Delete Item - Delete the selected item (title, line, column) from the panel.

Place Item - Place an item (title, line, column) in the panel display.

    Misc        
+------------+
| Help F1 |
+------------+

Help - Get help for a topic.




Exit Panel Editor (49/2)
ESC, F10

If any changes have been made to the panel layout, you will receive this window. Select Yes to save and accept the changes, No to revert back to the previous layout and Cancel to return back to the editor.

+------- Panel Layout Changed -------+
| |
| Some panel layouts have changed... |
| DOS standard |
| Retain the new panel layout? |
| |
+------------------------------------+
| [ Yes ] [ No ] [ Cancel ] |
+------------------------------------+




Select Layout (49/3)
F2

From here you can choose which layout to edit. Select Restore to reload the defaults for the all the panel types.

+--------- Select New Layout ----------+
| |
| 0 - DOS standard |
| 1 - DOS alternate |
| 2 - Disk standard |
| 3 - Disk alternate |
| 4 - T64 standard |
| 5 - T64 alternate |
| 6 - ARC/SDA standard |
| 7 - ARC/SDA alternate |
| 8 - P00/LNX standard |
| 9 - P00/LNX alternate |
| |
+--------------------------------------+
| [ Ok ] [ Restore ] [ Cancel ] |
+--------------------------------------+

If you were editing another panel layout and you chose to work on another panel type, those changes are not lost. When you exit the editor and save the changes, those changes made to other panel layouts will be saved as well.




Clear Window (49/4)
F12

If you want a clean panel display to start placing objects in, select Yes. Otherwise you must work with a populated panel.

+--------------- Clear Panel --------------+
| |
| Clear the whole panel (and start over)? |
| |
+------------------------------------------+
| [ Yes ] [ No ] |
+------------------------------------------+




Restore Panel Default (49/5)
F9

If any changes have been made to the panel layout, use this function to restore the layout to the default.

+------------- Restore Panel Layout -------------+
| |
| Restore this panel layout to program defaults? |
| |
+------------------------------------------------+
| [ Yes ] [ No ] |
+------------------------------------------------+




Delete Item (49/6)
F8

There are three different types of objects to delete... titles, lines and columns. The titles are at the top of the panel and are independent of the column placement. Lines exist in both the title and column area.

+--------- DOS standard panel ---------+               
| Name Ext| Size | Date | Time | <-- Title area
|abcdefgh*txt|123456789|10-22-96|11:22p|
|abcdefgh*txt|123456789|10-22-96|11:22p|
|abcdefgh*txt|123456789|10-22-96|11:22p|
|abcdefgh*txt|123456789|10-22-96|11:22p| <-- Columns
|abcdefgh*txt|123456789|10-22-96|11:22p|
|abcdefgh*txt|123456789|10-22-96|11:22p|
|abcdefgh*txt|123456789|10-22-96|11:22p|

You will be asked to confirm the delete:

+------- Delete Object --------+
| |
| Delete the tagged xxxxxx? |
| |
+------------------------------+
| [ Yes ] [ No ] |
+------------------------------+




Place Item (49/7)
F4

This function lets you place different types of objects. Select the object type you want to place.

+--------- Place New ----------+
| |
| 1 - Column |
| 2 - Title |
| 3 - Line |
| |
+------------------------------+
| [ Ok ] [ Cancel ] |
+------------------------------+

Columns only exist in the area below the title line. Titles only exist in the top line of the panel. Lines exist across both areas. You can only place a line where there is no obstruction from the top to the bottom of the panel. You can also place multiples of the same column and title entries, but that's a little weird.



If you select to place a Title object, you have the following choices. The number in brackets following the title is the width of the object.

+----- Place Column Title -----+
| |
| 1 - Filename ( 4) |
| 2 - Extension ( 3) |
| 3 - Size ( 4) |
| 4 - Date ( 4) |
| 5 - Time ( 4) |
| 6 - Attributes ( 4) |
| |
+------------------------------+
| [ Ok ] [ Cancel ] |
+------------------------------+

If there's not a space wide enough left in the title line to place the selected title, you will receive this error window.

+-------- Attention! --------+
| |
| Not enough room to place |
| "Date" title. |
| |
|----------------------------|
| [ Ok ] |
+----------------------------+

If you selected to place a Column object, then this is the list of objects to choose from. Once again, the number in brackets following the column type is the width of the column.

+---- Place Column Object -----+
| |
| 1 - Filename ( 8) |
| 2 - Extension/Type ( 3) |
| 3 - 1 char attrib ( 1) |
| 4 - Size ( 9) |
| 5 - Date ( 8) |
| 6 - Time ( 6) |
| 7 - Attributes ( 4) |
| |
+------------------------------+
| [ Ok ] [ Cancel ] |
+------------------------------+

If there's not a space wide enough left in the column area to place the select column object, you will receive this error window.

+-------- Attention! --------+
| |
| Not enough room to place |
| "Filename" column item. |
| |
|----------------------------|
| [ Ok ] |
+----------------------------+

If you choose to place a line, one will simply be dropped where there is room, starting from the left edge of the panel. You can then move it to where you need it. If there's no space left to place a line (from title line to bottom of panel), then you will receive this error window.

+---------------- Attention! ----------------+
| |
| There is no open column to place a line! |
| |
|--------------------------------------------|
| [ Ok ] |
+--------------------------------------------+




Popup Menu (49/8)

If you right-click on an existing object (line, title, column) you will see this popup menu. The Delete option will be there because there was an object clicked on.

  Panel Items   
+--------------+
| Delete |
| ------------ |
| place Line |
| place Title |
| place Column |
+--------------+

Right-clicking on an empty area brings up this popup menu allowing you to place a new object. Notice the conspicuously missing Delete option.

  Panel Items   
+--------------+
| place Line |
| place Title |
| place Column |
+--------------+




Restore All Panels (49/9)
F5

If you need to revert all panels back to program defaults...

+-------------- Restore All Panels --------------+
| |
| Restore all panel layouts to program defaults? |
| |
+------------------------------------------------+
| [ Yes ] [ No ] |
+------------------------------------------------+



Back to index

Compare Two Files (50/0)
Ctrl-F5

+-------- Compare Files ---------+
| |
| Do you really want to compare |
| the two files selected? |
| |
| [x] Calculate CRC's on files |
+--------------------------------+
| [ Yes ] [ No ] |
+--------------------------------+

This is a very simple compare facility for two files, either two in the same panel, or one in either panel. The CRC32 will be calculated for each file, if the option is selected from the initial window, and the value appears after each filename in the header bar.

+---------------------- Calculating CRC32 -----------------------+
| Calculating CRC32 of file #1 |
| |
| *********** |
| 0%----------------------------50%-------------------------100% |
+----------------------------------------------------------------+

To compare files in the same panel, there must be only two files tagged in the active panel, and none in the other.

To compare files across panels, you do not need to tag any files, but if you do, only one should be tagged in each panel. Only the hilite bars need to be overtop of the files you want to compare.

When the file sizes are not the same, the file compare assumes that the files are not the same, and asks if it should continue. The dialog below shows this.

+------------- Compare Files --------------+
| |
| The two files are likely very different |
| as their sizes are not the same. |
| |
| Do you really want to continue |
| with the file compare anyways? |
| |
|------------------------------------------|
| [ Yes ] [ No ] |
+------------------------------------------+



Once the panels are ready, do the compare. The output in the window will look something like this...

+-----------------------------------------------+
| File 1:UNBLTZ2.SDA CRC32:$AB563DFC |
| File 2:wraptor.sda CRC32:$115C3EF9 |
| |
| Address | File 1 | File 2 |
| $00000004 | $0A | $0D |
| $00000011 | $F7 | $00 |
| $00000012 | $85 | $8D |
| $00000013 | $FD | $20 |
| $00000014 | $A9 | $D0 |
| $00000015 | $0B | $A9 |
| $00000016 | $85 | $00 |
| $00000035 | $0A | $20 |
| $00000036 | $B0 | $B4 |
| $00000037 | $0F | $08 |
| $00000039 | $17 | $96 |
| |
| Too many errors to continue Compare. |
| The two files are different. |
+-----------------------------------------------+

The compare function will only display up to the number of errors that the window can display without scrolling. If the files are the same, the only message you will see is "The two files are the same".



Back to index

Change Panel Options (51/0)
Alt-F6

+------------- Panel Options --------------+
| |
| + Panel Height ------------------------+ |
| | (*) Full Screen (100%) | |
| | ( ) 75 % of screen | |
| +--------------------------------------+ |
| + Movement & Other --------------------+ |
| | [ ] Save active panel path on exit | |
| | [x] Save inactive panel path on exit | |
| | [ ] Show C64 names in lowercase | |
| | [x] ESC toggles panels on/off | |
| | [x] Cursor down on INSERT tag | |
| | [ ] Use CRSR-LEFT/RIGHT navigation | |
| | [ ] Pause on return from shell | |
| +--------------------------------------+ |
+------------------------------------------+
| [ Ok ] [ Cancel ] [ Next ] [ Prev ] |
+------------------------------------------+

Full screen - When set, the panel height will be set to the maximum allowed.

% of screen - When set, the panels will be set to the % of the screen indicated, and it is adjustable from 20% to 100%. When it is set to 100%, the full-screen option will become enabled, and the value for the "%" will be reduced to the standard default of 75%.

Save active/inactive panel path on exit" - Stores the drive/path of the active or inactive panel to the .INI file when the program exits. If set, the panel(s) will default to the saved drive/path when the program starts up.

Show C64 names in lower case" - Switches the panel display of C64 filenames from upper/graphics case to lower/upper case. Some filenames display good in one case, others are good in the other.

ESC toggles panels on/off - Enable or disable the removal of the panels by hitting the ESC key.

Cursor down on INSERT tag - Whether or not you want the hilite bar to automatically go down one line after tagging/untagging a file in a panel.

Use CRSR-LEFT/RIGHT navigation - This will transform the way CURSOR-LEFT and CURSOR-RIGHT work. When enabled, CURSOR-LEFT will go back 1 directory level, and CURSOR-RIGHT will enter the directory under the cursor, making directory navigation much quicker. Note than CURSOR-RIGHT will not act on files, only directories.

Pause on return from shell - Puts up a line at the bottom of the screen, telling you to "press return to continue" after an external command has been executed. This allows you to view the output from the command that you ran, before the panels cover it up.



Back to index

Change Editor/Viewer Settings (52/0)
Alt-F6

This window is for most of the editor and viewer defaults. In the first section you can specify if you want to use "external" programs to edit or view instead of the internal programs, and what the editor names are. The external programs should be in a directory that is listed in the DOS "path" setting.

+--------------- Editors & Viewers ----------------+
| + External Programs ---------------------------+ |
| | [ ] Use external Text editor:edit | |
| | [x] Use external when file too large | |
| | [ ] Use external HEX editor :fed | |
| | [ ] Use external File viewer:edit | |
| +----------------------------------------------+ |
| + Int. Editors/Viewers ------------------------+ |
| | Tab size: 8 [x] Auto-indent line | |
| | Block fmt line width:75 X Scroll Size:1 | |
| | [ ] Justify paragraph on block format | |
| | [ ] Case-sensitive search/replace | |
| | [ ] Auto-wraparound on cursor left | |
| | [ ] Use Norton Editor keys | |
| | [x] Auto-convert Unicode format | |
| | Save format: (*) PC/DOS ( ) Mac ( ) Unix | |
| +----------------------------------------------+ |
+--------------------------------------------------+
| [ OK ] [ Cancel ] [ Next ] [ Prev ] |
+--------------------------------------------------+

Use external... - Enable these options to use the external editor for either the Text, Hex or File Viewer.

Use external when file too large - Enable this to auto-run the defined external editor when the file size looks too large (>64K).

Tab size - Used for the size of the tab (in spaces) in the Text editor, and how big TAB's should be expanded out to in the File Viewer.

Auto-indent line - This is for those "C" programmers out there. If you hit return after a "{" (open brace) character, the Text editor will indent your automatically one TAB value past the "{". If you hit return on a line that is indented, then the cursor will also be "auto-indented" to the same place on the next line.

Block fmt line width: - This sets the right margin for paragraph formatting (ALT-B).

X Scroll Size - This is the number of columns the screen will rotate when you cursor over or type off the right edge of the screen. Setting it to 1 makes the rotation smooth. A higher number makes the rotation jumpy.

Justify paragraph on block format - With this enabled, doing a Block Format in the Text Editor will cause the paragraph being formatted to be right-justified to the specified line width.

Case-sensitive search/replace - When set, all search/replace will be case sensitive, otherwise case is ignored.

Auto-wraparound on cursor left: - When the cursor reaches the beginning of a text line, it will wrap around to the end of the previous text line

Use Norton Editor keys - When set, the editor functions key are converted to Norton Editor mode. Most of the normal Fkey and ALT-key functions will be different. However, the screen will not *look* like Norton Editor (colors, layout).

Auto-convert Unicode format - An attempt is made to detect if the text file is in Unicode format. The signature FF FE usually appears at the beginning of the file, and then the file consists of ASCII/00 pairs. Without this enabled, you will be asked to convert each file if it appears to be in Unicode format.

Save format - This allows you to save files from the text editor into various common formats, very useful if you are editing files from other sources, or need to move a file to another platform. The "PC/DOS" option saves files in normal PC format with a standard line delimiter. The "Mac" option saves files with the delimiter only, and the "Unix" option saves files with a delimiter only.



Back to index

Change Keyboard/Mouse Settings (53/0)
Alt-F6

This area is for changing the speed of the keyboard repeat, and delay until repeat. You can also change the speed of the mouse cursor, and how fast/slow you have to click for the system to recognize a mouse double-click.

For you lefties out there, check the "left-handed mouse" setting to use your mouse left-handed.

+---------------------- Keyboard & Mouse ----------------------+
| |
| + Key Delay -++ Key Repeat -++ Mouse Mvmt -++ Mouse Click -+ |
| | (*) None || (*) Fastest || (*) Fast || (*) Fast | |
| | ( ) Short || ( ) Faster || ( ) Medium || ( ) Medium | |
| | ( ) Normal || ( ) Normal || ( ) Normal || ( ) Slower | |
| | ( ) Long || ( ) Medium || ( ) Slow || ( ) Slowest | |
| +------------+| ( ) Slow |+-------------++--------------+ |
| +-------------+ [ ] Left-handed mouse |
+--------------------------------------------------------------+
| [ OK ] [ Cancel ] [ Next ] [ Prev ] |
+--------------------------------------------------------------+

Note: For Windows95 users, changing the "Mouse Mvmt" setting might not make a difference.



Back to index

Change Screen Settings (54/0)
Alt-F6

Here you can change the startup (and present value) of the screen line mode, and change the screen from color to monochrome.

+------------- Visual Options -------------+
| |
| + Screen Height ---++ Color Mode ------+ |
| | ( ) No change || (*) Color | |
| | ( ) 25 lines || ( ) Mono/Laptop | |
| | ( ) 43 lines |+------------------+ |
| | (*) 50 lines | |
| +------------------++ Other -----------+ |
| + Time & Date -----+| [x] Path prompt | |
| | [x] Display time || [x] Fkey bar | |
| | [ ] 24 hour time || [x] Show mode | |
| | [x] Include date |+------------------+ |
| +------------------+ |
+------------------------------------------+
| [ Ok ] [ Cancel ] [ Next ] [ Prev ] |
+------------------------------------------+

Screen height - Changes the present height of the screen between 25, 43 and 50 lines. The No change option will default to using whatever the screen size was when the program was launched.

Display time - Turns on/off the display of the time on the menubar.

24 hour time - This toggles all time displays (clock and panels) between 12 hour (AM/PM) and 24 hour time useage, for the European (and military) users out there.

Include date - If the Display clock option is on, then with this enabled the date is also displayed.

Color mode - Changes the screen display colors between a color (for standard color monitors) and black/white (for some portables) palette.



The options under the Other heading are almost the same as the toggle options under the OPTIONS menu. They are available here so that you can change them all at once, rather than one at a time from the menu.

Path prompt - This turns on/off the display of the presently active directory in the prompt.

Fkey bar - This turns on/off the display of the function-key bar at the bottom of the screen.

Show mode - This toggles on/off the display of the Color 80x25 in the menubar, if the menubar is visible.



Back to index

Image Conversion Settings (55/0)
Alt-F6

This configuration page contains the options for Image Conversion. For image creation options, see the Image Creation page.

+--------------------- Image Conversion ---------------------+
| |
| + Convert Default Type + + Files & Filenames ------------+ |
| | ( ) D64 ( ) LyNX | | [ ] Convert to separate files | |
| | (*) T64 ( ) ARK | | [ ] Auto-convert filenames | |
| | ( ) PC64 ( ) D71 | | [ ] Auto-create unique names | |
| | ( ) BIN ( ) D81 | | [ ] Add C64 type to name | |
| | ( ) X64 ( ) D80 | | [x] Use long C64 dest. names | |
| | ( ) D82 | | [ ] Keep DOS filename case | |
| +----------------------+ +-------------------------------+ |
| + GCR Options ---------+ |
| | 10 SYNC size (bits) | |
| +----------------------+ |
+------------------------------------------------------------+
| [ Ok ] [ Cancel ] [ Next ] [ Prev ] |
+------------------------------------------------------------+

Convert Default Type - The convert filetype default for the main Convert (F11) window.

Convert to separate files - Determines whether the Conversion routine will put all the selected files into one image file, or create separate files, one for each file selected.

Auto-convert filenames - Whether the program will stop and ask you for a filename during the conversion process. With this set, it will not ask, but create a filename on its own.

Auto-create unique names - Whether to generate a new filename when a filename conflict is encountered, or ask the user for a new name. When set, the program will generate its own.

Add C64 type to name - This will add the C64 filetype (PRG, SEQ, etc) to the destination filename, when converting to a Binary/PRG. This can help in identifying what the original filetype was as typically this info is lost when converting to DOS binaries.

Use long C64 dest. names: - Instead of having the program generate 8.3 short filenames from the long 16 character C64 filenames, this will attempt to retain most of the filename, except for the parts which DOS can't use (illegal characters in filenames). However, if the master "Use long filenames" on the Miscellaneous page is off, this switch has no effect.

Keep DOS filename case: - This will preserve the upper/lower case of filenames (typically when they are long filenames) when generating the destination filename, rather than change them to upper case only.

SYNC size (bits): - When reading a G64 image, this is the minimum width necessary to read a SYNC mark (in 1 bits). Some documents refer a SYNC as being a minimum of 12 bits, some say 10. I figured it would be safe to make a changeable option. The range for this variable is 10-40.



Back to index

Check F64 & D64 File (56/0)
Alt-F3

This check routine simply provides you with a visual look into each sector that appears to have an error. Not all is known about F64, so what is showing below might not be completely correct.

The most important values are the Code, DatID and the Chksm columns. These are the actual bytes from the F64 file. The information in the Errors column generally shows what the values were calculated to be (like data and header checksums).

******************************************************************
Filename: DISK0001.F64
Scan mode: scan only
ID bytes: "OR" ($4F $52)
Trk|Sec| Code|DatID|Chksm| Errors
---|---|-----|-----|-----|----------------------------------------
1 | | "L" | $07 | $01 | Error 21 "No SYNC found" (full track)
---|---|-----|-----|-----|----------------------------------------
2 | | "L" | $07 | $01 | Error 21 "No SYNC found" (full track)
---|---|-----|-----|-----|----------------------------------------
5 | 1 | "I" | $06 | $4A | Error 22 "Data ID not found"
---|---|-----|-----|-----|----------------------------------------
6 | 0 | "I" | $09 | $4A | Error 22 "Data ID not found"
6 | 1 | "I" | $09 | $4A | Error 22 "Data ID not found"
---|---|-----|-----|-----|----------------------------------------
12 | | "F" | $07 | $01 | Killer track "all SYNC" (full track)
---|---|-----|-----|-----|----------------------------------------
14 | 0 | "H" | $07 | $01 | Error 20/27 "Header ID bad/bad chksum"
14 | 1 | "?" | $07 | $01 | No sector header/data at all
14 | 2 | "?" | $07 | $01 | No sector header/data at all
---|---|-----|-----|-----|----------------------------------------
18 | 8 | "C" | $07 | $1D | Error 23 "Bad data chksum" (should $DB)
18 | 9 | "H" | $07 | $01 | Error 20/27 "Header ID bad/bad chksum"
18 |10 | "C" | $07 | $84 | Error 23 "Bad data chksum" (should $ED)
18 |11 | "I" | $C1 | $FF | Error 22 "Data ID not found"
---|---|-----|-----|-----|----------------------------------------
Errors were found.
******************************************************************

Errors in F64 are denoted by the Code column. According to the source code these can be one of "+-CHI?FLSP" (without the quotes). However, there is also the Data ID and the Checksum values to take into account.



Back to index

Change Screen Saver Settings (57/0)
Alt-F6

Here you can change all the screen saver options, from the time until the screen saver turns on, to what modules it executes.

+----------------------- Screen Saver -----------------------+
| |
| + Screen Saver On/Off ----------++ Select Modules -------+ |
| | [x] Enable screen saver || [x] Blackout | |
| | || [x] Kaleidoscope | |
| | Screen saver delay (mins):3 || [x] Game of Life | |
| | [x] Detect mouse movement || [x] Starry Night | |
| +-------------------------------+| [x] Create-a-Maze | |
| + Randomize Module -------------+| [x] Snake Game | |
| | ( ) Select single module || [x] Big Clock | |
| | (*) Randomize modules || | |
| | Module duration (mins):3 || [ Test ] [ coNfig ] | |
| +-------------------------------++-----------------------+ |
+------------------------------------------------------------+
| [ OK ] [ Cancel ] [ Next ] [ Prev ] |
+------------------------------------------------------------+

Enable screen saver - Turns on or off the screen saver.

Screen saver delay - The time, in minutes, that the screen saver will wait until it starts.

Detect mouse movement - Disable the ability of moving the mouse to exit the screen saver.

Select modules - Lets you enable/disable specific screen saver modules. If they are checked, they are enabled. If none are checked, "Blackout" will be the default.

Select single module - The program will pick one saver module to run from the enabled modules and will run only that one.

Randomize modules - The program will randomly select another module to run after the module duration time is up. If only one (or less) module is enabled, it will not switch.

Module duration - The time that a saver module will run, before it is switched out for another one. This setting makes no difference if only one saver is enabled, or if "select single module" is selected.

There are also two extra buttons in the "Select Module" area. Test will let you sample the saver before you enable it, and Config will allow you to alter some details about how the specific saver operates.



Back to index

Change Miscellanous Settings (58/0)
Alt-F6

This Configuration page covers some of the more hard-to categorize options, along with the downright strange options.

+-------------- Other Settings --------------+
| |
| + Confirmations & Etc. ----------+ |
| | [x] Auto-save settings on exit | |
| | [x] Beep on errors | |
| | [x] Confirm on exit | |
| +--------------------------------+ |
| + Unusual Things ------------------------+ |
| | [ ] ALT-key drops main menus | |
| | [x] Show "Welcome to..." box on startup| |
| | [x] Use Windows long file names | |
| | [ ] Recalculate PAUSE value | |
| +----------------------------------------+ |
+--------------------------------------------+
| [ Ok ] [ Cancel ] [ Next ] [ Prev] |
+--------------------------------------------+

Auto-save settings on exit - The program settings will be saved when the program exits.

Beep on errors - When you have an error window come up, or do some other mistake worthy of an error beep, you will hear it.

Confirm on exit - Whether or not you see the dialog box asking you do you want to quit" when you press F10 (Quit Program)

ALT-key drops main menus - Tapping the ALT key will drop down the main menus, when sitting at the panels.

Show "Welcome to..." box on startup - Removes the display of the initial program copyright dialog box.

Use Windows long file names - Enables/disables the useage (in editing/copying, etc) of Windows long filenames. Turning this off will also disable other switches like Use long C64 dest. names on the Image Conversion page, and the Display long filename only under the Panel Setup.

Recalculate PAUSE value - Enabling this option forces a re-calculation of the pause value, which is used heavily in the screen savers, and for some time-specific functions. Generally, this will not be necessary, but if you find that the screen savers are running either too slow or too fast, force a re-calc to see if this timer value was off.



Back to index

Change Disk File Attributes (59/0)
Ctrl-A

If no files are tagged, this is the window you will see. Here you can change the individual type and lock attribute for the file.

+----- Change Attributes ------+
| |
| Change file attributes for |
| "atomic handball" |
| |
| ( ) Del |
| ( ) Seq |
| (*) Prg |
| ( ) Usr |
| ( ) Rel |
| ( ) !!! |
| [ ] Locked |
| [ ] Closed |
|------------------------------|
| [ OK ] [ Cancel ] |
+------------------------------+

This is the window you get if one or more files are selected, in "image file" mode. Here you can change the group to a different file type, or change the lock attribute on all the selected files.

+----- Change Attributes ------+
| |
| Change file attributes for |
| 5 selected files |
| |
| (*) No change |
| ( ) Del |
| ( ) Seq |
| ( ) Prg |
| ( ) Usr |
| ( ) Rel |
| ( ) !!! |
| [ ] Locked |
| [ ] Closed |
|------------------------------|
| [ OK ] [ Cancel ] |
+------------------------------+



Back to index

Keyboard Reference (60/0)

----------------------------- Panels -----------------------------
Hilite bar movement
Top of panel listing HOME
Up one screen PAGE UP
Down one screen PAGE DOWN
End of panel listing END
Move hilite bar up CURSOR UP
Move hilite bar down CURSOR DOWN
Execute command line RETURN
Switch to other panel TAB
Panels on/off CTRL O
Swap panels CTRL U
Show status window CTRL L
Toggle function key bar on/off CTRL B
Adjust panel height ALT-UP/DOWN ARROW
Reread directory CTRL R
Goto root of drive (cd \) CTRL \
Selection and Tagging
Select/unselect file INS
Select group of files KEYPAD +
Unselect group of files KEYPAD -
Invert file selection KEYPAD *
Select all files ALT KEYPAD +
Unselect all files ALT KEYPAD -
-------------------------- Command Line --------------------------
Cursor movement
Character left LEFT ARROW
Character right RIGHT ARROW (or CTRL D)
Word left CTRL LEFT ARROW
Word right CTRL RIGHT ARROW
Start of line CTRL HOME
End of line CTRL END
Deleting
Char left BACKSPACE (or CTRL H)
Under cursor DELETE (or CTRL G)
Word left CTRL BACKSPACE (or CTRL W)
Word right CTRL T (or CTRL DELETE)
Line CTRL Y (or ESC)
To end of line CTRL K
Adding
Insert selected files CTRL I (or CTRL ENTER)
Insert path of left panel CTRL [
Insert path of right panel CTRL ]
------------------------ History Commands ------------------------
Previous command CTRL UP ARROW (or CTRL E)
(or UP ARROW when panels off)
Next command CTRL DOWN ARROW (or CTRL X)
(or DOWN ARROW when panels off)
Recent command match CTRL ENTER (with text on command line)

Back to index

Panel Layout (61/0)

When inside different files, directories or image files, there are subtle differences in the look of the panels. This topic will show you the differences for each one.

All panel displays share a common layout. Each has a title bar, which contains the path (and the image filename if thats what it is) of the directory the panel is in. Then follows the titles of the columns, with the contents of the directory/file following. At the bottom of the panel are the status lines, which will change depending on what is being displayed.

If you need to adjust the height of the panels, there are several ways to do it, but using the ALT and the UP/DOWN arrows is the easiest. ALT-UP will shrink the panel up 1 line, and ALT-DOWN will expand it by one line. This method gives you the finest control over the panel heights.

All panels have two different display styles. If you need to switch the panel style to/from normal or alternate, simply hold down the ALT key and right-click in the panel.

When displaying image files, the panel changes. File sizes are no longer displayed in bytes, but rather in blocks, where a block is a grouping of 254 bytes (not 256).




DOS Mode (61/1)

When in DOS mode, the first status line shows the file that the hilite bar is currently on. The second shows the amount of disk space free on the selected drive. The title bar simply shows the directory we are in.

+------ D:\PETE\64COPY\SAMPLES1 -------+
| Name Ext| Size | Date | Time *
|.. |>UP--DIR<| 3-28-96| 1:01p*
|1!4000_ | 38981| 3-10-97| 1:10p*
|2!4000_ | 35877| 1-14-97| 9:18a*
|3!4000_ | 33834| 1-14-97| 9:18a*
|4 | 3456|11-03-95| 9:38a*
|4 asm| 43476| 4-04-97|12:31a*
|4 ovv| 651| 4-19-96| 8:39a*
|4!4000_ | 38494| 1-14-97| 9:18a*
|4000 bas| 157| 2-12-97|11:23a*
|4000 d64| 174848| 2-11-97| 9:51a*
|4000_ d64| 174848| 3-06-97| 1:10p*
|64sh66b d64| 174848| 2-11-97| 9:48a*
|acdc100 lnx| 22445| 2-12-97| 4:02p*
|acindrom lnx| 3936| 2-12-97| 4:02p*
|------------+---------+--------+------|
|3!4000_ 33834 1-14-97 9:18a|
| Free on D: 152,535,040 bytes |
+--------------------------------------+




Disk Images (D64/71/81, X64, Zipcode4) (61/2)

In disk image mode (D64, D71, D81, 4-pack ZipCode, X64), the title bar still shows the directory and filename of the disk being viewed, but it also shows the track count and whether the image has error bytes attached or not. The title bar will be appended with the track count. This number can also be added to in the case of D64 40 track images with either a S/ indicating Speed DOS format, D/ for Dolphin DOS or P/ for Prologic DOS. In the case of a GEOS disk, it will be prepended with a G/. It can also be added to with a /E indicating that the image has error bytes attached. If the file is a ZipCode, there will be a (R) attached to the header indicating the file is read-only.

The panel below shows a typical disk image (D64, 35 track), without error bytes. The first status line shows the blocks free of the disk, with the second showing the label of the disk.

+- D:\...\SAMPLES1\BLAST139.D64 (35) --+
| Size| Name |Type |Trk/Sec|
| |.. | DIR | |
| 0|"----------------"| del<| 18,0 |
| 33|"blast #139 /sci"| prg<| 2,1 |
| 0|"----------------"| del<| 18,0 |
| 54|"1" | prg<| 19,0 |
| 43|"2" | prg<| 21,10 |
| 112|"3" | prg<| 24,1 |
| 107|"4" | prg<| 30,1 |
| 105|"5" | prg<| 17,2 |
| 64|"6" | prg<| 12,2 |
| 63|"7" | prg<| 9,2 |
| | | | |
|-----+------------------+-----+-------|
| 2 blocks free |
| Label: "blast volume 139,01 2a" |
+--------------------------------------+

This panel shows a D64 40 track image, Speed DOS format, with error bytes. Note the change in the title bar (S/40/E).

+ D:\PETE\64COPY\Y\SAMPLE.D64 (S/40/E) +
| Size| Name |Type |Trk/Sec|
| |.. | DIR | |
| 1|"boot" | prg | 17,0 |
| 121|"super kong" | prg | 17,1 |
| 15|"atomic handball" | prg | 19,0 |
| 42|"xerons" | prg | 19,8 |

This panel shows a D2M image in the system partition, with the various partition types. Note that the size column shows the partition in normal 256-byte sectors, rather than system blocks (512-byte blocks).

+-- F:\...\FD2000\817141NA.D2M (81) ---+
| Size| Name |Type |Trk/Sec|
| |.. | DIR | |
| 3200|"1581/PARTITION" | 1581| 1,0 |
| 1368|"1571PARTITION" | 1571| 21,0 |
| 684|"1541PARTITION" | 1541| 29,44 |
| 1024|"NATIV-PARTITION" | natv| 33,66 |
| | | | |




T64 (Tape) Images (61/3)

The panel display for a T64 is similar to that of the disk, except instead of seeing the starting T/S link in the last column, we see the load address. The first status line shows the number of entries free in the central directory, and the second status line shows the label of the image.

+ D:\PETE\64COPY\SAMPLES1\TESTTAPE.T64 +
| Size| Name |Type |LoadAdr|
| |.. | DIR | |
| 24|"spyjkerhoek" | prg | $0801 |
| 197|"impossible miss."| prg | $0801 |
| 170|"giana sisters" | prg | $0801 |
| 150|"mikie" | prg | $0801 |
| 139|"720 degrees" | prg | $0801 |
| | | | |
|-----+------------------+-----+-------|
| 25 entries free (30 total) |
| Label: "c64s demo tape" |
+--------------------------------------+




ARC/SDA (Compressed) Images (61/4)

The panel for ARC and SDA is almost the same as the T64 layout, except we see the type of compression used on each file in the archive. The title bar displays the directory and filename of the image being displayed. Like LBR and ARK, this type is also "read-only", so there is an "(R)" appended to the panel header. There is also no label displayed at the bottom of the panel since this file type has no label.

+ F:\PETE\64COPY\DEARC\UNBLTZ2.SDA (R) +
| Size| Name |Type |ArcType|
| |.. | DIR | |
| 1|"screen.txt" | seq |packRLE|
| 20|"unblitz ii" | prg |sqz&RLE|
| 20|"unblitz" | prg |sqz&RLE|
| 32|"d2" | prg |sqz&RLE|
| 5|"d3" | prg |packRLE|
| | | | |
|-----+------------------+-----+-------|
| .. DIR |
|This image type doesn't support labels|
+--------------------------------------+




Other Supported Images (61/5)

The panel for PC64, LNX, ARK, LBR, SPYne and filepacked ZipCode images is almost identical. The title bar displays the directory and filename of the image being displayed. Note that is the image is either an LBR, ARK or filepacked ZipCode then there will be an "(R)" appended to the panel header, indicating that the image file is "read only". There is no label displayed at the bottom of the panel (except for LNX) since these file types have no label to display.

+---- D:\PETE\64COPY\B\XXX.xxx (R) ----+
| Name | Type| Size |
| .. | DIR | |
| "----------------" | del<| 0 |
| "blast #016 /sci" | prg<| 31 |
| "garfield" | prg<| 165 |
| "thing bounce bak" | prg<| 165 |
| "10" | prg<| 164 |
| "robin 2the rescu" | prg<| 32 |
| | | |
|---------------------+-----+----------|
| "blast #016 /sci" prg< 31 |
|This image type doesn't support labels|
+--------------------------------------+



Back to index

Change Mini Status (62/0)

+-- Change Mini-Status --+
| (*) No change |
| ( ) Brief |
| ( ) Full |
| ( ) Off |
+------------------------+
| [ OK ] [ Cancel ] |
+------------------------+

This dialog lets you add/remove to the information lines displayed at the bottom of both panels.

No Change - This is obvious.

Brief - Only the FILE INFO line will be displayed.

Full - Both the DISK FREE and the FILE INFO lines are displayed.

Off - Turns off all of the info lines, giving you the maximum height for both panels.



Back to index

C64 font support (63/0)

Seeing as the character sets between the PC and the C64 have very little in common, it is not particularly easy to simulate the display of C64 files in the panels without giving up something.

You can switch the font case in the panel by using the ALT-SHIFT toggle combination (hold down ALT and tap the SHIFT). This switching is supported in the panel display, the Disk Hex Editor and the Disk Directory Customizer.

For now, I simulate the different upper and lower case fonts used on the C64 by switching them with similar PC characters. This makes *most* of the filenames display adequately, but not entirely correct. My goal is to include a real C64 ROM font that can be switched in and out on the fly.



Back to index

Swap Disk Image Filenames (64/0)
Shift-F5

This function only works when inside a disk image (D64, D71, D81 or X64). Select two filenames (and only two, no more, no less) that you want to switch positions, and press SHIFT-F5. They will then be switched. This function is also available in the D64 Directory Editor, and would likely be best to use it from there.



Back to index

Create Disk File Separators (65/0)
Shift-F7

+--------- Insert Separator ---------+
| Select separator type... |
| |
| "----------------" (dashed line) |
| "****************" (filled line) |
| "================" (equals line) |
| "----------------" (solid line) |
| "----------------" (wavy line) |
| "+--------------+" (top of box) |
| "| |" (mid of box) |
| "+--------------+" (box split) |
| "+--------------+" (bot of box) |
| undefined (custom entry) |
+------------------------------------+
| [ OK ] [ User ] [ Cancel ] |
+------------------------------------+

This function is only available when inside of a disk image. Simply position the hilite bar over the filename position where you want to insert a separator file, press SHIFT-F7 and select the separator type. This function is also available in the Disk Directory Editor.



Back to index

Delete Disk File Separators\Delete files (66/0)
Shift-F8

Here was can remove specific files from a disk image. If you have a separator file ("----------------") that you want to remove, this is the key to use. If you delete a separator using the normal F8 Delete key, in all likelyhood you will cause some directory corruption, or the file cannot be deleted since it exists on the directory track.

Shift-F8 will simply remove the entry from the disk image directory, after which it will advise you to run CheckDisk to recover/fix any problems.

This routine will default to a normal F8 Delete if you are not in a disk image file.



Back to index

Pull-down Menus (67/0)

These are the menus which become visible when you click in the menu bar (top line of the screen), press F9 "Drop Menus" (when in the panel display), or tap the ALT key (if this option is turned on).

To get HELP on individual menu items, select a menu item with the mouse (but don't release the mouse button) or cursor, and press F1.



Back to index

Screen Saver Features (68/0)
Ctrl-F10

The screen saver is controlled by several methods. Either the inactivity timer runs out, the mouse has been rolled to the top-right corner of the screen (the "save now" corner), or CTRL-F10 has been pressed. CTRL-F10 is a keyboard short-cut which manually enables the screen saver.

The inactivity timer is set on the Configuration/Screen Saver page, and can range from 1 to 90 minutes, with a default of 3 minutes. If there is no activity for the preset time (i.e. 3 minutes), then the screen saver will activate. There are a number of modules that are randomly selected from, and different modules will run if selected.

If the screen saver is not activated ([ ] Screen Saver On), then the activity timer is ignored, and the screen saver will never automatically activate. The top-right corner of the screen is called the save-now corner and, when the mouse is rolled to that area, will activate the screen saver after about a delay of 1 second. Rolling the mouse to the bottom right (called the "save never" corner) will disable the saver.

Simply typing a key will exit the screen saver. Mouse movement and mouse button clicks can also exit the screen saver, if you have enabled the option to do so.

See the HELP topic "Screen Saver Settings" for more information on all the features.



Back to index

Toggle Panel(s) On/Off (69/0)
Ctrl-F1, Ctrl-F2, Ctrl-O, ESC

With these commands, you can see what information is sitting behind the panels. You can turn individual panels on or off (Ctrl-F1, Ctrl-F2), or turn them all on/off (ESC or CTRL-O)

If you use the ESC option, the command-line must be empty first. If it is not, it will be cleared. You must then press ESC again to turn the panels on or off.

These also exists a button in the top-left corner of the screen, which when clicked with the mouse pointer, also turns the panels off. Using this, the command-line can have any information in it, as its state is not checked.



Back to index

Switch Panels (70/0)
Tab

This will switch the hilite bar from one panel to another, assuming that both panels are visible. If the panel being switched to is a floppy drive (or another type of removeable media), then the boot sector is checked for changes. If any changes are detected, then in all likelyhood the disk has been changed, and the disk will be re-read and re-displayed automatically.



Back to index

Re-read Panel (71/0)
Ctrl-R

This will re-read the drive/directory, and re-display the panel contents, in case the file listing has changed. This is especially important if the panel is displaying the contents of a floppy disk, and the diskette has been swapped.



Back to index

Swap Panels (72/0)
Ctrl-U

This will swap all the left and the right panel information (drive, tagging). It does not swap the sort order, panel settings or filter options settings in the menus.



Back to index

Memory Requirements (73/0)

64COPY can be loaded in two ways, executing the 64COPY.EXE loader, or directly with the 64MAIN.EXE main program. Each has its strengths and drawbacks.

Using the small loader, you can conserve memory when executing command-line operations since the main program will be unloaded from memory first. The loader uses ~29 kilobytes which is very small overhead. However using the loader from a floppy disk would be inadviseable as the main program would have to be re-loaded each time a command was executed.

Using only the main program there is no re-load time after command execution. However, since the main program does not unload itself from memory before executing commands, it uses at least 230 kilobytes which typically leaves too little memory free for most programs.

Also, since the 64MAIN.EXE executable is an overlay program, running it from a floppy, whether using the loader or not, is not adviseable. An overlaid executable constantly loads modules from inside the EXE and doing any operation would keep the floppy spinning most of the time, slowing down the program execution.



64COPY requires close to 300 Kb of RAM. If you are running 64COPY from within a DOS box of Windows 2000 or XP, but not from a customized DOS shortcut, then do so now to try to maximize the free memory, and load most things into HMA (High Memory):

* Create a shortcut on your desktop to COMMAND.COM

* Get properties on the shortcut and go to the MEMORY tab

* My Settings are as follows:

    Conventional Memory                
Total: 640
Protected: checked
Initial Environment: 2048
Expanded (EMS) Memory
Total: None
Extended (XMS) Memory
Total: None
Uses HMA: checked
MS-DOS Protected Mode (DPMI) Memory
Total: Auto

* Most of the settings should be ok if left to their defaults except the Expanded (EMS) Memory. Set this to None.



Back to index

Jump to Root of Drive (74/0)
Alt-Backslash

This is a shortcut to get back to the root directory of any drive. It will bring you back to the parent starting directory that you were in.



Back to index

Panel File Selection Methods (75/0)
INS, *, -, +

There are several methods for tagging files in a panel. The first, and most common, is the INS key. This will select/deselect a single file. If held down, the key will repeat, allowing you to select more.

The second, and more powerful method, is the KEYPAD PLUS/MINUS keys. These allow the selection/deselection of groups of files, based on a "wildcard pattern". Entering a pattern like "*.txt" will match all filenames with the extension ".TXT" and tag (or untag). You can also use combinations of patterns, such as "*.txt *.doc" to match multiple groups of files.

+-------------- Select Files --------------+
| Enter wildcard patterns... |
| *.*_ |
|------------------------------------------|
| [ OK ] [ Cancel ] |
+------------------------------------------+

The third method, ALT KEYPAD PLUS/MINUS, sets all of the files on or off.

The fourth, KEYPAD STAR, inverts the present tags. If none are set, all will be set. If a few are set they will be unset, and all the rest will be set.



Back to index

Check Image Files (76/0)
Alt-F3

Here, we can check several types of image files, Disk (D64, D71, D81, D80 and D82), GCR disk (G64), Tape (T64), 4-pack or Sixpack ZipCodes, and CRT (cartridge) files. See the appropriate CheckXXX HELP section for more information.

You can tag several files at once, and check them altogether. Any files selected that cannot be checked will be un-hilited. You will then be asked to proceed.

+--------- Check Image Files --------+
| |
| "Action Replay 5.crt" |
| selected to check... |
| |
| OK to run the Check? |
| |
| [ ] Log "Check" findings |
| [ ] Overwrite old logs |
| [x] Check for dir x-link |
| [ ] Skip SEPARATOR files |
| [x] Enable file repair |
| [x] Do extra disk checks |
| [ ] Continuous output |
+------------------------------------+
| [ Ok ] [ Cancel ] |
+------------------------------------+

Log "Check" findings - Enable this option to log all the Check findings to a LOG file.

Overwrite old logs - Enable this option to overwrite the existing log files, creating new ones.

Check for dir x-link - This option only applies to disk images, and allows you to check and repair files that are cross-linked with the central directory.

Skip SEPARATOR files - This option only applies to disk images, and allows you to skip those files that appear to be directory separators, files which contain no data and are placeholders only.

Enable file repair - Disable this option to do a scan only of the selected files, no repairing will happen. When this option is enabled and an error occurs during the file scan, you will be asked how to repair it.

Do extra disk checks - This option only applies to disk images. Enable this option to always run the extra disk checks after the basic directory and file integrity scan. These tests include finding deleted files & lost chains, filling unused sectors with zero's and compressing the directory to free up directory sectors.

Continuous output - Enable this option to have the window continuously scroll, without a prompt & pause after each screen.



Back to index

CheckXXX Options (77/0)
Alt-F6

+-------------- CheckDisk/Tape/ZipCode --------------+
| + Logging ---------------------------------------+ |
| | [x] Log findings to file | |
| | [x] Overwrite old log files | |
| +------------------------------------------------+ |
| + Choose Disk Tests ---------+ + File Repair ----+ |
| | [x] Xlinked with directory | | ( ) Scan only | |
| | [ ] Skip SEPARATOR files | | (*) Scan/repair | |
| | [ ] Clear file slack space | +-----------------+ |
| | [x] Do extra disk checks | + Output ---------+ |
| | [x] Find deleted files | | [ ] Continuous | |
| | [x] Find lost chains | +-----------------+ |
| | [x] Zero unused sectors | |
| | [x] Compress directory | |
| +----------------------------+ |
+----------------------------------------------------+
| [ Ok ] [ Cancel ] [ Next ] [ Prev ] |
+----------------------------------------------------+

Log Findings to file - Whether or not a log file is to be kept when doing a CheckDisk, CheckTape or CheckZip operation.

Overwrite old log files - Instead of appending to the existing logs, enable this option to overwrite the existing log files.

Xlinked with directory - When selected, the CheckDisk routine will look for and report files that are cross-linked with any allocated directory sectors.

Skip SEPARATOR files - When directory separator files are detected, those that have a zero file size, typically point to 18/0, 18/1 or 0/0, and look like "----------------", these will be skipped as they are not valid files but just placeholders and cannot be validated.

Clear file slack space - When doing the initial file validate, and the last sector of a file is encountered, any unused space after the end of file will be zero'd out.

Do extra disk checks - Selecting this will allow the CheckDisk routine to run any of the following tests, provided they are also enabled.

Find deleted files - Scan's the directory for deleted files, and whether they can be recovered.

Find lost chains - Recovers any sectors which are not allocated, but exhibit signs of once belonging to a file.

Zero unused sectors - This will zero out any sector that is not allocated in the BAM, which will remove any garbage from old files, thus making the file more compressable.

Compress directory - Removes empty spaces in the directory, which can result in the directory track taking up less room.

File Repair - Whether to do a scan and repair, or simply to scan and report the findings on all files, with no repair.

Output - Enable this option to have the window continuously scroll, without a prompt & pause after each screen.



Back to index

Edit .EXT Extension File (78/0)
Ctrl-F4

This will call up the internal text editor with the path of the 64COPY.EXT file. If this file does not exist, a new one will be created.

This file stores all the extensions (and filenames) and what command/program to execute if you hit return on such a file. I have included a sample .EXT file with the distribution of 64COPY, and in it are some explanations as to how it is laid out. If you want to edit the EXT file, you can press CTRL-F4 and the file will be brought up in the internal editor, or you can find it and manually edit it.

If you have set up an association for a .TXT file, when you hit return on that file (docs.txt), whatever program you setup as the association will be executed, with the filename as the argument. The examples below show some of the options that can be used as filename.ext arguments. The first two are effectively the same, but the third will match up the "l*" part of the filename, along with the extension. Of either of them don't match, the associated command will not run.

   txt    : texteditor
.txt : texteditor
l*.txt : texteditor



The EXT file also supports several special '@' commands to use some of the internal editors of 64COPY. The case of the commands is not important. However, they are presented here in descending priority, meaning that if two commands are on the same line, in any order, than the one with the higher priority will be executed. If any of these commands are seen in the command area, it will take precedence over anything else.

  @EDIT  -  the internal text editor will be used. 
@VIEW - the internal file viewer will be used.
@HEX - the internal HEX editor will be used.
@DIS - the external Disassembler will be used.



Several '!' commands are allowed after the command portion of the line. These, when used, will expand out to be the following:

!.! - Include filename with extension (this is the default)

! (or !F) - Include just the filename, no extension

!E - Include just the file extension

!# - Include list of tagged files from the active panel on the command line

!@ - Include list of tagged files in the active window, if any tagged, sent in through the file 64COPY.LST, contained where 64COPY was executed from.

!A - Include active image file (i.e. BLAKHAWK.D64) if applicable

!: - Include only the drive letter (no directory path)

!\ - Include just the directory (no drive letter)

!D - Include directory of the active panel (without the ending '\' character. You must include this yourself)

!! - Include a '!' character

For more information on the layout of the extension file, see the section on External Support Files, or read the supplied 64COPY.EXT file for the description.



Back to index

Redraw screen (79/0)
Alt-F11

There may come a time where the screen gets corrupted (shifted up one line). Doing an ALT-F11 will remove all windows, and redraw the entire screen.

This screen corruption should not happen because of a program fault but due to *external* problems (i.e. system, or pressing CTRL-C & CTRL-BREAK).



Back to index

LEFT menu (80/0)

This is the menu which lets you customize the panel display for the LEFT panel. A "+" symbol means the option is active.

  Left                  
+----------------------+
|+ On/off Ctrl-F1 |
| Panel setup |
| drive Info |
| -------------------- |
|+ Name |
| eXtension |
| tiMe |
| Size |
| Unsorted |
| -------------------- |
|+ Ascending |
| dEscending |
| -------------------- |
| Re-read Ctrl-R |
| fiLter... Ctrl-F |
| Drive... Alt-F1 |
+----------------------+

On/Off - Turns the panel either on or off.

Panel Setup - Change the panel style and displayed options.

Drive Info - Shows the stats of the drive presently displayed in the panel.

Name...Unsorted - How the panel is being sorted. See the Sort Order topic for more information on sorting.

Ascending...Descending - Displays the panel in ascending (small to large, old to new, A-Z), or vice versa.

Re-read - Force the program to re-read the drive, and update the panel display

Filter - Change the group tagging rules and file display options.

Drive - Change the active drive for the LEFT panel.



Back to index

FILES menu (81/0)

This is most of the commands listed on the main Function key bar. It consists of functions which either act on files (editing, copying, moving), or allow you to alter the tagging.

  Files                       
+------------------------------+
| About 64COPY Ctrl-F12 |
| Help F1 |
| User menu F2 |
| View F3 |
| Edit F4 |
| Copy F5 |
| Rename/move F6 |
| Make directory F7 |
| Delete F8 |
| heX edit Alt-F4 |
| ---------------------------- |
| file aTtributes Ctrl-A |
| File information Ctrl-N |
| ---------------------------- |
| select Group Grey + |
| uNselect group Grey - |
| Invert selection Grey * |
| ---------------------------- |
| Quit F10 |
+------------------------------+

About 64COPY - Brings up the About... box for information about 64COPY like program version, memory available, etc.

Help - Brings up the HELP window for a specific topic or function

User Menu - Brings up the USER menu window

View - Brings up the VIEWER, to view the selected file

Edit - Brings up the TEXT editor

Copy - Brings up the COPY function, to copy files from one location to another.

Rename/Move - Brings up the Rename & Move function, used to either rename individual files, or move the to another location

Make directory - Allows you to create DOS directories

Delete - Brings up the DELETE function, where you can delete files

HEX Edit - Brings up the HEX Editor window, for either DOS or C64 files. Being in a disk image (D64, D71) will bring up the Disk HEX Editor

File Attributes - Brings up the ATTRIBUTE editor window, where you can change such attributes as READ ONLY, SYSTEM, HIDDEN, etc

File Information - Brings up the FILE INFORMATION window, where you can see the file size, attributes, and what image type the file is

Select Group - Allows you to tag/untag whole groups of files based on a wildcard pattern

Unselect Group - Clears the tags of the presently tagged files in a panel

Invert Selection - Flips the tagging of all files in the present panel. Whatever was selected will now not be, and whatever was not selected will now be

Quit - Quit 64COPY



Back to index

COMMANDS menu (82/0)

This menu consists mainly of program commands.

  Commands                  
+-------------------------------+
| Tagged total Alt-F5 |
| Compare files Ctrl-F5 |
| coMbine files Ctrl-F7 |
| spLit files Ctrl-F8 |
| conVert ROM images Alt-F10 |
| stRing search Ctrl-F9 |
| check dOs files Alt-F12 |
| Decode UU/HQX Alt-F12 |
| fix WAV file Alt-F12 |
| ----------------------------- |
| Find file Alt-F7 |
| History Alt-F8 |
| EGA lines Alt-F9 |
| ----------------------------- |
| Swap panels Ctrl-U |
| Panels on/off Ctrl-O |
+-------------------------------+

Tagged total - Shows the size of all tagged files, be they in DOS or in an image file.

Compare files - Allows you to compare two files, to see if they are different

Combine files - Allows you to combine many different files into one file. This is useful for smaller text files to be joined to make one large one

Split files - Splits up the selected file into chunks of a size that you define

Convert ROM files - Manipulate a ROM image by removing the load address, padding it up to a proper EPROM size, or convert it to a EPROM-friendly ASCII format.

String Search - Searches for text strings of a minimum length in any file. Useful for finding text strings in a binary file

Check DOS files - Verifies that all selected files and directories can be read. All errors found can be logged to a file

Decode UU/HQX - Decodes files stored in UUE or HQX format.

Fix WAV file - A custom function to remove the noise and glitches in a WAV file caused by a scratched disk.

Find File - Searches for file names by a wildcard pattern

History - Shows you the command-line history, what commands you have executed from the 64COPY command line

EGA lines - Switches the screen mode between 25, 43 and 50 line mode

Swap panels - Swaps all the contents of the left panel with the right panel. The cursor does not change panels

Panels on/off - Turns on/off all the panels. This is useful to see the contents of the screen behind the panels



Back to index

OPTIONS menu (83/0)

This menu is mainly for program configuration. Here we can change the settings, colors, EXT associations, panel layout & panel defaults, and some of the display options. A "+" symbol means the option is active.

  Options                       
+------------------------------+
| Configuration... Alt-F6 |
| cOlor scheme... Ctrl-F6 |
| Extension edit Ctrl-F4 |
| pAnel layout... |
| panel Defaults |
| ---------------------------- |
| pRogram Trace |
| ---------------------------- |
| Mini status |
|+ Full screen |
|+ Path prompt |
|+ fKey bar Ctrl-B |
|+ cLock & date |
|+ show Video mode |
| ---------------------------- |
| Save settings... |
+------------------------------+

Mini Status - This brings up the mini-status dialog box. From here, you can add/remove from the information lines that gets displayed at the bottom of the panels.

Full-Screen - This will change the panels from being full-screen in length, to being ~2/3 of the height of the screen. This can be useful if there is information behind the panels that you want to see, while still keeping some panel information available.

Path Prompt - This will remove the path portion from the command-line display.


Before: After:
+---- Title -----+ +---- Title -----+
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
+----------------+ +----------------+
D:\SAMPLES\D64> D>

Fkey-bar - If you want more screen real estate for the panel display, this will turn off the Fkey bar at the bottom of the screen, freeing up two extra lines. The key CTRL-B, executed from the command-line, will accomplish the same thing.

Clock & Date - This removes the clock display from the top menu bar.

Show Video Mode - In the pre-history of 64COPY, way back in the earliest releases of version 2.0, I included the display of the video mode in the menu bar, just so I knew what mode I was in. I have found it very handy, so I have never removed it. Here you can remove it if you want to.



Back to index

RIGHT menu (84/0)

This is the menu which lets you customize the panel display for the RIGHT panel. A "+" symbol means the option is active.

  Right                 
+----------------------+
|+ On/off Ctrl-F2 |
| Panel setup |
| drive Info |
| -------------------- |
|+ Name |
| eXtension |
| tiMe |
| Size |
| Unsorted |
| -------------------- |
|+ Ascending |
| dEscending |
| -------------------- |
| Re-read Ctrl-R |
| fiLter Ctrl-F |
| Drive... Alt-F2 |
+----------------------+

On/OFF - Turns the panel either on or off.

Panel Setup - Change the panel style and displayed options.

Drive Info - Shows the stats of the drive presently displayed in the panel.

Name...Unsorted - WHow the panel is being sorted. See the Sort Order topic for more information on sorting.

Ascending...Descending - Displays the panel in ascending (small to large, old to new, A-Z), or vice versa.

Re-read - Force the program to re-read the drive, and update the panel display

Filter - Change the group tagging rules and file display options.

Drive - Change the active drive for the RIGHT panel.



Back to index

Create D2M Partition (85/0)
F12

When inside of a D2M image, you can create any of the following partition types, depending on if there is enough free space:

+- Create New D2M Partition -+
| |
| Select partition type... |
| |
| 1 - NativePart |
| 2 - D64 (1541) |
| 3 - D71 (1571) |
| 4 - D81 (1581) |
+----------------------------+
| [ Ok ] [ Cancel ] |
+----------------------------+

Select the type of partition to create and if it can it will be created. Each partition type has other options when selected.




Create D2M Partition, Native (85/1)
F12

From here you can create a CMD/D2M native partition of a specified sector size

+------------------ Create NATIVE Partition -------------------+
| Enter new partition name... |
| native partn 13 |
| Create native partition of 3200 sectors. |
| Label:native partn 13 IDs:1p 1h |
|-Image Options------------------------------------------------|
| [ ] Format as a GEOS disk |
|--------------------------------------------------------------|
| [ Ok ] [ Cancel ] |
+--------------------------------------------------------------+

Enter the partition name and sector size of the new partition, then choose whether to format it as a GEOS disk and press OK to create the native partition.




Create D2M Partition, D64 (1541) (85/2)
F12

From here you can create a D64 (1541) partition (684 sectors used). No 40-track or adding error bytes are possible within this image type.

+------------------- Create 1541 Partition --------------------+
| Enter new partition name... |
| 1541 partn 13 |
| Label:1541 partn 13 IDs:03 2a |
|-Image Options------------------------------------------------|
| [ ] Use $4B $01 format |
| [ ] Format as a GEOS disk |
|--------------------------------------------------------------|
| [ Ok ] [ Cancel ] |
+--------------------------------------------------------------+

Enter the partition name, then choose whether to format it with the standard D64 pattern or format it as a GEOS disk. Then press OK to create the D64 partition.




Create D2M Partition, D71 (1571) or D81 (1581) (85/3)
F12

From here you can create a D71 (1571) partition (1368 sectors allocated) or a D81 (1581) partition (3200 sectors allocated).

+------------------- Create 15xx Partition --------------------+
| Enter new partition name... |
| 1571 partn 13 |
| Label:15xx partn 13 IDs:i3 2a |
|-Image Options------------------------------------------------|
| [ ] Format as a GEOS disk |
|--------------------------------------------------------------|
| [ Ok ] [ Cancel ] |
+--------------------------------------------------------------+

Enter the partition name, then choose whether to format it as a GEOS disk. Then press OK to create the 1571 or 1581 partition.



Back to index

Check Sixpack ZipCode for integrity (86/0)
Alt-F3

This is not a "check & correct" function (like most of the other CheckXXX routines), but it only checks and reports any possible errors it finds. If you are having problems UnZipCoding a set of 6-pack files (due to some error reported), try running CheckZipCode on the files and see where the error comes up. Knowing where the error is does not help much in fixing the file since the sixpack files are very complex, but its nice to know what is wrong nonetheless.

Below is a sample window showing the tracks and sectors being decoded, along with the errors detected.


Filename: 1!!BTR1
Scan mode: scan only
Load address: $03FF
Disk size: 35 tracks
Offs |Trk/Sec|Err#| Other Information
------------------------------------------------------------------
$0103 | 1/0 | | Sector ok |
$0B33 | 1/1 | | Sector ok |
$1563 | 1/2 | | Sector ok | Error in "off" bytes
$04D5 | 1/3 | | Sector ok |
$0F05 | 1/4 | | Sector ok |
$1935 | 1/5 | | Sector ok |
$08A7 | 1/6 | | Sector ok | Error in "off" bytes
$12D7 | 1/7 | | Sector ok |
$0249 | 1/8 | | Sector ok |
$0C79 | 1/9 | | Sector ok |
$16A9 | 1/10 | | Sector ok |
$061B | 1/11 | | Sector ok |
$104B | 1/12 | | Sector ok |
$1A7B | 1/13 | | Sector ok | Error in "off" bytes
$09ED | 1/14 | | Sector ok |
$141D | 1/15 | | Sector ok | Error in "off" bytes
$038F | 1/16 | | Sector ok |
$0DBF | 1/17 | | Sector ok |
$17EF | 1/18 | | Sector ok | Error in "off" bytes
$0761 | 1/19 | | Sector ok |
$1191 | 1/20 | | Sector ok |
$1CC1 | 2/0 | 23 | Bad data checksum |
$26F1 | 2/1 | 23 | Bad data checksum |
$3121 | 2/2 | 23 | Bad data checksum |
$2093 | 2/3 | 23 | Bad data checksum |
$2AC3 | 2/4 | 23 | Bad data checksum |
$34F3 | 2/5 | 23 | Bad data checksum |
$2465 | 2/6 | 23 | Bad data checksum |
$2E95 | 2/7 | 23 | Bad data checksum |
$1E07 | 2/8 | 23 | Bad data checksum |
$2837 | 2/9 | 23 | Bad data checksum |
...

There are several types of error information displayed above. In the first section of the line we have the detected disk sector error (none, 20, 21, 22, 23, 27). Error 29 is not detected here.

The "other information" displayed at the end of the line explains any other errors that occurred during the decoding of the sector data. When decoding GCR data, it is possible that the sector was read incorrectly, and we could end up with an error in the header block, data block, the "off" bytes, or also a wrong sector error#. Any error in the header or data block is considered bad. Any error in the "off" bytes is not a problem as these bytes are never used, but I thought it important to at least report this problem.



Back to index

Creating D81 sub-directories (87/0)

This function lets you create a new sub-directory in a D81 image. Note that partitions are not supported.

+---------------- Create New D81 Sub-Directory ----------------+
| Enter sub-directory name... |
| subdir00 |
| 3 tracks wide (min 3, max 3, 40 sectors/track) |
| 1 Start sub-directory at this track |
|--------------------------------------------------------------|
| [ OK ] [ DOS Dir ] [ Cancel ] |
+--------------------------------------------------------------+

Enter the width of the partition (in full tracks, with a minimum of 3 tracks) and the starting track location for the partition. The default values will be the size and track location of the largest free space. The track size is limited by te availabl space in the present image or partition.

Pressing DOS Dir will bring you to the Create DOS directory dialog box.



+------------------------- Attention! -------------------------+
| |
| Can't create a sub-directory at the track location and with |
| the size specified. Please check the values and try again. |
| |
|--------------------------------------------------------------|
| [ OK ] |
+--------------------------------------------------------------+

If you can't create a new sub-directory at the location or with the size specified, you will be given the above dialog.



+-------------------- Attention! --------------------+
| |
| No room left in D81 image for a new sub-directory. |
| |
|----------------------------------------------------|
| [ OK ] |
+----------------------------------------------------+

You get the above warning message when the image is too full, and no space is left to create a sub-directory.



Back to index

View GEOS File Info (88/0)
Ctrl-V

This viewer shows you the ICON of the GEOS file, along with such INFO block fields as:

* GEOS filetype * Created time/date * File size * Creator/description text fields * Program load/end/start addresses

This is a viewer only, there is no editing of any of the information.



Back to index

Change File Copy/Move Settings (89/0)
Alt-F6

This Configuration page covers the settings for the F5/F6 file copy/move function.

+-------- File Copy/Move Settings ---------+
| |
| [x] Retain date & time on file copies |
| [ ] Calculate size of selected files |
| [ ] Retry read on error, 1 times max. |
| [ ] "WipeFile" files before deleting |
| (*) Linear ( ) Random |
+------------------------------------------+
| [ ] Log DOS copy/move disk errors |
| Log:c:\copylog.txt |
+------------------------------------------+
| [ Ok ] [ Cancel ] [ Next ] [ Prev ] |
+------------------------------------------+

Retain date & time on file copies - Retain the creation time and date of all files, and especially directories, on a copy or a move.

Calculate size of selected files - When enabled, this figures out the size of the data to be worked on before anything is done. Useful for knowing how much data is about to be copied/moved.

Retry read on error - This forces the program to attempt to re-read a file if a read error occurs, up to the specified number of times. This could help in recovering some damaged files which would otherwise not be recovered.

Wipefile files before deleting - Removes the file information by overwriting it with a pattern, then remove the directory entry, making the file unrecoverable. This applies to DOS files only, not image files. The wipe pattern is selectable from "Linear" (00 01 02..., fairly fast) or "Random" (should be slower).

Log DOS copy/move disk errors - When doing a copy or a move, and a disk error occurs (read, write or access error), with this enabled you can write these errors to a file for future perusal, instead of having the error dialogs displayed. Below this checkbox is the entry box to type in the log path.



Back to index

Check DOS Files (90/0)
Alt-F12

This won't be a widely-used feature, as I wrote it for myself. I have stated elsewhere in the HELP topics that I use this program for DOS file recovery from damaged hard disks. Sometimes sections of a disk are not readable, and I would like a good way to simply scan for bad files, without having to actually copy them.

The best use of this routine could be checking the integrity of a CD-R/RW after a burn, or one that is questionable because of physical damage. You can select all the files/directories on the media and check it for readability. It can be used for almost any case of questionable media.

+-------------------- Check DOS Files ---------------------+
| Are you sure you want to check the selected items |
| for errors? This process might take a long time, |
| depending on what is being checked (i.e. damaged CD-ROM) |
|----------------------------------------------------------|
| [ ] Append errors to existing error log |
| [x] Log encountered disk errors to file |
| Log path:C:\checklog.txt |
|----------------------------------------------------------|
| [ Ok ] [ Cancel ] |
+----------------------------------------------------------+

All that will happen when it is run is the selected files/dirs will be scanned, all the files contained will be read, and any errors will be logged to the screen (or to a file if you select that). The resulting LOG file should contain all errors encountered.



Back to index

Check CRT Files (91/0)
Alt-F3

This routine returns a basic listing of the contents of CRT files, Commodore 64 cartridge files, each of which can contain many subsections. The header contents and all the CHIP (module) info is also shown.

The only fix at present is with the "header size" value. Many cartridges exist with an incorrect value (other than 64), and this routine will ask to set it to the correct value.


Filename: Fun Play.crt
Scan mode: repair/query
Signature: "C64 CARTRIDGE " (valid)
Header Size: 64 (valid)
CRT name: FUN PLAY
Type: Fun Play (type# 7)
Mode: standard
Version #: 01.00
EXROM line: active
GAME line: active
Module Info
LoadAdr | Typ | Bank | RomSize
-------------------------------
$8000 | RAM | 0 | $2000
$8000 | RAM | 1 | $2000
$8000 | RAM | 2 | $2000
$8000 | RAM | 3 | $2000
$8000 | RAM | 4 | $2000
$8000 | RAM | 5 | $2000
$8000 | RAM | 6 | $2000
$8000 | RAM | 7 | $2000
$8000 | RAM | 8 | $2000
$8000 | RAM | 9 | $2000
$8000 | RAM | 10 | $2000
$8000 | RAM | 11 | $2000
$8000 | RAM | 12 | $2000
$8000 | RAM | 13 | $2000
$8000 | RAM | 14 | $2000
$8000 | RAM | 15 | $2000

The BANK value is adjusted from the actual value in the CRT file. When a FUNPLAY cartridge is used, the value stored in the CRT must be "massaged" to get the actual BANK value. Most other cartridges have the actual BANK value stored in the CRT in literal form.



Back to index

Check G64 (GCR) Files (92/0)
Alt-F3

This is not a "check & correct" function (like some of the other CheckXXX routines), but it only dumps out the header of the G64, there is no error checking.

G64 files are bit copies of 1541 disks (usually, although other disks can be emulated as well), and as such there next to no error checking that can be done, except verifying if the header is intact.

Below is the output from a sample G64 file.


Filename: Dolphin-DOS-20-40.g64
Scan mode: scan only
Signature: "GCR-1541" (valid)
G64 version: $00
Track count: 84 (including half-tracks)
Track size: 7928 bytes
Track|Sect| Offset | Comment
-----|----|---------|---------------------------------------------
18.0 | 0 | | Got format ID's ($35, $34), now analysing...
-----|----|---------|---------------------------------------------
1.0 | |$000002AC| Track data: $000002AE to $000020AD
| | | Speed zone value: 3
| | | Track size: 7680 bytes
| |$000002AE| Found 40 bit SYNC mark
| 5 |$000002B3| Header ID found ($52), read header block
| | | Found gap of ~11 bytes
| |$000002C7| Found 32 bit SYNC mark
| 5 |$000002CB| Data ID found ($55), read data block
| | | GCR decode error in data block
| | | Found gap of ~1056 bytes
| |$0000082F| Found 44 bit SYNC mark
| 15 |$00000835| Header ID found ($52), read header block
| | | Found gap of ~11 bytes
| |$00000849| Found 32 bit SYNC mark
| 15 |$0000084D| Data ID found ($55), read data block
| | | GCR decode error in data block
| | | Found gap of ~5916 bytes
| |$000002AE| End of track
| 0 | | Error 20 (Header ID not found)
| 1 | | Error 20 (Header ID not found)
| 2 | | Error 20 (Header ID not found)
| 3 | | Error 20 (Header ID not found)
| 4 | | Error 20 (Header ID not found)
| 6 | | Error 20 (Header ID not found)
| 7 | | Error 20 (Header ID not found)
| 8 | | Error 20 (Header ID not found)
| 9 | | Error 20 (Header ID not found)
| 10 | | Error 20 (Header ID not found)
| 11 | | Error 20 (Header ID not found)
| 12 | | Error 20 (Header ID not found)
| 13 | | Error 20 (Header ID not found)
| 14 | | Error 20 (Header ID not found)
| 16 | | Error 20 (Header ID not found)
-----|----|---------|---------------------------------------------
1.5 | | | Skipped, no track data
-----|----|---------|---------------------------------------------
2.0 | |$000021A6| Track data: $000021A8 to $00003FB3
| | | Speed zone value: 3
| | | Track size: 7692 bytes
| | | Error 21 (No sync found)
-----|----|---------|---------------------------------------------

The Track column is the track being examined, the Sect column is the actual sector number being examined. The Offset column is the offset where a particular event (SYNC, gap, data, header) occurred, and the Comment column shows in plain text what is being seen.

The first thing scanned is track 18 to obtain the low-level formatting ID's in order to detect error 29. After that, scanning starts at track 1 and proceeds up to the maximum track of 42.5. The entire track is scanned, starting with a SYNC mark, and all associated data. Any errors or anomolies are displayed under the Comments column in reverse video so they are easy to spot. Empty tracks (like track 1.5 in the above sample) are shown, but there is nothing to decode.

Errors found are displayed in their order of precedence with the order (from high to low) being 21, 20, 27, 29, 22, 23. If there are multiple errors in a sector, only the highest error will be shown.



Back to index

Process Files (93/0)

This topic deals with how files are handled when they are selected by either pressing RETURN on them or double clicking with the mouse.

Several different processes come into play. The order of precedence is as follows:

1. If there is anything on the command-line, it will be executed first. The command will also be recorded in the command history.

2. If the file is a ".." up-directory, this will be done.

3. File extensions which are defined internally are handled. This includes all image files (D64, T64, LNX etc).

4. Any DOS executables (EXE, COM, BAT) are now handled. These are also recorded in the command history.

5. The EXT file is now searched for a match of the file extension, and what command is associated with it. If there is one, it will be executed.

6. At this point, if nothing else has been done, nothing else will happen. This means no command has been defined for the file extension.



Image files (D64, T64, etc) are handled in a special way. They are detected by the file extension, but are also put through a series of rules to determine if they are the file type that they claim to be.

Some files may use the same extensions as image files but are not. In any case, the files are checked for specific "signatures" to determine if they are what they claim to be.

Disk images (D64, D71, D81, D80, D82, D2M, X64) are checked by size only, as they contain no recognizable signature. Seeing as there are quite a number of varieties of disks (with or without error bytes, extended tracks), I now check the size of the file to see if it fits in a range that applies to the file extension.

File Type               File Size Range
---------------------- ---------------
D64 (normal) >= 174848
D64 (extended) 196608-197375
D64 (error bytes) 175531-196607
D64 (error & extended) >= 197376

D71 (normal) >= 349696
D71 (error bytes) >= 351062

D81 (normal) >= 819200
D81 (error bytes) >= 822400
D80 (normal) >= 533248
D80 (error bytes) >= 535331
D82 (normal) >=1066496
D82 (error bytes) >=1070662
D2M (normal) >=1658880

X64 (D64 standard only) == 174912



Back to index

Convert GCR/F64 Files (94/0)
F11

This is a special conversion function designed to convert most of the GCR formats (G64, ZipCode Sixpack) as well as D64 with error bytes and F64 error byte files between each other. You cannot convert to a F64/D64 pair as 1) no emulator supports them, 2) the F64 error table is not complete and might not be completely accurate, and 3) how FCopy actually determines some of the error codes is unknown.

Converting these formats is not an exact science. F64 has been almost fully decoded but there still could be problems. G64, being a low-level bit copy of a 1541 disk, can contain anything wrt protection and some of it might not convert properly to D64 or ZipCode Sixpack.

Use this function at your own risk, keeping in mind that converting something from its native format will not likely result in a 100% working destination.




Convert D64 & errors (94/1)
F11

Here we convert a D64 (with or without error bytes) to one of two formats. If the D64 does not have error bytes attached, no errors will be generated in the destination file.

Doing this would seem to be useless because if an emulator doesn't want to work with an existing D64, then converting it to a G64 or a ZipCode Sixpack won't gain you anything. The simple error codes stored with the D64 are not enough to reproduce the complex protection schemes that many software programs used. You will only end up with a larger file that still only contains the basic errors that the D64 had.

+-------- Convert D64 File --------+
| |
| "DISK0001.D64" selected. |
| Choose destination format... |
| |
| 1- G64 GCR disk image |
| 2- ZipCode 6-pack (GCR) |
| |
+----------------------------------+
| [ Ok ] [ No ] [ Cancel ] |
+----------------------------------+

Select your destination format (ZipCode Sixpack or G64), change the destination filename/path if you need to, and press OK to convert.




Convert F64 & D64 (94/2)
F11

Here we convert an F64 error file and its associated D64 image to one of three formats. As is mentioned elsewhere, converting from F64 is not an exact science as some of the error codes are not understood, and could be documented wrong. Also errors 20 and 29 are not supported so any protection method that uses them will not be reproduced properly.

+----- Convert F64 & D64 File -----+
| |
| "DISK0001.F64" selected. |
| Choose destination format... |
| |
| 1- G64 GCR disk image |
| 2- ZipCode 6-pack (GCR) |
| 3- D64 with error block |
| |
+----------------------------------+
| [ Ok ] [ No ] [ Cancel ] |
+----------------------------------+

Select your destination type (G64, ZipCode Sixpack or D64), change the destination filename/path if you want to and press OK to convert.




Convert G64 (94/3)
F11

Here you can convert from G64 to one of two destination formats. G64 conversion is problematic at best as any complex protection scheme will not likely convert down well. G64 is the most complex format to work with, being a bit-level copy of a 1541 disk.

Anything stored in the top two tracks (41 and 42) will not convert as the destination formats only support up to 40 tracks. Also, any information in the half tracks will be ignored along with custom speed zone changes.

+-------- Convert G64 File --------+
| |
| "example.g64" selected. |
| Choose destination format... |
| |
| 1- ZipCode 6-pack (GCR) |
| 2- D64 with error block |
| |
| [ ] Limit dest to 35 tracks |
| |
+----------------------------------+
| [ Ok ] [ No ] [ Cancel ] |
+----------------------------------+

Select the destination format you want (D64 with error bytes or ZipCode Sixpack), change the filename/path if you need to and press OK to convert.

Enable Limit dest to 35 tracks to keep the destinations files to no more than 35 tracks. This does mean that all information contained in the G64 above track 35 will be lost.




Convert Zipcode Sixpack (94/4)
F11

Here you can convert a ZipCode Sixpack file one of two formats. The Sixpack format is not supported by too many emulators, so conversion is a good thing.

Converting it to a G64 will result in a mostly-complete G64, except that Sixpack doesn't store all the information that can be held on a track. However, most of the data is there, so the conversion is quite accurate.

Conversion to G64 should work quite well, and going the other way (G64 to Sixpack) should be ok as well. There is always the possibility of losing something, however.

+-- Convert ZipCode Sixpack File --+
| |
| "1!!BTR1" selected. |
| Choose destination format... |
| |
| 1- G64 GCR disk image |
| 2- D64 with error block |
| |
+----------------------------------+
| [ Ok ] [ No ] [ Cancel ] |
+----------------------------------+

Select your destination format (D64 with error bytes or G64), change the destination filename/path if you need to and pres OK to convert.



Back to index

Make CMD/D2M Subdirectories (95/0)
F7

D2M native partitions and DNP images allow for a nested directory structure much like DOS does. Simply enter the name of the subdirectory to create, and if you need it created for GEOS you can select that option as well.

+----------------- Create New CMD Sub-Directory -----------------+
| Enter sub-directory name... |
| subdir35 |
| [ ] Create this directory as GEOS |
|----------------------------------------------------------------|
| [ Ok ] [ Cancel ] |
+----------------------------------------------------------------+



Back to index

Decoding UU & HQX (106/0)
Alt-F10

This function decodes HQX and UU encoded files. It is fairly primitive in its abilities, and is not particularly fast, but it gets the job done.

The UU decode function only supports single-file UU files, not the normal multi-file ones that are seen on the internet.

This is the first dialog box you get. You can change the destination filename and path. The filename is pulled from the source file header, so it might not be at all similar as the DOS filename.

+----------------------- Decode xxx File ------------------------+
| Decode contents of the xxx file to... |
| D:\PETE\64COPY\Illustration |
|----------------------------------------------------------------|
| [ Ok ] [ Cancel ] |
+----------------------------------------------------------------+



This is the dailog box for HQX status during decoding. Some of the fields, such as the "Act CRC", are not yet used because I do not know how to calculate the value.

+---------------------- Decoding HQX File -----------------------+
| Source:sample.hqx |
| Dest:01Schubert__Allegro_.mp3 |
| Data Size:29,282,237 Data CRC: Act. CRC: |
| Res Size:0 Res CRC: Act. CRC: |
| |
| ********************************* |
| 0%----------------------------50%-------------------------100% |
+----------------------------------------------------------------+

This is the decode status dialog box for UU decode. There's very little to say here.

+----------------------- Decoding UU File -----------------------+
| Source:01.uu |
| Dest:02.mp3 |
| |
| ********************** |
| 0%----------------------------50%-------------------------100% |
+----------------------------------------------------------------+



Back to index

Combining Files (107/0)
Ctrl-F7

+------------------------ Combine Files -------------------------+
| Combine 9 tagged files to... |
| D:\EDRIVE~1\PETE\64COPY\HELP\64COPY.CLR |
|----------------------------------------------------------------|
| [ Ok ] [ Cancel ] |
+----------------------------------------------------------------+

This is a very simple file combiner, with almost no smarts to it. It will simply combine the files you tag, in the order they appear in the panel, into one file. All you do is tag the files you want, supply a filename, and the files will be combined.

The combining is done in binary mode, so EOF symbols at the end of text documents will not be removed.



Back to index

Splitting Files (108/0)
Ctrl-F8

This is a fairly rudimentary file splitting function. It can break files into parts, either by specifying the number of parts to break it into, or the part size in either bytes, kilobytes or megabytes.

+-------------------------- Split File --------------------------+
| Split file and save filename as (ext will be auto-added)... |
| D:\PETE\64COPY\1541 |
|-Split Details--------------------------------------------------|
| (*) Split into 2 parts |
| ( ) Split into parts by size... |
| (*) Byte sized parts:4096 |
| ( ) Kb sized parts :1400 |
| ( ) Mb sized parts :1 |
|----------------------------------------------------------------|
| [ Ok ] [ Cancel ] |
+----------------------------------------------------------------+

The destination filename is changeable but the extension starts as 001 and auto-increments to 999. You can change the names after split is finished. Note that no file can be split into more than 999 segments,

Back to index

EMULATOR menu (109/0)

This menu consists of all the emulator-related operations.

  Emulator                       
+-------------------------------+
| Create image F12 |
| Format image Shift-F1 |
| cHeck image Alt-F3 |
| ----------------------------- |
| cOnvert C64 F11 |
| Disk HEX edit Alt-F4 |
| disAssemble Shift-F4 |
| coNvert CBM text Shift-F9 |
| BAM edit Shift-F11 |
| change Label Shift-F10 |
| Unlist Shift-F3 |
| disk diR edit Shift-F2 |
| ----------------------------- |
| View GEOS info Ctrl-V |
+-------------------------------+

Create image - Create a new blank image file (D64, T64, LNX, etc)

Format image - Erases the old contents of an existing image file, making it like new

Check image - Checks the internal structure of D64, T64 and more for errors, and tries to correct them

Convert C64 - Converts files between various formats (D64, T64, LNX, ARK, etc)

Disk HEX editor - A disk-image HEX editor, allowing you to edit sectors in disk images (D64, X64, D71 etc)

Disassemble - Brings up the 6502 Disassembler, to reverse engineer an assembly file

Convert CBM text - A simple converter between common C64 word processor formats and DOS text

BAM Edit - Allows you to edit the BAM (block availability map) of a disk image

Change Label - Allows you to change the label on a image type that supports labels. This cannot change the label on a DOS drive.

Unlist - Displays the listing of a BASIC file

Disk DIR edit - Allows you to customize a disk image directory, adding separators, etc

View GEOS info - Shows the header information of a GEOS file, including the ICON, block size, etc



Back to index

String Search (110/0)
Ctrl-F9

+----------- String Search ------------+
| |
| Search for text strings in... |
| "CHANGES.TXT" |
| |
| Minimum string length: 5 chars |
| [ ] Include punctuation & symbols |
| [ ] Continuous output |
+--------------------------------------+
| [ ] Log results to file |
| Path:RESULTS.LOG |
+--------------------------------------+
| [ Ok ] [ Cancel ] |
+--------------------------------------+

This routine searches for text strings inside of a file. This can be very handy when looking for text inside of binary files such as executables. You can specify the minimum length of the text string to find and whether or not to include punctuation symbols (i.e. commas, periods, dashes, etc). You can also log the findings to a file, in case the screen output isn't good enough.



Back to index

Custom & Unique Functions (111/0)
Alt-F10

+----- Custom & Unique Functions ------+
| |
| Select your custom function... |
| |
| 1 - Check DOS files/dirs |
| 2 - Decode UU/HQX files |
| 3 - Fix WAV file |
| |
+--------------------------------------+
| [ Ok ] [ Cancel ] |
+--------------------------------------+

This is a launch-pad for some of the more esoteric & custom functions in 64Copy. Select the function you need and click OK.

Back to index

Introduction (128/0)

64COPY, Written by Peter Schepers

64COPY is an all-in-one general purpose file converter and DOS maintainance package. Its intended use is to convert the various files that exist for the C64 emulators. Files like D64, T64, LNX (and many others!) can be converted to whatever format you need for your favorite emulator, or for use on the real C64. You still need to get whatever emulator package you want in order to use the files you have as 64COPY does not provide any emulator functionality.

The image types listed below are what 64COPY fully supports, reading, writing and modifying.

D64, X64, D71, D80, D82, D81, D2M, DNP (disk images)
T64 (tapes)
LNX (LyNX, Ultimate Lynx)
PC64 (P/R/U/Sxx)
Raw DOS binaries
Disk-packed ZipCode (4 or 5 sections)



G64, ZipCode Sixpack and D64 (with or without F64 files) images can be converted between D64 images, ZipCode Sixpack files and G64 images, but G64 and ZipCode6 cannot be opened like a directory. Note that you can't convert to an F64/D64 pair, only from.

Diskpacked ZipCode can be converted to/from D64 (and vice versa) by pressing F11 when not inside the image file. I also support them like a DOS directory. Hitting return on them lets you inside, and you can then copy files out, but they are read-only at this point.



The following image type is supported half-way. You can create and copy out of them, but you can't remove or add file to it once it is created.

  ARKive (ARK) (not the SRK variant)



The following images are supported read-only. These images cannot be modified or created, you can only copy out of them.

Cartridge (CRT) (CHIP module extraction)  
LiBRary (LBR) (C64 only)
ARChive (ARC) (not the IBM PC .ARC files)
Self-Dissolving Archive (SDA)
SPYne archives (SPY)
Filepacked ZipCode
F64 error files associated with D64 images



These files are supported in a display-only manner, where you can get a file listing of the contents, but no conversion, extraction or file modification. In the future I hope to include some form of extraction, especially for WRA and LHA.

LHArc (LHA/LZH/SFX) compressed archives
WRAptor (WRA) compressed archives
Compressed ARKive (SRK)



These files are not supported at all by 64COPY. It is hoped that in the future I will be able to allow some limited extraction support for them, but only time will tell. For now, you must use alternate utilities (the native C64 ones possibly) to work with them.

PKzip (ZIP) compressed archives    
Compression Kit (CKIT) files
GEOS files
ConVerT (CVT) GEOS conversion files



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

64COPY also provides the following:

* Windows long filename compliant (when in a Win9x DOS-box)

* Create/Format Image Files

* CheckDisk (D64, X64, D71, D81, D80, D82, DNP, D2M), CheckTape (T64), CheckZipCode (Diskpacked and Sixpack), to verify and correct errors in these images (ALT-F3). CheckF64 (for F64 files), CheckCRT (for cartridge files) and CheckG64 (for G64 images) only analyse and report what problems are found without fixing anything.

* 6502 Disassembler (SHIFT-F4)

* Disk HEX Editor (ALT-F4, when in a disk image)

* Disk Directory Customizer (SHIFT-F2)

* Disk BAM and Error-byte Editor

* PETASCII to ASCII Text File Conversion (SHIFT-F9)

* View the ICON and other info on GEOS files (CTRL-V)

* DOS Text File Editor (F4)

* DOS File Viewer (F3)

* HEX Editor (ALT-F4)

* DOS copy/move/delete/attribute commands

* Check DOS files for integrity (ALT-F12)

* DOS file SPLIT & COMBINE facility

* Fully user configurable (colors, settings, panel layout)



Back to index

Disclaimer and User Liscence! (129/0)

64COPY is shareware, not freeware, postcard-ware, etc. It is not guaranteed to work under any circumstances, but appears to work under most. It has been tested on many different hardware platforms where I work, and anything that comes up as incorrect has been fixed. This method has caught many wierd video and drive bugs (like network drives, plasma screens, strange video modes, etc). If this program fails to work for you, I will not be held liable for any loss of information, time, etc. You use this program at your own risk (as I do all the time).

This program is constantly tested/used on several platforms. If it works under these conditions, it should work anywhere.

My home system: - An AMD Athlon XP 64-bit system running Windows XP 32-bit with an ATI 9000 All-in-wonder video card, 1Gb RAM, a 52x IDE CD-ROM & 40x burner, Soundblaster Live, and several assorted PATA and SATA hard drives.

My work system: - A networked Pentium 4 2.8 Ghz running Windows XP with an ATI Radeon 7000 video card, 512Mb RAM, a 52x IDE CD burner, a 4x DVD burner and a Soundblaster PCI card.

It works on my ATI card in mono mode, but I have not tested it on an real MDA or Hercules card. In the shop where I work, we repair many PC compatibles, and any chance I get I try this program out. So far, anything that I have found wrong, I have fixed.



Back to index

Shareware Cost (130/0)

Since the program is shareware, you can continue to use the program for 30 days, worry-free. If you like it, and want to continue using it worry-free, please pay for it. This program has taken a lot of time, testing, learning and correcting to make it what it is.

If you like this program, please send me something for it, even a token amount. A good starting amount would be USD $20, and there's multiple ways to get the money to me:

Money Order: It does cost you extra to get one. but doesn't cost me to cash it

PayPal: This is a convenient method for some. Simply transfer the funds into my PayPal account, schepers@ist.uwaterloo.ca

Cheque: Old fashioned, and possibly problematic for myself when I try to cash it



Back to index

Command-line options (131/0)

If you are bound and determined to run 64COPY on a laptop, portable or luggable, without a color screen, it would be advisable to initially run the program with the "/m" switch (i.e. "64COPY /M"). This will force the program to start in MONOCHROME mode, thus making the screens visible.

On most monochrome portables, the screen does not display color gradients very well, so most panels/windows will not be visible. There is also no way for the program to tell what type of machine you are running on (portable, desktop, tower). The only thing you can tell is if the video mode is monochrome or color. However, monochrome portables, when queried about their video mode, will typically respond that they have a color screen attached, even though they don't.

The supported switches are:


/m - for Monochrome mode
/c - for Color mode
/q - for Quiet mode (don't display the "Welcome" box)
/? - the command-line switches help screen

I also allow the passing of one image name for display in the left (default) panel.

A special version of the program, called the debug version, supports another switch:

  /l - Logging (debug) mode                            

See the section on Program Debug Logging for more info.



Back to index

Program philosophy (132/0)

From the moment I started developing 64COPY, I wanted to create a very useful and functional program that the whole emulator community would enjoy, not only for manipulating C64 files, but general DOS useage as well. At first (version 1.0), the program was only really useful for PC64 (C64Neu) files, had little functionality, and was driven by ANSI screen-drawing. By the time 2.00 rolled out, most of those limitations were gone.

I didn't want to take the same route as the author of Star Commander did with the external utilities (Star Zip, Star LHA, Star Lynx, etc). The original design goals for the two programs were different where Joe (SC author) only included functions *directly* related to emulation in the program and all else went as external utilities. The external utilities do have their place, and I can only praise Joe for his efforts as I also use them.

Limiting the program to certain tasks, and leaving the rest for external programs does cause distribution problems, as you now have to manage multiple programs, but it does also have its advantages. Joe has now included most, if not all, of the functionality of his external utilities into the program.

One exception I have made to my philosophy of a single-file utility is the 6502 Disassembler. In order to make it comprehensive I needed all the memory I could muster, and so it has been turned into an external module, only callable by 64COPY.

So, the development of 64COPY marches on, trying to encompass everything I come across. To accomplish this, the 64MAIN.EXE is in "overlay" format. This means I cannot compress the EXE file (with PKLITE, WWPACK, DIET, etc), but is does have the advantage of using less RAM, even though the executable is greater than 640k. It also has the disadvantage of not being able to run effectively off of floppy, as I have to do from time to time.



Back to index

Other Notes (133/0)

This topic deals with program features and quirks that you might encounter.




Theory of Operations (133/1)

64COPY works on the premise of from and to (or source and destination) directories and drives. Wherever the moveable hilite bar is situated is the from location, the opposite panel drive/path is the to location. This design makes it very easy for the user to move objects around, since typing in the destination drive/path is not necessary, assuming the "to" location is already displayed. Functions such as Copy, Move, Rename/Move and Convert work on this premise.




Screen Layout (133/2)

Anyone familiar with Norton Commander will understand how to operate the program once it comes up. It does takes some familiarity with the F-keys, and the key definitions for the panels just to get somewhere. Be patient, as once you learn how to use it, you will find that the Norton method of file/directory navigation is very powerful!




System Requirements (133/3)

The minimum machine required is a 386 with an AT-style keyboard and DOS 3.1. This program should not work on an XT or 286 as it is compiled for a 386 or higher. It also should not work with XT's, since the program uses the extended scan codes that the AT keyboard puts out (F11, F12) and XT's don't. I have not had the chance to work on any XT's lately (and really wouldn't want to try), so no testing could be done, but it did work on my spare 386sx/16 that I used to use as a testing station.

The memory requirements are the most important here. Right now, it uses ~320kb of memory, even though when you run 64MAIN.EXE by itself and do a "MEM /C", it shows the program only using ~240kb. As I continue to add features, the memory useage will continue to increase, but utilitizing the overlay EXE format lets me pack in a lot of features into a large EXE, while still keeping the program around 240kb in memory.

Disk useage is only a few Kbytes more than the program size itself, since certain files are created automatically by the program. Most of them are small and inconsequential in size. If you want more info on them, see the section regarding Support Files.




Screen Size Requirements (133/4)

Early in the history of the program, I had hard-coded most of the routines for an 80 column screen, no more and no less. I began to realize that this was an unrealistic limitation, seeing as 80 columns is only one of several different sizes that PC video cards can do. I have used 132 columns (albeit rarely, its rather hard to read), and have also now seen a 90 column mode. I did remove the hard-coded sections some time ago, and made them flexible, but never had the chance to test how the program would react to a screen greater than 80 columns, until recently.

I downloaded some font editors, and one of them included a COM file called VGA90, which changed the video size to 90 columns. I ran it and the program seemed to work. Neat, actually!




Panel Limitations (133/5)

I have set the limit on displayable filenames to 799 (for now, may change in the future). The original release allowed you to work with directories and T64 images of up to 1499 files (which are incredibly cumbersome to use). The amount of memory I saved is being used for more features, and I have only encountered a few directories with >600 files, one of which is the Netscape CACHE directory.




INSert Key Repeat (133/6)

On every DOS machine, the INSERT key is one that the BIOS does not repeat. It would seem to be no use to repeat it as it only toggles insert mode on and off, but with 64COPY it would be useful for panel selection. Most of todays NC clones have this feature now, but they don't work under OS/2. My method works under *any* OS that I know of, but has not been extensively tested. The worst that will happen is it will not repeat, or repeat too fast, but the key will always work at least once.




Filename Conversion Method (133/7)

In the early days of the C64 emulators, there existed a emulator called C64Neu (later called PC64). It used a very unique algorithm for compressing the Commodore 16 character filenames down to the 8.3 DOS limitations. This is the method I use when a C64 file is being converted to another format, and a name is needed for the DOS component.




Common Clipboard (133/8)

This program also incorporates a clipboard for copy/pasting information between the various editors (such as the Text, HEX, Disk HEX Editor and the Disk Directory Editor). As an example, you can copy data from any of the HEX editors and paste is back anywhere. Text can be copied from the Text editor and pasted into the HEX editor.

Probably the most useful thing here is the pasting of HEX data into the Text editor. Normally, you would get gibberish, as HEX information is rarely text-readable. 64COPY will know when you are trying to do this, and offer to convert the HEX data into displayable characters in the form of a HEX dump, in ASCII format. You will then end up with a listing like "00 5F E4 FF C5" instead of unreadable codes.

I have defined three types of information that the clipboard understands. First is TEXT, which is info that would be copied from the text editor. Second is HEX, from either the HEX editor or the Disk HEX editor. Third is DIR, used in the Disk Directory Editor. DIR is basically HEX, but has some subtle changes. The program knows what type has been copied into the clipboard, and will warn you when you try to paste non-native data (HEX into TEXT, TEXT into DIR).




WipeFile (133/9)

This is one of those special features which came about because of how I use the program. When doing maintenance on someone elses system this program will be used as a navigator/file manager, and also as a backup/recovery program (from one hard disk to another, by whatever means). When I have finished with the program, it is prudent to remove all evidence of its useage. It is also useful for removing *any* file you don't like, as there is NO WAY you will ever get the data back. Just try it!




Opening Files in Sharing Mode (133/10)

As of version 2.20, I converted many of the file reading operations to shared mode, where several applications may open the file at once. Note, this really only applies to that are being read only. If a file is going to be modified, the file is accessed normally. This doesn't work all the time as PC64, when it opens a D64 in its File Manager window opens it in read/write mode, meaning I can't open it up in 64COPY. However, using shared mode means I can now read (not edit) log files which are open by the OS for viewing, which was not possible before. If a file is not openable in shared mode, I can't open it.




First Time Pause dialog (133/11)

In most of the versions of 64COPY previous to 3.00, there was as really annoying delay when executing the program. When you typed in the name of the program and hit return to execute it, the computer would load the program, and then sit for about 1.5 - 2 seconds, apparently doing nothing. It was very noticible when you wanted to execute programs from the 64COPY command-line, and you had to wait for that 1-2 seconds for the program re-load each time.

Without getting too technical, it was found that the Watcom compiler itself was inserting this delay when a certain function (DELAY) is used. Upon the removal of this function, the initial time wait when executing the program went away.

Since I removed this DELAY Watcom routine, I had to replace it with one of my own, but I tried to make it very invisible. When the program is executed, and the first call to my PAUSE function occurs, the DELAY value is calculated. This will occur only *once* when the program is running, and you will be informed of this happening with the dialog box "First Time Pause". It may take time to get use to it, but it is necessary. If you need to re-calculate the delay value, go to the Miscellaneous page of the Configuration, and click the "Re-calc" button.

So my hat (if I had one) is off to Joe Forster (SC) for his work and effort in finding this nagging problem. As he said, "I'm just happy to help out those that also use 64COPY.". Thanks, Joe!



Back to index

Differences from Norton Commander (134/0)

I did model the program after Norton Commander (NC), since I found it to be the best for file maintenance, and being very familiar with it didn't hurt either.

However, modelling does not mean "copying" or "cloning". I did not strive to make it look 100% like NC, rather only have its operations similar. Some of the keys don't work the way they do in NC (I support the F11/F12 keys, the F2 user menu is fairly different, etc).

Most of the changes, from the perspective of a die-hard NC user will likely be annoying (at the very least), to downright frustrating. Oh well, its not meant to be NC, just work like it.



Back to index

Obtaining the latest release (135/0)

For any new or test releases, my own web site would be the first place to check. This program is constantly under development, and I do periodically release new or alpha testing versions:

http://www.64copy.com



Pontus Berg's Fairlight site is another spot where the newest release version is available:

http://www.fairlight.to

Not only will you find the latest version of 64COPY on Pontus', but many other useful utilities, both C64 and DOS based, and games. His site is well worth the visit!



Back to index

Miscellaneous Things (136/0)

This area covers miscellaneous details and subjects that don't fit anywhere else.



Back to index

Program particulars (137/0)

This sections deals with functions and operations which are unique to 64COPY.



Back to index

Dedication (138/0)

This is the original dedication I wrote when I started to code up 64COPY. It precedes the code in my main C file, "64MAIN". I don't know why I never included it in previous versions of HELP, but as of version 3.4, here it is.

------------------------
This program was inspired by David Ashley's CCOPY and CDIR. Simple
little programs which did what they should, but I thought that a
more intuitive method could be found. I felt that combining the
two programs, and reworking the human interface was in order,
since I am a stickler for efficiency. I hope this program is
useful, and bug-free (don't we all!)
Peter Schepers, May 1994
I dedicate this program to all those who were and are crazy about
the C64, like I was, and hope the emulators live on...

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



Back to index

Features & Shortcuts (139/0)

Here I will cover some very special features and shortcuts that might prove very useful in the every day use of 64COPY. Some of these you might not be aware of, so try them out.

* To change both panel heights simultaneously, press ALT and CURSOR UP or DOWN Arrow together.

* To change a panel style (from the normal NC-like layout to my alternate one) press ALT and RIGHT MOUSE BUTTON together in the panel you want to change.

* To change the a panel sort method, press ALT and LEFT MOUSE BUTTON together in the column you would like to have sorted first.

* To immediately activate the screen saver, either roll the mouse pointer to the top right corner of the screen, or press CTRL-F10.

* Check out the Panel Layout Editor, accessible from the OPTIONS menu. This allows you to completely customize the panel display to your specifications.

* To effectively use 64COPY in a windowed DOS environment under Windows, it is recommended to turn on the Quick Edit feature of the DOS box. This makes the mouse pop-up menus work much better. No special switches are necessary to use 64COPY in a full-screen DOS session.



Back to index

Famous Last Words (140/0)

This may seem like a strange place to see information regarding another software product, but I feel it is important to include it.

Star Commander, written by Joe Forster/STA, is one of the best 1541<->PC conversion programs out there. I highly recommend it when you need to do any external disk work.

It also supports what I consider the more difficult to work with C64 file formats around like SFX and LHA. Try it out.



Back to index

Internal versus External editors/viewers (141/0)

This deals with some confusion which may arise when you want to use the internal editors, rather than external editors, from the EXT file.

What may not be obvious right away is that the definitions in the EXT file (as explained later on) and the editors/viewers defined in the Configuration window (as well as the "internal" checkbox) are not at all related. Just because you have not selected an external editor in the Configuration window does not mean that an internal editor will be called up when you have a matching EXT entry when you hit return on a filename.

Hitting the F4/F3/ALT-F4 keys executes a simple procedure, determining if the editor to be used is internal or exteral, and then calling it. When a definition is set up in the EXT file, all it does is determine if the file extensions match. If they do, then the command is analysed to see if the command is a special interal command (@EDIT, @VIEW, @HEX, @DIS). If it is not, then the command is executed like a normal command-line command. Otherwise it is sent off to the appropriate internal function (text viewer, text editor, hex viewer).



Back to index

Program Trace (debug logging) (142/0)

If 64COPY does something silly, or has a reproduceable bug, this feature might come in handy. When enabled, it logs much of the core activity of the program to a log file, which I can use to debug the program.

This feature doesn't come enabled in the standard user version of the program as it uses too much memory, which is needed for other features. When needed, I can send you this special version of the program, from which you can log the programs activities until the error occurs.

If an error happens, it would be best to email me, and we can try to resolve the issue in other ways before the need to send the program.

Many times, over the years, I've needed the ability to trace the programs "footsteps", to find where something has gone wrong. With this feature, I can have you, the user, enable it and exercise the program until the error comes up. When it does, you can then send me the resulting log file and I can try to see what sent wrong.

It has already helped me in tracking down some very strange behaviour, almost the very day I finished the logger. It has also helped me streamline some processes, by removing things which I didn't realize were being run too often.




Starting (142/1)

There are two ways to start this feature. One is to start the program with the /l (or /log) command-line switch. The other is to select the Program Trace option under the Options menu.

Enabling it by the command-line method gives you no control over the name of the log file nor its location. It will default to storing the log file in the directory that 64COPY was launched from, overwriting the previous log, and calling it 64COPY.DBG.

Enabling it from the menu will give you full control over the log file name, location and append features. It will default to the same values as the command-line option, but all of them are changeable.

+-------------------- Enable Program Tracing --------------------+
| Enter trace log path & filename: |
| E:\PETE\64COPY\64COPY.dbg |
| [ ] Append to existing log |
|----------------------------------------------------------------|
| [ Ok ] [ Cancel ] |
+----------------------------------------------------------------+

Once logging is enabled, all data pertaining to internal function calls and some pertinant values will be sent to the log. The information won't be very useful to the user, but it will prove invaluable to the author.

+-------- Attention! --------+
| |
| Program tracing enabled |
| |
|----------------------------|
| [ Ok ] |
+----------------------------+

The log file can become very large in a very short time as it logs all the mundane operations in detail. Things like panel updates, window drawing & destroying, entering & exiting functions, clock updates or waiting for a keystroke are all logged.




Stopping (142/2)

There are two ways to stop Program Tracing. One is to quit the program. The other is to choose the Program Trace option under the Options menu. Using the menu command, here is what you get...

+------------- Stop Program Tracing -------------+
| |
| Are you sure you want to stop Program Tracing? |
| |
+------------------------------------------------+
| [ Yes ] [ No ] |
+------------------------------------------------+

Select Yes to stop tracing. The log will be closed and you will be notified that logging has stopped.

+------------- Attention! -------------+
| |
| Program Tracing has been disabled. |
| |
|--------------------------------------|
| [ Ok ] |
+--------------------------------------+



Back to index

Troubleshooting (143/0)

This topic covers some of the more common problems that have come up over the years, and what you can do to fix them. If something is missing, or you have come across some other strange program behaviour, please feel free to write the author and let him know. The more this topic covers, the better!




64COPY Infected With Virus (143/1)

I have received reports that 64COPY is infected with very specific viruses. It seems that some virus scanners don't like the way that 64COPY is compiled and it is possible that some code generated by the Watcom compiler resembles virus code. These are false positives.

Older versions of McAfee and Norton Anti-Virus used to generate many false positives and I could not trust those reports.




Screen Saver Problems (143/2)

In the early days of version 3.00, I broke some code dealing with timers, the result being that the screen saver would kick in almost as soon and the program was loaded.

If this happens (and it shouldn't in versions past 3.00 beta 10), there are several ways to prevent this...

* Goto the configuration page (ALT-F6) called Screen Saver and disable the saver (the best method).

* Move the mouse to the bottom right corner of the screen. This is the save never corner, and will disable the saver, but that is not too useful if you want to use the mouse.




Program Hangs (143/3)

If 64COPY simply hangs when doing an operation, I need to know about it. Programming in C has a few caveats, one being if you attempt to work with a pointer before setting it's value you will likely overwrite something important in memory and crash whatever you're doing.

It may also be that you have found a bug, and I will have to track down. It would be best if you can duplicate the problem as I will not be able to easily fix it if I cannot see it happen.

If you can duplicate the problem, mail me with the all the details, order of operation, etc. If you don't have the latest version, I would recommend getting that first, as I may have fixed it already and not be aware of it!




Garbage On Screen (143/4)

Sometimes an operation will either write something incorrectly to the screen, or some information exceeds the visual limits of an entry area. This is usually just a visual bug, and will cause no other problems other than visual effects.

Fixing this problem requires that it be duplicatable. If it is, mail me with what you were doing, where on screen the corruption starts and ends, etc. However, even if I cannot duplicate it, I can likely attempt to fix it.

When this bug was originally reported, it was usually due to the newness of the windowing code changes I was making already in version 2.xx. Once the changes were shaken down, I have never had these problems reported again.




GCR & G64 Support (143/5)

I've had the questions asked of me several times, 'Are you planning to support the new GCR formats that are coming out?". This means formats like new D64 layout, and the bit-level GCR (G64) format. These will be provided on a "when-I-can" and an "if-necessary" basis.

64COPY v4.0 introduced GCR (G64) support, allowing conversion between G64, Sixpack ZipCode and D64 (with or without the F64 error file). This conversion is typically not perfect due to limitations inherent in each format.

The new D64 format proposed for the C64s emulator by Miha Peternal seems to have gone nowhere, and the C64s emulator appears to be abandoned, so no support is planned for it.




Deleting Support Files (143/6)

What will happen if you delete one of the support files, like 64COPY.INI when 64COPY is active? Nothing bad will occur at any point. Once the program is running, all the support files have been read, the settings are in memory, and the files are no longer used. When you quit, the files will simply be written out as if they never existed. When you execute a command from the command-line in 64COPY, all the settings are still stored in memory, until the program reloads.

If you delete any support file when not in 64COPY, and start the program up again, it will detect the missing file and use default values.




Screen Line Height (143/7)

When 64COPY is run for the first time (no 64COPY.INI files), it reads and uses the line height of the screen as its default. Doing an Alt-F9 to change the screen height after this will not change the default value, and 64COPY will always revert back to its default.

The only way to permanently change the screen height is to go into the Configuration window (ALT-F6), Visual options page, Screen Height section and change the value to what you want.




F11 & F12 Key Problems (143/8)

I have had reported that some keyboard BIOS's don't send the proper codes for the F11 and F12 extended keys. It would seem that there are some rare BIOS's that are not 100% compatible with the method I use for scanning for the extended keys, and therefore I can't fix this. However, there are ways around this. Since 64COPY has a working drop-down and pop-up MENU system (using the F9 key, or with the mouse), you can use the menus to accomplish nearly all that would normally need to be done with the keyboard.




WindowsNT & Long Filenames (143/9)

WindowsNT does not appear to support long filenames from its DOS window. It certainly doesn't support them the way that Windows 9x, ME, 2000 and XP does, and I've not seen any method from a DOS Interrupt perspective to access them. If the NT DOS box *does* support long filenames, then I will need some examples of how to do this.

The good thing is that WindowsNT is the exception, and all other versions of Windows do support long filenames.




Panel File Listing Too Short (143/10)

If the panel listing for either panel seems too short, like it's missing some files or folders, go to the Filter setting (under the LEFT or RIGHT pull-down menu) and check the settings. It is possible that some filename filtering is taking place and dropping items off the panel listing. Click the DFLT button to reset all the settings back to factory default, thus removing all the filtering.



Back to index

Supported File Formats (144/0)


D64, X64, D71, D81, D80, D82, DNP, D2M (disk images)
T64 (tape image)
G64 (GCR disk images, typically of a 1541)
LNX (LyNX image)
ARK (Arkive image)
LBR (LiBRary image)
CRT (cartridge files)
ARC and SDA (ARChive and Self-Dissolving Archive)
DOS binary
PC64 (P/S/R/Uxx)
SPY (SPYNE archives)
CPK archives
Four-pack ZipCode
Filepacked ZipCode
SixPack ZipCode

These are all the formats that I support internally. Just by hitting RETURN on any of the above files (except BINARY, SixPack ZipCode and G64), you will be brought into the file and presented with a list of files that it contains.

When you select a file and press F11 to convert, you are presented with a list of formats you can convert to. At present, the list contains D64, T64, P00, Binary, X64, LNX, ARK, D71, D81, D80 and D82.

To convert a D64 to a 4-pack ZipCode or a 4-pack ZipCode to a D64, position the hilite bar over a D64 or any of the ZipCode sections and press F11.

G64's, D64's (with or without F64 error files) and Sixpack ZipCode files are all inter-related and can be easily converted between each other. To convert any of these between the other, select only one at a time and press F11. The window that comes up allows for different destination types depending on what source type is selected. The conversion matrix is as follows:

SourceType     Destinations Allowed                      
---------- ------------------------------------------
G64 -> D64 with error bytes, Sixpack Zipcode
D64+F64 -> G64, Sixpack Zipcode, D64 with error bytes
D64 -> G64, Sixpack Zipcode
SixZip -> G64, D64 with error bytes

LBR, ARC, SDA, SPY, diskpacked ZipCode (1!xxxxxx), filepacked ZipCode (A!xxxxxx) and CPK files are supported read-only. You cannot create, delete files from, add files to or Check them. You can only convert files from them.

ARK is supported in a special way (for now). You can copy out of and create them, but you can't modify an existing image by adding to or deleting from them. The format layout doesn't lend itself to being easily modified after its initial creation (as well as LBR.)




Why Support X64 (144/1)

At the time I wrote 64COPY, X64 was the main emulator for the UNIX platform, and I was asked to include support for it in my conversion routines. It was a simple enough addition, but it is likely not used much anymore. The only X64 files that 64COPY supports are simply D64's with the added 64 byte X64 header. At present I support no other variation of the X64 format, and I have never seen any others!

Shortly after, another emulator came out called VICE. It is the evolution of the X64 emulator, and while it supports the X64 disk format, it also supports most others (D64, T64, G64, etc). It would be a lot of work to remove the X64 support code from 64COPY, so I will just leave it in for now.

X64 is also an evolving format. As of the writing of this HELP file, the latest version is 1.02. It now encompasses most of the known disk size and types (FD2000, 1581, etc), but the format itself has not been widely embraced.




Why not LHA/LZH (144/2)

LHA is a compressed format, and as such I would need to shoe-horn the uncompress code into the program. I have the code, and am in the process of removing the parts I don't need (which is about half of it). It will likely turn out that it won't be possible due to the memory requirements that decompression demands.

Since there exists other programs to work with both of these formats, I would go with them for now. Joe Forster (author of Star Commander) has written several small external utilities which are distributed with Star Commander for handling most of the unusual formats. To extract LHA files into a D64, use StarLHA.




FORMATS.ZIP (144/3)

FORMATS.ZIP is an archive of all the formats that I have written up. It should have been with 64COPY when you got it. They contain a detailed description of every image and native C64 format I could find. If you ever wondered how a certain file was laid out, or are working on a program to manipulate a specific format, read and be enlightened!



Back to index

Fix WAV File (145/0)
Alt-F10

This simple function will attempt to remove the single sample errors that can occur when extracting audio tracks from a scratched or damaged CD.

+------------------------- Fix WAV File -------------------------+
| Path for fixed WAV file... |
| F:\PETE\64COPY\Sample with Cue points.wav_ |
| Cleaning sensitivity:95 (higher is more sensitive) |
| [x] Use CUE/Marker positions for cleaning boundaries |
| [ ] Analyse WAV file only, no cleaning |
|----------------------------------------------------------------|
| [ Ok ] [ Cancel ] |
+----------------------------------------------------------------+

Cleaning sensitivity - This sets the sensitivity of the cleaning algorithm, from 0 to 100. The higher the number, the more aggressive the cleaning.

Use CUE/Marker positions for cleaning boundaries - Set this option to clean the areas inbetween the CUE points instead of cleaning the entire file. This keeps the WAV distortion that would result from cleaning percussive areas to a minimum.

Analyse WAV file only, no cleaning - Set this option to show an analysis only of the WAV file. This will show a dump of the structure of the WAV file.



Typically, there will be a range of correct samples, and then one of them will be way out of whack. The out of whack sample will be replaced with the average of its two neighbors. The crude example below attempts to illustrate (the * characters are the ones that are glitches):


* *
* | | * *
| | | | |
| | | | |
| __ __ | __ __ ___|__|____ ______ |
____|__/ | \______|____/ | \/ | \___ | ___
| | | \__|__/
| | |
| | |
| * *
*

This function has trouble cleaning audio tracks that contain loud noise like cymbal crashes & other loud atonal instruments (percussion). It will badly mangle the waveform, making the percussion areas very distorted.

It also only handles single-sample errors, not cases where there are two bad samples in a row. Those will typically be left behind for you to clean manually.

There is also a sensitivity scale, ranging from 0 to 100, that you can adjust. Zero is insensitive and 100 is extremely sensitive. A sensitive setting will tend to clean every little glitch that is seen, whether it really is one or not, causing even more distortion. Experiment with the setting and listen to the results before settling on a default.

It is highly recommended that only the glitched areas of the WAV file be sent through this routine. This means using a WAV editor to bound the bad areas with CUE points (one start and one stop point), and then setting the option to use CUE points as boundaries before cleaning. Cleaning the entire WAV file will result in unfortunate results as many false glitches will be cleaned causing distortion.

Back to index

Convert ROM Images (146/0)
Alt-F10

This function performs multiple transforms to a ROM image. Removal of the load address, expansion of the image to a new size, conversion to one of two ASCII EPROM formats for burning EPROM's and splitting the output into sections.

All of these options can be applied in any combination. With no options enabled, you end up simply copying the ROM or file to the destination.

+---------------------- Convert ROM Images ----------------------+
| 1540/1541 DOS 325302-01 (ID=29AE9752) |
| Split file and save filename as (ext will be auto-added)... |
| I:\1541 |
|-Remove Load Address--------------------------------------------|
| [ ] Remove 2-byte load address |
|-Expand & Pad---------------------------------------------------|
| [ ] Expand file to new size... |
| ( ) 2048 ( ) 4096 (*) 8192 ( ) 16384 ( ) 32768 ( ) 65536 |
| (*) Pad using this value: $FF |
| ( ) Use original ROM file (repeat) |
|-Convert to EPROM format----------------------------------------|
| [x] Convert file to an EPROM (ASCII) format |
| (*) Motorola Exorciser (XOR) ( ) Hexadecimal ASCII (HAS) |
| ( ) Intel Intellex 8/MDS (INT) |
|-Split Into Parts-----------------------------------------------|
| [x] Split destination file into parts:2 |
|----------------------------------------------------------------|
| [ Ok ] [ Cancel ] |
+----------------------------------------------------------------+

At the top of the window is the ROM name and checksum being worked on. The most common Commodore ROM's are recognized by this routine, but if it's not know then the window will show Unknown ROM image.

Remove 2-byte load address - Removes the load address from the file. This option will be set if the image appears to have a load address.

Expand file to new size - Enable this to expand the ROM up to a new size. Select the size below this option to resize the resulting file. You can choose from two methods of resizing: either pad with a single value (default $FF) or choose to reread the source ROM. The second option to reread the source ROM allows you to burn a ROM image into a larger EPROM so that both banks have the same information.

Convert to EPROM format - Converts the ROM image to an EPROM-burner friendly ASCII format. Motorola Exorciser (XOR), Hexadecimal ASCII (HAS) and Intel Intellec 8/MDS (INT) are very common ASCII formats that most burners accept. The Motorola and Intel formats contain checksums to make sure the file arrives intact and verified whereas the Hex ASCII format does not.

Split destination file into parts - Allows the output to be split into separate files by breaking the source into parts. This is very useful in taking a larger ROM (i.e. the single 16Kb ROM from a 1541-II) and breaking it into parts for burning on smaller ROM's (i.e. onto two 8Kb 2764 EPROM's and placing them in the 1541). Having a 16Kb ROM image and selecting to split into 2 parts will read the first 8192 bytes of the source to the first destination file, and the second 8192 bytes to the second destination file. The maximum part size here is 99.

Back to index

Included code segments (147/0)

Several areas include adaptations of code written by others. The first one is AX.C, the ARC & SDA uncompression code written by Chris Smeets and placed in the public domain. It is included in my Convert routines for uncompressing ARC and SDA files. His code was well written and needed very few changes to make it work the way I needed it.

The second is the LZSS.C compression code written by Haruhiko Okumura in 1989 and placed in the public domain. It is used to compress help topics for compilation into the .HLP HELP file and to uncompress individual topics. It was moderately hacked to work under the conditions I needed. This compressor was chosen because it used the least amount of memory to decompress, a very important consideration.



Back to index

External Support Files (148/0)

When the program starts, there are several files which 64COPY will look for to provide options and defaults. These files are the .INI, .CLR, .MNU, .PAN and .DIR. When the program exits, these are re-created if they don't already exist.

All of the above support files use CRC checking to maintain their integrity. When the file is to be read, the CRC is calculated, and checked against what it is supposed to be. If there is a discrepancy, the file is assumed to be damaged and ignored. It is completely safe to delete any of these files at any time since if they cannot be found when starting the program, internal defaults are used, and they will be rewritten upon exiting.

The last two support files are the .HLP help file which provides on-line help, and the .EXT file which provides file extension associations. Deleting the .HLP file is not a wise idea, for obvious reasons, unless you never need help. Deleting the .EXT file is not dangerous, but you will lose all the definitions for file extensions, making the program very unresponsive and boring.




INI Settings File (148/1)

The INI file contains all of the Configuration information, as well as the last drive/directory used. It is also program-version dependant meaning each version of the program usually has its own INI file. I do change the file from time to time, generally to allow for new user options, and therefore the version-checking is necessary.

If you have just replaced an old version of 64COPY with a newer version, you may find that your defaults have disappeared. This should only happen when I change the internal version number of the INI file. 64COPY checks the existing INI file for the proper version, and if it does not match, it uses its internal defaults (just as though the INI file doesn't exist). When 64COPY exits, the old INI file will be overwritten with the correct one. You will be informed (by an info box) that the INI is incorrect and can't be used.




EXT Extension File (148/2)

Another file used (but not necessary) is the .EXT extension file. It stores all the extensions (and filenames) and what command/program to execute if you hit return on such a file. I have included a sample .EXT file with the distribution of 64COPY, and in it are some explanations as to how it is laid out. If you want to edit the EXT file, you can press CTRL-F4 and the file will be brought up in the internal editor, or you can find it and manually edit it.

If you have set up an association for a .TXT file, when you hit return on that file (docs.txt), whatever program you setup as the association will be executed, with the filename as the argument.

The EXT file supports several special @ commands to use some of the internal editors of 64COPY. The case of the commands is not important. However, they are presented here in descending priority, meaning that if two commands are on the same line, in any order, than the one with the higher priority will be executed. If any of these commands are seen in the commnand area, it will take precedence over anything else.

@EDIT  -  the internal text editor will be used. 
@VIEW - the internal file viewer will be used.
@HEX - the internal HEX editor will be used.
@DIS - the external Disassembler will be used.

See the HELP section on Editing the EXT file for more details.




HLP & HTM Help File (148/3)

The 64COPY.HLP help file is read when F1 is pressed/clicked. If the file is not present, no HELP window will appear, but you will recieve an error window telling you where it should be. If a .HLP file is present but the version number is wrong, you will also be informed of this. If everything is OK, HELP on the topic you wanted will appear.

There is also a 64COPY.HTM help file, which is web form of the HELP file. This can be viewed in any browser, and has an index to all the help topics.




Other Files (148/4)

.CLR Color Settings

This contains all the user-setable program colors. If for some reason it is not the right version, I will use the internal defaults.



.MNU User Menu (F2) Entries

This one contains all the strings defined for the F2 User Menu. Once again, if the file is the wrong version or corrupt, I will simply clear out the User menu, and start fresh.



.PAN Panel Layout structure

This file contains all the objects (titles, column info, separator lines) and locations that need to be displayed for the various panel styles (DOS, D64/71/81/Zip disk image, T64, P00/LNX, ARC/SDA).



.DIR Directory Customization settings

This one holds all the customization used in the Directory Customizer (DirEdit) routine. It contains all the saved strings for SEPARATOR files, BAM messages, and saved SEPARATOR blocks.



Back to index

64COPY Environment variable (149/0)

If you are running 64COPY from a RAM disk then you may want to use the environment variable to set the path where all of the 64COPY support files will be found. RAM disks are very volatile, and their contents can easily be lost. By using the environment variable, you can guarantee that the support files will be on a disk where they will permanently reside.



The variable is used as follows in the AUTOEXEC.BAT:

SET 64COPY=pathname

where pathname is the location of the support files. The path does not have to have a trailing "\". If the path does not end with a "\", then the program will add one.

e.g. SET 64COPY=C:\UTILITY



Back to index

Distribution file breakdown (157/0)

The following files should be with the ZIP file, wherever it is. Later versions may have more files, older versions may have only a few of the ones mentioned.


64COPY.EXE - Program loader for 64MAIN.EXE
64MAIN.EXE - Main executable (the only *essential* file in the
archive)
64DISASM.EXE - External 6502 Disassembler (only callable from
inside 64Copy)
64COPY.HLP - On-line user manual (not text readable)
64COPY.EXT - Supplied sample EXTensions file
HISTORY.TXT - A history of program changes
FORMATS.ZIP - A ZIP archive containing detailed descriptions of
the C64 and image formats
CHANGES.TXT - Program changes for the most recent release
README.TXT - A short description of what the program does, and
answers to the most commonly asked questions.
FILE_ID.DIZ - A very short description of the program (used by
BBS's)



Back to index

Contacting the author (159/0)

If you need to contact me, my email address is...

schepers@ist.uwaterloo.ca



My present webite address is:

http://www.64copy.com



My present snail-mail address is...


Peter Schepers
317 Knightsbridge Road
Woodstock, Ontario
Canada
N4S 7C3

Remember, I accept all donations and suggestions but money is the most interesting. If you do decide to register, please see the Shareware Cost topic for the details.



Back to index

Panel Operations (160/0)

This section deals with the keys and functions that manipulate the files or drives displayed in the panels.



Back to index

DOS Operations (161/0)

This topic covers all the file and drive operations not immediately connected with conversion of image files.



Back to index

Other Image Functions (162/0)

This topic deals with most of the functions relating to image files, except conversion and editing. Here we have such topics as:

Changing file attributes in disk images                     
Creating/Deleting separator files
Unlist BASIC program
Disassemble 6502 code (several topics)
PETASCII text file conversion
Changing image file labels
Renaming files in images
Swapping filenames in disk images



Back to index

Editors and Viewers (163/0)

The following topics deal with all the internal file editors and viewers. There are a number of different ones built-in, so select one from the help menu to get more information about it.



Back to index

Program Customization (164/0)

The following topics deal with how to customize the program, from the colors, user menu and extension file to the main configuration window on ALT-F6.



Back to index

Development Notes (165/0)

This topic covers notes that I wanted to include, just in case you are interested in the history of 64COPY and why certain things exist as they are. Mostly it is a history of development, and where things started from.




Keyboard Support (165/1)

64COPY supports extended keyboards only. I can't see how a non-extended keyboard will work since I use scan codes which only extended keyboards can generate. Seeing as how rare these low-end machines are today, I am not too worried about having to support them.




Strengths & Weaknesses (165/2)

Out of all the conversion programs out there, I think this one is the best. Assuming you already have the disks on your PC and simply want to convert, move or view, 64COPY does it all, internally. You do not have to run any external converter utilities, you simply tag what you want converted, and select the format to convert to.

While I think including some form of 1541-PC communications would be the best thing to add to this program, it is not my area of expertise, and I gladly leave that to the other authors (Star Commander, Trans64). I know the source code for the transfer routines are available for Trans64 (or at least were). I have thought about using the code, but if I had some trouble with it not working on some machines, then I would not be able to fix it as I didn't write it, and would not be familiar with it. Writing this type of program (port I/O) is not my strength, so I will not likely write the code myself, either.




What The Author Uses 64COPY For (165/3)

Over the years I found that I needed a Norton Commander type of program but with more specialized features. I work on a lot of PC's, recovering data from damaged hard drives, or doing some kind of file system maintenance, and a multi-purpose utility specifically designed for these tasks was called for.

I always liked the layout and useability of Norton Commander, and so decided to follow its operational style, but customizing it as I needed it. Features such as Log DOS copy/move errors and WipeFile were developed specifically for my use, but I preserved them in the release version in case others might want to use them as well. If you don't want them, you don't enable them.




Why 64COPY Was Written (165/4)

This could be viewed as one of those "why did the chicken cross the road?" questions... who really knows. When I started writing it, I was also learning to program in C, and much of the core of 64COPY was written during the summer/winter of 1994. It was at first a streamlining and beefing up of two small programs I had briefly used, CCOPY and CDIR by David Ashley. They did the job but weren't pleasant to use (no offence to David). I re-wrote them with a better interface (anyone ever use 64COPY 1.0?), but it only worked with PC64 P/S/R/Uxx files (which was then called C64Neu, a fully German C64 emulator).

Then, some of my previously mentioned shop needs became more apparent and I started working on a more well-rounded program to handle other operations. 64COPY is the result. I still continue to work on the code (and likely always will).




Window & Mouse Code (165/5)

After I released 64COPY 1.0 back in 1994, I started reworking the interface, and realized I would need some simple windowing routines. I searched some internet sites for any development packages or source code, but was unable to find anything I liked. I did, however, get some ideas.

My first attempt was done using ANSI cursor placement (ouch!) which is painfully slow but does work. Once I became more experienced with the PC architecture, I figured out how to do direct video-buffer writing, and converted all the ANSI calls to direct screen writes. What a difference that made! I have been enhancing the windowing code ever since.

As of version 3.xx, I now have a working mouse, window shadows, margins, variable colors, buttons, variable line-width borders (single/double/none) definable for all windows. A full online HELP system is also in place (as you are using it right now!)




Long Filename Code (165/6)

As of version 3.1, I started supporting the long filenames of Windows95 (and hopefully future versions). Most of the old file handling code had to scrapped, and every standard call to the C library had to be rewritten from a DOS INT (interrupt) perspective. It was an interesting project. Small snags/bugs still crop up from time to time, but from a purely practical perspective the code works quite well.




Using the Watcom Compiler (165/7)

I started out writing 64COPY in Watcom C 6.0, then upgraded to version 8.0, skipped 9.0 and went straight to 10.0. I have since upgraded to Open Watcom 1.7. The only drawback to using Watcom is it doesn't include an IDE for DOS, nor does it appear to come with a windowing system like the Borland C compiler. That was the overriding reason for writing my own windowing routines... I had to. It also has no provision for generating HELP files like Borland, but it produces fast and compact code and it was cheap to purchase from where I work. Nowadays it is free and open source.

Each successive upgrade to Watcom has brought it closer to the ANSI C specification, although it is still woefully out of date. Now being open source, maybe this will improve.




Version Changes (165/8)

As I work on this program nearly everyday, both programming it and using it, I make many changes to suit the way I work and the way I think the program should behave. This results in a lot of small changes which likely won't ever get documented. This customization also means that the program deviates significantly from its model Norton Commander, which causes grief for some users, but that cannot be helped.

I will continue to document as many changes as I can, between both the beta's and full versions, as they are released. Changes to the more recently released versions will be found in the document HISTORY.TXT and any changes made in the presently available version will be in the file CHANGES.TXT.




Future Considerations (165/9)

I am constantly working on 64COPY, looking for bigger and better things to do with it. My TODO list is extensive, mostly full of things that I want to work on, but also including user requests. The features listed below are the most important ones I would like to add, but haven't done yet. If you have any ideas for other things, let me know by email.

* Native C64 font support, useful in the Disk Dir Editor and panel display

* Add a keyboard handler to trap CTRL-C, CTRL-P, CTRL-BRK, CTRL-S, CTRL-Q

Back to index