• Please review our updated Terms and Rules here

XT-IDE Hardware Setup Gallery

Hi Chuck! Kudos! That's great news! It is amazing how such a simple change to the hardware can have such a dramatic effect on the data transfer rate. Hopefully some of the other builders give this a try to see if there are unintended side effects. 4-6 fold increase in speed is pretty dramatic and does seem to make DMA overcome by events.

This is great news! Thanks for trying it out! Have a nice day!

Andrew Lynch
 
OK. So I didn't understand much of what you guys were talking about (I do have good experience with C, but little experience with assember, and less with electronics).

But does this mean that we can get a 4-6 fold speed increase on the XT-IDE for ANYONE just by cuttting some traces, soldering a few more wires, and changing the BIOS?
 
Just that--I'd suggested that jiggering things so that the halves of the IDE data port occupied adjacent addresses might improve things quite a bit last year, but the XTIDE project was pretty much along and it wasn't until last month that I actually got a board to play with.

One thing that many people who know the 8088 aren't aware of is that the BIU doesn't differentiate between I/O space and RAM space when it comes to handling 16-bit data accesses, that they're broken down into two 8-bit accesses to consecutive addresses. Usually, this is a problem for IDE devices, because the 16-bit data register occupies a single address and the next consecutive address is occupied by the error register. This issue forced Andrew and Co. to take the upper half of the data register and map it to an address that was 8 greater. It works, but the code to assemble a 16-bit access gets a little cumbersome. By interchanging the A0 and A3 lines, the upper half of the IDE word occupies an address immediately following that of the low-order byte. Of course, the addressing of the other IDE registers changes, but that hardly matters from a speed point of view.

V20 users can even substitute for my IN/STOSW and LODSW/OUT pairs the INS and OUTS instructions that that CPU implements. My gut feeling is that things are probably running pretty close to bus speed, so it won't make much difference. But it'd be worth a try.

There are other aspects of the 8086/8088 that are almost never exploited, and others that I still have questions about 32 years after first fooling with the pre-release silicon of the 8086. Maybe I'll get some of them answered one day... :)
 
Chuck,

Thanks for explaining further. I actually understood most of what you said there! Wow, very cool. Now the performance increases make at least some sense to me.

Is there any way you could post a couple of pictures of what you did, or start a new thread with details of this mod? I think lots of people here would find this mod to be really helpful. Or were you planning on doing this anyway?

I'm going to be building my XT-IDEs soon, and I'd love to try this mod!
 
Sure, I think I can take a few photos and annotate them--the alterations are simple. The BIOS I worked with is Hargle's old XTIDE BIOS, not the newer "Universal IDE BIOS", but perhaps aitotat will update the Universal IDE BIOS--Hargle's works well enough for my purposes and the code is simpler because it doesn't have to deal with all possible hardware variations.

Disk writes are still about half the speed of reads because of the way the XTIDE's registers are organized; maybe one day we can make a change where write to the IDE drive is asserted when the high-order byte latch is written, instead of the low-order byte--but writes are typically outnumbered by reads at least 10:1 in most applications, so maybe it isn't a big thing.
 
I'm pretty sure we talked about having the data I/O ports contiguous during the design stage but could not without changing the addressing of the other ports, and at the time we were looking for maximum compatibility with existing IDE designs. With the exception of the one extra port we are using for the data, it's identical to other IDE controllers.

I've always wanted to do memory mapped version of the card for the same reason - let the BIU on the CPU do the work of breaking up a 16 bit operation into two 8 bit operations instead of explicitly coding it that way. Correct me if I'm wrong, but for some reason I keep thinking that the bus cycle for I/O space requires 5 clock cycles while for memory space it only requires 4. (A PCjr SCSI controller that I have uses memory mapped I/O, and it is a speed demon.)

(Hargle and I were just discussing the memory map change for the PCjr version, since compatibility with existing IDE controllers really isn't an issue. As long as the BIOS supports it there, we are ok. That's the way PCjr owners live.)


Mike
 
Man, the XT-IDE thread is too long ...

Here is where the discussion about improving the performance by having the BIU do the work starts ..

http://www.vintage-computer.com/vcf...2359-8-Bit-IDE-Controller&p=106812#post106812

Er, Mike, I suggested it almost a year earlier.

If we do another one of this sort of project (I'm thinking about a super-cheap SDHC adapter for the XT), I think it's prudent to divide the discussion up into several sub-topics. It seems that too many ideas get swept under the rug...
 
Like I said - that XT IDE post is too long ... The thread format is not conducive to a design discussion.

Apparently there are a few of us bothered by doing two separate 8 bit I/Os. :)
 
