• Please review our updated Terms and Rules here

KayPro 4 with a Mini Winnie!

ktmchrisv

Member
Joined
Oct 28, 2015
Messages
46
Location
Pleasant View, UT
Hi all,

I just received an old KayPro 4/84 with the poplular Mini Winnie hard disk controller, and the Advent TurboROM V3.0 that was supposedly modified to be able to boot directly from the Mini Winnie controller.

The reviews of this board indicate that it was roughly 2x the performance of the standard WD1002 controller.

I have cleaned up the system and connected a 20MB ST-225 to the controller on DS1. When running ADVFMT or K10FMT, the program hangs in a timeout for a bit, and then comes back with a timeout failure. If I disconnect the drive, then the program errors out right away without the timeout. I think the Mini Winnie controller is sitting on the same IO addresses as the WD1002 K10 controller. Probably without having the controller reset line inverted.

In reading the reviews about this board, there was an installer program distributed in source form that would format/partition the drive and create two executables; a diagnostic for the exact drive connected, and a bios driver to support the controller / drive when BIOS support is not available for cold boot.

I'm looking to see if someone on the forum may have this installer program. Mini Winnie was a very popular controller for all of the old CPM systems with a socketed Z80. So, it may show up in archives for Morrow, Osborne or other of the larger CPM system manufacturers. I have been scouring the web and haven't found much beyond the reviews of the board.

Chris

IMG_3163.jpeg
 
Yes, Winnie seems to be a common term used back in the day for referring to Winchester Hard Drives.

I have found some reviews of it:

Overview of Available CPM Hard disk solutions
A ZCPR3 Review using Mini Winnie

This review discusses the installation program, which is what I'm looking for.
Review of Mini Winnie - Page 45

Here is an original ad, showing the modified Advent TurboROM being available. This machine has this ROM.

1670195906131.png

Here is another ad talking about the install application that is delivered in source format:

1670196448034.png
 
I wanted to give an update. I reverse engineered the board and have a limited schematic in KiCAD, wrote a driver that accommodated the read/write/format functions and then patched the TurboRom V3.4 and the ADVFMT program for V3.4. So, the system now boots on a 40MB Seagate ST-251 with 8 partitions with the latest Advent TurboRom V3.4 on a KayPro 4/84.

This was a huge amount of work and I before I can publish the code / changes, I need to clean everything up. However, here are some pictures of the debug process and of the drive formatting under ADVFMT.COM
This will probably take me a while to get to.... However, reply to this thread if you want to get the updates sooner and I'll speed up the process.

This board presented some unique design considerations about how the controller buffer is used. Overall, I learned a tremendous amount about these older controllers.

Issues/Features discovered:
1. Probably the biggest redflag in the design of this controller is that for read operations, the board creates a race condition for reading the data from the drive buffer. Old 808x processors need not apply. The only way to get the data out of the buffer is to use the Z80 INIR instructions. All other loops will fail. See the last pic included where BRDY is tied directly to BDRQ. This all could have been handled by using a jumper to select sector size based on the terminal count of the 4040. But, I digress. The Z80 can perform the loop fast enough. To the credit of the original designer: The overhead of the WD1010 is hidden by the read. This probably is the fastest WD1010 design ever created on that note.
2. The board supports 256/512/1024 byte sector size. 1024 byte sector size provides a substantial increase in performance, and really should be used as a default. The smaller sector sizes just increase the overhead within CPM to manage data on the drive.
3. This controller requires the software to manage retries and recals during read errors or difficult to read sectors. When compared to the WD1002-HD0 that shipped in the KayPro 10, the software changes were substantial to manage this. This will be reflected in the patch code for both the TurboRom and the ADVFMT program. The ADVFMT program reduces retries to capture flaky sectors. The ROM code increases retries to make attempts to get the data off the drive.

More to come when I have some time.

Chris V.


1673474878416.png

1673474911163.png

1673474954010.png

1673476563449.png
 
Pages 17 & 18 of the attached PROFILES Magazine talk about booting from Floppy,
then executing HARD.COM to access the Hard Drive.


Larry
 

Attachments

  • Profiles-17-18.pdf
    1.9 MB · Views: 8
