Corrections et volutions
=========================

15/08/2002   v1.0.4
===================

Ajout de toutes les commandes IKBD atari sauf les commandes 0x0B 
(mouse threshold), 0x18 (joystick fire button monitor), et 0x22 
(controler execute) qui sont reconnus mais non grs. Les joysticks, 
l'horloge et la souris sont donc grs dans tous les modes.
Le Joystick 0 est branch sur le port A du PIC16F876:
 RA0: Haut
 RA1: Bas
 RA2: Gauche
 RA3: Droite
 RA4: Tir
 RA5 reste disponible sur le PIC comme entre analogique par 
 exemple un controle futur de la temprature ;-)
Le Joystick 1 est branch sur le port C du PIC16F876:
 RC0: Haut
 RC1: Bas
 RC2: Gauche
 RC3: Droite
 RC4: Tir  
Ajout tlchargement en Flash (en pages 2 et 3) via le port serie 
clavier Atari, les rglages en EEPROM sont conservs. En cas de checkum 
mauvais c'est le progamme d'origine (en page 0) qui est relanc. En 
cas de bug, il est toujours possible de forcer le lancement du 
programe d'origine en appuyant sur le bouton tir du joystick 1  la 
mise sous tension.
Lors de la commande rejeu IKBD 0x80 de l'Atari, un reset est galement 
effectu sur la souris et le clavier PS/2. 
Ajout test parit pour la lecture dans la gestion du clavier et de la  
souris PS/2. En cas d'erreur sur le clavier et la souris la commande 
resend est envoye.
Supression de la rptition automatique des touches du clavier PS/2 
(mode Make/Break), la rptition etant assure par le XBIOS de l'Atari.
Passage des donnes  envoyer a l'Atari dans un tampon cirulaire de 
16 octets afin de laisser le maximum de temps libre au PIC pour grer 
les trames souris PS/2.
Gestion possible par alternance de la clavier (5 mS) et de la souris 
(15 mS), certains claviers et souris ne reagissent pas immdiatement 
au blocage (choix a la compilation). La gestion des erreurs de parit 
ne permet pas de bloquer toutes les erreurs. 

03/02/2004   v1.0.5
===================

Ajout scan-codes AT du jeu 2. La slection entre le jeu 2 (AT) ou le 3 
(PS/2) est possible via le programme de configuration. Toutefois il est 
prfrable d'utiliser le jeu 3 car la double rptition des touches 
du TOS et du clavier est gnante.
Le jeu 2 aporte en plus les touches multimdias envoys via la trame 
de status F6 05 00 00 00 00 00 xx (avec xx correspondant au code AT).
De plus certains claviers rcents Logitech ne grent que le jeu 2.
La prise en compte du changement de jeu se fait via la commande IKBD 
reset, elle est sauve dans la EEPROM.

31/05/2004   v1.0.6
===================

Mise  jour programme de flashage (eiffelcf), afin d'viter la double 
mise  jour. Car depuis que le firmware est compil avec NON_BLOQUANT, 
seul le programme residant 1.0.4 permettait de flasher correctement. 
Amlioration blocages intermittants aprs un reset. Reset clavier sans 
commande Reset, et clavier avant souris.
Lecture de la temprature plus prcise, en entrant 12 points de la 
courbe non linaire de la CTN 10 Kohms (modifiable par eiffelcf). Le 
reste des points de la courbe tant trouv par interpolation.

24/08/2004   v1.0.7
===================

Ajout des tables Shift, AltGr en flash (mmoire programme) et 
'modifier' pour forcer l'tat de SHIFT et ALT vers l'unit centrale,  
uniquement pour le jeu 3 (PS/2), mise  jour possible par eiffelcf. 
Il est ainsi possible d'envoyer des scan-codes diffrents pour la mme 
touches suivant un appui sur les touches Shift ou AltGr. Donc aucun 
driver n'est utile pour le clavier avec cette possibilite (diffrents 
scan-codes par touches).
Correction Alt gauche jeu 2 non modifiable en EEPROM, contrairement  
AltGr.

01/09/2004   v1.0.8
===================