I just did a brief look at how much optimization this gives at 4.77MHz:

Code:
Number of cycles:

Old:
Execution unit:  8 + 2 +  4 +  8 +  4 + 4 + 11 = 30
Controll unit:  13 + 8 + 16 + 13 + 16 + 8 + 12 = 86 (18.06uS)

New:
Execution unit: 10 + 11 = 21
Controll unit:  18 + 12 = 30 (6.3uS)

About 12uS saved per word, plus the time saved by removing 3/4th of the loop branches.
According to previous tests, the speed of the original XT-IDE was about 85KB/s. Accessing 85KB saving 12uS per word takes 0.52224 seconds less than 1 second, or 0.47776 seconds.

Therefore, the theoretical speed after the update should be at least 178KB/s; an increase of 209.3%!

What's weird is that I get an performance indext of 6.1 with the original XTIDE using norton utilities 4.5. Are you sure this can be used as a reliable benchmark tool for transfer rate alone?
 
Last edited:
Per, I trust the Norton utilities about as far as I can throw and IBM 709.

I did a quick search for disk benchmarks, but couldn't find anything that (a) would run on an 8088 or (b) looked like it was worth anything.

I may have an old copy of Coretest somewhere, but I'm going to have to look hard. I can't remember if it required a 286 or not, however.
 
I have a small program that does sequential reads and writes that I use for testing controller throughput. It's posted on the XT-IDE Wiki in the Testing page: http://wiki.vintage-computer.com/index.php/XTIDE_TestResults

It will run on an 8088. The major shortcoming that I found is that XT-IDE blocks interrupts for quite a bit, so the timings are not accurate - you have to revert to a stopwatch.


Mike
 
Of course you can mix HCT and LS families--that's one of the reasons that HCT exists. Mixing HC can get a little iffy depending on the circui. The big issue is that an HC logic "high" input level is about 3.5V, while an LS and HCT logic "high" input level is about 2.0V. So, if your're driving a bunch of inputs from the same line, HC may not work--but you can get around that by adding a pullup to the HC input.

HC logic works over a wide range of power supply levels; in particular, it's happy as can be at 3.3V, while the same is not true of HCT or LS.

Fortunately, the XTIDE design is fairly conservative, so HC/HCT/LS logic should work just fine. I had some Fairchild 74F573s (somewhat akin to 74ALS logic) and even they worked fine, even if their speed was overkill for the application.

LSTTL family logic really is obsolete; HC and to some extent, HCT logic should be the target for new designs.


If so, AHCT should be the target :) But generally speaking all 74* TTL-compatible ICs are obsolete including their CMOS equivalets. Industry no longer uses 5V logic levels, it's all now 3.3V or even less. Having said that, some manufacturers (e.g. TI) still have 74LS devices listed as "active" or "in production".

Beware of issues with replacing TTL (LS/ALS/F) by CMOS (HCT/AHCT/ACT) logic:
1. Performance (propagation delays) of CMOS logic greatly depends on load capacitance, which makes them mostly unusable for bus drivers or transceivers. I personally experienced this issue twice:
- I tried to use 74AHCT245 and 74ACT245 with my XT-IDE board, and both resulted in unreliable operation - it worked (with some glitches) on older turbo-XT board, but it didn't work with an i386 board at all. Replacing it with 74LS245 resolved the issue.
- In my SBC-188 board I was trying to use 74AHCT373 latches, and it caused unreliable DMA operation, so I had to replace them with 74ALS373.

2. Unused input of CMOS devices should be connected to the ground or Vcc.

