Quelqu'un peut il me donner une routine, un prog, en asm nostub, pour ouvrir et afficher un fichier STR?
Ca pourrait en plus servir de tutoriel de programmation en asm pour TI
T'es gentil de me le préciser, mais c'est du C, ca je sais le faire!
Luigi a écrit :Tu peux regarder les .s générées par TIGCC.
Ce que je n'arrive pas à faire ***effectuer un SYMSTR sur un nom de variable (je sais, je suis nul)
***c'est obtenir un pointeur sur le premier octet de la variableBah une fois que tu as ton nom de fichier au format SYMSTR, tu peux récupérer la structure SYM_ENTRY associée au fichier avec un SymFindPtr et tu peux de là récupérer son handle que tu déréférences (comme en C).
even fopen: movem.l a3/a5,-(a7) link a6,#0 move.l a0,a3 move.l ($c8).w,a5 move.w #2,-(a7) pea 0 move.l SymFindFirst*4(a5),a0 ;SymFindFirst(NULL, FO_RECURSE); jsr (a0) move.l a0,d0 beq fnull move.l d0,a4 pea (a3) flp: pea (a4) move.l strcmp*4(a5),a0 jsr (a0) addq.l #4,a7 tst.l d0 bne fnext move. b 11(a4),d0 ; même nom, on vérifie que c'est pas un dossier btst.l #7,d0 beq ffin fnext: move.l SymFindNext*4(a5),a0 jsr (a0) move.l a0,d0 beq fnull move.l d0,a4 bra flp ffin: move.w 12(a4),-(a7) move.l HeapDeref*4(a5),a0 jsr (a0) addq.l #2,a0 fnull: unlk a6 movem.l (a7)+,a3/d5 rts
lea varname(pc),a0 bsr fopen move.l a0,d0 beq null pea 1(a0) ; on saute le 0 de début de chaîne move.l ($c8).w,a1 move.l ST_helpMsg*4(a1),a1 jsr (a1) addq.l #4,a7 null: rts varname: dc.b 'test',0
lea varname(pc),a0
bsr fopen
move.l a0,d0
beq null
pea 1(a0) ; on saute le 0 de début de chaîne
jsr ST_helpMsg
addq.l #4,a7
null:
rts
varname: dc.b 'test',0
even
fopen:
movem.l a3/a5,-(a7)
link a6,#0
move.l a0,a3
move.w #2,-(a7)
pea 0
jsr SymFindFirst ;SymFindFirst(NULL, FO_RECURSE);
move.l a0,d0
beq fnull
move.l d0,a4
pea (a3)
flp:
pea (a4)
jsr strcmp
addq.l #4,a7
tst.l d0
bne fnext
move. b 11(a4),d0 ; même nom, on vérifie que c'est pas un dossier
btst.l #7,d0
beq ffin
fnext:
jsr SymFindNext
move.l a0,d0
beq fnull
move.l d0,a4
bra flp
ffin:
move.w 12(a4),-(a7)
jsr HeapDeref
addq.l #2,a0
fnull:
unlk a6
movem.l (a7)+,a3/d5
rts