------------------------------------------------------------------------------ WARNING!!! THIS IS A BETA RELEASE OF THE STAR COMMANDER!!! YOU MAY SPREAD IT TO INDIVIDUALS BUT YOU MAY NOT PUBLISH IT ON DISK, CD, FTP SITE OR WWW PAGE!!! ------------------------------------------------------------------------------ The Star Commander, Version 0.82 This is still not the final release of The Star Commander. Look out for further releases. Please, report bugs and ideas to me because I want Version 1.0 to be the final release. Sorry for all kinds of bugs in the Commander but I'm in a hurry, as always. 0. Table of contents 1. Introduction 2. Copyright and legal issues 3. System requirements 4. Installation 5. Advantages of the Commander 6. Connecting a Commodore drive to your PC 7. The X1541-series interfaces 8. Technical background information 9. Troubleshooting 10. Reporting problems, ideas and wishes 11. Bugs fixed since Version 0.81 12. Other changes since Version 0.81 13. Known problems and limitations 14. Coming soon 15. Thanks to 16. Where to find the Commander 17. The author 1. Introduction This program handles the image files of the C64 Software Emulator (C64S, (C) by Miha Peternel and Seattle Lab, 1994-1997), the CCS64 emulator ((C) by Per Hkan Sundell, 1996-2000), Personal C64 (PC64, (C) by Wolfgang Lorenz, 1994-1997) and VICE ((C) by Ettore Perazzoli, Andr Fachat, Teemu Rantanen, Daniel Sladic, Andreas Boose, Dag Lem, Tibor Biczo, Jouko Valta and Jarkko Sonninen, 1993-2000). It copies files and disks between the PC and external Commodore 1541, 1570, 1571 and 1581 drives and converts several Commodore archive formats. It is similar to The Norton Commander (NC, (C) by Symantec Inc., 1986-1995) and The Volkov Commander (VC, (C) by Vsevolod V. Volkov, 1991-2000) so it will surely be easy to use. However, before you start using it, please, read this documentation and the online help carefully, for the differences from the other Commanders, the description of the X1541-series interfaces and other details. 2. Copyright and legal issues The Star Commander is copyright by Joe Forster/STA, 1994-2001. The Commander is giftware. You may use the unregistered version as long as you wish and you may spread it to anyone, provided that it's in the original, unmodified archive. Don't distribute single files, only the whole package. To avoid confusion, you should download distribution packages from the official homepage or other official distribution sites. If you get a package from somewhere else then make sure that the package has the author's authentic verification stamped on it. The unregistered version is in no way crippled, there are no nag screens or delays in it. However, if you are frequently using the Commander and you are satisfied with it then you are encouraged to register. Please, read the file REGISTER.TXT for more details. You must not distribute the personal keyfile you receive when you register. The source of the Commander is distributed under a public license similar to the GNU Public License. However, it still is copyrighted software. You may distribute only those modified versions that satisfy all restrictions in the license and you may not ask for money above the normal fee of the distribution media itself. Furthermore, you may not publish the program or its source on floppy disks, CD-ROM's, FTP sites, WWW pages or any other distribution media, include it in a software compilation or bundle it with other software or hardware without prior permission of the author. The Commander is provided "as is", without a warranty of any kind. You are using it at your own risk. The author is not liable for any damage or data loss caused by the program. 3. System requirements You must have an IBM or compatible PC with an 80286 processor or higher with MS-DOS 3.20 or above installed on it and about 470 KBytes of free conventional memory. You may also try running the Commander under the DOS emulator of OS/2 after enabling the HW_TIMER option in the DOS settings. Some versions of the Linux dosemu don't like the the OverXMS unit of the Commander for some, yet unknown, reason. If you want to try accessing a Commodore drive under a multi-tasking system then you have switch the transfer mode to async. Remember that, although some extra functions were implemented in the Commander to make it run better under multi-tasking systems, you are supposed to run it under real DOS. 4. Installation You can install the Commander simply by decompressing the distribution package using PKZIP 2.xx. You don't need all the files to run the Commander, most of them are only for your comfort. For an absolute minimum installation, you need SCMAIN.EXE. (required) If you want to have much more memory in the DOS shell, keep SC.EXE and launch that instead of the main executable. (highly recommended) You can enable the online help by extracting SC.HLP. SCVIEW.EXE displays and SCEDIT.EXE edits DOS files and Commodore files inside image files and uncompressed archive files. (recommended) With SCSETUP.EXE, you can change the settings of the Commander outside the program. (optional) There are some sample menu (*.MNU) and extension files (*.EXT) to help you with handling PC and Commodore archives and formatting PC disks. The archive PALETTES.ZIP contains some predefined color palettes. You can run PRINTHLP.EXE to extract the online help into a text file or to print it out. If you want to use the Commander under OS/2, Windows, Windows 95/98/ME or Windows NT/2000 then SC.ICO and SC.PIF are just for you. (optional) The archive SC_ARC.ZIP contains the external utilities that help you with mass-converting Commodore archive formats. The Star Utilities consists of the following programs: - Star ARC lists the contents of Commodore ARC archives and Self-Dissolving Archives (SDA) and extracts them into disk images - Star Arkive creates Arkive archives out of disk images, lists their contents and extracts them into disk images - Star LHA creates Commodore LHA archives and Self-Extracting (SFX) archives out of disk images, lists their contents and extracts them into disk images - Star Library creates Library archives out of disk images, lists their contents and extracts them into disk images - Star List lists the contents of image and archive files into a text file or onto the screen - Star Lynx creates Lynx archives out of multiple DOS files or the contents of disk images, lists the contents of Lynx archives and extracts them into multiple DOS files or into disk images - Star Tape collects multiple PC64 file images into tape images - Star Zip creates diskpacked or filepacked ZipCode archives out of disk images, lists filepacked archives, tests diskpacked archives and extracts both types into disk images You can find the complete distribution package of the Star Utilities, including documentation, at the homepage. 5. Advantages of the Commander It is comfortable to use the well-known environment of The Norton Commander. There is no need to learn sequences of weird key combinations, only press some familiar ones. You can always clearly see what's happening on the screen. Hopefully you remember Disk-Demon, the great C64 disk editor, written by G. Brandt and A. Wellie in 1986/87. A similar disk editor is built into the Commander so that you can modify data in disk images and disks on Commodore drives directly. Several configuration options make the use of the Commander easy and quite comfortable. The Commander can optionally display everything with the C64 character set (only on EGA/VGA video cards). Most of the image file handling routines are faster than those of the other similar utilities. The Commander has built-in support for several Commodore archive formats (Lynx, filepacked ZipCode, LHA, Arkive and TAR). The external utilities also help you with mass-converting them. Following is a benchmark of the Commander under plain DOS. An original 1541-II drive was used with a 35 track disk. The disk contained a 210 block file, stored below track #18. The interleave used to save the file was 10 sectors, the head movement speed was set to 16. In the charts, transfer modes marked with (*) are equipped with manual retry on disk errors, (+) means optional verify. ͻ Whole disk copy Read from the 1541 Write to the 1541 ͹ Normal mode 7:50 (*) 9:55 (*) Ķ Turbo mode 2:25 (*) 2:25 (*) Ķ Warp mode 1:16 (*) 1:19 (*+) Ķ Hybrid turbo mode 1:09 (*) 0:48 (*) Ķ Hybrid warp mode 0:50 (*) 0:29 (*+) Ķ Parallel turbo mode 0:48 (*) 0:48 (*) Ķ Parallel warp mode 0:23 (*) 0:29 (*+) ͼ ͻ 210 block file copy Read from the 1541 Write to the 1541 ͹ Normal mode 2:20 2:25 Ķ Turbo mode 1:00 1:01 Ķ Warp mode 0:26 (*) 0:26 (*) Ķ Hybrid turbo mode 0:22 0:24 Ķ Hybrid warp mode 0:18 (*) 0:10 (*) Ķ Parallel turbo mode 0:22 0:24 Ķ Parallel warp mode 0:10 (*) 0:10 (*) ͼ 6. Connecting a Commodore drive to your PC The serial connection is done using the well-known X1541 interface or its substitutes. If you only have an EPP or ECP port then you have to substitute the X1541 interface with the XE1541, XM1541 or XA1541 interface. If you already have one of the serial cables mentioned above and want to achieve a much higher transfer speed and you're willing to modify your 1541, 1570 or 1571 drive and you have a bidirectional parallel port then you can make use of the XP1541 or XP1571 parallel interface. If you only have a unidirectional parallel port then the XH1541 or XH1571 hybrid interface gives you the best performance. You can find the description of all interfaces in the following section. Unless you're using the XH1541 or XH1571 hybrid cable or the XP1541 or XP1571 parallel cable, don't try to access external drives under a multi- tasking system. You may also try the async transfer mode along with the X1541, XE1541, XM1541 and XA1541 cables under multi-tasking systems but it's not guaranteed to work absolutely error free. Remove memory managers, device drivers and other resident programs, if having problems. The Commander has a machine independent synchronization method that uses the hardware system timers. The automatic calibrator inside the Commander tries to find a delay value that makes your PC communicate with the Commodore drive at the exact speed of the drive. However, if you encounter transfer problems or you want to fine tune the transfer speed then you may raise or lower the delay value in the 'Transfer options' menu manually. The Commander is equipped with optional fast transfer modes. In turbo mode it transfers data from and to the external Commodore drive about 2-3 times faster and in warp mode 5-6 times faster. If you also connect your Commodore drive with the XH1541 or XH1571 hybrid cable to the PC, using turbo mode, the data transfer will be 6-12, with warp mode 6-20 times faster. The XP1541 or XP1571 parallel cable gives you 6-12 times the original speed in turbo mode and is 10-20 times faster in warp mode. The Commander has turbo and warp command routines, as well. These speed up deleting files and validating disks to 2-10 times the original speed (depending on the number and length of the files on the disk) and disk format takes only about 12 seconds. Besides 1541 drives, the Commander supports 1570, 1571 and 1581 drives. Currently, the disk turbos for 1570 and 1571 drives are finished and you can also copy double-sided disks with 1571 drives but 1581 drives can only be accessed at normal speed. Disk turbos for 1581 drives will be implemented in the next release. 7. The X1541-series interfaces Here is the description of the X1541-series interfaces, with which you can connect a Commodore drive to your PC to use with the Commander. If you don't want to read through this complete chapter then you should, at least, read the most important facts about the cables and their compatibility with parallel ports of different modes. Serial cables are the following: - The X1541 cable works on older type SPP and PS/2 parallel ports, ones that have bidirectional control lines. The parallel port on I/O controller cards for 286, 386 and 486 machines and on Hercules video cards and the integrated parallel port of most newer 486 motherboards support the X1541 cable but only certain Pentium motherboards have compatible parallel ports. On motherboards with an integrated parallel port, you have to set the mode of the parallel port to SPP because the X1541 cable won't work with EPP and ECP parallel ports. However, on many newer motherboards, there's absolutely no way to make the X1541 cable work because the control lines are not bidirectional in any mode of the parallel port. You need one of the other serial cables such machines. - The XE1541 extended cable is a substitution for the X1541 cable. Its advantage is that works in all modes of all parallel ports. Its drawbacks are that you need special diodes to build it and that only a few programs support it. Please, note that even this cable has problems with ASUS P5A-B motherboards and certain laptops. On these machines, use the XA1541 active cable instead. - The XM1541 multitask cable differs from the XE1541 extended cable in two wires swapped at the Commodore end. This enables other transfer programs to use interrupts rather than polling for handshake with the external Commodore drive. Its drawbacks are similar to the XE1541 extended cable. However, it works under Linux, as well. - The XA1541 active cable is similar to the XM1541 multitask cable but it uses transistors and resistors instead of diodes. This makes it the ultimate transfer cable because it works with all kinds of parallel ports, including the ones the XE1541 extended cable has problems with. This cable also works under Linux. Optional parallel cables are the following: - The XP1541 parallel cable speeds up communication with a Commodore 1541 drive via a PS/2, EPP or ECP parallel port where the data lines are bidirectional. Its advantage is that both sending data to and receiving data from the drive becomes 3 times faster. Its disadvantages are that you have to modify your drive internally so that you can connect this cable to a a parallel plug on the drive and that its need for a bidirectional port excludes the possibility to use it along with the X1541 cable, except on PS/2 ports. You can't use this cable alone, only together with one of the serial cables above. - The XP1571 parallel cable is a modified version of the XP1541 parallel cable, designed for 1570 and 1571 drives. Except for the periphery chip used in the Commodore drive, it is completely the same cable as the XP1541. - The XH1541 hybrid cable speeds up communication with a Commodore 1541 drive drive in all modes of all parallel ports. Its advantage is that sending data to the drive becomes 3 times, receiving data becomes 1.5 times faster. Its disadvantage is that you have to modify your drive internally so that you can connect this cable to a parallel plug on the drive. You can't use this cable alone, only together with the X1541 cable. You can't use this cable together with the other serial cables on the same port, because of the conflict between the pins used by the two cables on the PC parallel port. - The XH1571 hybrid cable is a modified version of the XH1541 hybrid cable, designed for 1570 and 1571 drives. Except for the periphery chip used in the Commodore drive, it is completely the same cable as the XH1541. - If you only have one parallel port but want to use the XH1541 or XH1571 hybrid cable or the XP1541 or XP1571 parallel cable then you can create a Y-shaped cable. One end plugs into the PC parallel port and the two other ends plug into the serial and parallel ports on the drive. You can use the X1541 cable together with the XH1541 or XH1571 hybrid cable on an SPP parallel port, the X1541 cable together with the XP1541 or XP1571 parallel cable on a PS/2 parallel port and the XE1541 extended, XM1541 multitask and XA1541 active cable together with the XP1541 or XP1571 parallel cable on a PS/2, EPP or ECP port. You can't use the other serial cables together with the XH1541 or XH1571 hybrid cable on the same port, because of the conflict between the pins used by the two cables on the PC parallel port. If you'd like to build cables yourself then you can find a more detailed description of them at "http://sta.c64.org/xcables.html". If you're not good at soldering then visit The X1541 Shop at "http://sta.c64.org/x1541shop.html" and buy cheap but good quality cables there. The mode of your parallel port is a vital feature that determines which cables you can use with your machine so try to find out all the modes of your parallel port. Older I/O and parallel port cards only have the unidirectional SPP mode, most Pentium and newer 486 motherboards have integrated parallel ports and allow you to set the port mode in the BIOS setup, with the usual choices of SPP, EPP and ECP. It's possible that, when changing the mode of the integrated parallel port in your BIOS setup, you won't find the necessary modes as they are called in this documentation. Some BIOS setups have different names for the port modes. Compatible, Normal and Standard usually refer to SPP, Extended possibly means PS/2 or EPP and Enhanced stands for EPP or ECP. Below you find some advices about which cables to use with a given parallel port mode and vice versa. They are based on the fact that most SPP and PS/2 parallel ports support the X1541 cable and most EPP and ECP parallel ports don't. However, because of the lack of strict standards, there are exceptions to these rules. There exist SPP and PS/2 parallel ports that don't support the X1541 cable. It's also possible that certain EPP and ECP parallel ports do support it. You have to determine the true capabilities of your parallel port yourself before choosing the cables to use. If you have a unidirectional SPP parallel port then you can use the X1541 cable and, optionally, the XH1541 or XH1571 hybrid cable, for the highest speed possible on SPP ports. If you have a bidirectional PS/2 parallel port then you can use any of the cables. For maximum speed, you're advised to use the X1541 cable and the XP1541 or XP1571 parallel cable together. The X1541 cable doesn't work with most parallel ports in EPP and ECP mode. You will have to configure them to SPP mode with the BIOS setup program or with jumpers. If the Commander still doesn't work then you can use one of the other three serial cables that substitute the X1541 cable. The X1541 interface is the easiest of all. You only have to connect certain pins of the serial port of the Commodore drive and pins of the parallel port of the PC. You need some plugs, some wires and some soldering skills. The XE1541 and XM1541 interfaces are not much harder, they only needs some diodes. Also, the XA1541 interface needs a couple of resistors and transistors only. The XH1541, XH1571, XP1541 and XP1571 interfaces are a lot harder to build because you need to do some modifications inside your Commodore drive. If you're not experienced at soldering then don't even think about doing them yourself. In addition, the XH1541 and XH1571 interfaces also need some diodes. The following tables may help you to decide which cables suit your needs best. Depending on your parallel port hardware, your soldering skills and your patience, you may choose the cables that will work best for you. This table is a compatibility chart between different parallel port modes and different interfaces. ͻ Compatibility SPP PS/2 EPP/ECP ͹ Normal (X1541) yes yes no Ķ Extended (XE1541) yes yes yes Ķ Multitask (XM1541) yes yes yes Ķ Active (XA1541) yes yes yes Ķ Hybrid (XH1541 or XH1571) yes yes yes Ķ Parallel (XP1541 or XP1571) no yes yes ͼ This table shows the ways to achieve different speeds on a single parallel port in different modes. ͻ Single port SPP PS/2 EPP/ECP ͹ Minimum speed Normal Normal Extended/ (1) (1) Multitask/ Active Ķ Medium speed Normal+ Normal+ Hybrid Hybrid (1) Ķ Maximum speed Normal+ Extended/ Parallel Multitask/ Active+ Parallel ͼ Notes: (1) This is not the maximum performance for your parallel port, you may want to use another cable configuration. These tables show the ways to achieve different speeds on two parallel ports of different modes. The first cable refers to the primary parallel port, whose mode is indicated by the table title. The second refers to the secondary parallel port, whose mode is indicated by the column title. Note that when you're advised to swap your parallel ports then it's meant to be a logical swap, not a physical one. ͻ Two ports, SPP PS/2 EPP/ECP primary is SPP ͹ Minimum speed Normal Normal Normal (1,2) (1,2,3) (1,2) Ķ Medium speed Normal+ Normal+ Normal+ Hybrid Hybrid Hybrid (2) (1,2,3) (1,2) Ķ Maximum speed Normal+ Normal+ Parallel Parallel ͼ Notes: (1) This is not the maximum performance for your parallel ports, you may want to use another cable configuration. (2) You don't need two parallel ports for this cable configuration, you can hook the indicated cables up to the primary parallel port. (3) This is not the maximum performance for your parallel ports. Swap your parallel ports and try again. ͻ Two ports, SPP PS/2 EPP/ECP primary is PS/2 ͹ Minimum speed Normal Normal Normal (1,2) (1,2) (1,2) Ķ Medium speed Normal+ Normal+ Normal+ Hybrid Hybrid Hybrid (1,2) (1,2) (1,2) Ķ Maximum speed Normal+ Normal+ Normal+ Parallel Paralell Parallel (2) (2) (2) ͼ Notes: (1) This is not the maximum performance for your parallel ports, you may want to use another cable configuration. (2) You don't need two parallel ports for this cable configuration, you can hook the indicated cables up to the primary parallel port. ͻ Two ports, SPP PS/2 EPP/ECP primary is EPP/ECP ͹ Minimum speed (1) (1) Extended/ Multitask/ Active (2) Ķ Medium speed (1) (1) Extended/ Multitask/ Active+ Hybrid Ķ Maximum speed (1) (1) Extended/ Multitask/ Active+ Parallel (2) ͼ Notes: (1) You shouldn't have an EPP/ECP parallel port as your primary port. Swap your parallel ports and try again. (2) You don't need two parallel ports for this cable configuration, you can hook the indicated cables up to the primary parallel port. The following diagrams are pictured as viewed from the solder end (back side) of the plug. It may be of help to you that the numbers are often printed in small letters onto the plug itself. When wiring the interface cables, make sure that they are not too long. A cable longer than about two meters will possibly not work, especially if it isn't shielded at all. The PC parallel plug (male DB-25 connector): PaperEnd Busy SelectIn Ack Data 7 - Data 0 Strobe Ŀ V V V V V ͻ 13 12 11 10 9 8 7 6 5 4 3 2 1 o o o o o o o o o o o o o ͻ ͼ o o o o o o o o o o o o 25 24 23 22 21 20 19 18 17 16 15 14 ͼ ^ ^ ^ ^ Ground Select AutoFeed Init Error The Commodore drive serial bus plug (male 6-pin DIN connector): Reset V ͻ ͻ ͼ ͼ ͻ 5 1 Data > o 6 o < SrqIn o 4 2 Clk > o 3 o < Gnd o ͻ ͼ ͼ ^ Atn Commodore drive periphery chips are displayed as viewed from above. The small semicircular cut may help you with finding the correct orientation. The Commodore 1541 drive VIA#1 periphery chip: ͻ 40 21 ) 1 2 9 20 ͼ PA0 - PA7 The Commodore 1570/1571 drive CIA periphery chip: ͻ 40 21 ) 1 10 17 20 ͼ PB0 - PB7 You can find the VIA#1 by searching for a chip on the motherboard that has the type number 6522 on it and none of its pins 2-9 are connected to any other chip. The CIA chip has the type number 6526, 8520 or 8521 on it. The X1541 interface connects the following pins: CBM drive serial port PC parallel port 2 Gnd 18-25 Ground 3 Atn 1 Strobe 4 Clk 14 AutoFeed 5 Data 17 Select 6 Reset 16 Init The original specification of the X1541 interface requires the short connection of pins 2 and 15 on the parallel port plug. The X1541 program uses it for autodetection, the Commander doesn't make use of it. If you intend to use other transfer programs with your interface then you might want to do this alteration, as well. You have to connect the X1541 interface to an SPP or PS/2 parallel port. The lines used by this cable are not necessarily bidirectional on EPP and ECP parallel ports. This interface works with all kinds of Commodore drives and their clones. The XE1541 extended interface connects the following pins: CBM drive serial port PC parallel port 2 Gnd 18-25 Ground 3 Atn 13 SelectIn >| 1 Strobe 4 Clk 12 PaperEnd >| 14 AutoFeed 5 Data 11 Busy >| 17 Select 6 Reset 10 Ack >| 16 Init This interface, unlike the X1541 interface, needs electronical components, namely diodes. These decouple the control lines of the PC parallel port while data is coming from the Commodore drive. You have to solder them right before each of pins 1, 14, 16 and 17, their cathodes - the end marked with a small band - pointing towards the pins. Note that you don't really have to use diodes on the Atn-SelectIn-Strobe and the Reset-Ack-Init lines because the Commander never uses them for input. However, if other programs in the future will support this cable then they may need a diode for these lines, as well. It is highly recommended to use 1N5819 or BAT85 diodes only, other diodes may make the cable inoperable on some hardware configurations. The XM1541 multitask interface connects the following pins: CBM drive serial port PC parallel port 2 Gnd 18-25 Ground 3 Atn 13 SelectIn >| 1 Strobe 4 Clk 12 PaperEnd >| 14 AutoFeed 5 Data 10 Ack >| 16 Init 6 Reset 11 Busy >| 17 Select Please, read the chapter of the XE1541 extended cable for more details. As you can see, the only difference is that the multitask cable has pins 5 (Data) and 6 (Reset) swapped in the Commodore plug. ------------------------------------------------------------------------------ WARNING!!! THE SPECIFICATIONS OF THE XA1541 ACTIVE CABLE ARE NOT FINAL YET!!! ------------------------------------------------------------------------------ The XA1541 active interface connects the following pins: CBM drive serial port PC parallel port 2 Gnd 18-25 Ground 3 Atn 13 SelectIn () 1 Strobe 4 Clk 12 PaperEnd () 14 AutoFeed 5 Data 10 Ack () 16 Init 6 Reset 11 Busy () 17 Select This interface needs electronical components, transistors and resistors. These enhance signals while data is going to the Commodore drive and decouple the control lines of the PC parallel port while data is coming from the Commodore drive. You have to solder the enhancers right before each of pins 1, 14, 16 and 17; see the circuit diagram zoomed below. It is highly recommended to use 2N3904 transistors and 4.7 kOhm resistors only, other transistors or resistors may make the cable inoperable on some hardware configurations. The enhancers are constructed the following way: Commodore pin PC input pin ------ / C \ \ / \B \ transistor | [////] PC output pin \ / / resistor \ E / / ------ GND The 2N3904 transistor has its pins laid out the following way: +------ | o C \ | \ | o B | | / | o E / +------ This picture displays the transistor as viewed from below, where its pins are. Note that this pin layout belongs to the 2N3904 transistor, others may have their pins laid out differently. In the enhancer, you should connect the emitter pin to any or, preferably, all of pins 18-25 on the parallel port. ------------------------------------------------------------------------------ WARNING!!! THE SPECIFICATIONS OF THE XA1541 ACTIVE CABLE ARE NOT FINAL YET!!! ------------------------------------------------------------------------------ The XH1541 hybrid interface connects the following pins: CBM 1541 VIA#1 PC parallel port 2 PA0 13 SelectIn >| 2 Data 0 3 PA1 12 PaperEnd >| 3 Data 1 4 PA2 10 Ack >| 4 Data 2 5 PA3 11 Busy >| 5 Data 3 6 PA4 >| 6 Data 4 7 PA5 >| 7 Data 5 8 PA6 >| 8 Data 6 9 PA7 >| 9 Data 7 The XH1571 hybrid interface connects the following pins: CBM 1570/1571 CIA PC parallel port 10 PB0 13 SelectIn >| 2 Data 0 11 PB1 12 PaperEnd >| 3 Data 1 12 PB2 10 Ack >| 4 Data 2 13 PB3 11 Busy >| 5 Data 3 14 PB4 >| 6 Data 4 15 PB5 >| 7 Data 5 16 PB6 >| 8 Data 6 17 PB7 >| 9 Data 7 These interfaces need diodes. You have to solder them right before each of pins 2-9 of the PC parallel port, their cathodes - the end marked with a small band - pointing towards the parallel port pins. A suggested diode for this interface is the 1N4148 or equivalent. You can connect the XH1541 and XH1571 interfaces to any type of parallel port. They have no common lines with the X1541 interface therefore you can connect them, along with the X1541 interface, to the same SPP or PS/2 parallel port, using a Y-shaped cable. The XH1541 interface only works with Commodore 1541 drives and compatible clones. The XH1571 interface only works with Commodore 1570 and 1571 drives and compatible clones. The XP1541 parallel interface connects the following pins: CBM 1541 VIA#1 PC parallel port 2 PA0 2 Data 0 3 PA1 3 Data 1 4 PA2 4 Data 2 5 PA3 5 Data 3 6 PA4 6 Data 4 7 PA5 7 Data 5 8 PA6 8 Data 6 9 PA7 9 Data 7 The XP1571 parallel interface connects the following pins: CBM 1570/1571 CIA PC parallel port 10 PB0 2 Data 0 11 PB1 3 Data 1 12 PB2 4 Data 2 13 PB3 5 Data 3 14 PB4 6 Data 4 15 PB5 7 Data 5 16 PB6 8 Data 6 17 PB7 9 Data 7 You have to connect the XP1541 and XP1571 interfaces to a PS/2, EPP or ECP parallel port. On SPP parallel ports, the data lines are unidirectional. If you have a PS/2 parallel port then you can connect the X1541 and XP1541 or the X1541 and XP1571 interfaces to the same parallel port, using a Y-shaped cable. If you have an EPP or ECP parallel port then you should use the XE1541, XM1541 or XA1541 interface rather than the X1541 interface. Alternatively, you can build two separate cables and buy a secondary old SPP parallel port card for the X1541 interface. The XP1541 interface only works with Commodore 1541 drives and compatible clones. The XP1571 interface only works with Commodore 1570 and 1571 drives and compatible clones. Please, note that none of the XH1541, XP1541, XH1571, or XP1571 interfaces is a substitute for the serial cables. You have to connect two cables to the Commodore drive and the PC at the same time to acquire the enhanced transfer capabilities. Don't connect the XH1541, XP1541, XH1571 or XP1571 cable alone to the Commodore drive. None of them contain a GND line so plugging them without a serial cable may short circuit your machines and, possibly, damage the periphery chips. Always connect the XH1541, XP1541, XH1571 or XP1571 interface to your Commodore drive and your PC before switching either of them on and switch both machines off before pulling the cables out. In 1541 drives, nothing is defined to any of the bits of Port A. You can connect the XH1541 interface and the XP1541 interface without any problem. In 1541C drives, bit 0 of Port A is used for the detection of the head being over track 1. After stripping this connection off of the chip, you will have to replace the DOS ROM with that of the 1541 or the 1541-II. Otherwise you'll get strange results when the drive is seeking: the DOS tries to rely on the detector line which doesn't exist anymore. In 1541-II drives, bit 0 of Port A is grounded, strip this connection off of the chip. In 1570 and 1571 drives, there are several lines connected to the bits of Port A of VIA#1. You can't use the XH1541 interface or the XP1541 interface with them. However, you can use the XH1571 or XP1571 interfaces, cables of the same design as the XH1541 and XH1571 interfaces, to a different chip, namely the CIA, most of whose pins are unused in these drives. 1581 drives are completely different from the aforementioned members of the Commodore drive family. You can't use the XH1541, XP1541, XH1571 or XP1571 interfaces with them. Because of their extremely high transfer speed, no hybrid or parallel cable will be implemented for them. If you already have a floppy speeder like Speed DOS or Dolphin DOS in your 1541, 1570 or 1571 drive then you probably have a parallel plug at its rear. In this case, you have many options of implementing the XH1541, XP1541, XH1571 and XP1571 interface. You can create another cable to connect the drive to the PC with. You can also split the cable between the drive and the C64 into a Y-shaped cable, one end plugging into the drive, another into the C64 and the third one into the PC. In this case, remember not to plug the cable into the C64 and the PC at the same time. However, your best choice is creating a small adaptor that imitates the C64 user port on one side and plugs into the PC parallel port on the other side. If your 1541 or 1571 drive has no parallel capabilities then you might still want to create a plug at its rear. This way there will be no cable always hanging out of the drive. With another cable, you'll be able to use parallel transfer with the C64, too. Please, note that parallel copy programs for the C64 may require some additional connections on the VIA or CIA chip of the drive. Read their documentation before soldering so that you can connect the additional pins to the parallel plug, if needed. 8. Technical background information There are three types of lines on PC parallel ports. Data lines are used to transfer data bytes between the PC and the external device; control lines are used by the PC to send control signals to the external device; status lines are used by the external device to send status signals to the PC. From the PC side, logically, data lines should be used for both input and output, control lines for output only, and status lines for input only. But this is not exactly the case. On the early SPP parallel ports, data lines can only be used for output; this is what we call a unidirectional parallel port. Note that this expression is mainly used for the usage of the data lines. Furthermore, with a little trick, the control lines can be used not only for output but for input, as well. On these early SPP parallel ports, the port pins are connected via open collectors to the chipset on the I/O controller card: there is a resistor between 5.0 V and the pin and a transistor between GND and the pin. The transistor is controlled by the chipset which is, on the other hand, controlled by the software. When the corresponding port bit is set to one, the transistor opens and the resistor pulls the signal level on the pin to high, a voltage level of between 3.5 V and 4.5 V. When the port bit is cleared to zero, the transistor closes and pulls the signal level to low, between 0.0 V and 0.4 V. The reason for this is that the transistor can pull stronger than the resistor. On Commodore drives, the pins of the serial port are also connected via open collectors to the periphery chip. When there are open collectors on the two ends of the same cable then three possibilities exist. If both ends pull the line low then the actual signal level, that can be read by both parties, will be low. If both ends pull the line high then the result will be a high signal. However, if one end pulls the line high and the other one pulls it low then, again, because of the strength of the transistor, the signal level will become low. The PC or the Commodore machine can pull the line high and low and the drive will be able to read this signal. However, if the machine pulled the line high then the drive will also be able to signal back, by pulling the line low. This is the only way to input data from the drive and this is exactly how Commodore machines and PC's, using an X1541 interface, work. It is still a mystery why the original parallel port, designed by IBM, is a unidirectional parallel port. The port wouldn't have been more expensive if it allowed the software to switch the data lines into input mode. Actually, many parallel port cards are designed to be bidirectional but are crippled down to unidirectional mode. The way to enable bidirectional mode on these cards is described at the end of this chapter. Such bidirectional SPP ports are often called PS/2 parallel ports. However, with the introduction of high-speed peripherals, open collectors started to be replaced by totem poles: there are two transistors, one between 5.0 V and the pin, the other between GND and the pin. The two transistors are controlled in an inverted way: at a time, exactly one of them is open and the other is closed. When the port bit is cleared to zero then, as before, the transistor on the GND side closes and pulls the line low. However, when the port bit is set to one then it is also a transistor that pulls the line high. This way, the high signal level is a voltage of 5.0 V, as opposed to between 2.8 V and 5.0 V in the open collector, and the speed of switching between signal levels is also significantly higher, allowing more data to be transferred in a given interval of time. On certain Pentium and newer 486 motherboards, the pins of the integrated parallel port are connected via totem poles to the chipset. When a totem pole in the PC pulls the line high then it does that with a transistor. If the drive tries to pull the line low, to send a signal, then it also does that with a transistor. The two transistors will be fighting against each other and the outcome is unknown: the signal level may remain at high, if the transistor on the PC side is stronger, or become low, if the transistor in the drive is the stronger one. Most of the time, the transistors in the PC seem to be stronger and, therefore, no data can be input from the Commodore drive. And it is not only totem poles that can render transfer programs unable to work. The chipset on some other motherboards doesn't even contain the circuitry needed to read the signal level on lines other than the status lines. The new enhanced parallel ports, EPP and ECP ports, have bidirectional data lines so that data can be read from a hard disk or a scanner connected to the PC. However, as described above, their control lines are not bidirectional anymore. Additionally, on some motherboards, control lines are unidirectional even when the port is switched to SPP mode via the BIOS setup. The X1541 cable won't work on these parallel ports. If you can't make transfer programs work with your motherboard then you should stop testing immediately, because the fights between transistors put stress on the chips on both sides. You should rather build an XE1541 or XM1541 which are slightly different from the X1541 cable and work on more parallel ports. The X1541 cable is of the simplest design. It connects pins of the Commodore serial port and the PC parallel port without any conversion or wire split. So that the PC is able to also input data from the Commodore, not only output to it, it definitely needs the lines, it uses, to be bi-directional. If they are not then the cable doesn't work at all, no matter what software you're using with it. The XE1541 cable connects wires, coming from the Commodore end, to two pins on the parallel port. One of these pins belongs to a control line and there is a Schottky-diode in front of it. This is line via which data is sent to the Commodore. The other pin belongs to a status line which is used to receive data. Because control lines can be used for output and status lines for input on any parallel port, this solves the problem with the X1541 cable. When the PC expects the Commodore to send to data, it sets the control line to a high level and listens to the signal level on the status line. The diode prevents current from flowing from the PC end, therefore, the Commodore is free to set the line to whatever level it wants to. Without the diode, the output lines of the PC and the Commodore would be fighting with each other. The XM1541 cable has only two wires swapped at the Commodore end. This results in the DATA line of the Commodore being connected to the ACK line of the PC parallel port. This latter line is the only one that is capable of generating interrupts on the PC. This way, when the PC is waiting for the next handshake arriving from the Commodore, it can do that by enabling the "ACK generates interrupt" feature and halting its execution. When the interrupt occurs, the PC can also continue with the next handshake. Until this happens, the program uses no CPU time because it's not running at all. This interrupt method uses significantly less CPU time than polling, that is, running in an endless loop that checks the signal level again and again. This is important for real multi-tasking systems such as Linux. The XA1541 cable is derived from the XM1541 cable. It also has the two wires swapped at the Commodore end, therefore, it also improves overall performance under a multi-tasking system like Linux. However, it corrects a problem with the XE1541 and XM1541 cables that occurs with certain parallel ports that are on the edge of the original IBM specification. According to the specification, the low level of a line means that the voltage is between 0.0 V and 0.4 V. When a Schottky-diode is applied onto this line then the voltage may go up to even 0.8 V because the typical voltage raise of such diodes is about 0.4 V. Unfortunately, this 0.8 V is also just the edge of the low level recognized by a Commodore. For a Commodore, voltages between 0.0 V and 0.8 V are low, 2.8 V to 5.0 are high and 0.8 V to 2.8 V are unknown. In the latter case, it is also unknown what the software running in the Commodore will see: sometimes a high, sometimes a low level. It is worth mentioning that exactly this is why Schottky-diodes were chosen for the XE1541 and XM1541 cables: other diodes raise the voltage even more. Instead of diodes, the XA1541 cable uses transistors and resistors. If the PC needs to pull the signal level to low on the wire then it sends out a high level on the parallel port. This closes the transistor between the wire and the ground. Because the transistor is strong, it can pull the signal level to typically about 0.2 V which is accepted as a low level by the Commodore, as well. This voltage depends on the transistor but not on the voltage coming from the parallel port. Therefore, whatever parallel port you have, including the ones that are not compatible with the XE1541 and XM1541 cables, the resulting voltage will be enhanced to an acceptable level by the transistor. The resistor is used to adjust the working point of the transistor for optimum performance. Because a transistor will amplify currents, the base current has to be adjusted to a value that results in the needed output current. If the input current is too high, the transistor will work slower than it should be able to, and if the input current is too low, the transistor will not switch reliably. You can convert unidirectional SPP parallel port cards into a bidirectional PS/2 port by disconnecting pin 1 of the data latch 74LS374 from ground and connecting it to one of the output pins on the control latch 74LS174. This pin can be any of pins 2, 5, 7, 10, 12 or 15 and must not be connected to any other chip on the board. The corresponding input pin (3, 4, 6, 11, 13 or 14) must be connected to bit 5 of the data bus. If this is not the case on your card then you can access this bit from the data latch. Find out which one of its output pins (2, 5, 6, 9, 12, 15, 16 or 19) is connected to pin 7 of the parallel port connector and get bit 5 from the corresponding input pin (3, 4, 7, 8, 13, 14, 17 or 18). 9. Troubleshooting If you encounter problems in the part of the program that does not access an external Commodore drive, you should contact me with a detailed description of the bug, including a guide on how to reproduce it. However, if you can't access the external Commodore drive properly, here are some ideas for you. First of all, bare boot your computer, disable all resident programs, memory managers and device drivers. Exit multi-tasking systems such as OS/2, Linux, Windows, Windows 95/98/ME or Windows NT/2000. These circumstances may affect data transfer. Boot plain DOS on your machine or boot your Windows operating system in DOS mode and strip everything, you don't need, off your AUTOEXEC.BAT and CONFIG.SYS files. You may create a boot menu or a boot disk, too. Please, note that you won't be able to access the Commodore drive at all under Windows NT/2000. During your test, don't plug anything other than the serial interface into your PC parallel port and your Commodore drive. If the connection with the Commodore drive locks up then switch the drive off and pull the serial interface out of it. Wait for the error message "Drive not present", plug the interface back and turn the drive back on. Optionally, you can reset the drive, e.g. with Control-Alt-Backspace. Then try the following. If you get completely confused, you may want to simply delete the SC.INI file and start configuring the Commander again from scratch. Switch 'Transfer mode' to 'Warp' in the 'Transfer options' menu. This is not only the fastest transfer mode but the most reliable, as well. If you're experiencing problems during disk commands then switch 'Command exec mode' to 'Warp' in the 'Drive options' menu. This will make the Commander use its own programs for disk commands which are not as sensitive to timing problems. Raise or lower the delay value in the 'Transfer options' menu. It is very sensitive so change it at steps of one. The highest delay value you can use without transmission problems is the optimum. You can use the 'Recalibrate' button to have the - hopefully best - delay value calculated for you. Note that you definitely have to change the delay value if you started using the Commander under an another operating system, e.g. switched from DOS to Windows or vice versa. The delay value is affected by the effective CPU speed of your PC which, in turn, depends on the raw CPU speed and the operating system you use. Check in the 'Transfer options' menu if you have set correctly the type of the serial cable and the parallel port it is connected to. Do the same with the parallel cable, in case you have one. If you have no additional cable besides the serial cable then set the parallel cable to 'None'. If you really want to access the Commodore drive via a serial cable under a multi-tasking system then enable the 'Force async transfer' option in the 'Transfer options' menu. Without that, you would most probably experience frequent lockups or timeouts. First, you should test the connection under plain DOS though. You might also want to try this feature under plain DOS, as well, if you are experiencing transmission problems. Under Windows, open the Properties windows of the DOS shell, that the Commander is running in, go to the Misc tab and set Idle sensitivity to Low, the left end of the slider. This gives more CPU time to the Commander. Turn 'Manual timeouts' on or off. While it usually helps under plain DOS, it may turn things even worse under a multi-tasking system. Also, when it is enabled, the Commander doesn't really like it if you touch the keyboard or the mouse during its communication with the Commodore drive. Check whether the address and mode of your parallel port is detected and displayed correctly in the 'Transfer options' menu. If it is not detected at all then, in the case of an integrated parallel port, enter the BIOS setup and check your parallel port settings. On some motherboards, it is possible to set the parallel port into Auto mode. In this case, a plug-and-play compatible operating system has the chance to set the parallel port to the address and mode it likes. However, DOS is not one of these operating systems so set the address and the mode manually. See the next paragraph for the proper mode. If you have a Pentium or newer 486 motherboard, with an integrated parallel port and you're using the X1541 interface then change the mode of the parallel port to SPP or PS/2 (usual aliases are Normal, Standard, Compatible and Extended). In case you also use the XP1541 or XP1571 parallel cable, you must set its parallel port to PS/2, EPP or ECP (usual aliases are Extended and Enhanced) mode. To test your PC against compatibility with the X1541 cable, download X1541Test from the 'Other useful programs' subpage of the homepage. For the other cables, the parallel port mode usually doesn't matter although there are some exception. See below for more details. If you are still unable to access the Commodore drive then disable the 'Detect port modes' option in the Commander, save the setup and do a hard reboot with the RESET button of your PC. A very few parallel ports fall into an unusable state when the Commander detects their mode. If a given mode of your parallel port completely fails all trials, you may try switching it into another mode in the BIOS setup. It is worth mentioning that, on some motherboards, the Commander locks up the machine completely when it is trying to detect a parallel port that is in EPP 1.7 mode. This seems to be some kind of hardware problem. In this case, you rather have to switch the parallel port into EPP 1.9 or ECP mode in the BIOS setup. If you have a Pentium TX, Pentium-II or Pentium-III motherboard then you're most probably the owner of an integrated parallel port that is incompatible with the X1541 cable. To test your PC against compatibility with the X1541 cable, download X1541Test from the 'Other useful programs' subpage of the homepage. Try using an older I/O controller card, a parallel port card or a Hercules video card with a built-in parallel port. Alternatively, you can also use the XE1541, XM1541 or XA1541 cable. If your motherboard allows overclocking the FSB (Front Side Bus) frequency then set it back to the default value in your BIOS setup. For the default value, refer to the motherboard manual. The Commander relies upon the hardware timers having the same speed on all PC's but changing the FSB frequency may affect the hardware timer frequency, as well, on some motherboards. If you use the built-in drive of a C128D or an SX64 then execute the command 'POKE 56576, 199' on the Commodore machine before accessing its drive. Every time you also access the drive from the Commodore machine, you'll have to execute this command again afterwards. Make sure that the serial interface is assembled well, it is shielded correctly and it is not too long. If you built the cable yourself then check it against the diagrams below or on the homepage; you might have a mirrored cable. You can also try your cable with other machines and other transfer programs. Plug your Commodore drive to a Commodore machine to see if it works at all after all those years. You may want to borrow a tested drive from someone. If you have an integrated parallel port whose connector is not soldered onto the motherboard but rather has a cable that is plugged onto the motherboard then check this cable connection. It's possible that the cable of the parallel port is plugged onto the motherboard in a mirrored way. You can also check its functionality with a PC printer. If your network uses parallel port redirection then logout. Remove dongles, parallel port switches and other devices that may filter data transfer via the parallel port. If you've tried everything and you still can't find out which component is is not working properly, download XCDetect from the 'Other useful programs' subpage of the homepage. Connect your Commodore drive via the cable to the PC, switch the drive on and run XCDetect in debug mode, by specifying the "-d" option. If the program manages to detect both your cable and your drive then there's either a Commander configuration problem or you have found a bug in the Commander. If you're done with all these checks and still no luck, contact me. Tell me what PC (motherboard brand and type, CPU type), cable and drive you have, what error you get and when, and include XCDetect's output in debug mode, as well. 10. Reporting problems, ideas and wishes I do not have the possibility to test the program on many kinds of PC's. I ask you to contact me if you found bugs in the program (you will possibly find some as it is still under development) or have an idea of what improvements I should do in the future. Please, send me a note if you saw a grammatical error, misspelling, typo or something misunderstandable in the online help or this documentation. If you know good FTP sites or WWW pages with C64 areas to which I should upload this program or are just interested in this program then an E-mail would be appreciated. Please, E-mail your detailed bug reports along with the version number of the Commander you use, the configuration of your PC (CPU and motherboard type) and the SC.INI file you used when the bug occurred. Also include a guide on how to reproduce the bug. If the bug occurred only with a certain file you can send it to me uuencoded or attached, as well. Please, compress all files you send to me. 11. Bugs fixed since Version 0.81 - a pointer went astray when switching to the C64 character set, it might have caused rare lockups - the EOI detection problem, that caused the loss of the last byte of some sectors during disk copy and the loss of the last directory sector during reading the directory in normal transfer mode, has been finally fixed - when the header of sectors are not found during warp disk copy, you get an error message instead of the transfer stopping, with the disk spinning but apparently no data being read - false timeout errors were reported at the end of file copies in normal and turbo mode - no files could be processed in directories inside archive files - the Commander, the viewer and the editor don't lock up under the long file name support program of Caldera OpenDOS anymore - the Commander doesn't lock up when reading a looping directory - if you were using the hybrid or parallel cable on an ECP parallel port and saved the setup with one of the panels being an external panel then the Commander didn't recognize external drives upon startups anymore - you get a warning when you leave the 'Transfer options' menu if one of the LPT ports is set to a non-existant port - if there is an error while preformatting the destination disk, the disk copy is aborted - the warp disk copy locked up when it tried to verify certain block contents - wiping phantom files does not erase the directory anymore - the Commander and Star Ark computed the start offset of the data area of Arkive archives incorrectly so they sometimes extracted corrupted files - deleting files from filepacked ZipCode archives went crazy most of the time - no dialog box remains on the screen when a directory is copied - if you switched back to normal mode from either fast mode, only the first block of the directory was read from the Commodore drive - the GEOS file converter routines chopped off the last byte of VLIR records - GEOS files are now saved exactly the same way into disk images as under GEOS itself - when copying files out of file images automatically, using the 'Extract PC64 file images' option, the original Commodore name of the file is also extracted - LHA archives with entries of invalid Commodore file types or with trailing garbage are now considered to be valid - when extracting files from LHA archives, you are not asked twice for manual filename conversion anymore - turbo delete and validate work correctly on extended disks, too - when copying DOS files or files in LHA or TAR archives from or into GEOS disk images, no ASCII-PETSCII filename conversion takes place - Commodore file names, that contain too many decimal digits, are now correctly converted into a PC64 file image name - if a CD-ROM drive has no disk in it and you want to change to this drive, you will get the same error message as when changing to a floppy disk drive with no disk in it - the critical error boxes display device errors correctly - the bug that makes C64S refuse paths given on the command line with a trailing backslash has been circumvented in the emulator launch file - if you entered an invalid image or archive then, after the error message, you got an empty DOS panel - if you pressed Enter on 'Cancel' buttons then the current function was continued as if you had pressed the 'OK' button - Control-PgDn enters directories, image and archive files only and never launches DOS files - the undocumented hotkeys Control-PgDn and Control-PgUp are now mentioned in the online help - the Commander locked up if you pressed Control+Backslash in an external panel - when sorting DOS directories by date, directories whose name starts with a dot won't be sorted before '..' anymore - when renaming files with long filenames, asterisk wildcards are handled in a Unix-like way, e.g. 'a*' changes the first character of the filename to 'a' but keeps all other characters unchanged, including the extension - very long paths are truncated in the command line - long filenames containing the characters ",", ";", "=" or "+" are also enclosed into quotes when inserted into the command line - file time stamps are displayed with the correct country-specific separator in the 'File attributes' dialog box - the bottom frame of Wide DOS panels with no mini status now joins the vertical separator line correctly - when copying multiple disks, destination disk images don't inherit the error info block of the previous one - automatically skipped bad sectors don't inherit the error code of the sector where 'Skip auto' was selected - if an error occurs during copying a disk to a disk image, the first one or two sectors of the current track are not overwritten with the code of the turbo loader - when changing one of the panels to an external panel, the command line path automatically changes to the path of the opposite panel - GEOS disks in external Commodore drives are also displayed with the GEOS character set - you couldn't move files between images or archives with the same filename - there are no more lockups if files of empty names are copied into PC64 file images - when copying files inside PC64 file images into PC64 file images, the file type of the source file is preserved - when copying into PC64 file images, the progress indicator filled up with half speed and only reached the middle of the bar - if you copied files from Commodore drives with typing a filename pattern then the Commander tried to copy files in the second, third etc. directory sector again and again and the attribute of the destination files was also changed to DEL - by pressing 'Cancel' in the filename conversion confirmation dialog box, now you can abort the file copy process immediately - when you renamed or deleted files by entering a wildcard pattern, the cursor was placed onto an inappropriate file afterwards - directories containing files with dot as the first character of their filename couldn't be deleted - you are not allowed to copy multiple files with the same name into LHA and TAR archives anymore - there were several problems if you tried to compress files into LHA archives from disk images containing phantom files - you couldn't extract files from LHA archives with a long filename - when copying, moving or renaming files, filenames are truncated to 16 characters, except for DOS, TAR and LHA panels - in Brief mode, filenames in LHA and TAR directories are truncated to 16 characters - sometimes false errors were reported about trying to copy a file onto itself - you're not allowed to select relative files with Grey * anymore - frozen files copied into tape images were given invalid attributes so the emulator wouldn't load them - when saving files, the GEOS soft interleave is used if the source file is a GEOS file, not if the destination disk is a GEOS disk - while copying files into disk images, Convert archives are not converted into GEOS files if GEOS support is disabled - if you moved files and appended them to an already existing file then only every second source file was processed - you couldn't delete files in image and archive files with typing a filename pattern - if the destination file already existed then you were asked for confirmation about overwriting it, even if you pressed Escape while reading the first chunk of data from the source file - the Commander didn't recognize the standard Commodore file types in DOS file extensions - if you delete a file image which is opened in the inactive panel then the panel will fall back to DOS mode - if you enter a year less than 80 in the 'Attributes' dialog box then it will be assumed to be a date after 2000 - even when 'Auto unselect files' is unchecked, 'File attributes' unselects processed files - File info didn't recognize frozen files - files extracted from images or archives do not keep the date stamp if 'Keep file date stamps' is unchecked - the attributes of multiple files couldn't be changed in image and archives file, only one by one - no volume label was displayed for CD-ROM drives and a false volume label was reported for Windows 95 partitions where there was a long file name entry before the entry of the real label - there are no more lockups if you forget the colon at the end of the filename pattern in extension files - the 'Owner' function does not lockup anymore for crosslinked and looping files - inserting data in the text half of the sector editor works now - several problems related to Quick view panels have been fixed - the sample Commander screens in the external setup have been updated - keeping the left mouse button pressed will scroll the panel display up or down, even if you move off the panel rectangle - the viewer and editor now also display the symbols for control characters in screen code view mode - search strings were truncated at 21 characters both in the viewer and the editor - the editor couldn't backup files in shared environments - the editor didn't recognize when a file inside an image or archive file was too big and, while trying to load it fully into memory, locked up - when in the ASCII half of the hexa mode of the editor, Alt-key combinations won't write a zero byte into a file anymore - the 'Save as' function of the editor now reads in the attribute of the file specified and warns you about it being a read-only, hidden and/or system file correctly - the Star Utilities had several problems with phantom files - Star ARC didn't stop displaying some archive titles because it didn't recognize their end - in Star LHA, you can use a dash before the command 'S' - Star List does not fall into an endless loop when listing messed up disk images and stops execution if you press Escape - Star List didn't display graphical characters correctly in LHA and TAR archives - Star List doesn't recurse into subdirectories unless you explicitly tell it to - Star Zip warns you if the destination disk is full 12. Other changes since Version 0.81 - the Commander main executable has been restructured to an overlaid program, now it needs about 100 KBytes less conventional memory - the documentation contains some technical background information about PC parallel ports - raised the proposed registration fee to 20 DEM and 1000 HUF; the 10 USD remained unchanged; also, removed the possibility to pay by check - the extension of the documentation files of the Star Utilities was changed to '.txt' because they are plain DOS text files - introducing support for 1571 and 1581 disk images and Prologic DOS extended disk images - introducing support for Commodore 1570 and 1571 drives - introducing support for the XM1541 multitask and the XA1541 active cables - introducing support for the XH1571 hybrid and XP1571 parallel cables for Commodore 1570 and 1571 drives - introducing a new cable mode called 'Async' that uses a serial cable but, at the cost of a slightly lower transfer speed, allows you to access Commodore drives under a multi-tasking system, as well - the complete external setup has been integrated into the main program, Control-F9 now opens the menu of configuration screens - introducing a new menu for the manual selection of the type of the external drive, with Control-F10 assigned to it - now you can change the address of the parallel ports to any value using the two custom port address slots - introducing support for relative files - the Commander, the viewer and the editor can now process multiple files with the same name independently - the warp disk copier now recognizes 27 and 29 READ ERROR's - introducing support for GEOS disk images in Star List - introducing a "printf"-style way to format the output of Star List - just like in the other Commanders, Shift+F10 positions to the item previously executed in the menu tree - introducing the warp delete and validate routines that read through the disk only once instead of tracking through the files on it one by one - the configuration menus have been rearranged in the external setup - the online help pages now list all configuration options related to that particular function rather than only the important ones - introducing a smart drive presence detection routine - you should now be able to use your Commodore drive from a Commodore machine and a PC simultaneously - pressing Escape or F10, while messages or code fragments are transferred between the PC and the external drive, aborts the operation with a timeout error; with 'Manual timeouts', you can control whether you can generate timeouts manually or not - introducing clipboard support, buffering data on disk or in the common Windows clipboard, when available - the mode of parallel ports is not checked upon returning from DOS shells anymore - now you can access tracks 36-40 on 1541 disks on any 1541 drive - you can again use Control+Shift to toggle the C64 character set - 'Quality C64 charset' lets you switch between the two VGA modes used to display the C64 character set on the screen - 'Prefer long names' lets you use long file names more comfortably - you can also select files by holding Shift when moving the cursor - you can use Control-N to toggle long file names - Control+Tab now completes DOS commands and filenames on the command line and in filename input lines - 'Convert invalid chars' makes the Commander convert those PETSCII characters to hexadecimal codes, that have no ASCII equivalent, and converts these codes back to PETSCII characters during file copies and any other inputs where Commodore strings are used - now you can rename and delete files inside PC64 file images - you can use Alt-Up and Alt-Down to change the height of the panels row by row - the cursor moves in a smarter way between items in dialog boxes - when Tab or Shift+Tab is pressed in a group of radio buttons, the cursor jumps to the next or previous group of items - introducing the Wide panel mode for CBM panels - there are some new panel filters for PC archives and CBM files (image files plus CBM archives) - introducing the 'Restore selection' feature - you can sort the display of disk images, as well - there is a new configuration menu for soft and hard interleaves - to save memory, the disk editor discards the contents of temporary buffers upon exit - now you can also enter Commodore drive device numbers in the error dialog box that comes up if there's no disk in the PC drive you tried to change a panel to - DOS files are first opened in sharing mode and, if unsuccessful, then in compatibility mode - the visible length of the 'Program extension' input line has been raised to 8 characters - the checkbox 'Fast command exec' has been changed to a group of radiobuttons called 'Command execution' with the possible values of 'Normal', 'Turbo' and 'Warp' - the default value for the option 'Into PC64 file images' of the 'Copy' and 'Rename or move' dialog boxes can be specified in a configuration option of the same name - now you can move the contents of PC64 file images by checking the option 'Extract PC64 file images' in the 'Rename or move' box - you are warned if the destination tape image grows above 64 entries because C64S can only handle the first 64 of them - instead of an error message that you have to confirm, you only hear a beep if there's not enough memory to read in the directory - if there are no more entries in destination tape image during file copy then you're asked about expanding it - under 4DOS and NDOS, files with the extension '.btm' are also recognized as executable files - you can now set the real number of retries, the search on adjacent halftracks and the head bump on retry separately - the progress indicator boxes don't flicker anymore - you can make the Commander save files into the unused sectors of the directory track, if there's no more space in the destination disk image, by checking 'Copy onto dir track' - when saving files onto disks or into disk images, the fill pattern for the unused part of their last block is determined by the 'Orig format pattern' option - you can force the deletion of all read-only or write-protected files without further confirmation for each - in delete and overwrite confirmation boxes, you can choose to skip all files without further confirmation for each - the deletion of cross-linked files ends when arriving at the BAM or the first directory sector - 'Make directory' now creates directory structure of any depth in one go - by checking the new item 'Keep lowercase chars', under Windows 95, you can create directories with lowercase filenames - now there are separate soft interleave configurations for external drives and all types of disk images - the maximum value of interleaves has been raised to 21 - the hotkey Control+F7 is now assigned to 'File attributes' - you can disable the head bump before disk format - both parallel ports assigned to the Commander are initialized to input mode and ECP ports are set to byte mode, upon startup and before every access of the Commodore drive - a lot more ASCII characters are converted to PETSCII in filenames during file copy from a DOS panel to a CBM panel - now all PETSCII characters are converted to some similar ASCII character when displaying filenames or copying files from CBM to DOS panels - the user menu displays the first 16 items only - the user menu item 'Minimize' deletes unused entries from tape images - if the first line of a menu or extension file is a comment starting with the word "title" then the rest of the line is taken as the title of the menu to be displayed on the screen - the user menu for external drives is expanded with an item which changes the head used by the 1571 drive in 1541 mode - you can protect and unprotect 1541 disk images from the user menu - with a new item in the user menu for disk images, you can select files that contain at least one bad sector - now the 'Clean' and 'Safe clean' functions don't touch at all sectors that are used but don't belong to a file - when cleaning disk images, the BAM, the first directory sector and the GEOS border sector are cleaned with their default contents rather than the current format pattern, if they're marked free - if no setup file is present, the parallel port assignments default to LPT1 both - critical error dialog boxes contain an additional 'Ignore' button, when allowed - you can enter wildcards into the speed-search dialog box - in sort modes other than Unsorted, directories are sorted before normal files in LHA and TAR archives, too - the 'File sizes' warning now takes the actual amount of free space into account and works with DOS drives, as well - some steps were taken to better display file and disk sizes above 2 Gigabytes - when a bad sector is read from a disk image that has an error info block attached then an error message is displayed and the error code is cleared if a sector is overwritten; you can disable this by unchecking the new option 'Show read errors' - the menu of available commands in the disk editor has been moved to F9 because now several other commands are assigned to the other function keys - the disk editor asks for confirmation every time you read in a new sector and the current one had been modified - the confirmations in the disk editor now have three choices that allow you to save and proceed, discard and proceed or cancel - with several hotkeys in the disk editor you can jump to different important sectors of the disk or disk image - Shift-Home in the sector editor takes 'Orig format pattern' into account - in the BAM editor, free sectors are marked with a dot and used ones with an asterisk - you can jump to any sector directly from the BAM and error info editor - Ctrl-Gray Plus/Minus/Star select/unselect/invert the complete BAM in the BAM editor - using Shift-F1 to Shift-F8 and Alt-F1 to Alt-F8, you can jump to the first block and the info block of files directly from directory sectors - a new function in the disk editor lets you see the owner of the current block and you can move around the blocks that belong to the same file - the disk editor now shows the linear offset of the current sector in the disk image - with a new feature, you can make the disk editor display the sector contents in ASCII, as well - you can use Enter to enter and exit the sector editor - the sector editor remembers the last position of the cursor when you exit - you can pick up two bytes under the cursor in the sector editor and jump to the block on that track and sector - the disk copier has been extended with the ability to duplicate and merge disk images - it is now possible to manually select the sectors to be copied by the disk copier - if you leave the file name part of the destination blank in the disk copier then the source file name will be duplicated there; except when copying a Commodore disk into a disk image, in which case the file name 'disk0001' is added and indexing is switched on automatically - when copying multiple disks into disk images and the destination file already exists, the index is increased until a non-existant file is found - 'Fetch format label from source' has been removed from the 'Copy disk' dialog box, destination disks are always formatted with the label of the source disk image - upon input of disk labels, trailing spaces are not cut off from the disk name or ID code - you can make the disk copier check the BAM ID against the sector header ID and correct the BAM ID, if needed - with a new option in the disk copier, you can have the source disk directory displayed in the active panel before you'd actually copy it - to speed up the disk copy of multiple disk images, you're not asked for confirmation when preformatting the destination disks - the disk copier can also generate indices containing disk side letters, when copying multiple disks from a Commodore drive - the disk copy now always ends with seeking the head back to the directory track - you can switch disk copy modes in the 'Copy disk' dialog box with the function keys, too - if you're copying an extended 1541 disk or disk image and, for any reason, no data was copied from the extra tracks then you're asked about removing them completely from the resulting disk image - by checking a new option, 'Detect disk changes', you can make the disk copier continue copying the next disk or disk image as soon as you change the disk in the external Commodore drive - if you check a new option, 'Endless retry', the disk copier will keep reading bad sectors until it succeeds or you exit the loop by pressing Escape or F10 - when specifying source files for copy, move, rename or deletion, you can enter a list of filename patterns, delimited with commas or semicolons - the file copy is a bit faster when you copy selected files from a Commodore drive - in GEOS disk images, non-GEOS files are also saved the same way as GEOS files - you can format multiple disks in one session by checking 'Format multiple disks' in the 'Format' dialog box - when formatting Commodore disks, the characters '*', '=' and '?' are replaced with spaces so that the drive doesn't reply with an error message - files with the extension '.sfx' are now handled as LHA archives - files starting on the dirst directory sector or on any BAM sector are also considered to be phantom files - sizes in Info panels are now displayed in a single form, depending on the current status of 'DOS sizes in blocks' - the 'File info' dialog box shows the description of GEOS files - for BASIC programs, 'File info' now also displays the computer the file was created on - when changing the attributes of a single Commodore file, the new default for the file type is 'Do not change' - the disk image maker is back to its original speed - the speed-search dialog boxes are now wider, allowing you to type more of long filenames - when long filenames are available, file name input lines allow data to be entered up to 255 characters - if you create a new file in the current directory with Shift-F4 then, upon returning from the editor, the cursor will jump onto the file - if a command being executed already exists in the history then it is moved to the end of the list instead of being duplicated - command lines containing spaces only are discarded - in input lines, Control-Del has the same function as Control-T - when inputting filenames, Alt-24 and Alt-27 are converted to the up and left arrows of the PETSCII character set - good sectors are marked with a dash instead of a number one in the error info editor - the function that strips the error info block off the disk image is now assigned to F8 in the error info editor - standard viewers and editors are searched for in the PATH, not only the Commander home directory - the maximum length of a line remaining unwrapped in the viewer and the editor has been raised to 2048 characters - the viewer and editor now accept filenames containing spaces, even if they're not enclosed into quotation marks on the command line - when the load address is displayed in the viewer or editor, the Goto function inputs and goes to a memory address rather than a file offset - in the viewer and editor, you can also use the mouse to select the file to view or edit in an image or archive file - the viewer and the editor now also display special symbols and do Tab translation in PETSCII mode - the viewer can also display file offsets based on the load address - the viewer now displays a warning about the current file being corrupted only once - if a long filename is specified in the command line and the file does not exist then the viewer truncates the filename to short form and retries opening the file - in the editor, there are separate Insert/Overwrite modes, indicated by the cursor shape and a marker in the title bar, for the text and hexa modes; when Insert is active in hexa mode, you can insert and delete bytes just like in text mode - in the editor, Ctrl-Del deletes the selected block, if there is one; otherwise deletes the word to the right of the cursor, as before - the Replace function of the editor can now, in both text and hexa mode, either delete the old string and insert the new one in its place or patch the old string with the new - if you answer 'All' to the confirmation of the Replace function of the editor then the screen won't follow instances being replaced which speeds up the process to several times the original speed - you can select blocks with Shift-arrow keys as well in the editor - you can fetch a maximum of 64 characters from the selected block of text into the search input lines of the editor - you can use wildcards in the 'Insert file' box of the editor - the Star Utilities can now handle long filenames - the Star Utilities now have two more options that tell whether to display Commodore filenames with the lowercase/uppercase or the uppercase/graphics character set - a new option in the Star Utilities lets you delete successfully processed source files - the Star Utilities can now extract data into 1571 and 1581 disk images, too - the format descriptions in the Star Utilities now mention relative files - Star ARC now displays archive comments upon extraction - Star Zip, by default, stores the cosmetical ID in the BAM of the source disk image as the sector header ID stored into diskpacked ZipCode archives 13. Known problems and limitations Timeouts are not handled. As all PC interrupts are disabled while accessing the Commodore drive, errors during data transfer may lock up your PC. In this case, you have to generate a timeout manually by pressing Escape or F10. Accessing Commodore drives under multi-tasking systems is not supported very well. For Linux, you should be using a native Linux application instead. For Windows NT/2000, a device drive would be needed. You can't use more than one Commodore drive at a time. Only one of the panels can show a Commodore drive and the disk turbos won't work if there are more drives connected and switched on. The best you can do is have all needed drives connected but only one of them switched on. You can't copy GEOS files from and to and relative files to Commodore disks. You have to use the disk copier to copy such files as part of a disk or disk image instead. This may change in the future. Very long file and path names, those over 254 characters, get truncated. Instead of the usual extract command of LHA, both the Commander and Star LHA uses the print command, which only works correctly with LHA 2.14 and newer versions. The common clipboard of Windows pads text data with zero bytes to a multiple of 32 bytes, therefore, you may experience the loss of some bytes from the end of blocks, that contain zero bytes, when pasting them into input lines or into the editor. 14. Coming soon I'm planning the following changes for the next version. Please, tell me if I should start working on the low priority items marked with (?), as well. - bug fixes, of course... - an alternative timing system that uses the Pentium time stamp counter - support for GCR-coded disk images - warp routines for 1571 drives, to transfer GCR-coded data in both directions - support for 1581 drives, including disk turbos for copying files and disks - support for reading, writing and formatting 1581 disks in the PC floppy disk drive - that is, integrating Wolfgang Moser's 1581COPY into the Commander - ability to setup different parameters for the different drives you have, even if you still won't be able to use them all at the same time - support for ZIP archives - restructure the disk copier so that it can copy data between any pairs of disks in external Commodore drives, normal and GCR-coded disk images, diskpacked and sixpacked ZipCode archives - command line interface for batch processing - make it possible to change the attributes of a whole directory structure of DOS files - display files in the border sector of GEOS disks and disk images - speed up the editor with a line buffer - allow associating menu files to different file name patterns in extension files - expand Quick view with the ability of showing the total size of files in the directory structure under the cursor of the opposite panel - VESA support for text screen modes from 80x25 up to 132x60 - ability to change the width of Name columns in panels with Alt-Left and Alt-Right when long file names are enabled - XMS and EMS usage for storing temporary data in DOS shells, to give more memory to programs, and also for storing the clipboard - show the header ID of the current sector in the disk editor - the Star Utilities should be able to recursively handle directory structures - support for copying GEOS files from and to external Commodore drives, deleting them and validating and formatting GEOS disks (?) - support for copying relative files from and to external Commodore drives (?) - comparing files, no matter what format they are in (?) - allow to insert separator lines into the directory of disks and disk images; perhaps, some time a full-blown directory editor (?) - ability to create custom C128-style boot sectors, either with precompiled code or with the command to load a program off the disk (?) - make the editor allocate new blocks in the disk image if the file being edited grows beyond its original size and, similarly, free unneeded blocks if the file shrinks (?) - interactive file saver that allows you to exactly tell where to lay out the sectors of a file (?) - allow copying directory structures into LHA and TAR archives (?) - smart disk and disk image filling algorithm that copies the source files in groups that fill in the destination disk or disk image as much as possible (?) - "![]" macro in menu and extension files for asking the user to specify the value to be inserted into the command (?) There are many ideas that I will not put inside the Commander. They are related to a multi-purpose utility, not to a DOS shell like the Commander. 15. Thanks to I would like to thank my development team for their valuable help: Nicolas Welte Wolfgang Moser Bacchus/Fairlight Clarence/Graffity Credo/SCS*TRC Darrin Smith Dohos dm Edhellon/Resource Gunther Richter Gustavo Ayala Halsz Csaba Jrgen Bullinger Lion/Chromance Mathias Beilstein Mathias Schroeder Matthias Hartung Michael J. Darschewski Olav Morkrid/Panoramic Designs Piret Endre Sorex/WOW Stephen Lloyd Suba Pter Sven Goldt Szigetvri Jzsef Tamsi Gyrgy Todd A. Aiken Vic/COMA Wojtek Wasilewski Special thanks go to: BBT/Breeze for his 1571 drive Berkeley Softworks the authors of GEOS Bernhard Schwall the author of Trans64 Borland International for Turbo Pascal and Borland Pascal Chris Smeets the author of the ARC and LHA extractors Commodore Business Machines for the Commodore computers Hans Pieters for his 1581 drive and other Commodore stuff John Socha for The Norton Commander Marko Mkel for the original ZipCode and UnLynx for DOS Miha Peternel for the C64 Software Emulator Leopoldo Ghielmetti for X1541 and the X1541 cable Per Hkan Sundell for the CCS64 emulator Peter Schepers the author of 64COPY Ralf Brown for the x86/MSDOS Interrupt List Turczi Ferenc for the original warp validate program VICE Team for the VICE emulator package Vsevolod V. Volkov for The Volkov Commander Wilbert van Leijen for the OverXMS unit Wolfgang Lorenz for Personal C64 The following people have also contributed to the development: Andreas Boose discussion about the 1581 track cache Andres Valloud general Pascal code optimization ideas Bigfoot the XH1541 hybrid cable and other ideas Chris Link many good ideas concerning the development Ettore Perazzoli discussion about the GNU Public License Frank Kontros help with parallel cables and disk verify Hrsfalvi Levente the idea of supporting TAR archives Joe Votour help with the way GEOS saves files Markus Gebhard several sample 1571 disk images Pasi Ojala help with the layout of 1581 disks Slaygon/Censor permanent WWW and E-mail address 16. Where to find the Commander I always upload the newest releases to the following Web sites: Official homepage: http://sta.c64.org/sc.html Albion mirror site: http://biotop.umcs.lublin.pl/~ptracz/sc_site.htm The C64 tools list, MS-DOS section: http://www.fairlight.to/tools/pc.html Zak's C64 Download Area: http://fanthom.irc.pl/~zak/c64/download.htm ...the following FTP sites: ADE BBS: ftp://bbs.cc.uniud.it/pub/c64/tools/other_machines/pc/dos Arnold, home of the Commodore games: ftp://arnold.c64.org/pub/utils/transfer Computer Workshops FTP site: ftp://ftp.armory.com/pub/user/spectre/EMUL-UTIL The Digital Dungeon: ftp://utopia.hacktic.nl/pub/c64/Tools/Convert Funet archive: ftp://ftp.funet.fi/pub/cbm/transfer/1541-to-PC Gangsta's Paradise: ftp://c64.rulez.org/pub/c64/other-OS/Dos Kiarchive FTP server: ftp://ftp.kiae.su/msdos/emulator/c64-128 Padua FTP site: ftp://ftp.padua.org/pub/c64/Tools/transfer/pc Spockie's FTP site: ftp://ftp.giga.or.at/pub/c64/transfer/1541-pc Triad FTP site: ftp://ftp.df.lth.se/pub/c64/PC_Tools ...and the following BBS: Wildfire BBS, Hungary (36-)1-156-3770 (22:30-07:00), SysOp: Dino (FidoNet: 2:371/41) USR Sportster 14.4, FREQ Magic Name: SC You can also E-mail me at any time to ask for a uuencoded or attached copy. Finger me at the address "sta@c64.rulez.org" to find out the version number of the latest release. The first address in the above list is the World Wide Web homepage of the Commander. There you can always download the latest public release, along with the full source, have a look at the documentation and the description of the X1541-series interfaces and see some facts (bug fixes, modifications, new features) about the beta versions being developed and tested and even download these betas. You can also buy X1541-series cables and other cables and adaptors there for unusually low prices. If you would like to subscribe to The Star Commander mailing list, so that you will be notified about new versions having been released, then, please, visit the official homepage for more information. 17. The author Please, don't hesitate, send an E-mail to the address "sta@c64.org" if you have any questions, problems, ideas or wishes concerning the Commander. You can call the phone number (+36-)1-285-3881 to contact me and you can also send snail-mails to me at this address: Kovcs Balzs Orsolya utca 5. IV/12. 1204 Budapest Hungary Please, use English or Hungarian. If you really have to, you can use German, as well, but be warned, I can only understand it, I don't speak it. In your E-mail, wrap your lines at 70-75 characters. Send plain text only, no rich text in HTML format or the message in an attachment. If you wish to send some files to me, either by E-mail or snail-mail then ask me before you do it. I don't like being flooded with large E-mails or lots of disks without having been warned. Note that Hungarians, similarly to Chinese, Japanese, Vietnamese and, probably, some other Far-Asian people, have their names in a "reverse" order. If you really don't want to call me Joe then, please, use Balzs or Mr. Kovcs in your greeting rather than the opposite. 11th February, 2001 Joe Forster/STA