Page 1 of 1

ADDS 1010 Green Alps Teardown

Posted: 10 May 2014, 18:55
by bitemyweewee
Heya fellas!

Ripster and Pyrelink over at /r/MechanicalKeyboards recommended to come here to share a special discovery I've made.
I've picked up an ADDS 1010 Green Alps terminal keyboard in prestine condition at a garage sale for $4.
I've thrown together an imgur gallery of the Teardown: http://imgur.com/a/vq9iQ
I've already got a thread over there with discussion happening but I was told you're the bee's knee's for info so I figured I'd ask a few friendly questions :)
How much is this thing worth?
How would I go about creating an adapter to USB?
How rare are the green Alps?
When was this made?
I'm interested to know pretty much everything about it because I haven't been able to find a whole lot out there.

Thanks!
-bitemyweewee

Posted: 10 May 2014, 19:02
by Muirium
For the connector: have a look at this.

http://www.kbdbabel.org/conn/

Quite a few RJ10 versions in there. Perhaps it's one of those protocols?

Posted: 10 May 2014, 19:03
by kbdfr
Welcome to Deskthority, even if recommended by ripster :lol:
bitemyweewee wrote:[…] I've picked up an […] at a garage sale for $4.
[…] How much is this thing worth? […]
Obviously $4 ;)

Posted: 10 May 2014, 19:07
by bitemyweewee
kbdfr wrote:Obviously $4 ;)
Thanks! Maybe to the lovely old lady who sold it to me :)

Posted: 10 May 2014, 19:13
by bitemyweewee
Muirium wrote:Perhaps it's one of those protocols?
How would I be able to tell?

Posted: 10 May 2014, 19:17
by Muirium
Good question. Informed guesswork, plus a resistance meter. I can't remember the rule, but generally you can test which pair VCC and GND are. Think it was Soarer who said this…

Posted: 10 May 2014, 19:43
by Daniel Beardsmore
The date range we have for [wiki]Alps SKCL Green[/wiki] switches is 1983–1989, and yours says ©1986, so that should give you an approximate date range of 1986–1989. From your photos, the case is only marked 19th December, without a year. Green Alps switches are neither common nor rare.

The enter key stabiliser is an Alps design but I'm guessing that's not an Alps PCB. I don't think they'd leave off their branding and part numbers.

What's interesting is the paint on the space bar switch slider — I'm guessing they've put a stiffer spring inside it and painted it to ensure it could be differentiated from a normal switch. I've never seen that before with Alps, suggesting that someone in Taiwan was swapping springs over. The Alps official part was [wiki]Alps SKCL Grey[/wiki] (stiffer linear). Hi-Tek on the other hand put just a dab of paint on the space bar sliders of space invader switches until such time as they started making them with dedicated slider colours (originally all their sliders were white).

Great photos, by the way. You should write a wiki page about the keyboard.

Posted: 10 May 2014, 20:46
by bitemyweewee
Daniel Beardsmore wrote:The date range we have for [wiki]Alps SKCL Green[/wiki] switches is 1983–1989, and yours says ©1986, so that should give you an approximate date range of 1986–1989.

What's interesting is the paint on the space bar switch slider

Great photos, by the way. You should write a wiki page about the keyboard.
I forgot to mention that I actually figured out that 3 year time gap. I was just reading the green Alps wiki, saw the manufacturing periods and came to the same realisation. Still weird that they don't have a year anywhere on the keyboard.

The spacebar thing is odd. Your theory makes perfect sense but when pretending to type on it I couldn't feel any variation. I might have to measure its actuation force seperately and find out.

I'd be honoured to write the wiki for this keyboard! I need to gather more Intel first so I can do it justice.

Posted: 10 May 2014, 21:08
by quantalume
You could figure out which lines are +5 and ground by tracing them to the 74LS14. The wire which leads to pin 14 would be +5, while the one leading to pin 7 would be ground. Assuming it's a PS/2-style interface, getting the other two connections (clock and data) wrong won't hurt anything. If it doesn't work one way, try the other.

If you're highly motivated and can't figure out the pinout and protocol, you could always install a TMK controller. http://deskthority.net/workshop-f7/how- ... t7177.html

