• Please review our updated Terms and Rules here

ISA 8-bt SCSI project interest?

Hi Andrew,

I was thinking about a 68-pin QFP for the uC--it's not hard to solder the coarse pitch devices and it means fewer holes to drill. I don't know if any of the 8051-family controllers are available in 68 or 84-pin PLCC, but that might be another option and they're almost certainly fast enough. RAM isn't an issue, as most early SCSI controllers had very little (256 bytes or less).

Raven,

The 50-pin Amphenol "blue ribbon" connectors are a nightmare for ISA cards. The connector body is very wide in comparison with the width of the bracket, so horizontal positioning above the PCB is a real issue--and then there is the problem of the bail clips getting stuck in the case slot (it happened a lot). I'd much rather use either the standard 50-conductor SCSI HD connector or a DB-25 (Apple and others used this quite often; it's more than adequate for SCSI-I, is cheap, widely available and very robust.
 
Well, the thought was to make an SD-card interface adapter for the 8 bit ISA bus, but that leaves a bunch of extra processing power doing nothing. USB host interface (UHCI) is a nightmare if you expect it to be absolutely general (i.e. be able to plug hubs, keyboards, scanners, hard disks, etc. into it). While you might succeed in making a host just to support a USB flash drive, I'd much rather have the SD card.

We've already got IDE, so that leaves SCSI.

Just looking for some ideas...

I also don't have much use for SCSI, but the idea of a ISA USB Mass Storage card for an XT (or any DOS) machine is intriguing, and strikes me as very useful and convenient.

So why not an ISA card with a USB port for mass storage support only (not general USB). This would open up quite a few options for storage including external hard drives, USB thumb drives, card readers etc; anything that is in the USB Mass Storage device class really. They would all be easily removed and plugged into another (modern) machine.

You could also build in some sort of floppy disk emulation for memory cards as well, that would make it even more useful.

EDIT:

According to Wikipedia, the USB Mass Storage Device class includes:

That is a very nice list of usable and cheaply available storage for your XT or even AT DOS machines :D
 
Last edited:
Hi Chuck,

I count 30-31 minimum GPIO pins for a uC solution. Sure a 64 QFP would work but probably a 40 pin PIC or AVR plus some TTL glue logic for a SCSI-1 only option.

I agree with you on the connector assessment. Definitely the 50 pin dual row header for internal SCSI drives and DB-25 for external. Much easier to work with and I am fairly sure the footprints exist in the EDA libraries. I suspect the big 50 external connector would require a tricky custom footprint.

Still the hard part, as with any project, is the PM and SW development. I suspect if we needed hardware we could whip up a hardware prototype in week or two by basically marrying up an AVR/PIC (QFP or DIP) to the XT-IDE board frame work and scooping out the IDE guts. Send off to a prototype fab house and presto you've got boards. Hardware -> easy, PM and SW -> much harder.

Thanks and have a nice day!

Andrew Lynch
 
Hi Andrew,

A 40 pin DIP might be possible, but I'll have to check that one out. But there are other alternatives that give a bit more breathing room. The Atmel AT89C51ED2, for example, can be had in a 68 pin PLCC, so you get through-hole and 48 I/Os--and it's 5V and up to 60MHz clock. DigiKey lists it for $11 Q1. So that may be an option.

Lutiana,

Writing the USB stack for all of the various storage devices is a little more than I want to bite off. And sure as tomorrow, someone will want support for floppy drives and 2TB hard drives too...

If you really want USB support for flash drives, you're best bet is the Vinculum VDRIVE2 All you need is a level-shifter, such as a MAX232 to get to RS232 signal levels. About $25 in single quantities. I don't know what the extent of the device support past USB flash is, however.
 
Writing the USB stack for all of the various storage devices is a little more than I want to bite off. And sure as tomorrow, someone will want support for floppy drives and 2TB hard drives too...

Ahh, well I was making the suggestion from the stand point of one who has no idea what would be involved with its construction.

FWIW I was more envisioning something with a BIOS that handles all the IO to the storage medium and simply shows up as a drive letter in the OS (no driver needed). The beauty of a home brew thing like this is you can specify the limitations, and if someone else wants something that goes beyond it, they can modify it themselves. I would have suggested limiting it to just a few type of mass storage devices and sizes to keep it simple, but expandable if needed.
 
FWIW I was more envisioning something with a BIOS that handles all the IO to the storage medium and simply shows up as a drive letter in the OS (no driver needed). The beauty of a home brew thing like this is you can specify the limitations, and if someone else wants something that goes beyond it, they can modify it themselves. I would have suggested limiting it to just a few type of mass storage devices and sizes to keep it simple, but expandable if needed.

Then the Vinculum DRIVE2 is definitely what you want--it handles the filesystem (FATx) management; you just shoot it commands and data.

As far as "modifying it for themselvs", that seems not to be the rule here. I released the code for the AT-XT keyboard converter; but no one wants to tackle the questionably-useful XT-AT variant, even though the board's done and most of what you need (e.g. how to send data out a PS/2 keyboard port) is already coded. Everyone seems to be waiting for me to do the work, even though I have no use for such a gizmo (I like my PS/2 model Ms, thank you).
 
Hi Andrew,

A 40 pin DIP might be possible, but I'll have to check that one out. But there are other alternatives that give a bit more breathing room. The Atmel AT89C51ED2, for example, can be had in a 68 pin PLCC, so you get through-hole and 48 I/Os--and it's 5V and up to 60MHz clock. DigiKey lists it for $11 Q1. So that may be an option.

Hi Chuck! Definitely, that sounds like a winner! Plenty of GPIO, fast, cheap, and through-hole construction. Very nice indeed.

In my mind, I picture this design to be a card much like the XT-IDE. Keep the BIOS circuit, bus transceiver/buffers, and IO decoder basically intact. The uC drives the SCSI interface with OC inverters (74LS06) driving the outputs and inverters (74LS14) on the inputs. Feed the IO decode /CS, D0-8, /IORD, A0-1, to the uC to tie it to the ISA bus with a couple of buffers in between (74LS244s).

Is that what you are thinking? It certainly sounds possible to me. Again, the hard part is the PM and SW especially on the uC side. We have some code for the Propeller to make it act like an IO device on the Z80 bus. That might be semi-helpful but given the differences with the AT89C51 it is probably closer to total rework.

Unless I am missing something, I am estimating ~16 GPIO left over. Since the AT89C51 has its own internal Flash there wouldn't be any need for uC external memory. However, you'd probably want some form of in circuit reprogramming for updates.

If this is consistent with your ideas, I can make a schematic as a starting point so we can discuss further. It'll have to wait a few days until we get some S-100 SMB prototype and the S-100 IDE board issues fixed though.

Just my $0.02. Thanks and have a nice day!

Andrew Lynch
 
Last edited:
I have no need for SCSI controller but a multi purpose card with programmable micro controller would be really nice.

Here are some ideas how the micro controller could be used:
  • Midi controller. It is really hard to find a MPU-401 controller with intelligent mode support. I haven't done any research but i think the hardware interface is simple so the intelligent mode features could be done in software.
  • DMA controller. Memory to memory transfers or maybe it could transfer data between XTIDE and memory. It should speed up transfer rates since using two 8-bit ports is slow with CPU (the micro controller would need to be faster than the CPU).
  • EMS card or maybe as a disk cache so smartdrive would not be needed.

I think the (SCSI) card should be designed as a 16-bit ISA card that would also work on a 8-bit slot. Anyway, please use at least 16 kiB EEPROM. Or two or more (some optional) 8 kiB EEPROMs.

8 kiB is too small for XTIDE since i have lots of ideas that just won't fit there:
  • HD floppy support
  • RTC support for XTs so no software would be needed
  • Support for different keyboard layouts (would save memory since keyb.com would no longer be needed)
  • Build-in EEPROM flasher
  • Simple hard disk utilities (diagnostics, partition, etc)
 
There are other ways to speed up data transfer from the XTIDE, but they would require a redesign; you'd probably want to take that up with Hargle. As far as MIDI, consider that you can take a plain old IBM serial card with current-loop interface and change the crystal to get the same thing. Before MIDI cards became widely available for the PC XT, this was a common dodge.

Andrew, I'm not even to the back-of-the-envelope stage, but I think there's definitely something to work with here.
 
Don't mean to rain on your parade, but SCSI is tough. Your output buffer need to be able to drive a 5 MHz bus through a maximum of 6 meter long cable (which are typically unshielded ribbon cables) to meet spec for SCSI 1, 3 meters for fast SCSI. Don't get me wrong, it can be done. I just don't think it's as simple as you're thinking of.
 
