1

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
avatar
Time is on our side.

THE EXPERT 4 : topics/74978-the-expert-4
THE EXPERT 5 : topics/101326-the-expert-5
DUNE 2 : topics/111247-dune-2

2

la valeur de l'adresse mémoire de l'écran c'est $4C00 (triroll)

3

4

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
avatar
Combien de tas de bois une marmotte pourrait couper si une marmotte pouvait couper du bois ?

5

6

donc même question que zéro. On fait comment? Un memcpy au bon moment?

7

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)

8

il ne parle pas de ça. Quand on fait portset, on modifie bien une valeur qlq part non ?!?! (allez [re]voir la doc... portset modifie où certains romcall vont écrire)

Il demande où est cette valeur.

[edit: cross, et bien entendu avec le seul post qui est pas faux roll]

9

toi t'as crossé tongue

« The biggest civil liberty of all is not to be killed by a terrorist. » (Geoff Hoon, ministre des transports anglais)

10

hum c'est moi qui continue les questions alors... si le hw ne permet pas de changer LCD_MEM, alors sur hw2 comment marche les niveaux de gris si on a pas deux buffers ailleurs avec un memcpy au bon moment? expliquez moi pake ça m'agace de me coucher con alors que je pensais connaitre triso

11

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)

12

13

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)
avatar
;)

14

Oui je souhaite seulement connaître l'adresse utilisée par les fonctions du TIOS, rien de plus.

En fait son utilisation n'est absolument pas vitale mais ca me simplifierait quelques lignes de code, et puis ca satisferait ma curiosité smile La hauteur et la largeur associées ne me sont pas utiles (même s'il serait logique qu'elles ne soient pas loin dans la mémoire).

BiHi> le trap #9 permet bien d'obtenir une adresse d'écran mais apparemment celle-ci n'est pas modifiée par PortSet(). Quand je fais :

asm("move.w 0xE,%%d0; trap #9; move.l %%a0,%0" : "=p" (ptr));

ptr pointe toujours vers l'adresse classique 4C00, même entre un PortSet() et un PortRestore(). D'ailleurs le trap 9 ne permet pas de récupérer la largeur et la hauteur qui irait avec.
avatar
Time is on our side.

THE EXPERT 4 : topics/74978-the-expert-4
THE EXPERT 5 : topics/101326-the-expert-5
DUNE 2 : topics/111247-dune-2

15

CBSoft :
En fait son utilisation n'est absolument pas vitale mais ca me simplifierait quelques lignes de code, et puis ca satisferait ma curiosité smile

Je ne suis pas sûr du tout qu'il y ait un rom call qui fasse ça, donc tu serais obligé de faire un hack crade pour ça embarrassed Si c'est uniquement pour récupérer des PortSet() faits dans ton programme, la façon logique de le faire serait de faire "PortSet(buffer,239,127), port = buffer;" au lieu de "PortSet(buffer,239,127);"... Et ça te permettra de récupérer "port" plus rapidement, puisque ça fera un niveau d'indirection en moins.

« The biggest civil liberty of all is not to be killed by a terrorist. » (Geoff Hoon, ministre des transports anglais)

16

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 { })
avatar
Time is on our side.

THE EXPERT 4 : topics/74978-the-expert-4
THE EXPERT 5 : topics/101326-the-expert-5
DUNE 2 : topics/111247-dune-2

17

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)

18

CBSoft :
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 ?

la norme ne dit rien à ce sujet, il me semble ; et en pratique, pas de raison que ça soit le cas, je pense
(rien d'autre que le fait de mettre une virgule dans, par exemple (a=b, c=13) fait que l'expression totale (toute la parenthèse) vaudra la valeur de la dernière partie à droite de(s) la(les) virgule(s) ; ici, l'expression vaudra 13, en l'occurence)

avatar
Tutorial C (TI-89/92+/v200) - Articles Développement Web (PHP, Javascript, ...)
« What is the sound of Perl? Is it not the sound of a wall that people have stopped banging their heads against? » - Larry Wall

19

OK merci !
avatar
Time is on our side.

THE EXPERT 4 : topics/74978-the-expert-4
THE EXPERT 5 : topics/101326-the-expert-5
DUNE 2 : topics/111247-dune-2

20

Pour info, voici tout de même comment marche PortSet() smile. La fonction met :

- l'adresse de l'écran (long) en $6644
- la largeur (byte) en $6648
- la hauteur (byte) en $6649
- la largeur d'une ligne (word) en $6658

Pb résolu. smile
avatar
Time is on our side.

THE EXPERT 4 : topics/74978-the-expert-4
THE EXPERT 5 : topics/101326-the-expert-5
DUNE 2 : topics/111247-dune-2

21

ceci étant vrai sur la ROM sur laquelle tu as testé ; mais est-ce pour autant vrai sur toutes les versions d'AMS ?
avatar
Tutorial C (TI-89/92+/v200) - Articles Développement Web (PHP, Javascript, ...)
« What is the sound of Perl? Is it not the sound of a wall that people have stopped banging their heads against? » - Larry Wall

22

A peu près aucune chance.
avatar
Membre de la TI-Chess Team.
Co-mainteneur de GCC4TI (documentation en ligne de GCC4TI), TIEmu et TILP.
Co-admin de TI-Planet.

23

C'est vrai sur toutes les versions où PortSet() et PortRestore() fonctionnent... Or il me semble que c'est souvent le cas, non ?
avatar
Time is on our side.

THE EXPERT 4 : topics/74978-the-expert-4
THE EXPERT 5 : topics/101326-the-expert-5
DUNE 2 : topics/111247-dune-2

24

Non, on parle des adresses absolues.
avatar
Membre de la TI-Chess Team.
Co-mainteneur de GCC4TI (documentation en ligne de GCC4TI), TIEmu et TILP.
Co-admin de TI-Planet.

25

Dans ce cas on peut lire à l'adresse de la rom call PortRestore et voir où cette dernière écrit.
avatar
Time is on our side.

THE EXPERT 4 : topics/74978-the-expert-4
THE EXPERT 5 : topics/101326-the-expert-5
DUNE 2 : topics/111247-dune-2

26

27

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...
avatar
Time is on our side.

THE EXPERT 4 : topics/74978-the-expert-4
THE EXPERT 5 : topics/101326-the-expert-5
DUNE 2 : topics/111247-dune-2

28

29

Ouais mon post sentait l'intel grin

En fait faudrait déjà voir si l'adresse $6644 change ou pas selon l'AMS.
avatar
Time is on our side.

THE EXPERT 4 : topics/74978-the-expert-4
THE EXPERT 5 : topics/101326-the-expert-5
DUNE 2 : topics/111247-dune-2

30

C'est quasi certain étant donné qu'une bonne partie de AMS est codé en C...
avatar
Le scénario de notre univers a été rédigée par un bataillon de singes savants. Tout s'explique enfin.
T'as un problème ? Tu veux un bonbon ?
[CrystalMPQ] C# MPQ Library/Tools - [CrystalBoy] C# GB Emulator - [Monoxide] C# OSX library - M68k Opcodes