Posted: 10 May 2014, 22:00
by Daniel Beardsmore
I dunno, I assume the space bar switch in my Filco is an MX Green, but I can't feel any clear difference between it and any adjacent MX Blue switch.

Posted: 10 May 2014, 22:01
by Nuum
Just found a thread on Geekhack of the same keyboard but with Space Invader switches: http://geekhack.org/index.php?topic=56207.0

Posted: 12 May 2014, 13:18
by bitemyweewee
Hey guys! Thanks for all your help with the resources and answering my queries. I still have one itching nag though, what do you think this thing's worth?

Posted: 12 May 2014, 13:34
by Muirium
Whatever someone's willing to pay. Depends if you find someone mad for green Alps, I suppose.

The lady preferred Topre, so…

Posted: 12 May 2014, 14:04
by 002
I've seen a set of green switches (~100) sell for about $50USD. A crappy Zenith board on Yahoo Auctions with Green Alps sold for about 3100JPY which is about $30USD.

They are nice, but probably not really sought after as much as rare Cherry gear is, so I don't think you're really sitting on a gold mine with that one, sorry :)

Re: ADDS 1010 Green Alps Teardown

Posted: 12 May 2014, 14:20
by tlt
Double shot alps caps in good condition could also be interesting to someone think you would get 30$+ for those.

Posted: 12 May 2014, 19:14
by Daniel Beardsmore
Depends what they're after — I didn't realise how weird all the keycap sizes are.

Too bad about the arrow key arrangement as blue doubleshot Alps arrow keys are funky.

Posted: 16 May 2014, 15:49
by bitemyweewee
Figured out how to reverse engineer the keyboard matrix. Took me a while but I got there :)
Image
Little confused why Shift & Ctrl are on an entirely separate column than the rest, will double check tomorrow, if am right I can just bridge 19 and 20 to save on using/programming an extra column?
Image

Posted: 16 May 2014, 16:50
by Muirium
Apparently so. There are diodes in there, right? A separate column looks like a way to preserve rollover for those vital mods. Which shouldn't be a problem with a diode on every switch.

Posted: 16 May 2014, 16:53
by Halvar
Where is the second Shift key? Are the both the same electrically on your board?

Putting Shift and Ctrl in their own rows and columns is probably done to minimize the "ghosting" problem, because Shift and Ctrl are often pressed together with other keys.

http://deskthority.net/wiki/Rollover,_b ... d_ghosting

Posted: 16 May 2014, 21:31
by Daniel Beardsmore
Column to coulomb … ? Must have posted it from an iPhone.

Posted: 16 May 2014, 21:46
by photekq
What a beautiful board. The same colour scheme as the NCR G81-3077. Those keycaps look like they're very close to Cherry profile, and the font looks quite similar to Cherry aswell. Very nice find!

Posted: 17 May 2014, 02:17
by bitemyweewee
Muirium wrote:Apparently so. There are diodes in there, right? A separate column looks like a way to preserve rollover for those vital mods. Which shouldn't be a problem with a diode on every switch.
From the looks of PCB it seems to have diodes on most but it's hard to tell seeing as the diodes under the plate :/
Halvar wrote:Where is the second Shift key? Are the both the same electrically on your board?
Left and Right Shift were electrically the same, yeah! I was surprised as well because other dupe keys are different... oh well.
Daniel Beardsmore wrote:Column to coulomb … ? Must have posted it from an iPhone.
Nope, just a bad speller. Thanks though, will change :)
photekq wrote:What a beautiful board. The same colour scheme as the NCR G81-3077. Those keycaps look like they're very close to Cherry profile, and the font looks quite similar to Cherry aswell. Very nice find!
Thanks! I'm really happy with the find as well :)

Posted: 17 May 2014, 07:14
by bitemyweewee
Heya! Now that I've got the matrix I'm gonna go ahead with the purchase of a teensy, I think I'll be going with 2.0++ model as that's got a hefty amount of pins to populate :3 I do believe that should work with Hasu's firmware but please let me know if I'm wrong.

First time doing this so I'm stoked and clueless.

Posted: 25 May 2014, 09:40
by jacobolus
I think you could probably get at least $50–60 for it on US ebay, judging from recent sales of other green Alps keyboards.

