• Please review our updated Terms and Rules here

Turbo XT Clone Keyboard Controller

cr1901

Veteran Member
Joined
Dec 28, 2011
Messages
817
Location
NJ
I'm on a roll tonight with posting tonight it appears...

I just bought a Turbo XT motherboard off Ebay and it arrived today. For the time being, I'm just using my XT case until I can get another floppy drive and case- hence my other floppy drive thread that went to hell. The system boots fine- it appears to be from some no-name manufacturer called "EXCEL TURBO Computers http://artofhacking.com/th99/m/U-Z/32845.htm"- unfortunately, it appears that the keyboard controller is either broken, damaged, or just not responding to my IBM PC (5150- not an XT) keyboard.

I saw on Wikipedia that the connections for a PC keyboard and an XT keyboard differ! Since this is a XT-class motherboard, with 8 slots and Turbo (I don't think I've ever attached a keyboard to my XT to check lol), is it possible I need an XT keyboard and not a PC keyboard? If that's not the case, how do you suggest I go about debugging the problem? I don't remember which IC's handle the keyboard on a 5150/5160, but since the controller is on the keyboard itself, I imagine it's a simple shift register on the motherboard itself.

It's also worth mentioning that there's NO 301 error on boot... I can't even verify if the BIOS does a self-test of memory (if it does, it's rather quick compared to an PC, XT, or even AT)!

Picture of the motherboard, for reference:
$T2eC16J,!)!E9s2fBWFYBQ7fzJCFJQ~~60_57.jpg
 
Last edited:
PC and XT keyboards are interchangeable. It is the AT keyboard that is different.

Some XT-class motherboards have the facilty to attach to a keyboard disable/enable switch. For example, when the motherboard detailed [here] is removed from its case (and therefore from its attached switch), the motherboard needs to have a jumper placed on JP8 to enable the keyboard.

Note that the motherboard information at artofhacking (and other sites) may be in error, or omit information.
 
No, the keyboard connections to a PC and XT are the same. There's a little confusion over the RESET pin, but most XT keyboards don't use it anyway.

The keyboard controller is usually a 74LS323 shift register coupled with the 8255 PPI--there's a bit of other SSI logic, but it rarely goes bad.

If this was a used motherboard, check the soldering and traces on the keyboard connector--quite often, users get too aggressive with it and break or dislodge traces or just loosen the connector. Other than that, you've got a pretty generic ERSO-type Turbo XT clone. The variations on this design are minor, but many, as the basic design (and BIOS) was a government (of Taiwan) funded project.
 
I checked the traces and the connector itself... everything appeared fine. So I gave the motherboard a cleaning and tried all the remaining jumpers. I also traced the keyboard data line with the continuity setting on my multimeter. After shorting out my XT's power supply three times (these things are tanks...), and having the motherboard not boot at all when the jumper shunt was in other positions (JP1 and JP6), I found the keylock pins. I had to jumper pins 3 and 4 of P7, and the keyboard now works! Interestingly enough, during one boot where I tried jumpering where the continuity meter was showing a direct connection (pins 2 and 3 of P7), the motherboard worked fine UNTIL I remembered to plug in the keyboard :p. Thank you for both your help :D!
 
The Clone Board bit the dust after I attempted to switch out the BIOS with the "Generic XT BIOS"... I dumped the BIOS (EXCEL TURBO v3.1) using my EPROM programmer and ran the BIOS image using PCem- only to discover that the physical board itself was skipping the RAM/HW check on each boot! At least it was kind enough to generate a PARITY 1 error for me for no reason :D. I actually saw the string "SPEEDY SYSTEM" in DEBUG while the board was still working, and I figured that I would only see such a string when Turbo was enabled (I had it disabled). Do boards of this era change the BIOS boot sequence depending on whether Turbo is enabled or not?

Running the BIOS in PCem and comparing it to the 1988 "Generic XT Bios" has got me wondering... These clone BIOSes used more or less the same code base, didn't they (ERSO)*? They show a list of hardware at the center of the screen, and then do a RAM check, incrementing RAM near the bottom of the screen. Not only that, but the general design of the motherboards are the same too... they have a large number of slots for ROM chips akin to an IBM PC, but have the 8-slots of an XT, as well as a turbo connector.

Not sure if that's a significant observation, but... is my observation more or less correct?

Oh and for whoever can answer this, how was turbo implemented in hardware? How could the BIOS/PC tell Turbo was enabled?

*EDIT: Comparing both the Generic XT BIOS and the EXCEL BIOS in a hex editor- there are WHOLE SECTIONS of code which are identical!
 
Last edited:
Yes, the ERSO BIOS (later became DTK) is pretty similar in most of these inexpensive clone boards. There's a bit that's used in the 8255 PPI that's coupled to select one or the other clock sources---note that the 8284 has an option to select either an external clock or use a crystal--so it's pretty much a no-brainer to implement. The status is usually available on an otherwise unused 8255 bit.

However, changing to turbo does not usually change anything else, including the boot sequence. The number of ROM slots varies from manufacturer to manufacturer as does the size of the ROMs used in each design. You can take a standard PC-XT ROM BASIC and program it into some extra ROMs and have a XT clone with IBM ROM BASIC installed.
 
There's a bit that's used in the 8255 PPI that's coupled to select one or the other clock sources---note that the 8284 has an option to select either an external clock or use a crystal--so it's pretty much a no-brainer to implement. The status is usually available on an otherwise unused 8255 bit.

Did you mean either an internal clock or use a crystal?