I wanted to give an update. I reverse engineered the board and have a limited schematic in KiCAD, wrote a driver that accommodated the read/write/format functions and then patched the TurboRom V3.4 and the ADVFMT program for V3.4. So, the system now boots on a 40MB Seagate ST-251 with 8 partitions with the latest Advent TurboRom V3.4 on a KayPro 4/84.

This was a huge amount of work and I before I can publish the code / changes, I need to clean everything up. However, here are some pictures of the debug process and of the drive formatting under ADVFMT.COM
This will probably take me a while to get to.... However, reply to this thread if you want to get the updates sooner and I'll speed up the process.

This board presented some unique design considerations about how the controller buffer is used. Overall, I learned a tremendous amount about these older controllers.

Issues/Features discovered:
1. Probably the biggest redflag in the design of this controller is that for read operations, the board creates a race condition for reading the data from the drive buffer. Old 808x processors need not apply. The only way to get the data out of the buffer is to use the Z80 INIR instructions. All other loops will fail. See the last pic included where BRDY is tied directly to BDRQ. This all could have been handled by using a jumper to select sector size based on the terminal count of the 4040. But, I digress. The Z80 can perform the loop fast enough. To the credit of the original designer: The overhead of the WD1010 is hidden by the read. This probably is the fastest WD1010 design ever created on that note.
2. The board supports 256/512/1024 byte sector size. 1024 byte sector size provides a substantial increase in performance, and really should be used as a default. The smaller sector sizes just increase the overhead within CPM to manage data on the drive.
3. This controller requires the software to manage retries and recals during read errors or difficult to read sectors. When compared to the WD1002-HD0 that shipped in the KayPro 10, the software changes were substantial to manage this. This will be reflected in the patch code for both the TurboRom and the ADVFMT program. The ADVFMT program reduces retries to capture flaky sectors. The ROM code increases retries to make attempts to get the data off the drive.

More to come when I have some time.

Chris V.


View attachment 1251461

View attachment 1251462

View attachment 1251463

View attachment 1251465
VERY nice work! There were a number of hardware add-ons for Z80 CP/M boxes that used the same interposer approach. In various systems I have a Z-Time real-time clock, Corvus Omninet network interface and SWP CoPower-88. Stacking multiple interfaces could become an adventure - I've never tried it.
 
@shirsch Thank you! While I was debugging this guy, I put it over on my K10 with a stack of 40 pin sockets....about 8 or 9 of them so I could write tests between the K10 WD1002 controller and this one. That increased capacitance to the point of getting screen corruption, but, the hard drives worked... So, in terms of stacking this with another interposer board, I think you could easily get another board (with a "compatible" layout) to work. As it sits, this board would be compatible with the 4/84 and the Universal board; not sure about the 4/83 or the original II.

@ldkraemer That was the program that I was originally looking for. I looked everywhere I could think of, but, I think this source code is gone from online sources. I really wanted to have a hard drive on my 4/84, so I rolled my sleeves up to reverse engineer and adapt it for use under the TROM. Oddly, the TROM 3.0 that came with this board was not modified at all to manage this controller. It was a bone stock image for use with the WD1002-HDO. That's why I updated to the latest V3.4 and then performed the patches from there. There are some peculiarities still hovering around the TROM V3.4 patch I wrote. It will only work when 1024 byte sectors are used; which fit my ultimate purpose. But 512 byte sectors have an issue which seem to corrupt the DPB tables and internal structures of the BIOS. Since 1024 worked, I decided not to worry about it; my ultimate goal was satisfied.
 
I have compiled the modifications and source code into the attached files which describe and detail the modifications for making the ACEC controller work in a KayPro 4/84.

Of note: All of the ADVFMT.COM programs that I have found have the last 256 byte page cleared to 0. Somebody didn't perform a SAVE correctly in the past. The last page of the file, starting at address 8400 (When in ZSID) is set to 0. This address is in the "C" standard library (ADVFMT.COM is written in C). The function to backup the parameter sector to a file is affected. When executed, it crashes the system. Option 3 sub option 5 "Copy: Parameter Sector --> CP/M File"

If anyone has an ADVFMT.COM which is not corrupted, please contact me.

