π
<-
Chat plein-écran
[^]

KhiCAS, le moteur formel Giac/Xcas pour toutes TI-Nspire

:32tins: :32tinsktpb: :32tinsktpn: :32tinscas: :32tinstpkc: :32tinstpktpb: :32tinstp: :32tinscastp: :32tinscmc: :32tinscx: :32tinscxcas:

Re: KhiCAS, le moteur formel Giac/Xcas pour toutes TI-Nspire

Unread postby critor » 21 Sep 2020, 11:39

Merci pour la réactivité.

Sur
TI-Nspire CX II-T
parce que c'est la seule que j'ai sous la main actuellement, la dernière build
KhiCAS CX
de ce matin semble fonctionnelle :
13019
https://www-fourier.univ-grenoble-alpes ... khicas.zip

Par contre, il n'est pas normal que ça déclenche encore le mode de compatibilité. Si le SDK est maintenant à jour, il faut croire que cela vient du code, particulièrement du code d'affichage...
Et il faudrait éviter, vu que comme on peut voir ci-dessus dans ce contexte nous avons une ligne horizontale de parasites permanents sur l'écran.
Image
Image
User avatar
critorAdmin
Niveau 19: CU (Créateur Universel)
Niveau 19: CU (Créateur Universel)
Level up: 9.8%
 
Posts: 36279
Images: 9892
Joined: 25 Oct 2008, 00:00
Location: Montpellier
Gender: Male
Calculator(s):
Class: Lycée
YouTube: critor3000
Twitter: critor2000
Facebook: critor.ti
GitHub: critor

Re: KhiCAS, le moteur formel Giac/Xcas pour toutes TI-Nspire

Unread postby parisse » 21 Sep 2020, 13:02

Il y a une doc specifique pour la nspire cx ii?
Voila le code par ou passent tous les affichages de KhiCAS, si quelqu'un voit du code non portable:
Code: Select all
Gc nspire_gc=0;

Gc * get_gc(){
  if (!nspire_gc){
    nspire_gc=gui_gc_global_GC();
    gui_gc_setRegion(nspire_gc, 0, 0, SCREEN_WIDTH, SCREEN_HEIGHT, 0, 0, SCREEN_WIDTH, SCREEN_HEIGHT);
    gui_gc_begin(nspire_gc);
  }
  return &nspire_gc;
}

void os_set_pixel(int x,int y,int c){
  get_gc();
  gui_gc_setColor(nspire_gc,c_rgb565to888(c));
  gui_gc_drawRect(nspire_gc,x,y+nspire_statusarea,1,1);
}

void os_fill_rect(int x,int y,int w,int h,int c){
  get_gc();
  gui_gc_setColor(nspire_gc,c_rgb565to888(c));
  gui_gc_fillRect(nspire_gc,x,y+nspire_statusarea,w,h);
}

int os_get_pixel(int x,int y){
  if (x<0 || x>=SCREEN_WIDTH || y<0 || y>=SCREEN_HEIGHT)
    return -1;
#if 1
  get_gc();
  char ** off_buff = ((((char *****)nspire_gc)[9])[0])[0x8];
  int res = *(unsigned short *) (off_buff[y+nspire_statusarea] + 2*x);
  return res;
#else
  unsigned short * addr=*(unsigned short **) 0xC0000010;
  int r=addr[(y+nspire_statusarea)*SCREEN_WIDTH+x];
  return r;
#endif
}

int nspire_draw_string(int x,int y,int c,int bg,int f,const char * s,bool fake){
  // void ascii2utf16(void *buf, const char *str, int max_size): converts the UTF-8 string str to the UTF-16 string buf of size max_size.
  int l=strlen(s);
  char utf16[2*l+2];
  ascii2utf16(utf16,s,l);
  utf16[2*l]=0;
  utf16[2*l+1]=0;
  get_gc();
  gui_gc_setFont(nspire_gc,f);
  int dx=gui_gc_getStringWidth(nspire_gc, f, utf16, 0, l) ;
  if (fake)
    return x+dx;
  int dy=17;
  if (f==Regular9)
    dy=13;
  if (f==Regular11)
    dy=16;
  gui_gc_setColor(nspire_gc,c_rgb565to888(bg));
  gui_gc_fillRect(nspire_gc,x,y,dx,dy);
  gui_gc_setColor(nspire_gc,c_rgb565to888(c));
  //gui_gc_setPen(nspire_gc, GC_PS_MEDIUM, GC_PM_SMOOTH);
  gui_gc_drawString(nspire_gc, utf16, x, y-1, GC_SM_NORMAL | GC_SM_TOP); // normal mode
  return x+dx;
}

