π
<-

[TI83PCE] Affichage 'segments'

Assembleur, Axe, C/C++, ICE...

[TI83PCE] Affichage 'segments'

Unread postby grosged » 28 Jan 2016, 18:52

Salut !
Je vous fais part de mon tout premier programme en eZ80 :)
J'avais envie de créer ma propre routine d'affichage d'un nombre (en décimales ou hexadécimales)
J'ai réfléchi à la façon la plus simple de procéder, et j'ai donc opté pour le style "par segments" :
Image

la sous-routine en elle-même n'affiche qu'un caractère...

EDIT: j'ai inclu en 2ème partie la routine d'affichage d'un nombre en hexadécimales

Voici la sous-routineHexSeg, précédée d'un mini-programme permettant d'afficher "0123456789AbCdEF"

Image
Code: Select all
.nolist
   #include "ti84pce.inc"
.list
.org userMem-2
.db tExtTok,tAsm84CeCmp

.assume ADL=1

Liste:   ld hl,$d40000+110+(640*90)
      xor a
bouc:   push af
      push hl
      call HexSeg
      pop hl
      ld bc,24
      add hl,bc
      pop af
      inc a
      cp 16
      jr nz,bouc
;----------------------------------------
Hex24b:   ld de,$3a8e4f
      ld hl,$d40000+110+(640*110)
      ld b,6
bbo:   push bc
      xor a
      ex de,hl
      add hl,hl
      rla
      add hl,hl
      rla
      add hl,hl
      rla
      add hl,hl
      rla
      ex de,hl
      push de
      push hl
      call HexSeg
      pop hl
      ld de,24
      add hl,de
      pop de
      pop bc
      djnz bbo
      ret
;------------------------------------
HexSeg:   ld (ofs+2),a
      push hl
      push hl
      ld ix,segdat
      ld bc,0
ofs:   ld c,(ix+0)
      inc hl
      ld de,5106
      call hori
      call hori
      call hori
      pop hl
      ld de,639
      call verti
      pop hl
      ld a,c
      ld c,16
      add hl,bc
      ld c,a
verti:   call vrt
vrt:   rr c
      ld a,b
      sbc a,b
      ld b,7
      inc hl
loop:   add hl,de
      ld (hl),a
      inc hl
      ld (hl),a
      djnz loop
      add hl,de
      ret
hori:   rr c
      ld a,b
      sbc a,b
      ld b,7
hr:      inc hl
      ld (hl),a
      inc hl
      ld (hl),a
      djnz hr
      add hl,de
      ret      
segdat:   .db %0000010   ; 0
      .db %0011111   ; 1
      .db %1001000   ; 2
      .db %0011000   ; 3
      .db %0010101   ; 4
      .db %0110000   ; 5
      .db %0100000   ; 6
      .db %0011110   ; 7
      .db %0000000   ; 8
      .db %0010000   ; 9
      .db %0000100   ; A
      .db %0100001   ; b
      .db %1100010   ; C
      .db %0001001   ; d
      .db %1100000   ; E
      .db %1100100   ; F
Last edited by grosged on 17 Apr 2016, 20:13, edited 1 time in total.
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: [ASMeZ80] Affichage perso d'1 nombre

Unread postby grosged » 28 Jan 2016, 21:25

Je viens d'ajouter la routine d'affichage d'1 nombre 24bits en hexadécimales
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: [ASMeZ80] Affichage perso d'1 nombre

Unread postby Adriweb » 28 Jan 2016, 21:27

Joli :D

Maintenant, rajoute le côté néon héhé

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...)
My calculator programs
Mes programmes pour calculatrices
User avatar
AdriwebAdmin
Niveau 16: CC2 (Commandeur des Calculatrices)
Niveau 16: CC2 (Commandeur des Calculatrices)
Level up: 79.7%
 
Posts: 14820
Images: 1131
Joined: 01 Jun 2007, 00:00
Location: France
Gender: Male
Calculator(s):
MyCalcs profile
Twitter: adriweb
GitHub: adriweb

Re: [ASMeZ80] Affichage perso d'1 nombre

Unread postby grosged » 28 Jan 2016, 21:35

