Atari Eiffel 3 Interface PS/2






EIFFEL, a free PS/2 Keyboard and Mouse adapter for Atari

License: This product is free, GPL-like applied to hardware project. You are free to build and use it.


Français


Features

These interface handle all PS/2 Keyboard and mouse:

The eiffel configuration program...



Archive Version Size Computer
Eiffel 1.10 eiffel.lzh 1.10 2005 Mar 6 524 KB Atari ST(E) / Falcon / TT, for Laurant and Lyndon's cards
English/French/German RSC, doc HYP about new E_TEMP.PRG
Eiffel 1.0.9 eiffel109.lzh 1.0.9 2004 Oct 24 355 KB Atari ST(E) / Falcon / TT, for Laurant and Lyndon's cards
Eiffel 1.0.6 eiffel106.lzh 1.0.6 2004 May 31 167 KB Atari ST(E) / Falcon / TT
Special firmware 1.0.6 firmware.zip 1.0.6 2004 June 13 7 KB Atari ST(E) / Falcon / TT, Debug removed (RB4/5) for Lyndon's cards


Eiffel firmware v1.10

This one have the following features:


Eiffel firmware v1.0.9

This one have the following features:


Eiffel firmware v1.0.8

This one have the following features:


Eiffel firmware v1.0.7

This one have the following features:


Eiffel firmware v1.0.6

This one have the following features:


Eiffel firmware v1.0.5

This one have the following features:


Eiffel firmware v1.0.4

This one have the following features:

You need a new hardware if you want use this features: http://hardware.atari.org


Eiffel firmware v1.0.3

This one have the following features:


Technical description

Eiffel adapter use a powerful Microchip microcomputer, a PIC16F876. Check the microchip web site for a complete description.
The firmware handle the both keyboard and mouse DIN PS/2 port, convert the synchronous PS/2 communication to the asynchronous protocol for Atari, translate the PS/2 scan-codes to Atari scan-codes, and convert the mouse's frames to a Atari frame.

Keyboard:

All keys are mapped to Atari scan-codes. The new keys as Win Left, Right, Application, return news scan-codes, not previously used by Atari.
For  Atari keys which doesn't exist on PS/2 keyboard, this problem is solved as follow:

The adapter is responsible to switch on and off, the keyboard LED when you press the CAPS LOCK key. The VERR NUM key has no effect and the VERR NUM LED is now a simple power indicator.

Since the version 1.0.7, Eiffel not need a keyboard driver to map correctly the keys returned (different scan-codes for the same key). Eiffel can use with differents user tables (.inf) for each country, the characters for normal, shift and alternate mode.
For example for get the "{" character you did press SHIFT+ALT+"{" but on PS/2 keyboard this one is on the "4" key...

Mouse:

The Eiffel interface can handle any mouse. Standard PS/2 with 2 or 3 buttons, enhanced wheel mouse, ie IntelliMouse extensions for wheels and extra buttons, new scan-codes for UP, DOWN, LEFT and RIGHT and buttons 3, 4, 5 are returned. But to get a basic mouse working, no driver is required. Theses scan-codes can be changed with the GEM application EIFFELCF.APP.

Table of new scan-codes:

This is the scan-codes list for keyboard and mouse. If you want to use them in your applications or to write your own driver...

