#

English

05/05/97 La nouvelle version de démo est là !

Le Meta-Kernel est un noyau accélérant la plupart des commandes classiques de la HP48GX :

- L'affichage de la pile
- L'éditeur en ligne de commande
- La fonction ->STR
- L'éditeur d'équations
- L'éditeur de matrices
- L'éditeur graphique
- Le menu CHARS
- Le gestionnaire de fichiers
- Fonctions diverses
- Variables d'environnement
- Nouveaux drapeaux systèmes

Et rajoute de puissants outils de développement en RPL, External et Assembleur :

- La librairie de commandes
- L'external directement en ligne de commande
- L'assembleur symbolique avec des structures de haut niveau
- Le Désassembleur
- Des fonctions pour le programmeur
- Le créateur de librairies

Le Meta-Kernel necessite une carte de 128 Ko en port 1 uniquement. Il peut aussi fonctionner sur une 256 Ko ou 512 Ko, mais toujours en port 1, ce qui empêche d'accéder directement aux autres ports de la carte.

## Version de démonstration

Une version de démonstration limitée est disponible gratuitement ici.
Les limitations sont :

- Editeur de texte : 2048 caractères, 100 lignes.
- Matrix Writer : Matrice 10 x 10.
- Filer : Uniquement ports 0 et 2.
- Fontes : Fontes scannées uniquement dans le HOME.
- CHOOSE2 limité à 10 choix.
- Assembleur : 256 instructions.
- EDG : On ne peut pas valider les fonctions (circle, ellipse etc..).
- EQW : Taille de l'expression limitée à environ 250 octets pour l'édition, pas de fonctions SIN,ASIN,INV,EXP et LN.
- CRLIB : Les librairies générées ne peuvent pas faire plus de 2 Ko.

## FONCTIONNALITES

Le texte qui suit a pour but de présenter la plupart des fonctionnalités du Meta Kernel, et sert de mini-doc pour la version démo. Le manuel fourni à l'achat fait 150 pages, contient beaucoup plus de détails, d'écrans et d'exemples. Il contient, en plus de la partie utilisation et référence, une initiation à l'assembleur, une initiation à l'external, une liste triée de points d'entrée external (en Anglais), ainsi que la référence des points d'entrée du Meta Kernel.

### Affichage de la pile

L'affichage de la pile a été très nettement amélioré, tant en vitesse qu'en esthétique.
De 5 à 9 lignes peuvent être affichées, suivant la taille de la police et la hauteur de la zone d'état. En effet, les fontes peuvent avoir une taille de 6, 7 ou 8 pixels de haut.
La hauteur de la zone d'état est paramétrable, elle est par défaut de 2 lignes, et peut se réduire à 1 ligne ou disparaître complètement, ce qui laisse plus de place pour l'affichage de la pile. Cette zone d'état contient d'ailleurs plus d'informations: mode de calcul HEX, DEC, OCT ou BIN; mode vectoriel rectangulaire, cylindrique ou sphérique; état du bip; présence et protection d'une carte en port 2, horloge digitale ou analogique.

Les fontes disponibles à l'affichage vont de 6 à 8 pixels de haut. Il existe également une 'mini-fonte' qui permet d'afficher 33 caractères de large.
Les équations et les grobs sont affichés directement sur la pile.

Le graphisme des menus a aussi été modifié, il permet maintenant de connaître le type de l'objet contenu. La mini-fonte MK peut être utilisée, pour afficher des minuscules.

Les nouvelles fonctions de la pile interactive (STACK) sont :
INFO : affiche des informations sur l'objet pointé
shift-gauche INFO : édite l'objet pointé dans l'environnement le plus adéquat
shift-droite INFO : édite l'objet dont le nom est pointé
GOTO : va directement à une ligne donnée
SLOW/FAST : change la vitesse de défilement

### Editeur de la ligne de commande

