PedRom a été optimisée pour réduire la conso des piles (du genre un mode idle qd le curseur clignote) un peu comme l'AMS ?
Bien sur! (Ca marche tres bien d'ailleurs).
Raphaël
: Ah oui et puis je voulais te demander un truc Kevin : comment peut-on faire en C pour exécuter un programme avec un paramètre : comme dans en BASIC où l'on met les paramètres entre paranthèse. Pour exécuter un programme depuis un programme C je sais faire mais je ne sais pas comment lui passer le paramètre.
Tu les passes sur la pile d'expressions. push_END_TAG();, puis un push de chaque paramètre en partant du dernier.
char *fptr, *cptr; unsigned short plen; SYM_ENTRY *SymPtr = DerefSym (SymFind (SYMSTR ("example"))); HANDLE h; if (!SymPtr) fatal ("Program not found"); h = SymPtr->handle; if (HeapGetLock (h)) { cptr = fptr = HeapDeref (h); h = 0; } else { cptr = fptr = HLock (h); } plen = *(short*)(cptr) + 3; if (SymPtr->flags.bits.archived) { if (!(cptr = malloc (plen))) { if (h) HeapUnlock (h); fatal ("Out of memory"); } memcpy (cptr, fptr, plen); } EX_patch (cptr + 0x40002, cptr + plen + 0x3FFFE); push_END_TAG(); push_ANSI_string("maths"); // paramètre FTL Parser : nom du fichier TEXT ASM_call (cptr + 0x40002); if (h) HeapUnlock (h); if (cptr != fptr) free (cptr);
Raphaël
: Ouais... je sais pas... on est obligé de le mettre le #define EXECUTE_IN_GHOST_SPACE ?
La deuxième solution va bouffé le double de mémoire au programme de l'utilisateur par rapport à la première.
Raphaël
: avant ça ne genait pas le fonctionnement des programmes quand ça n'y était pas ?
Il faudra que tu comprennes que le fait d'avoir un programme qui ne plante pas est nettement plus important que 140 misérables octets!
Que tu réfléchisses peut-être...
soit tu copies juste un octet pour que l'adresse de la prochaine donnée soit paire puis tu copies des long, soit tu te débrouilles pour que tes adresses soient toujours paires,
Sinon, tu utilises memcpy, memset, ... ?
Ta routine pour effacer l'écran virtuel, tu devrais la coder en ASM.
PpHd l'a pas corrigé? (cf je sais plus quel topic)
Pollux
:Raphaël
:Ta routine pour effacer l'écran virtuel, tu devrais la coder en ASM.
En fait j'ai regardé le code produit par TIGCC en asm pour pouvoir la coder. Et puis des routines en asm pour effacer les buffer c'est pas ce qui manque... d'ailleurs j'avais utilisé celle de extgraph mais pour la Ti89 ça sert à rien d'avoir des buffer de 3840 !
Et puis en asm avec movem.l ça prend un paquet de place par rapport à la mienne.
PpHd l'a pas corrigé? (cf je sais plus quel topic)Bah pas dans la version 0.80 en tout cas.
Oui, mais ça commence à faire un bout de temps que la 0.80 est sortie...
Raphaël
: D'accord, merci. L'interruption la plus rapide fait 90 hz d'après Kevin vu que c'est les niveaux de gris et la boucle est carrément bien plus rapide.