• Please review our updated Terms and Rules here

Sergey's XT Project - Home-made IBM PC compatible system

sergey

Veteran Member
Joined
Jul 15, 2010
Messages
880
Location
Silicon Forest, Oregon, USA
Hi,

I am working on an IBM-compatible system. I've already built a prototype (see pictures here: http://picasaweb.google.com/skiselev/SergeySXT), and now I am working on refining schematics and designing a PCB for it.

The system is a hybrid, it is similar to IBM PC/XT, but has some IBM AT and PS/2 features.

Here are specifications:

Processor: 8088-compatible (tested with 8088, 80C88 and NEC V20), running on 4.77 MHz / 8 MHz / 10 MHz (turbo mode). The PCB version will feature an 8087 coprocessor (I didn't have a place for it on the prototype board).
Memory: 640 KiB + up to 192 KiB in UMB, implemented using two 512 KiB SRAM chips. 128 KiB Flash for BIOS.
Peripheral devices: two 8259 PICs (cascade configuration, like in AT), 8237 DMAC, 8254 PIT, 8042-compatible keyboard and PS/2 mouse controller, DS12C887 RTC.
Form factor: ISA card. This allows case form factor flexibility by using different backplanes.
BIOS: IBM compatible. So far I implemented most important BIOS functions, so it is possible to boot MS-DOS on it, and most programs that I've tested work. Few things are still missing, such as serial port and parallel printer support, and Int 10h implementation (I don't really need Int 10h right now since I am using VGA card with its own video BIOS).
Other: The system doesn't use any special or hard to find components (probably the most hard to find component is the 8042 keyboard controller, which is possible to pull from a 286-Pentium motherboard). It is implemented using discrete 74LS/ALS-series logic. The entire motherboard has 42 ICs.

More information and schematics is available on my web site: http://www.malinov.com/Home/sergeys-projects/sergey-s-xt

I would appreciate any feedback and suggestions regarding this project.
Also its interesting if anyone wants to build similar system or can help with software development.

Thanks,
Sergey
 
what kind of backplane board is that? and i noticed your running it off a 16-bit isa protoboard, will this thing have 16-bit capability? What of the external capability for floppy drives? I'd make it support everything from 160kb to 2.88mb, with the 80track 5.25 inch drives aswell, the ssqd 360kb and the dsqd 720kb varients
 
I am using a 16-bit ISA backplane (I think this type of backplanes is used in some industrial PCs).
The motherboard itself is 8-bit (it uses 8088 CPU), but it supplies following signals to AT (16-bit) extension:
- IRQ10-IRQ15 - some 8-bit cards, like modems or sound cards while being 8-bit allow using these interrupts
- LA17-LA23 (LA20-LA23 are simply connected to the ground) this makes my Cirrus Logic CL-GD5420 VGA card work. CL-GD542x chips support 8-bit interface, but they require unlatched address lines.
- MEMW/MEMR simply connected to corresponding MEMW/MEMR on 8-bit part.

During prototyping process I tried to implement 16-bit data bus extension using additional 74LS245 transceiver and some decoding logic on MEMCS16/IOCS16/A0 generating SBHE signal to simulate 8-bit reads using high (D15-D8) byte for odd addresses. It made my 16-bit Oak VGA card work, but broke Trident TVGA8900D, Trident TVGA9000 and Cirrus Logic CL-GD5420, so I decided against using it on the production board :)

Floppy support - Currently I am using Int 13h hander copied from a generic XT BIOS (http://www.programmersheaven.com/download/15869/0/ZipView.aspx), so it supports only floppies up to 720KB (either 3.5" or 5.25"). I am planing to rewrite Int 13h to support floppies up to 1.44MB. Unfortunately I don't have an 2.88MB floppy drives and can't test it. But I don't see any problems with supporting 2.88MB floppies (as long as FDC can support it). I will greatly appreciate any help with rewriting floppy support.

Thanks,
Sergey
 
That is some mad skills, i agree, but i'd like to see some support for the 5.25 720kb disk and the single sided 360kb 80 track version of the 5.25", and perhaps, in the future, integrating an xt-ide, but what you are doing is VERY impressive however. :D
 
I am already using XT-IDE board with my system, and it works perfectly. Initially I had a thought of integrating XT-IDE and a serial port to the system board, so it will be possible to use it as a single board computer (with a serial terminal). But it just increases complexity and reduces flexibility. It's possible to use systems flash chip for XT-IDE BIOS though. It will save you two ICs on XT-IDE (74LS688 and the EEPROM).

Support of various floppy formats is a software issue - BIOS needs to be updated to handle these formats. I just didn't have a lot of time to do it, and I wanted to focus on hardware first. IMHO 80-track 5.25" floppies (720 KB double side or 360KB single side) will work right away. 720 KB 3.5" and 720 KB 5.25" have exactly the same format...

Regards,
Sergey
 
this project is ridiculous! that's awesome. i'm building an 8088 system on a few breadboards, but wow....
 
Hi Sergey, nice project! Have you ever considered wire-wrap construction rather than point-to-point soldered joints?

Yes wire-wrap is more reliable, but wire-wrap sockets are significantly more expensive and harder to get. I think I am doing pretty good with point-to-point soldering, and it's only for prototype.
 
Yes wire-wrap is more reliable, but wire-wrap sockets are significantly more expensive and harder to get. I think I am doing pretty good with point-to-point soldering, and it's only for prototype.
My method of choice is a wiring pencil:
http://en.wikipedia.org/wiki/Wiring_pencil
Almost like drawing the schematic with wire instead of lines on paper, and then just touching each junction with a soldering pencil; sort of like wire-wrap, but cheaper and faster and no stripping required (of the wire ;-) ).
 
My method of choice is a wiring pencil:
http://en.wikipedia.org/wiki/Wiring_pencil
Almost like drawing the schematic with wire instead of lines on paper, and then just touching each junction with a soldering pencil; sort of like wire-wrap, but cheaper and faster and no stripping required (of the wire ;-) ).

I know some people like that, but what I like about wire-wrap is that it's easy to rework a design--just unwrap and start again. And wire-wrap is extremely reliable. Many vintage CPUs (e.g. 6809) were first prototyped in wire-wrap. I couldn't imagine working with ECL any other way (many designs use differential signalling, so you're always working with wire pairs).
 
Just one of those personal subjective things I guess; unsoldering the pencil wire's just as quick if not quicker than unwrapping, and it's probably just as reliable. I particularly like it when you're wiring a bus of some kind, e.g. a bank of memory chips; start at one end, loop around a pin, loop around the next, and the next, and you're done; no cutting, no stripping, just like drawing with a 'real' pencil.

One disadvantage is that it's a lot harder to trace a wire when they're that thin, all the same colour, and usually bunched together through the little plastic combs.
 
...my hands aren't as steady as yours. I tried the Vector wiring pencil thing back in the 80's and while it's okay for simple projects, by the time the wiring gets 2 or 3 layers deep, that soldering iron turns into a destructive device (just brush a wire or two with the tip).

I use pre-stripped wires of various colors, but also have a few spools for the times when I need a special length. With a good electric wrapping gun, it goes pretty fast.

I seem to remember that Vector had another alternative--"Slit 'n' Wrap"--a pencil that cut small slits in a special insulated wire (Tefzel insulation, maybe?) and you simply wrapped without stripping the wire--the pressure of the wrap pushed the wire into contact with the wrapping post. I never tried it, having reservations about (1) the cost of the single-sourced wire and (2) its reliability.

Of course, nowadays, it's easy enough to do your own PCB layout and many folks even do their own etching and drilling. If you're really flush, you can buy an LPFK desktop PCB milling machine that will do most of the work for you.

But for one-offs or "let's see how it works", I still like wire-wrap. Probably because I'm old. :)
 
sergey, i see this on your site



have you happened to have a look at this excellent open-source XT BIOS?

http://www.phatcode.net/downloads.php?id=101

it's great. i use it in my 8086 emulator.

I am actually using the floppy code from that BIOS (or from the original version of it)... see link in my second post. Unfortunately it's an XT BIOS, so much of AT or PS/2 functionality is missing: it supports only limited number of floppy disk formats, no AT keyboard and PS/2 mouse support, no RTC/CMOS functions.

Also I am not sure what licensing terms of that BIOS are. Apparently some guy disassembled BIOS from his Taiwanese motherboard, and some another guy modified it. And it could be OK to use it on your system as long as you don't distribute it, but I am afraid that AMI or IBM will be coming my way :)

My goal is to have entirely open source (GPL) BIOS implementation.
 
A 16-bit system using 8086 will be much more complicated than mine. It's not only about adding 8 more data lines, it also needs so called steering logic. This logic is required to interface 8-bit devices to a 16-bit system. Say if 8086 does a 16-bit I/O read from a 8-bit device, steering logic simulates two 8-bit I/O reads. Other than that it is much easier to get a 8088 or V20 than 8086.

Also for 16-bit system I would use 286 instead of 8086 :)
 
Neat project! I'm getting ready to assemble one of the N8VEM SBC-188 boards, which is of course based around the 80C188. The current BIOS will boot MS-DOS 5.0 from floppy of CF card, but it's using a serial port as the console, so I'd imagine anything that doesn't use BIOS calls for string input/output won't play very well with the board.

I seem to remember that Vector had another alternative--"Slit 'n' Wrap"--a pencil that cut small slits in a special insulated wire (Tefzel insulation, maybe?) and you simply wrapped without stripping the wire--the pressure of the wrap pushed the wire into contact with the wrapping post. I never tried it, having reservations about (1) the cost of the single-sourced wire and (2) its reliability.

I've got one of the Slit 'n Wrap devices...they do work just as you described, and when they work they're great. The rub is, you have to adjust the tension of the wire spool /very/ carefully...too much tension and it snaps the wire, too little and it doesn't slit the insulation. Fortunately, it'll work as a standard wire wrap gun too. I added a reverse switch to mine, as the stock unit doesn't come with one.

Wire wrapping FTW, though!
 
Back
Top