Soviet "Gerkonic" (Zbrojovka Brno/Consul/Tesla) adapter resources

rymut

18 Oct 2017, 14:56

Some time ago I bought zbrojovka brno 263.2 keyboard like this one https://youtu.be/Qef2QGLkHMk.
Zbrojovka Brno 263.2 keyboard
Zbrojovka Brno 263.2 keyboard
DSC_0028.JPG (300.64 KiB) Viewed 6066 times
After some digging I found few good resources:
* https://sites.google.com/site/computerr ... icany-fk-1
* http://home.zcu.cz/~dudacek/Simicos/SIMICOS.htm

Basically keyboard runs on 5V (USB) and uses 8 pins for data, and one pin as a clock (strobe signal).
Because of that keyboard can register only single key at one time (1-KRO), and typing experience is horrible because of it.

Here is a simple code (for arduino ide):

Code: Select all

#define DATA0  5
#define DATA1  6
#define DATA2  7
#define DATA3  8
#define DATA4  9
#define DATA5 10
#define DATA6 11
#define DATA7 12
#define STROBE 3

void setup() {
  Serial.begin(9600); 
  Serial.print("setup: "); 
  pinMode(DATA0, INPUT); 
  pinMode(DATA1, INPUT); 
  pinMode(DATA2, INPUT); 
  pinMode(DATA3, INPUT); 
  pinMode(DATA4, INPUT); 
  pinMode(DATA5, INPUT); 
  pinMode(DATA6, INPUT); 
  pinMode(DATA7, INPUT); 

  pinMode(STROBE, INPUT); 
  attachInterrupt(digitalPinToInterrupt(STROBE), key, RISING); 
  Serial.println("end"); 
}

// read key input code 
unsigned char readInput() {
  unsigned char value = 0; 
  value = (value << 1)| digitalRead(DATA7);
  value = (value << 1) | digitalRead(DATA6); 
  value = (value << 1) | digitalRead(DATA5); 
  value = (value << 1) | digitalRead(DATA4); 
  value = (value << 1) | digitalRead(DATA3); 
  value = (value << 1) | digitalRead(DATA2); 
  value = (value << 1) | digitalRead(DATA1); 
  value = (value << 1) | digitalRead(DATA0);
  return value; 
}

// if key is pressed display information over serial 
void key() {
  unsigned char value = readInput(); 
  unsigned short v = (1<<8)|value; 
  if ( value == 0xEF ) {
    Serial.println(""); 
  }
  Serial.print(value, HEX); 
  Serial.print(" ");  
}

// procrastinate 
void loop() {
  delay(1000); 
}


Correct strobe and 8 data pin can be be easily checked out by tracking the traces on pcb with multimeter or by eye.

As far as I can say interface is very similar to as other "Gerkonic" keyboard like Consul, Zbrojovka Brno, Tesla 259 https://youtu.be/TNsyTSEFvrU, but pin ribbon cable is different (still it uses the 9 pins for communication, or opt for serial communication instead).

User avatar
OldIsNew

18 Oct 2017, 19:02

Nice work! My understanding is that those boards use Hall effect switches - is that right? Even if the board is 1 KRO it's very cool that you got an old Hall effect board working!

User avatar
seebart
Offtopicthority Instigator

18 Oct 2017, 19:48

Great work rymut, this will help people in the long run! Yeah these are Hall-effect if I recall, they show up now and then, I never got one myself though. Real nice.

rymut

18 Oct 2017, 22:10

OldIsNew wrote: Nice work! My understanding is that those boards use Hall effect switches - is that right? Even if the board is 1 KRO it's very cool that you got an old Hall effect board working!
Wait I thought that adapter is available for Honeywell Hall keyboards.

I own second hand Honeywell BO1810 keyboard which have is modded by some previous owner: prototype board with bunch of output wires and some EPROM, probably for connecting to atari or commodore.

From what i checked pcb board have similar traces layout and overall design to Zbrojovka Brno so making adapter should no be difficult process. If adapter is not available I should be able to do (with my limited knowledge of electronics) after I finish Zbrojovka Brno USB adapter.

User avatar
seebart
Offtopicthority Instigator

18 Oct 2017, 22:16

rymut wrote: Wait I thought that adapter is available for Honeywell Hall keyboards.
No, never seen one. Looking foreward to it. ;)

HuBandiT