ace-schematic.zip is a limited schematic I created in KiCAD 6.0 to understand how the controller worked, and to let me setup the logic analyzer for analysis of operation.
ACEC.ZIP contains the ACEC.Z80 source code which is a simple format / verify application I created to test and understand how this controller works. It is compiled with the SLR Systems Z80 compiler. Z80ASM.COM
advfmt_mods.txt describes the updates to ADVFMT.COM. When the modifications are made, you should name the file ADVFMTAC.COM or ADVFMTMW.COM.
advrom_mods.txt describes the updates to the Advent TurboROM V3.4 for KayPro 4. This firmware should be burned to a 2764 EPROM and placed into the target board with the ACEC controller.

The patches to the Advent TurboROM will be changed at sometime in the future to perform recal retries. Currently, the patched ROM will attempt a read 9 times (without a recal) before failing. During my testing, recaling the disk heads really does help read stubborn sectors. So, be aware that this patch will be updated in a future post (This is the delay that I mentioned in the above post). Also please be aware that 512 byte sector formatting does not work right now. I really leaned into this problem, but for some reason the internal CPM DPB tables seem to get corrupted when using 512 byte sectors. My mods are simple and should work. I believe this has something to do with KayPro 4 versus KayPro 10 and how the Advent ROM works with these systems. Any hints???? Let me know. So, please use 1024 byte sector formatting. It's faster, and I can't think of a reason to take the time to debug the code to get the 512 byte sector code working (other than to be complete)..... Life is too short. I have been using the patched ROM and formatted ST-251 hard drive for the last month. Mostly for testing CPM C compilers. I did copy and execute all of the applications that shipped with KayPro - WordStar, dBase, PerfectCalc, ReportStar, etc. I have not had a single issue of corruption or failure, so I believe that it is working well. YMMV, so please have backups of any critical data you put onto a hard drive using this ROM and system.

If you PM me, I can provide the modified files. For the public forums, the patches presented here should allow you to patch the images from your own files.

I would read the source code from ACEC.ZIP and from the patch TXT files to learn about what you are doing before jumping straight into this.

I performed my testing on 3 drives:
Seagate ST-225
Seagate ST-251
NEC 5126H

All performed well. Seagate drives are very easy to come by. I would find any of these drives and use them. The NEC 5126H can be treated as an ST-225 through the Seagate Menu. If you have an ST-251, manually setup the drive with option 20.
Cylinders: 820
Heads: 6
Write precomp: 0
Buffered Seek: Yes
Sector Skew:1

Directions to get a working system with a 20MB or a 40MB drive.
  • Apply the ADVFMT.COM and TurboROM patches with your favorite hex editor in Windows or Linux or CPM if you can't bridge the files over to your KayPro.
  • Connect your hard drive to the ACEC controller and jumper the drive to DS1 (IBM PC's are DS2, so if you don't change the jumper, it won't work)
  • Burn the modified TurboROM to a 2764 and install in your KayPro.
  • Take the TurboROM Support Floppy (as found in several repositories) and copy the ADVFMTMW.COM file to it.
  • Boot the Support Floppy and execute ADVFMTMW.COM. Select Option 0 to format 1024 byte sectors. When any prompt occurs, press enter to accept the default. When at the drive select screen, hit option 16 and select your drive or option 20 to define your drive manually. You can enter the bad track table from the drive label if you want. After this, continue pressing enter until the drive starts formatting. Go get some coffee, watch your favorite sitcom. When the drive is finished, it asks you if you want to partition the drive, press enter and keep pressing enter to accept the default partitioning. You will get a number of 8MB partitions and then a final remainder partition. Exit the ADVFMTMW.COM Program.
  • Reboot the TurboROM Support floppy. You should be able to DIR C: and see a drive now.
    • DIR C:
  • Run the MOVTURBO.COM program to create a 61.50K CPM system if you have a 40MB drive or if you have a 20MB drive you can create a 62.25K CPM System. After this is finished, there will be a new file TURB6150.SYS or TURB6225.SYS on the disk.
    • For 20MB Drive
      • A>MOVTURBO 62.25
    • For a 40MB Drive
      • A>MOVTURBO 61.50
  • Run the TURBOCFG.COM file. Select option 3 "Read Image from a File" and enter TURB6150.SYS for 40MB drive or TURB6225.SYS for 20MB Drive. Select Option 2 "Write System Image to System Tracks". Select drive C.
  • Pull floppies out and press reset. Drive will boot to hard drive at drive A:
  • PIP your TurboROM Support floppy to the A: Drive
    • If you have a 20MB drive:
      • D>PIP A:=D:*.*
    • If you have a 40MB drive
      • G>PIP A:=G:*.*
  • Enjoy the wonders of a CPM 2.2 system with a hard drive. ;-) QED

