SOURCES
TYPES
Boule Introduction
Boule Source de programme type
Boule Source de bibliothèque type
Boule Les fichiers .h et .bin

Revenir au sommaire



 

Le Sommaire De Cette Page Le Langage Basic TI92_Fonctions Introduction
puce Ce cours vous présente les sources d'un programme et d'une bibliothèque type, avec des conseils pour avoir le moins de problèmes que possible :-)

puce Un fichier source, c'est un fichier ASCII portant l'extension .asm, il est écrit directement avec un traitement de texte quelconque comme Notepad, WordPad, Edit... ou spécialisé comme FargEdit de Benoît Scherrer.

Surtout enregistrez vos fichiers sources en ASCII, le formatage rajoute du code qui ne peut être compilé.

puce Ce fichier, une fois compilé, donnera soit un programme exécutable soit une bibliothèque utilisable, avec l'extension .92p.

puce Pour ne pas vous imposer ma manière personnelle d'organiser les choses, je vous indique à chaque fois ce qui est obligatoire et ce qui peut être modifié.

puce Enfin, je vous explique aussi ce que sont les fichiers .h et .bin, les défauts et avantages de ceux-ci...





 

Le Sommaire De Cette Page Le Langage Basic TI92_Fonctions Source de programme type
puce N'oubliez pas de laisser au moins un espace à gauche de chaque début de ligne, sinon le compilateur le considère comme un label et génère une erreur.

Par ailleurs, macros et sous-programmes sont expliqués en détail.

; ******************** DEPART DU PROGRAMME SOURCE ********************
  ; facultatif mais utile

  include "tios.h"
  include "flib.h"
  ; bibliothèque(s) utilisée(s) ici, si besoins

  xdef _main
  ; vous êtes obligé de définir ce label, il sert à effectuer un saut vers la première instruction à exécuter. Son nom peut être changé à condition de mettre le même nom au label _main
  xdef _comment
  ; vous êtes obligé de définir ce label si vous voulez définir un commentaire. Son nom peut être changé à condition de mettre le même nom au label _comment

; ******************** DEPART DES MACROS ********************
  ; facultatif mais utile

  ; j'ai pris l'habitude de placer les macros ici, vous pouvez les disposer après le label _main mais mieux vaut avoir une structure nette.

; ******************** DEPART DES SOUS-PROGRAMMES ********************
  ; facultatif mais utile

  ; j'ai pris l'habitude de placer les sous-programmes équivalent aux macros avec paramètre ici, vous pouvez les disposer après le label _main mais mieux vaut avoir une structure nette.

; ******************** DEPART DU CODE PRINCIPAL ********************
  ; facultatif mais utile

_main:
  ; voici le label où commence le programme principal

  RTS ; cette instruction termine le programme principal
  ; cette instruction signifie la fin du programme principal, elle peut être écrite indifféremment en majuscule ou minuscule, le commentaire s'il y en a un, se situera toujours après le point-virgule

; ******************** DEPART DES DONNEES ********************
  ; facultatif mais utile

  ; après le programme viennent les données, ici vous créez des variables, des tableaux... les données de type octet doivent êtres placées en dernier, voici trois exemples :
doublemot dc.l $00289123
mot dc.w $1998
octet dc.b $81

_comment dc.b "Commentaire du programme",0

  end
  ; nous indiquons que le programme source est terminé, il faut laisser obligatoirement au moins un espace à gauche sinon le compilateur signal l'absence de end

puce C'est un petit peu fouillis, voici le minimum :

; ******************** DEPART DU PROGRAMME SOURCE ********************

  include "tios.h"
  include "flib.h"
  ; bibliothèque(s) utilisée(s) ici, si besoins

  xdef _main
  xdef _comment

; ******************** DEPART DES MACROS ********************

; ******************** DEPART DES SOUS-PROGRAMMES ********************

; ******************** DEPART DU CODE PRINCIPAL ********************

_main:
  ; le code commence ici

  RTS ; cette instruction signifie la fin du programme
  ; le code fini ici

; ******************** DEPART DES DONNEES ********************
  ; les données commence ici

_comment dc.b "Commentaire du programme",0

  end





 

Le Sommaire De Cette Page Le Langage Basic TI92_Fonctions Source de bibliothèque type
puce N'oubliez pas de laisser au moins un espace à gauche de chaque début de ligne, sinon le compilateur le considère comme un label et génère une erreur.

; ******************** DEPART DE LA bibliothèque SOURCE ********************
  ; facultatif mais utile