Is it possible to "talk" directly to the PPI from the CPU? From what I'm reading, it's not accessible directly from the I/O bus, according to the port map of the PC: http://stanislavs.org/helppc/ports.html. I can envision that it's possibly part of the bus logic to address peripherals (i.e. you send a Port Address/Data using IN and OUT instructions, and the board internally decodes it to the correct sequence of input bits to the 8255, and the 8255 does retrieves data).

Maybe I'm not visualizing this properly, but how can a single bit into the 8284 be bidirectional? Wouldn't the clock source select be a single INPUT bit on the 8284 (pin 13 or the frequency/crystal select bit)- which is OUTPUT from the PPI, and trying to read said bit would attempt to read the output of an input bit (which doesn't make much sense :p)? Secondly, the 8255 from my understanding isn't even a sequential circuit (save for the control register)- it just passes through data like a mux!

On an unrelated note, I find a bit surprising anyway that the 8255 doesn't even have a clock to maintain previous logic states on its outputs.
 
I think that you're trying to read too much into things. The 8284 has a clock select pin, where either the crystal or an external oscillator can be selected (pin 13, F/C*). This is one of the simple ways that turbo mode could be implemented. The PPI bit, to the best of my recollection is bit 2 addressed by port hex 61. So, basically, to toggle speeds with software you'd do the following:

Code:
      IN       AL,61h
      XOR    AL,4
      OUT    61h,AL

Let me go check this out... Works on my two clones, so it must be a convention of sorts. You can turn this into a TSR by sticking the following binary into a .COM file: E4 61 34 04 E6 61 CD 20

Give it a try and let me know.

Why would the 8255 need a clock? It's basically a set of latches and some decoding logic.
 
The Clone Board bit the dust after I attempted to switch out the BIOS with the "Generic XT BIOS"...
I'd love to try that code, if I could get the damn thing to work again :p. I reopened the thread after looking up a few web pages on the 8255 and seeing how people like playing with the chip/making their own interface cards. What exactly DOES the 8255 do in the turbo-circuit of this then?
 
The 8255 is inherited from the 5150 and controls a bunch of things on the motherboard. Some of the functionality has been retained right through the latest PCs, although it has been replaced with other circuitry. Port 60h is a port that contains the last keyboard scan code (on the AT and above, it's part of the keyboard controller; on the XT and PC, it connects to the output of a 74LS323 shift register).

Port 61h is sort of a catch-all output. Bit 0 controls gating the 8254 timer output to the speaker. Bit 1 controls the PC speaker, bit 2 on the 5150 switches between reading the SW2 bank or reading the keyboard scan code on port 60h. On the XT, the function of this bit is undefined (doesn't go anywhere), so it makes a handy output line to toggle the CPU speed. Bit 3 on the 5150 controls the cassette motor; on the 5160, it's undefined.

Port 62h is programmed as an output port.

On the PC and XT with a real 8255, port 63h is the control port.

For the remainder of the bits, consult the 5160/5150/5170 technical reference; there are slight variations between PC families.

Interestingly, from the 5150 BIOS listing, it's apparent that an 8255 was also intended as the printer interface. By the time the production units came out, that was replaced with some SSI TTL. My guess is that a naked 8255 made a lousy line driver for a printer cable.
 
We are gathered here today to pay our last tributes and respects to the memory of our departed friend, the Excel Speedy System Turbo XT Board. The Excel Speedy System Turbo XT Board, or Excel, was on life support after a botched BIOS transplant. Attempts to repair the board were promising, but Excel died in an electrical accident with an AT-power supply which caused an onboard 74S74 Dual D-type Flip Flop to smoke and catch fire, potentially burning some traces off in the process.

God knows what went exactly wrong, but the fact that the AT power supply wouldn't turn on at all initially (indicating the Power Good line was not logic high) should've been an hint that something was shorted/very wrong.

RIP EXCEL...

$T2eC16J,!)!E9s2fBWFYBQ7fzJCFJQ~~60_57.jpg

Would anyone like to add some final thoughts?

On that note, I was actually tracing the clock circuit recently... the input to F/C* comes from the output os another 74s74 (Q) on the motherboard (among a cascade of flip flops for delay (I suppose) which eventually leads to the F/C* input), but I find the inputs to the 74s74 itself a bit peculiar.

It appears that standard input to the 74s7 flip-flop (the D input) is a NAND gate with the following four inputs: DMA HOLD, 8088 S1, S0, and LOCK, but the preset and clear (which override the input value of D) actually choose the clock speed based on jumper settings OR software writing the appropriate bit to the 8255 (whether turbo is enabled using hardware or software is toggled by S2 of the settings switch, I believe). I suppose DMA transfers are designed to work with 4.77 MHz, and this makes sure that for DMA, the correct clock is chosen? Then why have anything attached to the preset and clear which could override the clock speed of the DMA transfer. Again, I haven't traced the entire circuit with the continuity setting multimeter, but that seems odd. I'll upload a drawing when I have finished tracing the board.
 
As soon as I can figure out how to export my damn schematic (Probably will need to either to install a virtual Postscript Printer o.0; or just take a picture using Snipping Tool), I'll upload version 1 of what I found using a multimeter. Honestly, I still don't know the purpose of changing CLK frequencies, but I imagine your idea is pretty close.

My circuit is wrong, as it stands... or at least incomplete... one of the flip-flops with clear/preset has an inverted output that feeds directly back into preset. That isn't indeterminate at all, right :p? Just like 1 1 on the input to a latch! (tempted to use 'XD' here, but since it was pointed out...)

Also... how the hell did you figure out that the 8255 PPI controls Turbo back when Turbo was still relevant?
 
Back
Top