• Please review our updated Terms and Rules here

8-Bit IDE Controller

I'm sure it's a dumb question but is the intent that we (users of the cards) use an additional/external power supply for the hard drive? (ie for systems that can't handle that load)

Certainly if you're replacing an MFM/RLL card+drive with this setup, you should have all the power you need. It appears that modern IDE HDDs take up about 7-10 watts each when reading/writing. If you don't think your supply can give you that much, I'd suggest getting a compact flash to IDE adapter and using a couple gig CF card. That should be really low power.

edit: yeah, what per said. :)
 
These early proto cards aren't going to be as sexy as the final product, but it could be your chance to own a signed and numbered, extremely limited edition, first edition piece of computer history.

operators are standing by... :)

You forgot to autograph mine, and as for numbering, lessee, I assembled it on Monday night between 8 and 9 p.m. What's that make it, #4 or so?

Really, anybody interested in learning/doing kit-building should look at one of these boards in unassembled state. Very simple buildup, took about 45 minutes. I'd call it a beginner-to-intermediate level kit, FWIW.

--T
 
[snip]
With that being said, how hard would it be to incorporate a Floppy controller into this design so that they were on one card? Not saying you should, I am just curious about its feasibility.

Hi! I made a floppy disk/IDE controller on the N8VEM home brew computer and it was probably the toughest project yet. Floppy drive controllers are definitely non-trivial. However, in this case we could probably "clone" an FDC circuit since it is a relatively common device. I would significantly add to the part count though. Probably the simplest circuit would be based on a SMC FDC9266 and a latch. Add in IO port decoding and interface buffers and it will at least double the part count of the XT-IDE.

Check out the Disk IO board schematic and PCB layout on the N8VEM project to see what I mean.

Thanks and have a nice day!

Andrew Lynch
 
Hi! I made a floppy disk/IDE controller on the N8VEM home brew computer and it was probably the toughest project yet. Floppy drive controllers are definitely non-trivial. However, in this case we could probably "clone" an FDC circuit since it is a relatively common device. I would significantly add to the part count though. Probably the simplest circuit would be based on a SMC FDC9266 and a latch. Add in IO port decoding and interface buffers and it will at least double the part count of the XT-IDE.

I'm always up for more BIOS projects, and I'm certain I can handle the demands of a floppy drive. (I know they are not exactly easy to work with, but with a controller like the 9266, it should make my job a lot easier)

I've done a lot of work with SMC superIOs on previous projects at work, and their parts are really great to work with. I wonder how far we could push the envelope and do up some kind of I/O card: LPT, COM, HD floppy+IDE...

Are there later models of SMC parts after the 9266 where they added COM or LPT ports, but were still available in a workable package? Heck, even a lower pin count SOIC package might not be *that* hard to solder down.

Just thinkin, and volunteering for more work, but we're getting WAY ahead of ourselves here!
 
For me, I'd be happy with just the IDE card. :D

I'd like to get one of the ones from the upcoming production batch. :)

g.
 
I want to make a statement about signal noise. Everybody with some knowledge of electronics know that moving electrons generates a magnetic field. The strength of this magnetic field depends on how the electorns move. The most imporiant thing is that changes in this magnetic field affects other electrons close to it. Because of this, stuff like signal-noise may happen.

I have had some issues when testing. Sometimes, the card just fail to read the signature/the partion table/a sector. The rate of the failures varied if I moved the drive or the cable a little (like tilting or flipping it), but I really couldn't figure out what caused the problems until pretty recently.

When I was testing, the drive was put on top of the 3.5" floppy disk drive (on a plastic sheet to make sure nothing shorted), next to the 5.25" FD drive. Everybody that has opened an XT know that there is very little opening between the rear of the drive-bays and the PSU. It's barley enough space for the floppy/fixed drive interface cables.

So when I tested one of my IDE drives, the interface cable was forced inbetween the floppy drive cable and the 200W powersupply. If you read the first paragraph, you'll see that this might cause problems. I recently moved the drive out of the computer, but still connected, and I haven't gotten any errors yet.

So is it just me, or is the IDE interface sensitive for signal-noise?
 
Hi Per! Yes, the IDE interface is somewhat susceptible to EMI. Make sure you:

1. have a good IDE cable. Ensure the IDC connectors are cinched down tightly and making solid connections.

2. The IDE drive is grounded properly to frame ground. You may need to mount it on the frame or wire it so that it is not floating.

3. Are you using 74LS374 or 74HCT374 latches? If so consider switching to 74F374s for improved drive performance.

If you have an long IDE cable too close to the SMPSU it could easily be picking up switching noise and coupling that onto the signal. It doesn't take much to generate some false transitions and screw everything up.

Make sure your solder joints are all good. As a habit, I inspect all soldering after I am done and then remelt each joint to ensure no hidden cold joints and wick away any extra solder.

Thanks and good luck!

Andrew Lynch
 
Hi Per! Yes, the IDE interface is somewhat susceptible to EMI. Make sure you:

1. have a good IDE cable. Ensure the IDC connectors are cinched down tightly and making solid connections.

