• Please review our updated Terms and Rules here

8-Bit IDE Controller

The floppy ROM loads and identifies the floppy drives first. Then the XTIDE loads. The boot menu does seem to identify all the existing drives correctly. But when a drive is selected from the menu, it seldoms boots correctly. The drive configured as A: never boots. I can sometimes select the B: drive, but the resulting boot won't see the hard drive. And the drive letters get switched after boot. Don't know if there is overlap in the ROM space, or just interference? By the way, how do I tell what ROM address the floppy is using? It doesn't have anything configurable that I can tell on the card. Only jumpers for drive size.
 
The floppy ROM loads and identifies the floppy drives first. Then the XTIDE loads. The boot menu does seem to identify all the existing drives correctly. But when a drive is selected from the menu, it seldoms boots correctly. The drive configured as A: never boots. I can sometimes select the B: drive, but the resulting boot won't see the hard drive. And the drive letters get switched after boot. Don't know if there is overlap in the ROM space, or just interference? By the way, how do I tell what ROM address the floppy is using? It doesn't have anything configurable that I can tell on the card. Only jumpers for drive size.

Hmm. Ok, if the floppy controller is loading first, then it sounds like the error is more on the XTIDE side. (not surprising, be patient)

Can you describe a bit more what happens when a drive "seldom boots/never boots"? Does it hang up/crash the machine when it's booting? Does it actually start reading from the floppy disk? Are you loading drivers? Do you get error messages? "Seldom" is a scary word in debugging computers. They should do the same thing every time, unless some hardware is right on the edge of working.

To tell what floppy address the ROM is loading out of, grab mike's pcjrcart.zip from here:
http://www.brutman.com/PCjr/pcjr_downloads.html

and run it on your machine. It'll pull down the contents and address of every option rom you've got. Send 'em to me. (don't bother sending me the XTIDE rom, as I sorta know what that looks like already. ;))
 
In sequence: memory count and normal post, floppy drive search then drives identified by floppy controller, drive A: LED lights momentarily, XTIDE activates and identifies hard drive, 5 second delay while displaying (esc for boot menu), attempts to boot A: (drive spins, but no sounds of tracks moving), hard drive boots after floppy failure.

Sometimes means that early on in my attempts, if I hit "esc" and kept trying to boot A: (pressing F1, re-selecting A from boot menu, etc) I was actually able to get it to boot. In fact, I was even able to format and transfer the system to the hard drive. But I have not been able to get this to work at all recently. And it was difficult to do. I'm pretty sure it even wiped out a couple of floppies in the process.

I could always boot from the B: drive though, by hitting "esc" and selecting B from the boot menu. But as stated, I would not have access to the hard drive. I should also note that the floppies were a 360k, and a 1.44M. I reversed the combination of which was A: and B: and it behaved exactly the same way and is therefore not drive related. I also used a wide range of newly formatted and confirmed booting disks to rule that out as well.

A couple more observations. Whenever I would try to update the card via setcard (to change the boot order, or the boot delay for example) it would result in a D000 ROM error during boot after the floppy controller started. Using setcard /b command alone would result in an error. I could use setcard without the "/b" and go through the entire list. It would look like it was flashing correctly, but the verify fails. So I eventually just reflashed and tried the IBM stock floppy card and it works as expected.

Sorry, I know this is a ton of information. I honestly don't mind the setup I have because the parallel 1.44 drive allows me to transfer files to the hard drive. I wouldn't worry too much about my one off floppy controller from JDR. I've read on these forums that many people had trouble even getting that floppy card to work. I was shocked when it worked in my XT. I will help any way I can though if you think it is value added for the project.
 
Last edited:
A couple more observations. Whenever I would try to update the card via setcard (to change the boot order, or the boot delay for example) it would result in a D000 ROM error during boot after the floppy controller started. Using setcard /b command alone would result in an error. I could use setcard without the "/b" and go through the entire list. It would look like it was flashing correctly, but the verify fails. So I eventually just reflashed and tried the IBM stock floppy card and it works as expected.

Are you 100% sure you use the most recent version I uploaded the 30th of September? The old one had some checksum errors.
 
I'll double check the file dates when I get home tonight, but I downloaded from the WIKI the same day I recieved the kit, which was this Saturday the 3rd. To clarify, I have not re-tried using setcard since I installed the normal IBM floppy controller. I did retry using setup without the XTIDE installed and still got the "no I/O space" message. I can retry setcard tonight to see if it works now with the normal IBM floppy controller..
 