Les tables Shift et AltGr et 'modifier' en flash (mmoire programme) 
sont utilisables sur les 50 caractres principaux du jeu 2 :
 0x07 (F1), 0x0E, 0x0F (F2), 0x11, 0x12, 0x13 (><), 0x15 (AQ),
 0x16 (1), 0x17 (F3),  0x1E (2), 0x1F (F4), 0x24 (E), 0x25 (4),
 0x26 (3), 0x27 (F5), 0x2E (5), 0x2F (F6), 0x36 (6), 0x37 (F7), 
 0x39 (ALTGR), 0x3A (,M), 0x3D (7), 0x3E (8), 0x3F (F8), 0x41 (;,),
 0x45 (0), 0x46 (9), 0x47 (F9), 0x49 (:.), 0x4A (!/), 0x4C (M;),
 0x4E ()-), 0x4F (F10), 0x52 ('), 0x53 (*\), 0x54 (^[), 0x55 (=),
 0x56 (F11), 0x57 (PRTSCR), 0x59, 0x5B ($]), 0x5E (F12), 0x5F (SCROLL),
 0x62 (PAUSE), 0x65 (END), 0x6D (PAGEDN), 0x6F (PAGEUP), 0x76 (VERRN),
 0x8B (WLEFT), 0x8C (WRIGHT), 0x8E (WAPP).
Dans les tables avec le scan-code + 0x80, le code de status est envoy 
via 0xF6 0x05 0x00 0x00 0x00 0x00 0x00 scan-code
 ou 0xF6 0x05 0x00 0x00 0x00 0x00 0x00 scan-code+0x80 si relachement.
Il est prfrable d'utiliser les trames de status  la place des 
scan-codes Atari 0x54  0x5D car ces codes sont affects d'origine aux 
touches de fonctions F11  F20 (SHIFT F1  SHIFT F10).
Ajout du forage possible de la touche CTRL vers l'unit centrale.
La touche Alt gauche ne tient plus compte du forage SHIFT et ALT 
vers l'unit centrale, et utilise la table en EEPROM (Unshift).

23/10/2004   v1.0.9
===================

Correction horloge IKBD, plantage  0H00 et initialisation  la mise 
sous tension.
Ajout code IKBD Power-up.
Ajout gestion afficheur LCD compatible HD44780 sur les broches de 
debug RB4 (Data) et RB5 (Clock).

20/11/2004   v1.10
==================

Ajout commande IKBD_LCD.
L'horloge d'Eiffel peut fonctionner par interrutions (meilleure 
prcision) mais cette possibilite demande  reprogrammer le PIC 
(eiffel_i.hex, v1.10i). Aussi il est galement possible d'utiliser 
la version sans interruptions (eiffel.hex).
Nouveau programme de chargement en Flash avec l'afficheur LCD.
Corrige l'tat Altgr ou Shift dans le cas o les touches 
ALtGr/Shift(s) sont relachs avant la touche.

09/07/2005    v2.0
==================

Firmware incompatible avec les versions prcdantes parceque 
maintenant Eiffel fonctionne  8 MHz ! Ainsi les derniers claviers, 
souris, KVM, et sans fil vec des dlais trs court peuvent fonctionner 
aussi sans problmes (codes perdus  4 MHz).
Le clavier PS/2 peut fonctionner par interruptions (eiffel_i.hex) 
comme l'horloge IKBD.
Ajout filtre pour supprimer les rptitions des touches du jeu 2 AT 
(les rptitions des touches sont cres par le TOS).
Toutes les touches du jeu 2 AT sont maintenant modifiables via les 
tableaux en flash (Shift et AltGr) et en EEPROM (Unshift).

Didier Mquignon
France, 2005

/////////////////////////////////////////////////////////////////////////////////
  

14/11/2001  PROTOTYPE   
=====================

Inversion des signaux Clock/Data de chaque port PS2 pour faciliter le 
routage de la carte definitive. 
(modification sur le prototype et dans le programme)

18/10/2001  v1.0.0
==================

Premire version oprationelle Clavier et Souris et distribue au publique.
	
