ktmchrisv
Experienced Member
Hello Everyone,
This project has been a long time in the making. Back in 2017, I decided that I really like the Iomega ZIP/JAZ drives for bridging back to older systems. Unfortunately, the drivers that Iomega provided did not work well or at all on older systems, and were rather poorly documented and very cumbersome to use. But, the hardware itself seemed perfect for the job. So, I thought, wouldn't it be great to have a small driver in a single file, with GUEST and FDISK capability that could be used with an original IBM 5150 using a single sided 180KB floppy, or a modern PC with a parallel port. Thus, the idea behind pcZIP was born. The first problem was finding enough documentation on the hardware to start the project. Enter the Linux IMM and PPA project / drivers. They provided the roadmap / datasheet for addressing the hardware. After that, it was designing an application framework to work with different parallel ports and drives along with the process communication to allow the drivers to communicate as a system. This driver has been working in various forms for the past 5-6 years. However in the last 3 months, I decided to finish it and publish it. Give it to the world. It was entirely too much work for just my own use cases, and I believe that others will find it as useful as I have.
This driver is entirely written in x86 assembly language using Borland TASM Ideal mode for size and speed. It can compile on a IBM 5150 (It will take about 20 minutes), or new system with an i7. My intention is to release the full source code with it's build system under GPLv3. That will happen in the future.
Today, I am releasing the binary version of the driver as a V1.00 release. Source will come, stay tuned.
Here is what pcZIP provides:
1. Single executable file which provides a DOS device driver, FDISK program, disk editor and guest application all in a small executable file.
2. It works and has been tested on DOS 2 - DOS 7.
3. It will provide access to the drive through the original SPP port of the 5150, or a modern EPP port with hardware handshaking. There is a special mode to allow EPP operation on 808x processors. The driver defaults to attempting bi-directional access with a fallback to nibble based access. To use EPP capabilities, you have to use command line overrides and obviously have an EPP parallel board installed in your computer. As well, you need to test your system. EPP mode is a bit fickle, and it can look like it's working when it really isn't. However, the reward for testing is a drive that is much faster and more reactive to the system. On a higher performance system with a Jaz 2GB attached via the Jaz Traveler, you can get around 800KB/s transfers. On a 10Mhz V20, you can expect the same drive to have around 400KB/s performance. Separately, I will provide a full write-up on how to get EPP mode working properly.
4. It is intended to be an extensible framework. Multiple drivers can be loaded addressing different drives and hardware while still allowing access from FDISK and the Disk Editor. One instantiation of the driver will manage 1 drive.. In the future, the framework will allow using other hardware. Think ASPI and ATAPI.
5. The FDISK program provides standard formats for different disk partitions and target applications. So, you can specifically target a DOS 2 32MB partition or standard ZIP 100 / ZIP 250 partitions by choosing standard options in FDISK. It allows for low level formatting of media. It is quite extensive. Please press F1 for help.
6. There is a reasonably full featured Disk Editor available. Primarily this was for my use to debug writing the FDISK functionality, and it sort of turned into it's own feature. Fair warning: There is little to no warnings in the editor for updating the disk. It expects you to know what you are doing. If you are not comfortable looking at the innards of a file system, then you should probably use the version of pcZIP without the editor and save 6KB of file space.
7. The GUEST functionality works on DOS 3.0+.
8. The actual drive does not need to be present when the driver is loaded and run. It will automatically determine the drive that is atttached at the time a drive is accessed and self-configure for that drive at that time. So, you are really managing the port configuration for accessing drives. So, you could load the driver with no drive attached. Then plugin a ZIP100, then unplug the ZIP 100 and plug in a ZIP 250, access files there. Then at the end, you could plug in your Jaz drive (through a traveler) and access files on that drive (with the appriate DOS version and partitioning).
9. If using a Jaz Traveler SCSI adaptor, you can plug multiple drives into the SCSI chain. So, you could have a JAZ 2GB, JAZ 1GB and a ZIP250 all on LPT1. To get this to work properly, you will need to extensively test your configuration. However, it does work. Each drive requires it's own driver. So, you would have the driver loaded 3 times in this configuration. Each driver takes about 7K of memory (without debug data).
Here is what is being provided today:
Please note that when using DOS 2.x, that GUEST functionality is not available. The driver must be loaded in CONFIG.SYS and use the .COM files. If I remember correctly, MSDOS 2.x can load EXE files in config.sys.
In each archive, you will find
To get started: (Please initially try this out on a scratch disk, until you are sure the driver is working properly for you, and you understand it's operation)
1. To see if the system can address your drive, plug the drive into a port and execute: pczip /scan /lptx where x is the port number where the drive is attached. If it lists a drive, then go to step 2.
2. To load the drive as a DOS drive letter, execute: pczip /guest /lptx where x is the port number where the drive is attached. The drive letter(s) will be reported on program output.
3. To use the FDISK disk partition editor on a GUEST drive or one loaded with CONFIG.SYS, execute: pczip /fdisk
4. To use the FDISK disk partition editor on a drive that does not have a loaded driver, execute: pczip /fdisk /lptx /hw where x is the port number where the drive is attached.
5. To load the pcZIP driver through config.sys, add DEVICE=PCZIP.COM /lptx to the file.
6. While in the FDISK or Disk Editor, F1 gives a help screen to guide on usage
7. Using the CLI, you can get help by executing: pczip /?
8. At any time, you can just execute: pczip and it will list the currently loaded drivers, the current drive / disk present in the drive, what drive letters are associated with the drive....etc......
This is a BETA release, so please use it on scratch disks until you verify operation for your use cases. Please report any problems you may have back here. As well, I will be updating this initial post with more documentation, as I write it. Topics will include a full description of all command line switches and when / how to use them, a detailed approach to getting EPP operation working and a deeper dive through the design and architecture of the driver itself.
Tell me what you think and how it could be improved, or if there is a feature you think is missing or not implemented correctly. This project was an astronomical amount of work, but, I now have the driver system that I originally envisioned and wanted from back in 2017. And, I want to share it with all of you. I think it can be a very useful tool in our endeavor to understand and use our old vintage systems.
Enjoy - Happy New Year!
~Chris V.
This project has been a long time in the making. Back in 2017, I decided that I really like the Iomega ZIP/JAZ drives for bridging back to older systems. Unfortunately, the drivers that Iomega provided did not work well or at all on older systems, and were rather poorly documented and very cumbersome to use. But, the hardware itself seemed perfect for the job. So, I thought, wouldn't it be great to have a small driver in a single file, with GUEST and FDISK capability that could be used with an original IBM 5150 using a single sided 180KB floppy, or a modern PC with a parallel port. Thus, the idea behind pcZIP was born. The first problem was finding enough documentation on the hardware to start the project. Enter the Linux IMM and PPA project / drivers. They provided the roadmap / datasheet for addressing the hardware. After that, it was designing an application framework to work with different parallel ports and drives along with the process communication to allow the drivers to communicate as a system. This driver has been working in various forms for the past 5-6 years. However in the last 3 months, I decided to finish it and publish it. Give it to the world. It was entirely too much work for just my own use cases, and I believe that others will find it as useful as I have.
This driver is entirely written in x86 assembly language using Borland TASM Ideal mode for size and speed. It can compile on a IBM 5150 (It will take about 20 minutes), or new system with an i7. My intention is to release the full source code with it's build system under GPLv3. That will happen in the future.
Today, I am releasing the binary version of the driver as a V1.00 release. Source will come, stay tuned.
Here is what pcZIP provides:
1. Single executable file which provides a DOS device driver, FDISK program, disk editor and guest application all in a small executable file.
2. It works and has been tested on DOS 2 - DOS 7.
3. It will provide access to the drive through the original SPP port of the 5150, or a modern EPP port with hardware handshaking. There is a special mode to allow EPP operation on 808x processors. The driver defaults to attempting bi-directional access with a fallback to nibble based access. To use EPP capabilities, you have to use command line overrides and obviously have an EPP parallel board installed in your computer. As well, you need to test your system. EPP mode is a bit fickle, and it can look like it's working when it really isn't. However, the reward for testing is a drive that is much faster and more reactive to the system. On a higher performance system with a Jaz 2GB attached via the Jaz Traveler, you can get around 800KB/s transfers. On a 10Mhz V20, you can expect the same drive to have around 400KB/s performance. Separately, I will provide a full write-up on how to get EPP mode working properly.
4. It is intended to be an extensible framework. Multiple drivers can be loaded addressing different drives and hardware while still allowing access from FDISK and the Disk Editor. One instantiation of the driver will manage 1 drive.. In the future, the framework will allow using other hardware. Think ASPI and ATAPI.
5. The FDISK program provides standard formats for different disk partitions and target applications. So, you can specifically target a DOS 2 32MB partition or standard ZIP 100 / ZIP 250 partitions by choosing standard options in FDISK. It allows for low level formatting of media. It is quite extensive. Please press F1 for help.
6. There is a reasonably full featured Disk Editor available. Primarily this was for my use to debug writing the FDISK functionality, and it sort of turned into it's own feature. Fair warning: There is little to no warnings in the editor for updating the disk. It expects you to know what you are doing. If you are not comfortable looking at the innards of a file system, then you should probably use the version of pcZIP without the editor and save 6KB of file space.
7. The GUEST functionality works on DOS 3.0+.
8. The actual drive does not need to be present when the driver is loaded and run. It will automatically determine the drive that is atttached at the time a drive is accessed and self-configure for that drive at that time. So, you are really managing the port configuration for accessing drives. So, you could load the driver with no drive attached. Then plugin a ZIP100, then unplug the ZIP 100 and plug in a ZIP 250, access files there. Then at the end, you could plug in your Jaz drive (through a traveler) and access files on that drive (with the appriate DOS version and partitioning).
9. If using a Jaz Traveler SCSI adaptor, you can plug multiple drives into the SCSI chain. So, you could have a JAZ 2GB, JAZ 1GB and a ZIP250 all on LPT1. To get this to work properly, you will need to extensively test your configuration. However, it does work. Each drive requires it's own driver. So, you would have the driver loaded 3 times in this configuration. Each driver takes about 7K of memory (without debug data).
Here is what is being provided today:
PCZIPEXE.ZIP | EXE versions of the drivers. |
PCZIPCOM.ZIP | COM versions of the drivers. Primarily for PC-DOS 2.x use cases where .EXE's can't be loaded in CONFIG.SYS |
Please note that when using DOS 2.x, that GUEST functionality is not available. The driver must be loaded in CONFIG.SYS and use the .COM files. If I remember correctly, MSDOS 2.x can load EXE files in config.sys.
In each archive, you will find
PCZIP.COM, PCZIP.EXE | Full version of the driver with FDISK, Disk Editor and GUEST functionality |
PCZIPDBG.COM, PCZIPDBG.EXE | Full version of the driver above, however with DEBUG messages and data turned on. Adds 4KB of messaging to the low level driver. However, makes it easier to identify problems. |
PCZIPFD.COM, PCZIPFD.EXE | Version of the driver with FDISK and GUEST functionality. A good place to start if you don't plan on editing disks. |
PCZIPDRV.COM, PCZIPDRV.EXE | Version of the driver that provides GUEST functionality. ~13Kbytes. Usefull for putting on old 180KB or 360KB floppies which are limited with space. |
To get started: (Please initially try this out on a scratch disk, until you are sure the driver is working properly for you, and you understand it's operation)
1. To see if the system can address your drive, plug the drive into a port and execute: pczip /scan /lptx where x is the port number where the drive is attached. If it lists a drive, then go to step 2.
2. To load the drive as a DOS drive letter, execute: pczip /guest /lptx where x is the port number where the drive is attached. The drive letter(s) will be reported on program output.
3. To use the FDISK disk partition editor on a GUEST drive or one loaded with CONFIG.SYS, execute: pczip /fdisk
4. To use the FDISK disk partition editor on a drive that does not have a loaded driver, execute: pczip /fdisk /lptx /hw where x is the port number where the drive is attached.
5. To load the pcZIP driver through config.sys, add DEVICE=PCZIP.COM /lptx to the file.
6. While in the FDISK or Disk Editor, F1 gives a help screen to guide on usage
7. Using the CLI, you can get help by executing: pczip /?
8. At any time, you can just execute: pczip and it will list the currently loaded drivers, the current drive / disk present in the drive, what drive letters are associated with the drive....etc......
This is a BETA release, so please use it on scratch disks until you verify operation for your use cases. Please report any problems you may have back here. As well, I will be updating this initial post with more documentation, as I write it. Topics will include a full description of all command line switches and when / how to use them, a detailed approach to getting EPP operation working and a deeper dive through the design and architecture of the driver itself.
Tell me what you think and how it could be improved, or if there is a feature you think is missing or not implemented correctly. This project was an astronomical amount of work, but, I now have the driver system that I originally envisioned and wanted from back in 2017. And, I want to share it with all of you. I think it can be a very useful tool in our endeavor to understand and use our old vintage systems.
Enjoy - Happy New Year!

~Chris V.