π
<-

NumWorks Omega 1.21 : 100K de heap pour scripts Python !

Re: NumWorks Omega 1.21 : 100K de heap pour scripts Python !

Unread postby redgl0w » 30 Apr 2021, 14:02

parisse wrote:D'ailleurs je vois que dans ma version de Delta, la declaration dans nw-external-apps/api/api.c est incorrecte (parametre bool au lieu de int), j'ai:
Code: Select all
int getkey(bool allow_suspend) {
  return ((int (*)(bool))_api_base[74])(allow_suspend);
}

Donc voila ce qu'il faudrait verifier sur Omega, d'abord est-ce que le numero de syscall est le bon (((int (*)(bool))_api_base[74])) et ensuite est-ce que l'implementation de getkey est bonne ?

En effet légère (énorme) différence avec omega et le repo de zardam. Cependant, l'implémentatino que tu utilises est j'ai l'impression external v1. Ne serait-il pas plus simple de passer sur external V2 ? (car le code est assez spécifique à khicas, ce qui aurait plus de logique d'être donc dans khicas). En tout cas, on a enfin pu trouver donc d'où vient le problème de compatibilité : c'est que zardam avait developpé external v2, nous avait pr, on a accepté en se disant que khicas marcherait toujours, mais il est resté lui sous external v1.
Image
User avatar
redgl0wVIP+
Niveau 13: CU (Calculateur Universel)
Niveau 13: CU (Calculateur Universel)
Level up: 62.7%
 
Posts: 285
Images: 0
Joined: 30 Oct 2019, 20:36
Location: Grenoble
Gender: Male
Calculator(s):
MyCalcs profile
Class: ENSIMAG 1A
Twitter: Gl0wRed
GitHub: RedGl0w

Re: NumWorks Omega 1.21 : 100K de heap pour scripts Python !

Unread postby M4x1m3 » 30 Apr 2021, 14:27

