π
<-
Chat plein-écran
[^]

Bientôt un compilateur C en ligne pour TI-83 Prem CE / 84+CE

Nouveautés, projets, mises à jour.

Re: Bientôt un compilateur C en ligne pour TI-83 Prem CE / 8

Message non lude Ti64CLi++ » 12 Oct 2015, 13:31

@Adriweb aurais-tu une idée de quand sera-t-il mit en ligne?
Je suis actuellement en Irlande, et utilise donc un clavier anglais. Merci de ne pas prendre en compte le manque d'accent


Everyone who has never made a mistake has never tried anything new.
Une personne qui n'a jamais commis d'erreur n'a jamais rien essayé de nouveau.

Albert Einstein


Image
Avatar de l’utilisateur
Ti64CLi++Modo
Niveau 14: CI (Calculateur de l'Infini)
Niveau 14: CI (Calculateur de l'Infini)
Prochain niv.: 92.5%
 
Messages: 2613
Images: 49
Inscription: 04 Juil 2014, 15:40
Localisation: Valence 26
Genre: Homme
Calculatrice(s):
Classe: 1°S-SVT

Re: Bientôt un compilateur C en ligne pour TI-83 Prem CE / 8

Message non lude Lionel Debroux » 12 Oct 2015, 13:34

Quand il sera prêt :)
Membre de la TI-Chess Team.
Co-mainteneur de GCC4TI (documentation en ligne de GCC4TI), TIEmu et TILP.
Avatar de l’utilisateur
Lionel DebrouxModo.G
Niveau 13: CU (Calculateur Universel)
Niveau 13: CU (Calculateur Universel)
Prochain niv.: 93.5%
 
Messages: 5796
Inscription: 23 Déc 2009, 01:00
Localisation: France
Genre: Homme
Calculatrice(s):
Classe: -

Re: Bientôt un compilateur C en ligne pour TI-83 Prem CE / 8

Message non lude Ti64CLi++ » 12 Oct 2015, 13:37

Et quand sera-t-il pret?
Je suis actuellement en Irlande, et utilise donc un clavier anglais. Merci de ne pas prendre en compte le manque d'accent


Everyone who has never made a mistake has never tried anything new.
Une personne qui n'a jamais commis d'erreur n'a jamais rien essayé de nouveau.

Albert Einstein


Image
Avatar de l’utilisateur
Ti64CLi++Modo
Niveau 14: CI (Calculateur de l'Infini)
Niveau 14: CI (Calculateur de l'Infini)
Prochain niv.: 92.5%
 
Messages: 2613
Images: 49
Inscription: 04 Juil 2014, 15:40
Localisation: Valence 26
Genre: Homme
Calculatrice(s):
Classe: 1°S-SVT

Re: Bientôt un compilateur C en ligne pour TI-83 Prem CE / 8

Message non lude Lionel Debroux » 12 Oct 2015, 13:47

"Quand ce sera prêt" a souvent comme significations implicite "on ne sait pas quand" ;)
On ne publie habituellement pas des choses mal fichues, et on ne sait pas quand ça sera dans un état publiable.

La communauté n'est pas une entreprise: nous contribuons chacun dans la mesure de notre temps libre et de nos moyens, en fonction de nos contraintes IRL et communautaires.
Membre de la TI-Chess Team.
Co-mainteneur de GCC4TI (documentation en ligne de GCC4TI), TIEmu et TILP.
Avatar de l’utilisateur
Lionel DebrouxModo.G
Niveau 13: CU (Calculateur Universel)
Niveau 13: CU (Calculateur Universel)
Prochain niv.: 93.5%
 
Messages: 5796
Inscription: 23 Déc 2009, 01:00
Localisation: France
Genre: Homme
Calculatrice(s):
Classe: -

Re: Bientôt un compilateur C en ligne pour TI-83 Prem CE / 8

Message non lude Adriweb » 12 Oct 2015, 19:09

critor a écrit:On peut avoir le code source complet stp ?


Sure: (les quelques premières lignes étant déjà mises pas défut par l'éditeur)
Code: Tout sélectionner
#define USE_OS_CRT
 
#include <String.h>
#include "CE.h"
 
#pragma asm "DB %EF" // tExtTok
#pragma asm "DB %7B" // tAsm84CeCmp

#define min(a,b) (((a)<(b))?(a):(b))
#define max(a,b) (((a)>(b))?(a):(b))
#define abs(x)   (((x)<0)?-(x):(x))

typedef unsigned char   uint8_t;
typedef unsigned short  uint16_t;

//*******************************************
// System Stuff
//*******************************************

void cleanUp();
void print(const char* string, uint8_t xpos, uint8_t ypos);
void printSmall(const char* string, uint16_t xpos, uint8_t ypos);

#define getKey()    asm("CALL _GetKey");

//*******************************************
// Graphical Stuff (Nspire-Lua like)
//*******************************************

#define SCR_WIDTH   320
#define SCR_HEIGHT  240

static const uint16_t* screen_buf = (uint16_t*)0xD40000;

typedef uint16_t    color_t;

#define rgb2color(r, g, b)        ((color_t)(((r << 8) & 0xf800) | ((g << 3) & 0x07e0) | (b >> 3)))

void gc_drawLine(uint16_t x0, uint16_t y0, uint16_t x1, uint16_t y1);
void gc_drawRect(uint16_t x, uint16_t y, uint16_t w, uint16_t h);
void gc_fillRect(uint16_t x, uint16_t y, uint16_t w, uint16_t h);
#define gc_drawPixel(x, y)        *((uint16_t*)(screen_buf + x + y*SCR_WIDTH)) = globalColor;
#define gc_setColor(c)            globalColor = c;
#define gc_setColorRGB(r, g, b)   globalColor = rgb2color(r, g, b);

enum colorNames { Black = 0, Grey, White, Red, Green, Blue };
color_t Colors[6] = {
    rgb2color(0, 0, 0),
    rgb2color(127, 127, 127),
    rgb2color(255, 255, 255),
    rgb2color(255, 0, 0),
    rgb2color(0, 255, 0),
    rgb2color(0, 0, 255)
};
color_t globalColor = 0;

char tmpBuf[20] = {0};

uint8_t i = 0;

/********************************************/

void main()
{
    cleanUp();
   
    /*
    print("Hello world", 2, 8);

    gc_setColor(Colors[Black]);
   
    gc_drawPixel(120, 75);

    gc_setColor(Colors[Grey]);
    gc_drawPixel(125, 75);
   
    gc_setColor(Colors[Red]);
    gc_drawPixel(130, 75);
   
    gc_setColor(Colors[Red]);
    gc_drawRect(150, 100, 20, 50);
           
    gc_setColor(Colors[Blue]);
    gc_fillRect(50, 50, 30, 10);

    gc_setColor(Colors[Green]);
    gc_drawLine(80, 80, 200, 100);
       
    printSmall("Bye world", 5, 80);
    */
   
    for (i=0; i<240; i++)
    {
        gc_setColorRGB(i, 255-i, 255);
        gc_drawLine(0, i, 319, i);
    }
   
    getKey();
    cleanUp();
}

void gc_drawLine(uint16_t x0, uint16_t y0, uint16_t x1, uint16_t y1)
{
    if (y1 == y0)
    {
        uint16_t *base = screen_buf + min(x0, x1) + y0*SCR_WIDTH;
        uint16_t end = abs(x0-x1) + 1;
        uint16_t i;
        for (i = 0; i < end; i++)
        {
            *(base++) = globalColor;
        }
    } else {
        int dx = abs(x1-x0), sx = x0<x1 ? 1 : -1;
        int dy = abs(y1-y0), sy = y0<y1 ? 1 : -1;
        int err = (dx>dy ? dx : -dy)/2, e2;
        for(;;)
        {
            gc_drawPixel(x0, y0);
            if (x0 == x1 && y0 == y1)
                break;
            e2 = err;
            if (e2 >-dx) { err -= dy; x0 += sx; }
            if (e2 < dy) { err += dx; y0 += sy; }
        }
    }
}

void gc_drawRect(uint16_t x, uint16_t y, uint16_t w, uint16_t h)
{
    gc_drawLine(x, y, x+w-1, y);
    gc_drawLine(x, y+h-1, x+w-1, y+h-1);
    gc_drawLine(x, y, x, y+h-1);
    gc_drawLine(x+w-1, y, x+w-1, y+h-1);
}

void gc_fillRect(uint16_t x, uint16_t y, uint16_t w, uint16_t h)
{
    uint16_t i, j;
    uint16_t* base = screen_buf + x + y*SCR_WIDTH;
    for(j=0; j<h; j++)
    {
        uint16_t* lineBase = base;
        for(i=0; i<h; i++)
        {
            *(lineBase++) = globalColor;
        }
        base += SCR_WIDTH;
    }
}

void cleanUp()
{
    asm("CALL _DelRes");
    asm("CALL _Clrtxtshd");
    asm("CALL _Clrscrn");
    asm("set 0,(iy+3)"); //mark graph as dirty
    asm("CALL _HomeUp");
    asm("CALL _DrawStatusBar");
}

void print(const char* string, uint8_t xpos, uint8_t ypos)
{
    asm("LD A,(IX+9)");
    asm("LD (D00596h),A");
    asm("LD A,(IX+12)");
    asm("LD (D00595h),A");
    asm("LD HL,(IX+6)");
    asm("CALL _Puts");
}

void printSmall(const char* string, uint16_t xpos, uint8_t ypos)
{
    asm("LD DE,(IX+9)");
    asm("LD.SIS (08D2h),DE");
    asm("LD A,(IX+12)");
    asm("LD (D008D5h),A");
    asm("LD HL,(IX+6)");
    asm("SET 3,(IY+5)");
    asm("CALL _vPuts");
}

Ca met environ 0.7 seconde à remplir l'écran (quasiment pareil si on entour la boucle for principale d'un di / ei), mais avec des routines de graphismes fait en assembleur directement, ça devrait être plus performant.

Mais attention, ZDS compile du code en utilisant les index registers (IY...), ce qui créée des conflits avec l'OS qui utilise ça pour les flags. C'est particulièrement embêtant parce qu'apparemment, il n'y a pas d'options pour lui faire compiler autrement... (sans parler des nombreux autres trucs chiants de ZDS et de son interprétation du C89)...
Avatar de l’utilisateur
AdriwebAdmin.
Niveau 16: CC2 (Commandeur des Calculatrices)
Niveau 16: CC2 (Commandeur des Calculatrices)
Prochain niv.: 36.8%
 
Messages: 11153
Images: 830
Inscription: 01 Juin 2007, 01:00
Localisation: France
Genre: Homme
Calculatrice(s):
Classe: (ingénieur)
Twitter: adriweb
GitHub: adriweb

Re: Bientôt un compilateur C en ligne pour TI-83 Prem CE / 8

Message non lude Lionel Debroux » 12 Oct 2015, 19:14

min, max et abs sont de vilaines définitions peu sûres (elles ne font pas attention aux effets de bord)... mais avec ce compilo pourri, à part faire une fonction out of line et dégrader la taille et la vitesse, je ne vois pas trop ce qu'on peut faire...
Membre de la TI-Chess Team.
Co-mainteneur de GCC4TI (documentation en ligne de GCC4TI), TIEmu et TILP.
Avatar de l’utilisateur
Lionel DebrouxModo.G
Niveau 13: CU (Calculateur Universel)
Niveau 13: CU (Calculateur Universel)
Prochain niv.: 93.5%
 
Messages: 5796
Inscription: 23 Déc 2009, 01:00
Localisation: France
Genre: Homme
Calculatrice(s):
Classe: -

Re: Bientôt un compilateur C en ligne pour TI-83 Prem CE / 8

Message non lude Adriweb » 12 Oct 2015, 19:16

Il est en effet très désagréable de programmer en C avec ce compilateur pour le moment...
Et on est obligé de faire des choses qui sont à la fois moins jolies, mais surtout moins bien.

Edit: btw, il faut faire toutes les déclarations de variable au début du scope en court (trop facile sinon :P)
Avatar de l’utilisateur
AdriwebAdmin.
Niveau 16: CC2 (Commandeur des Calculatrices)
Niveau 16: CC2 (Commandeur des Calculatrices)
Prochain niv.: 36.8%
 
Messages: 11153
Images: 830
Inscription: 01 Juin 2007, 01:00
Localisation: France
Genre: Homme
Calculatrice(s):
Classe: (ingénieur)
Twitter: adriweb
GitHub: adriweb

Re: Bientôt un compilateur C en ligne pour TI-83 Prem CE / 8

Message non lude Adriweb » 15 Oct 2015, 07:44

Mise-à-jour
(même si c'est toujours pas public pour le moment parce que ce n'est pas terminé... :P) :

  • Intégration des headers de base
  • Header de types communs
  • Meilleur gestion de plusieurs codes en parallèle (id uniques dans le localStorage etc.)
  • Support de codage collaboratif en temps-réel :
Avatar de l’utilisateur
AdriwebAdmin.
Niveau 16: CC2 (Commandeur des Calculatrices)
Niveau 16: CC2 (Commandeur des Calculatrices)
Prochain niv.: 36.8%
 
Messages: 11153
Images: 830
Inscription: 01 Juin 2007, 01:00
Localisation: France
Genre: Homme
Calculatrice(s):
Classe: (ingénieur)
Twitter: adriweb
GitHub: adriweb

Re: Bientôt un compilateur C en ligne pour TI-83 Prem CE / 8

Message non lude critor » 17 Oct 2015, 19:42

On peut faire des jeux sympa avec ce compilateur, avec quasiment aucune connaissance requise en assembleur. ;)

La preuve, voici
Mandragore
, un jeu basé sur un moteur de déplacement bloc par bloc sur carte :
6026

Les performances sont véritablement impressionnantes. :o
Image
Avatar de l’utilisateur
critorAdmin.
Niveau 18: DC (Deus ex Calculatorum)
Niveau 18: DC (Deus ex Calculatorum)
Prochain niv.: 60.7%
 
Messages: 27068
Images: 6246
Inscription: 25 Oct 2008, 01:00
Localisation: Aix-Marseille
Genre: Homme
Calculatrice(s):
Classe: Lycée
YouTube: critor3000
Twitter: critor2000
Facebook: critor.ti

Re: Bientôt un compilateur C en ligne pour TI-83 Prem CE / 8

Message non lude Adriweb » 18 Oct 2015, 07:14

En voici même une petite vidéo :P

Avatar de l’utilisateur
AdriwebAdmin.
Niveau 16: CC2 (Commandeur des Calculatrices)
Niveau 16: CC2 (Commandeur des Calculatrices)
Prochain niv.: 36.8%
 
Messages: 11153
Images: 830
Inscription: 01 Juin 2007, 01:00
Localisation: France
Genre: Homme
Calculatrice(s):
Classe: (ingénieur)
Twitter: adriweb
GitHub: adriweb

PrécédenteSuivante

Retourner vers Actualités

Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 1 invité

Concours
Galactik, concours universel de rentrée 2017 : 1 défi, 4 constructeurs, 1400€ de lots !
-
Rechercher
-
Sujets à la une
Galactik, concours universel de rentrée 2017 : 1 défi, 4 constructeurs, 1400€ de lots !
"NumWorks++": Challenge de modification matérielle pour rajouter une puce de mémoire Flash !
Offre TI-Planet/Jarrety pour avoir la TI-83 Premium CE avec son chargeur pour 79,79€ port inclus !
Offre TI-Planet/Jarrety pour avoir la TI-Nspire CX CAS à seulement 130€ TTC port inclus!
Jailbreake ta TI-Nspire avec Ndless et profite des meilleurs jeux et applications !
Transforme ta TI-Nspire CX en console Game Boy Advance!
123456
-
Donations/Premium
Pour plus de concours, de lots, de tests, nous aider à payer le serveur et les domaines...
PayPal : paiement en ligne sécurisé - secure online payments
Découvrez les avantages d'un compte donateur !
JoinRejoignez the donors and/or premium!les donateurs et/ou premium !


Partenaires et pub
Notre partenaire Jarrety 
-
Stats.
216 utilisateurs:
>169 invités
>41 membres
>6 robots
Record simultané (sur 6 mois):
6892 utilisateurs (le 07/06/2017)
-
Autres sites intéressants
Texas Instruments Education
Global | France
 (English / Français)
Banque de programmes TI
ticalc.org
 (English)
La communauté TI-82
tout82.free.fr
 (Français)