Page 1 of 2

Programme ne fonctionnant pas sur nspire rev AA

Unread postPosted: 24 Oct 2017, 19:09
by MMBC
Salut, j'ai acquis il n'y a pas longtemps une nspire CX CAS, révision AA (février 2017).
Je me suis mis au développement en assembleur arm, et récemment j'ai eu un problème... intéressant.
Sur émulateur ou nspire rev C et A (pas testé sur d'autre rev), un de mes programmes marche très bien (c'est un programme qui affiche une ligne verte et qui se contente d'attendre que l'utilisateur appuies sur esc), mais quand je le transfère vers ma nspire et que je l'execute, c'est le drame : la ligne, en plus d'être dessinée en pointillée, et dessinée plusieurs fois a la suite avec un décalage sur l'ordonnée... (malheureusement je ne peux pas donner de screenshot, impossible d'en prendre pendant l'execution du programme). En plus de ça on m'a dit que le theme editor ne fonctionne pas non plus pour cette revision matérielle. Qu'est-ce qui ne va pas avec cette révision ? Comment je peux corriger mon programme pour qu'il fonctionne ?
Le programme :
line.tns

Le code source : https://pastebin.com/FQDLnrjK
Merci de votre aide.

PS: j'utilise le ndless sdk pour assembler le programme

Re: Programme ne fonctionnant pas sur nspire rev AA

Unread postPosted: 24 Oct 2017, 19:12
by Ti64CLi++
Il me semble qu'il est possible d'emuler une Nspire rev W sur firebird. Test avec cette revision materielle, et dis moi si tu as le meme problem ;)

Re: Programme ne fonctionnant pas sur nspire rev AA

Unread postPosted: 24 Oct 2017, 19:16
by Lionel Debroux
Pour des raisons de coût de production, probablement une économie de bout de chandelle, les Nspire CX (CAS) les plus récentes disposent d'un écran 240x320, et non plus d'un écran 320x240. Ils ont donc dû ajouter du code qui fait des snapshots périodiques de l'écran dessiné en 320x240 puis les écrit en 240x320... et augmenter la fréquence à laquelle ils font tourner le CPU pour compenser le surcoût non négligeable de cette tâche.
Même si Ndless a ajouté un mode de compatibilité avec les vieux programmes, qui fonctionne pour certains d'entre eux, il faut ajuster ton code :)
La documentation en ligne t'en dira davantage que moi sur la conversion pour Nspire CX (CAS) récentes. Ca fait longtemps que j'ai décroché de la programmation Nspire.

Re: Programme ne fonctionnant pas sur nspire rev AA

Unread postPosted: 24 Oct 2017, 19:22
by MMBC
Bon maintenant reste plus qu'a trouver comment détecter si l'écran est 240x320 pour que le code s'ajuste tout seul...

Re: Programme ne fonctionnant pas sur nspire rev AA

Unread postPosted: 24 Oct 2017, 19:27
by Lionel Debroux
Les Ndless récents doivent forcément contenir des APIs permettant de s'ajuster au modèle.

Re: Programme ne fonctionnant pas sur nspire rev AA

Unread postPosted: 25 Oct 2017, 09:05
by MMBC
Bon j'ai réussi a avoir un code qui permet de vérifier le type de lcd de la calculatrice, ajuster ma routine de dessin pour s'adapter. Mon programme marche donc enfin sur toutes les rev matérielles que j'ai pu tester.

Re: Programme ne fonctionnant pas sur nspire rev AA

Unread postPosted: 25 Oct 2017, 11:31
by Ti64CLi++
Tu peux donner le code stp?

Re: Programme ne fonctionnant pas sur nspire rev AA

Unread postPosted: 25 Oct 2017, 11:38
by MMBC
Ce qui a changé : c'est le setPixel : https://pastebin.com/sENA8iWz
Il faut aussi rajouter
Code: Select all
.LCD_T: .word 0
dans le data segment, et appeler cette routine au début du programme :
Code: Select all
checkLcdType:
   stmfd sp!, {r0,lr}
   bl lcd_type
   ldr r3, =.LCD_T
   strb r0, [r3]
   ldmfd sp!, {r0,pc}

Re: Programme ne fonctionnant pas sur nspire rev AA

Unread postPosted: 25 Oct 2017, 11:41
by Ti64CLi++
Merci, ca m'interesse de savoir comment faire un programme compatible ;)

Re: Programme ne fonctionnant pas sur nspire rev AA

Unread postPosted: 25 Oct 2017, 11:43
by MMBC
Et si tu veux savoir si le programme tourne sur monochrome ou sur couleur, tu peux utiliser a peu près la même technique (regarde dans le fichier libndls.h pour savoir quelles valeurs correspondent a quel type d'écran), sinon grosged a déjà fait un programme qui le vérifie.