π
<-

3 nouvelles ROMs grâce à TI

:32ti30xbv: :32ti30xbb: :32ti30xsmv: :32ti30xpmv: :32ti34mv: :32ticolp:

Re: 3 nouvelles ROMs grâce à TI

Postby critor » 23 May 2010, 15:50

Mic wrote:A quand Super Mario sur Collège Plus ??



Doucement, j'avance... :;):

Voici déjà la démo non jouable de Kong sur TI-Collège Plus! :#top#:
http://tibank.forumactif.com/ti-non-gra ... -t5543.htm
Image
User avatar
critorAdmin
Niveau 19: CU (Créateur Universel)
Niveau 19: CU (Créateur Universel)
Level up: 54.7%
 
Posts: 42528
Images: 17406
Joined: 25 Oct 2008, 00:00
Location: Montpellier
Gender: Male
Calculator(s):
MyCalcs profile
YouTube: critor3000
Twitter: critor2000
GitHub: critor

Re: 3 nouvelles ROMs grâce à TI

Postby critor » 23 May 2010, 16:54

Toujours pas de jeu d'instructions pour les processeurs T4X...

Mais voici un petit PDF qui a l'avantage de mentionner et décrire 4 processeurs de cette famille!
http://www.datasheetarchive.com/pdf/Dat ... 155162.pdf
(pages PDF 10 et 11)


Sont cités les processeurs T41, T42, T43 et T44.


Je rappelle que l'émulateur de TI simule un T49.
Mais peut-être que le T49 n'a jamais été gravé, et qu'il s'agit simplement du nom attribué à ce processeur Java virtuel.

Auquel cas, la TI-Collège Plus pourrait très bien utiliser un des 4 processeurs ci-dessus...


Si personne ne trouve, il va falloir vraiment que je m'attaque à cette goutte d'epoxy...
Mais il faudrait que je puisse m'y attaquer sans risquer d'effacer les inscriptions sur la puce... sinon, ça ne servira à rien...
Image
User avatar
critorAdmin
Niveau 19: CU (Créateur Universel)
Niveau 19: CU (Créateur Universel)
Level up: 54.7%
 
Posts: 42528
Images: 17406
Joined: 25 Oct 2008, 00:00
Location: Montpellier
Gender: Male
Calculator(s):
MyCalcs profile
YouTube: critor3000
Twitter: critor2000
GitHub: critor

Re: 3 nouvelles ROMs grâce à TI

Postby Kiligolo » 23 May 2010, 17:07

je vois que vous êtes tous des pro en trafiquages de TI :8):
Perso j'arriverai pas du tout à faire ce genre de manip!
User avatar
Kiligolo
Niveau 11: LV (Légende Vivante)
Niveau 11: LV (Légende Vivante)
Level up: 84.3%
 
Posts: 1465
Joined: 17 May 2010, 00:00
Gender: Male
Calculator(s):
MyCalcs profile
Class: 1reS

Re: 3 nouvelles ROMs grâce à TI

Postby Ciwtron » 23 May 2010, 17:11

critor2000 wrote:Si personne ne trouve, il va falloir vraiment que je m'attaque à cette goutte d'epoxy...


Je n'ai pas trouvé de mail pour le service Composants électroniques de Toshiba.
J'ai un n° de téléphone si quelque est prêt à appeler pour demander.
critor2000 wrote:Adresse : 7, rue Ampère, 92 800 Puteaux
Téléphone : 01 47 28 28 28



(téléphone en hide pour éviter les méchants bots).
User avatar
Ciwtron
Niveau 11: LV (Légende Vivante)
Niveau 11: LV (Légende Vivante)
Level up: 36.7%
 
Posts: 1332
Joined: 29 Nov 2009, 00:00
Gender: Male
Calculator(s):
MyCalcs profile
Class: 1S

Re: 3 nouvelles ROMs grâce à TI

Postby critor » 23 May 2010, 18:07

Bon, Toshiba n'ayant apparemment pas de documents publiques intéressants sur les T4X, je continue de fouiller le source Java de l'émulateur TI-SmartView.