3. I won't recommend replacing TTL devices with HC/AHC/AC unless you're 100% sure that their inputs come from other CMOS devices (see Chuck's note above regarding differences in input voltage levels).

I recommend testing your board with TTL devices first, and then replacing them with CMOS (one by one).
 
I found a copy of CORETEST 3.03 here. It was one of the old standards back in the early days of the PC AT and was considered to be reliable.

A quick check on my system running at 4.77MHz gives a read transfer rate of 1168KB/sec. on the modified controller using a 192MB CF card. Does anyone want to run CORETEST on the regular setup (I don't want to pull out my soldering iron) and report the results?
 
I soldered it togeather this weekend , my eyes aint what they used to be.:shock:

Anyway I janked out the mfm controller card and unplugged the mfm 20 mb hard drive then pluged in the XTIDE with a Western Digital Caviar 1210 200 mb hard drive and powered it on and it works.

Its a Compaq Deskpro 8086 with a V30 cpu.

I still need to format and install Compaq DOS 3.31 and test it out.

I hope to be able to mount the new hard drive to a bracket I have that might let me attach a spare MFM hard drive front cover so I can have the OE look and working led's.


EDIT: Installed the latest version of Compaq DOS 3.31 ,that I have, using the fastart utility and it WORKS PERFECTLY!! Boots fast!! 10x larger harddrive with better reliability.

SWEET !!!!!!!!!!!!

Now I need to take out the MFM hard drive and place the ide drive permantly.

I went with Compaq DOS 3.31 because its the first to see drives up to 512mb , keeps the "clicky" sound as I type , and the pc is a Compaq so it just seems right.


EDIT #2: I used an old 3.5 floppy mounting adapter and swapped out the front cover from an old MFM hard drive. I found a fan adapter that plugs in perfectly to the front cover led's original connector but I can only use one so I picked the green led to flash.
 

Attachments

  • IMG_0597.jpg
    IMG_0597.jpg
    74.7 KB · Views: 1
  • IMG_0596.jpg
    IMG_0596.jpg
    60.6 KB · Views: 1
  • IMG_0598.jpg
    IMG_0598.jpg
    58.2 KB · Views: 1
  • IMG_0599.jpg
    IMG_0599.jpg
    60.8 KB · Views: 1
Last edited:
I found a copy of CORETEST 3.03 here. It was one of the old standards back in the early days of the PC AT and was considered to be reliable.

A quick check on my system running at 4.77MHz gives a read transfer rate of 1168KB/sec. on the modified controller using a 192MB CF card. Does anyone want to run CORETEST on the regular setup (I don't want to pull out my soldering iron) and report the results?

Running coretest on my setup , Compaq Deskpro 8086 with a NEC V30 ,a Western Digital Caviar 1210 200 mb hard drive , with the original bios as it came in the kit : 169KB/sec....... after then flashing the bios with the IDE_XTP.BIN (XT+ build) jumped up to 194 KB/sec.

I know its comparing apples to oranges me with a ide hard drive not a CF card but if others would chime in.

It seems as speedy as my 386 with a 16 bit ide controller card and similar hard drive.

Noticably faster than the old MFM 20mb setup.
 
Last edited:
Finally got around to soldering up my XTIDE card. It's now in the following setup:

Panasonic Portable JB3300
8088 CPU + 512Kb RAM
Fold up orange gas plasma CGA display
Single floppy
WD8003W Ethernet NIC
XTIDE + Toshiba 1.3GB 2.5-inch HDD
CP/M-86 partition, DR-DOS 3.41 and Concurrent DOS XM 6.2 in a 32Mb partition, rest yet to be FDISKed.

The 2.5-inch HDD is mounted in a 2.5-inch to 3.5-inch mounting kit, which in turn is mounted in an original Seagate 3.5-inch drive to 5.25-inch frame kit (part 54459-016) with front panel that includes LED mounting. This replaced an aging 20Mb Seagate ST-225.

Replaced this:
ST-225.jpg

With this:
2.5_in_5.25.jpg
 
Finally soldered up my XTIDE kit. With a few hiccups with re-flashing the BIOS, it works with my 1.3GB laptop IDE hard drive! Now I'm thinking about my mounting setup.

Does anyone have a "hardcard" type setup, where they mounted the hard drive onto the XT-IDE itself? I'm thinking about doing that, because I don't have any room in my PC to put the hard drive. Seems simple enough. I'll probably just get some a blank PC board from radio shack, mount the hard drive onto that, and attach the board onto the XTIDE.

The big problem is I don't know where I can drill on the XTIDE PCB. Does anyone know where it's safe to drill? Plus, I'll probably have to drill it to the side with the IDE header and large barrel capacitor, and there's not a lot of room there.

Has anyone done this?
 
Finally soldered up my XTIDE kit. With a few hiccups with re-flashing the BIOS, it works with my 1.3GB laptop IDE hard drive! Now I'm thinking about my mounting setup.

Does anyone have a "hardcard" type setup, where they mounted the hard drive onto the XT-IDE itself? I'm thinking about doing that, because I don't have any room in my PC to put the hard drive. Seems simple enough. I'll probably just get some a blank PC board from radio shack, mount the hard drive onto that, and attach the board onto the XTIDE.

The big problem is I don't know where I can drill on the XTIDE PCB. Does anyone know where it's safe to drill? Plus, I'll probably have to drill it to the side with the IDE header and large barrel capacitor, and there's not a lot of room there.

Has anyone done this?

What type of a computer is it? A laptop hard drive is pretty small , could you stick it somwhere using velcro?
 
I'd like to do something more permanent. I think velcro would work, but I'd like something more elegant.
 
Back
Top