30

stfox (./27) :
PpHd -> Génial ce truc !! C'est super interessant, à priori on peu y glisser des formats autres que zlib ! Où est-ce que je peux trouver plus d'infos sur KPack ? Car je ne parviens pas à trouver Preos sur ton site gol.gif lol


Oui, n'importe quel format. Et il sera reconnue par le kernel (auto executable, librairies annexes gérées, etc).
kpack = Pack Archive au format shrnklib (On pc)
zpack = Pack Archive au format ziplib (On calc)

Et pour trouver les sources de Preos, regarde la dernière news.

31

Par contre, si je comprend bien, ce n'est que la décompression qui est 'transparente', car il faut au préalable créer
l'archive 'à la main', donc ce n'est que la moitié de ce que je souhaite, et grace à un outil du genre STZ,
l'interet serait de rendre également la compression transparente smile

Quelqu'un connait la vitesse de compression du compresseur le plus rapide sur TI ?
Le mieu que j'ai trouvé (en asm) était à 10ko/s en compression et 80ko/s en décompression.

32


Sans répondre à ta question, je me permets de dire ce que je pense de la compression : Il vaudrait mieux utiliser des formats existants, plutôt que d'en rajouter un à la bonne 10aine qu'on a déjà. Enfin, c'est mon avis tout personnel, qui ne vaut que dans le cas de la large diffusion d'un format de compresion.

33

stfox (./31) :
l'archive 'à la main', donc ce n'est que la moitié de ce que je souhaite, et grace à un outil du genre STZ,
l'interet serait de rendre également la compression transparente smile.gif


Qu'entends-tu par compression transparente ?

34

PpHd -> La même chose que lorsque que l'on active la compression de fichier dans le système de fichier NTFS
C'est à dire qu'à chaque opération de fichier: ouverture/fermeture, création, modification etc, celui-ci est automatiquement
compressé/décompressé, sans que l'utilisateur/application ne s'en soucis smile
Mais pour ca, il faut un compresseur spécifique pour que les ressources consommés soient minimales.

Folco -> Pour une large diffusion, encore faudrait'il qu'il y ai du public pour ca, or, si je ne m'abuse,
autant dans l'univers TI que HP la communauté se limite à une poigné de pationnés lol
Et j'aurais pas choisi de développer sous PedroM qui est d'autant plus exclusif niveau utilisateurs ....
Donc, pour la large diffusion, c'est déjà mort avant d'être né ... picol

