1

ASM-Dev est un programme faisant le lien entre l'édition, la compilation et le debugage en utilisant Side, AS, CC, Autosymb, et S-ide. Le zip est livré avec tous les programmes nécésaires ainsi qu'avec le pack de fonctions TIGCC pour CC.

Il pèse 4.6 ko et permet une utilisation transparente de tous ces programmes. En ce qui concerne les fonctions pour CC, elles sont toutes en assembleur, et il y en a prés de 40-45. Cela va de la gestion des fichiers en pasant par les niveaux de gris (4, 7 et 8 niveaux de gris) et les sprites.

Par simplicité, tous les fichiers nécésaires sont réunis dans un fichier groupe qui pèse prés de 196 Ko sur la calculatrice.

le lien:
http://perso.wanadoo.fr/ak-boy/fichiers/ASMDev_16.zip

J'espère que ce programme vous sera utile et vous plaira (pour ceux qui font de la programmation on-calc) smile Je suis ouvert à tout remarques.

@+

2

Je suis ouvert à tout remarques

pas testé, mais bonne idée
avatar
Tutorial C (TI-89/92+/v200) - Articles Développement Web (PHP, Javascript, ...)
« What is the sound of Perl? Is it not the sound of a wall that people have stopped banging their heads against? » - Larry Wall

3

Je voudrais savoir comment utiliser les fichiers textes "ams", "ams_c", "c_attoi", "c_attol", "c_attr", etc... avec cc. Je ne comprends pas comment les inclure dans mon programme.
"Mi lernas Esperanto. G^i estas tre facila lingvo"
Apprenez vous aussi l'Esperanto!
Cours gratuit ici et dictionnaire

4

#include "c_attoi"
Mais c'est inutile pour AMS_C car il est inclus automatiquement lors de la compilation.

5

merci. mais quelle est la différence entre "ams" et "ams_c"?
"Mi lernas Esperanto. G^i estas tre facila lingvo"
Apprenez vous aussi l'Esperanto!
Cours gratuit ici et dictionnaire

6

ams est pour les programmes codés directement en assembleur, ams_c est pour ceux créés par CC. C'est parce que les numéros dans ams_c sont négatifs, un hack pour que AS puisse traduire jsr DrawStr en une séquence d'appel valide.
avatar
Mes news pour calculatrices TI: Ti-Gen
Mes projets PC pour calculatrices TI: TIGCC, CalcForge (CalcForgeLP, Emu-TIGCC)
Mes chans IRC: #tigcc et #inspired sur irc.freequest.net (UTF-8)

Liberté, Égalité, Fraternité

7

D'ailleurs, je n'ai pas compris comment fonctionnaient les appels de ROM_CALLs avec CC. Est-ce que tu peux m'expliquer ?

8

Appels de romcalls avec CC: comme dans TIGCC!

Seul truc a vérifier, si le prototype est bien déclaré (c_attrs sert à ca en définissant le prototype de certaines romcalls). Cela ne sert a rien de declarer tous les prototypes des romcall, seulement ceux qui retournent autre chose que du short (pour les paramètres, cela n'a pas beaucoup d'importance)

Pour ams_c, cela ne sert a rien de l'inclure, c automatique:

exemple:

include "c_attrs"
...

main()
{
...
}

9

Non, il me semble que la méthode utilisée par Nitro pour appeler les ROM_CALLs n'est pas comme celle qu'utilise TIGCC. Un simple jsr Nom_Du_Rom_Call suffit pour appeler les ROM_CALL...

10

C'est juste que AS transforme les jsr avec une adresse négative en des ROM_CALLs (non optimisés d'ailleurs - sauf si tu supprimes la définition de old_ams dans ams_c, ce qui te donnera des ROM_CALLs en ligne F).
avatar
Mes news pour calculatrices TI: Ti-Gen
Mes projets PC pour calculatrices TI: TIGCC, CalcForge (CalcForgeLP, Emu-TIGCC)
Mes chans IRC: #tigcc et #inspired sur irc.freequest.net (UTF-8)

Liberté, Égalité, Fraternité

11

Ah, d'accord, merci smile

12

Je n'arrive pas à trouver la doc pour utiliser les ROM_CALLs...
"Mi lernas Esperanto. G^i estas tre facila lingvo"
Apprenez vous aussi l'Esperanto!
Cours gratuit ici et dictionnaire

13

Avec CC ?

Sinon, Kevin, est-ce que c'est à cause de ce hack que l'on ne peut pas appeler plus de 3 ou 4 fois un ROM_CALL ? Si oui, pourquoi ? (désolé, je dois te soûler autant que PingoO me soûle avec ses questions sur le scrolling)

14

Oui, avec CC: quels arguments utiliser, etc...
"Mi lernas Esperanto. G^i estas tre facila lingvo"
Apprenez vous aussi l'Esperanto!
Cours gratuit ici et dictionnaire

15

Ah. Ben il faut bien connaître les rom_calls pour ça.
Mais apparemment, Jarode a fait un fichier où les prototypes sont donnés, ça pourra toujours t'aider.

16

jackiechan
a écrit : Sinon, Kevin, est-ce que c'est à cause de ce hack que l'on ne peut pas appeler plus de 3 ou 4 fois un ROM_CALL ? Si oui, pourquoi ?