Merci :)
Justement , j'ai ma petite idée pour faire cet effet "néon" ;)
Il suffirait d'afficher en rouge et sur place plusieur couches décalées d'un pixel à chaque fois (donc donnerait du relief, de l'épaisseur), puis de faire de même pour le centre du caractère, en couleur rose pale.
Le hic, c'est que, pour l'instant mes routines n'écrivent qu'en noir sur fond blanc, et il faudrait aussi qu'un segment absent ne soit pas "gommé" (pour l'instant , il est écrit si présent, gommé si absent)
Je compte ajouter un paramètre de couleur ;) (ou peut-être même aussi la couleur de fond)

EDIT : ou il y a une autre façon de faire: carrément faire un tracé de segment fidèle à l'exemple en image
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: [ASMeZ80] Affichage perso d'1 nombre

Unread postby Epharius » 28 Jan 2016, 22:51

Impressionnant ! Le code me parait un peu long mais ça à l'air efficace ! Faudrait aussi laisser un petit peu plus d'espace entre les barres pour faire plus digital ;)
Le projet Geometry Dash est terminé ! N'hésitez pas à aller jeter un coup d’œil au topic du projet ! Vous pouvez le télécharger ici.

Unis par la flèche sacrée de cupidon :favorite:
Image
User avatar
EphariusPremium
Niveau 16: CC2 (Commandeur des Calculatrices)
Niveau 16: CC2 (Commandeur des Calculatrices)
Level up: 8.7%
 
Posts: 1172
Images: 4
Joined: 08 Dec 2014, 17:38
Gender: Not specified
Calculator(s):
MyCalcs profile
Class: Ensimag
GitHub: MathisLav

Re: [ASMeZ80] Affichage perso d'1 nombre

Unread postby grosged » 29 Jan 2016, 15:42

Oui le code paraît long car , en fait, il y a 4 parties :

1) routine d'affichage de l'ensemble des 16 caractères disponibles
2) routine d'affichage d'un nombre 24bits en hexa
3)sous-routine d'affichage d'1 caractère
4)données en binaire : 7bits par caractère afin de renseigner sur l'état de chacun des 7 segments le constituant

On peut bien sur faire plus court/plus rapide : par exemple en regroupant routine et sous-routine en un seul programme ;)

Okay, je vais détacher un peu plus les segments, pour voir...
Voilà ce que ça donne (en bleu, cette fois) :

Image

J'ai quand même une faible pour la première version :)
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: [ASMeZ80] Affichage perso d'1 nombre

Unread postby grosged » 29 Jan 2016, 21:48

Je me suis penché de nouveau sur la sous-routine HexSeg (affiche 1 caractère)
J'en suis arrivé à cette version, un peu plus bref :

Code: Select all
HexSeg:   ld (ofs+2),a         ;  a = valeur 4bits à afficher
      push hl                  ; HL = endroit de l'écran où l'on affiche
      ld ix,segdat          ; (info: $d40000 = coin sup.gauche)
ofs:   ld c,(ix+0)
      inc hl
      ld b,3
hori:   rr c
      sbc a,a
      ld e,14
hr:      inc hl
      ld (hl),a
      dec e
      jr nz,hr
      ld de,5106
      add hl,de
      djnz hori
      pop hl
      call verti
      ld de,-9585
      add hl,de
verti:   ld de,639
      call vrt
      add hl,de
vrt:   rr c
      sbc a,a
      ld b,7
      inc hl
loop:   add hl,de
      ld (hl),a
      inc hl
      ld (hl),a
      djnz loop
      ret
      
segdat:   .db %0000010   ; 0
      .db %0011111   ; 1
      .db %1001000   ; 2
      .db %0011000   ; 3
      .db %0010101   ; 4
      .db %0110000   ; 5
      .db %0100000   ; 6
      .db %0011110   ; 7
      .db %0000000   ; 8
      .db %0010000   ; 9
      .db %0000100   ; A
      .db %0100001   ; b
      .db %1100010   ; C
      .db %0001001   ; d
      .db %1100000   ; E
      .db %1100100   ; F
