VOGONS


First post, by r00tb33r

User metadata
Rank Member
Rank
Member

Hey all,

I'm gathering resources for my hobby 16-bit system and wondering if anyone ever made a 16-bit IDE from scratch. From my quick research it seems that XT-IDE would not be the right starting point. Since IDE itself is 16 bits and I want to build a full 16-bit system with 16-bit bus CPU and memory, I would like the disk interface to be 16-bit too. CD-ROM support would be nice.

Yes, it seems CD drivers may need a 386, so it might be an SX build, at least some iteration of it.

Anybody can point me to any existing efforts?

Reply 1 of 14, by rasz_pl

User metadata
Rank l33t
Rank
l33t

xt-ide is the right starting point. 16-bit ISA IDE controller is in the hard drive/CDROM itself, the "interface" is an address decoder and wires connecting ISA pins to IDE cable.

here is project doing just that https://alexandrugroza.ro/microelectronics/sy … face/index.html
upper middle section of isa-io-interface-schematic.png is the whole thing, and its overbuild, in reality IO cards often dispensed with 244/245 buffers

Re: Best ISA super i/o chipset?

this is a legit full blown 16 bit IDE interface card Microflex-UTC-3001I-ATF20V8B-ISA-IDE-Controller.jpg

Open Source AT&T Globalyst/NCR/FIC 486-GAC-2 proprietary Cache Module reproduction

Reply 2 of 14, by Jo22

User metadata
Rank l33t++
Rank
l33t++

I have such a card in my Schneider Tower AT. It's a basic IDE Host Adapter.
That works fine, because early IDE or ATA is just a cut-down version of the ISA bus.
Hence, people talked about "AT-Bus" HDDs (or "Fixed Disks") in the olden days.
All the card does is address-decoding and wiring an IRQ channel to the HDD (via jumper).

Edit: https://www.pcmag.com/encyclopedia/term/ide-host-adapter
The second part is about Multi I/O cards, rather.

"Time, it seems, doesn't flow. For some it's fast, for some it's slow.
In what to one race is no time at all, another race can rise and fall..." - The Minstrel

//My video channel//

Reply 3 of 14, by mkarcher

User metadata
Rank l33t
Rank
l33t

Tooting my own horn: I wrote a Retrocomputing Stackexchange answer on "proper IDE interfaces", see https://retrocomputing.stackexchange.com/a/15652 . One point in this answer is properly supporting port 3F7, which is (nearly?) irrelevant in practice, but a lot of work to get it right.

The small UTC-3001I card isn't even the simplest possible card: That card at least has a buffer for the low 8 ISA data bits. By shorting the solder links above the 74ALS245 and removing this chip, you could go even cheaper, although that would mean a drive would have to drive the whole 8-bit ISA data bus through the IDE cable. If there are a lot of pre-CMOS PC/XT cards installed, this can cause trouble. AT cards usually don't load the data lines as much, and also things like the keybaord controller and the BIOS chip are generally only connect to the low 8 bits of the bus. That's why these simple IDE interface cards can skip the data buffer for the high 8 bits without problems. The UTC-3001I likely doesn't respond to port 3F7 at all, which is the most sane thing to do, although it's incompatible to the original WD-1003 controller card that IDE is supposed to emulate.

Reply 4 of 14, by rasz_pl

User metadata
Rank l33t
Rank
l33t

this one I linked in my linked post seems to be the absolute bare value proposition, at least the IDE half. all data lines hardwired to IDE connector.
GoldStar-GM82C765B-IDE-HDD-Floppy-Controller-ISA.jpg

ah, so D7 is special in some way, that explains it being routed to a PAL chip in alexandrugroza design

Open Source AT&T Globalyst/NCR/FIC 486-GAC-2 proprietary Cache Module reproduction

Reply 5 of 14, by weedeewee

User metadata
Rank l33t
Rank
l33t