int os_draw_string(int x,int y,int c,int bg,const char * s,bool fake){
  get_gc();
  gui_gc_clipRect(nspire_gc,0,nspire_statusarea,SCREEN_WIDTH,SCREEN_HEIGHT-nspire_statusarea,0);
  int i=nspire_draw_string(x,y+nspire_statusarea,c,bg,Regular12,s,fake);
  gui_gc_clipRect(nspire_gc,0,0,SCREEN_WIDTH,SCREEN_HEIGHT,GC_CRO_RESET);
  return i;
}
int os_draw_string_small(int x,int y,int c,int bg,const char * s,bool fake){
  get_gc();
  gui_gc_clipRect(nspire_gc,0,nspire_statusarea,SCREEN_WIDTH,SCREEN_HEIGHT-nspire_statusarea,GC_CRO_SET);
  int i=nspire_draw_string(x,y+nspire_statusarea,c,bg,Regular9,s,fake);
  gui_gc_clipRect(nspire_gc,0,0,SCREEN_WIDTH,SCREEN_HEIGHT,GC_CRO_RESET);
  return i;
}

int os_draw_string_medium(int x,int y,int c,int bg,const char * s,bool fake){
  get_gc();
  gui_gc_clipRect(nspire_gc,0,nspire_statusarea,SCREEN_WIDTH,SCREEN_HEIGHT-nspire_statusarea,GC_CRO_SET);
  int i=nspire_draw_string(x,y+nspire_statusarea,c,bg,Regular11,s,fake);
  gui_gc_clipRect(nspire_gc,0,0,SCREEN_WIDTH,SCREEN_HEIGHT,GC_CRO_RESET);
  return i;
}

void statuslinemsg(const char * msg){
  get_gc();
  int bg=exam_bg();
  gui_gc_setColor(nspire_gc,c_rgb565to888(bg));
  gui_gc_fillRect(nspire_gc,0,0,SCREEN_WIDTH,nspire_statusarea);
  nspire_draw_string(0,0,0xffff,bg,Regular9,msg,false);
}

void display_time(){
  int h,m,s;
  get_hms(&h,&m,&s);
  char msg[10];
  msg[0]=' ';
  msg[1]='0'+(h/10);
  msg[2]='0'+(h%10);
  msg[3]= 'h';
  msg[4]= ('0'+(m/10));
  msg[5]= ('0'+(m%10));
  msg[6]=0;
  //msg[6]= 'm';
  //msg[7] = ('0'+(s/10));
  //msg[8] = ('0'+(s%10));
  //msg[9]=0;
  int bg=exam_bg();
  gui_gc_setColor(nspire_gc,c_rgb565to888(bg));
  gui_gc_fillRect(nspire_gc,270,0,SCREEN_WIDTH-270,nspire_statusarea);
  nspire_draw_string(270,0,0xffff,bg,Regular9,msg,false);
}

void sync_screen(){
  get_gc();
  //gui_gc_finish(nspire_gc);
  gui_gc_blit_to_screen(nspire_gc);
  msleep(10);
  //nspire_gc=0;
  // gui_gc_begin(nspire_gc);
}

// Nspire peripheral reset :
// https://github.com/nDroidProject/nDroid-bootloader/blob/master/kernel.c
// https://hackspire.org/index.php?title=Memory-mapped_I/O_ports_on_CX#CC000000_-_SHA-256_hash_generator
// hardware ports
// https://hackspire.org/index.php?title=Memory-mapped_I/O_ports_on_CX

