Forum etiquette

Our mission ...

This forum is part of our mission to promote the preservation of vintage computers through education and outreach. (In real life we also run events and have a museum.) We encourage you to join us, participate, share your knowledge, and enjoy.

This forum has been around in this format for over 15 years. These rules and guidelines help us maintain a healthy and active community, and we moderate the forum to keep things on track. Please familiarize yourself with these rules and guidelines.

Remain civil and respectful

There are several hundred people who actively participate here. People come from all different backgrounds and will have different ways of seeing things. You will not agree with everything you read here. Back-and-forth discussions are fine but do not cross the line into rude or disrespectful behavior.

Conduct yourself as you would at any other place where people come together in person to discuss their hobby. If you wouldn't say something to somebody in person, then you probably should not be writing it here.

This should be obvious but, just in case: profanity, threats, slurs against any group (sexual, racial, gender, etc.) will not be tolerated.

Stay close to the original topic being discussed
  • If you are starting a new thread choose a reasonable sub-forum to start your thread. (If you choose incorrectly don't worry, we can fix that.)
  • If you are responding to a thread, stay on topic - the original poster was trying to achieve something. You can always start a new thread instead of potentially "hijacking" an existing thread.

Contribute something meaningful

To put things in engineering terms, we value a high signal to noise ratio. Coming here should not be a waste of time.
  • This is not a chat room. If you are taking less than 30 seconds to make a post then you are probably doing something wrong. A post should be on topic, clear, and contribute something meaningful to the discussion. If people read your posts and feel that their time as been wasted, they will stop reading your posts. Worse yet, they will stop visiting and we'll lose their experience and contributions.
  • Do not bump threads.
  • Do not "necro-post" unless you are following up to a specific person on a specific thread. And even then, that person may have moved on. Just start a new thread for your related topic.
  • Use the Private Message system for posts that are targeted at a specific person.

"PM Sent!" messages (or, how to use the Private Message system)

This forum has a private message feature that we want people to use for messages that are not of general interest to other members.

In short, if you are going to reply to a thread and that reply is targeted to a specific individual and not of interest to anybody else (either now or in the future) then send a private message instead.

Here are some obvious examples of when you should not reply to a thread and use the PM system instead:
  • "PM Sent!": Do not tell the rest of us that you sent a PM ... the forum software will tell the other person that they have a PM waiting.
  • "How much is shipping to ....": This is a very specific and directed question that is not of interest to anybody else.

Why do we have this policy? Sending a "PM Sent!" type message basically wastes everybody else's time by making them having to scroll past a post in a thread that looks to be updated, when the update is not meaningful. And the person you are sending the PM to will be notified by the forum software that they have a message waiting for them. Look up at the top near the right edge where it says 'Notifications' ... if you have a PM waiting, it will tell you there.

Copyright and other legal issues

We are here to discuss vintage computing, so discussing software, books, and other intellectual property that is on-topic is fine. We don't want people using these forums to discuss or enable copyright violations or other things that are against the law; whether you agree with the law or not is irrelevant. Do not use our resources for something that is legally or morally questionable.

Our discussions here generally fall under "fair use." Telling people how to pirate a software title is an example of something that is not allowable here.

Reporting problematic posts

If you see spam, a wildly off-topic post, or something abusive or illegal please report the thread by clicking on the "Report Post" icon. (It looks like an exclamation point in a triangle and it is available under every post.) This send a notification to all of the moderators, so somebody will see it and deal with it.

If you are unsure you may consider sending a private message to a moderator instead.

New user moderation

New users are directly moderated so that we can weed spammers out early. This means that for your first 10 posts you will have some delay before they are seen. We understand this can be disruptive to the flow of conversation and we try to keep up with our new user moderation duties to avoid undue inconvenience. Please do not make duplicate posts, extra posts to bump your post count, or ask the moderators to expedite this process; 10 moderated posts will go by quickly.

New users also have a smaller personal message inbox limit and are rate limited when sending PMs to other users.

Other suggestions
  • Use Google, books, or other definitive sources. There is a lot of information out there.
  • Don't make people guess at what you are trying to say; we are not mind readers. Be clear and concise.
  • Spelling and grammar are not rated, but they do make a post easier to read.
See more
See less

"rigging" a 16-bit IDE controller to XT

  • Filter
  • Time
  • Show
Clear All
new posts

    "rigging" a 16-bit IDE controller to XT

    with my 22 year old miniscribe just about dead, i've been looking at this SIIG 16-bit ISA IDE controller as a way to replace it with a more modern and much faster IDE drive. it has a jumper on it to modify the controller IRQ to either 14 or 15.

    since an XT's IRQ limit is at 9, that obviously won't work right out of the box. i googled the ISA slot pinout, and saw that the connections for selecting IRQ's 14 and 15 are (of course) on the little extended 16-bit section which doesn't have anywhere to plug in on an 8-bit slot in an XT.

    i have successfully used this card in an XT before just as a floppy controller and it worked fine with 1.44 MB drives, but seeing that the FDD controller IRQ is within an XT's range that shouldn't be surprising.

    what i was considering trying is jumping the connection from the IRQ 14 or 15 pin over to the IRQ 5 pin which is what an XT uses to access hard drives. i am no electronic engineer, and you guys are all smart. does anybody think this will or will not work? would it cause any damage to the motherboard or controller card?

    if nobody knows, i will probably just try it and let you guys know how it goes. theoretically i think i would only be able to address between cylinders 0 to 1023, heads 0 to 15, and sectors 1 to 63 from an 8-bit ISA bus. (8-bit ISA has a 20-bit wide addressing ability)

    it'll for sure be smaller than what the drive i'd put in can handle. 1024*16*63*512 = 528,482,304 bytes but that sure beats the heck out of a 20 MB MFM!

    Don't bother ..

    The IRQ limit on an XT is actually 7, not 9. When the AT was introduced 8 more IRQs were added, but they were cascaded from IRQ 2. This effectively removed IRQ 2 from ATs. On an XT IRQ2 is still available.

    Next, a 16 bit controller wants to transfer data 16 bits at a time. The XT bus is only 8 bits. Unless you trace all of the lines on the card you won't be able to tell if it will work in an XT with all of the extra address and data lines not connected. Chances are that it won't. Some ISA VGA cards and Ethernet cards have the ability to work in either an 8 bit or 16 bit slot, but most drive controllers do not.

    Lastly, do not confuse ISA memory addressability with hard drive cylinder addressing. Two entirely different domains. Accesses to hard drives are done by I/O ports, and the reason behind limited addressing for large hard drives has to do with the assignment of bits in the BIOS calls and data structures that control hard drives.



      I think it's quite likely that the card uses more than just the IRQ lines on the 16-bit portion of the card. Maybe if you can re-write the BIOS (assuming it has one) you might be in luck. Though, since you don't have the source code and probably won't have access to documentation for the proprietary ASIC on the card, it's probably not possible.
      Last edited by Anonymous Coward; April 29, 2008, 06:52 PM.
      "Will the Highways on the internets become more few?"

      V'Ger XT


        well, if the card has it's own BIOS it will be at C8000h. i might just try it, and if it doesn't work i can try writing a tiny little program on a floppy to jump the program counter to that address... if it DOESN'T have one, well maybe i could write a prog to manually stick all the hard drive information that DOS would use to access it into the proper locations in memory. then i could have the prog copy the MBR sector to 0000:7C00 and jump there to force an HDD boot.

        let me know if that is also a bad idea.


          btw mbbrutman, in the IDE specifications it says that all IDE controllers WILL be in 8-bit access mode unless the IOCS16:

          Data bus lines D8...D15 are valid only when IOCS16- is active and the drive is transferring data. The transfer of ECC information occurs only on data bus lines D0...D7 and data bus lines D8...D15 are invalid during such transfer.
          (it's in section 5)

          the IOCS16 pin is on the extended 16-bit section of the card according to the pinout, and will not be connected to anything in an XT thus this card WILL work in 8-bit mode.

          i just need to get software to properly initialize the drives and load the MBR. i think this is very do-able, it'll just take a bit of tinkering.


            I don't think that you have any idea of what you are messing with here.

            If the card has a BIOS extension it will be found when the XT boots. You don't need a program to call it, nor would it work. Executing a BIOS extension is quite a bit different than calling arbitrary code that you compiled.

            Trace the wires on the card. If it is using anything other than the high IRQ lines that the AT bus adds, then it's probably not going to work. I'd be looking for an old 8 bit SCSI card (Trantor T130B or Future Domain 85x series) with a bootable BIOS and a small SCSI drive instead.


              if i pull off some sort of magic here and get it working, i'll make all the info available for others to do it... including special software if necessary. can't hurt to try it.


                You are misreading the spec:
                Data bus lines D8...D15 are valid only when IOCS16- is active and the drive is transferring data. The transfer of ECC information occurs only on data bus lines D0...D7 and data bus lines D8...D15 are invalid during such transfer.

                This is merely saying that the upper 8 data lines are only active when IOCS16 is set correctly. It also says that ECC data only happens on the lower 8 data lines, and that the upper 8 data lines are invalid while ECC data is being transfered. It says nothing about the IDE spec being forced to support 8 bit transfers.

                Read further:
                indicates to the host that the 16 bit data port has been addressed and the drive is prepared to send/receive a 16 bit data word. This signal is an open collector output. D8...D15 are only valid when -IOCS16 is active and the drive is transferring data. The transfer of ECC data occurs only on D0...D7 so D8...D15 are invalid during ECC transfers.

                This signal comes from the card and is read by the machine, not the other way around. The poor card is going to be telling the machine to get ready for a 16 bit transfer, and the poor machine isn't going to be able to read the data.

                Most drives and controllers don't support 8 bit transfers. You are going to have to find a fairly old IDE drive and a fairly old controller to do this.

                There has been a lot of discussion about this in the past on the cctalk mailing list. I'd suggest checking our their archives and reading up.


                  i should start listening to you instead of wasting my time. i bridged the IRQ lines and installed it, set it to 170h base I/O. i've tried every jumper combination possible on the drive. when i read the I/O ports, these are the values that i should get. (the IDE controller is supposed to default it to these after it gets power or is reset:

                  REGISTER          VALUE
                  1F1 Error         : 01
                  1F2 Sector Count  : 01
                  1F3 Sector Number : 01
                  1F4 Cylinder Low  : 00
                  1F5 Cylinder High : 00
                  1F6 Drive / Head  : 00
                  however, every one of those values is just decimal 228 when i read the registers in qb. i don't even think the computer is seeing it there.

                  ah well, i guess i'll try to find an acculogic sIDE-1/16.... those are like 15 years old, it'll be hard. they are supposed to work with all IDE drives though, including 16-bit ones.

                  i'm assuming the card is not activating the IDE interface due to the 16-bit part of the card not being plugged in.

                  EDIT: another glaring difference is that an XT-compatible HDD controller will be either base 320h or 324h.
                  Last edited by Mike Chambers; April 29, 2008, 11:05 PM.


                    WHOA!! check this out. i dl'ed this little utility called ATAHD... i tell it to look at 170h master drive, and.... well, see for yourself.

                    ^yes thats a shot of the XT's screen.

                    makes you wonder if just takes a little bit of creative programming to get DOS to recognize it. maybe by doing something similar to what a normal BIOS would have done as far as detecting the parameters, and putting that info into the memory so DOS can see it....

                    maybe... this is promising, if nothing else.

                    i didn't do anything special to get that, like i said i just bridged the IRQ 14 line on the card to the IRQ 5 line and set it to primary IDE 170h... then just a normal clean floppy boot of caldera dr-dos 7.02 and then ran atahd.

                    EDIT: i should probably talk to trixter. anybody who can write something like 8088 corruption might have some ideas... or if it's not even possible. from what it looks like, it can see 256 cylinders, 16 heads, and 63 sectors on the 8-bit bus... not a huge amount of capacity there, but again... beats the 20 MB
                    Last edited by Mike Chambers; April 30, 2008, 12:57 AM.


                      Reading the ROM in the HD vs transferring data stored on the HD, are different stories.

                      Wait a sec. A 125MB drive with SMART status?
                      IBM PS/2 Model 25, NEC V30 8MHz, 640KB RAM, ATI VGA Wonder XL, 2GB SSD, Ethernet, DR DOS 6/GeOS, Xircom PE3 Ethernet


                        The IDE spec is derived from the ST506 spec. It's possible to take an MFM controller out of an AT and replace it with a modern IDE controller and have the AT BIOS (not an onboard card BIOS) drive the new controller.

                        One of the reasons is that the commands and IO registers are still eight bits. So it is very possible to talk to an IDE controller using 8 bit IO transfers and get it to respond. But when the controller tries to move data to or from the drive, those are going to be 16 bit transfers. Reading the ROM and doing basic commands against the controller might be possible, but you still can't do the data transfer.

                        Find the SIDE controller with the 8 bit drive support - that is your best bet.


                          I've got a 16-bit IDE hard drive attached to my 8080 using 8-bit transfers. It halves the capacity of the drive but this isn't a huge issue in my opinion because hard drives are usually pretty big (relative to a usual XT hard drive).

                          The solution that immediately springs to mind is to use a ROM from an ESDI drive and use a microcontroller of some sort to 'emulate' the layer between the IDE drive and the ESDI interface. My Compaq Portable II did this, except the interface was from IDE to ESDI, not ESDI to IDE.


                            I think the approach used on the sIDE card was to accept a 16 byte transfer from the hard disk and latch the upper 8 bits so that it could be transferred to the host during another IO cycle.

                            When you talk about halving the capacity because you are not using the upper 8 bits, is it something goofy like only having 256 byte sectors because half of the data is being thrown away?


                              Originally posted by Mike Chambers View Post
                              EDIT: i should probably talk to trixter. anybody who can write something like 8088 corruption might have some ideas...
                              I'd tell you exactly what Mike Brutman was telling you: Stop wasting your time unless you're willing to rewrite and reburn the BIOS on the card.
                              Offering a bounty for:
                              - A working Sanyo MBC-775 or Logabax 1600
                              - Music Construction Set, IBM Music Feature edition (has red sticker on front stating IBM Music Feature)