π
<-
Chat plein-écran
[^]

Routines 'système' de Ndless

C, C++, ASM...

Routines 'système' de Ndless

Unread postby grosged » 16 Apr 2019, 15:48

Salut!
En assembleur, nous savons comment appeler les routines utilisées par Ndless (en l'occurrence via l'instruction SWI suivie du numéro de fonction, avec les paramètres stockés dans les registres R0,R1,...). Mais là où je bloque , c'est au niveau de la signification de ces paramètres.
En consultant cette intéressante page : https://github.com/ndless-nspire/Ndless ... all-list.h
je n'ai, malgré tout, pas assez d'infos pour éviter le plantage de ma nspire.

Par exemple, j'essaye d'utiliser e_disp_str pour afficher un texte:
e_disp_str 341 // void disp_str(const char *p1, int *p2, int p3)

Hormis le premier paramètre qui pointe sur l'adresse contenant le texte à afficher, les deux paramètres suivants correspondraient à quoi, selon vous ?

Quelqu'un saurait-il où trouver une éventuelle documentation?
Merci d'avance ;)
User avatar
grosgedVIP++
Niveau 14: CI (Calculateur de l'Infini)
Niveau 14: CI (Calculateur de l'Infini)
Level up: 30.2%
 
Posts: 770
Images: 75
Joined: 14 Sep 2011, 12:29
Gender: Not specified
Calculator(s):
MyCalcs profile

Re: Routines 'système' de Ndless

Unread postby Noury » 16 Apr 2019, 16:07

Salut @grosged
Je n'ai pas de réponse pour toi.
Mais ta question m'intéresse. J'y réponds juste pour avoir des notifications quand tu auras de vraies réponses.
Bon courage !

Aux admins: ce serait chouette si on pouvait s'abonner à un topic, ou à un forum. Ça existe peut-être déjà sans que je le sache.
User avatar
NouryVIP++
Niveau 11: LV (Légende Vivante)
Niveau 11: LV (Légende Vivante)
Level up: 52.8%
 
Posts: 287
Joined: 07 Sep 2018, 09:19
Location: Sceaux, France 92
Gender: Male
Calculator(s):
MyCalcs profile

Re: Routines 'système' de Ndless

Unread postby grosged » 16 Apr 2019, 16:29

Merci @nbenm ;)
Rien qu'avec ces écrans 240x320 que l'on trouve sur les nspire depuis la version W, j'ai bien l'impression qu'il va falloir utiliser quelques-unes de ces fonctions, ne serait-ce que pour déterminer le modèle ou l'écran rencontré...
User avatar
grosgedVIP++
Niveau 14: CI (Calculateur de l'Infini)
Niveau 14: CI (Calculateur de l'Infini)
Level up: 30.2%
 
Posts: 770
Images: 75
Joined: 14 Sep 2011, 12:29
Gender: Not specified
Calculator(s):
MyCalcs profile

Re: Routines 'système' de Ndless

Unread postby Adriweb » 16 Apr 2019, 17:02

nbenm wrote:Aux admins: ce serait chouette si on pouvait s'abonner à un topic, ou à un forum. Ça existe peut-être déjà sans que je le sache.

Hé oui c'est possible :) En bas à gauche de la page des topics, le lien "Surveiller ce sujet" :

Image
Image

MyCalcs: Help the community's calculator documentations by filling out your calculators info!
MyCalcs: Aidez la communauté à documenter les calculatrices en donnant des infos sur vos calculatrices !
Inspired-Lua.org: All about TI-Nspire Lua programming (tutorials, wiki/docs...)
User avatar
AdriwebAdmin
Niveau 16: CC2 (Commandeur des Calculatrices)
Niveau 16: CC2 (Commandeur des Calculatrices)
Level up: 80.2%
 
Posts: 14615
Images: 1218
Joined: 01 Jun 2007, 00:00
Location: France
Gender: Male
Calculator(s):
MyCalcs profile
Twitter: adriweb
GitHub: adriweb

Re: Routines 'système' de Ndless

Unread postby Noury » 16 Apr 2019, 17:59

@Adriweb merci. Je viens d'activer le suivi :)
@grosged désolé pour cette pollution :?
User avatar
NouryVIP++
Niveau 11: LV (Légende Vivante)
Niveau 11: LV (Légende Vivante)
Level up: 52.8%
 
Posts: 287
Joined: 07 Sep 2018, 09:19
Location: Sceaux, France 92
Gender: Male
Calculator(s):
MyCalcs profile

Re: Routines 'système' de Ndless

Unread postby Limonadd » 16 Apr 2019, 18:11

J'y connais rien en assembleur sur ti-nspire.
Mais j'ai trouvé ça:
https://github.com/ndless-nspire/Ndless ... stage1.cpp

il utilise la fonction comme ça:
syscall_local<e_disp_str, void>("ndless_resources not found.", &x, 0);

je sais pas comment ça marche l'écran sur ti nspire, mais les parametes c'est peut l'adresse ou est stockée la chaine, et la position sur l'écran?
sur ti 83 premium ce y'a une vRam, donc c'est peut l'adresse dans la vRam, apres je sais pas si c'est pareil sur nspire aucune idée,
et le troisieme parametre il utilise souvent un 0 donc je sais pas ce que c'est exactement

sauf là y'a un 10:

syscall_local<e_disp_str, void>("Oops, you've forgotten to transfer 'ndless_resources.tns'! Ndless won't be installed.", &x, 10);

ça pourra peut etre t'aider a comprendre les parametres xD
User avatar
Limonadd
Niveau 9: IC (Compteur Infatigable)
Niveau 9: IC (Compteur Infatigable)
Level up: 97.1%
 
Posts: 82
Joined: 14 Feb 2018, 17:10
Gender: Male
Calculator(s):
MyCalcs profile
Class: oui

Re: Routines 'système' de Ndless

Unread postby Vogtinator » 16 Apr 2019, 18:57

That syscall isn't really documented (there's not even a wrapper for it) as it's meant to be mostly internal only.

The first argument is a pointer to a null-terminated string of ASCII characters (non-ASCII chars are printed as spaces).
The second argument is a pointer to the X coordinate of the first char, counting in fixed-width letters from the left. The number of letters printed is added to the value.
The third argument is the Y position, counting in fixed-height letters from the top.
User avatar
VogtinatorPremium
Niveau 9: IC (Compteur Infatigable)
Niveau 9: IC (Compteur Infatigable)
Level up: 1.6%
 
Posts: 217
Joined: 29 Mar 2014, 15:55
Gender: Male
Calculator(s):
MyCalcs profile

Re: Routines 'système' de Ndless

Unread postby grosged » 16 Apr 2019, 21:33

:~o ça marche !! Success !! :D
Merci à tous les deux ! Thank you both ! :D

Grâce à vous, c'est beaucoup plus clair, à présent ;)
Voilà pourquoi il y avait une différence entre les deux derniers paramètres : le premier registre (R1) ne contient pas la valeur mais pointe sur l'adresse contenant le paramètre... D'où le &x dans l'exemple de Limonadd... ou l'astérisque dans e_disp_str 341 // void disp_str(const char *p1, int *p2, int p3)

Voici mon petit programme de test:
Effaçage de l'écran, puis affichage d' HELLO WORLD! en position-texte(8,16), puis une pause avant de quitter.

Code: Select all
//      as -aln -mcpu=arm926ej-s -o .temp.o HelloWorld.s && objcopy -O binary .temp.o HelloWorld.prg.tns
       
        .asciz  "PRG"           // en-tête "PRG"
       
        push    {r0-r12,lr}
        bl      CLEAR
       
        adr     r0,text
        adr     r1,Xpos
        ldr     r2,[r1,#4]
        swi     #341
       
        bl      PAUSE
        pop     {r0-r12,pc}

/***************************************************************/
text:   .asciz  "HELLO WORLD!"
        .align
Xpos:   .word   8
Ypos:   .word   16

/***************************************************************/
CLEAR:  push    {r0-r2,lr}
        mov     r0,#0xC0000010
        ldr     r0,[r0]
        mov     r1,#0
        mov     r2,#38400
clr_lp: str     r1,[r0],#4
        subs    r2,#1
        bne     clr_lp
        pop     {r0-r2,pc}
       
PAUSE:  push    {r0,lr}
        mov     r0,#0x80000000
waitlp: subs    r0,#1
        bne     waitlp
        pop     {r0,pc}

Il n'y a plus qu'à explorer les autres syscall ... ;)
User avatar
grosgedVIP++
Niveau 14: CI (Calculateur de l'Infini)
Niveau 14: CI (Calculateur de l'Infini)
Level up: 30.2%
 
Posts: 770
Images: 75
Joined: 14 Sep 2011, 12:29
Gender: Not specified
Calculator(s):
MyCalcs profile

Re: Routines 'système' de Ndless

Unread postby Noury » 18 Apr 2019, 12:14

Salut

J'ai essayé ce code sur une Nspire CX CAS (4.5.0.1180), mais j'ai un écran noir durant 95 secondes environs.
Pas de "HELLO WORLD!" affiché.
Puis j'ai l'écran suivant:

Image
J'ai déjà eu ce genre d'écran à un moment en quittant MicroPython. Ça y ressemble.
Voilà, il y a donc 2 choses qui ne vont pas.
Si quelqu'un a une idée...
User avatar
NouryVIP++
Niveau 11: LV (Légende Vivante)
Niveau 11: LV (Légende Vivante)
Level up: 52.8%
 
Posts: 287
Joined: 07 Sep 2018, 09:19
Location: Sceaux, France 92
Gender: Male
Calculator(s):
MyCalcs profile

Re: Routines 'système' de Ndless

Unread postby critor » 18 Apr 2019, 12:16

Ecran caractéristique à la fin d'un programme Ndless tournant en mode de compatibilité sur une TI-Nspire CX CR4+.
Image
User avatar
critorAdmin
Niveau 19: CU (Créateur Universel)
Niveau 19: CU (Créateur Universel)
Level up: 42.3%
 
Posts: 41496
Images: 14632
Joined: 25 Oct 2008, 00:00
Location: Montpellier
Gender: Male
Calculator(s):
MyCalcs profile
YouTube: critor3000
Twitter: critor2000
GitHub: critor

Next

Return to Native: Ndless, Linux, ...

Who is online

Users browsing this forum: No registered users and 16 guests

-
Search
-
Social TI-Planet
-
Featured topics
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
-
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.
1452 utilisateurs:
>1427 invités
>21 membres
>4 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)