1

Je voudrais savoir comment peut on déterminer la taille d'un handle dont on connait le numéro?

2

On peut pas, sans hacker la table probablement. Ya bien HeapSize, mais c'est de l'approximatif :
HeapSize returns the number of bytes allocated for the heap block referenced by Handle. Due to word alignment and minimum block size, this may not be the amount it was allocated with
. Also note that because of locked blocks, it is possible (rare) that a heap block will actually be bumped up a few words by the HeapCompress routine. So never assume that the value returned by HeapSize is the true number of bytes used by the data stored in the heap block.

3

Ah ok bon je vais me débrouiller autrement alors.
Je n'est pas trouver dans la doc de tigcc la fonction qui permet de sauvegarder une zone de l'écran.
Cette fonction existe t elle?

4

BitmapGet
Gets a bitmap from the port graphical functions are writing to.
BitmapGet stores a series of bytes (the size of which is defined by BitmapSize) defining a bitmap for a rectangular area (whose boundaries are given using the SCR_RECT structure rect) into a buffer pointed to by BitMap. The data is fetched in the port graphical functions are writing to (see PortSet). The first two words at the address BitMap will contain the height and the width (in pixels) of the rectangular area respectively, then the actual data follows. BitMap is usually a pointer to a BITMAP structure.

Mais c'est lent, si c'est un jeu qui doit sauvegarder à chaque frame quelque chose, fais autrement et enregistre dans un handle, à la main.

Et fait gaffe si tu utilises ça en niveaux de gris, faut rediriger les fonctions du TIOS vers les plages mémoire des plans, regarde PortSet et PortRestore.

5

Folco (./2) :
On peut pas, sans hacker la table probablement.

Même en accédant directement à la table, le résultat qu'on va avoir est le même que celui de HeapSize. On ne peut pas avoir la taille à l'octet près.
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é

6

Alors comment il fait un pour bouger un handle ou le redimensionner ? Il prend une taille un peu supérieure pour être sûr de pas se planter ?

7

oui il arrondit au multiple de 4 octets supérieur.

parce que si tu veux stocker un word dans un bloc que t'as obtenu, il a intéret à commencer à une adresse multiple de 4 si tu veux pas un adress error grin

(et du coup, aucun intéret d'allouer des blocs qui ne sont pas multiples de 4 octets, autant les donner à l'user même si il les veut pas)

8

C'est ce que j'avais remarqué en regardant la taille de la structure WINDOW_AMS1 je ne savais pas pourquoi ca taille était de 40octets alors qu'elle en occupait 42.

9

parce que si tu veux stocker un word dans un bloc que t'as obtenu, il a intéret à commencer à une adresse multiple de 4 si tu veux pas un adress error grin

Pas sur 68000 wink
Contrairement à l'ARM (entre autres), le 68000 ne rencontre pas de problème pour écrire 32 bits à une adresse paire non multiple de 4. Les routines d'ExtGraph, parmi bien d'autres, utilisent ce fait.
avatar
Membre de la TI-Chess Team.
Co-mainteneur de GCC4TI (documentation en ligne de GCC4TI), TIEmu et TILP.
Co-admin de TI-Planet.

10

oui, exact, car le bus fait 16 bits, et qu'il faut fatalement 2 accès. Menfin bon.

sur le gestionnaire de mémoire d'AMS, ils en font quoi des 2 bits de poids faibles non utilisés par l'alignement sur 32 bits?

11

truc que je comprends pas, où est le problème à stocker un word à une adresse multiple de 2 ? confus pourquoi arrondir à 4 octets et non 2 ?

12

Il y a beaucoup d'architectures de processeur qui ne peuvent écrire des types de n octets de large qu'à des adresses multiples de n, parce que les autres accès n'ont pas été implémentés dans le matériel du processeur (pour des questions de simplicité et de vitesse: il faut éventuellement découper les accès en plusieurs morceaux).
avatar
Membre de la TI-Chess Team.
Co-mainteneur de GCC4TI (documentation en ligne de GCC4TI), TIEmu et TILP.
Co-admin de TI-Planet.

13

Mais c'est bien deux sur le 68k, pas 4, non ?!? (je parle évidemment pas des octets seuls)

14

Ben oui c'est 2, cf ./9 hehe

Mais peut-être que TI avait prévu une compatibilité avec les 68020/30/... pour des modèles futurs ? Ce qui n'aurait pas été idiot comme raisonnement, quand on voit le bordel que ça a été de faire marcher certaines applis 68000 sur les processeurs suivants, parce qu'elles profitaient du fait que le bus d'adresses du 68000 n'a que 24 bits (en utilisaint les 8 bits supérieurs des adresses pour stocker des trucs qui n'avaient rien à voir).
avatar
Zeroblog

« Tout homme porte sur l'épaule gauche un singe et, sur l'épaule droite, un perroquet. » — Jean Cocteau
« Moi je cherche plus de logique non plus. C'est surement pour cela que j'apprécie les Ataris, ils sont aussi logiques que moi ! » — GT Turbo

15

Ils ont utilisé les émulateurs Line1010 et Line1111 pour leurs propres utilisations, donc non, ce n'est pas du tout compatible avec les 680x0 supérieurs.
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é

16

Ces vecteurs sont utilisés par le proc dans les séries suivantes tu veux dire ?

17

Oui.
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é

18

./16: pour les instructions de la FPU, par exemple.
parce qu'elles profitaient du fait que le bus d'adresses du 68000 n'a que 24 bits

Yep, on peut faire des usages très créatifs de cela trioui
avatar
Membre de la TI-Chess Team.
Co-mainteneur de GCC4TI (documentation en ligne de GCC4TI), TIEmu et TILP.
Co-admin de TI-Planet.

19

Oui, la fonction exit utilisait ça dans les anciennes versions de TIGCCLIB. Ça a été changé, non pas pour virer ce hack (même si ça a été un des effets de la modification), mais parce que ça nécessitait de faire de l'unwinding et donc d'avoir un frame pointer dans toutes les fonctions.
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é

20

c'est quoi l'unwinding ? où est le problème à avoir un frame pointer global au programme et commun à toutes les fonctions ?

21

Le stack unwinding, c'est le fait de dépiler un par un les espaces de travail des fonctions. C'est "impossible" sans frame pointer dans _toutes_ les fonctions (puisqu'il faut remonter toutes les frames une par une).
avatar
Membre de la TI-Chess Team.
Co-mainteneur de GCC4TI (documentation en ligne de GCC4TI), TIEmu et TILP.
Co-admin de TI-Planet.

22

Si tu as un frame pointer dans _main et si tes autres fonctions ne touchent pas à %fp, c'est-à-dire %a6, l'ancien exit marche encore, mais un des buts d'éviter le frame pointer est justement de libérer le registre.

Un autre problème de l'ancien exit était que certains registres n'étaient pas restaurés.

Avec le nouvel exit, la valeur de %sp est restaurée depuis une variable globale et tous les registres sont restaurés depuis la pile, donc ce problème est résolu.
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é

23

Ok, mes programmes marchent pareil.

24

Ah les gars franchement vous métonnerait toujours tant de connaissance sur le 68k!!!
Je me demande comment vous avez accumulé toute cette culture! Surement après de nombreuses années d'utilisation de la Ti?!

25

Oui, après avoir lu x fois la doc de TIGCC, le 68kguide, toutes les docs qui passent sous la main, et encore x fois les sources de gros progs systèmes genre pedrom ou preos grin

26

-deubeule-