bool nspire_shift=false;
bool nspire_ctrl=false;
bool nspire_select=false;
void statusline(int mode){
  char *msg=0;
  if (nspire_ctrl){
    if (nspire_shift)
      msg="shift ctrl";
    else
      msg="        ctrl";
  }
  else {
    if (nspire_shift)
      msg="shift";
    else
      msg="";
  }
  int bg=exam_bg();
  gui_gc_setColor(nspire_gc,c_rgb565to888(bg));
  gui_gc_fillRect(nspire_gc,210,0,SCREEN_WIDTH-210,nspire_statusarea);
  nspire_draw_string(220,0,0xffff,bg,Regular9,msg,false);
  if (nspireemu)
    nspire_draw_string(210,0,0xffff,bg,Regular9,"e",false);
  display_time();
  if (mode==0)
    return;
  sync_screen();
}

User avatar
parisseVIP++
Niveau 12: CP (Calculatrice sur Pattes)
Niveau 12: CP (Calculatrice sur Pattes)
Level up: 12.4%
 
Posts: 2242
Joined: 13 Dec 2013, 16:35
Gender: Not specified

Re: KhiCAS, le moteur formel Giac/Xcas pour toutes TI-Nspire

Unread postby critor » 21 Sep 2020, 14:01

Ah, autre problème que je viens de remarquer entre temps...

Si on laisse la calculatrice sous KhiCAS CX sans l'utiliser pendant un moment elle finit par s'éteindre.
Problème dans le cas de la TI-Nspire CX II-T, on ne peut pas la rallumer. Donc reset...
Image
User avatar
critorAdmin
Niveau 19: CU (Créateur Universel)
Niveau 19: CU (Créateur Universel)
Level up: 9.8%
 
Posts: 36279
Images: 9892
Joined: 25 Oct 2008, 00:00
Location: Montpellier
Gender: Male
Calculator(s):
Class: Lycée
YouTube: critor3000
Twitter: critor2000
Facebook: critor.ti
GitHub: critor

Re: KhiCAS, le moteur formel Giac/Xcas pour toutes TI-Nspire

Unread postby Noury » 21 Sep 2020, 14:03

critor wrote:Ah, autre problème que je viens de remarquer à l'instant...

Si on laisse la calculatrice sous KhiCAS sans l'utiliser pendant un moment elle finit par s'éteindre.
Problème dans le cas de la TI-Nspire CX II-T, on ne peut pas la rallumer. Donc reset...

J'ai eu ça également. Je pensais avoir fait une mauvaise manip. Il a fallu sortir le trombone!
User avatar
NouryVIP++
Niveau 11: LV (Légende Vivante)
Niveau 11: LV (Légende Vivante)
Level up: 18.4%
 
Posts: 244
Joined: 07 Sep 2018, 09:19
Location: Sceaux, France 92
Gender: Male
Calculator(s):

Re: KhiCAS, le moteur formel Giac/Xcas pour toutes TI-Nspire

Unread postby parisse » 21 Sep 2020, 14:22

Oui, ca je sais pourquoi, c'est l'adresse I/O du power management qui a change 900B -> 9014.
Comment on teste si on est sur une CX ou CX2?
User avatar
parisseVIP++
Niveau 12: CP (Calculatrice sur Pattes)
Niveau 12: CP (Calculatrice sur Pattes)
Level up: 12.4%
 
Posts: 2242
Joined: 13 Dec 2013, 16:35
Gender: Not specified

Re: KhiCAS, le moteur formel Giac/Xcas pour toutes TI-Nspire

Unread postby Noury » 21 Sep 2020, 14:30

Je ne sais pas si ça peut aider, j'ai trouvé ça:
Code: Select all
900A0000 - Miscellaneous
Seems to be similar to CX and Classic, except for the model ID at 900A0000 which is now 0x202.

Disponible ici:
https://hackspire.org/index.php?title=M ... cellaneous
User avatar
NouryVIP++
Niveau 11: LV (Légende Vivante)
Niveau 11: LV (Légende Vivante)
Level up: 18.4%
 
Posts: 244
Joined: 07 Sep 2018, 09:19
Location: Sceaux, France 92
Gender: Male
Calculator(s):

