1

yop,

Un petit screen : lv1O

Comme vous pouvez voir, la liste des handles et leur adresse est vide...
J'ai essayé avec Pedrom et AMS, sous Window XP, 7, 10.
Toujours une liste vide.

Je ne pense pas qu'il y ait eu des tonnes de binaires de VTI.
Pourtant si quelqu'un en avait un qui ne souffre pas de ce problème, je serais complètement preneur.

Merci d'avance !


(et oui, c'était super fun de poster dans la catégorie débutants, nananère embarrassed grin)

2

Lionel Debroux a été invité sur ce sujet.

Sais-tu s'il existe une version de TiEmu sans GDB et portable ?

Merci bien smile

3

Bon, d'après Lionel, ça ne marchait qu'avec les vieilles versions d'AMS.
Sait-on pourquoi ? la table des handles avait un handle bien spécifique, qui a changé ensuite ?
Serait-il possible de patcher PedroM pour forcer cette compatibilité ? Surtout que PedroM vise la compatibilité AMS 1.x au maximum, ça ne devrait pas être sorcier si on sait ce qu'on veut faire.
Ca m'intéresserait d'en savoir plus en tout cas, parce que ça aide vraiment pour les programmes qui manipulent beaucoup de handles. smile

PpHd a été invité sur ce sujet.


Peut-être en saurais-tu plus ? Merci d'avance smile

4

Il va te dire que c'est VTI qu'il faut patcher tongue
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

5

Je ne sais pas comment Vti récupérait cette table donc, je ne sais pas si c'est possible.

6

Debug.cpp : #define ROMTBL(x) hw->getmem_dword(hw->getmem_dword(0xc8)+(x)*4) #define HANDLE_TABLE hw->getmem_dword(ROMTBL(0x2f)+0x11a) #define HANDLE_TABLE_92 cpu_readmem24_dword(romFuncAddr[0x1c]+0x1902) #define HANDLE(x) hw->getmem_dword(HANDLE_TABLE+4*(x)) #define HANDLE92(x) hw->getmem_dword(HANDLE_TABLE_92+4*(x)) #define GETBYTE(x) (cpu_readmem24(x)&0xff) #define GETWORD(x) (cpu_readmem24_word(x)&0xffff)if ((calc==89)||(calc==94)) { HandlesBox->Caption="Handles"; max=hw->getmem_word(ROMTBL(0x2f)+0x104); if (max>0x800) max=0x800; for (i=0,chg=0;i<max;i++) { int addr=hw->getmem_dword(HANDLE_TABLE+4*i); if (addr) { n=i+1; if (addr!=oldHandleList[i]) chg=1; } } if ((n!=oldHandleCount)||chg) { Handles->Clear(); for (i=0;i<n;i++) { int addr=hw->getmem_dword(HANDLE_TABLE+4*i); sprintf(str,"$%4.4X -> $%6.6X",i,addr); oldHandleList[i]=addr; Handles->Items->Add(str); } oldHandleCount=n; } } else if (calc==92) { HandlesBox->Caption="Handles"; max=hw->getmem_word(0x5d2c); if (max>0x800) max=0x800; for (i=0,chg=0;i<max;i++) { int addr=hw->getmem_dword(hw->getmem_dword(0x5d42)+4*i); if (addr) { n=i+1; if (addr!=oldHandleList[i]) chg=1; } } if ((n!=oldHandleCount)||chg) { Handles->Clear(); for (i=0;i<n;i++) { int addr=hw->getmem_dword(hw->getmem_dword(0x5d42)+4*i); sprintf(str,"$%4.4X -> $%6.6X",i,addr); oldHandleList[i]=addr; Handles->Items->Add(str); } oldHandleCount=n; } }
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

7

Nan mais tu l’as eu où le source ? C’est du cpp en plus, un simple rebuild suffirait pour corriger ça ? grin

8

Ça traînait dans un coin de mon disque dur, j'avais dû télécharger ça il y a une vingtaine d'années. Possible que ce soit une version bêta, par contre.

EDIT : ah ben voilà, qu'est-ce que je disais :
https://www.ticalc.org/archives/files/fileinfo/85/8554.html
C'était le premier endroit où tu aurais dû regarder, voyons !
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

9

Ah, au passage : ça utilise C++Builder. Il y a une version gratuite pour un usage non-commercial ici :
https://www.embarcadero.com/fr/products/cbuilder/starter
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

10

T’es juste un amour ! love
Par contre je vais devoir faire le setup sur une VM parce que mon pc perso à passé le CPU à gauche et je peux pas installer sur mon pro.
L’avantage d’un patch est que ça permettrait de refournir un binaire récent sur ticalc/-fr.
Merci encore !

11

Folco (./10) :
mon pc perso à passé le CPU à gauche
Condoléances tsss
(il lui est arrivé quoi ?)

Folco (./10) :
Merci encore !
Bah, de rien hehe
(si c'est trop galère à recompiler et que c'est juste une adresse à changer, on peut aussi patcher l'exécutable shhh)
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

12

C'est sur ticalc.org que j'aurais cherché les sources, ouais.
Mais à moins d'utiliser un patch binaire, ce qu'il faudrait surtout, ce sont les sources de la version modifiée par JM, de préférence celle dont les breakpoints fonctionnent correctement. La version modifiée par JM est quand même significativement meilleure que le VTI d'origine...

ROMTBL(0x2f)+0x11a
ROMTBL(0x2f)+0x104
Eh ? Un offset à partir de ScrRect ? Tu m'étonnes que ça ne fonctionne pas sur des versions d'AMS plus récentes, ou sur PedroM...
Même s'il faut faire deux codes différents selon la génération d'AMS, parser HeapDeref, par exemple, est une méthode nettement plus fiable. EDIT: d'ailleurs, sans surprise, c'est ce que fait TIEmu (
debrouxl/tiemuGitHubTIEmu is an emulator of Texas Instruments hand-helds (89/89T/92/92+/V200) for Linux &amp; Windows, written with GTK+. Features include highly accurate emulation and a graphical debugger. - debroux...
).

Un autre truc à corriger: dans la table de HANDLEs, il y a 2000 (0x7D0) HANDLEs, et non 0x800 (2048). En tout cas, c'est comme ça sur les versions modernes d'AMS.
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

J'ai vu aussi cette bizarerie avec ScrRect trifus Et pareil pour le nombre de handles.
Pour cette dernière valeur, c'est probablement une approximation à une époque où AMS était mal documenté.

Ok C++ builder. Tu t'inscris sur le site pour dire que tu veux faire une utilisation gratuite/essais gratuit, et il te demande une license à l'install top

14

Normalement ils t'envoient par mail une clé de licence à entrer. Y'a peut-être un peu de délai dans leur système.
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

Zerosquare (./8) :
Ça traînait dans un coin de mon disque dur, j'avais dû télécharger ça il y a une vingtaine d'années. Possible que ce soit une version bêta, par contre.

EDIT : ah ben voilà, qu'est-ce que je disais :
https://www.ticalc.org/archives/files/fileinfo/85/8554.html
C'était le premier endroit où tu aurais dû regarder, voyons !

Wow, j'avais toujours cru que c'était un projet closed-source, et que c'était pour ça que KK avait horreur de VTI. Merci beaucoup pour l'info, je garde ces sources précieusement smile
avatar
Appartiens à l'Unification Ultime !

Exec "4e444e750000"

16

Parfait merci. smile
J'étais dans les sources du CPU hier soir love
Pareil que pastek, je savais pas que les sources étaient publiques, ça donne limite envie de se mettre dedans love

17

Lionel Debroux (./12) :
parser HeapDeref, par exemple, est une méthode nettement plus fiable. EDIT: d'ailleurs, sans surprise, c'est ce que fait TIEmu
Pour toutes les versions d'AMS ?

Zerosquare -> j'avais pas vu le mail, ça marche merci.

Bon par contre, impossible d'ouvrir le projet VTI. Peut-être faut-il recréer un projet et importer toutes les sources dedans. J'ai pas trop le temps en ce moment.
En tout cas, si j'y arrive, le patch a l'air vraiment simple à faire...


Bon, au travail !

Pedrom, graph.asm :
        ScrRect:	dc.b	0,0,SCR_WIDTH-1,ST_Y-1			; Working screen
        STRect:		dc.b	0,ST_Y+1,SCR_WIDTH-1,SCR_HEIGHT-1	; ST screen
        FullRect:	dc.b	0,0,SCR_WIDTH-1,SCR_HEIGHT-1		; Full Screen
        MenuRect:	dc.b	0,0,SCR_WIDTH-1,18			; Menu Screen
+++
+++     prout:		ds.b	$011A-(prout-ScrRect)
+++     		dc.w	HEAP_TABLE
#triclasse#

18

Pas sûr que PpHd accepte ce patch grin
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

19

Ah bon tu crois ? #triprie#
Surtout qu'apparemment ce truc sert à récupérer le nombre max de handles, pas le handle de la table qui doit être hardcodé quelque part.

Au fait, Debian 10, PedroM ne compile plus straight forward après un make clean :
patch: **** Can't rename file mpfr-impl.h to '' : No such file or directory
make[2]: *** [Makefile:24: mpfr] Error 2
make[1]: *** [Makefile:128: lib/t-ihm.o] Error 2
make: *** [Makefile:6: all] Error 2

20

Bon, personne aurait C++ builder à dépoussiérer pour recompiler ce truc svp ? Ici j'arrive pas à installer proprement, il me fait suer avec des histoires de license et compagnie cry

21

Essai gratuit avec https://www.embarcadero.com/products/cbuilder/start-for-free ?
(mais j'ignore si le projet sera encore compatible cheeky)


edit : mmm OK, il semblerait qu'on ait déjà un peu évoqué cette piste triso

22

Au pire, il doit y avoir moyen de patcher directement l'exécutable... Tu pourrais décrire ce qu'il faut changer ?
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

23

Bon, en greppant un peu dans PedroM, voici ce que j'ai :
HEAP_TABLE est défini dans Romcalls.h, c'est le romcall $441
La table elle-même est déclarée dans Vars.h. Sa taille est effectivement de 2000 emplacements, soit $7D0, comme souligné plus haut par Lionel.

Donc, il faudrait patcher :
Zerosquare (./6) :
max=hw->getmem_word(ROMTBL(0x2f)+0x104);
Là il faut juste remplacer ce call par la valeur en dur, donc j'imagine écrire dans la variable sur la pile.
Zerosquare (./6) :
int addr=hw->getmem_dword(HANDLE_TABLE+4*i);(deux occurences)
Là, vu la définition de la macro HANDLE_TABLE, c'est expand en :
int addr=hw->getmem_dword(hw->getmem_dword(ROMTBL(0x2f)+0x11a)+4*i);Il faudrait donc remplacer le $11A par $441.

Le second fix semble trivial, par contre le premier ?? Faut assembler ce tout petit bout de code pour modifier le code en place, et combler la place inutile avec des NOP ?

24

Le tout va être de retrouver l'emplacement du code, mais sinon ça m'a l'air relativement simple, je vais regarder ça smile

Tu as un lien vers la version de l'exécutable de JM (j'imagine que c'est cette version-là que tu voudrais utiliser comme base) ?
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

25

T'es un amour !! love

26

http://www.mirari.fr/UKjv

Merci smile
J'ai mis avec un PedroM de 89 et un de 92+. smile

27

28

Mince je suis embêté, je sais plus où j'ai rangé ma balaclava sad
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

29

Alors là c'est mal parti... tsss

30

J'ai retrouvé un vieux cache-nez, ça devrait faire l'affaire.

Par contre Folco, t'aurais pu prévenir que ton exécutable était compressé, j'ai failli me casser une dent en mordant dedans embarrassed
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