J'ai trouvé une fonction de parsing.
Elle prend 16 bits, et détermine le type d'instruction à l'aide des bits 0 à 5.

Selon l'instruction, des arguments sont alors extraits des bits 4 à 15.


Il faut que je regarde un peu mieux le contexte pour savoir si c'est du poids fort ou du poids faible...

Voici le code en attendant.
Evidemment, les instructions ne sont pas nommées...


Code: Select all
    public void ParseBinCode(String Code, int Addr)
    {
        ObjField1[Addr] = GeneralUtility.DBinary(Code.substring(0, 6));
        switch(ObjField1[Addr])
        {
        case 20: // '\024'
            ObjField2[Addr] = GeneralUtility.DBinary(Code.substring(12, 16));
            ObjField3[Addr] = GeneralUtility.DBinary(Code.substring(6, 12));
            break;

        case 14: // '\016'
            ObjField3[Addr] = GeneralUtility.DBinary(Code.substring(6, 12));
            break;

        case 1: // '\001'
            ObjField4[Addr] = GeneralUtility.DBinary(Code.substring(6, 8));
            ObjField2[Addr] = GeneralUtility.DBinary(Code.substring(12, 16));
            ObjField3[Addr] = GeneralUtility.DBinary(Code.substring(8, 12));
            break;

        case 32: // ' '
        case 33: // '!'
        case 34: // '"'
        case 35: // '#'
            ObjField2[Addr] = GeneralUtility.DBinary(Code.substring(12, 16));
            ObjField3[Addr] = GeneralUtility.DBinary(Code.substring(8, 12));
            ObjField4[Addr] = GeneralUtility.DBinary(Code.substring(4, 8));
            break;

        case 15: // '\017'
            ObjField3[Addr] = GeneralUtility.DBinary(Code.substring(6, 12));
            break;

        case 5: // '\005'
            ObjField4[Addr] = GeneralUtility.DBinary(Code.substring(6, 8));
            ObjField2[Addr] = GeneralUtility.DBinary(Code.substring(12, 16));
            ObjField3[Addr] = GeneralUtility.DBinary(Code.substring(8, 12));
            break;

        case 22: // '\026'
            ObjField2[Addr] = GeneralUtility.DBinary(Code.substring(12, 16));
            ObjField3[Addr] = GeneralUtility.DBinary(Code.substring(8, 12));
            ObjField4[Addr] = GeneralUtility.DBinary(Code.substring(6, 8));
            break;

        case 30: // '\036'
            ObjField3[Addr] = GeneralUtility.DBinary(Code.substring(6, 12));
            break;

        case 31: // '\037'
            ObjField3[Addr] = GeneralUtility.DBinary(Code.substring(6, 12));
            break;

        case 10: // 'n'
            ObjField3[Addr] = GeneralUtility.DBinary(Code.substring(6, 12));
            break;

        case 11: // '\013'
            ObjField3[Addr] = GeneralUtility.DBinary(Code.substring(6, 12));
            break;

        case 7: // '\007'
            ObjField4[Addr] = GeneralUtility.DBinary(Code.substring(6, 8));
            ObjField3[Addr] = GeneralUtility.DBinary(Code.substring(8, 12));
            ObjField2[Addr] = GeneralUtility.DBinary(Code.substring(12, 16));
            break;

        case 16: // '\020'
            ObjField2[Addr] = GeneralUtility.DBinary(Code.substring(12, 16));
            ObjField3[Addr] = GeneralUtility.DBinary(Code.substring(9, 12));
            ObjField4[Addr] = GeneralUtility.DBinary(Code.substring(6, 9));
            break;

        case 17: // '\021'
            ObjField2[Addr] = GeneralUtility.DBinary(Code.substring(13, 16));
            ObjField3[Addr] = GeneralUtility.DBinary(Code.substring(9, 12));
            ObjField4[Addr] = GeneralUtility.DBinary(Code.substring(6, 9));
            break;

        case 21: // '\025'
            ObjField2[Addr] = GeneralUtility.DBinary(Code.substring(13, 16));
            ObjField3[Addr] = GeneralUtility.DBinary(Code.substring(9, 12));
            ObjField4[Addr] = GeneralUtility.DBinary(Code.substring(6, 9));
            break;

        case 2: // '\002'
            ObjField2[Addr] = GeneralUtility.DBinary(Code.substring(12, 16));
            ObjField4[Addr] = GeneralUtility.DBinary(Code.substring(6, 8));
            break;

        case 6: // '\006'
            ObjField3[Addr] = GeneralUtility.DBinary(Code.substring(8, 12));
            ObjField4[Addr] = GeneralUtility.DBinary(Code.substring(6, 8));
            break;

        case 18: // '\022'
            ObjField2[Addr] = GeneralUtility.DBinary(Code.substring(12, 16));
            ObjField3[Addr] = GeneralUtility.DBinary(Code.substring(9, 12));
            ObjField4[Addr] = GeneralUtility.DBinary(Code.substring(6, 9));
            break;

        case 19: // '\023'
            ObjField2[Addr] = GeneralUtility.DBinary(Code.substring(13, 16));
            ObjField3[Addr] = GeneralUtility.DBinary(Code.substring(9, 12));
            ObjField4[Addr] = GeneralUtility.DBinary(Code.substring(6, 9));
            break;

        case 23: // '\027'
            ObjField2[Addr] = GeneralUtility.DBinary(Code.substring(13, 16));
            ObjField3[Addr] = GeneralUtility.DBinary(Code.substring(9, 12));
            ObjField4[Addr] = GeneralUtility.DBinary(Code.substring(6, 9));
            break;

        case 24: // '\030'
            ObjField2[Addr] = GeneralUtility.DBinary(Code.substring(12, 16));
            ObjField3[Addr] = GeneralUtility.DBinary(Code.substring(9, 12));
            ObjField4[Addr] = GeneralUtility.DBinary(Code.substring(6, 9));
            break;

        case 25: // '\031'
            ObjField2[Addr] = GeneralUtility.DBinary(Code.substring(13, 16));
            ObjField3[Addr] = GeneralUtility.DBinary(Code.substring(9, 12));
            ObjField4[Addr] = GeneralUtility.DBinary(Code.substring(6, 9));
            break;

        case 3: // '\003'
            ObjField2[Addr] = GeneralUtility.DBinary(Code.substring(12, 16));
            ObjField4[Addr] = GeneralUtility.DBinary(Code.substring(6, 8));
            break;

        case 26: // '\032'
            ObjField2[Addr] = GeneralUtility.DBinary(Code.substring(12, 16));
            ObjField3[Addr] = GeneralUtility.DBinary(Code.substring(9, 12));
            ObjField4[Addr] = GeneralUtility.DBinary(Code.substring(6, 9));
            break;

        case 27: // '\033'
            ObjField2[Addr] = GeneralUtility.DBinary(Code.substring(13, 16));
            ObjField3[Addr] = GeneralUtility.DBinary(Code.substring(9, 12));
            ObjField4[Addr] = GeneralUtility.DBinary(Code.substring(6, 9));
            break;

        case 28: // '\034'
            ObjField2[Addr] = GeneralUtility.DBinary(Code.substring(12, 16));
            ObjField3[Addr] = GeneralUtility.DBinary(Code.substring(9, 12));
            ObjField4[Addr] = GeneralUtility.DBinary(Code.substring(6, 9));
            break;

        case 29: // '\035'
            ObjField2[Addr] = GeneralUtility.DBinary(Code.substring(13, 16));
            ObjField3[Addr] = GeneralUtility.DBinary(Code.substring(9, 12));
            ObjField4[Addr] = GeneralUtility.DBinary(Code.substring(6, 9));
            break;

        case 12: // 'f'
            ObjField2[Addr] = GeneralUtility.DBinary(Code.substring(14, 16));
            ObjField3[Addr] = GeneralUtility.DBinary(Code.substring(9, 12));
            ObjField4[Addr] = GeneralUtility.DBinary(Code.substring(6, 9));
            break;

        case 8: // 'b'
            ObjField2[Addr] = GeneralUtility.DBinary(Code.substring(14, 16));
            ObjField4[Addr] = GeneralUtility.DBinary(Code.substring(6, 9));
            break;

        case 13: // 'r'
            ObjField2[Addr] = GeneralUtility.DBinary(Code.substring(14, 16));
            ObjField3[Addr] = GeneralUtility.DBinary(Code.substring(9, 12));
            ObjField4[Addr] = GeneralUtility.DBinary(Code.substring(6, 9));
            break;

        case 9: // 't'
            ObjField2[Addr] = GeneralUtility.DBinary(Code.substring(14, 16));
            ObjField4[Addr] = GeneralUtility.DBinary(Code.substring(6, 9));
            break;

        case 60: // ''
        case 61: // '='
        case 62: // ''
        case 63: // '?'
            ObjField2[Addr] = GeneralUtility.DBinary(Code.substring(4, 16));
            break;

        case 44: // ','
        case 45: // '-'
        case 46: // '.'
        case 47: // '/'
            ObjField2[Addr] = GeneralUtility.DBinary(Code.substring(4, 16));
            break;

        case 48: // '0'
        case 49: // '1'
        case 50: // '2'
        case 51: // '3'
            ObjField2[Addr] = GeneralUtility.DBinary(Code.substring(4, 16));
            break;

        case 52: // '4'
        case 53: // '5'
        case 54: // '6'
        case 55: // '7'
            ObjField2[Addr] = GeneralUtility.DBinary(Code.substring(4, 16));
            break;

        case 56: // '8'
        case 57: // '9'
        case 58: // ':'
        case 59: // ';'
            ObjField2[Addr] = GeneralUtility.DBinary(Code.substring(4, 16));
            break;

        case 0: // '\0'
            ObjField2[Addr] = GeneralUtility.DBinary(Code.substring(13, 16));
            ObjField3[Addr] = GeneralUtility.DBinary(Code.substring(8, 10));
            ObjField4[Addr] = GeneralUtility.DBinary(Code.substring(6, 8));
            break;

        case 40: // '('
        case 41: // ')'
        case 42: // '*'
        case 43: // '+'
            ObjField2[Addr] = GeneralUtility.DBinary(Code.substring(4, 16));
            break;

        case 36: // '$'
        case 37: // '%'
        case 38: // ''
        case 39: // '''
            ObjField2[Addr] = GeneralUtility.DBinary(Code.substring(4, 16));
            break;
        }
    }



