La mémoire de la 83

Nous allons en apprendre un peu plus sur l'organisation de la mémoire de notre ti et comment en tirer parti.

Voici une carte de la ram d'une 83

8000h
    mémoire système
9327h
    mémoire libre

    pile
FFFFh

La mémoire système est utilisé pour les modes, les op, les pointeurs....

Nous l'avons déjà vu, il existe des emplacements mémoires ou sont sauvegardez les données graphiques..

Textshadow : emplacement mémoire ou sont sauvegardés les caractères écrits (grande police).
Cette emplacement a une taille de 128 octets et débute à l'adresse suivante : 80C9h
Si vous voulez que cette sauvegarde ce fasse, il faut activer le mode appTextsave, (iy+appFlags) ou au contraire le désactiver pour l'utiliser pour votre programme.

_clrtxtshd : efface la sauvegarde
_rstrshadow : restaure à l'écran la sauvegarde
_saveshadow : effectue une sauvegarde

Graph screen backup : Contient une sauvegarde de l'écran graphique.
Cet emplacement est situé à l'adresse mémoire 8E29h, est définie par le nom plotscreen dans le fichier ti83asm.inc et à une taille de 768 octets.
Le mode plotloc, (iy+plotflags) contrôle si oui(=1) ou non(=0) la sauvegarde s'effectue

_grbufclr : efface plotscreen
_grbufcpy_v : restaure plotscreen

Savescreen : c'est un emplacement mémoire qui débute à l'adresse 8265h et à une taille de 768 octets. Cet emp est uniquement utilisé lorsque la calculatrice s'éteint d'elle même au bout d'un petit moment.

Statvars : C'est un emp. mémoire qui débute à 858Fh, a une taille de 531 octets et est uniquement utilisés pour les calculs statistiques.

L'importance de ces emplacements mémoires est que l'on peut créer des variables pour stocker des nbres, des valeurs......

Pour créer une variable, il faut rajouter une ligne dans l'en-tête du programme :

.list
#define curspr 8265h
.org 9327h

Pour  initialiser curspr :

ld a,54d
ld (curspr),a

Ceci est plus rapide qu'en effectuant une sauvegarde de af avec la pile.

Nous allons maintenant nous intéresser au variable utilisateurs et système (celles que vous utilisez en basic)

Initialiser une variable utilisateur :

_stox / _stoy : Place la valeur de op1 dans X ou Y

-pour les autre variables :

_stoother : avec op1 le nom de la variable et fpst la valeur

call _op1set2 ; op1=2
call _pushrealo1 ; fpst=2.
call _zeroop1 ; op1=0
ld hl,'A'
ld (op1+1),hl ;
call _stoother

-Rappeler un var utilisateur :

call _zeroop1
ld hl,op1+1
ld (hl),'A'
call _rclvarsym

-Pour les variables système (exemple Xmin)

call _op1set4
ld a,tXMIN
call _stosysok ; Xmin=4
 
pour rappeler :

ld a,TXMIN
call _rclsystok ; op1=valeur de Xmin

Regardez à la fin du fichier ti83asm.inc pour les noms de ces variables.