Keys set 2 (AT) and set 3 (PS/2) Atari scan-code firmware v1.0.3 and + Atari scan-code firmware v1.0.8 and +
ALT GR ALT as default, can be programmed ALT as default, can be programmed
F11 HELP as default, can be programmed HELP as default, can be programmed
F12 UNDO as default, can be programmed UNDO as default, can be programmed
SCROLL LOCK $4C as default, can be programmed $4C as default, can be programmed
PAGE UP  $45 as default, can be programmed $45 as default, can be programmed
PAGE DOWN $46 as default, can be programmed $46 as default, can be programmed
PRINT SCREEN  $49 as default, can be programmed $49 as default, can be programmed
PAUSE $4F as default, can be programmed $4F as default, can be programmed
VERR NUM $54 (F11 Atari) as default,
can be programmed
It's possible to use the status frame
$F6 $05 $00 $00 $00 $00 $00 $54
END $55 (F12 Atari) as default,
can be programmed
It's possible to use the status frame
$F6 $05 $00 $00 $00 $00 $00 $55
LEFT WIN $56 (F13 Atari) as default,
can be programmed
It's possible to use the status frame
$F6 $05 $00 $00 $00 $00 $00 $56
RIGHT WIN $57 (F14 Atari) as default,
can be programmed
It's possible to use the status frame
$F6 $05 $00 $00 $00 $00 $00 $57
WIN APP $58 (F15 Atari) as default,
can be programmed
It's possible to use the status frame
$F6 $05 $00 $00 $00 $00 $00 $58
Key <²> beside <1> key (Russian "ë") $5B (F18 Atari) as default,
can be programmed
It's possible to use the status frame
$F6 $05 $00 $00 $00 $00 $00 $5B
Keys set 2 (AT) Atari scan-code firmware 1.0.0 up to 1.0.4 Atari scan-code firmware 1.0.5 and 1.0.8
POWER - $73 (CTRL <- inside the TOS)
It's possible to use the status frame
$F6 $05 $00 $00 $00 $00 $00 $73
SLEEP - $74 (CTRL -> inside the TOS)
It's possible to use the status frames
$F6 $05 $00 $00 $00 $00 $00 $74
WAKE - $75
It's possible to use the status frame
$F6 $05 $00 $00 $00 $00 $00 $75
NEXT TRACK - $F6 $05 $00 $00 $00 $00 $00 $4D
PREVIOUS TRACK - $F6 $05 $00 $00 $00 $00 $00 $15
STOP - $F6 $05 $00 $00 $00 $00 $00 $3B
PLAY/PAUSE - $F6 $05 $00 $00 $00 $00 $00 $34
MUTE - $F6 $05 $00 $00 $00 $00 $00 $23
VOLUME UP - $F6 $05 $00 $00 $00 $00 $00 $32
VOLUME DOWN - $F6 $05 $00 $00 $00 $00 $00 $21
MEDIA SELECT - $F6 $05 $00 $00 $00 $00 $00 $50
E-MAIL - $F6 $05 $00 $00 $00 $00 $00 $48
CALCULATOR - $F6 $05 $00 $00 $00 $00 $00 $2B
MY COMPUTER - $F6 $05 $00 $00 $00 $00 $00 $40
WWW SEARCH - $F6 $05 $00 $00 $00 $00 $00 $10
WWW HOME - $F6 $05 $00 $00 $00 $00 $00 $3A
WWW BACK - $F6 $05 $00 $00 $00 $00 $00 $38
WWW FORWARD - $F6 $05 $00 $00 $00 $00 $00 $30
WWW STOP - $F6 $05 $00 $00 $00 $00 $00 $28
WWW REFRESH - $F6 $05 $00 $00 $00 $00 $00 $20
WWW FAVORITES - $F6 $05 $00 $00 $00 $00 $00 $18

Mouse elements Atari scan-code firmware v1.0.3 and + Atari scan-code firmware v1.0.8 and +
Vertical wheel UP $59 (F16 Atari) as default,
can be programmed
It's possible to use the status frame
$F6 $05 $00 $00 $00 $00 $00 $59
Vertical wheel DOWN $5A (F17 Atari) as default,
can be programmed
It's possible to use the status frame
$F6 $05 $00 $00 $00 $00 $00 $5A
Horizontal wheel LEFT $5C (F19 Atari) as default,
can be programmed
It's possible to use the status frame
$F6 $05 $00 $00 $00 $00 $00 $5C
Horizontal wheel RIGHT $5D (F20 Atari) as default,
can be programmed
It's possible to use the status frame
$F6 $05 $00 $00 $00 $00 $00 $5D
Button 3 (Middle) $37 as default, can be programmed $37 as default, can be programmed
Button 4 $5E as default, can be programmed $5E as default, can be programmed
Button 5 $5F as default, can be programmed $5F as default, can be programmed

Table of Eiffel IKBD commands:

Command Format Action on Eiffel Version
GETTEMP <$03> Get temperature from sensor 1.0.4
PROGTEMP <$04><index><code> Program temperature 1.0.4
PROGKB <$05><index><code> Program a keyboard's scan-code
If index is $FF, code is set 2 or 3
1.0.3
1.0.5
PROGMS <$06><index><code> Program a mouse's scan-code 1.0.3
LCD <$23><len><data(s)> Send a command or data(s) to the LCD
Len to $00: Data is a command, lock the LCD
Len to $FF: Unlock the LCD for Eiffel
Len to $01-$FE: send datas
1.10

