1

Bonjour,
J'utilise une ti92 (donc avec fargo, et oui ca existe encore), je voudrai comment peut on faire pour déclarer une variable dans la librairie qui serai utilisable dans dans un programme.
J'ai procédé ainsi:
Dans le fichier header malib.h:
malib::var1 	malib@0000

Dans le fichier source malib.asm je ne sait pas ce que je doit mettre...
Je pourrai déclarer var1 et faire
malib@0000   equ  (var1)PC

Mais je ne sais pas pourquoi ca marche pas...

2

Tu as déclaré var1 en tant qu'espace de stockage, avec dc.b, dc.w, dc.l ou ds ?
(NOTE: je ne suis pas un bon connaisseur d'A68k, ni de la programmation Fargo / kernel.)
avatar
Membre de la TI-Chess Team.
Co-mainteneur de GCC4TI (documentation en ligne de GCC4TI), TIEmu et TILP.
Co-admin de TI-Planet.

3

oui j'ai déclaré ainsi var1:
var1:   dc.b   0

quand je compile ce qui ne lui plait pas c'est le pc du (var1)pc

4

y'a bien un pbm avec le (PC)

sans rien ça donne quoi?

5

euh ca compile mais je pense que l'adresse transmise n'est pas la bonne et donc lorsque j'essaye de lire ou d'écrire dans la variable ba ca doit écrire autre part...

6

calculator (./1) :
Dans le fichier header malib.h:
malib::var1 malib@0000

La bonne syntaxe est:
malib::var1 equ malib@0000
Dans le fichier source malib.asm je ne sait pas ce que je doit mettre...
Je pourrai déclarer var1 et faire
malib@0000 equ (var1)PCMais je ne sais pas pourquoi ca marche pas...

Il faut que tu rajoutes malib@0000: là où tu déclares var1 (juste avant ou juste après le label var1:) et que tu mettes un:
xdef malib@0000

Et sinon, un truc qui pourrait t'intéresser: TIGCC permet de coder pour Fargo en C (il faut télécharger http://www.tigen.org/kevin.kofler/ti89prog/libfargo.zip et copier fargo.a dans le répertoire Lib). Mais malheureusement il n'y a pas de portage de TIGCCLIB (absence de personnes intéressées), juste des fargodefs.h plus ou moins incomplets (il y a un header comme ça dans mon portage Fargo de mon jeu Backgammon et un autre dans le ROM dumper de la libticalcs2). Si ça t'intéresse, on pourrait peut porter TIGCCLIB un de ces jours (mais je n'ai pas vraiment envie de faire tout le travail tout seul, je m'en sors très bien avec les bidouillages style fargodefs.h, moi). Avec TIGCC, tu peux également coder en assembleur avec GNU as ou le vieux A68k. (Désolé pour le hors-sujet.)
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

Ah merci de l'info. Et oui je suis interessé pour participé activement au portage de tigcclib pour ti92 (j'en avai meme l'idée il y a peut de temps). J'ai du temp libre et l'envie de le faire mais il me manque surement des notions et des savoirs... Mais c'est peut etre une bonne facon d'apprendre.

8

Et si un portage était fait de tigcclib faudrait il implémenter toutes les fonctions ou l'essentiel des fonctions sont elles des romcalls?

9

L'essentiel sont des ROM_CALLs, mais le problème est que Fargo n'en exporte que très peu, ce n'est pas évident de trouver les fonctions dans la ROM des TI-92. (En général, ouvrir la fonction de AMS 1.00 pour TI-92+ dans un émulateur et chercher les octets intéressants dans la ROM de la TI-92 est un moyen de trouver la fonction.) Le résultat, c'est du code comme ça:
// The LIO functions in the TI-92 ROM functions are not exported by Fargo.
unsigned short (*LIO_SendData) (const void *src, unsigned long size); 
unsigned short (*LIO_RecvData) (void *dest, unsigned long size, unsigned long WaitDelay);

  // Ugly hack to find LIO_SendData and LIO_RecvData...
  LIO_SendData=(void*)ERD_dialog;
  while (*(void**)LIO_SendData!=OSLinkTxQueueInquire) LIO_SendData+=2;
  LIO_RecvData=(void*)LIO_SendData;
  LIO_SendData-=28;
  while (*(void**)LIO_RecvData!=OSReadLinkBlock) LIO_RecvData+=2;
  LIO_RecvData-=150;

  // Ugly hack to find DlgMessage...
  void *DlgMsgPtr=FindSymEntry;
  while (*(unsigned long *)DlgMsgPtr!=0xffb23ebcUL) DlgMsgPtr+=2;
  short (*DlgMessage) (const char *title, const char *message, short left_button, short right_button) = DlgMsgPtr-32;

sick
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é

10

11

(ah tiens j'avais complètement oublié qu'on pouvait faire de l'arithmétique sur des pointeurs de fonctions sans cast supplémentaire #vomi#)

« The biggest civil liberty of all is not to be killed by a terrorist. » (Geoff Hoon, ministre des transports anglais)

12

C'est une extension GCC.
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é

13

Tiens, il y a aussi cette chaîne de définitions qui est fun:
#define __ROM_base tios__0025
extern void __attribute__((may_alias)) __ROM_base;
#define ROM_base (&__ROM_base)
// ROM_base + 0xc4 (49*4) contains the used ROM size - 4, round up to full 1 or 2 MB
#define ROM_size ((49[(unsigned long *)ROM_base] + 0xffffful) & 0xfff00000ul)
#define TI92_VERSION ((int)(ROM_size>>20))

Le résultat est que TI92_VERSION est 1 sur une TI-92 simple et 2 sur une TI-92 II (ou TI-92 E).

Et tiens, ça aussi:
#define __tios_globals tios__001C
extern void __tios_globals;
#define __heap (*(void***)(&__tios_globals+0x1902))
#define HeapDeref(__h) (__heap[__h])
#define HeapLock(__h) (((unsigned short*)HeapDeref((__h)))[-1]|=0x8000U)
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é

14

Kevin Kofler (./12) :
C'est une extension GCC.

Oui bien sûr mais je veux dire que autant je comprends pour les void*, autant pour les pointeurs de fonctions c'est sacrément moche...
Kevin Kofler (./13) :
#define ROM_size ((49[(unsigned long *)ROM_base] + 0xffffful) & 0xfff00000ul)

Ce serait plus efficace de faire
#define ROM_size ((49[(unsigned long *)ROM_base] | 0xffffful) + 1)

« The biggest civil liberty of all is not to be killed by a terrorist. » (Geoff Hoon, ministre des transports anglais)

15

Ah tiens, bonne idée.
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é

16

En effet, bonne idée smile
Pollux nous sort toujours de bons trucs en optimisation.
avatar
Membre de la TI-Chess Team.
Co-mainteneur de GCC4TI (documentation en ligne de GCC4TI), TIEmu et TILP.
Co-admin de TI-Planet.