About that spacebar switch with the coloring on top: is that switch noticeably heavier than the others? I think it’s possible that the coloring is to indicate a stronger-weighted spring. I found some linear Alps switches with beigish sliders with some kind of black goop/marking on the top of them used for very heavy switches (used for a “break” key on a terminal keyboard).

Posted: 25 May 2014, 17:05
by bitemyweewee
jacobolus wrote:I think you could probably get at least $50–60 for it on US ebay, judging from recent sales of other green Alps keyboards.

About that spacebar switch with the coloring on top: is that switch noticeably heavier than the others? I think it’s possible that the coloring is to indicate a stronger-weighted spring. I found some linear Alps switches with beigish sliders with some kind of black goop/marking on the top of them used for very heavy switches (used for a “break” key on a terminal keyboard).
It's a heavier spring yeah, haven't weighed it yet though. Will weigh it for my wiki entry. I've got another terminal keyboard in the mail with cherry blacks that's due for a tear down and wiki page as well.

Posted: 30 May 2014, 10:38
by jacobolus
Here’s another example of an Alps switch with some goop the top of it indicating a heavier spring: http://www7.ocn.ne.jp/~hisao/image/pc8801.htm

Notice the "STOP" and "COPY" switches have a slightly different than normal click leaf, and a much heavier spring. The text says they are 200g to depress.

Posted: 31 May 2014, 10:31
by bitemyweewee
Problem: Following the guide to Hasu's keyboard firmware but it appears to only be for 60% keyboards. How do I find the necessary info for full size keyboards?
I'm assuming it makes no difference, but I don't know the names of the keys (when making the keymaps) that are excluded on the 60% units such as number-pad keys.

Here's what I've got so far:

Matrix:
Spoiler:
Image
config.h:

Code: Select all

/* key matrix size */
#define MATRIX_ROWS 9
#define MATRIX_COLS 13
matrix.c

Code: Select all

static void  init_cols(void)
{
    // Input with pull-up(DDR:0, PORT:1)
    DDRD  &= ~(1<<1 | 1<<2 | 1<<3 | 1<<4 | 1<<5 | 1<<6 | 1<<7);
    PORTD |=  (1<<1 | 1<<2 | 1<<3 | 1<<4 | 1<<5 | 1<<6 | 1<<7);
    DDRE  &= ~(1<<0 | 1<<1);
    PORTE |=  (1<<0 | 1<<1);
    DDRC  &= ~(1<<0 | 1<<1 | 1<<2 | 1<<3 | 1<<4);
    PORTC |=  (1<<0 | 1<<1 | 1<<2 | 1<<3 | 1<<4);
}

static matrix_row_t read_cols(void)
{
    return (PIND&(1<<1) ? 0 : (1<<0)) |
           (PIND&(1<<2) ? 0 : (1<<1)) |
           (PIND&(1<<3) ? 0 : (1<<2)) |
           (PIND&(1<<4) ? 0 : (1<<3)) |
           (PIND&(1<<5) ? 0 : (1<<4)) |
           (PIND&(1<<7) ? 0 : (1<<5)) |
           (PINE&(1<<0) ? 0 : (1<<6)) |
           //((PINB&(1<<0) && PINB&(1<<7)) ? 0 : (1<<8)) |     // Rev.A and B
           (PINE&(1<<1) ? 0 : (1<<7)) |
           (PINC&(1<<0) ? 0 : (1<<8)) |
           (PINC&(1<<1) ? 0 : (1<<9)) |
           (PINC&(1<<2) ? 0 : (1<<10)) |
           (PINC&(1<<3) ? 0 : (1<<11)) |
           (PINC&(1<<4) ? 0 : (1<<12));
}

/* Row pin configuration
 * row: 0   1   2   3   4
 * pin: D0  D1  D2  D3  D5
 */
static void unselect_rows(void)
{
    // Hi-Z(DDR:0, PORT:0) to unselect
    DDRB  &= ~0b11111111;
    PORTB &= ~0b11111111;
    DDRD  &= ~0b00000001;
    PORTD &= ~0b00000001;
}

