1

2

Bonne question.
Une solution serait d'utiliser ton registre pointeur vers tes données (a6 ?) qui doit rester valide si tu ne fais pas appel à AMS.
L'autre solution est de passer par un vecteur libre.

Je ne vois pas d'autres solutions pour le moment.

3

L'exécution en Flash rajoute des contraintes pas sympa, et dans une lib, tu ne peux même pas compter sur __ld_entry_point / __ld_entry_point_plus_0x8000 (ou des noms de ce genre)...
Si tu ne fais pas appel à AMS, c'est plus simple que si tu y fais appel, parce que tu n'as pas à te soucier de ce qu'AMS fait de ta global register variable (et donc, de devoir la réinitialiser à chaque entrée dans un handler).
avatar
Membre de la TI-Chess Team.
Co-mainteneur de GCC4TI (documentation en ligne de GCC4TI), TIEmu et TILP.
Co-admin de TI-Planet.

4

Tu peux aussi utiliser (abusivement grin) le haut de la pile.
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é

5

6

Tu peux pas créer une interruption logicielle à partir d'un Trap qui permet d'exécuter du code minimaliste en RAM qui lui renvoit pour chaque variable allouée en RAM son adresse ? (Bien sûr si tu n'as qu'une variable "globale" on peut faire plus simple).
En gros au chargement du programme tu alloues une zone mémoire pour tes variables, tu recopies le code de ton Trap en RAM...
avatar
la Nature nous montre seulement la queue du lion. Mais je suis certain que le lion a qui elle appartient pense qu'il ne peut pas se révéler en une fois en raison de son immense taille.

- Fondateur de Ti-Gen -: http://www.tigen.org

- Membre du Groupe Orage Studio -: http://oragestudio.free.fr/

- Mon site perso -: http://tisofts.free.fr

Projets TI68K en cours:
GFA-Basic = http://www.tigen.org/gfabasic
Arkanoid.
PolySnd 3.0.

7

Ca revient à utiliser un vecteur pour y stocker un pointeur vers ses données en plus lent

8

9

De toute facon tant que tu t'en sers que pendant ton programme, tu peux faire ce que tu veux.

10

11

12

Tu peux proposer un patch pour.

13

14

Ce que tu peux faire, c'est stocker l'adresse des ramcalls que tu veux en RAM (c'est le lanceur qui prérmpli cette zone mémoire avec ce qu'il faut).
Après tu n'a plus qu'à lire l'adresse de la ramcall et l'appeler.

15

16

17

Si c'est PedroM, tu peux faire ça:

.section .text.PedroMsmallmenu,"x"

| short PedroMsmallmenu(unsigned short x asm("d0"),unsigned short y asm("d1"),
| unsigned short nbitem asm("d2"),char *txtlist asm("a0"),void *ptr asm("a1"));
PedroMsmallmenu:
| Search for RAM_CALL table
0: addq.l #2,%a1
cmp.l #0x4c00,(%a1)
bne.s 0b
| Get kernel::LibsExec
movea.l (0x1d-0x21)*4(%a1),%a1
| Call userlib::smallmenu through kernel::LibsExec
move.l #0x000c0000,-(%a7)
pea.l L.userlib(%pc)
jsr (%a1)
addq.l #8,%a7
| Check if an item was selected
tst.w %d2
beq.s 1f
clr.w %d0
1: rts

L.userlib: .asciz "userlib"


short PedroMsmallmenu(unsigned short x asm("d0"),unsigned short y asm("d1"),
 unsigned short nbitem asm("d2"),char *txtlist asm("a0"),void *ptr asm("a1"));
#define SmallMenu(x,y,n,t) (PedroMsmallmenu((x),(y),(n),(t),ROM_base+0x1A000))


Ça marche même en _nostub (mais évidemment seulement sous PedroM). grin

(Et évidemment il ne faut pas utiliser de RAM_CALL pour ROM_base, le fameux (*(unsigned long *)0xc8)&0xE00000uL fonctionne très bien. smile)
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é

18

19

Tu ne peux pas exécuter en FlashROM sous AMS de toute façon.
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é

20

21

22

23

Ca doit être ROM_BASE (Rappelles toi, c'est pour PedroM).

24

ROM_base+0x1A000 plus précisément. Et oui, je cherche LCD_MEM, c'est un des RAM_CALLs, RAM_CALL qui ne sert strictement à rien parce qu'il ne change jamais, mais du coup c'est parfait pour retrouver la table. tongue
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é