Family BASIC Keyboard: Difference between revisions
m (→References: Found Enri's new homepage!) |
No edit summary |
||
Line 100: | Line 100: | ||
== Hardware == | == Hardware == | ||
The Family BASIC Keyboard is implemented using a CD4017 decade counter (to scan the rows of the keyboard matrix), a CD4019 quad AND-OR gate, and one sixth of a CD4069 hex inverter. The latter two are combined to make a quad 1-of-2 selector, equivalent to a CD4519 or a 74'157. (Another three inverters are used to interface to the Family BASIC Data Recorder) | The Family BASIC Keyboard is implemented using a CD4017 decade counter (to scan the rows of the keyboard matrix), a CD4019 quad AND-OR gate, and one sixth of a CD4069 hex inverter. The latter two are combined to make a quad 1-of-2 selector, equivalent to a CD4519 or a 74'157. (Another three inverters are used to interface to the Family BASIC Data Recorder) | ||
== Miscellaneous == | |||
* The SHIFT key always toggles bit4 of the ASCII code of the character, unlike the PC keyboard. This can be used simplify the keyboard decoding logic in your program. (This does not apply to alphabets: ASCII codes beyond $5F are not in this keyboard. If you want your program to also include lowercase and the rest of the ASCII symbols, you can make SHIFT to toggle bit5 of those keys.) | |||
* The yen sign can be considered to have the same ASCII code as a backslash. | |||
* The kana are arranged in (grid) alphabetical order, not in the way that modern Japanese computers are. | |||
== References == | == References == |
Revision as of 03:41, 4 December 2013
The Family Basic Keyboard (HVC-007) was a peripheral released with the Family Basic package in 1984. With the data recorder that could be attached to it, it allowed the Famicom to have the abilities of the average home computer of around that time. It is a generic 72 button keyboard using common matrix logic, and can be connected to the Famicom at the expansion port.
Keyboard map
F1 F2 F3 F4 F5 F6 F7 F8 1 2 3 4 5 6 7 8 9 0 - ^ ¥ STOP CH* INS DEL ESC Q W E R T Y U I O P @ [ RETURN UP CTR A S D F G H J K L ; : ] KANA LEFT RIGHT SHIFT Z X C V B N M , . / _ SHIFT DOWN GRPH SPACE * CH = CLR HOME
If you have proper font support:
F1 F2 F3 F4 F5 F6 F7 F8 ! " # $ % & ' ( ) = 1 ァ 2 ィ 3 ゥ 4 ェ 5 ォ 6 7 8 9 0 - ^ ¥ STOP ア イ ウ エ オ ナ ニ ヌ ネ ノ ラ リ ル CLR INS DEL ESC Q W E R T Y パ U ピ I プ O ペ P ポ @ [ 「 RETURN HOME カ キ ク ケ コ ハ ヒ フ ヘ ホ レ ロ + * ▲ CTR A S D F G H J K L ; : ] 」 カナ サ シ ス セ ソ マ ミ ム メ モ ー 。 〉 ? ␣ ◀ ▶ SHIFT Z X C V B N M , . / SHIFT タ チ ツ テ ト ヤ ユ ヨ ワ ヲ ン ▼ GRPH [............SPACE............]
Mind that the DEL key function is actually that of Backspace we all know and love.
Hardware interface
Input ($4016 write)
7 bit 0 ---- ---- xxxx xKCR ||| ||+-- Reset the keyboard to the first row. |+--- Select column, row is incremented if this bit goes from high to low. +---- Enable keyboard matrix (if 0, all voltages inside the keyboard will be 5V, reading back as logical 0 always)
Incrementing the row from the (keyless) 10th row will cause it to wrap back to the first row.
Output ($4017 read)
7 bit 0 ---- ---- xxxK KKKx | ||| +-+++--- Receive key status of currently selected row/column.
Any key that is held down, will read back as 0.
($4016 reads from the data recorder.)
Matrix
Column 0 | Column 1 | |||||||
---|---|---|---|---|---|---|---|---|
$4017 bit | 4 | 3 | 2 | 1 | 4 | 3 | 2 | 1 |
Row 0 | ] | [ | RETURN | F8 | STOP | ¥ | RSHIFT | KANA |
Row 1 | ; | : | @ | F7 | ^ | - | / | _ |
Row 2 | K | L | O | F6 | 0 | P | , | . |
Row 3 | J | U | I | F5 | 8 | 9 | N | M |
Row 4 | H | G | Y | F4 | 6 | 7 | V | B |
Row 5 | D | R | T | F3 | 4 | 5 | C | F |
Row 6 | A | S | W | F2 | 3 | E | Z | X |
Row 7 | CTR | Q | ESC | F1 | 2 | 1 | GRPH | LSHIFT |
Row 8 | LEFT | RIGHT | UP | CLR HOME | INS | DEL | SPACE | DOWN |
Hardware
The Family BASIC Keyboard is implemented using a CD4017 decade counter (to scan the rows of the keyboard matrix), a CD4019 quad AND-OR gate, and one sixth of a CD4069 hex inverter. The latter two are combined to make a quad 1-of-2 selector, equivalent to a CD4519 or a 74'157. (Another three inverters are used to interface to the Family BASIC Data Recorder)
Miscellaneous
- The SHIFT key always toggles bit4 of the ASCII code of the character, unlike the PC keyboard. This can be used simplify the keyboard decoding logic in your program. (This does not apply to alphabets: ASCII codes beyond $5F are not in this keyboard. If you want your program to also include lowercase and the rest of the ASCII symbols, you can make SHIFT to toggle bit5 of those keys.)
- The yen sign can be considered to have the same ASCII code as a backslash.
- The kana are arranged in (grid) alphabetical order, not in the way that modern Japanese computers are.
References
- Reverse-engineered schematics by Enri:
- http://www43.tok2.com/home/cmpslv/Famic/Fambas.htm
- Also available here and here
- Photograph of the keyboard
- Stylized keycaps diagram from PFU's Happy Hacking Keyboard keyboard history library