24 Oct 2017, 17:25

<off>
If it really is 1KRO, how do you type e.g. the symbol # on it? Press Shift, release Shift, press 3/#, release 3/#?
</off>

User avatar
Chyros

24 Oct 2017, 18:54

HuBandiT wrote: <off>
If it really is 1KRO, how do you type e.g. the symbol # on it? Press Shift, release Shift, press 3/#, release 3/#?
</off>
Rollover doesn't determine hoe many keys you can press at the same time, it determines how many keys you can press at the same time AT THE MINIMUM. Even with 2KRO boards it's easy to get 6-key combinations, for example.

rymut

24 Oct 2017, 19:08

HuBandiT wrote: <off>
If it really is 1KRO, how do you type e.g. the symbol # on it? Press Shift, release Shift, press 3/#, release 3/#?
</off>
Ye, of little faith... this is great example of CCCP technology build to last and with a mind set of Soviet block countries where left hand doesn't know what the right hand is doing or even that right hand exist at all.

Basically red keys are to the computer as nobility to CCCR - they just don't exist.
Computer is never aware of pressing the red keys (so 1-KRO) keyboard internally is doing some simply manipulating base key value if shift, caps or ctrl is held down. This value manipulation is done only for some keys on the keyboard for example whole numeric block plainly ignores ctrl, shift or caps keys.

As for other weird thing in this keyboard ROLL key (responsible for STROBE pin control), after it is pressed (and released) it repeats its last value until roll is pressed again (it was probably used for quickly moving cursor with direction keys)... Yes holding any key down does nothing, key presses are only registered on a down stroke - so compute was not even aware how long key was hold down... (When key is pressed strobe value is set to 1 for 1ms after data 0-7 channels are set to hex value of pressed key. Data channels value stays the same until the next key press is registered, there is no value change on data 0-7 when key is released).

Here is a full hex code table for every key on this keyboard recognized by computer.

Code: Select all


ESC | +  | 1  | 2  | 3  | 4  | 5  | 6  | 7  | 8  | 9  | 0  | -  | COPY | BS | BREAK | KEY_VALUE
----|----|----|----|----|----|----|----|----|----|----|----|----|------|----|-------|---------------------
D8  | C8 | CD | CE | CC | C7 | C5 | C6 | C4 | CB | C9 | CF | E1 | BE   | FB | B7    |
D8  | C8 | CD | CE | CC | C7 | C5 | C6 | C4 | CB | C9 | CF | E1 | BE   | FB | B6    | CTRL
D8  | C8 | CD | CE | CC | C7 | C5 | C6 | C4 | CB | C9 | CF | E1 | BE   | FB | B7    | CAPS
D8  | E8 | ED | EE | EC | E7 | E5 | E6 | E4 | EB | E9 | CF | C1 | BC   | FB | B5    | LEFT_or_RIGHT_SHIFT


TAB | J  | C  | U  | K  | E  | N  | G  | [  | ]  | Z  | H  | *  | LF | DEL | KEY_VALUE
----|----|----|----|----|----|----|----|----|----|----|----|----|----|-----|---------------------
F9  | 6A | 6C | 45 | 68 | 65 | 62 | 64 | 48 | 41 | 4A | 6B | CA | FA | 40  |
F9  | FA | FC | D5 | F8 | F5 | F2 | F4 | D8 | D1 | DA | FB | CA | FA | 40  | CTRL
F9  | 7A | 7C | 55 | 78 | 75 | 72 | 74 | 58 | 51 | 5A | 7B | CA | FA | 40  | CAPS
F9  | 7A | 7C | 55 | 78 | 75 | 72 | 74 | 58 | 51 | 5A | 7B | EA | FA | 40  | LEFT_or_RIGHT_SHIFT


F  | Y  | W  | A  | P  | R  | O  | L  | D  | V  | \  | >  | CR | KEY_VALUE
---|----|----|----|----|----|----|----|----|----|----|----|----|---------------------
66 | 49 | 44 | 6D | 4F | 4E | 60 | 63 | 67 | 46 | 43 | E2 | F1 |
F6 | D9 | D4 | FD | DF | DE | F0 | F3 | F7 | D6 | D3 | E2 | F1 | CTRL
76 | 59 | 54 | 7D | 5F | 5E | 70 | 73 | 77 | 56 | 53 | E2 | F1 | CAPS
76 | 59 | 54 | 7D | 5F | 5E | 70 | 73 | 77 | 56 | 53 | C2 | F1 | LEFT_or_RIGHT_SHIFT


