Path: utzoo!utgpu!news-server.csri.toronto.edu!cs.utexas.edu!uunet!comp.vuw.ac.nz!virtue!canterbury.ac.nz!elec140 From: elec140@canterbury.ac.nz Newsgroups: comp.sys.amiga.hardware Subject: Re: IBM cards in the Amiga Message-ID: <1990Jul25.104225.8779@canterbury.ac.nz> Date: 25 Jul 90 01:04:39 GMT References: <1990Jul20.172301.6908@watdragon.waterloo.edu> Distribution: comp Organization: University of Canterbury Lines: 69 In article <1990Jul20.172301.6908@watdragon.waterloo.edu>, rbharding@trillium.uwaterloo.ca (Ron Harding) writes: > ... > > This is getting a bit long. Has anyone out there considered the > challenges of this? If you've already built such a beast, we'd love to hear > about it. On the other hand, if you know of some reason why it's not > possible, well, who asked ya, anyway? > > ============================================================================= > Ron Harding | Nuke'Em: Get them before they get you! > rbharding@trillium.uwaterloo.edu | Another quality home game from Butler Bros > ============================================================================= -- I have made a small board to plug into my Amiga 500 which provides me with one IBM (8 bit) slot. I designed it so that I could plug an IBM hard disk drive into my Amiga. (IBM hard disks are cheaper than any Amiga disk drive.) Other cards are probably just as easy to interface. I didn't need to worry about emulating the complete IBM interface since I only needed the I/O space and hence no memory space. Also the way the hard disk card is, I didn't need a DMA chip, but had the processor do the work. As for speed, I didn't do anything! When IBM XT's get Turbo'd to 8MHz they do nothing for bus speed, and since the Amiga is only ~7 MHz I decided to do nothing as well. The interface is quite simple and only uses three chips. (none of this autoconfig stuff!). An eight bit comparator (74HCT688) is used for address selection, with its enable line connected to /AS. The /A=B output is then ORed with R/W to provide /IOW and ORed with not R/W to provide /IOR. The /AS was also connected directly to the /ALE on the IBM side (this is not quite the same, but has the falling edge in the same place of the cycle). For the interrupts and DMA signals, I ORed these together (remember - IBM has tristate active high interrupts and DMA request signals - this is why you can't share interrupts on an IBM). Since these signals are tristate when not active, pull down resistors (1K8's) were used to make them inactive when not in use. Also reset is provided by simply inverting the /RESET line. Only eight data lines are connected (D0-D7), and the address lines A1-A10 are connected to the IBM's A0-A9 and all other IBM address signals were tied to ground. This means that the address space which is mapped appears at ODD locations through memory (accessing even locations will select the card, but the processor will miss the data). On the software side - I have a device driver for the Hard Disk which although probably not completely bug free, does the job. I have been using it now for two months without any worries. Of course its not autoboot, but then I have only just upgraded to KickStart 1.3 now anyway. When an interrupt occurs, the software decides whether it was for DMA or an IRQ, and if it was DMA it then reads the entire sector off the disk through one of the I/O addresses. By using this DMA line instead of polling the controller card the processor is free to get on with other jobs in the system. ********************************************************* Mark Tomlinson Postgrad - Elec Eng Dept Canterbury University Christchurch, NEW ZEALAND E.MAIL: Tomlinson@elec.canterbury.ac.nz P.S. Please post or email to above address as someone else posted this for me. What's a disclaimer anyway?