Table of Eiffel Atari IKBD commands:

Command Format Special action on Eiffel Version
IKBD_SET_MOUSE_BUTTON_ACTION <$07><00000mss> - 1.0.4
IKBD_REL_MOUSE_POS_REPORT <$08> - 1.0.4
IKBD_ABS_MOUSE_POSITIONING <$09>
<XMSB><XLSB>
<YMSB><YLSB>
- 1.0.4
IKBD_SET_MOUSE_KEYCODE_CODE <$0A><deltax><deltay> - 1.0.4
IKBD_SET_MOUSE_THRESHOLD <$0B>><X><Y> - Not supported
IKBD_SET_MOUSE_SCALE <$0C>><X><Y> - 1.0.4
IKBD_INTERROGATE_MOUSE_POS <$0D> - 1.0.4
IKBD_LOAD_MOUSE_POS <$0E><$00>
<XMSB><XLSB>
<YMSB><YLSB>
- 1.0.4
IKBD_SET_Y0_AT_BOTTOM <$0F> - 1.0.4
IKBD_SET_Y0_AT_TOP <$10> - 1.0.4
IKDB_RESUME <$11> - 1.0.4
IKDB_DISABLE_MOUSE <$12> - 1.0.4
IKDB_PAUSE_OUTPUT <$13> - 1.0.4
IKBD_SET_JOY_EVNT_REPORT <$14> - 1.0.4
IKBD_SET_JOY_INTERROG_MODE <$15> - 1.0.4
IKBD_JOY_INTERROG <$16> - 1.0.4
IKBD_SET_JOY_MONITOR <$17><rate> - 1.0.4
IKBD_SET_FIRE_BUTTON_MONITOR <$18> - Not supported
IKBD_SET_JOY_KEYCODE_MODE <$19>
<RX><RY>
<TX><TY>
<VX><VY>
- 1.0.4
IKDB_DISABLE_JOYSTICKS <$1A> - 1.0.4
IKBD_TIME_OF_DAY_CLOCK_SET <$1B>
<YY><MM><DD>
<hh><mm><ss>
- 1.0.4
IKBD_INTERROG_TIME_OF_DAY <$1C> - 1.0.4
IKBD_MEMORY_LOAD <$20>
<ADRMSB><ADRLSB>
<NUM>
$0000 to $01FF: RAM
$0000 $00: FLASH (firmware)
1.0.4
IKBD_MEMORY_READ <$21>
<ADRMSB><ADRLSB>
$0000 to $01FF: RAM
$2100 to $20FF: EEPROM
$8000 to $FFFF: FLASH (0-$1FFF)
1.0.4
IKBD_CONTROLLER_EXECUTE <$22>
<ADRMSB><ADRLSB>
- Not supported
IKBD_RESET <$80><$01> - 1.0.2
IKBD_STATUS_MOUSE_BUT_ACTION <$87> - 1.0.4
IKBD_STATUS_MOUSE_MODE_R <$88> - 1.0.4
IKBD_STATUS_MOUSE_MODE_A <$89> - 1.0.4
IKBD_STATUS_MOUSE_MODE_K <$8A> - 1.0.4
IKBD_STATUS_MOUSE_THRESHOLD <$8B> - 1.0.4
IKBD_STATUS_MOUSE_SCALE <$8C> - 1.0.4
IKBD_STATUS_MOUSE_Y0_AT_B <$8F> - 1.0.4
IKBD_STATUS_MOUSE_Y0_AT_T <$90> - 1.0.4
IKDB_STATUS_DISABLE_MOUSE <$92> - 1.0.4
IKBD_STATUS_JOY_MODE_E <$94> - 1.0.4
IKBD_STATUS_JOY_MODE_I <$95> - 1.0.4
IKBD_STATUS_JOY_MODE_K <$99> - 1.0.4
IKDB_STATUS_DISABLE_JOY <$9A> - 1.0.4

Schematic:

PIC firmware:

To program yourself the PIC chip, get the HEX file Eiffel (Intel format).
You can use the very good programming software under your Atari: Prog84 / Gputils / Sdcc.

Installation:

http://hardware.atari.org

Usefull documentations: