π
<-
Chat plein-écran
[^]

Routines 'système' de Ndless

C, C++, ASM...

Re: Routines 'système' de Ndless

Unread postby nbenm » 19 Apr 2019, 14:13

grosged wrote:Je n'ai pas de TI-nspire modèle W en ma possession, et je me suis toujours demandé : dans ce mode 240x320, d'où démarre le buffer écran, je veux dire, de quel coin de l'écran ?

Dans mon cas, TI-Nspire CX CAS récente, les adresses mémoire commencent en haut à gauche (adresse 0 du buffer)
Ensuite ça descend jusqu'à 479.
Puis on va sur la droite pour la seconde colonne qui commence à l'adresse 480
etc...
Enfin, la dernière colonne se termine à l'adresse 153599.
Ce qui nous fait 480x320. 480 en vertical, et 320 en horizontal.
C'est curieux, je pensais qu'on était en 240x320.

Chaque octet semble contenir la couleur (o=noir, 255=blanc). Je n'ai pas essayé toutes les valeurs intermédiaires, mais j'ai eu à un moment du bleu ciel (0x7F).

Je reste perplexe. Pourquoi 480 ?

Ceci dit, pour dessiner les caractères, ça ne facilite pas la tâche.
User avatar
nbenmVIP++
Niveau 10: GR (Guide de Référence)
Niveau 10: GR (Guide de Référence)
Level up: 18.8%
 
Posts: 176
Joined: 07 Sep 2018, 09:19
Location: 92
Gender: Male
Calculator(s):

Re: Routines 'système' de Ndless

Unread postby critor » 19 Apr 2019, 14:28

480=240*2

L'écran étant par défaut en 16-bits, ça colle. :)
Image
User avatar
critorAdmin.
Niveau 18: DC (Deus ex Calculatorum)
Niveau 18: DC (Deus ex Calculatorum)
Level up: 95.3%
 
Posts: 32875
Images: 8609
Joined: 25 Oct 2008, 00:00
Location: Montpellier
Gender: Male
Calculator(s):
Class: Lycée
YouTube: critor3000
Twitter: critor2000
Facebook: critor.ti

Re: Routines 'système' de Ndless

Unread postby nbenm » 19 Apr 2019, 14:36

Ah d'accord !
Deux octets par pixel...
Merci pour l'info.

Mais donc on peut l'utiliser également en 480x320. C'est d'ailleurs ce que j'ai fait, mais du coup on n'a que 256 couleurs. Et le risque c'est d'avoir les caractères "tassés" en vertical. Sauf à faire de toutes petites polices.
User avatar
nbenmVIP++
Niveau 10: GR (Guide de Référence)
Niveau 10: GR (Guide de Référence)
Level up: 18.8%
 
Posts: 176
Joined: 07 Sep 2018, 09:19
Location: 92
Gender: Male
Calculator(s):

Re: Routines 'système' de Ndless

Unread postby grosged » 19 Apr 2019, 15:46

Ah ok, merci pour la structure d'un écran 240x320 ;)
Personnellement, si l'on souhaite programmer de manière "universelle", je pense que le choix d'un mode 8bpp comme standard serait l'idéal, car même les modèles monochromes dits "classiques" seraient gagnants. En effet, j'ai remarqué qu'en basculant en mode 8bpp, on gagne 1 bit supplémentaire pour coder les couleurs : ainsi, 32 des 256 couleurs constituant la palette sont réellement exploitables , au lieu des 16 couleurs en mode 4bpp normal ;)
(voir archives_voir.php?id=1126139 )

Image
image en 32 niveaux de gris (sur nspire MONOCHROME)

EDIT:
sinon, que pensez-vous d'une fonte en 8x12 (mode texte 40x20) ?
ça ferait ni trop grand ni trop petit... :p
Et avec 12 pixels de haut, ça favorise un bel équilibre de certaines minuscules (lettres g, j, p, q, y)
User avatar
grosgedVIP++
Niveau 13: CU (Calculateur Universel)
Niveau 13: CU (Calculateur Universel)
Level up: 52.9%
 
Posts: 621
Images: 18
Joined: 14 Sep 2011, 12:29
Gender: Not specified

Re: Routines 'système' de Ndless

Unread postby nbenm » 19 Apr 2019, 17:17

grosged wrote:Personnellement, si l'on souhaite programmer de manière "universelle", je pense que le choix d'un mode 8bpp comme standard serait l'idéal, car même les modèles monochromes dits "classiques" seraient gagnants. En effet, j'ai remarqué qu'en basculant en mode 8bpp, on gagne 1 bit supplémentaire pour coder les couleurs : ainsi, 32 des 256 couleurs constituant la palette sont réellement exploitables , au lieu des 16 couleurs en mode 4bpp normal ;)


Si j'ai bien compris, tu n'utiliserais qu'un octet sur les deux disponibles sur la dernière CX CAX pour être compatible avec tous les modèles.

EDIT:
sinon, que pensez-vous d'une fonte en 8x12 (mode texte 40x20) ?
ça ferait ni trop grand ni trop petit... :p
Et avec 12 pixels de haut, ça favorise un bel équilibre de certaines minuscules (lettres g, j, p, q, y)

J'avais pensé à du 16x6. 16 vertical et 6 horizontal. Pour avoir un écran de 30 lignes et 52 colonnes. C'est ce qui est utilisé dans MicroPython porté sur Nspire.
Mais j'avoue que le côté "artistique", ce n'est pas mon fort.
Je vais pour ma part continuer à faire un truc minimaliste, à titre d'exercice (en assembleur).
Au fait, tu va faire ça en C ou en ASM ?
Autre question, tu travailles sur la calculatrice seulement, ou tu utilises l'émulateur ?
User avatar
nbenmVIP++
Niveau 10: GR (Guide de Référence)
Niveau 10: GR (Guide de Référence)
Level up: 18.8%
 
Posts: 176
Joined: 07 Sep 2018, 09:19
Location: 92
Gender: Male
Calculator(s):

Re: Routines 'système' de Ndless

Unread postby grosged » 19 Apr 2019, 18:03

Oui, on peut, bien sûr, rester sur du 16bpp. Dans ce cas, on vise délibérement la compatibilité CX (CAS) / CX (CAS) II ;)
Après tout, les nspire monochrome commencent à dater, et il y a de moins en moins d'utilisateur si je ne me trompe...Mais bon!..ça se discute, hein!? :p

La fonte 6x8 utilisée par MicroPython me paraît un peu trop petite (à mon goût).
On pourrait la grossir légèrement en passant en 8x8 (texte=40x30), 8x10 (texte=40x24), ou même 8x12 (texte=40x20).

Concernant la TI-nspire, Je programme uniquement en Assembleur, uniquement sur calculatrice.
J'ai un peu réfléchi à une façon d'afficher du texte sur les modèles 240x320, mais comme d'habitude, je pense à plein de choses en même temps (comme une gestion de la couleur d'affichage/couleur de fond/ou même transparence)...Et pourquoi pas , inclure la possibilité de préciser les coordonnées d'affichage (et ce, en mode "texte" ?..ou "graphique".?..)
Par exemple, (en mode 16bpp):

pointeur1: .hword couleur-affichage,couleur-fond
pointeur2: .byte PositionX,PositionY (ou
.hword
PositionX,PositionY si graphique)
pointeur3: .asciz "Hello World!"

Ainsi, la routine d'affichage de "base" pourrait s'étofffer d'options , dépendemment du pointeur choisi et de l'appel émis ;)
User avatar
grosgedVIP++
Niveau 13: CU (Calculateur Universel)
Niveau 13: CU (Calculateur Universel)
Level up: 52.9%
 
Posts: 621
Images: 18
Joined: 14 Sep 2011, 12:29
Gender: Not specified

Re: Routines 'système' de Ndless

Unread postby critor » 19 Apr 2019, 18:12

