π
<-
Chat plein-écran
[^]

Pack outils ROM/OS/Apps compatibles 82 Advanced et 84 Plus T

Nouveautés, projets, mises à jour.

Re: Pack outils ROM/OS/Apps compatibles 82 Advanced et 84 Pl

Message non lude critor » 06 Oct 2016, 18:01

Oui, c'est fonctionnel.

Le 3ème, c'est le convertisseur 8XU -> ROM.
Génère une pseudo-rom sans boot code, et donc non démarrable sur émulateur.

Mais au moins, le code de l'OS sera écrit de façon 'compréhensible' aux bonnes adresses, et sera donc étudiable. :)
Et aussi, les deux autres outils nécessitant de partir d'un fichier ROM, ça se complète. ;)
Image
Avatar de l’utilisateur
critorAdmin
Niveau 19: CU (Créateur Universel)
Niveau 19: CU (Créateur Universel)
Prochain niv.: 41.4%
 
Messages: 41455
Images: 14353
Inscription: 25 Oct 2008, 00:00
Localisation: Montpellier
Genre: Homme
Calculatrice(s):
MyCalcs profile
YouTube: critor3000
Twitter/X: critor2000
GitHub: critor

Re: Pack outils ROM/OS/Apps compatibles 82 Advanced et 84 Pl

Message non lude grosged » 06 Oct 2016, 22:17

:#fou#: Superbe travail, critor :D