What would be the minimum requirement for ide dma support ?

Right to repair is fundamental. You own it, you're allowed to fix it.
How To Ask Questions The Smart Way
Do not ask Why !
https://www.vogonswiki.com/index.php/Serial_port

Reply 7 of 14, by mkarcher

User metadata
Rank l33t
Rank
l33t
rasz_pl wrote on 2022-11-03, 11:23:

PCI bus

As far as I understand it, "single-word" and "multi-word" DMA modes of IDE were intended to match "single cycle mode" and "demand mode" of the 16-bit AT DMA channels. The hassle of DMA page limits, the "even byte" alignment requirement and the speed of "REP INSW" make ISA DMA operation of IDE impractical, but not impossible. I wonder why no one ever built an IDE interface card that allowed to connect DRQ and DACK from the IDE cable to DRQ/DACK 5/6/7. Do you know any technical reason why IDE DMA over ISA wouldn't work at all?

Reply 8 of 14, by rasz_pl

User metadata
Rank l33t
Rank
l33t

The speed of legacy DMA controller being the first one. Wondered about that one myself https://www.os2museum.com/wp/whence-identify- … #comment-363907 and found this one https://forum.vcfed.org/index.php?threads/was … 502/post-527616

Open Source AT&T Globalyst/NCR/FIC 486-GAC-2 proprietary Cache Module reproduction

Reply 9 of 14, by weedeewee

User metadata
Rank l33t
Rank
l33t

@rasz_pl
@mkarcher

GSI, INC. MODEL 4C INTELLIGENT IDEA

That card, mentioned in the second link about large cases, looks pretty basic and indeed allows for three ide-channels to use a 16bit dma channel.
https://arvutimuuseum.ee/th99/c/E-H/20413.htm

Right to repair is fundamental. You own it, you're allowed to fix it.
How To Ask Questions The Smart Way
Do not ask Why !
https://www.vogonswiki.com/index.php/Serial_port

Reply 10 of 14, by r00tb33r

User metadata
Rank Member
Rank
Member

Thanks for the info! I thought it would be as simple as that but wanted to confirm. The 245s are common enough chips not to skip them.

I looked up that UTC-3001I card because I was intrigued by the jack, the FCC product description says it's an audio jack? How strange! Is that just a PC speaker header?

So I looked at Alexandru Groza's project, I will probably refer to it quite it bit at various times. So I looked at the schematic for that multi-IO card, and I think I see resistor network pull-ups for each IDE interface? Those should be enabled, right? What about master/slave drives and cable select? I couldn't understand how that works.
CF power on pin 20? Nifty.
The image for the PAL/GAL chip is provided but sadly not source so I could look at the logic expressions. I will probably figure that out when I start working on the project. While I've been wanting to get into ATF chips (they're a superset of GALs), it's almost tempting to implement address decoding with a bunch of gates, I'm sure the combinational logic expressions are pretty simple here.

Reply 11 of 14, by jmarsh

User metadata
Rank Oldbie
Rank
Oldbie
r00tb33r wrote on 2022-11-03, 23:37:

I looked up that UTC-3001I card because I was intrigued by the jack, the FCC product description says it's an audio jack? How strange! Is that just a PC speaker header?

Given the 4 pin connector right behind it, it's probably for outputting CD audio direct from a drive.

Reply 12 of 14, by mkarcher

User metadata
Rank l33t
Rank
l33t
r00tb33r wrote on 2022-11-03, 23:37:

Thanks for the info! I thought it would be as simple as that but wanted to confirm. The 245s are common enough chips not to skip them.

Yeah, the official name is "AT bus attachment" for a reason 😀. The IDE interface really just attaches the the hard drive to the 16-bit ISA (AT) bus.

r00tb33r wrote on 2022-11-03, 23:37:

I looked up that UTC-3001I card because I was intrigued by the jack, the FCC product description says it's an audio jack? How strange! Is that just a PC speaker header?