L'éditeur de la ligne de commandes a été fait par l'auteur de StringWriter. Il offre donc toutes ses fonctionnalités et en rajoute de nouvelles. Mais contrairement aux autres éditeurs, il offre une interface complète avec la HP (accès à tous les menus, à la pile...).
L'éditeur utilise la fonte de la pile (y compris la mini-fonte). Le déplacement à l'intérieur de l'objet est très rapide.
Les nouvelles fonctions de l'éditeur sont :
GOTO : va à une ligne donnée
shift-gauche GOTO : va à un caractère donné
shift-droite GOTO : affiche la table des matières du texte, qui correspond à toutes les lignes commençant par *.
->BEG : va au début de la sélection
->END : va à la fin de la sélection
DEL L : efface la ligne courante
SLOW/FAST : change la vitesse de défilement
INFO : affiche des renseignements sur le texte édité
shift-gauche INFO : édite la partie du texte sélectionné dans l'environnement le plus adapté. Par exemple, si 'X+Y' est sélectionné, on passe dans l'éditeur d'équations, et au retour, le texte est modifié.
BEGIN : indique le début de la sélection
END : indique la fin de la sélection
CUT : copie la sélection au niveau 1 de la pile et l'efface du texte
COPY : copie la sélection au niveau 1 de la pile
PASTE : copie l'objet au niveau 1 de la pile dans le texte
shift-gauche PASTE : copie l'objet au niveau 1 de la pile dans le texte, et le retire de la pile
DEL : efface la sélection
FIND : recherche un texte (ce texte est placé au niveau 1 de la pile)
REPL : recherche un texte dans le but de le remplacer par un autre (le texte à chercher est copié au niveau 1 de la pile et le texte de remplacement est copié au niveau 2)
NEXT : cherche la prochaine occurrence du texte de recherche (au niveau 1 de la pile)
R : effectue le remplacement (remplace la sélection par le texte au niveau 2 de la pile)
R/N : effectue un remplacement et passe à la prochaine occurrence de la recherche (correspond à R puis NEXT)
ALL : remplace toutes les occurrences du texte de recherche par le texte de remplacement
Style : voir ci-dessous
^STK : passe dans la pile interactive
shift-gauche ^STK : évalue la sélection et la remplace par le résultat. Par exemple, si la sélection est 0 COS, elle sera remplacée par 1.
shift-droite ^STK : suspend l'édition en cours (comme HALT). CONT permet de revenir dans l'éditeur.

La plus importante innovation est l'utilisation de styles, et la possibilité de mélanger plusieurs fontes à l'intérieur d'un même texte. Les styles disponibles sont : gras, italique, souligné et inversé. Les polices dans un texte doivent avoir la même hauteur. Les polices peuvent se trouver dans n'importe quel port (0, 2 ou plus).

De plus, un nouveau gestionnaire de mémoire s'occupe des grandes chaînes de caractères. En effet, la plus grande chaîne éditable est normalement limitée à la moitié de la mémoire. Avec le Meta Kernel, la limite est celle de la mémoire disponible !

### ->S2

La commande ->STR de la HP a été totalement reprogrammée en assembleur, ce qui l'accélère des centaines de fois.
Cette nouvelle fonction est utilisée pour l'affichage de la pile et l'édition des objets.
Grâce à elle, l'affichage de la pile prend beaucoup moins de temps, même s'il y a de gros objets. Pour éditer un programme RPL de 1500 octets (seulement !) et contenant un objet code, il faut habituellement 20 secondes. Avec le nouveau ->STR, l'édition peut commencer moins d'une seconde après (2 dixièmes exactement !). De plus, l'objet code (ou librairie ou tout objet External) est perdu par le ->STR, alors que ->S2 le conserve, grâce à la librairie de commandes du Meta Kernel.

### Editeur d'equations (EQW)

Le nouvel éditeur d'équations intégré au Meta Kernel remplace l'Equation Writer.
Le premier avantage est un gain de vitesse énorme, puisque l'équation se modifie à chaque appui de touche, même si elle est grosse.
La saisie est légèrement différente, plus orientée RPL. La fonte utilisée est celle de la pile ou la mini-fonte. Des fonctions copier/coller sont disponibles, ainsi que l'accès aux fonctions EVAL, COLCT et EXPAN sans sortir de l'éditeur.

### Editeur de matrices (MATRIX)

L'éditeur de matrices est maintenant plus rapide, et sait gérer n'importe quel type d'objet.
On peut donc éditer des matrices symboliques, ou même des tables de messages, ou des tableaux contenant plusieurs types d'objets. Ces matrices sont en fait stockées en tant que liste de listes, beaucoup de programmes utilisant déjà ce format.

### Editeur graphique (PICTURE2)