Oui. Cf. documentation de -fno-function-cse là: http://tigcc.ticalc.org/doc/comopts.html#SEC10. D'ailleurs, je ne sais pas du tout où est fait l'optimisation correspondante dans CC (je ne trouve pas l'endroit dans les sources), mais elle y est faite quelque part. C'est exactement le même problème que pour les appels en ligne F avec TIGCC.
avatar
Mes news pour calculatrices TI: Ti-Gen
Mes projets PC pour calculatrices TI: TIGCC, CalcForge (CalcForgeLP, Emu-TIGCC)
Mes chans IRC: #tigcc et #inspired sur irc.freequest.net (UTF-8)

Liberté, Égalité, Fraternité

17

Oui, mais toi, par exemple, comment tu les connais?
"Mi lernas Esperanto. G^i estas tre facila lingvo"
Apprenez vous aussi l'Esperanto!
Cours gratuit ici et dictionnaire

18

Parce que j'ai lu la doc de TIGCC. Tous les prototypes des ROM_CALLs sont dedans.
Ainsi que leur description.

19

Le readme l'indique, ce referer a la doc TIGCC pour les prototypes des romcalls et leurs utilisation. Encore faut t'il savoir ce qu'on veut.

jrs nom_romcall suffit avec le fichier 'ams' présent dans mon pack car ce sont directement leur adresses qui sont présisés et nom pas le numéro (CE QUI PERMET DE FAIRE PLUSIEURS APPELS DE LA MEME ROMCALL). Cela est dus au fais que j'ai appliqué je ne sais plus quel patch.

Dans mon readme, j'ai surtout developpé la programmation avec CC et non AS car les fonctions sont pour CC.

20

Dans le fichier 'ams', je suis désolé, je viens de vérifier, mais ce n'est pas l'adresse des rom_call, mais leur numéro (c'est lié, mais quand même).
Donc on ne peut pas faire jsr nom_du_rom_call à mon avis.
Il faut faire :
move.l $c8,a0
move.l 4*nom_du_rom_call(a0),a0
jsr (a0)


Mais je dois me tromper. Tu connais sûrement mieux que moi ton projet.

21

Ah ok, j'ai vu le fichier 'ams_c' en fait.
C'est effectivement l'adresse des rom_call qui est spécifiée, mais j'ai bien peur qu'elles changent selon les versions d'AMS, non ?
Si ce n'était pas le cas, je ne vois pas pourquoi TIGCC s'embêterait encore à faire ce qu'il fait actuellement, c'est-à-dire charger l'adresse de la table des rom_calls, puis charger l'adresse du rom_call voulu à partir de cette table puis enfin l'exécuter.

22

Le fait que dans le fichier 'ams' il y ai les numéros et dans le fichiers 'ams_c' il y ai leurs adresses, c dut au fait que j'ai appliquer un patch au fichier 'ams_c' pour pouvoir faire des appels successifs a une meme romcall sous CC.

Pour 'ams' c l'original. C'est une erreur de ma part, j'aurai du fournir une version de 'ams_c' non modifié (je l'avais oublié).

23

jackiechan> c'est ca smile

petite modif:

movea.l ($c8).w,a0
movea.l 4*nom_du_rom_call(a0),a0
jsr (a0)

car AS ne l'optimise pas tout seul (et oui, c comme ca sad )

24

Bonne question. TIGCC pourrait directement faire un jsr ($xxxxxx).l confus
A moins que ce soit une convention (ou alors pe une disposition pratique) d'appeler une ROMCALL à parir de la table dont l'adresse est située à $c8.

25

Jarode> j'ai vu quelques horribles mulu.w #30,d1 dans certaines de tes routines (notamment les routines de sprites) smile

26

TIGCC dois faire comme dans le post #22 (c un peut plus universel que jrs $xxxxx)

27

Donc pour récapituler les appels de romcalls:

Pour les sources ASM: voir post #22
pour les sources C: comme la prog C sous TIGCC

28

Mais un jsr ($xxxxxx).l serait légerement plus optimisé à mon avis (en taille). Enfin bon c'est du détail, mais comme jackiechan je vois pas pourquoi au moins AMS ne fait pas ça... ou alors $c8 ne contient pas la meme adresse sur tous les AMS.

29

Jarode
a écrit : jrs nom_romcall suffit avec le fichier 'ams' présent dans mon pack car ce sont directement leur adresses qui sont présisés et nom pas le numéro (CE QUI PERMET DE FAIRE PLUSIEURS APPELS DE LA MEME ROMCALL). Cela est dus au fais que j'ai appliqué je ne sais plus quel patch.

C'est une très mauvaise idée. Les programmes compilés comme ça ne marcheront que sur ta version d'AMS. Et le modèle de la calculatrice (TI-89, TI-92+, V200) fait partie de la version d'AMS! Par exemple, AMS 2.05 pour TI-89 n'est pas le même que AMS 2.05 pour TI-92+. Remets-nous immédiatement un fichier ams_c qui fonctionne!
avatar
Mes news pour calculatrices TI: Ti-Gen
Mes projets PC pour calculatrices TI: TIGCC, CalcForge (CalcForgeLP, Emu-TIGCC)
Mes chans IRC: #tigcc et #inspired sur irc.freequest.net (UTF-8)

Liberté, Égalité, Fraternité

30

Nerick a écrit :
Bonne question. TIGCC pourrait directement faire un jsr ($xxxxxx).l confus

Non, les adresses sont complètement différentes d'une version d'AMS à une autre.
avatar
Mes news pour calculatrices TI: Ti-Gen
Mes projets PC pour calculatrices TI: TIGCC, CalcForge (CalcForgeLP, Emu-TIGCC)
Mes chans IRC: #tigcc et #inspired sur irc.freequest.net (UTF-8)

Liberté, Égalité, Fraternité