If you have questions, or get stuck, reply to this forum post. If you want the binaries, PM me. If you have an un-corrupted ADVFMT.COM program, I would love to get my hands on it! ;-)

Chris V.
 

Attachments

  • advfmt_mods.txt
    4.9 KB · Views: 5
  • advrom_mods.txt
    2.8 KB · Views: 4
  • ACEC.zip
    7.1 KB · Views: 6
  • acec-schematic.zip
    26.1 KB · Views: 7
Hey hopefully not too far off topic, but I notice in your pictures you're using some kind of riser block on your DIP IC's to hook up the scope/logic analyzer leads to, what do you call those? I think a set of those would be really handy..
 
Hey hopefully not too far off topic, but I notice in your pictures you're using some kind of riser block on your DIP IC's to hook up the scope/logic analyzer leads to, what do you call those? I think a set of those would be really handy..

Yes, these are simple "chip clips" for different pin size DIP packages. You can buy them from eBay here:

https://www.ebay.com/itm/225321464598

Very handy for hooking up large numbers of leads.

Chris V.
 
Of note: All of the ADVFMT.COM programs that I have found have the last 256 byte page cleared to 0. Somebody didn't perform a SAVE correctly in the past. The last page of the file, starting at address 8400 (When in ZSID) is set to 0. This address is in the "C" standard library (ADVFMT.COM is written in C). The function to backup the parameter sector to a file is affected. When executed, it crashes the system. Option 3 sub option 5 "Copy: Parameter Sector --> CP/M File"

If anyone has an ADVFMT.COM which is not corrupted, please contact me.


Chris V.
I checked my archives and all the ADVFMT.COM files are similarly damaged. Must be a feature that no one ever used, included the vendor!
 
I checked my archives and all the ADVFMT.COM files are similarly damaged. Must be a feature that no one ever used, included the vendor!
Thank you for checking! I agree with you, with the repositories that I found, and all of them corrupt, this could have come from Advent. I actually started looking at all of the available C compilers to see if I could determine through the disassembly which C compiler was in use and then patch the file. The routine in question is part of the fopen call. However, life is too short for this kind of madness, so I decided to post what I have. I am very pleased with how well this system has performed with the mods so far. Anybody who has the controller now has a path to making it functional again. I'm continuing to keep my eye out for the original INSTALL program that is mentioned in the reviews and advertisements...
 
Also off topic (sorry), but dont the logic analyzer probes fit directly onto the IC clip pins so you would not need to use the clips?
 
Also off topic (sorry), but dont the logic analyzer probes fit directly onto the IC clip pins so you would not need to use the clips?

I'm not going to speak for the OP but in my experience yes it's fine if you just need a couple of leads on a single IC. But if you've ever tried to hook them up to a whole row like this, logistics of how you position the clips gets really awkward and you run the risk of shorting stuff if you can't clearly see the legs etc..
 
I'm not going to speak for the OP but in my experience yes it's fine if you just need a couple of leads on a single IC. But if you've ever tried to hook them up to a whole row like this, logistics of how you position the clips gets really awkward and you run the risk of shorting stuff if you can't clearly see the legs etc

I somewhat prefer the clips rather than the direct connect. Be careful when buying the chip clips if you plan on plugging leads into them versus using clips. Some chip clips have a ball at the end of the pin meant to keep the clips from falling off of the top. So there are two types, smooth pins and pins with balls. You would need to buy clips with smooth pins.
 
I somewhat prefer the clips rather than the direct connect. Be careful when buying the chip clips if you plan on plugging leads into them versus using clips. Some chip clips have a ball at the end of the pin meant to keep the clips from falling off of the top. So there are two types, smooth pins and pins with balls. You would need to buy clips with smooth pins.
<sigh...> True that. Cutting the ball off the end of the pin won't get you a pluggable type either because the diameter is too large. Ask me how I know this.
 
Back
Top