06/02/2002  v1.0.1     	
==================

Mauvais scan-code retourn pour le mouvement roulette bas, le code 
0x60 correspond a une touche atari ! La valeur libre 0x5A a donc t choisie.

Dcouverte que la touche <*> PS/2 n'a pas le le meme scan-code 
suivant le clavier COMPAQ ou SOFT KEY ! On retournera alors pour ces 
deux touches le meme code 0x2B atari. 

La touche PS/2 0x0E n'etait pas geree, genant pour les claviers Russe, 
je lui ai affect le code libre atari 0x5B.

20/02/2002  v1.0.2     	
==================

Lors du rejeu de la machine, la carte Eiffel maintenait la LED 
CapsLock allume alors que le clavier du point de vue de l'OS tait 
repass en minuscule. Dsormais je prends en compte la commande RESET 
Atari <0x80><0x01> pour rinitialiser le mot d'tat interne du PIC et teindre  
la LED. C'est donc la premire version capable d'couter les commandes 
de l'Atari. 

Un bug grave a t mis  jour lors de multi slection, ou intervient 
le clavier et la souris en mme temps. Le problme tait que des 
trames claviers et souris pouvaient se propager en mme temps et tre 
manqus par le PIC en partie. J'ai donc modifi la dtection des 
paquets, en ajoutant une boucle de surveillance des horloges, 
dtectant ainsi qui commence  transmettre et bloquant immdiatement 
l'autre priphrique. 

La souris  roulette Logitech ne fonctionnait plus tres bien, un 
decalage de bits sur le premier paquet est observe ! Visiblement le 
code n'est pas assez rapide et je suis limite a 30 uS. 

25/02/2002
----------

Simplifciation et d'optimisation en vitesse et taille. Les MPSGet et 
KPSGet sont desormais bloquants (attend le paquet), puisque la boucle 
MAIN surveille desormais directement les horloges sans appeler ces 
dernieres.(=> Gain en taille de code )  
J'ai donc optimiser le code afin de ganger en temps d'execution (et 
donc diminuer la taille du code). 
Les tests semble tres bons, la Logitech  molette refonctionne 
correctement, et les cycles d'executions gagnes peuvent faire esperer 
que d'autres peripheriques qui ont des chronogrammes peut etre  la 
limite minimale de la periode de 30 uS (D'apres les docs techniques) 
pourront fonctionner.

13/03/2002  v1.0.3 DEV
======================

Le bouton central est desormais mappe sur un scan-code, on ne simule 
plus l'appui gauche et droite. 

Support exprimental de la gestion InteliMouse 5 boutons. Cela semble 
bien fonctionner mais reste a resoudre le probleme des incrementations 
de +1/+2/-1/-2 qui semble curieux...Si on defile trop vite la roulette 
verticale, il me semble que l'on augmente le compteur Z de +2 au lieu 
de seulement +1...A priori parce que l'on decodait les paquets, ca prend 
du temps, et pendant ce temps la souris "bufferise".

21/03/2002 
----------

Ajout de l'EEPROM en lecture, les scan-codes souris sont maintenant 
rcuprs dans l'EEPROM data.

25/03/2002 
----------

Ajout d'un commande programmation des codes en EEPROM et support d'une 
commande INQUIRE. 
La commande de programmtion fonctionne. On peut ainsi chosir quel scan 
code retourner suivant les boutons et roulettes de la souris.

26/03/2002
----------

J'ai profite de l'utilisation de l'EEPROM donnes pour dplacer 
totalement la table de correspondance des touches claviers en EEPROM. 
Interressant pour modifier un map de touche, mais un peu dangereux, au 
cas ou l'on enverrait n'importe quoi en programmation. 

02/04/2002
----------

Ajout de la possibilite de programmer le nombre de lignes a scroller 
sur mouvement molette. 
On programme simplement une rptition du scan-code  envoyer sur les 
4 sens possibles. Par dfaut est gal  UN.

04/04/2002
----------

Ajout du support de programmation d'un scan-code clavier.


Laurent Favard
France, 2001/2002

 