Re: KhiCAS, le moteur formel Giac/Xcas pour toutes TI-Nspire

Unread postby parisse » 21 Sep 2020, 16:54

parisse wrote:Oui, ca je sais pourquoi, c'est l'adresse I/O du power management qui a change 900B -> 9014.
Comment on teste si on est sur une CX ou CX2?

Bon en fait, c'est le backlight que je modifiais pour simuler OFF/ON, et l'adresse sur la CX est 0x900f0020, celle sur la CX2 n'est pas connue (on parle de 0x90130018 mais ca plante). A moins qu'il n'y ait un controle qu'on peut ecrire sur le materiel du genre il faut d'abord ecrire quelque chose sur 0xCC000008.
Pour le moment je pense que je vais desactiver la simulation du OFF sur la cx2.
User avatar
parisseVIP++
Niveau 12: CP (Calculatrice sur Pattes)
Niveau 12: CP (Calculatrice sur Pattes)
Level up: 12.4%
 
Posts: 2242
Joined: 13 Dec 2013, 16:35
Gender: Not specified

Re: KhiCAS, le moteur formel Giac/Xcas pour toutes TI-Nspire

Unread postby parisse » 21 Sep 2020, 17:54

Bon, je remets la version precedente de KhiCAS sous le nom khicas.zip car il y a pas mal de problemes, y compris avec les CX (off ne marche plus). Le khicas pour les cx2 s'appelle khicas52.zip.
User avatar
parisseVIP++
Niveau 12: CP (Calculatrice sur Pattes)
Niveau 12: CP (Calculatrice sur Pattes)
Level up: 12.4%
 
Posts: 2242
Joined: 13 Dec 2013, 16:35
Gender: Not specified

Re: KhiCAS, le moteur formel Giac/Xcas pour toutes TI-Nspire

Unread postby critor » 21 Sep 2020, 18:38

En attendant un émulateur à jour, vous avez une CX II ou pas encore ?
Image
User avatar
critorAdmin
Niveau 19: CU (Créateur Universel)
Niveau 19: CU (Créateur Universel)
Level up: 9.8%
 
Posts: 36279
Images: 9892
Joined: 25 Oct 2008, 00:00
Location: Montpellier
Gender: Male
Calculator(s):
Class: Lycée
YouTube: critor3000
Twitter: critor2000
Facebook: critor.ti
GitHub: critor

Re: KhiCAS, le moteur formel Giac/Xcas pour toutes TI-Nspire

Unread postby parisse » 21 Sep 2020, 18:46

Je viens d'en acheter une.

Sur les cx ii, ca marche pas mal je trouve, modulo les parasites vers le milieu de l'affichage. J'ai un probleme avec l'interruption par ON dans Xcas qui fait quitter (dans MicroPython ca a l'air de marcher par contre). Il faudra voir si on peut controler le backlight.

C'est sur les cx que je conseille de rester en os 4.5.0 et la version precedente de khicas/ndless. De toutes facons, les versions ulterieures de l'os n'apportent rien.
User avatar
parisseVIP++
Niveau 12: CP (Calculatrice sur Pattes)
Niveau 12: CP (Calculatrice sur Pattes)
Level up: 12.4%
 
Posts: 2242
Joined: 13 Dec 2013, 16:35
Gender: Not specified

PreviousNext

Return to News TI-Nspire

Who is online

Users browsing this forum: No registered users and 22 guests

-
Search
-
Featured topics
Comparaisons des meilleurs prix pour acheter sa calculatrice !
Découvre les nouvelles fonctionnalités en Python de l'OS 5.2 pour les Nspire CX II
Découvre les nouvelles fonctionnalités en Python de l'OS 5.5 pour la 83PCE/84+C-T Python Edition
Omega, le fork étendant les capacités de ta NumWorks, même en mode examen !
1234
-
Donations / Premium
For more contests, prizes, reviews, helping us pay the server and domains...

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.
501 utilisateurs:
>491 invités
>4 membres
>6 robots
Record simultané (sur 6 mois):
6892 utilisateurs (le 07/06/2017)

-
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)