Agreeing with jmarsh here: That card is inteded as "CD-ROM interface card" for IDE CD drives. That was at a time where analog audio playback was a relevant function of CD drives, and professional computers (opposed to gaming computers) didn't necessarily have a sound card. So they added forwarding the audio from the CD drive to allow to connect the CD audio output to a HiFi setup you already have. The audio jack is directly connected to the 4-pin header with no electronics inbetween and no connection to the ISA bus. So you could call this a "dual-function" card: It's both an IDE interface and an audio-jack carrier.

r00tb33r wrote on 2022-11-03, 23:37:

So I looked at Alexandru Groza's project, I will probably refer to it quite it bit at various times. So I looked at the schematic for that multi-IO card, and I think I see resistor network pull-ups for each IDE
interface? Those should be enabled, right? What about master/slave drives and cable select? I couldn't understand how that works.

The basic idea of the "master/slave" system is rooted in the history of IDE. Originally, the IBM AT shipped with a WD-1003 hard disc controller. That card did MFM encoding / decoding on the card itself, handled the seek pulses and head select signals, so hard drives really were just drives. This design was elegant, because it allowed two hard drives to be connected to that controller, without duplicating the controller logic. On the other hand, this design severely limited how hard drives could be designed. Most modern drives use a different number of sectors per track in different regions of the disc. The modulation scheme isn't necessarily MFM or classic RLL. Different vendors use different techniques to optimize track usage. So it turned out that it would be a smarter idea to have a controller that is more closely matched to the drive. As electronics integration density increased, there was enough space on the drive PCB to add the control logic (to integrate the drive electronics into the drive, hence the name IDE). But now we have two controllers in a two-drive setup, whereas the BIOS expects to be talking to one controller that can be told to operate on one of two drives. So the drives have to make sure that the two controllers don't interfere which each other and support all the ways the AT BIOS accesses that virtual single controller. The problem of the drives responding in a correct way that they look like a single drive is handled by the drive, not by the IDE interface card, so you just don't care about that with your card.

The pull-up/pull-down network is another funny topic: The WD-1003 interface specification states that the status register at 1F7 indicates in the top bit, whether the registers are valid at all. The idea is that the controller registers can be implemented as a single-ported 8-byte RAM chip that is assigned to be accessed by either the controller chip or the host interface. While the register set (some people call it "task file") is assigned to the controller chip, the host will read any kind of garbage, but it is guaranteed that bit 7 of 1F7 is set in this case. There are rules at what point in time the controller may claim the registers. The host needs to poll the status bit if the controller may have claimed the registers (like after you sent a command to the controller). The most important point when designing an IDE interface, though, is that the controller is default owner of the register until its power-up cycle is complete, so the BIOS has to wait till it gets access to the IDE registers before acessing the hard drive. If the BIOS tries to do auto-detection of IDE drives (i.e. something no 286 BIOS does), and there is no drive connected, it would always read 0FFh, which has its top bit set. This could mean "the drive is not ready yet" or "there is no drive". The duration after power-up until the drive is ready to respond to commands can be several tens of seconds, so a long timeout is required. This is why in IDE interface designs that are meant to be compatible with auto-probing, it is recommended to put a pull-down resistor on the IDE side of the '245 chip at D7, so if no drive responds, the host will read "7Fh" instead of "FFh". In that case, the busy bit is clear and permits the host to go on and probe whether the register set is working (which it is obviously not if there is no drive), and quickly detect if a drive is connected or not.

r00tb33r wrote on 2022-11-03, 23:37:

The image for the PAL/GAL chip is provided but sadly not source so I could look at the logic expressions. I will probably figure that out when I start working on the project. While I've been wanting to get into ATF chips (they're a superset of GALs), it's almost tempting to implement address decoding with a bunch of gates, I'm sure the combinational logic expressions are pretty simple here.

