Tu peux facilement déduire comment appeler une fonction en asm quand tu sais comme l'appeler en C, c'est pour ça
Concrêtement, les RAM_CALLs te permettent :
- De détecter automatiquement le matériel (modèle, version du HW, dimensions de l'écran), la version du système d'exploitation.
en gros, dans ton code, tu feras
move.w #HW_VERSION, d0
et hop, d0 contiendra la version matérielle de la TI, tu n'as pas besoin de savoir comment la récupérer
- D'avoir facilement accès à différentes ressources du système d'exploitation (rom_base, heap, folder_list_handle, ...)
idem si tu as besoin de connaître le handle contenant la liste des dossiers, tu fais
move.w #FOLDER_LIST_HANDLE,d0
- Que le programme renvoie une valeur au TIOS. (comme si c'était une fonction mathématique)
normalement, un programme asm marque juste "fait" ou "done" après son exécution
là ça permet de renvoyer un résultat comme 3, ou x, ...
- Exécuter un programme
- Utiliser les librairies dynamiques à la volée
une lib dynamique, c'est un programme asm qui sert juste à contenir des fonctions courantes qui manquent dans AMS, et qu'on peut appeler. là, tu dis juste que tu veux appeller telle fonction de telle lib, et le kernel va se charger d'aller voir si la lib est présente sur la calculette, de l'extraire de l'archive et de l'appeller
- Manipuler les pack archive
c'est en gros des ZIP
- D'émuler les fonctions exit et atexit standard
spa important pour débuter
Bien sûr, tout cela est faisable en _nostub, mais le kernel met tout ça directement à ta disposition
nostub, c'est le contraire du mode kernel.
en kernel, tu as besoin que le kernel soit installé avant d'exécuter un programme. en nostub, tu n'as besoin de rien du tout
, cela a deux avantages : tu n'as pas besoin de réécrire le code nécessaire pour effectuer ces tâches (donc ton programme prend moins de place, en plus d'être plus rapide à écrire), et deuxièmement, comme les RAM_CALLs sont fournis par le kernel, si les calculatrices évoluent tu n'auras pas besoin de modifier ton programme pour prendre en compte les évolutions. Il suffira que l'utilisateur mette à jour son kernel.
c'est plus clair ?