Personnellement, je reste coincé à la toute première étape : je n'arrive pas à faire une copie de la rom de ma propre TI82A (dans tilp, l'option Copie de la Rom est grisée) . Comment t'y es-tu pris ?
Avatar de l’utilisateur
grosgedVIP++
Niveau 14: CI (Calculateur de l'Infini)
Niveau 14: CI (Calculateur de l'Infini)
Prochain niv.: 30.2%
 
Messages: 770
Images: 75
Inscription: 14 Sep 2011, 12:29
Genre: Non spécifié
Calculatrice(s):
MyCalcs profile

Re: Pack outils ROM/OS/Apps compatibles 82 Advanced et 84 Pl

Message non lude critor » 06 Oct 2016, 22:32

Non, ce n'est pas possible avec TiLP, car cela nécessite l'envoi d'un programme assembleur - chose non gérée par la 82A.

C'est dumpé avec le hack de Brandon.
Et c'est justement parce qu'il ne marche plus sur 84+T que nous n'avons aucune image ROM de ce dernier modèle.
Image
Avatar de l’utilisateur
critorAdmin
Niveau 19: CU (Créateur Universel)
Niveau 19: CU (Créateur Universel)
Prochain niv.: 41.4%
 
Messages: 41455
Images: 14353
Inscription: 25 Oct 2008, 00:00
Localisation: Montpellier
Genre: Homme
Calculatrice(s):
MyCalcs profile
YouTube: critor3000
Twitter/X: critor2000
GitHub: critor

Re: Pack outils ROM/OS/Apps compatibles 82 Advanced et 84 Pl

Message non lude grosged » 07 Oct 2016, 17:41

Cet après-midi, je me suis amusé à écrire du gribouillis dans une appvar de CellSheet (fichier S01.8Xv)
Cela a eu pour effet d'inciter CellSheet à créer une variable Y5 lors de la sauvegarde de ce fichier préalablement chargé.
ça serait donc un moyen de créer une variable depuis une appvar archivée.
Comme le format de cette appvar est propre à CellSheet, j'aimerais bien trouver un moyen de convertir en binaire le format intel-hex de CellSheet lorsqu'on le télécharge via education.ti.com.
Une idée ?
Avatar de l’utilisateur
grosgedVIP++
Niveau 14: CI (Calculateur de l'Infini)
Niveau 14: CI (Calculateur de l'Infini)
Prochain niv.: 30.2%
 
Messages: 770
Images: 75
Inscription: 14 Sep 2011, 12:29
Genre: Non spécifié
Calculatrice(s):
MyCalcs profile

Re: Pack outils ROM/OS/Apps compatibles 82 Advanced et 84 Pl

Message non lude critor » 07 Oct 2016, 17:45

Je crois que Lionel a déjà fourni plus haut une réponse correspondant à ta question. :)
Voir post viewtopic.php?f=10&t=19053#p207663 et suivants.
Image
Avatar de l’utilisateur
critorAdmin
Niveau 19: CU (Créateur Universel)
Niveau 19: CU (Créateur Universel)
Prochain niv.: 41.4%
 
Messages: 41455
Images: 14353
Inscription: 25 Oct 2008, 00:00
Localisation: Montpellier
Genre: Homme
Calculatrice(s):
MyCalcs profile
YouTube: critor3000
Twitter/X: critor2000
GitHub: critor

Re: Pack outils ROM/OS/Apps compatibles 82 Advanced et 84 Pl

Message non lude grosged » 07 Oct 2016, 17:55

Oui, c'est vrai !..J'ai lu et relu, essayé de comprendre...mais dès qu'il est question de language C, de compilation...j'suis largué :#roll#:
Avatar de l’utilisateur
grosgedVIP++
Niveau 14: CI (Calculateur de l'Infini)
Niveau 14: CI (Calculateur de l'Infini)
Prochain niv.: 30.2%
 
Messages: 770
Images: 75
Inscription: 14 Sep 2011, 12:29
Genre: Non spécifié
Calculatrice(s):
MyCalcs profile

Re: Pack outils ROM/OS/Apps compatibles 82 Advanced et 84 Pl

Message non lude critor » 07 Oct 2016, 18:01

C'est une bibliothèque C si j'ai bien compris.

Mais on peut procéder autrement :
  • prends un émulateur de TI-84+
  • installe l'application CellSheet 1.1 (c'est la même que sur la TI-82 Advanced)
  • puis exporte la ROM

Et voilà, dedans tu auras ton application.
Tu peux y chercher l'entête des applications (80 0F 00 00) qui doit tomber sur un offset multiple de 16Ko, et tu auras à chaque fois le nom de l'application un peu après.

Rappel : les pages des applications sont écrites à rebours.
Image
Avatar de l’utilisateur
critorAdmin
Niveau 19: CU (Créateur Universel)
Niveau 19: CU (Créateur Universel)
Prochain niv.: 41.4%
 
Messages: 41455
Images: 14353
Inscription: 25 Oct 2008, 00:00
Localisation: Montpellier
Genre: Homme
Calculatrice(s):
MyCalcs profile
YouTube: critor3000
Twitter/X: critor2000
GitHub: critor

Re: Pack outils ROM/OS/Apps compatibles 82 Advanced et 84 Pl

Message non lude grosged » 07 Oct 2016, 18:15

Ah mais oui !!! Merci critor ;)

...ça y est, j'ai utilisé ma ti84Pocket.fr contenant CellSheet V1.1 et Tilp pour dumper la rom !!

Wouah, 1mo tout de même !

EDIT: Grâce à la commande SPLIT, j'ai ensuite découpé ce fichier-dump comme un saucisson, en rondelles de 16Ko :)

split --bytes=16k dumpTI84+ USB.rom
Avatar de l’utilisateur
grosgedVIP++
Niveau 14: CI (Calculateur de l'Infini)
Niveau 14: CI (Calculateur de l'Infini)
Prochain niv.: 30.2%
 
Messages: 770
Images: 75
Inscription: 14 Sep 2011, 12:29
Genre: Non spécifié
Calculatrice(s):
MyCalcs profile

Re: Pack outils ROM/OS/Apps compatibles 82 Advanced et 84 Pl

Message non lude critor » 20 Nov 2016, 12:52

Voilà - jour historique, la toute première ROM TI-84 Plus T vient enfin d'être créée et de tourner sur un émulateur :
Image

Ce n'est pas un dump, c'est une pseudo-ROM générée à partir du fichier 8xu avec l'outil xxu2rom :
Code: Tout sélectionner
// romto8xu.cpp : définit le point d'entrée pour l'application console.
//
// 512K : TI-73                     0C-15   0A   10   160Kio   163840
// 512K : TI-83 Plus               0C-15   0A   10   160Kio   163840
// 1024K : TI-84 Plus               0C-29   1E   30   480Kio   491520
// 1024K : TI-82 Advanced            0C-29   1E   30   480Kio
// 2048K : TI-83 Plus Silver Edition   0C-69   5E   94   1504Kio   1540Ko
// 2048K : TI-84 Plus Silver Edition   0C-69   5E   94   1504Kio   1540Ko
// 2048K : TI-84 Plus T               0C-69   5E   94   1504Kio
// 4096K : TI-84 Plus C Silver Edition   0C-E3   D8   216   3456Kio   3539Ko

#include "stdio.h"
#include "string.h"
#include "stdlib.h"
#include "time.h"
#include <unistd.h>
#include <sys/stat.h>
#include <sys/types.h>
   
#define DATE_SIZE 8
#define NZONES  5
#define NMODELS 6
#define NUPDS   5
#define IHX_PAGELINE_SIZE   7
#define IHX_INTERLINE_SIZE   5
#define IHX_DATALINE_HEADSIZE   4
#define IHX_DATA_SIZE   32
#define IHX_DATALINE_SIZE   (IHX_DATALINE_HEADSIZE+IHX_DATA_SIZE+1)
uint8_t imodel_id[NMODELS]      ={2,      4,            0xA,         0xB,            0x1B,         0xF};
char* imodel_name[NMODELS]      ={"TI-73",   "TI-83 Plus",   "TI-84 Plus",   "TI-82 Advanced",   "TI-84 Plus T",   "TI-84 Plus C Silver Edition"};
uint8_t imodel_upd[NMODELS]    ={0,      0,            1,            2,               3,            4};
uint8_t imodel_hwrev[NMODELS]   ={0,      1,            3,            3,               3,            5};
uint8_t imodel_type[NMODELS]   ={0x74,      0x73,         0x73,         0x73,            0x73,         0x73};
uint8_t imodel_irom_minpgsize[NMODELS]={0,   0,            0,            1,               2,            3};
uint8_t imodel_irom_maxpgsize[NMODELS]={2,   2,            2,            1,               2,            3};
uint8_t imodel_irom_defpgsize[NMODELS]={0,   0,            1,            1,               2,            3};

#define NROMS   4
#define PAGE_SIZE 0x4000
#define MAXPAGES 0x100   // 4MB
#define VALID_OFFSET   0x56
#define VERSION_OFFSET   0x64
#define NEWLINE "\r\n"
#define NEWLINE_SIZE strlen(NEWLINE)
#define FOOTER "   -- CONVERT 2.6 --\r\n\x1A"
#define FOOTER_SIZE strlen(FOOTER)
uint32_t irom_pgsize[NROMS]={MAXPAGES/8, MAXPAGES/4, MAXPAGES/2, MAXPAGES};

char* izone_name[NZONES]={"OS part #1",   "Applications",   "Signature #2 (2048-bits)", "OS part #2", "Signature #1 (512-bits)"};
//   OS1   endapp    sig2   OS2      sig1
uint32_t irom_izone_pgoffset[NROMS][NZONES]={
   {0,   0x16,   -1,      0x18,   0x1A},   // 512K
   {0,   0x2A,   0x30,   0x34,   0x3A},   // 1024K
   {0,   0x6A,   0x70,   0x74,   0x7A},   // 2048K
   {0,   0xE4,   0xE4,   0xE8,   0xFA}   // 4096K
};

uint32_t irom_izone_pgsize[NROMS][NZONES]={
   {8,   0x0A,   0,      0x06,   0},   // 512K
   {8,   0x1E,   4,      0x0A,   0},   // 1024K
   {8,   0x5E,   4,      0x0A,   0},   // 2048K
   {8,   0xD7,   4,      0x0D,   0}   // 4096K
};
uint32_t iupd_izone_pgoffset[NUPDS][NZONES]={
   {0,   -1,      -1,      0x18,   -1},   // TI-73 / TI-83 Plus
   {0,   -1,      0x10,   0x14,   -1},   // TI-84 Plus
   {0,   0x2A,   0x30,   0x34,   -1},   // TI-82 Advanced
   {0,   0x6A,   0x70,   0x74,   -1},   // TI-84 Plus T
   {0,   -1,      0xE4,   0xE8,   -1}   // TI-84 Plus C Silver Edition
};
uint32_t iupd_izone_pgsize[NUPDS][NZONES]={
   {8,   0,      0,      0x06,   0},   // TI-73 / TI-83 Plus
   {8,   0,      4,      0x0A,   0},   // TI-84 Plus
   {8,   0x0E,   4,      0x0A,   0},   // TI-82 Advanced
   {8,   0x1E,   4,      0x0A,   0},   // TI-84 Plus T
   {8,   0,      4,      0x0D,   0}   // TI-84 Plus C Silver Edition
};

char rombuffer[MAXPAGES*PAGE_SIZE];
#define BUFFER_SIZE (2*(IHX_DATALINE_SIZE+1)+1)

int romind=0;

int romgetc()
{   unsigned char c = rombuffer[romind++];
   return c;
}

uint8_t decinhex(uint8_t val) {
   return ((val/10)<<4)|(val%10);
}

void addck(uint8_t* array, uint32_t size) {
   uint32_t i;
   uint8_t ck=0;
   for(i=0;i<size-1;i++)
      ck-=array[i];
   array[size-1]=ck;
}

void fputbytes(uint8_t* array, uint32_t size, FILE* file) {
   uint32_t i;
   char tmp[3];
   if(size)
      fputs(":",file);
   for(i=0;i<size;i++) {
      sprintf(tmp,"%02X",array[i]);
      fputs(tmp,file);
   }
}

int main(int argc, char* argv[])
{   char* hexa="0123456789ABCDEF";
   int mode=0, tromsize;
   int c,h=0,page=0, i, j, k;
   
   FILE* rom;
   FILE* upd;
   uint8_t t;
   uint8_t irom=0;
   uint8_t imodel=0;
   uint8_t idmodel=0;
   uint8_t iupd;
   uint32_t izone,ipage;
   
   uint8_t updinter[IHX_INTERLINE_SIZE]={0,0,0,1};
   addck(updinter,IHX_INTERLINE_SIZE);
   
   printf("+---------+\n");
   printf("! xxu2rom !\n");
   printf("+---------+\n");
   printf(" X. Andreani\n\n");
   char* rompath=0;
   char* updpath=0;
   
   for(i=1;i<argc;i++) {
      if(!strcmp(argv[i],"-size "))
         i++;
         if(i<argc)
            tromsize=strtol(argv[i],NULL,10);
      if(!updpath)
         updpath=argv[i];
      else if(!rompath)
         rompath=argv[i];
      
   }
   
   while(irom_pgsize[irom]*PAGE_SIZE/1024<tromsize && irom<NROMS-1)
      irom++;
   
   if( !rompath || !updpath)
   {   printf("ERROR: missing or bad arguments\n");
      printf("Usage: %s source.??u dest.rom [-serom]\n", argv[0]);
      printf("-size : target ROM size in KB (valid values : 512, 1024, 2048, 4096)\n");
      return 0;
   }
   
   upd=fopen(updpath,"rb");
   if(!upd)
   {   printf("UPD file open error\n");
      return 0;
   }
   
   memset(rombuffer,0xFF,MAXPAGES*PAGE_SIZE);
   rom=fopen(rompath,"r+");
   if(!rom)
   {   rom=fopen(rompath,"w+");
      if(!rom) {
         printf("ROM file open error\n");
         fclose(upd);
         return 0;
      }
   }
   fseek(upd,0x4E,SEEK_SET);
   uint8_t updhead[IHX_DATALINE_SIZE];
   uint8_t updhead2[IHX_DATALINE_SIZE];
   memset(updhead2,0xFF,IHX_DATALINE_SIZE);
   char buffer[2*IHX_DATALINE_SIZE+3];
   int8_t curpage=-1;
   uint16_t delta=0;
   while(!feof(upd)) {
      fscanf(upd,":");
      fgets(buffer,BUFFER_SIZE,upd);
      uint8_t n;
      sscanf(buffer,"%02hhX",&n);
      for(i=0;i<n+IHX_DATALINE_HEADSIZE;i++)
         sscanf(buffer+2*i,"%02hhX",&(updhead[i]));
      n=updhead[0];
      uint16_t pgoffs=((updhead[1]&((1<<6)-1))<<8)|updhead[2];
      pgoffs+=delta;
      if(n==2 && !pgoffs) {
         curpage=updhead[IHX_DATALINE_HEADSIZE+1];
         printf("update page %02x",curpage);
         for(i=NZONES-1;i>0;i--)
            if(curpage>=iupd_izone_pgoffset[imodel_upd[imodel]][i])
               break;
         curpage=curpage+irom_izone_pgoffset[irom][i]-iupd_izone_pgoffset[imodel_upd[imodel]][i];
         printf(" -> ROM page %02x\n",curpage);
      }
      else if(curpage<0 && n) {
         uint32_t datasize = IHX_DATALINE_SIZE-IHX_DATALINE_HEADSIZE;
         uint8_t* ptr8000=getFieldDataPtr(updhead+IHX_DATALINE_HEADSIZE,0x8000,1,datasize);
         uint8_t* ptr=getFieldDataPtr(ptr8000,0x8010,1,datasize);
         idmodel=*ptr;
         imodel=0;
         while(imodel<NMODELS && imodel_id[imodel]!=idmodel)
            imodel++;
         if(imodel>=NMODELS) {
            printf("ERROR: unknown target model\n");
            break;
         }
         printf("Target model :\n"),
         printf("- ID ... \t0x%02X\n",idmodel);
         printf("- name ... \t%s\n",imodel_name[imodel]);
         if(!tromsize)
            irom=imodel_irom_defpgsize[imodel];
         irom=(irom<imodel_irom_minpgsize[imodel])?imodel_irom_minpgsize[imodel]:irom;
         irom=(irom>imodel_irom_maxpgsize[imodel])?imodel_irom_maxpgsize[imodel]:irom;
         printf("- ROM ... \t%dKB\n",irom_pgsize[irom]*PAGE_SIZE/1024);
         memcpy(updhead2,updhead,IHX_DATALINE_SIZE);
      }
      else if(curpage>=0 && n) {
//         printf("write page %x offset %x = %x\n",curpage,pgoffs,curpage*PAGE_SIZE+pgoffs);
         memcpy(rombuffer+curpage*PAGE_SIZE+pgoffs,updhead+IHX_DATALINE_HEADSIZE,n);
      }
      else if(curpage>0 && !n && !delta) { // RSA 512-bits signature special case
         curpage=irom_izone_pgoffset[irom][NZONES-1];
         printf("update page sig1 -> ROM page %x\n",curpage);
         memcpy(rombuffer+curpage*PAGE_SIZE,updhead2+IHX_DATALINE_HEADSIZE,updhead2[0]);
         delta=0x100-2;
      }
   }
   if(imodel<NMODELS) {
      rombuffer[VALID_OFFSET]=0x5A;
      rombuffer[irom_izone_pgoffset[irom][NZONES-1]*PAGE_SIZE+0x100-2]=0xFF;
      rombuffer[irom_izone_pgoffset[irom][NZONES-1]*PAGE_SIZE+0x100-1]=0xFF;
      int r=fwrite(rombuffer,1,irom_pgsize[irom]*PAGE_SIZE,rom);
   }
   fclose(upd);
   return 0;
}


La pseudo-ROM générée n'est pas directement utilisable sur un émulateur.
Il reste une dernière étape : copier un Boot Code compatible sur les deux dernières pages.

Je n'ai pas le Boot Code TI-84 Plus T car on n'a jamais plus y exécuter de l'assembleur, la faille de la TI-82 Advanced y ayant été corrigée.
Mais un Boot Code TI-84 Plus Silver Edition semble convenir :
Image

Les apps venant avec l'OS (cas des TI-82 Advanced et TI-84 Plus T) sont correctement installées par défaut :
Image
Image
Avatar de l’utilisateur
critorAdmin
Niveau 19: CU (Créateur Universel)
Niveau 19: CU (Créateur Universel)
Prochain niv.: 41.4%
 
Messages: 41455
Images: 14353
Inscription: 25 Oct 2008, 00:00
Localisation: Montpellier
Genre: Homme
Calculatrice(s):
MyCalcs profile
YouTube: critor3000
Twitter/X: critor2000
GitHub: critor

Re: Pack outils ROM/OS/Apps compatibles 82 Advanced et 84 Pl

Message non lude critor » 20 Nov 2016, 13:43

Marche aussi avec les fichiers .82u de la TI-82 Advanced.
De façon similaire, il faut coller un Boot Code compatible sur les 2 dernières pages de la ROM générée :

Un Boot Code TI-84 Plus convient :
ImageImage

Les Boot Code TI-82 Advanced 5.0.0.0014 et 5.0.0.0028 (ce dernier ayant été dumpé par Brandon Wilson) ne marchent pas avec WabbitEmu - la calculatrice ne s'allume pas.
Par contre, ils marchent avec jsTIfied, malgré un problème de constraste très foncé :
Image

Pas faute d'avoir informé l'auteur de WabbitEmu de la TI-82 Advanced dès 2015 avec même un fichier attaché, sans jamais de réponse - et avec la dernière version remontant à mai 2015 malgré toutes les évolutions des TI-z80 monochromes ces deux dernières années, on ne peut visiblement plus jurer que par jsTIfied qui à la différence n'est pas open-source. Un comble...


Mais bref, voilà - vous allez donc très bientôt pouvoir émuler les TI-82 Advanced et TI-84 Plus T.
Et peut-être donc, chercher et trouver des choses intéressantes... ;)
Image
Avatar de l’utilisateur
critorAdmin
Niveau 19: CU (Créateur Universel)
Niveau 19: CU (Créateur Universel)
Prochain niv.: 41.4%
 
Messages: 41455
Images: 14353
Inscription: 25 Oct 2008, 00:00
Localisation: Montpellier
Genre: Homme
Calculatrice(s):
MyCalcs profile
YouTube: critor3000
Twitter/X: critor2000
GitHub: critor

PrécédenteSuivante

Retourner vers Actualités

Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 12 invités

-
Rechercher
-
Social TI-Planet
-
Sujets à la une
Comparaisons des meilleurs prix pour acheter sa calculatrice !
Aidez la communauté à documenter les révisions matérielles en listant vos calculatrices graphiques !
Phi NumWorks jailbreak
123
-
Faire un don / Premium
Pour plus de concours, de lots, de tests, nous aider à payer le serveur et les domaines...
Faire un don
Découvrez les avantages d'un compte donateur !
JoinRejoignez the donors and/or premium!les donateurs et/ou premium !


Partenaires et pub
Notre partenaire Jarrety Calculatrices à acheter chez Calcuso
-
Stats.
755 utilisateurs:
>734 invités
>16 membres
>5 robots
Record simultané (sur 6 mois):
6892 utilisateurs (le 07/06/2017)
-
Autres sites intéressants
Texas Instruments Education
Global | France
 (English / Français)
Banque de programmes TI
ticalc.org
 (English)
La communauté TI-82
tout82.free.fr
 (Français)