euhhh
tu devrais pas plutôt mettre
carte dc.b "carte",0
?

Que cache le pays des Dieux ? -
Forum Ghibli -
Forum LittéraireLa fin d'un monde souillé est venue. L'oiseau blanc plane dans le ciel annonçant le début d'une longue ère de purification. Détachons-nous à jamais de notre vie dans ce monde de souffrance. Ô toi l'oiseau blanc, l'être vêtu de bleu, guide nous vers ce monde de pureté. - Sutra originel dork.
Non, c'est bien ça.
Mais c'est un tst.l qu'il faut mettre, pas un tst.w.
personne ne sait comment faire pour savoir si il trouve le bon handle ??
de plus y'a un format à sauter (extension, ...) avant d'acceder aux données ?
pea.l carte(pc)
jsr tios::SymFind
addq.l #4,a7
tst.l d0
beq aaa2
DEREF d0,a0
lea 2(a0),a0
move.w (a0),d1
cmp #125,d1
bne aaa2
rts
aaa2:
lea 4(a7),a7
bra exit
dc.b 0
dc.b "carte"
carte: dc.b 0
Kevin Kofler Le 05/07/2002 à 17:33Edité par Kevin Kofler le 05/07/2002 à 17:40 C'est faux.
Là, tu fais:
HSYM hsym1=SymFind($(carte));
HANDLE handle1=hsym1.offset; //faux
void *fptr=HeapDeref(handle1);
short x=*(short *)(fptr+2);
Alors que ce qu'il faut faire est:
SYM_ENTRY *sym_entry1=SymFindPtr($(carte),0);
if (!sym_entry1) return;
HANDLE handle1=sym_entry1->handle;
if (!handle1) return;
void *fptr=HeapDeref(handle1);
if (!fptr) return;
short x=*(short *)(fptr+2);
Comme tu vois, ce qu'il faut faire est beaucoup plus compliqué.
PpHd Le 05/07/2002 à 17:44 Utilises SymFindPtr au lieu de SymFind
Et au lieu de
tst.l d0
=>
move.l SYM_ENTRY.hVal(a0),d0
move.l a0,d1
PreOs est bourré de saletés, comme tous les autres kernels.
C'est sale parce que cette macro utilise une adresse absolue (donnée par un RAM_CALL, et sous AMS 2 aussi par un ROM_CALL non documenté) pour faire une chose pour laquelle il y a un ROM_CALL documenté (HeapDeref).
Traduction: "Ce qui est permis à Jupiter (le chef - dans ce cas TI), n'est pas permis aux bœufs (le peuple - dans ce cas les programmeurs qui utilisent AMS)."