ROLL | Q  | ^  | S  | M  | I  | T  | X  | B  | @  | <  | ?  | _  | KEY_VALUE
-----|----|----|----|----|----|----|----|----|----|----|----|----|---------------------
BF   | 4D | 42 | 4C | 61 | 69 | 47 | 4B | 6E | 6F | E3 | E0 | 50 |
BF   | DD | D2 | DC | F1 | F9 | D7 | DB | FE | FF | E3 | E0 | D0 | CTRL
BF   | 5D | 52 | 5C | 71 | 79 | 57 | 5B | 7E | 7F | E3 | E0 | 50 | CAPS
BD   | 5D | 52 | 5C | 71 | 79 | 57 | 5B | 7E | 7F | C3 | C0 | 50 | LEFT_or_RIGHT_SHIFT


F1 | F2 | F3 | UP | KEY_VALUE
---|----|----|----|---------------------
1F | 1D | 1E | 3D |
1F | 1D | 1E | 3D | CTRL
1F | 1D | 1E | 3D | CAPS
1F | 1D | 1E | 3D | LEFT_or_RIGHT_SHIFT


7  | 8  | 9  | DOWN | KEY_VALUE
---|----|----|------|---------------------
84 | 8B | 89 | 3E   |
84 | 8B | 89 | 3E   | CTRL
84 | 8B | 89 | 3E   | CAPS
84 | 8B | 89 | 3E   | LEFT_or_RIGHT_SHIFT


4  | 5  | 6  | RIGHT | KEY_VALUE
---|----|----|-------|---------------------
87 | 85 | 86 | 3C    |
87 | 85 | 86 | 3C    | CTRL
87 | 85 | 86 | 3C    | CAPS
87 | 85 | 86 | 3C    | LEFT_or_RIGHT_SHIFT


1  | 2  | 3  | LEFT | KEY_VALUE
---|----|----|------|---------------------
8D | 8E | 8C | 37   |
8D | 8E | 8C | 37   | CTRL
8D | 8E | 8C | 37   | CAPS
8D | 8E | 8C | 37   | LEFT_or_RIGHT_SHIFT


0  | DOT | UP-LEFT | KEY_VALUE
---|-----|---------|---------------------
8F | A2  | B1      |
8F | A2  | B1      | CTRL
8F | A2  | B1      | CAPS
8F | A2  | B1      | LEFT_or_RIGHT_SHIFT
Edit 1. Typo correcting read to red

User avatar
armatus

01 Nov 2017, 11:28

1KRO?
why not just rewire it? you can use power and ground lines as is (on pcb), but make a new signal matrix for mcu
(cut the old one)

i have the same polish(or cz) board - keys works with arduino, but needs a power strobe to NKRO
(note than power from arduino pin is not enough for line of MH3SS2's, or even for 1. i use a transistor to drive the power in rows from common usb source)

---
happy 11.11 independence day!

rymut

04 Nov 2017, 17:51

armatus wrote: 1KRO?
why not just rewire it? you can use power and ground lines as is (on pcb), but make a new signal matrix for mcu
(cut the old one)

i have the same polish(or cz) board - keys works with arduino, but needs a power strobe to NKRO
(note than power from arduino pin is not enough for line of MH3SS2's, or even for 1. i use a transistor to drive the power in rows from common usb source)

---
happy 11.11 independence day!
I like having original board with minimal modification done, still caps flat profile is not suited for typing.

User avatar
armatus

07 Nov 2017, 12:10

it's like all-R3 SA set, very good!
you can use it in any layout you want (colemak, workman etc...) bcs of uniform profile

i think it's advantage

top surface is nice too, i like to touch it
i'm going to make something atreus style with this switches and keycaps
Image

User avatar
armatus

22 Nov 2017, 12:08

how it's going? any news?
have you a github repo?

rymut

28 Nov 2017, 08:49

armatus wrote: how it's going? any news?
have you a github repo?
Not yet, quite busy month in the work.

rymut

14 Mar 2018, 22:21

armatus wrote: how it's going? any news?
have you a github repo?
I sold the keyboard because the lack of time but base code and the idea is presented in the first post.

Post Reply

Return to “Workshop”