L'éditeur graphique est une nouvelle application apportée par le Meta Kernel.
Il permet d'éditer facilement et rapidement des objets graphiques en noir et blanc, ou en 4 niveaux de gris.
Les fonctions de bases sont le point, la droite, le cercle, l'ellipse, le plan et la courbe spline à trois points. Ces figures se déplacent en temps réel sous le curseur, et sont ensuite posées sur le graphique avec la couleur choisie (blanc, gris clair, gris fonce, noir ou inversé).
Les fonctions supplémentaires sont le copier/coller, le remplissage avec motifs et l'insertion de textes.
Des raccourcis claviers permettent d'accéder rapidement à toutes les fonctions sans passer par le menu.

### Menu CHARS - Editeur de fontes

Le menu CHARS a lui aussi été accéléré. Il supporte les fontes du MK, et permet de plus de les modifier, cette modification se répercutant immédiatement sur l'affichage de la pile.

### Filer

Le filer est un puissant gestionnaire de fichiers, permettant de manipuler facilement les fichiers des répertoires et des ports.
L'écran 'arborescence' montre tous les ports de la machine (0, 2 et plus) avec la place disponible dans chacun d'eux, et la structure des répertoires sous le HOME.
L'écran des fichiers propose la liste des fichiers à l'endroit choisi dans l'arborescence. La navigation s'effectue pas les touches gauche et droite pour remonter et descendre dans l'arborescence.
Cette navigation peut se faire n'importe où : si un répertoire se trouve en backup dans un port, il est possible de rentrer dedans, d'aller dans ses sous-répertoires et de manipuler les fichiers se trouvant à l'intérieur.
Les fonctions disponibles sont : manipulation des fichiers (COPY, MOVE, PURG, ORDER, SEND), et de leur contenu (RCL, EDIT, HEXA, VIEW, INFO, EVAL).

### Fonctions diverses

