1

Voilà: pour faire plaisir à un ami (qui lance déjà un lanceur après chaque reset), j'ai voulu essayer de faire une commande Exec qui referme tous les dossiers (rigolez pas).
Donc je l'ai fait en _nostub, tout beau, tout propre (enfin...), mais quand je le lance (même avant sa conversion en chaîne exec): il fait rien (c'est frustrant d'ailleurs).
J'ai testé bset avec tous les numéros de bits possibles, il se passe jamais rien.

Quelqu'un veut-il m'aider?
Au passage, si une personne voulait bien perdre son temps à me montrer comment je peut optimiser (ici en taille, la chaîne exec doit être courte) ce programme... Histoire que j'apprenne (c'est optimiser qui m'amuse dans la programation).


;Le source:

include "OS.h"
xdef _nostub
xdef _ti92plus
move.l a5,-(a7) ;on sauvegarde a5 dans la pile
move.l $C8,a5 ;adresse de la table des ROM_CALLs mise en a5
move.l SymFindFirst*4(a5),a0 ;SymFindFirst emplacement:calcul
clr.w -(a7) ;SymFindFirst mode: 0 (liste tous les dossiers)
;SymFindFirst 1er argument ignoré en mode 0
jsr (a0) ;SymFindFirst lancement
lea 2(a7),a7 ;on restaure le pointeur de pile
move.l SymFindNext*4(a5),a5 ;SymFindNext emplacement:calcul

ffn:
bset #5,9(a0) ;on referme le dossier (active le 5eme bit d'état)
jsr (a5) ;SymFindNext lancement
move a0,d0 ;on met a0 dans d0 pour pouvoir le tester
tst d0 ;on regarde si a0 pointe vers 0 -> y'avait plus de dossiers
bne ffn ;si yavait encore des dossiers, on loop

move.l (a7)+,a5 ;on restaure a5
rts
END
Puisse le racisme disparaitre.
(c'est toujours bon à dire ^_^)

2

Les données sont, me semble-t-il, situés à +10, autrement dit, remplace
bset #5,9(a0) ;on referme le dossier (active le 5eme bit d'état)
par
bset.b #5,11(a0) ;on referme le dossier (active le 5eme bit d'état)
Cours et tutos Asm: http://membres.lycos.fr/sirryl

3

Non, c'est toujours faux. Selon http://tigcc.ticalc.org/doc/vat.html#SYM_ENTRY:
typedef struct {
 char name[8];
 unsigned short compat;
 union {
 unsigned short flags_n;
 struct {
 unsigned short busy : 1, local : 1, flag1_5 : 1, flag1_4 : 1, collapsed : 1, twin : 1, archived : 1, in_view : 1;
 unsigned short folder : 1, overwritten : 1, checked : 1, hidden : 1, locked : 1, statvar : 1, graph_ref_1 : 1, graph_ref_0 : 1;
 } bits;
 } flags;
 unsigned short handle;
} SYM_ENTRY;


Donc en comptant:
0(a0): char name[8]; // 8 octets
8(a0): unsigned short compat; // 2 octets
10(a0): union {
unsigned short flags_n;
struct {
unsigned short busy : 1, local : 1, flag1_5 : 1, flag1_4 : 1, collapsed : 1, twin : 1, archived : 1, in_view : 1;
unsigned short folder : 1, overwritten : 1, checked : 1, hidden : 1, locked : 1, statvar : 1, graph_ref_1 : 1, graph_ref_0 : 1;
} bits;
} flags;

Ceci est une union, donc unsigned short flags_n; et struct {
unsigned short busy : 1, local : 1, flag1_5 : 1, flag1_4 : 1, collapsed : 1, twin : 1, archived : 1, in_view : 1;
unsigned short folder : 1, overwritten : 1, checked : 1, hidden : 1, locked : 1, statvar : 1, graph_ref_1 : 1, graph_ref_0 : 1;
} bits;
commencent au même endroit: 10(a0).
Donc:
10(a0): unsigned short busy : 1, local : 1, flag1_5 : 1, flag1_4 : 1, collapsed : 1, twin : 1, archived : 1, in_view : 1; //8 bits = 1 octet
11(a0): unsigned short folder : 1, overwritten : 1, checked : 1, hidden : 1, locked : 1, statvar : 1, graph_ref_1 : 1, graph_ref_0 : 1; // 8 bits = 1 octet

C'est le flag collapsed que tu veux. Donc, tu comptes de la droite (le 68k commence par les chiffres les plus significatifs, mais les numéros des bits de bset correspondent aux puissances de 2 correspondantes):
bit 0: in_view : 1;
bit 1: archived : 1;
bit 2: twin : 1;
bit 3: collapsed : 1;

Donc ce que tu veux est:
bset.b #3,10(a0)
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é

4

Paxal> Les données sont, me semble-t-il, situés à +10
Merci pour avoir voulu m'aider (la doc que j'avais sur la vat à l'air bizzaroïde, ou alors c'est moi qui l'ai pas compris).

Kevin Kofler> Donc en comptant:
Kevin Kofler> [...]

Merci beaucoup (c'est déjà la troisième fois en 4 heures ^_^) pour cette explication (je crois que j'arriverai à comprendre la doc de TIGCC avant 2024 -_^).

Maintenant j'fait un TSR lol (ou plutôt un programme qui prends des arguments et retourne une valeur, ça seras plus raisonable ^_^).
Puisse le racisme disparaitre.
(c'est toujours bon à dire ^_^)