Je n'ai jamais décrypté d'assembleur.
Donc si vous avez des idées, n'hésitez pas...

Je suis aussi débutant que vous.
Image
User avatar
critorAdmin
Niveau 19: CU (Créateur Universel)
Niveau 19: CU (Créateur Universel)
Level up: 54.7%
 
Posts: 42528
Images: 17406
Joined: 25 Oct 2008, 00:00
Location: Montpellier
Gender: Male
Calculator(s):
MyCalcs profile
YouTube: critor3000
Twitter: critor2000
GitHub: critor

Re: 3 nouvelles ROMs grâce à TI

Postby Lionel Debroux » 23 May 2010, 18:22

Dans plusieurs cas (ceux où 4 "case" sont traités de la même façon), les 2 bits de poids le plus faible parmi les 6 bits pris en compte comme argument du switch(...) font partie de l'instruction, comme tu l'as mentionné plus haut.

Dans les instructions, on voit un assortiment de fields de 2, 3, 4, 6 et 12 bits. Et certains des bits sont inutilisés (cases 14, 30, 31, etc.).
On peut supposer que les fields de 6 bits correspondent aux 64 registres indiqués dans le premier post. Et les fields de 12 bits peuvent être des valeurs immédiates (mais je trouve que ça fait beaucoup d'instructions différentes avec des valeurs immédiates) ou une paire de fields de 6 bits (mais alors pourquoi ne séparent-ils pas ces fields en ObjField2 et ObjField3 ??).
Membre de la TI-Chess Team.
Co-mainteneur de GCC4TI (documentation en ligne de GCC4TI), TIEmu et TILP.
User avatar
Lionel DebrouxSuper Modo
Niveau 14: CI (Calculateur de l'Infini)
Niveau 14: CI (Calculateur de l'Infini)
Level up: 11.4%
 
Posts: 6875
Joined: 23 Dec 2009, 00:00
Location: France
Gender: Male
Calculator(s):
MyCalcs profile
Class: -
GitHub: debrouxl

Re: 3 nouvelles ROMs grâce à TI

Postby charognard » 29 May 2010, 17:35

critor2000 wrote:
Mic wrote:De l'ASM sur TI-Collège, ça serait totalement OUF !!!! :o:



En touts cas, le fait que ce soit du "4-bits" n'empêche pas de réaliser de super jeux en niveaux de gris.
Il n'y a qu'à regarder ce qui a été réalisé sur les HP-48S/SX/G/G+/GX...

Le saturn c'est un cas à part !!!
as tu vu beaucoup de proc avec des registres internes de 64bit ??!! et DCB
User avatar
charognard
Niveau 10: GR (Guide de Référence)
Niveau 10: GR (Guide de Référence)
Level up: 81.8%
 
Posts: 869
Joined: 18 Oct 2007, 00:00
Gender: Male
Calculator(s):
MyCalcs profile
Class: sans

Re: 3 nouvelles ROMs grâce à TI

Postby critor » 31 May 2010, 22:13

charognard wrote:
critor2000 wrote:
Mic wrote:De l'ASM sur TI-Collège, ça serait totalement OUF !!!! :o:



En touts cas, le fait que ce soit du "4-bits" n'empêche pas de réaliser de super jeux en niveaux de gris.
Il n'y a qu'à regarder ce qui a été réalisé sur les HP-48S/SX/G/G+/GX...

Le saturn c'est un cas à part !!!
as tu vu beaucoup de proc avec des registres internes de 64bit ??!! et DCB


Le T4X/T49 dispose quand même de 64 registres!!!!
C'est pas rien...

Par concaténation, tu les as tes 64 bits :#langue#:
Image
User avatar
critorAdmin
Niveau 19: CU (Créateur Universel)
Niveau 19: CU (Créateur Universel)
Level up: 54.7%
 
Posts: 42528
Images: 17406
Joined: 25 Oct 2008, 00:00
Location: Montpellier
Gender: Male
Calculator(s):
MyCalcs profile
YouTube: critor3000
Twitter: critor2000
GitHub: critor

Re: 3 nouvelles ROMs grâce à TI

Postby critor » 31 May 2010, 22:21

Mic wrote:Filme ton expérience si tu t'attaques à l'epoxy.
Il faudrait y aller tout doucement à l'acide en frottant avec un chiffon légérement imbibé puis frotter à l'eau tout de suite après et recommencer, recommencer, jusqu'à ce que les inscriptions apparaissent...



Bien sûr, j'ai l'air du gars qui a toute une collection de bouteilles d'acide sur son étagère...


Si ce que j'ai lu en anglais est correct, il n'y a que 2 choses pour attaquer cet expoxy:
- un acide fort
- un chauffage à 100°C (autant la mettre dans le micro-onde...)


Le pH de l'acide (sa concentration) peut toujours se bricoler..;
L'important c'est son pKa.

Dans le commerce, on trouve facilement de l'acide chlorhydrique.
Le pKa est de 7, ce qui n'est pas génial, même si je ne conseille pas d'en boire.

En cherchant d'avantage, on peut trouver de l'acide sulfurique, notamment pour recharger les "batteries sèches" de voitures/camions.
Là, le pKa est de 3, ce qui est beaucoup mieux pour l'attaque.

Mais je ne sais pas si cela suffira...
Et dans le cas négatif, je doute que l'on ait facilement accès à des produits plus puissants...


En passant Mic, avec un tel pKa, ton chiffon va se tranformer en gruyère... et je ne parle même pas des doigts qui tiennent le chiffon...
Image
User avatar
critorAdmin
Niveau 19: CU (Créateur Universel)
Niveau 19: CU (Créateur Universel)
Level up: 54.7%
 
Posts: 42528
Images: 17406
Joined: 25 Oct 2008, 00:00
Location: Montpellier
Gender: Male
Calculator(s):
MyCalcs profile
YouTube: critor3000
Twitter: critor2000
GitHub: critor

Re: 3 nouvelles ROMs grâce à TI

Postby Levak » 31 May 2010, 22:29

critor2000 wrote:
Mic wrote:Filme ton expérience si tu t'attaques à l'epoxy.
Il faudrait y aller tout doucement à l'acide en frottant avec un chiffon légérement imbibé puis frotter à l'eau tout de suite après et recommencer, recommencer, jusqu'à ce que les inscriptions apparaissent...



Bien sûr, j'ai l'air du gars qui a toute une collection de bouteilles d'acide sur son étagère...


Si ce que j'ai lu en anglais est correct, il n'y a que 2 choses pour attaquer cet expoxy:
- un acide fort
- un chauffage à 100°C (autant la mettre dans le micro-onde...)


Le pH de l'acide (sa concentration) peut toujours se bricoler..;
L'important c'est son pKa.

Dans le commerce, on trouve facilement de l'acide chlorhydrique.
Le pKa est de 7, ce qui n'est pas génial, même si je ne conseille pas d'en boire.

En cherchant d'avantage, on peut trouver de l'acide sulfurique, notamment pour recharger les "batteries sèches" de voitures/camions.
Là, le pKa est de 3, ce qui est beaucoup mieux pour l'attaque.

Mais je ne sais pas si cela suffira...
Et dans le cas négatif, je doute que l'on ait facilement accès à des produits plus puissants...


En passant Mic, avec un tel pKa, ton chiffon va se tranformer en gruyère... et je ne parle même pas des doigts qui tiennent le chiffon...


Je sais pas mais... tu es pas prof de Physique/chimie ? On va plutôt dire "Tu n'as pas accès à des labos de physique/chimie par des connaissances profs ?"
du genre "Et Salut Albert ! Tu as du dichlorométhanol à 2 mol/L ?"


J'imagine déjà la tête du pauvre Albert :#gni#:
Responsable design/graphique de TI-Planet
I do not get mad at people, I just want them to learn the way I learnt.
ImageTNOC [topic][DL]
nClock [topic][DL]
HideManager [topic][DL]
ZLock [topic][DL]
Theme Editor [topic][DL]
Mes programmes
User avatar
LevakAdmin
Niveau 14: CI (Calculateur de l'Infini)
Niveau 14: CI (Calculateur de l'Infini)
Level up: 98.9%
 
Posts: 6414
Images: 22
Joined: 27 Nov 2008, 00:00
Location: 0x1AACC355
Gender: Male
Calculator(s):
MyCalcs profile
Class: BAC+5: Epita (ING3)

PreviousNext

Return to TI (30/34/36, Collège)

Who is online

Users browsing this forum: No registered users and 9 guests

-
Search
-
Social TI-Planet
-
Featured topics
Ndless for CX 4.5.5 / CX II 6.2.0
Comparaisons des meilleurs prix pour acheter sa calculatrice !
"1 calculatrice pour tous", le programme solidaire de Texas Instruments. Reçois gratuitement et sans aucune obligation d'achat, 5 calculatrices couleur programmables en Python à donner aux élèves les plus nécessiteux de ton lycée. Tu peux recevoir au choix 5 TI-82 Advanced Edition Python ou bien 5 TI-83 Premium CE Edition Python.
Enseignant(e), reçois gratuitement 1 exemplaire de test de la TI-82 Advanced Edition Python. À demander d'ici le 31 décembre 2024.
Aidez la communauté à documenter les révisions matérielles en listant vos calculatrices graphiques !
12345
-
Donations / Premium
For more contests, prizes, reviews, helping us pay the server and domains...
Donate
Discover the the advantages of a donor account !
JoinRejoignez the donors and/or premium!les donateurs et/ou premium !


Partner and ad
Notre partenaire Jarrety Calculatrices à acheter chez Calcuso
-
Stats.
2782 utilisateurs:
>2739 invités
>36 membres
>7 robots
Record simultané (sur 6 mois):
43991 utilisateurs (le 10/09/2025)
-
Other interesting websites
Texas Instruments Education
Global | France
 (English / Français)
Banque de programmes TI
ticalc.org
 (English)
La communauté TI-82
tout82.free.fr
 (Français)