Last edited by grosged on 29 Jan 2016, 21:56, edited 2 times in total.
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: [ASMeZ80] Affichage perso d'1 nombre

Unread postby Epharius » 29 Jan 2016, 21:55

Pourquoi tu veux aussi écrire les ABCDEF ? Ce serait plus "digital" de n'afficher que les 0123456789, non ?
Je vais me pencher sur le code pour voir si on peut raccourcir des choses ;)

C'est vrai que la deuxième fait un peu "éloignée"
Le projet Geometry Dash est terminé ! N'hésitez pas à aller jeter un coup d’œil au topic du projet ! Vous pouvez le télécharger ici.

Unis par la flèche sacrée de cupidon :favorite:
Image
User avatar
EphariusPremium
Niveau 16: CC2 (Commandeur des Calculatrices)
Niveau 16: CC2 (Commandeur des Calculatrices)
Level up: 8.7%
 
Posts: 1172
Images: 4
Joined: 08 Dec 2014, 17:38
Gender: Not specified
Calculator(s):
MyCalcs profile
Class: Ensimag
GitHub: MathisLav

Re: [ASMeZ80] Affichage perso d'1 nombre

Unread postby grosged » 06 Mar 2016, 16:24

Y a du nouveau !
Je travaille maintenant sur une version améliorée : affichage 16 segments !

Voici un petit aperçu :

Image

On peut afficher jusqu' à 12 caractères horizontalement, et 6 verticalement.
Possibilité de changer de couleurs de segment "éteint" / "allumés :)
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: [TI83PCE] Affichage 'segments'

Unread postby grosged » 17 Apr 2016, 21:33

Hé bien il y a encore du nouveau !..
Image
Je me suis de nouveau penché sur cette routine, afin de pouvoir l'utiliser depuis le Basic :)
J'avoue que les Tokens m'ont un peu fait galérer !
Mais comme je voulais que les minuscules soient pris en charge, je ne pouvais pas éviter ces Tokens à 2 balles..euh 2 bytes! :)
Par contre, seuls les doubles-tokens de type $bb,$xx sont reconnues
(c'est-à-dire que la variable Y0, par exemple ne sera pas reconnue)
J'ai programmé de sorte que, dans le majorité des cas , une case vide s'affichera si le caractère n'est pas disponible/affichable.
J'ai donc inclus d'office l'astuce de Diolum (que je remercie, au passage, pour l'info ;) )
Pour obtenir les minuscules, il faut donc presser 2x [alpha] .
Si vous préférez rester/revenir en mode classique majuscules, ajoutez simplement 8 à vos couleurs dans la variable theta ;)

