XTIDE project
From VCWiki
The XT-IDE project is a Vintage Computer forum driven project to develop and manufacturer an 8-bit ISA IDE controller. It allows any PC/XT class machine to use modern IDE hard drives or Compact Flash devices for long term storage.
The project is entirely open source, from the design, schematic, layout, bill of materials, BIOS, drivers and any utilities created.
This page will provide links to all the resources utilized in the project.
Test results can be found here: XTIDE_TestResults
Assembly instructions can be found here: XTIDE_build_instructions
Contents |
Downloads
BIOS
Latest version of Aitotat's BIOS+configuration and flash utility, with source code: XTIDE Universal BIOS
XT-IDE Universal BIOS discussion
Latest version of Hargle's BIOS: Version 0.11. Last updated on the 12th of October 2009. (abandoned)
Utilities for Hargle's BIOS (SetCard, Flasher, Setup and FindCard): XtIdeUtl.zip. Last updated on the 22th of October 2009.
PCB/Schematic
The XT IDE schematic and PCB layout for KiCAD may be found on the N8VEM wiki in the XT-IDE and KiCAD folders.
Debugging utilities
- HellTest data verification program xt_hell.zip Documentation XTIDE_HellTest - only works on Hargle's earlier BIOS, no eINT13 support in aitotit's BIOS.
- INT 13 Monitor debugger.zip A monotor program for manually calling most Int 13h function with the registers/buffer set to whatever you'd like
- IDentify Device utility id_dump.zip Displays ID data to the screen
- INT 13 Display test int13test.zip Dumps INT 13 Fn 8 and 48 data to the screen - only works on Hargle's earlier BIOS, no eINT13 support in aitotit's BIOS.
Current status
aug 4th, 2010 sold out at the moment, but we are collecting pre-orders for a bulk run of ten cards. pm hargle on the VC forum, or email jeff at silent dot net to place your pre-order.
Sorry that the rest of this document is a little out of date there's lots to do, and not many people doing them. (hint, this is a wiki!)
Current To Do List
Please use the debug log to track todo items.
PCB Design Revisions
Prototype:
- Original design
- Added a Rom Enabled jumper
Revision 1:
These items have been implemented in the new design
- Added a header for an external hard-drive LED
- Added a write protect jumper
- Added an Int Select jumper allowing for it to be set to 2, 3, 4, 5 or 7
- Added a CSEL 3 position jumper.
- Shifted all the components over to make a 1/2" dead area on the left hand side of the card, and added a small skirt. This will allow for attachment of a wide variety of mounting brackets.
- Removed some unused gold teeth on the ISA connector.
- Added Silk screening on the back of the card to outline the dip settings and usage.
- Scale down the IO and ROM Memory range settings to 4 places instead of 8 (16 possibilities each)
Revision 2
(work in progress-no timeline for completion)
This revision is still in the base stages and this is merely a place to list suggested changes.
- Adding DMA support, or
- Switching to memory mapped IO, which would allow for 16bit data transfers on the system bus.
- Replace the DIP switches with jumpers
- Add power header onto the card for the PS/2 Mod. 25 & 30 folk
Supported hardware
Supported Systems
The card works in just about any PC and compatible system that has an open 8 or 16 bit ISA slot. The card has been tested and is known to work on IBM PC/XT, XT clones and Tandy 1000 series of computers including the HX. There are no known compatibility issues on any reasonably IBM compatible architecture.
PATA Hard Drive Support
The hard drive support depends on what BIOS is being used. Hargle's BIOS has eINT 13 support, but is limited to Logical Block Addressing (LBA). This allows for drives of up to 137gb to be connected to the system.
ATAPI Support
ATAPI/CD-ROM support is in progress. No ETA.
Hardware Settings
SW1 Settings
| 1234 | I/O address | 5678 | BIOS memory address |
| 1111 | 200h - 20Fh | 1111 | C0000 - C1FFF |
| 1110 | 220h - 22Fh | 1110 | C4000 - C5FFF |
| 1101 | 240h - 24Fh | 1101 | C8000 - C9FFF |
| 1100 | 260h - 26Fh | 1100 | CC000 - CDFFF |
| 1011 | 280h - 28Fh | 1011 | D0000 - D1FFF (Default) |
| 1010 | 2A0h - 2AFh | 1010 | D4000 - D5FFF |
| 1001 | 2C0h - 2CFh | 1001 | D8000 - D9FFF |
| 1000 | 2E0h - 2EFh | 1000 | DC000 - DDFFF |
| 0111 | 300h - 30Fh (Default), warning: also common default for ethernet cards | 0111 | E0000 - E1FFF |
| 0110 | 320h - 32Fh | 0110 | E4000 - E5FFF |
| 0101 | 340h - 34Fh | 0101 | E8000 - E9FFF |
| 0100 | 360h - 36Fh | 0100 | EC000 - EDFFF |
| 0011 | 380h - 38Fh | 0011 | F0000 - F1FFF |
| 0010 | 3A0h - 3AFh | 0010 | F4000 - F5FFF |
| 0001 | 3C0h - 3CFh | 0001 | F8000 - F9FFF |
| 0000 | 3E0h - 3EFh | 0000 | FC000 - FDFFF |
| 0 Represents an Off position and 1 represents an On position. | |||
| Warning: after changing I/O address range it's necessary to re-flash the BIOS | |||
JP Settings
| JP1 | On | (Default) Enables the onboard ROM | Off | Disables the onboard ROM |
| JP2 | On | (Default) Enables the writing to the ROM | Off | Disables writing to the ROM, not necessary with EEPROMs supporting Software Data Protection, eg. AT28C64B |
K1 Settings
| L | (Default) Sets CSEL to Ground | H | Sets CSEL to VCC |
IRQ Select Settings
Not fully implemented in software yet, however a jumper is present for this setting on the board.
Bill of Materials
Here's the current list of parts required for creating your own XT-IDE controller card.
Parts sourced from Jameco Electronics
Others, such as mouser.com can also supply parts.
Qty Jameco # Item 1 XT-IDE PCB (get this from andrew lynch) 10 25523 CAP,MONO,.1uF,50V,20% 1 1945428 CAP,RADIAL,47uF,35V 2 45129 IC,74HCT688 1 46316 IC,74LS04 1 46607 IC,74LS138 1 47466 IC,74LS32 1 287144 IC,74F245,DIP-20 3 287195 IC,74F573,DIP-20 (part code discontinued, use 282642) 1 74827 Atmel EEPROM IC, 28C64 (get it from mouser, or CALL jameco to verify they will supply atmel, not SEEQ eeproms!) 2 112214 SOCKET,IC,14PIN,DUAL WIPE 6 112248 SOCKET,IC,DUAL WIPE,20PIN 1 112272 SOCKET,IC,DUAL WIPE,28PIN 1 526205 SOCKET,IC,16 PIN,390261-4 3 112432 SOCKET,SHORTNG BLKS,RED,CLSE (jumpers) 1 690662 RES,CF,150 OHM,1/4 WATT,5% 6 691104 RES,CF,10K OHM,1/4 WATT,5% 2 857080 MOLDED SIP,9PIN,BUSSED,10K,2% 1 333949 LED,GREEN,572NM,T-1 3/4 1 1939562 SWITCH,DIP,SPST,8-POS,16-PIN 1 53604 HEADER,RT MALE,2RW,40 CONT 1 109568 HEADER,.1 ST MALE,2RW,16PIN (break off 1 row for use on external LED) 1 109576 HEADER,.1 ST MALE,1RW,3PIN 2 2094389 SCREW,PAN HEAD,PPN4-40X1/4 (only available in bags of 100-steal some from another ISA card) 1 Keystone 9202 ISA bracket with 2 PCB mounting tabs. Link to source anyone?
In the UK, parts can be sourced from Farnell (http://uk.farnell.com). Note however that their DIL sockets are extremely expensive, but can be sourced elsewhere cheaply (i.e. eBay). The below parts list will cost around £15.
Qty Req'd Min Order Farnell # Item 10 5 1469310 CAPACITOR, 100NF, 50V; Dielectric Charac 1 5 1144626 CAPACITOR, 47UF, 35V; Capacitor Dielectr 3 1 1013901 74F FAST TTL, 74F573, DIP20, 5.5V; Logic 1 1 1013896 74F FAST TTL, 74F245, DIP20, 5.5V; No. o 1 1 1740030 LOGIC, QUAD 2-INPUT OR GATE, 14DIP; No. 1 1 1739824 LOGIC, 3-8 LINE DECODER/DEMUX, 16DIP; No 1 1 1106072 74LS, 74LS04, DIP14, 5.25V; Logic IC Cas 2 1 382504 74HCT CMOS, 74HCT688, DIP20, 5V; Compara 1 1 1390720 EEPROM PARALLEL 64K, DIP28; Memory Confi 3 10 1740370 JUMPER, WHITE, GOLD, 2WAY; Connector Typ 1 50 9339175 RESISTOR, 0.25W 5% 150R; Resistance:150o 6 50 9339060 RESISTOR, 0.25W 5% 10K; Resistance:10koh 2 1 1612533 RESISTOR NETWORK, 10KR; Resistance:10koh 1 5 1581182 LED, 5MM, 16°, SUPER-GREEN; LED Type:Sta 1 1 9479180 ROCKER SWITCH, DIL, 8WAY; Switch Type:DI 1 1 3418546 HEADER, 2ROW, 16WAY; Connector Type:Wire 1 1 8395977 HEADER, BOX, STRAIGHT, 40WAY; Connector 1 1 3417657 HEADER, 1ROW, 3WAY; Connector Type:Wire-
INT 13 Reference
INT 13 programming interface. Details for each command can be found on Ralf Brown's Interrupt List
INT 13 Supported Functions
| AH = 00h | Reset Disk Drives | No actual ATA command sent to drive, always returns success (see 0dh) |
| AH = 01h | Check Drive Status | returns status of last operation |
| AH = 02h | Read Sectors From Drive | |
| AH = 03h | Write Sectors To Drive | |
| AH = 04h | Verify Sectors | |
| AH = 08h | Get Drive Parameters | |
| AH = 09h | Initialize Disk Controller | Not Required. Already done by controller, returns success |
| AH = 0Ch | Move Drive Head To Cylinder | No actual ATA command sent to drive, always returns success |
| AH = 0Dh | Reset Disk Drives | No means of actually resetting an ATA drive with this controller |
| AH = 15h | Read Drive Type | |
| AH = 19h | Park Heads | Parking is done by the drive automatically |
INT 13 Unsupported Functions
These function calls return status in AH=01 and CY flag is set, signaling that the routine is unsupported by XT-IDE BIOS.
| AH = 05h | format track(s) | not used on IDE devices |
| AH = 06h | format track(s) & set bad sector map | not used on IDE devices |
| AH = 07h | format drive starting at track | not used on IDE devices |
| AH = 0Ah | read long | read and return CRC data. Does anyone use this? |
| AH = 0Bh | write long | write with CRC data. Does anyone use this? |
| AH = 0Eh | read sector buffer (XT only) | no idea what this is supposed to do |
| AH = 0Fh | write sector buffer (XT only) | no idea what this is supposed to do |
| AH = 10h | check if drive ready | maybe this should be supported? Never seen it used |
| AH = 11h | recalibrate drive | not used on IDE devices |
| AH = 12h | controller RAM diagnostics | not used on IDE devices |
| AH = 13h | Drive Diagnostics | not used on IDE devices |
| AH = 14h | perform internal diagnostics | not used on IDE devices |
| AH = 16h | floppy only | |
| AH = 17h | set format type (floppy) | |
| AH = 18h | set format type (HDD) | not used on IDE devices |
| AH = 1Ah | ESDI, unused | |
| AH = 1Bh | ESDI, unused | |
| AH = 1Ch | ESDI, unused | |
| AH = 1Dh | IBM Cache, unused | |
| AH = 1Eh | unused | |
| AH = 1Fh | Syquest, unused | |
| AH = 20h | unused | |
| AH = 26-40 | unused |
INT 13 Future Supported Functions
These function calls currently return status in AH=01 and CY flag is set, signaling that the routine is unsupported by XT-IDE BIOS. Support for these functions may or may not be forthcoming, depending on user requirements
| AH = 21h | read multiple |
| AH = 22h | write multiple |
| AH = 23h | set features |
| AH = 24h | set multiple mode |
| AH = 25h | get drive ID data |
Enhanced INT 13 Supported Functions
These function calls are used only by operating systems that have Enhanced INT 13 support, such as FreeDOS, MS-DOS 7 (DOS that comes with MS Windows 95 and higher). EINT13 calls allow for drives up to over 2TB in size.
| AH = 41h | check extensions present | |
| AH = 42h | read sectors | |
| AH = 43h | write sectors | |
| AH = 44h | verify sectors | |
| AH = 47h | Extended seek | No actual ATA command sent to drive, always returns success |
| AH = 48h | get drive parameters |
Enhanced INT 13 Unsupported Functions
These function calls return status in AH=01 and CY flag is set, signaling that the routine is unsupported by XT-IDE BIOS.
| AH = 45h | lock/unlock drive | no removable drive support |
| AH = 46h | eject drive | no removable drive support |
| AH = 49h | removable media eject | no removable drive support |
| AH = 4ah-4d | reserved | |
| AH = 4eh | set hardware configuration | No need to change PIO modes |