2. The IDE drive is grounded properly to frame ground. You may need to mount it on the frame or wire it so that it is not floating.

3. Are you using 74LS374 or 74HCT374 latches? If so consider switching to 74F374s for improved drive performance.

If you have an long IDE cable too close to the SMPSU it could easily be picking up switching noise and coupling that onto the signal. It doesn't take much to generate some false transitions and screw everything up.

Make sure your solder joints are all good. As a habit, I inspect all soldering after I am done and then remelt each joint to ensure no hidden cold joints and wick away any extra solder.

Thanks and good luck!

Andrew Lynch

1. Yes, the connectors are properly set up and attached.
2. Eeeh... What ground It was laying on top of a sheet of plastic, didn't find any drivebays to connect it to. In addition, there isn't really any grounded wall-connectors around in this house.
3. Only F and LS parts.

About the solder joints, Hargle seems to be really echonomic in how much lead there is on each of them. My soldering skills/equipment are limmited, so I don't know if it is safe for me to do something with it.
 
The big ribbon cable is definitely a problem. That is why the higher-spec IDE drives used the newer cabling with the additional grounds. You might try a shorter cable, or a better quality cable if that problem happens again.

It looks like the card has the decoupling capacitors needed to remove AC ripple from the DC voltage lines - that is a good thing. Other things to check would be to make sure the signal ground planes are connected to avoid having them at different levels. Lastly, it might not be a bad idea to use some capacitors for voltage smoothing.

I'm not a EE - I know of these things in general terms. To me the card looks great, and I'm sure that Andrew has covered these issues.
 
Hi Per! The chips most affected by lack of drive current are the latches since they are the ones most directly interfacing the XT-IDE to the IDE drive through the cable. If those are 74F374s then you should be good.

Regarding the cable though, I was not referring to making sure the cable was firmly attached to the card but that the IDC connectors were firmly attached to the ribbon cable. There are many varieties of IDE cable and some are clearly better than others. Try substituting cables and see if that makes a difference. Some use heavier gauge wire, better IDC connectors, etc.

Please give these a try and let us know what happens! Thanks!

Andrew Lynch
 
Last edited:
Not sure but you could try one of the high density IDE cables that has more insulation between the pins. Alternatively if it's external interference you could maybe try a serial (round) IDE cable which seems to have more insulation from external EFI but to me always seemed stupid since really that's the reason the cables were flat in the first place was to keep EFI from the cable from interfering with itself.

Anyway, if you're bored and have the cables it may be worth checking out.
 
Bad news for me.

I tried to uncoil the cable wetween the floppy drives a little, and when I re-connected the cable to the 3.5" drive, I got it servely wrong. As soon as I flipped the power switch, the drive made some very loud "GrjnGrjnGrjn" noises, and I turned the power off. I then conneced the cable correctly, and I got it to boot. Then I tried to read data from the floppy disk drive. Apparently, the disk is pretty useless, I can do a dir but as soon as I try to read any files, I get loads of errors. I then tried to sys the disk in the B: drive, and I realized that I forgot to extract "sys.com". I got my dos disk, did "expand sys.co_ c:\dos\sys.com", but nothing happened. I then tried to copy sys.co_ to the C: drive, and I verifyed with a dir that it was there. To make sure it was all right, I tried to do a "type sys.co_", but then suddenly I got a "File or Command not found" error. I did a dir again, and for some reason, my C: drive is empty!

I don't know what happened, but it seems like the "copy" command either totally wiped out the directory table or did something with the partion table. May it be a possible bug?

---

I've now gotten my drive up running again. Luckilly, the floppy drive itself seems to have suvived.
 
Last edited:
I had a issue with signal noise on my Tandy 1000TL HDD once, Found a quick way to fix that problem, Use that silverfoil duct tape and "sandwich'the IDE cable and ground it to the case. That foil tape comes in rolls almost the right size of the IDE cables. Took care of my problem, till the HDD failed.

Looking forward to getting one or two of your cards to install in my 1000TL's once it's relased.
 
Hi Per! Good news that you fixed your system. It sounds like you needed to repartition/reformat the IDE hard drive? I've had problems like that occasionally when messing with the hardware and a reinstall does wonders.

If you find you are having EEPROM corruption problems you can replace the 2864 with a 2764 and that will prevent any inadvertent writes.

Thanks and have a nice day!

Andrew Lynch
 
Hi Per! Good news that you fixed your system. It sounds like you needed to repartition/reformat the IDE hard drive? I've had problems like that occasionally when messing with the hardware and a reinstall does wonders.

If you find you are having EEPROM corruption problems you can replace the 2864 with a 2764 and that will prevent any inadvertent writes.

Thanks and have a nice day!

Andrew Lynch

A reformat was enough.

There was nothing wrong with the EEPROM, but just in cause, I store a copy of the flasher utility and the most recent binary file on a floppy disk.
 
I'm currently working on a program that'll let you poke any values into "int 13h", and read the outputs. I thougth something like that might be usefull in debugging any bugs that mignt appear.