static void select_row(uint8_t row)
{
    // Output low(DDR:1, PORT:0) to select
    switch (row) {
        case 0:
            DDRB  |= (1<<0);
            PORTB &= ~(1<<0);
            break;
        case 1:
            DDRB  |= (1<<1);
            PORTB &= ~(1<<1);
            break;
        case 2:
            DDRB  |= (1<<2);
            PORTB &= ~(1<<2);
            break;
        case 3:
            DDRB  |= (1<<3);
            PORTB &= ~(1<<3);
            break;
        case 4:
            DDRB  |= (1<<4);
            PORTB &= ~(1<<4);
            break;
        case 5:
            DDRB  |= (1<<5);
            PORTB &= ~(1<<5);
            break;
        case 6:
            DDRB  |= (1<<6);
            PORTB &= ~(1<<6);
            break;
        case 7:
            DDRB  |= (1<<7);
            PORTB &= ~(1<<7);
            break;
        case 8:
            DDRD  |= (1<<0);
            PORTD &= ~(1<<0);
            break;    
    }
}
led.c:

Code: Select all

void led_set(uint8_t usb_led)
{
    if (usb_led & (1<<USB_LED_CAPS_LOCK)) {
        // output low
        DDRD |= (1<<6);
        PORTD &= ~(1<<6);
    } else {
        // Hi-Z
        DDRD &= ~(1<<6);
        PORTD &= ~(1<<6);
    }
}
keymap_common.h:

Code: Select all

#define KEYMAP( \
    K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, \
    K10, K11, K12, K13,      K15, K16, K17, K18, K19, K1A, \
    K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, \
    K30, K31, K32,      K34, K35, K36, K37, K38, K39, K3A, \
    K40, K41, K42, K43, K44, K45, K46, K47,      K49, K4A, \
                                                           K5B, K5C, \
    K60, K61, K62, K63, K64, K65, K66, K67, K68, \
    K70, K71, K72, K73, K74, K75, K76, K77, K78, \
    K80, K81, K82, K83, K84, K85, K86, K87, K88, K89\                                                       
) { \
    { KC_##K00, KC_##K01, KC_##K02, KC_##K03, KC_##K04, KC_##K05, KC_##K06, KC_##K07, KC_##K08, KC_##K09, KC_##K0A }, \
    { KC_##K10, KC_##K11, KC_##K12, KC_##K13, KC_NO   , KC_##K15, KC_##K16, KC_##K17, KC_##K18, KC_##K19, KC_##K1A }, \
    { KC_##K20, KC_##K21, KC_##K22, KC_##K23, KC_##K24, KC_##K25, KC_##K26, KC_##K27, KC_##K28, KC_##K29, KC_##K2A }, \
    { KC_##K30, KC_##K31, KC_##K32, KC_NO   , KC_##K34, KC_##K35, KC_##K36, KC_##K37, KC_##K38, KC_##K39, KC_##K3A }, \
    { KC_##K40, KC_##K41, KC_##K42, KC_##K43, KC_##K44, KC_##K45, KC_##K46, KC_##K47, KC_NO   , KC_##K49, KC_##K4A }, \
    { KC_NO   , KC_NO   , KC_NO   , KC_NO   , KC_NO   , KC_NO   , KC_NO   , KC_NO   , KC_NO   , KC_NO   , KC_NO   , KC_##5B , KC_5C }, \
    { KC_##K60, KC_##K61, KC_##K62, KC_##K63, KC_##K64, KC_##K65, KC_##K66, KC_##K67, KC_##K68 }, \
    { KC_##K70, KC_##K71, KC_##K72, KC_##K73, KC_##K74, KC_##K75, KC_##K76, KC_##K77, KC_##K78 }, \
    { KC_##K80, KC_##K81, KC_##K82, KC_##K83, KC_##K84, KC_##K85, KC_##K86, KC_##K87, KC_##K88, KC_##K89 }, \
}
I just now have to figure out what to put in keymap_poker.c or keymap_plain.c (how do I make it point to that instead).
If anyone could please give me a hand that would be absolutely brilliant!

Posted: 31 May 2014, 11:16
by jacobolus
I’m too sleepy to think about this now, but I recommend you post in hasu's tmk_firmware geekhack thread: http://geekhack.org/index.php?topic=41989.0

Posted: 31 May 2014, 11:23
by bitemyweewee
jacobolus wrote:I’m too sleepy to think about this now, but I recommend you post in hasu's tmk_firmware geekhack thread: http://geekhack.org/index.php?topic=41989.0
Thanks,
Will do!