π
<-
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, 12:31

@Adriweb aurais-tu une idée de quand sera-t-il mit en ligne?
Image
Avatar de l’utilisateur
Ti64CLi++Modo
Niveau 16: CC2 (Commandeur des Calculatrices)
Niveau 16: CC2 (Commandeur des Calculatrices)
Prochain niv.: 32.3%
 
Messages: 3441
Images: 75
Inscription: 04 Juil 2014, 14:40
Localisation: Clermont-Ferrand 63
Genre: Homme
Calculatrice(s):
MyCalcs profile
Classe: ENS Rennes
GitHub: Ti64CLi

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

Message non lude Lionel Debroux » 12 Oct 2015, 12: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 DebrouxSuper Modo
Niveau 14: CI (Calculateur de l'Infini)
Niveau 14: CI (Calculateur de l'Infini)
Prochain niv.: 11.2%
 
Messages: 6859
Inscription: 23 Déc 2009, 00:00
Localisation: France
Genre: Homme
Calculatrice(s):
MyCalcs profile
Classe: -
GitHub: debrouxl

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

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

Et quand sera-t-il pret?
Image
Avatar de l’utilisateur
Ti64CLi++Modo
Niveau 16: CC2 (Commandeur des Calculatrices)
Niveau 16: CC2 (Commandeur des Calculatrices)
Prochain niv.: 32.3%
 
Messages: 3441
Images: 75
Inscription: 04 Juil 2014, 14:40
Localisation: Clermont-Ferrand 63
Genre: Homme
Calculatrice(s):
MyCalcs profile
Classe: ENS Rennes
GitHub: Ti64CLi

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

Message non lude Lionel Debroux » 12 Oct 2015, 12: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 DebrouxSuper Modo
Niveau 14: CI (Calculateur de l'Infini)
Niveau 14: CI (Calculateur de l'Infini)
Prochain niv.: 11.2%
 
Messages: 6859
Inscription: 23 Déc 2009, 00:00
Localisation: France
Genre: Homme
Calculatrice(s):
MyCalcs profile
Classe: -
GitHub: debrouxl

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

Message non lude Adriweb » 12 Oct 2015, 18: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)...
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...)
Avatar de l’utilisateur
AdriwebAdmin
Niveau 16: CC2 (Commandeur des Calculatrices)
Niveau 16: CC2 (Commandeur des Calculatrices)
Prochain niv.: 80.1%
 
Messages: 14605
Images: 1216
Inscription: 01 Juin 2007, 00:00
Localisation: France
Genre: Homme
Calculatrice(s):
MyCalcs profile
Twitter/X: 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, 18: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 DebrouxSuper Modo
Niveau 14: CI (Calculateur de l'Infini)
Niveau 14: CI (Calculateur de l'Infini)
Prochain niv.: 11.2%
 
Messages: 6859
Inscription: 23 Déc 2009, 00:00
Localisation: France
Genre: Homme
Calculatrice(s):
MyCalcs profile
Classe: -
GitHub: debrouxl

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

Message non lude Adriweb » 12 Oct 2015, 18: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)
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...)
Avatar de l’utilisateur
AdriwebAdmin
Niveau 16: CC2 (Commandeur des Calculatrices)
Niveau 16: CC2 (Commandeur des Calculatrices)
Prochain niv.: 80.1%
 
Messages: 14605
Images: 1216
Inscription: 01 Juin 2007, 00:00
Localisation: France
Genre: Homme
Calculatrice(s):
MyCalcs profile
Twitter/X: adriweb
GitHub: adriweb

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

Message non lude Adriweb » 15 Oct 2015, 06: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 :
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...)
Avatar de l’utilisateur
AdriwebAdmin
Niveau 16: CC2 (Commandeur des Calculatrices)
Niveau 16: CC2 (Commandeur des Calculatrices)
Prochain niv.: 80.1%
 
Messages: 14605
Images: 1216
Inscription: 01 Juin 2007, 00:00
Localisation: France
Genre: Homme
Calculatrice(s):
MyCalcs profile
Twitter/X: adriweb
GitHub: adriweb

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

Message non lude critor » 17 Oct 2015, 18: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 19: CU (Créateur Universel)
Niveau 19: CU (Créateur Universel)
Prochain niv.: 41.8%
 
Messages: 41465
Images: 14479
Inscription: 25 Oct 2008, 00:00
Localisation: Montpellier
Genre: Homme
Calculatrice(s):
MyCalcs profile
YouTube: critor3000
Twitter/X: critor2000
GitHub: critor

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

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

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

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...)
Avatar de l’utilisateur
AdriwebAdmin
Niveau 16: CC2 (Commandeur des Calculatrices)
Niveau 16: CC2 (Commandeur des Calculatrices)
Prochain niv.: 80.1%
 
Messages: 14605
Images: 1216
Inscription: 01 Juin 2007, 00:00
Localisation: France
Genre: Homme
Calculatrice(s):
MyCalcs profile
Twitter/X: adriweb
GitHub: adriweb

PrécédenteSuivante

Retourner vers Actualités

Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 19 invités

-
Rechercher
-
Social TI-Planet
-
Sujets à la une
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
-
Faire un don / Premium
Pour plus de concours, de lots, de tests, nous aider à payer le serveur et les domaines...
Faire un don
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 Calculatrices à acheter chez Calcuso
-
Stats.
1708 utilisateurs:
>1689 invités
>14 membres
>5 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)