I'll double check the file dates when I get home tonight, but I downloaded from the WIKI the same day I recieved the kit, which was this Saturday the 3rd. To clarify, I have not re-tried using setcard since I installed the normal IBM floppy controller. I did retry using setup without the XTIDE installed and still got the "no I/O space" message. I can retry setcard tonight to see if it works now with the normal IBM floppy controller..

Found the bug, the checksum byte still wasn't written to memory. SO, at the version I just uploaded, the checksum is corectly generated, AND it is also written to memory.

However, it's not tested since I don't got the ability rigth now (I have my fall break this week), so please test it for me.
 
Last edited:
In sequence: memory count and normal post, floppy drive search then drives identified by floppy controller, drive A: LED lights momentarily, XTIDE activates and identifies hard drive, 5 second delay while displaying (esc for boot menu), attempts to boot A: (drive spins, but no sounds of tracks moving), hard drive boots after floppy failure.
Interesting. So what happens if you try and do a "dir a:" from your C: after booting fails? Does it just grind and ARF, or do you get a "drive not ready?"

What DOS version are you using?
I think we might be able to do a small diagnostic utility here to see what INT 13, read from A: is doing and what error codes it is returning.


I could always boot from the B: drive though, by hitting "esc" and selecting B from the boot menu. But as stated, I would not have access to the hard drive.
Any chance you had a different version of DOS on the different drive?
Thinking that maybe if you had fdisk/formatted with DOS 5.0 and then booted to a 3.31 disk, it wouldn't know about your hard drive. (also just trying to think of the possibility which includes the least amount of work from me!)


I should also note that the floppies were a 360k, and a 1.44M. I reversed the combination of which was A: and B: and it behaved exactly the same way and is therefore not drive related. I also used a wide range of newly formatted and confirmed booting disks to rule that out as well.
ok, that probably rules out my first hope.
"not being able to get to the hard drive" means that typing "c:" and it said invalid drive specification? I'm thinking another simple utility to do some diagnostics here, like checking 40:75 for the hard drive count, then trying to read the 1st sector off the drive and displaying the data/any error codes could be good to know.

I will help any way I can though if you think it is value added for the project.

I'd really like a dump of that ROM. Even just to satisfy my curiosity, but I want to see what it is doing to INT 13 when it hooks in.

OK, I see that i've got about a half dozen utilities that I need to put together and document. We might also want to start a new thread for XTIDE tech support to keep this thread more toward the development side.
 
Interesting. So what happens if you try and do a "dir a:" from your C: after booting fails? Does it just grind and ARF, or do you get a "drive not ready?"

What DOS version are you using?
I think we might be able to do a small diagnostic utility here to see what INT 13, read from A: is doing and what error codes it is returning.

When I boot to the hard drive, I have full access to both of the floppies in DOS. I have been consistently using 5.0

Any chance you had a different version of DOS on the different drive?
Thinking that maybe if you had fdisk/formatted with DOS 5.0 and then booted to a 3.31 disk, it wouldn't know about your hard drive. (also just trying to think of the possibility which includes the least amount of work from me!)

Using dos 5.0 consistently.

ok, that probably rules out my first hope.
"not being able to get to the hard drive" means that typing "c:" and it said invalid drive specification? I'm thinking another simple utility to do some diagnostics here, like checking 40:75 for the hard drive count, then trying to read the 1st sector off the drive and displaying the data/any error codes could be good to know.

Yes, says "invalid drive specification"

I'd really like a dump of that ROM. Even just to satisfy my curiosity, but I want to see what it is doing to INT 13 when it hooks in.

OK. Does that previous file for pcjr actually dump the ROM too?
 
Crossposting, sorry. I need to brag about this a little more over here.

As I posted in another thread, I recently picked up a couple new Promise tech EIDE cards with onboard BIOS. They locked up on my 286, but worked on the 386. I suspect they are doing some kind of 386 instructions.

anyway, so I made a fork of the XTIDE BIOS, changed the base address to 1f0h, which is standard IDE location, and then changed the read/write routines to use a 16bit IO bus. All in all, about a 5 minute job. I then replaced the promise BIOS with XTIDE, and it booted!