->FONT : choix de la fonte de la pile,
FONT-> : ressort la fonte courante,
->HEADER : choix de la hauteur de la zone d'état (0, 1 ou 2),
HEADER-> : ressort la hauteur courante de l'entête,
->NDISP : nombre maximum de lignes à afficher pour les objets sur la pile,
INPUT2, DISP2, CHOOSE2 : comme INPUT, DISP et CHOOSE, mais adapté au Meta Kernel (affichage, multi-fonte...),
EDIT, VISIT : éditeur du Meta Kernel (le même qu'en ligne de commande),
EDITB, VISITB : choisit le meilleur environnement d'édition suivant l'objet (texte, équation, matrice, grob...)
->GROB2 : comme ->GROB, mais adapté au Meta Kernel (dont l'affichage des équations comme EQW),
SREPL : recherche/remplacement dans une chaîne de caractères,
SREV : inverse une chaîne de caractères,
AR~LST : convertit un objet de type matrice en liste de listes, et vice-versa,
DIMS : taille d'une matrice (y compris matrices sous forme liste de listes)

### Variables d'environnement

Des variables spéciales peuvent être placées dans le répertoire HOME.
STARTUP : programme lancé à chaque arrêt système. Il est utile pour retrouver rapidement les paramètres habituels de l'environnement.
STARTED, EXITED : programmes exécutés avant et après l'édition en ligne de commande. Ils peuvent être utilisés pour changer la fonte, la hauteur de la zone d'état, ou même (dé)compresser des objects automatiquement.
TOFF, STARTOFF : durée avant l'auto-off et programme exécuté avant l'auto-off.
STARTSEND : programme lancé par le Filer avant d'envoyer un objet par SEND, il permet ainsi de choisir le protocole ou d'autres paramètres de transmission.
STARTEXT : liste de points d'entrées externals, voir External en ligne de commandes.
STARTERR : appelé pour l'affichage des messages d'erreurs.

### Drapeaux MK

Une nouvelle série de 128 drapeaux est disponibles avec les commandes CF2, SF2...
Les drapeaux systèmes -1 à -64 commandent le MK.

| CF2 (par défaut) | SF2
-1 | Multiligne pour tous les niveaux de la pile | Multiligne seulement pour le niveau 1 de la pile
-2 | Chaînes multilignes | Chaînes affichées sur une seule ligne
-3 | Horloge numérique dans la barre d'états | Horloge analogique
-4 | Pas d'autoindentation dans l'éditeur | Autoindentation activée (lors d'un retour à la ligne, le curseur est placé sous le premier caractère de la ligne précédente)
-5 | Curseur limité au texte dans l'éditeur | Edition pleine page
-6 | Chaînes sur une ligne dans ->GROB2 | Chaînes multilignes dans ->GROB2
-7 | ASM-> avec adresses | ASM-> enlève les adresses
-8 | Fonte courante pour l'affichage de la pile | Mini-fonte pour l'affichage de la pile
-9 | Fonte courante pour l'édition | Mini-fonte pour l'édition
-10 | Pile justifiée à droite | Pile justifiée à gauche
-11 | Clavier silencieux | Clics des touches
-12 | Pas de confirmation de PURGE dans le Filer | Confirmation du PURGE dans le Filer
-13 | (réservé)
-14 | (réservé)
-15 | Affichage 'EQW' des équations sur la pile | Affichage standard des équations
-16 | Fonte courante pour l'affichage des équations | Mini-fonte pour l'affichage des équations
-17 | Fonte courante pour les équations dans ->GROB2 | Mini-fonte pour les équations dans ->GROB2
-18 | Fonte courante pour l'édition des équations | Mini-fonte pour l'édition des équations
-19 | Affichage des grobs dans la pile | Affichage standard des grobs
-20 | Affichage des menus en Mini-fonte | Affichage standard des menus

### Librairie de commandes

Certains types d'objets peu courants pour l'utilisateur ne peuvent pas être créés facilement, et ils sont perdus en cas d'édition. Mais grâce au nouveau ->S2 et à la librairie de commandes, ils ne seront plus perdus!

La librairie de commandes du MK permet de créer des objets de tous types: codes assembleurs, externals, grobs en niveaux de gris, entiers systèmes :
TRUE : External 'Vrai'
FALSE : External 'Faux'
$ : External (Ex : DUP external - $ 3188h)
¤ : Entier système (Ex : ¤ 123)
K$ : Caractère (Ex : K$ 65)
XLIB : Référence à un programme en librairie (Ex : 3è programme de la librairie 898 - XLIB 898 3)
INCLUDE : Inclut un fichier
PRG : prologue de programme RPL ou external ($ 02D9Dh)
~ : NoEval, pose l'objet qui suit sur la pile sans l'évaluer ($ 06E97h)
PROG : ~ PRG, permet d'éditer un programme RPL ou external sans l'évaluer à la sortie
CODE : Insert un objet code assembleur
(epsilon) : External, adresse en hexa (Ex : DUP external - (epsilon) 3188)
OBJ : Crée un objet quelconque
GREY : crée un grob en 4 niveaux de gris (Ex : GREY 131 64)
(delta) : External nommé, la liste se trouve dans STARTEXT (Ex : si STARTEXT contient le couple DUP 03188, (delta) DUP équivaut à $ 3188h)

### External en ligne de commandes

La programmation en external est simplifié par la librairie de commandes. Il suffit de taper $ 12345 pour inclure un external.
De plus la variable STARTEXT peut contenir une liste de points d'entrée. Si dans cette liste se trouve "DUP" associé à 03188, il suffit alors de taper d DUP au lieu de $ 3188.

### Assembleur

L'assembleur HPMasd du MK travaille directement sur la HP, et fournit en plus d'une grande vitesse d'assemblage, un ensemble de nouvelles fonctions simplifiant la programmation de petits codes ou de gros projets.

### Désassembleur

Le désassembleur utilise la syntaxe de HPMasd.

### Fonctions diverses pour le programmeur

Des fonctions du noyau sont fournies sous forme de points d'entrée pour créer plus facilement des programmes fonctionnant sous le Meta Kernel.

Par exemple, les routines d'affichage du noyau sont accessibles en assembleur. Ces routines gèrent les multi-fontes et les styles.

### Créateur de Librairies

Le créateur de librairies construit des librairies très rapidement directement sur la HP.

### Auteurs

Jean-Yves Avenard | Noyau, ligne de commande, Editeur de matrices, filer
Christian Bourgeois | ->S2
Cyrille de Brébisson | Assembleur, désassembleur, Crlib, Chars
Etienne de Foras | Editeur Graphique
Gérald Squelart | Editeur d'équations, Traduction Anglaise de la doc

### Crédits

Jake Schwartz | Correcteur de la version Anglaise de la doc
Wlodek Mier-Jedrzejowicz | Venez à la conférence HP à londres, les 20 et 21 Septembre !
Erik Gorka | Tests et suggestions
T Throop | Tests et tests !
Sebastien Casartelli | Tests et suggestions (aussi!)
Mika Heiskanen & Andre Schoorl | Pour leur concurrence qui nous permet sans cesse d'ameliorer nos programmes. Sans eux nous ne serions pas les meilleurs :-)