Les Nspire monochromes peuvent très bien être réglées en 16bpp.
Il faut juste allouer un nouveau buffer écran le temps de l'exécution du programme Ndless, puisque le buffer 4bpp n'aura plus assez de place.
Image
User avatar
critorAdmin.
Niveau 18: DC (Deus ex Calculatorum)
Niveau 18: DC (Deus ex Calculatorum)
Level up: 95.3%
 
Posts: 32875
Images: 8609
Joined: 25 Oct 2008, 00:00
Location: Montpellier
Gender: Male
Calculator(s):
Class: Lycée
YouTube: critor3000
Twitter: critor2000
Facebook: critor.ti

Re: Routines 'système' de Ndless

Unread postby grosged » 19 Apr 2019, 18:15

Ah mais oui !!! Bien vu, critor !! J'oubliais qu'on pouvait modifier l'adresse de buffer-écran :D
User avatar
grosgedVIP++
Niveau 13: CU (Calculateur Universel)
Niveau 13: CU (Calculateur Universel)
Level up: 52.9%
 
Posts: 621
Images: 18
Joined: 14 Sep 2011, 12:29
Gender: Not specified

Re: Routines 'système' de Ndless

Unread postby nbenm » 02 May 2019, 09:12

Bonjour,

J'ai finalement fait l'exercice. J'ai pu écrire la chaine "Hello World!" sur l'écran depuis un programme assembleur.
Ça ne fera pas l'objet d'une bibliothèque, car il y a un OS, et ce serait dommage de se priver d'appeler des fonctions qui existent déjà, et qui sont certainement plus performantes et plus efficaces.

Voici les règles que je me suis fixées pour cet exercice:

Le principal choix qui a été fait est qu'on gère soi-même l'affichage.
C'est-à-dire qu'on décide de tout.
Ça veut également dire que cette procédure permet l'affichage d'une ligne, ou une partie de ligne, de texte à des coordonnées indiquées.

La chaine de caractères à afficher se trouve au label "texte"

Les coordonnées d'affichage (ligne, colonne) se trouvent au label "pos".

les couleurs des caractères se trouvent au label "colors" (arrière plan, caractère)
Le format des couleurs est un codage sur 16 bits en hexadécimal.

L'écran fait 24 lignes de 40 caractères.
Chaque caractère est dessiné dans une matrice de 10 lignes et 8 colonnes (pixels)
On accède au caractère à afficher dans la table des caractères par son code ascii.

Parmi les choix retenus:
- si une ligne dépasse la limite des 40 caractères, il y a troncature. Pas de retour à la ligne.
- si on dépasse les 24 lignes, il n'y a pas de scrolling
- seuls les caractères imprimables sont pris en compte. Les caractères de contrôle (CR, LF...) ne le sont pas.
- il n'y a pas de mise en forme (gras, italique, barré...)

Je mets le code source et le tns en PJ, pour le cas où ça intéresserait quelqu'un.

J'espère qu'il n'y a pas d'erreurs sur la police de caractères, je l'ai saisie manuellement pixel par pixel.

Voici ce que ça donne:

Image

Image

Image

Image

Image
Attachments
helloworld.zip
(13.2 KiB) Downloaded 10 times
User avatar
nbenmVIP++
Niveau 10: GR (Guide de Référence)
Niveau 10: GR (Guide de Référence)
Level up: 18.8%
 
Posts: 176
Joined: 07 Sep 2018, 09:19
Location: 92
Gender: Male
Calculator(s):

Re: Routines 'système' de Ndless

Unread postby BackStage » 02 May 2019, 17:21

nbenm

merci pour le code source :)
User avatar
BackStage
Niveau 6: SM (Super Membre)
Niveau 6: SM (Super Membre)
Level up: 3.1%
 
Posts: 21
Joined: 03 Apr 2018, 01:54
Gender: Not specified
Calculator(s):

PreviousNext

Return to Native: Ndless, Linux, ...

Who is online

Users browsing this forum: No registered users and 0 guests

-
Search
-
Featured topics
Comparaisons des meilleurs prix pour acheter sa calculatrice !
1
-
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 
-
Stats.
629 utilisateurs:
>583 invités
>42 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)