In fact the expressions are extremely simple. It's ISA, though, so be aware of a trap IBM built into the system: To avoid false decodes during DMA transfers, you must not respond to IOW or IOR while AEN is high. During DMA transfers, a memory address is on the ISA bus, a memory command line is active, and an I/O command line is active too.

Reply 13 of 14, by Jo22

User metadata
Rank l33t++
Rank
l33t++

WD1003 and its cousins (WD1002, WD1006 etc) are very interesting, IMHO !

I highly recommending reading this article overe here: http://www.os2museum.com/wp/how-to-please-wdctrl/

PS: Also interesting is the floppy drive / HDD relationship through ISA's I/O Ready signal (IORDY).
It's one of the reasons why multi i/o cards and combined floppy/IDE cards weren't a bad idea.
Despite the old philosophy of "one device for one purpose each" (or how it goes).

"Time, it seems, doesn't flow. For some it's fast, for some it's slow.
In what to one race is no time at all, another race can rise and fall..." - The Minstrel

//My video channel//

Reply 14 of 14, by r00tb33r

User metadata
Rank Member
Rank
Member
jmarsh wrote on 2022-11-04, 00:31:
r00tb33r wrote on 2022-11-03, 23:37:

I looked up that UTC-3001I card because I was intrigued by the jack, the FCC product description says it's an audio jack? How strange! Is that just a PC speaker header?

Given the 4 pin connector right behind it, it's probably for outputting CD audio direct from a drive.

Yeah, I makes sense. I'm not sure I would have guessed that so easily though.

mkarcher wrote on 2022-11-04, 09:13:

The basic idea of the "master/slave" system is rooted in the history of IDE. Originally, the IBM AT shipped with a WD-1003 hard disc controller.
...
The pull-up/pull-down network is another funny topic: The WD-1003 interface specification states that the status register at 1F7 indicates in the top bit, whether the registers are valid at all. The idea is that the controller registers can be implemented as a single-ported 8-byte RAM chip that is assigned to be accessed by either the controller chip or the host interface. While the register set (some people call it "task file") is assigned to the controller chip, the host will read any kind of garbage, but it is guaranteed that bit 7 of 1F7 is set in this case. There are rules at what point in time the controller may claim the registers. The host needs to poll the status bit if the controller may have claimed the registers (like after you sent a command to the controller). The most important point when designing an IDE interface, though, is that the controller is default owner of the register until its power-up cycle is complete, so the BIOS has to wait till it gets access to the IDE registers before acessing the hard drive. If the BIOS tries to do auto-detection of IDE drives (i.e. something no 286 BIOS does), and there is no drive connected, it would always read 0FFh, which has its top bit set. This could mean "the drive is not ready yet" or "there is no drive". The duration after power-up until the drive is ready to respond to commands can be several tens of seconds, so a long timeout is required. This is why in IDE interface designs that are meant to be compatible with auto-probing, it is recommended to put a pull-down resistor on the IDE side of the '245 chip at D7, so if no drive responds, the host will read "7Fh" instead of "FFh". In that case, the busy bit is clear and permits the host to go on and probe whether the register set is working (which it is obviously not if there is no drive), and quickly detect if a drive is connected or not.

Your whole post is just... Wow. So much useful knowledge shared! Thanks!

Jo22 wrote on 2022-11-04, 13:01:
WD1003 and its cousins (WD1002, WD1006 etc) are very interesting, IMHO ! […]
Show full quote

WD1003 and its cousins (WD1002, WD1006 etc) are very interesting, IMHO !

I highly recommending reading this article overe here: http://www.os2museum.com/wp/how-to-please-wdctrl/

PS: Also interesting is the floppy drive / HDD relationship through ISA's I/O Ready signal (IORDY).
It's one of the reasons why multi i/o cards and combined floppy/IDE cards weren't a bad idea.
Despite the old philosophy of "one device for one purpose each" (or how it goes).

Fun facts, also useful.