I also don't have much use for SCSI, but the idea of a ISA USB Mass Storage card for an XT (or any DOS) machine is intriguing, and strikes me as very useful and convenient.

So why not an ISA card with a USB port for mass storage support only (not general USB). This would open up quite a few options for storage including external hard drives, USB thumb drives, card readers etc; anything that is in the USB Mass Storage device class really. They would all be easily removed and plugged into another (modern) machine.

You could also build in some sort of floppy disk emulation for memory cards as well, that would make it even more useful.

EDIT:

According to Wikipedia, the USB Mass Storage Device class includes:

That is a very nice list of usable and cheaply available storage for your XT or even AT DOS machines :D

I am so on board with this idea.. While we're throwing out ideas, let's make it have an internal USB port and an external USB port(s) and make it bootable, so you can replace the HDD with a USB device like a jump drive internally. :D
 
Don't mean to rain on your parade, but SCSI is tough. Your output buffer need to be able to drive a 5 MHz bus through a maximum of 6 meter long cable (which are typically unshielded ribbon cables) to meet spec for SCSI 1, 3 meters for fast SCSI. Don't get me wrong, it can be done. I just don't think it's as simple as you're thinking of.

Transceivers are typically 7438-type sinking 48 ma. But it's been done with less. Consider the ST01 or T130B--no external drivers at all, just the on-chip open-drain ones on the 53C400 or its TI clone. Hell, the ST01 doesn't even have terminators on-board. No more or less difficult than doing a lot of other protocols, including MFM.

Here's a sample of something similar done with AVR micros

For my reference, I'm using the NCR "5380 SCSI Interface Chip Design Manual". The 5380 was a SCSI-1 stalwart chip used in many designs.
 
Last edited:
Oh I see - I had assumed that it was a "dumb" device, not having interfacing logic, which would make things much harder. That would allow you to write a program to push and pull files to/from a flash drive, but it wouldn't allow it to show up as a natural drive letter in DOS - or am I wrong?
 
Oh I see - I had assumed that it was a "dumb" device, not having interfacing logic, which would make things much harder. That would allow you to write a program to push and pull files to/from a flash drive, but it wouldn't allow it to show up as a natural drive letter in DOS - or am I wrong?

As long as you didn't need to boot from it, you could always implement it as a network redirector in DOS. Musch easier than a device driver.
 
As long as you didn't need to boot from it, you could always implement it as a network redirector in DOS. Musch easier than a device driver.

Ahh, well my USB Storage idea was to have a completely bootable DOS volume on a USB mass storage device, which is easy to swap out. But the more I think about the more I think it may not be all that great, or at least worth the trouble to make it.
 
Hi! USB on an ISA card is possible. As Chuck said, the Vinculum parts would work on a card like the XT-IDE as would a lesser capable but still USB 1.1 AVR USB

http://www.obdev.at/products/vusb/index.html

However, the tough part remains the PM and SW effort needed to make something happen. I think the hardware is the easy part. With my backlog of other projects there is no way I am taking on the SW for this so we'll need some motivated talent. We'd also need a hardware prototype to get started developing the software. The downside of the Vinculum is the parts are not cheap!

The design could be implemented in many ways. Either write specific uC code to access the device by an IO port directly or by some interface logic. The Vinculum supports SPI "out of the box" so it might be easier to use 8 bit IO input and an output ports to control the device. Possibly use an 8255 to do the same thing. Just as starting point, I'd consider something like this just because I like 8255s although simplified further.

http://engr.nmsu.edu/~etti/4_1/4_1s.html

I used something akin to this method to control the DS1307 RTC on the N8VEM SBC. It is an IO decoder with 74LS574 8 bit latch for output and a 74LS125 for input IIRC. The circuitry is pretty simple. I'll be glad to help with the PCB if the project gets rolling. It isn't going to happen by itself though so feel free to jump in.

Thanks and have a nice day!

Andrew Lynch

PS, for prototypes there are many ways to go. IMO, the two most practical methods are wire wrap using the Jameco ISA prototype board or just going straight to a prototype PCB using a "barebones" or "33each" prototype PCB. Given the time constraints the prototype PCBs are most appealing to me. Getting a batch of "33each" PCBs costs about $150 and saves a lot of time especially for relatively low risk prototypes. There would be enough boards for 4 SW developers and me (HW verify). With shipping that'd be about $40 per unit plus parts costs.
 
Last edited:
Back
Top