include "tios.h"
include "flib.h"
  ; bibliothèque(s) utilisée(s) ici, si besoins

xdef _library
  ; vous êtes obligé de définir ce label, il doit pointer vers une chaîne de caractère terminée par un caractère nul
xdef nomlib@0000
xdef nomlib@0001
xdef nomlib@XXXX
  ; à chaque fonction est associé un numéro hexadécimal, la première fonction à pour label nomlib@0000...

nomlib@0000: ; label de la première fonction
  ; voici le label du départ de la première fonction, vous écrivez le code juste ici
RTS ; fin de la première fonction
  ; le fonction finie ici

nomlib@0001: ; label de la deuxième fonction
  ; voici le label du départ de la deuxième fonction, vous écrivez le code juste ici
RTS ; fin de la deuxième fonction
  ; le fonction finie ici

nomlib@XXXX: ; ...
  ; ...
RTS ; ...
  ; ...

; ******************** DEPART DES DONNEES ********************
  ; facultatif mais utile

  ; après les fonctions viennent les données, ici vous créez des variables, des tableaux... les données de type octet doivent êtres placées en dernier, voici trois exemples :
doublemot dc.l $00289123
mot dc.w $1998
octet dc.b $81

_library dc.b "nomlib",0
  ; attention, le nom de cette bibliothèque doit être le même que le nom du programme source, ceci pour permettre à Fargo de faire une comparaison

  end
  ; nous indiquons que la bibliothèque source est terminée, il faut laisser obligatoirement au moins un espace à gauche sinon le compilateur signal l'absence de end

puce C'est à nouveau un petit peu fouillis, voici le minimum :

; ******************** DEPART DE LA bibliothèque SOURCE ********************

  include "tios.h"
  include "flib.h"

  xdef _library
  xdef nomlib@0000
  xdef nomlib@0001
  xdef nomlib@XXXX

nomlib@0000: ; label de la première fonction
  RTS ; fin de la première fonction

nomlib@0001: ; label de la deuxième fonction
  RTS ; fin de la deuxième fonction

nomlib@XXXX: ; ...
  RTS ; ...

; ******************** DEPART DES DONNEES ********************

_library dc.b "nomlib",0

  end





 

Le Sommaire De Cette Page TI92_Fonctions Les fichiers
TI92_Fonctions .h
TI92_Fonctions .bin




 

Le Sommaire De Cette Page Le Langage Basic TI92_Fonctions Le fichier .h
puce Les fichiers .h nous intéressent car elle permet d'alléger le code source, en effet vous pouvez mettre dans un fichier .h du code assembleur qui n'a pas une importance fondamentale et qui tend à embrouiller les choses (des macros par exemple, c'est encore pire avec les sprites...).

puce Pour accéder à ce code, il faut lier ce fichier .h au programme avec la ligne include "nom".hnom est le nom du fichier .h.

puce Désormais vous appelez une macro, vous sautez à un sous-programme... comme si de rien n'était :-)

puce Notez que les fichiers portant l'extension .h représentent un autre type (ne nous intéresse pas dans cette page) qui est utilisé pour les bibliothèques, elle contient les noms des fonctions avec les paramètres ainsi qu'une courte description et enfin l'état de certains registres en entrée et en sortie.





 

Le Sommaire De Cette Page TI92_Fonctions Le fichier .bin
puce Les fichiers .bin sont comme leur extension l'indique, du code binaire.
Attention, ceci n'est que l'extension la plus intuitive, vous pourriez trouver un fichier binaire avec une extension quelconque.

puce Je pense que ces fichiers sont utilisés principalement pour sauvegarder des images, peut être pour inclure des opcodes (instructions en assembleur compilées, donc en... binaire) sans avoir à retaper le code assembleur original :-)

puce Ce code binaire, contrairement aux fichiers .h, n'est pas lié au programme.
L'assembleur génère ce code à l'endroit exacte où est déclarée la ligne incbin "nom.bin", où nom est le nom du fichier à inclure.

puce Pour connaître l'adresse de ce code, il vous suffirait d'écrire :

pointeur_binaire:
incbin "image1.bin"

puce puis de faire :
LEA pointeur_binaire(PC),A0 ; l'adresse du code est dans A0





 

 

Lisez la section sur les droits d'auteur et la license d'utilisation avant de distribuer Zguide.

Zguide © 1998, Florian DREVET. Tous droits réservés à l'échelle mondiale