This is important news because of the following:
1) We now have another, independent piece of hardware to test BIOS changes out on. If there's any question if we've got a signal/noise/hardware issue, or it's the BIOS being a flake, we can test it out on a known good card to eliminate a variable.

2) I can write and test and verify DMA and IRQ operations on this card before porting them over to XTIDE hardware, provided of course XTIDE ever gets DMA support.

3) I now have a card that I can use on my 286 that has large hard drive support. ;)
 
Nice, hargle. That's a cool hack, and useful to boot!

I received my kit today, and will be soldering it up tonight or tomorrow in anticipation of receiving my Revision 3 BIOS. Kudos to you guys for such a fine job; the board is very professional and should be a snap to populate.
 
Ah, stuff I've forgotten to tell the world about:

1) I made up the last of the 25 kits last night. I believe there are 9 remaining and 3 brackets left. Get yours today!

2) I have 1 extra '245 IC. Either I've accidentally shorted someone in their kit, or jameco sent me an extra one. None of the kits I have left are missing any ICs, so it has to be one I've already shipped. Sorry if that's you!

3) I found 2 BIOS bugs while working on my new Promise EIDE cards.
a) Upon installation, we always hook INT 13 and 19, so we can provide the boot menu. However, if no drives are attached/detected, the old INT 13 vector never gets saved. You will crash the instant you attempt to boot.
Not a show stopper (why would you have a card but no drives?) but for someone 1st starting out and maybe not getting a drive that works, or jumpered incorrectly, this could certainly be a head scratcher. This will be fixed on the next release.

b) This one isn't an issue on the PC/XT, but if you have your onboard cmos setup set to having a hard drive installed (typically you'd set your drive type to 1, then let the HDD controller BIOS handle the details), this can cause conflicts in the mapping mechanism that XTIDE uses to know which drive we're in control of. I got burned by that last night. The mapping stuff needs some overhaul anyway, so I will hopefully get that fixed up someday.
 
Crossposting, sorry. I need to brag about this a little more over here.

As I posted in another thread, I recently picked up a couple new Promise tech EIDE cards with onboard BIOS. They locked up on my 286, but worked on the 386. I suspect they are doing some kind of 386 instructions.

Would those be the 16 bit ones that where often supplied with LS120 drives,
if so I have a few of them, would be cool to be able to support drives >500MB on old systems like the 5170, where the bios is limited even if an IDE card is fited.

anyway, so I made a fork of the XTIDE BIOS, changed the base address to 1f0h, which is standard IDE location, and then changed the read/write routines to use a 16bit IO bus. All in all, about a 5 minute job. I then replaced the promise BIOS with XTIDE, and it booted!

Humm as a side thought, would be cool if a interface less board could be developed that would just have the ROM, so that it could be added to an old system such as an IBM AT, so that you could fit it and a standard IDE card and have a large drive on there.

Humm might also be possible to reverse-engineer the promise, though as they are still around might not be such a good idea, but then an IDE drive is much easier to interface to a 16bit bus anyways.

Phill.
 
Would those be the 16 bit ones that where often supplied with LS120 drives,
if so I have a few of them, would be cool to be able to support drives >500MB on old systems like the 5170, where the bios is limited even if an IDE card is fited.
these:
http://www.vintage-computer.com/vcforum/showthread.php?t=17067
are the cards i'm referring to.

That said, there's probably no reason those LS120 cards couldn't also be retrofitted with the XTIDE source. Right now, the BIOS is totally generic and it's only looking at port 1f0-1f7 for the hard drive to exist on, so if those cards are decoding at the same place, and have a socketed ROM, by all means, yank it out and reprogram it. I'll send you the source/binaries to play with. I'd absolutely love it if XTIDE BIOS gets spread around to support all manner of IDE controllers. :)



Humm as a side thought, would be cool if a interface less board could be developed that would just have the ROM, so that it could be added to an old system such as an IBM AT, so that you could fit it and a standard IDE card and have a large drive on there.
There were cards like that, I used to have one; nothing more than a ROM sitting in the middle of a small PCB. Mine totally didn't work, so I stupidly got rid of it, and now I know so much better...

Essentially, the XTIDE can act as that too, either don't populate the IO decode section of the card, or just let it eat up 9 bytes of IO somewhere on your machine and use the ROM to control another card...

