Hello,
J'ai une petite question au sujet de la fonction PortSet(). Le TIOS écrit par défaut à l'adresse 0x4C00, et cette adresse peut être modifiée par PortSet(). L'adresse actuelle de l'écran doit donc être stockée quelque part, et j'aimerais savoir où (si elle existe !).
J'ai fait une boucle toute simple avec TIGCC qui lit la mémoire de la TI et cherche la valeur 0x00004C00. Cette valeur semble être présente aux adresses 0, 1B88, 5DEC et 662C, seulement elle n'est pas modifiée quand je fais un appel de PortSet(), donc ces valeurs ne doivent pas être les bonnes et correspondre à des valeurs stockées simplement dans des programmes ou je ne sais quoi d'autre.
Dois-je essayer de désassembler la ROM CALL PortRestore(), ou cette adresse est-elle connue ? Ou alors est-ce que j'ai loupé qqch ?
Merci et @+
CBSoft
twindruff Le 30/08/2005 à 20:44Edité par twindruff le 30/08/2005 à 20:54 oui mais il demande ou est stockée la valeur 0x4C00, Peut etre pour modifier cette valeur et rediriger l'écran vers un buffer.
Edit: réponce a squalyl^2

Combien de tas de bois une marmotte pourrait couper si une marmotte pouvait couper du bois ?
donc même question que zéro. On fait comment? Un memcpy au bon moment?
Non mais ce qu'il veut c'est pas l'adresse de l'écran mais l'adresse du buffer où les fonctions du TIOS dessinent...
Je ne sais pas si y a un moyen propre d'y accéder, c'est pas sûr du tout, mais pourquoi en as-tu besoin CBsoft ? (et si tu en as effectivement besoin tu risques d'avoir aussi besoin d'accéder aux variables qui représentent la largeur et la hauteur de l'écran, parce que tu ne peux pas supposer que le buffer en question fait 240x128...)
« The biggest civil liberty of all is not to be killed by a terrorist. » (Geoff Hoon, ministre des transports anglais)
oui, memcpy ^^ (réimplémenté pour être un chouilla plus rapide)
« The biggest civil liberty of all is not to be killed by a terrorist. » (Geoff Hoon, ministre des transports anglais)
BiHi Le 30/08/2005 à 21:00 Ya un trap qui renvoie dans un registre l'adresse de l'écran. Tu dois pouvoir retrouver l'info dans les docs fournies avec PreOs. (sdk/doc/Traps.txt)

;)
Oui je peux stocker le buffer actuellement utilisé, ça ne me pose pas de pb. Merci qd même ^^.
Sinon techniquement, Pollux, le fait de mettre une virgule permet de laisser l'adresse du buffer dans un registre pour les 2 instructions (ou un truc de ce genre) pour que ce soit + rapide, c'est ça ? (sinon j'vois pas l'avantage à part enlever des { })
non, c'est exactement pareil au niveau du code généré, ça peut juste être plus compact dans certains cas au niveau du code source ^^
« The biggest civil liberty of all is not to be killed by a terrorist. » (Geoff Hoon, ministre des transports anglais)
ceci étant vrai sur la ROM sur laquelle tu as testé ; mais est-ce pour autant vrai sur toutes les versions d'AMS ?
A peu près aucune chance.
C'est vrai sur toutes les versions où PortSet() et PortRestore() fonctionnent... Or il me semble que c'est souvent le cas, non ?
Non, on parle des adresses absolues.
Dans ce cas on peut lire à l'adresse de la rom call PortRestore et voir où cette dernière écrit.
PortRestore est vraiment simple, il n'y a que des MOV dans les adresses que j'ai citées. Logiquement ça n'a pas du changer dans les versions existantes de l'AMS...
C'est quasi certain étant donné qu'une bonne partie de AMS est codé en C...