Les variables Basic 'réquisitionnées' sont :
O pour l'abscisse X (ou cOlonne) : valeur entre 0 et 11 (mettre à 12 pour passer en mode "Disp")
L pour l'ordonnée Y (ou Ligne) : valeur entre 0 et 5
Theta pour la couleur : valeur de 0 (=noir, utile pour n'effacer qu'1 bout) jusqu'à 7 (=blanc)
Il ne devrait pas y avoir d'erreur si l'on dépasse ces limites
Cependant, veillez à ce que ces variables soient définies (sinon : message d'erreur)

On va passer par Ans pour afficher du numérique/alphanumérique.
Je recommande de quitter le mode "réponse:Auto" pour passer en mode "Décimale"
(Personnellement, j'utilise l'instruction DEC) afin que π nous donne comme résultat 3.14159...

Code: Select all
"":Asm(prgmSEGMENTS
Efface l'écran (et remets le curseur en 1ère ligne si l'on est en mode "Disp")


Code: Select all
12→O
Passe en mode "Disp"
Dans ce mode, on ne tient plus compte des valeurs de L.
Lorsqu'on atteint le bas de l'écran , celui va se décaler ("scroller") d'une ligne vers le haut avant de poursuivre l'affichage...

Un petit exemple:
Code: Select all
DEC
"":Asm(prgmSEGMENTS
0→O:3→L:4→ɵ
"C'est 1 test":Asm(prgmSEGMENTS
12→O
1984+2000:Asm(prgmSEGMENTS
π:Asm(prgmSEGMENTS


Voilà! N'hésitez pas à tester et me faire part d'éventuels bugs/plantages ! :D

à télécharger ici : archives_voir.php?id=491043

Pour les curieux, voici le code source: ( en partie commenté) :

Code: Select all
.nolist
#include "ti84pce.inc"
.list
.org userMem-2
.db tExtTok,tAsm84CeCmp
.assume ADL=1

   
        ld hl,$e0000b           ; variable Y du mode "Disp"
        ld a,(hl)               ; Si on lance pour la toute 1ère fois la routine,
        cp 6                    ; il faut l'initialiser à 5 si >5
        jr c,CestOk
        ld (hl),5
CestOk: call _RclAns            ; Que contient Ans ?..
   ld a,(hl)
   cp 4          ; C'est une chaîne ?
   jr z,ItsStr       ; Oui!..Alors on va en ItsStr
   ld a,12       ; Sinon on converti le nb en 1 chaîne (long.max=12)
   call _FormEReal    ; et c'est parti!
   ld hl,OP3       ; hl = pointe sur la chaîne
   ld a,c          ; BC=longueur de la chaîne, mis dans A
   jr ScrutV       ; Passons aux variables...
ItsStr:   call _RclVarSym    ; inspecte la chaîne...
   ld a,(de)       ; sa longueur dans A
   or a          ; à zéro?
   jr nz,NoClr       ; non! on passe...
   dec a          ; autrement, met à -1 coord.Y
   ld ($e0000b),a       ; du mode "Disp"
   ld hl,$e40000
   ld de,$d40000       ; effaçage rapide de l'écran
   ld bc,153600
   ldir          ;
   ret          ; Enfin, on repart vers le TI-OS
NoClr:   ex de,hl       ;
   inc hl         ; De sorte qu' HL pointe
   inc hl          ; sur le 1er caractère.
ScrutV: push hl          ; on préserve HL (=pointe sur la chaîne)
   push af                 ; également A (=long.de chaîne)
        ld b,a
        ld a,$bb                ; mini-routine pour savoir
        ld c,12                 ; combien il y a de tokens "double-octets" $bb,$xx
combb:  cp (hl)                 ; C'est afin de réajuster (si nécessaire)
        jr nz,pasdbb            ; car à cause de ces tokens,
        inc c                   ; longueur de châine à traiter et
pasdbb: inc hl                  ; longueur de chaîne à afficher
        djnz combb              ; ne correspondront plus tout-à-fait
        ld hl,adjust+1          ; alors on ajuste!
        ld (hl),c
        call _ZeroOP1      ; On va lire les variables theta, O et L
   ld a,tTheta            ; variable BAsic theta
   ld (OP1+1),a
   call _RclVarSym
   call _ConvOP1          ; Après un _ConvOP1, on retrouve
   ld hl,$d000a4           ; theta dans DE (et A=E)
        ld de,0                ; on s'assure d'être entre 0 et 7
        set 3,(hl)
        bit 3,a
        jr z,modmin
        res 3,(hl)
modmin: and 7                  ; en fonction de theta,
        add a,a                ; on va...
        ld e,a
        ld hl,SgCols
   add hl,de              ; initialiser la couleur de segment éteint
        ld a,(hl)
   ld (SegOffCol+1),a
        inc hl
        ld a,(hl)               ; ainsi que celle de segment allumé
   ld (SegOnCol+1),a
   call _ZeroOP1
   ld a,tL       ; variable Basic L (=ordonnée Y)
   ld (OP1+1),a
   call _RclVarSym
   call _ConvOP1       ; On ne dépasse pas 5 ?
        cp 6
        jr c,padepa             ; ok!
        ld e,5                  ; sinon, on met à 5
padepa:   push de
   call _ZeroOP1
   ld a,tO       ; variable Basic O (=abscisse X)
   ld (OP1+1),a
   call _RclVarSym
   call _ConvOP1
   cp 12                   ; O inf. à 12 ?
   jr c,prSgCh            ; non? Alors on continue plus loin...
   ld a,($e0000b)         ; Oui? On est donc en mode d'affichage "Disp"
   inc a                  ; on incrémente alors la variable Y interne de ce mode
   cp 6                   ; Dans ce mode "Disp", on est arrivé tout en bas?
   jr c,itsok             ; Non?.. alors on passe....
   ld hl,$d40000+26240    ; Oui? Alors on fait scroller
   ld de,$d40000          ; l'écran d'une ligne
   ld bc,127360           ; vers le haut
   ldir                   ; Puis on efface la ligne du bas
   ld hl,$e40000          ; Tant qu'à faire...
   ld de,$d40000+127360   ; le plus vite possible !
   ld bc,26240
   ldir
   dec a
itsok:   ld ($e0000b),a          ; mets à jour la variable interne Y
        inc sp                  ; En mode "Disp", DE (qui contenait O&L) ne nous sert plus à rien
        inc sp                  ; alors plus besoin de "POPer" DE PUSHé en ligne padepa:
        inc sp                  ; (et comme 3 "inc sp" sont + rapides qu'un POP !..)
   ld e,a                  ;
adjust:   ld a,12                 ; (d'autres comentaires plus tard)
        pop bc
   sub b
        jr pSgCh
prSgCh: pop de
        pop bc
pSgCh:  ld d,a
        pop hl
SgCh:   ld ix,Chrs
        ld a,(hl)         ; D,E = position X,Y
        cp $bb
        jr nz,OneBT
        dec b
        inc hl
        ld a,(hl)
        sub $60
        ld ix,Chrs2
OneBT:  push bc   
        push hl
        ld l,54
        ld h,d
        mlt hl
        ld bc,$d40000-25598
        add hl,bc
        ld b,e
        inc b
        push de
        ld de,26240
_:      add hl,de
        djnz -_
        push hl          ; position en mémoire-écran
        ld d,b
        ld e,a
        add ix,de
        add ix,de        ; ix= adresse où est codé le caractère (16bits)
        ld hl,filt
SegOffCol: ld d,64
SegOnCol:  ld e,224       
        ld c,2
_:      ld b,8
        ld a,(ix+1)
l0op:   inc hl
        ld (hl),d     ; couleur du segment off
        rla
        jr nc,_
        ld (hl),e   ; couleur du segment on
_:      djnz l0op
        dec ix
        dec c
        jr nz,--_
        pop hl           ; position en mémoire-écran
        ld de,SgDat
        ld ix,filt
        ld b,33
SegH:   push bc
        ld b,21
SegW:   ld a,(de)
        ld (_+2),a
_:      ld a,(ix+0)
        ld (hl),a
        inc hl
        ld (hl),a
        inc hl
        inc de
        djnz SegW
        ld bc,598
        add hl,bc
        pop bc
        djnz SegH
        pop de
        pop hl
        pop bc
        djnz kont
        ret
kont:   inc hl
        inc d
        ld a,12
        cp d
        jr nz,SgCh
        ld d,0
        inc e
        rrca
        cp e
        jp nz,SgCh
        ret

SgCols:   .db 0,0,8,24,32,224,40,248,1,7,33,231,9,126,41,255

        ; One-Byte Tokens :
Chrs:    .dw 0,0,0,0
        .dw %0001000100100000   ; →
        .dw 0
   .dw %0100100000010001   ; [
   .dw %1000100000010010   ; ]
         .dw %0100100100010001   ; {
        .dw %1000100010010010   ; }
        .dw %0000000101000000   ; r (bas)
        .dw %1010100100000000   ; °
        .dw %0000001100000000   ; -1
        .dw %0100010010000000   ; 2 (petit)
        .dw %1100100000010000   ; T
        .dw %0100010010000101   ; 3 (petit)
        .dw %0000010000001000   ; (
         .dw %0001000000100000   ; )
         .dw 0,0,0,0,0,0,0,0,0,0,0,0
         .dw 0,0,0,0,0,0,0,0,0,0,0,0
         .dw %0000101000000000   ; "
        .dw %0000000000010010   ; ,
         .dw %0000000000010000   ; i
         .dw %0000100000000001   ; !
         .dw %0000000000010000   ; .
        .dw 0
         .dw %1110011001100111   ; 0
         .dw %0000011000000100   ; 1
         .dw %1100001111000011   ; 2
         .dw %1100001010000111   ; 3
         .dw %0010001110000100   ; 4
         .dw %1110000110000111   ; 5
         .dw %1010000111000111   ; 6
         .dw %1100001000000100   ; 7
         .dw %1110001111000111   ; 8
         .dw %1110001110000101   ; 9
        .dw %0000000000010000   ; .
        .dw %1110000101000011   ; E
        .dw 0,0
        .dw %0000100000010000   ; :
        .dw 0,0
        .dw %1110001111000100   ; A
        .dw %1100101010010111   ; B
        .dw %1110000001000011   ; C
        .dw %1100101000010111   ; D
        .dw %1110000101000011   ; E
        .dw %1110000101000000   ; F
        .dw %1110000011000111   ; G
        .dw %0010001111000100   ; H
        .dw %1100100000010011   ; I
        .dw %0000001001000111   ; J
        .dw %0010010101001000   ; K
        .dw %0010000001000011   ; L
        .dw %0011011001000100   ; M
        .dw %0011001001001100   ; N
        .dw %1110001001000111   ; O
        .dw %1110001111000000   ; P
        .dw %1110001001001111   ; Q
        .dw %1110001111001000   ; R
        .dw %1110000110000111   ; S
        .dw %1100100000010000   ; T
        .dw %0010001001000111   ; U
        .dw %0010010001100000   ; V
        .dw %0010001001101100   ; W
        .dw %0001010000101000   ; X
        .dw %0010001110000111   ; Y
        .dw %1100010000100011   ; Z
        .dw %1010100111010010   ; theta
        .dw 0,0,0,0,0,0,0,0,0,0,0,0,0,0
        .dw %0000000110000011   ; =
        .dw %0000010010000000   ; <
        .dw %0001000100000000   ; >
        .dw %0000010010000001   ; ≤
        .dw %0001000100000010   ; ≥
        .dw %0000010110100001   ; ≠
        .dw %0000100110010000   ; +
        .dw %0000000110000000   ; -
        .dw 0,0,0,0,0,0,0,0,0,0,0,0,0,0
        .dw 0,0
        .dw %0001010110101000   ; *
        .dw %0000010000100000   ; /
        .dw 0,0,0,0,0,0,0,0,0,0,0,0
        .dw 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
        .dw 0,0,0,0,0,0,0,0,0,0,0,0
        .dw %0000000110101000   ; π
        .dw 0
        .dw %0000010000000000   ; '
        .dw %1110001010010000   ; ?
        .dw %0000000110000000   ; -
        .dw 0,0,0,0,0,0,0,0,0,0,0
        .dw %0100100001100000   ; √
        .dw 0,0,0
        .dw 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
        .dw 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
        .dw 0,0,0,0,0,0,0,0,0,0,0
        .dw %0010000110000000   ; ∟
        .dw 0,0,0,0
        .dw %0000011000000000   ; ^
        .dw 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0

        ; 2-Byte Tokens ($bb,$xx) :
Chrs2:  .dw 0,0,0,0,0,0,0,0,0,0,0,0,0,0
        .dw %1110001111000100   ; A
        .dw %1110001111000100   ; A
        .dw %1110001111000100   ; A
        .dw %1110001111000100   ; A
        .dw %0000000101010011   ; a
        .dw %0000000101010011   ; a
        .dw %0000000101010011   ; a
        .dw %0000000101010011   ; a
        .dw %1110000101000011   ; E
        .dw %1110000101000011   ; E
        .dw %1110000101000011   ; E
        .dw %1110000101000011   ; E
        .dw %0000000101100010   ; e
        .dw %0000000101100010   ; e
        .dw %0000000101100010   ; e
        .dw %0000000101100010   ; e
        .dw 0
        .dw %1100100000010011   ; I
        .dw %1100100000010011   ; I
        .dw %1100100000010011   ; I       
        .dw %0000000000010000   ; i
        .dw %0000000000010000   ; i
        .dw %0000000000010000   ; i
        .dw %0000000000010000   ; i
        .dw %1110001001000111   ; O
        .dw %1110001001000111   ; O
        .dw %1110001001000111   ; O
        .dw %1110001001000111   ; O
        .dw %0000000101010010   ; o
        .dw %0000000101010010   ; o
        .dw %0000000101010010   ; o
        .dw %0000000101010010   ; o
        .dw %0010001001000111   ; U
        .dw %0010001001000111   ; U
        .dw %0010001001000111   ; U
        .dw %0010001001000111   ; U
        .dw %0000000001010011   ; u
        .dw %0000000001010011   ; u
        .dw %0000000001010011   ; u
        .dw %0000000001010011   ; u
        .dw %1110000001000011   ; C
        .dw %0000000101000010   ; c
        .dw %0011001001001100   ; N
        .dw %0000000101010000   ; n
        .dw %0000010000000000   ; ´
        .dw %0001000000000000   ; `
        .dw 0,0,0
        .dw %0011010001101000   ; α
        .dw %1100101010010111   ; β
        .dw %0001010000010000   ; γ
        .dw %0000000000101011   ; Δ
        .dw %1001000101010010   ; δ
        .dw %1110000101000011   ; ε
        .dw %0001000000101000   ; λ
        .dw %0010100101000000   ; μ
        .dw %0000000110101000   ; π
        .dw %0011000101000000   ; ρ
        .dw %1101000000100011   ; Σ
        .dw 0
        .dw %0110101110010000   ; φ
        .dw %0010101001101100   ; Ω
        .dw %0011000101000000   ; p
        .dw %0001010000101000   ; X
        .dw %1110000101000000   ; F
        .dw %0000000101010011   ; a
        .dw %0010000101010010   ; b
        .dw %0000000101000010   ; c
        .dw %0000100101010010   ; d
        .dw %0000000101100010   ; e
        .dw %0100100010010000   ; f
        .dw %1010100100010010   ; g
        .dw %0010000101010000   ; h
        .dw %0000000000010000   ; i
        .dw %0000100001010010   ; j
        .dw %0000110000011000   ; k
        .dw 0                   ; unused
        .dw %0000100000010000   ; l
        .dw %0000000111010100   ; m
        .dw %0000000101010000   ; n
        .dw %0000000101010010   ; o
        .dw %1010100101000000   ; p
        .dw %1010100100010000   ; q
        .dw %0000000101000000   ; r
        .dw %0000000010001001   ; s
        .dw %0010000101000010   ; t
        .dw %0000000001010011   ; u
        .dw %0000000001100000   ; v
        .dw %0000000001101100   ; w
        .dw %0001010000101000   ; x
        .dw %0001010000100000   ; y
        .dw %0000000100100010   ; z
        .dw %0000000111010010   ; σ
        .dw %1100100000001000   ; τ
        .dw %0000010110010011   ; Í
        .dw 0                   ; GarbageCollect
        .dw %1010110000000000   ; ~
        .dw 0                   ; reserved
        .dw %1100001101010111   ; @
        .dw %0000101110010111   ; #
        .dw %1110100110010111   ; $
        .dw %1001100101011010   ; &
        .dw %0001000000000000   ; `
        .dw %0000100000100000   ; ;
        .dw %0001000000001000   ; \
        .dw %0000001000000100   ; |
        .dw %0000000000000011   ; _
        .dw %1010110110110101   ; %
        .dw %0000000001010100   ; ...
        .dw %0000010010000000   ; ∠
        .dw %1100101010010111   ; ß
        .dw %0001010000101000   ; x
        .dw %1100100000010000   ; T
        .dw %1010100001010010   ; 0 (mini)
        .dw %0000100000010000   ; 1
        .dw %1000100101000010   ; 2
        .dw %0001000100010010   ; 3
        .dw %0010100100010000   ; 4
        .dw %1010000100010010   ; 5
        .dw %1010000101010010   ; 6
        .dw %1000100000100000   ; 7
        .dw %1010100101010010   ; 8
        .dw %1010100100010010   ; 9
        .dw %0110101001010101   ; 10
        .dw %0000010010001000   ; ←
        .dw %0001000100100000   ; →
        .dw %0000000000111000   ; ↑
        .dw %0001110000000000   ; ↓
        .dw 0                   ; unused
        .dw %0001010000101000   ; x
        .dw %0100100000010010   ; ∫
        .dw %0000000000111011   ; ↑
        .dw %1101110000000000   ; ↓
        .dw %0100100001100000   ; √
        .dw %0000000110000011   ; =
        .dw 0,0,0,0,0,0,0,0,0,0

BackGrCol: 
filt: .db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0     ; =17 ... (couleur de fond +16 segments)

SgDat .db 0,1,1,1,1,1,1,1,1,1,0,2,2,2,2,2,2,2,2,2,0
      .db 0,0,1,1,1,1,1,1,1,1,0,2,2,2,2,2,2,2,2,0,0
      .db 3,0,0,1,1,1,1,1,1,1,0,2,2,2,2,2,2,2,0,0,7
      .db 3,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,7
      .db 3,3,3,0,4,4,0,0,0,5,5,5,0,0,0,6,6,0,7,7,7
      .db 3,3,3,0,4,4,0,0,0,5,5,5,0,0,0,6,6,0,7,7,7
      .db 3,3,3,0,4,4,4,0,0,5,5,5,0,0,6,6,6,0,7,7,7
      .db 3,3,3,0,4,4,4,0,0,5,5,5,0,0,6,6,6,0,7,7,7
      .db 3,3,3,0,0,4,4,4,0,5,5,5,0,6,6,6,0,0,7,7,7
      .db 3,3,3,0,0,4,4,4,0,5,5,5,0,6,6,6,0,0,7,7,7
      .db 3,3,3,0,0,0,4,4,4,5,5,5,6,6,6,0,0,0,7,7,7
      .db 3,3,3,0,0,0,4,4,4,5,5,5,6,6,6,0,0,0,7,7,7
      .db 3,3,3,0,0,0,0,4,4,5,5,5,6,6,0,0,0,0,7,7,7
      .db 3,3,3,0,0,0,0,4,4,0,5,0,6,6,0,0,0,0,7,7,7
      .db 3,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,7
      .db 3,0,0,8,8,8,8,8,8,8,0,9,9,9,9,9,9,9,0,0,7
      .db 0,0,8,8,8,8,8,8,8,8,0,9,9,9,9,9,9,9,9,0,0
      .db 10,0,0,8,8,8,8,8,8,8,0,9,9,9,9,9,9,9,0,0,14
      .db 10,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,14
      .db 10,10,10,0,0,0,0,11,11,0,12,0,13,13,0,0,0,0,14,14,14
      .db 10,10,10,0,0,0,0,11,11,12,12,12,13,13,0,0,0,0,14,14,14
      .db 10,10,10,0,0,0,11,11,11,12,12,12,13,13,13,0,0,0,14,14,14
      .db 10,10,10,0,0,0,11,11,11,12,12,12,13,13,13,0,0,0,14,14,14
      .db 10,10,10,0,0,11,11,11,0,12,12,12,0,13,13,13,0,0,14,14,14
      .db 10,10,10,0,0,11,11,11,0,12,12,12,0,13,13,13,0,0,14,14,14
      .db 10,10,10,0,11,11,11,0,0,12,12,12,0,0,13,13,13,0,14,14,14
      .db 10,10,10,0,11,11,11,0,0,12,12,12,0,0,13,13,13,0,14,14,14
      .db 10,10,10,0,11,11,0,0,0,12,12,12,0,0,0,13,13,0,14,14,14
      .db 10,10,10,0,11,11,0,0,0,12,12,12,0,0,0,13,13,0,14,14,14
      .db 10,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,14
      .db 10,0,0,15,15,15,15,15,15,15,0,16,16,16,16,16,16,16,0,0,14
      .db 0,0,15,15,15,15,15,15,15,15,0,16,16,16,16,16,16,16,16,0,0
      .db 0,15,15,15,15,15,15,15,15,15,0,16,16,16,16,16,16,16,16,16,0   
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


Return to Langages alternatifs

Who is online

Users browsing this forum: ClaudeBot [spider] and 2 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.
953 utilisateurs:
>915 invités
>29 membres
>9 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)