XTIDE project

From VCWiki

Jump to: navigation, search

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.

Technical support thread

Main project thread (huge!)

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:

PCB Prototype
  • Original design
  • Added a Rom Enabled jumper

Revision 1:

Rev 01 PCB

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
Personal tools