Availible inputs: AX, BX, CX, DX, 64Kb Buffer at segment BS (a window shows 512 bytes at a time, offset specified by, of course, BX)

Availible outputs: AX, BX, CX, DX, Carry Flag, 64Kb buffer at segment BS.

I'll post more when I get some code written down.
 
Stuff I'm learning:

1) 80 pin cables work fine.

2) any data value written to any IO address from 301-307 shows up at the data port (300).
This is unusual behavior, but probably doesn't effect anything, since on writes, the data is written separately, and on reads, the data comes in after writing all the other registers. The upshot of this is that it gives us a really, really good method of auto-detecting the base address of our card in the BIOS. Just write a known value or two out to base+3 and base+4 and read the same values back at base+0. easy!

3) There's fishy stuff going on with the drive parameters. Some of it may be happening if the BIOS is unable to read the Device Identification data properly. that makes sense (garbage in, garbage out) but there's at least a little stuff going on with the translation itself, and I'm investigating that. For now, use a drive bigger than 8.4G. heck, use a drive bigger than 137G and you'll really avoid the issue. (big drives have all the internal parameters maxed out, so there's no calculations or rounding to be done)

4) Drives set to cable select don't work. Single drives show up on the secondary position, 2 drives won't ID at all during POST. Setting drives as master and slave properly fixes all that. This is not a BIOS issue.

5) I've got 2 old WD drives that return status error and error code of simply "abort" when trying to do PIO reads and writes. On my modern VIA machine, doing the exact same transfer doesn't cause the error to occur. the drives are WD 21200 and 21000, circa 1995-1998. (~2Gig in size) At first I thought it was a timing issue, since the error returned via INT 13 is timeout, but increasing the timeout made no difference. It's the abort flag that is causing int 13 to bail. It's not the above mentioned drive parameter bugs that are causing this. About the only thing I can figure is that the VIA BIOS is issuing a "set features" or similar command to the drive to setup the PIO transfer rates, which modern drives must be defaulting to. Need to investigate more, but I suspect this might be causing other people problems too. The symptoms are INT 13 read or write commands returning immediately with CY set and Ah=80h. Running FDISK results in an "error reading fixed disk" error.

6) using debug on my zenith8088 machine and tracing through INT13 into the BIOS code causes the eeprom to corrupt. I suspect debug is writing something in memory whereever it is running, and since our eeproms act like dram, something is getting written. Dunno, but that's a real pain. Looking forward to write protected eeproms!

7) and two more cards were built late last week. Both seem to be working well. I have 1 more card which needs to be built up, but I've run out of eeproms, since 3 of the SEEQ parts are now bad. Must find a better solution than SEEQ.


And here's 2 new utilities:
http://www.waste.org/~winkles/id_dump.zip

this program displays the device ID data out to the screen. Works only on this card. Probably only works on the C: drive.

This will eventually be rolled into the int13 test program I wrote earlier to help discover differences in parameters between us and them.


http://www.waste.org/~winkles/ATA.zip
this one requires vga and a mouse driver to be installed. Only works on our card. This is a program written for another application at work, but it allows us to issue any ATA based command out to any drive attached to the machine.
It can do a lot of stuff (scripts, log files, etc) and will be useful for a lot of things going forward, so keep this one in your back pocket.
 
Ok, I have my XT (clone) test bed set up and I'm keeping a slot warm for one of the test cards.

It's a Datatrain DPC-1000 (which, if you need the specs on, are very close to the Packard Bell PB500 board (without the Turbo stuff) that you can find on TH99 sites)) with 640KB running a Seagate 225 on a WD1002A-WX1 controller.

I'm going to be running a number of Mono, Mono Graphic, CGA, EGA, network (Ethernet, Token Ring and ArcNet) and other 8-bit cards through the testbed over the next while using QA Plus XT to test them with.

Probably cover most of the possible configurations that the IDE might encounter out there.
 
7) and two more cards were built late last week. Both seem to be working well. I have 1 more card which needs to be built up, but I've run out of eeproms, since 3 of the SEEQ parts are now bad. Must find a better solution than SEEQ.
I suggest this as it is the fastest option (no the write side).

It also got software protection, which is nice, and it costs about the same as the SEEQ ones.
 
Went to the store yesterday and picked up 3 of the atmel eeprom parts. They are the same ones we used on the wire-wrap boards. Interestingly enough, the sticker was scraped off the bin they were in, so I asked the guy behind the counter how much they were. Next to the parts I selected were other speeds of the same part, and they were $8.49 and $11.49 respectively. The guy quoted me $2.49. hehe. If there were a whole tube of 100 I would have picked them up, but there's only 2 left.

Built up card #10 last night too. Works a treat and has one of the new atmel flash parts in it.

Didn't get much farther than that unfortunately.

I've just added a downloads section to our wiki:
http://wiki.vintage-computer.com/index.php/XTIDE_project

There are links to the latest flash binaries, some of the tests we've generated, and the flash utility. (per, wanna check to make sure that's the latest link?)

I think our wiki page may be getting a little long, and breaking some of these things out into separate pages might be in order.
 
Back
Top