Après avoir regardé dans les détails le repo Delta, avec son implémentation external, je pense qu'il est possible soi :
- De passer tout à external v2, et de réimplementer certaines fonctions dans KhiCAS (mais ça impliquerais de se passer d'une fonctionnalité, plus de détails après)
- De faire une 3e version de l'API external, uniformisée, qui serait la même dans delta et Omega.

Je pense que la première solution est largement faisable :
Code: Select all
  (void (*)(void)) numworks_draw_string,       // Présent dans External V2
  (void (*)(void)) numworks_draw_string_small, // Présent dans External V2
  (void (*)(void)) numworks_set_pixel,         // Présent dans External V2
  (void (*)(void)) numworks_fill_rect,         // Présent dans External V2
  (void (*)(void)) numworks_get_pixel,         // Présent dans External V2
  (void (*)(void)) numworks_hide_graph,        // Semble être utilisé car interraction avec l'env mpy Epsilon, je ne comprends pas pourquoi (surement réimplémentable)
  (void (*)(void)) numworks_wait_1ms,          // Implémentable (sleep(1))
  (void (*)(void)) waitforvblank,              // Présent dans External V2
  (void (*)(void)) statuslinemsg,              // Implémentable avec les fonctions d'external V2 (d'après le code sur gh)
  (void (*)(void)) statusline,                 // Implémentable avec les fonctions d'external V2 (d'après le code sur gh)
  (void (*)(void)) getkey,                     // Un peu plus complexe (car USB), nécessite surement un compromis / une 3e version d'external
  (void (*)(void)) GetKey,                     // Duplicata de la fonction précédente
  (void (*)(void)) alphawasactive,             // Possiblement implémentable (faire un driver clavier dans khicas à partir de external_scanKey ?)
  (void (*)(void)) lock_alpha,                 // Possiblement implémentable (faire un driver clavier dans khicas à partir de external_scanKey ?)
  (void (*)(void)) reset_kbd,                  // Possiblement implémentable (faire un driver clavier dans khicas à partir de external_scanKey ?)
  (void (*)(void)) back_key_pressed,           // Possiblement implémentable (faire un driver clavier dans khicas à partir de external_scanKey ?)
  (void (*)(void)) enable_back_interrupt,      // Semble être utilisé car interraction avec l'env mpy Epsilon, je ne comprends pas pourquoi (surement réimplémentable)?
  (void (*)(void)) disable_back_interrupt,     // Semble être utilisé car interraction avec l'env mpy Epsilon, je ne comprends pas pourquoi (surement réimplémentable)
  (void (*)(void)) os_set_angle_unit,          // Impossible sans révision de l'API / grosse magie noire
  (void (*)(void)) os_get_angle_unit,          // Impossible sans révision de l'API / grosse magie noire
  (void (*)(void)) os_file_browser,            // Implémentable
  (void (*)(void)) file_exists,                // Présent dans External V2
  (void (*)(void)) erase_file,                 // Présent dans External V2
  (void (*)(void)) read_file,                  // Présent dans External V2
  (void (*)(void)) write_file,                 // Présent dans External V2
  (void (*)(void)) mp_hal_input,               // Semble être utilisé car interraction avec l'env mpy Epsilon, je ne comprends pas pourquoi (surement réimplémentable)

Le compromis est donc dans le getangleunit et setangleunit (à voir s'il est possible de s'en passer, sinon on peut designer une manière plus large d'accéder aux settings de poincaré), et dans la gestion de l'USB (il est toujours possible d’interagir avec le HW en bas niveau depuis external, mais ce n'est sûrement pas une bonne solution, on a un HAL pour ça). À toi de voir ce qui t'irais vraiment pour KhiCAS, savoir si on fait une V3 external ou si on peut juste réimplémenter les fonctions implémentables dans khicas au lieu de les avoir dans l'API.

Si une V3 d'External devrais être faite, je pense qu'il faudrait vraiment essayer de faire ça proprement pour ne plus jamais avoir à y toucher.
Image
"Regression testing"? What's that? If it compiles, it is good, if it boots up it is perfect.
User avatar
M4x1m3Programmeur
Niveau 13: CU (Calculateur Universel)
Niveau 13: CU (Calculateur Universel)
Level up: 62.7%
 
Posts: 171
Images: 12
Joined: 13 Oct 2019, 21:10
Location: Bas-Rhin (67)
Gender: Male
Calculator(s):
MyCalcs profile
Class: M2 Informatique
Twitter: M4xi1m3
GitHub: M4xi1m3

Re: NumWorks Omega 1.21 : 100K de heap pour scripts Python !

Unread postby parisse » 30 Apr 2021, 14:44

Je ne comprends pas trop pourquoi je devrais changer quelque chose de mon cote, j'ai une liste de fonctions, mon "SDK C", qui marche a la fois sur nspire et numworks (et qui est a peu pres compatible avec les Casio et pourrait l'etre aussi avec les HP Prime), qu'est-ce qui empeche d'avoir une version de l'api external chez vous qui soit up-compatible? Je veux dire, si vous n'avez pas de getkey, il suffit de le rajouter non?
User avatar
parisseVIP++
Niveau 12: CP (Calculatrice sur Pattes)
Niveau 12: CP (Calculatrice sur Pattes)
Level up: 86%
 
Posts: 3663
Joined: 13 Dec 2013, 16:35
Gender: Not specified
Calculator(s):
MyCalcs profile

Re: NumWorks Omega 1.21 : 100K de heap pour scripts Python !

Unread postby parisse » 30 Apr 2021, 14:49

P.S.: la description du SDK est la https://www-fourier.univ-grenoble-alpes.fr/~parisse/numworks/khicasnw.html#sec47
La doc sur getkey est a completer, au sens ou si allow_suspend est <0 alors on teste juste si la touche est pressee.
User avatar
parisseVIP++
Niveau 12: CP (Calculatrice sur Pattes)
Niveau 12: CP (Calculatrice sur Pattes)
Level up: 86%
 
Posts: 3663
Joined: 13 Dec 2013, 16:35
Gender: Not specified
Calculator(s):
MyCalcs profile

Re: NumWorks Omega 1.21 : 100K de heap pour scripts Python !

Unread postby M4x1m3 » 30 Apr 2021, 15:01

Parce qu'on essaye de garder une API external la plus simpliste et la plus générique possible. Le but de cette API est de permettre d'utiliser le matériel et d’interagir avec le firmware avec des méthodes non-spécifiques à des cas précis.
Si on prends un autre exemple pas si éloigné, comme les syscalls du noyau linux, les développeurs ne vont pas rajouter un syscall pour chaque utilisation précise, alors qu'il est possible d'implémenter tout ça avec ceux déjà existants. Je pense que je peux essayer de réimplémenter les fonctions du SDK avec external V2, on va essayer.
Image
"Regression testing"? What's that? If it compiles, it is good, if it boots up it is perfect.
User avatar
M4x1m3Programmeur
Niveau 13: CU (Calculateur Universel)
Niveau 13: CU (Calculateur Universel)
Level up: 62.7%
 
Posts: 171
Images: 12
Joined: 13 Oct 2019, 21:10
Location: Bas-Rhin (67)
Gender: Male
Calculator(s):
MyCalcs profile
Class: M2 Informatique
Twitter: M4xi1m3
GitHub: M4xi1m3

Re: NumWorks Omega 1.21 : 100K de heap pour scripts Python !

Unread postby parisse » 30 Apr 2021, 15:26

Qui peut le plus peut le moins! Rien ne vous empeche d'avoir 2 niveaux, le premier niveau qui plait a un puriste informaticien, et le 2eme niveau avec ce qu'il me faut, qui vous plait peut-etre moins, mais me permet a moi et potentiellement d'autres d'avoir du code partage entre differentes calculatrices.
On a fait le travail pour Delta, ca doit pas etre grand chose de porter tout ca pour Omega (n'oublions pas qu'il y a des anomalies avec Omega, c'est donc a Omega de faire des changements!). Et ca permet d'eviter qu'on se lance dans des discussions sans fins ou tout laisse craindre que ca va s'envenimer a cause de nos differences de culture et du passe.
User avatar
parisseVIP++
Niveau 12: CP (Calculatrice sur Pattes)
Niveau 12: CP (Calculatrice sur Pattes)
Level up: 86%
 
Posts: 3663
Joined: 13 Dec 2013, 16:35
Gender: Not specified
Calculator(s):
MyCalcs profile

Re: NumWorks Omega 1.21 : 100K de heap pour scripts Python !

Unread postby redgl0w » 30 Apr 2021, 15:47

parisse wrote:n'oublions pas qu'il y a des anomalies avec Omega, c'est donc a Omega de faire des changements!).

Ce n'est pas nous qui avons fait personnellement les changements. On savait que zardam bossait avec toi sur external, et donc quand il a fait son PR pour external V2, on avait cru que KhiCas marcherait aussi.
Image
User avatar
redgl0wVIP+
Niveau 13: CU (Calculateur Universel)
Niveau 13: CU (Calculateur Universel)
Level up: 62.7%
 
Posts: 285
Images: 0
Joined: 30 Oct 2019, 20:36
Location: Grenoble
Gender: Male
Calculator(s):
MyCalcs profile
Class: ENSIMAG 1A
Twitter: Gl0wRed
GitHub: RedGl0w

Re: NumWorks Omega 1.21 : 100K de heap pour scripts Python !

Unread postby parisse » 30 Apr 2021, 16:02

En fait, j'avais compris que c'etait une version un peu experimentale, je ne suis jamais passe dessus (vu qu'elle n'etait pas compatible). La version de Delta que j'utilise, c'est celle qui est sur ma page https://www-fourier.univ-grenoble-alpes.fr/~parisse/numworks/delta14_device.tar.bz2 pour la calculatrice et https://www-fourier.univ-grenoble-alpes.fr/~parisse/numworks/delta_simu.tar.bz2 pour le simulateur (avec un Epsilon 12 mais ca n'a pas d'importance pour debugguer KhiCAS au simulateur), et avec le mode d'emploi https://www-fourier.univ-grenoble-alpes.fr/~parisse/numworks/khicasnw.html#sec42.
User avatar
parisseVIP++
Niveau 12: CP (Calculatrice sur Pattes)
Niveau 12: CP (Calculatrice sur Pattes)
Level up: 86%
 
Posts: 3663
Joined: 13 Dec 2013, 16:35
Gender: Not specified
Calculator(s):
MyCalcs profile

Previous

Return to News NumWorks

Who is online

Users browsing this forum: ClaudeBot [spider] and 3 guests

-
Search
-
Social TI-Planet
-
Featured topics
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 !
1234
-
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.
935 utilisateurs:
>912 invités
>15 membres
>8 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)