(that's actually how I did the Promise trick. I'm going to have to peel off the label on the promise part and see if it's actually an eeprom, and perhaps even see if it's flashable)
 
these:
http://www.vintage-computer.com/vcforum/showthread.php?t=17067
are the cards i'm referring to.

That said, there's probably no reason those LS120 cards couldn't also be retrofitted with the XTIDE source. Right now, the BIOS is totally generic and it's only looking at port 1f0-1f7 for the hard drive to exist on, so if those cards are decoding at the same place, and have a socketed ROM, by all means, yank it out and reprogram it. I'll send you the source/binaries to play with. I'd absolutely love it if XTIDE BIOS gets spread around to support all manner of IDE controllers. :)

Slightly different card but similar, I do seem to remember that the cards I have are jumperable for several I/O and ROM addresses, from what I remember 1F0-1F7 was one of them, isn't that the "official" second hard disk controler interface anyways.

Promise FloppyMax, ROM can be at D000, D400, D800, DC00, I/O at 1E8 and 168, IRQ at 9,10,11 though there are also holes for 12, 14, 15 if I fitted jumper posts.

Yeah deffo be interested in the source. I even have the AT on my bench at the mo, so could play with it quite easily.

Essentially, the XTIDE can act as that too, either don't populate the IO decode section of the card, or just let it eat up 9 bytes of IO somewhere on your machine and use the ROM to control another card...

Yeah that's true, guess you'd just need the LS688, pullup and dipswitch.

(that's actually how I did the Promise trick. I'm going to have to peel off the label on the promise part and see if it's actually an eeprom, and perhaps even see if it's flashable)

And even if it's not a flashrom, the socket will almost cirtainly be a standard layout, so you could prolly patch the board with the /MEMW, asuming of course that there is a finger for it on the ISA connector, and then replace the EPROM/ROM with a flash rom.

On the FloppyMax, alas MEMW is no on the edge connector, so will not be flashable.

On the plus side it does seem to be working correctly with the 8G IBM drive I have hooked up to it, and PC-DOS 5 can see the whole drive. Next step is a re-assemble at 1F0, to see if I can drive the standard IDE-IO card I have in the system also.

Cheers.

Phill.
 
Last edited:
Hi! I finally got to finish assembling the XT-IDE board. I programmed a 2764 EPROM with the XTIDE BIOS version 10. Everything works great even with the FDC with its own BIOS!

It boots right and plays nicely with the floppy controller. The boot menu works. The hardware went together without a hitch and software works very well.

Very impressive Hargle! Congratulations!

Thanks and have a nice day!

Andrew Lynch

PS, since the XT-IDE project has clearly moved past hardware design phase is there anything in particular I should be testing? I am not aware of any changes to the PCB. The software seems to work great and I don't have a Tandy to help debug its issues. Please let me know if there is something I can do to help out.
 
Last edited:
Ah, stuff I've forgotten to tell the world about:

1) I made up the last of the 25 kits last night. I believe there are 9 remaining and 3 brackets left. Get yours today!

I'm a bit confused as I've been travelling for some weeks and not reading everything... are we still beta testing or has the shop opened up?
I'm no electronics engineer so I won't be that much use debugging- but I would like to have some of them in the end (just afraid I'll miss it, lol!)
Things seem to develop very fast recently!
 
Last edited:
Jorg: We're on prototype II. I did a run of 25 PCBs and opened "sales" up to folks who were willing to pitch in, debug a bit, throw it through the paces and give some feedback. So far it's been excellent all around.

I still have 10 available, in kit form. The bottom of page 109 has the details for ordering.

---------

andrew: I think you're off the hook for now. There are no known HW issues to look into, so just kick back and enjoy!

---------

Has anyone mounted a bracket yet? I'd like to see some pictures of a totally finished card. That's the one thing I have not done yet.
 
Hi Hargle! Did you settle on the Keystone 9202 ISA bracket?

http://www.jameco.com/Jameco/Products/ProdDS/1582356.pdf

I would love to know if there is sufficient clearance.

Thanks and have a nice day!

Andrew Lynch

PS, if you are interested, I have the ATA-1 and ATA-2 specifications for the *REALLY* old drive support on the N8VEM wiki in the DiskIO folder. They may come in handy writing a BIOS to support the early IDE drives.
 
Back
Top