Le principal but d'un drivers de compression, c'est justement d'être 'indolore' autant pour les
applications que pour l'utilisateur, c'est ni plus ni moins qu'une option à activer.
Les données 'vus' ne sont jamais les données compressées, donc le format de compression utilisé,
on s'en tape un peu beaucoup smile
Il faut se représenter ca comme une couche supplémentaire entre les applications (et donc l'utilisateur),
et les donnés.
De la même manière qu'on délègue au système d'exploitation la facon d'organiser les fichiers,
c'est le système qui s'occupe de compresser ou décompresser les fichiers suivant l'appel système.
Comme c'est le cas avec kPack et la décompression !

35

Ben... sur TI-68k, un driver de compression ne fonctionnera qu'avec des programmes qui sont au courant qu'il y en a un, c'est à dire environ zéro.
En effet, nombreux sont les programmes qui se chargent eux-mêmes de la lecture des données, assez souvent à l'aide de pointeurs directs (vat.h) ou au pire à l'aide de fread/fwrite (stdio.h) embarqués dans le programme, qui ne sont pas au courant qu'il peut y avoir un driver de compression.
avatar
Membre de la TI-Chess Team.
Co-mainteneur de GCC4TI (documentation en ligne de GCC4TI), TIEmu et TILP.
Co-admin de TI-Planet.

36

Y'a forcément un appel système qui est fait à un moment ou à un autre, fopen, fread, fwrite, fclose etc c'est l'OS
qui s'en occupe, pas l'application, même pour un accès direct au fichier avec des instructions du genre 'HeapDeref'
sont des appels systèmes, donc interseptables par un drivers qui est censé fonctionner en mode noyau.

Je me trompe ? confus

37

oui, y'a ni driver ni noyau, juste une API en rom ^^

donc non y'a pas de fopen ni de filesystem, juste symfind qui te donne un handle, lequel te donne une adresse mémoire ou lire ton fichier, et les fonctions de flash pour écrire le fichier ^^

fichier TI = malloc avec un nom de fichier ^^

38

./36: c'est bien comme ça que fonctionne un OS normal, mais pas ceux des TI-68k wink
Certes, dans PedroM, certaines fonctions stdio.h sont built-in... mais pour ça, il faut compiler spécifiquement pour PedroM, et c'est pour ça que j'écris qu'il y a environ zéro programmes qui pourraient fonctionner avec un driver de compression tel que tu le proposes.
avatar
Membre de la TI-Chess Team.
Co-mainteneur de GCC4TI (documentation en ligne de GCC4TI), TIEmu et TILP.
Co-admin de TI-Planet.

39

Tu es sûr qu'il faut recompiler pour PedroM ? Car il me semble bien qu'on peut faire marcher beaucoup
de progs initialement prévu pour AMS, sans devoir recompiler oui

Y'a peut-être une subtilité qui m'échappe, alors prenons un exemple :

Pour obtenir le pointeur des datas d'un fichier il faut faire :

FileSym = SymFindPtr(SYMSTR(FileName),0);
pDatas = HeapDeref(FileSym->handle);

Alors question : ou est physiquement le code des fonctions SymFindPtr et HeapDeref ?

Si le code de ces instructions se trouve dans l'application, alors aucun moyen en effet,
mais ca m'étonnerai car celà signifie aucun appel système.

Si le code se trouve dans la ROM, alors il y a appel système donc en adaptant
la routine correspondante à l'appel système, on peut tout faire !!!

Notament décompresser les datas avant de retourner le pointeur smile

PpHd ou es-tu ? lol

40

Le code de SymFindPtr et HeapDeref est physiquement dans l'OS.
Mais ce que tu veux faire se heurtera à la taille limitée de la RAM...

Pour maintenir la correspondance [variable compressée] <-> [variable décompressée], peut-être peut-on utiliser des twin symbols. Il faut d'abord s'assurer qu'AMS n'est pas perturbé par un redimensionnement des twins (je n'ai jamais essayé un truc pareil !).
avatar
Membre de la TI-Chess Team.
Co-mainteneur de GCC4TI (documentation en ligne de GCC4TI), TIEmu et TILP.
Co-admin de TI-Planet.

41

l'info qui manque:

le code de ces fonctions est dans la ROM de la calcu. Mais la ROM n'est PAS UN OS au sens ou l'OS ne fonctionne pas en espace superviseur et les programmes en espace utilisateur, etc, enfin pas strictement.

En tout cas les fonctions "symfindfirst" et ksétéra sont des routines stockées en ROM, identifiées par un numéro:

on lit le long à 0xc8, le contenu est l'adresse de la table des appels.
a partir de ce pointeur, on a une liste de long qui sont des pointeurs vers les routines.

exemple:
http://tigcc-linux.cvs.sourceforge.net/viewvc/tigcc-linux/tigcc/include/C/vat.h?revision=1.5&view=markup

#define SymFindFirst _rom_call(SYM_ENTRY*,(SYM_STR,short),6C)

symfindfirst est le rom call 0x6c, dont l'adresse dans la ROM est stockée à l'entrée 0x6c (=108) de la jumptable de cette ROM.
quand tu l'appelles, c'est juste un appel à cette adresse de la ROM.

la ROM est juste un ensemble de librairies. rien n'est prévu pour la patcher, ajouter des hooks, etc

42

Lionel Debroux (./40) :
Le code de SymFindPtr et HeapDeref est physiquement dans l'OS.


Ah, merci ca me rassure, je pensais être à côté de la plaque
Lionel Debroux (./40) :
Mais ce que tu veux faire se heurtera à la taille limitée de la RAM...


Comme n'importe quel compresseur smile
Lionel Debroux (./40) :
Pour maintenir la correspondance [variable compressée] <-> [variable décompressée], peut-être peut-on utiliser des twin symbols. Il faut d'abord s'assurer qu'AMS n'est pas perturbé par un redimensionnement des twins (je n'ai jamais essayé un truc pareil !).


Je ne connais pas les twin symboles, mais je voyais les choses très simplement,
en remplacant le fichier compressé par le décompressé, même en flash.
Ce n'est peut-être pas la meilleure solution, mais dans un premier temps,
c'est le plus simple je pense grin

43

stfox (./39) :
FileSym = SymFindPtr(SYMSTR(FileName),0); pDatas = HeapDeref(FileSym->handle);

Sauf que certains programmes hackent la vat (cherche un fichier du genre vatinfo.txt sur le net, de Benoit Scherrer, tu comprendras. Puis opur trouver un fichier, je fais SymFind, pas SymFindPtr. Et parfois, j'utilise aussi SymFindFirst/SymFindNext. Du bonheur. grin
Mais le mieux, comme sur un programme actuel, c'est quand je fais un kernel::Hd2Sym. Là, je sais encore moins comment va faire ton driver. hehe

En fait pour tout te dire, je suis tout à fait de l'avis des autres. L'idée est en soi excellente, mais irréalisable sur TI. Ou alors tourne-toi vers PUNIX, peut-être serait-il content d'avoir une telle contribution.

44

Folco (./43) :
En fait pour tout te dire, je suis tout à fait de l'avis des autres. L'idée est en soi excellente, mais irréalisable sur TI. Ou alors tourne-toi vers PUNIX, peut-être serait-il content d'avoir une telle contribution.

-TI+AMS
avatar
Proud to be CAKE©®™


GCC4TI importe qui a problème en Autriche, pour l'UE plus et une encore de correspours nucléaire, ce n'est pas ytre d'instérier. L'état très même contraire, toujours reconstruire un pouvoir une choyer d'aucrée de compris le plus mite de genre, ce n'est pas moins)
Stalin est l'élection de la langie.

45

(euh oui en effet, surtout que je dis le contraire dans la phrase d'après tripo)

46

Folco -> Tout ce que tu me montre sont des appels systèmes, même 'kernel::Hd2Sym' si je le comprend bien car je débute en asm,
donc je ne vois pas de pb, la difficulté sera peut-être de choisir le 'bon moment' pour effectuer la décompression,
mais dans tous les cas, c'est le système d'exploitation qui a la main à un moment ou à un autre smile

Après si y'a des programmes qui respectent pas l'interface d'un OS en le court circuitant, ca on n'y peut-rien,
mais n'importe quel programme au monde n'est pas prévu pour être court-circuité wink

Après tous les appels systèmes que tu m'as listé, que fais-tu pour avoir le pointeur sur tes données ?
Y'a-t'il d'autres instructions que HeapDeref ?

47

J'ai l'impression que tu ne réponds qu'à Folco et que tu ignores mes messages.

AMS n'est PAS UNIX
déja y'a pas de module

ensuite, les appels systèmes (qui n'en sont pas, on n'a pas de trap, juste un jsr) sont en ROM, tu ne peux pas les patcher, ni les intercepter, ni les étendre.

Le "système" d'exploitation de la TI est une LIBRAIRIE, PAS un OS. Les appels systèmes sont utilisés de manière TRES limitée, comme par exemple éteindre, redémarrer la calculatrice, ou effectuer des fonctions sur la flash (et encore).

Tout ce que tu peux faire c'est créer toi même des alternatives à ces fonctions pour prendre en compte la (dé)compression, mais tu ne pourras pas rendre ces fonctions disponibles pour les autres programmes.

48

Une application peut tenter de le faire elle meme le heapderef & co ie sans passer par AMS

./47 par contre si on peut intercepter les Romcall enfin pas si l'application fait un appel direct en ROM, mais c'est suicidaire de ne pas passer par la table des romcall
avatar
Proud to be CAKE©®™


GCC4TI importe qui a problème en Autriche, pour l'UE plus et une encore de correspours nucléaire, ce n'est pas ytre d'instérier. L'état très même contraire, toujours reconstruire un pouvoir une choyer d'aucrée de compris le plus mite de genre, ce n'est pas moins)
Stalin est l'élection de la langie.

49

tu peux intercepter un appel direct en ROM? tu fais comment? en détectant que le JSR appelle une adresse en ROM après s'être mis en mode TRACE? trigni

50

Non tu peut détourner la table de romcall, et a moins qu'une application soit fait pour UNE et UNIQUE version d'ASM tu es obligé d'utiliser cette table pour savoir ou sont les fonctions

Tu peut aussi détourner le F-line qui est de plus en plus utilisé pour faire les appels aux fonctions de la ROM
avatar
Proud to be CAKE©®™


GCC4TI importe qui a problème en Autriche, pour l'UE plus et une encore de correspours nucléaire, ce n'est pas ytre d'instérier. L'état très même contraire, toujours reconstruire un pouvoir une choyer d'aucrée de compris le plus mite de genre, ce n'est pas moins)
Stalin est l'élection de la langie.

51

tout ce que tu peux faire en fait, c'est changer le contenu de $C8, donc il faut recopier toute la table pour changer certaines entrées. c'est ça que tu veux dire?

et sinon ok pour le fline.

52

tout ce que tu peux faire en fait, c'est changer le contenu de $C8, donc il faut recopier toute la table pour changer certaines entrées. c'est ça que tu veux dire?

C'est ça qu'il veut dire. Et comme il y a plus de 1500 ROM_CALLs sur les AMS modernes, ça coûte ~6KB de RAM...
avatar
Membre de la TI-Chess Team.
Co-mainteneur de GCC4TI (documentation en ligne de GCC4TI), TIEmu et TILP.
Co-admin de TI-Planet.

53

Tu peux aussi faire un CompPatch qui modifie la table en flash trivil (mais je ne donnerais pas de billes la dessus ##trihehe##)
avatar
Proud to be CAKE©®™


GCC4TI importe qui a problème en Autriche, pour l'UE plus et une encore de correspours nucléaire, ce n'est pas ytre d'instérier. L'état très même contraire, toujours reconstruire un pouvoir une choyer d'aucrée de compris le plus mite de genre, ce n'est pas moins)
Stalin est l'élection de la langie.

54

Intercepter les appels à travers 0xc8 ne fonctionne pas, ça n'intercepte pas les appels faits par AMS lui-même!
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é

55

Désolé squalyl smile

Mais vous ne lisez que la moitié de ce que j'écris aussi lol

Je ne pense pas à AMS, surtout pas, je le deteste ce truc (ou plutôt son interface).

Mais je pense à PedroM que je trouve très simpa, et qui offre le grand avantage de
pouvoir y mettre son nez dedans, et modifier ce que l'on veut, notamment les apples
systèmes ou ROMCALL appellez celà comme vous voulez smile

56

pedrom marche pareil, il est fait pour être compatible avec ams a ce niveau.

57

sauf qu'on peut le modifier smile

58

stfox (./46) :
Après si y'a des programmes qui respectent pas l'interface d'un OS en le court circuitant, ca on n'y peut-rien, mais n'importe quel programme au monde n'est pas prévu pour être court-circuité

Ben déjà, tu vas te foutre dans les pattes la grande majorité des programmes kernel... Chacun accède à la VAT à sa manière. Les programmes C passent par le TIOS, mais il y a différents moyens d'accéder à un fichier. Et je me demande bien ce que tu pourras faire quand un programme créra un sybole et y ajoutera un handle. Il n'y a à ce moment aucun appel système qui te permette de faire quoi que ce soit.
Godzil (./48) :
Une application peut tenter de le faire elle meme le heapderef & co ie sans passer par AMS

Tous les DEREF dn,an. Ca fait un paquet de programmes.
Godzil (./50) :
Tu peut aussi détourner le F-line qui est de plus en plus utilisé pour faire les appels aux fonctions de la ROM

Sauf que je ne crois pas que PreOS/PedroM permette d'installer un TSR sur le vecteur de f-line, par sécurité. Tu crash direct le kernel si tu te loupes, il arrête pas de l'utiliser.
stfox (./55) :
Mais je pense à PedroM que je trouve très simpa, et qui offre le grand avantage de
pouvoir y mettre son nez dedans, et modifier ce que l'on veut, notamment les apples systèmes ou ROMCALL appellez celà comme vous voulez

Toutafè, je suis à 200% d'accord avec toi, d'ailleurs depuis un moment, je ne code plus que PedroM-only. C'est génial.


Par contre, je crois que nombre de ceux qui t'ont répondu ont une certaine carrure dans la programmation sur TI en général, voire dans la programmation système, peut-être devrais-tu chercher à comprendre comment ça marche avant de dire ce que tu vas faire sur un programme que tu connais visiblement pas. cheeky

59

Sauf que je ne crois pas que PreOS/PedroM permette d'installer un TSR sur le vecteur de f-line, par sécurité. Tu crash direct le kernel si tu te loupes, il arrête pas de l'utiliser.


Bien sur, pour la protection je sais pas, c'est possible, pour le fait qu'il faut pas ce louper, c'est valable pour la modification de table aussi ^^ (voir pire si tu fait un patch de la flash^^)
avatar
Proud to be CAKE©®™


GCC4TI importe qui a problème en Autriche, pour l'UE plus et une encore de correspours nucléaire, ce n'est pas ytre d'instérier. L'état très même contraire, toujours reconstruire un pouvoir une choyer d'aucrée de compris le plus mite de genre, ce n'est pas moins)
Stalin est l'élection de la langie.

60

Bof, flinguer le handler d'adress error, c'est pas génial, mais au pire t'es plus à ça près triso