TeleVideo Model TS-802

User avatar
snacksthecat
✶✶✶✶

02 Jun 2018, 18:11

Hi Guys,
Got this new mysterious terminal keyboard. The style of it caught my eye and I thought it would make a fun project to see if I can get it to work on a modern PC. I haven't played with it yet but here are some photos to start with! Hopefully I'll have some time this weekend to dig into it and see what's up.

Image

The connector is a 4P4C phone thingy so I picked up a compatible breakout board to test it out.
Image

Here's some photos of the inside...
Image

Image

Image

Woah what is this? (that's not my hand btw)
Image

This thing has a big ass speaker! (now that's my hand)
Image

Some shots of the switches. Not sure what they are but I've also done zero research.
Image

Image

Some shots of the caps
Image
Image

Image
Image

At first I thought they might be MX compatible but alas the stems are too fat.

They do, however, fit on Alps SKCC tall creams.
Image

Thanks for reading. Stay tuned :D

User avatar
snacksthecat
✶✶✶✶

02 Jun 2018, 21:18

To no surprise it wants more than 5V

When hooked up to 5V it gets regulated down too low
Image

When hooked up to 12V it gets regulated down right to 5
Image

User avatar
Polecat

02 Jun 2018, 21:41

snacksthecat wrote: Hi Guys,
Got this new mysterious terminal keyboard. The style of it caught my eye and I thought it would make a fun project to see if I can get it to work on a modern PC. I haven't played with it yet but here are some photos to start with! Hopefully I'll have some time this weekend to dig into it and see what's up.

Some shots of the switches. Not sure what they are but I've also done zero research.

Thanks for reading. Stay tuned :D
Nice find. Actually it's not a terminal board. The TS-802 was a Z80 CP/M computer that, unlike most CP/M systems, did not use a terminal, but instead had onboard video and keyboard interfaces. Televideo was building 8088 DOS computers at the same time (TS-1605), and those shared keyboards, with XT scan codes (other than the keys that were specific to the Televideo). There were several PC versions, including portable/luggable models (TPC I and TPC II) with keyboards that snapped into the front of the case. If you bypass the internal voltage regulator and make an adapter for the connector it *should* work with a Soarers converter. I played with the Televideo keyboards probably 30 years ago, and was building inline adapters to use generic XT keyboards on the Televideo PCs and vice versa. I posted that info here some time ago, but never followed up because I still haven't found one of my old adapters or had time to build a new one to try with a Soarers. I have a NIB model 1605 keyboard here, which is the big footprint version that looks like a wedge, and also a NIB TPC II, the portable version.

Oh, those switches are Futaba MD series.

edit: I see you've already figured out the internal reg. :D

User avatar
Polecat

02 Jun 2018, 21:50

Polecat wrote:
snacksthecat wrote: Hi Guys,
Got this new mysterious terminal keyboard. The style of it caught my eye and I thought it would make a fun project to see if I can get it to work on a modern PC. I haven't played with it yet but here are some photos to start with! Hopefully I'll have some time this weekend to dig into it and see what's up.

Some shots of the switches. Not sure what they are but I've also done zero research.

Thanks for reading. Stay tuned :D
Nice find. Actually it's not a terminal board. The TS-802 was a Z80 CP/M computer that, unlike most CP/M systems, did not use a terminal, but instead had onboard video and keyboard interfaces. Televideo was building 8088 DOS computers at the same time (TS-1605), and those shared keyboards, with XT scan codes (other than the keys that were specific to the Televideo). There were several PC versions, including portable/luggable models (TPC I and TPC II) with keyboards that snapped into the front of the case. If you bypass the internal voltage regulator and make an adapter for the connector it *should* work with a Soarers converter. I played with the Televideo keyboards probably 30 years ago, and was building inline adapters to use generic XT keyboards on the Televideo PCs and vice versa. I posted that info here some time ago, but never followed up because I still haven't found one of my old adapters or had time to build a new one to try with a Soarers. I have a NIB model 1605 keyboard here, which is the big footprint version that looks like a wedge, and also a NIB TPC II, the portable version.

Oh, those switches are Futaba MD series.

edit: I see you've already figured out the internal reg. :D
edit again: here's the previous info if that helps:

workshop-f7/televideo-pc-keyboard-pinou ... 05#p390256

Looks like the 802 has a smaller modular plug, but is probably compatible otherwise.

User avatar
snacksthecat
✶✶✶✶

02 Jun 2018, 23:04

Ooooh very cool! I'm not sure if it will work with a Soarer's because I don't think there's a clock. One line is giving the XT scancodes like you mentioned, the other gives these little blips (but only sometimes). I don't know much about this stuff so I'm not sure what this might mean.

Image

User avatar
Polecat

03 Jun 2018, 07:17

snacksthecat wrote: Ooooh very cool! I'm not sure if it will work with a Soarer's because I don't think there's a clock. One line is giving the XT scancodes like you mentioned, the other gives these little blips (but only sometimes). I don't know much about this stuff so I'm not sure what this might mean.

Image
The non-scancode line is probably the clock input from the computer. Should be the same as XT, or at least the 803, 1605, TPC I, and TPC II were. The 802 keyboard actually looks like the one from a Televideo 925 or 950 terminal, and it's possible it's compatible with those rather than the Televideo PC keyboards. Can't believe I even remember thirty years ago, much less what I was messing with back then.

User avatar
snacksthecat
✶✶✶✶

24 Jun 2018, 23:42

Finally got a bit of time and I thought I'd revisit this guy. I'm working on an arduino sketch to convert it to USB. I could just map out all of the different bytes I'm reading to keystrokes but I figured it would be better to ask first and hopefully save some time. Any idea if this is a familiar protocol?

When I press the function keys, I get two bytes; "255" followed by the function number I'm pressing (e.g. "255, 10" for F10)

Does that ring any bells?

User avatar
Sangdrax

25 Jun 2018, 01:56

Can you walk through the process of hooking up and reading your logic analyzer? You just flashed something on a standard microcontroller? You taking snapshots and analyzing output or doing something realtime? It's just not something I'm very familiar with. I tend to bruteforce these kind of problems, but with Magvalves and Hall Effect, that's a no go so I'm trying to work my head around it.

User avatar
snacksthecat
✶✶✶✶

21 Jul 2018, 04:58

So I came into another TeleVideo keyboard and spent some timetoday trying to learn more about the signalling. I'll do my best to summarize what I've learned so far.

ASCII
So far it seems like the keyboard outputs ASCII codes for each exact character (e.g. 'a' vs 'A'). The signalling is 9600 baud, 8 bit, 1 stop bit, no parity bit.

Held keys
When you press a key, the keyboard outputs two bytes; first 0x00 then the ascii code of the character pressed. If a key is held, the keyboard will repeatedly send the ascii code ~110ms apart. But inbetween the repeated messages is an additional byte. Instead of the normal 0x00, it sends 0x01 for these held characters.

Modifiers
Modifiers seem to send make and break codes. For example, shift sends 0xC4 for make and 0xC5 for break. These keys also do not do the normal held behavior explained above.

User avatar
snacksthecat
✶✶✶✶

22 Jul 2018, 18:17

I'm trying to write a simple arduino sketch but I'm not sure how to approach it. What I'd like to detect is when a key is pressed vs when a key is held.

Here's the behavior of the keyboard:
When you press a key on the keyboard, the keyboard sends 0x00 followed by the ascii value of the character. If the key is held, the keyboard will wait ~500ms then send 0x01 followed by the ascii value of the character. Then for the duration that the key is held, it will continue to send 0x01 followed by the ascii value of the character at ~60ms intervals.

So pressing a key ('g') would look like this
0x00 0x67

And holding a key ('g') would look like this
0x00 0x67 0x01 0x67 0x01 0x67 0x01 0x67 0x01 0x67 0x01 0x67 0x01 0x67

Using this information, how would I determine when a key is pressed and released?

Thanks!

User avatar
TheInverseKey

22 Jul 2018, 23:08

snacksthecat wrote: I'm trying to write a simple arduino sketch but I'm not sure how to approach it. What I'd like to detect is when a key is pressed vs when a key is held.

Here's the behavior of the keyboard:
When you press a key on the keyboard, the keyboard sends 0x00 followed by the ascii value of the character. If the key is held, the keyboard will wait ~500ms then send 0x01 followed by the ascii value of the character. Then for the duration that the key is held, it will continue to send 0x01 followed by the ascii value of the character at ~60ms intervals.

So pressing a key ('g') would look like this
0x00 0x67

And holding a key ('g') would look like this
0x00 0x67 0x01 0x67 0x01 0x67 0x01 0x67 0x01 0x67 0x01 0x67 0x01 0x67

Using this information, how would I determine when a key is pressed and released?

Thanks!
From my understanding the code 0x00 would be the initial press of the key.

Where as when a key is held down you see that both that they key was pressed with code 0x00 and that it is still being held down then it uses the code 0x01.

User avatar
TheInverseKey

22 Jul 2018, 23:12

TheInverseKey wrote:
snacksthecat wrote: I'm trying to write a simple arduino sketch but I'm not sure how to approach it. What I'd like to detect is when a key is pressed vs when a key is held.

Here's the behavior of the keyboard:
When you press a key on the keyboard, the keyboard sends 0x00 followed by the ascii value of the character. If the key is held, the keyboard will wait ~500ms then send 0x01 followed by the ascii value of the character. Then for the duration that the key is held, it will continue to send 0x01 followed by the ascii value of the character at ~60ms intervals.

So pressing a key ('g') would look like this
0x00 0x67

And holding a key ('g') would look like this
0x00 0x67 0x01 0x67 0x01 0x67 0x01 0x67 0x01 0x67 0x01 0x67 0x01 0x67

Using this information, how would I determine when a key is pressed and released?

Thanks!
From my understanding the code 0x00 would be the initial press of the key.

Where as when a key is held down you see that both that they key was pressed with code 0x00 and that it is still being held down then it uses the code 0x01.
Edit: There doesn't seem to be a release code which is interesting.

User avatar
snacksthecat
✶✶✶✶

24 Jul 2018, 03:55

TheInverseKey wrote: Edit: There doesn't seem to be a release code which is interesting.
Yeah, I think I'm going to have to make a compromise somewhere. I got a quick and dirty arduino sketch working but came to the conclusion that I have to choose between either:

a) Make the initial keypress return a make and break automatically.
  • The consequence of this being that if you hold a key down, it stutters once in the beginning
or

b) Wait the 500ms after an initial key press to make sure the key is not held down
  • The consequence of this one being that normal typing is lagged
I'm leaning towards option a since I can already tell that option b is going to be miserable to type on.

It would be really cool if I could find some more information about the protocol. The keyboard has an rx and tx line so I guess it's possible that the computer might be able to poll the keyboard for information (i.e. is a key pressed down right now?)

User avatar
Polecat

24 Jul 2018, 06:08

snacksthecat wrote:
It would be really cool if I could find some more information about the protocol. The keyboard has an rx and tx line so I guess it's possible that the computer might be able to poll the keyboard for information (i.e. is a key pressed down right now?)
Maybe something here that will help:

https://archive.org/details/bitsavers_t ... 82_5789203

Post Reply

Return to “Workshop”