Universal OS 1.13 pour TI 89 et TI92 Plus Copyright (C) 2000. Tous droits réservés. Disponible sur www.ticalc.org et www.ti-fr.org La méthode utilisée par Universal OS 1.11 pour améliorer les niveaux de gris fonctionne mais il se trouve que la qualité obtenue varie d'une calculatrice à une autre, à tel point que c'était parfois pire que sous Universal OS 1.10&-. Cette nouvelle version, à part de quelques corrections de bugs, réutilise cette méthode mais cette fois-ci, c'est l'utilisateur qui règle la qualité à l'aide des touches [<>(diamant)]+[<] et [<>]+[>] : cela concerne aussi les 92+, mais je ne crois pas que cette méthode puisse apporter une quelconque amélioration sur celles-ci. Le programme "adjust" permet de bien distinguer les défauts et peut donc servir au réglage : en fait, c'est un simple écran gris. Il utilise gray4lib et permet aussi, avec d'autres kernels, de tester d'autres versions de gray4lib (ou graphlib si vous utilisez gray4lib de TEOS/DoorsOS puisqu'ils passent par graphlib). Cette solution n'étant pas parfaite, je continue à chercher d'autres solutions. I) Introduction Universal OS est un noyau (kernel). Il fonctionne sur toutes les calculatrices et il est 'entièrement' (cf 'Particularités') compatible avec DoorsOS II 0.96. Vous pouvez archiver n'importe quelle librairie et exécuter des programmes de plus de 8 ko directement, même sur les ROM 2.0x. Les niveaux de gris fonctionnent sur HW1 et HW2 à condition que le programme utilise une librairies récente pour les gérer : graphlib, gray4lib, ou gray7lib (les 8 niveaux de gris ne sont pas supportés sur HW2) par exemple. Universal OS n'est pas terminé : il reste encore quelques limitations. Contenu : - install : pour installer et désinstaller - kernel : le noyau (non nécessaire à la désinstallation) - adjust : affiche un écran tout gris, pour tester les niveaux de gris Universal OS est un 'freeware'. Sa distribution est encouragée, tant que les fichiers restent ensembles et non modififiés depuis le moment où ils ont été initialement distribués. II) Installation et utilisation Si vous possédez une HW2 2.0x, vous devez utilisez HW2Patch : les possesseurs d'une HW2 2.01 devront donc installer AMS 2.03. Lancez install. Vous pouvez maintenant utiliser n'importe quel programme en assembleur. Seul ce programme install peut désinstaller correctement ce kernel. NOTES : - kernel doit être dans le même répertoire que install - Vous pouvez quitter le programme assembleur en cours à n'importe quel moment (à moins que le programme en question ne l'en empêche), en appuyant sur ESC+ON. - Utilisez ce programme à vos risques. Je ne peux être jugé responsable des dommages qui pourraient se produire. - N'INSTALLEZ PAS DoorsOS après avoir installé Universal OS (à moins que vous l'avez désinstallé depuis). - NE DESINSTALLEZ PAS Universal OS avec le programme de désinstallation livré avec DoorsOS ou un autre kernel. - Universal OS ne remplace pas automatiquement un ancien kernel, ceci pour des raisons de sécurité (comment puis-je savoir comment désinstaller un kernel ! Chacun a sa propre façon de s'installer, Universal OS y compris) III) Particularités - util, userlib, gray4lib, gray7lib (sauf sur HW2), graphlib et linelib ont été reprogrammées et intégrées (cad dans la variable 'kernel') à Universal OS. TOUTE LIBRAIRIE EXTERNE PORTANT L'UN DE CES NOMS NE SERA PAS PRISE EN COMPTE. - réglage des niveaux de gris avec [<>]+[<] et [<>]+[>] sur HW2 : ceci n'est possible que si les niveaux de gris sont activées et gérés par gray4lib/graphlib. - Vous pouvez lancer le programme nommé 'doors' à l'aide de [Shift]+[ON]. Différences avec DoorsOS : - [Shift]+[ON] fonctionne plus souvent. - le programme 'doors' peut être archivé. - Tout reset est détecté par Universal OS qui affiche alors un menu : 1) réinitialiser 2) éteindre 3) transférer toutes les variables dans une autre calculatrice Remarques : - grâce à VTI pour pouvez aussi tous transférer vers un ordinateur - lorsque vous éteignez la calculatrice, il se peut qu'elle se rallume toute seule au plus deux secondes après (j'essaierai de trouver une solution à ce problème étrange; tout ce que je sais pour le moment, c'est que c'est lié au link). - ATTENTION ! Cette fonctionnalité ne garantit pas que les variables transférées ne plantent pas la calculatrice de destination. En effet, elles peuvent avoir été mal modifiées s'il y a eu plantage. Le mieux, c'est de sauvegarder le contenu de la calculatrice de destination. - Vous pouvez éteindre la calculatrice à tout moment (même quand AMS est occupé) à l'aide de [2nd]+[ON]. - Universal OS ne récupère pas la mémoire laissée allouée par un programme : personnellement, je ne vois pas comment on peut savoir si un bloc mémoire est perdu ou est important. D'ailleurs, l'algorithme employé par DoorsOS est imparfait. - les fonctions (un)reloc(2) ne sont pas supportées : par exemple, prosit ne fonctionnera pas. (Je pense que c'est le seul) - la fonction userlib::exec ne supporte le programmes zippés : c'est la seule différence avec les libraries de DoorsOS II 0.96. IV) Notes aux programmeurs Ces remarques concernent aussi les programmeurs qui utilisent DoorsOS. * le point de sortie _exit : Imaginez ce cas : une librairie A utilise, dans sa section _exit, une librairie B et de même, B utilise A dans sa section _exit. Si A ou B a besoin d'une information qu'elle a supprimé auparavant alors il y a un bogue, aussi sophistiquée la protection Anti Crash puisse être. Donc n'utilisez pas de librairies à cet endroit. * Compatibilité Pour qu'il n'y ait plus de problèmes liés à de nouvelles versions de ROM, évitez les constantes et préférez les RAM_CALL et les librairies, PUIS les ROM_CALL. En effet, TI a changé quelques ROM_CALL avec la ROM 2.xx : par exemple, _ROM_CALL_15C ne pointe plus sur la routine EM_blockErase mais sur une variable en rapport avec le clavier (J'espère que c'est le seul changement). N'utilisez pas LCD_MEM si le programme est en niveau de gris ! Il existe des variables et des fonctions adaptées. Faites en sorte que vos programmes soient compatibles à la fois sur la TI 89 et la TI92 Plus. Ceci concerne surtout le clavier. * le fichier d'en-tête DoorsOS.h : N'utilisez pas : - doorsos::EM_blockErase equ _ROM_CALL_15c - APD_INIT equ LCD_MEM+$F10 APD_TIMER equ LCD_MEM+$F14 APD_FLAG equ LCD_MEM+$F42 mais les fonctions userlib::get_APD et userlib::get_ADP. - doorsos::ER_throw macro dc.w $A000+\1 endm par sécurité, même si j'ai amélioré la protection Anti Crash pour que le programme quitte le plus proprement possible. * les appels à la ROM : Considérez que toutes les fonctions de tios détruisent D0-D2/A0-A1 : ceci explique pourquoi Falldown and Tetris ne sauvegardent pas les noms sur les ROM 2.xx. Donc faites attention avec les macros WriteStr et WriteStrA. VI) Problèmes connus Universal OS utilise la pile superviseur pour y sauver des informations importantes. Mais certains programmes boggués écrivent à cet endroit : avec d'autres noyaux, ce genre de bogue est invisible puisqu'ils n'y sauvent rien, mais avec Universal OS, la calculatrice peut se planter. VI) A faire - supporte les fonctions reloc - finir la fonction userlib::exec pour qu'elle puisse exécuter des programmes zippés. - empêcher les fonctions graphiques d'écrire en dehors du plan selectionné si les coordonnées sont mauvaises et reporter le bug par un message. VII) Historique 28/05/2000 : Universal OS 1.13 - HW2 89&92+ : le réglage des niveaux de gris par [<>]+[<] et [<>]+[>] devrait fonctionner plus souvent. - La fonction idle_loop ne modifie plus l'indicateur d'activité (il ne l'efface même pas, contrairement aux librairies de DoorsOS). 25/05/2000 : Universal OS 1.12 - HW2 89&92+ : réglage des niveaux de gris à l'aide de [<>]+[<] et [<>]+[>] (adjust permet de mieux évaluer la qualité des niveaux de gris). - HW2 : correction d'un bogue dans graphlib::gray4. - L'utilisation de [Shift]+[ON] n'empêche plus le basic depuis un programme assembleur : il était par exemple impossible d'appeler un programme basic depuis "doors". 11/05/2000 : Universal OS 1.11 - Amélioration des niveaux de gris sur HW2 89 (merci à Olivier Serres). - [Shift]+[ON] supporté : cela lance le programme "doors". - Mise à jour de userlib : ajout de userlib::password. - Mise à jour des routines de niveaux de gris : - initialisation des plans de bits. - gestion du page flipping sous graphlib. - Tous les problèmes de valeurs de retour sont résolus (c'étaient deux bugs : un dans AMS 2.0x et un dans Universal OS). - Universal OS détecte si HW2Patch est nécessaire. - Sur HW2 : la désinstallation ne réactive plus la limitation matérielle des 8 ko, si on avait choisi la méthode qui ne modifie pas la ROM. - Correction de bogues. 27/02/2000 : Universal OS 1.10 - Possibilité de sauvegarder toutes les variables juste avant un reset. - [2nd]+[ON] fonctionne même lorsque AMS est occupé. - le fichier kernel peut être archivé. - Possibilité de ne pas mettre de mot de passe. - Correction de quelques bogues dans : - graphlib::clr_scr2 (décidément !) - les routines de niveaux de gris. - kernel::exec 08/01/2000 : Universal OS 1.02 - Les librairies peuvent être dans n'importe quel répertoire. - Correction du bogue dans graphlib::clr_scr2. 03/01/2000 : Universal OS 1.01 - Correction de quelques bogues au niveau de : - doorsos::kb_globals (_RAM_CALL_010) - util::clr_scr - userlib::lockcalc - checksum de Phoenix 02/01/2000 : Universal OS 1.00 VIII) Comment me contacter e-mail : Reportez tous les bogues que vous trouvez, sans oublier de donner une description précise du problème. Remarque à propos du courrier : Je suis en prépa alors il se peut que je ne puisse pas répondre à tout le monde. Si possible, allez sur le forum de www.ti-fr.org. Ça peut intéresser tout le monde et je n'aurais plus qu'un seul message à écrire par problème.