Sony NEWS is a BSD workstation with 68K/MIPS released in 1987 in Japan.
This converter allows NEWS keyboard to be connected to modern PC via USB. It works with NWP-5461 and NWP-411A.
Limitations:
- LEDs on NWP-5461 is not supported.
- Mouse is not supported.
Discussion:
Resources:
Use PD2(USART RXD) for 'Keyboard Data' pin and give power with VCC and GND. Other pins are optional.
AVR NEWS
------------------------
PD0 7 Mouse Data
PD1 2 BZ(Speaker)
PD2 3 Keyboard Data
PD3 6 Keyboard Command(NWP-5461)
PD4 8 POWER ON Switch(NWP-5461)
VCC 1 VCC
GND 5 GND
Target microcontroller is Atmel ATMega32U2 by default but porting this project to other 8-bit AVR controllers would be easy.
NEWS keyboard protocol is a usual asynchronous serial communication. You can receive data from the keyboard easily with UART of micro controller.
- TTL level
- 9600bps
- 1-start bit
- 8-data bit
- non-parity
- 1-stop bit.
Its scan code is one byte consists of 1-bit release(break) flag at MSB and 7-bit code. For example 0x29 is sent when 'a' key is pressed and 0xA9 when released.
MSB LSB
7 6 5 4 3 2 1 0 bit
| | | | | | | |
| +-+-+-+-+-+-+-- scan code(00-7F)
+---------------- break flag: sets when released
,---. ,------------------------, ,------------------------. ,---------.
|Pow| | F1 | F2 | F3 | F4 | F5 | | F6 | F7 | F8 | F9 | F10| | F11| F12| ,-----------.
`---' `------------------------' `------------------------' `---------' | *| /| +|
,-------------------------------------------------------------. ,---. ,---------------|
|Esc| 1| 2| 3| 4| 5| 6| 7| 8| 9| 0| -| =| \| BS | |Hlp| | 7| 8| 9| -|
|-------------------------------------------------------------| |---| |---------------|
|Tab | Q| W| E| R| T| Y| U| I| O| P| [| ]|Del| | |Ins| | 4| 5| 6| ,|
|---------------------------------------------------------' | |---| |---------------|
|Ctrl | A| S| D| F| G| H| J| K| L| ;| '| `|Return| |Clr| | 1| 2| 3| |
|-------------------------------------------------------------| |---| |-----------|Ent|
|Shift | Z| X| C| V| B| N| M| ,| ,| /| |Shift | |PgU| | 0| .| Up| |
|-------------------------------------------------------------| |---| |---------------|
|Alt |Gui |Alt | Space | |Gui|App|Ctrl | |PgD| |Tab|Lef|Dow|Rig|
`-------------------------------------------------------------' `---' `---------------'
,---. ,------------------------, ,------------------------. ,---------.
| 7A| | 01 | 02 | 03 | 04 | 05 | | 06 | 07 | 08 | 09 | 0A | | 68 | 69 | ,-----------.
`---' `------------------------' `------------------------' `---------' | 64| 65| 52|
,-------------------------------------------------------------. ,---. ,---------------|
| 0B| 0C| 0D| 0E| 0F| 10| 11| 12| 13| 14| 15| 16| 17| 18| 19 | | 6A| | 4B| 4C| 4D| 4E|
|-------------------------------------------------------------| |---| |---------------|
| 1A | 1B| 1C| 1D| 1E| 1F| 20| 21| 22| 23| 24| 25| 26| 27| | | 6B| | 4F| 50| 51| 56|
|---------------------------------------------------------' | |---| |---------------|
| 28 | 29| 2A| 2B| 2C| 2D| 2E| 2F| 30| 31| 32| 33| 34| 35 | | 6C| | 53| 54| 55| |
|-------------------------------------------------------------| |---| |-----------| 5A|
| 36 | 37| 38| 39| 3A| 3B| 3C| 3D| 3E| 3F| 40| 41| 42 | | 6D| | 57| 59| 58| |
|-------------------------------------------------------------| |---| |---------------|
| 43 | 44 | 45 | 46 | 47 | 48| 49| 4A | | 6E| | 66| 5B| 5C| 5D|
`-------------------------------------------------------------' `---' `---------------'
POWER ON Switch registers scan code 0x7A(0xFA) and pin 8 is not needed actually.
,------------------------, ,------------------------.
| F1 | F2 | F3 | F4 | F5 | | F6 | F7 | F8 | F9 | F10|
`------------------------' `------------------------'
,-------------------------------------------------------------. ,---------------.
|Esc| 1| 2| 3| 4| 5| 6| 7| 8| 9| 0| -| =| \| BS | | 7| 8| 9| -|
|-------------------------------------------------------------| |---------------|
|Tab | Q| W| E| R| T| Y| U| I| O| P| [| ]|Del| | | 4| 5| 6| +|
|---------------------------------------------------------' | |---------------|
|Ctrl | A| S| D| F| G| H| J| K| L| ;| '| `|Enter | | 1| 2| 3| ,|
|-------------------------------------------------------------| |---------------|
|Shift | Z| X| C| V| B| N| M| ,| ,| /| | Shift | | 0| ↑ | .| |
|-------------------------------------------------------------| |-----------|Ent|
|Alt |Cap| | Space | | | | | | ← | ↓ | → | |
`-------------------------------------------------------------' `---------------'
,------------------------, ,------------------------.
| 01 | 02 | 03 | 04 | 05 | | 06 | 07 | 08 | 09 | 0A |
`------------------------' `------------------------'
,-------------------------------------------------------------. ,---------------.
| 0B| 0C| 0D| 0E| 0F| 10| 11| 12| 13| 14| 15| 16| 17| 18| 19 | | 4B| 4C| 4D| 4E|
|-------------------------------------------------------------| |---------------|
| 1A | 1B| 1C| 1D| 1E| 1F| 20| 21| 22| 23| 24| 25| 26| 27| | | 4F| 50| 51| 52|
|---------------------------------------------------------' | |---------------|
| 28 | 29| 2A| 2B| 2C| 2D| 2E| 2F| 30| 31| 32| 33| 34| 35 | | 53| 54| 55| 56|
|-------------------------------------------------------------| |---------------|
| 36 | 37| 38| 39| 3A| 3B| 3C| 3D| 3E| 3F| 40| 41| 42 | | 57| 58| 59| |
|-------------------------------------------------------------| |-----------| 5A|
| 43 |44 | 45 | 46 | 47 | 48| 49| 4A | | 5B| 5C| 5D| |
`-------------------------------------------------------------' `---------------'
-------------
\ 1 2 3 x 5 /
\ 6 7 8 9 /
---------
1 VCC
2 BZ(Speaker)
3 Keyboard Data(from keyboard MCU TxD)
4 NC
5 GND
6 Keyboard Command(to keyboard MCU RxD via two schmitt triggers of Z8 74LS14)
7 Mouse Data(from Mouse Ext connector)
8 Power switch(directly to the switch via diode)
9 FG
-------------
\ 1 2 3 x 5 /
\ x 7 x 9 /
---------
1 VCC
2 BZ(Speaker)
3 Keyboard Data(from keyboard MCU TxD)
4 NC
5 GND
6 NC
7 Mouse Data(from Mouse Ext connector)
8 NC
9 FG
You can control buzzer using tone()
and noTone()
. BZ pin should be connected to PD0.
void tone(unsigned int frequency, unsigned long duration)
void noTone(void)
tone()
sounds buzzer in frequency(in hertz) for duration(in milliseconds).
When giving -1 as duration to tone()
buzzer makes a sound forever until noTone()
is called.
Buzzer is not used by default firmware.