KermM et Critor et le 1er code natif sur la TI-84+C SE
Posted: 19 Feb 2013, 21:51
Traduction de l'article sur Cemetech / Omnimaga
Les membres de la communauté Critor et KermM ont reçu, il y a peu, des unités de démonstration de la TI-84 Plus C Silver Edition. Et, pendant le week-end (et cette journée pour KermM), BrandonW, calc84, FloppusMaximus, Critor et KermM ont réussi à exécuter quelques programmes assembleur sur la 84+CSE !
Des progrès significatifs ont été fait, et voici un résumé des découvertes :
L'UI (interface) paraît un peu "molle"; en effet, quelques calculs montrent que c'est à cause du processeur z80 cadencé à 15MHz, ce qui n'est pas assez pour bien contrôler un écran aussi grand. Le fait d'ajouter un mode de CPU du genre 20 ou 25 MHZ (comme ce qu'il était prévu sur les 83+SE) aurait largement contribué a rendre l'interface plus réactive.
Une autre solution aurait été de choisir un écran ayant une résolution moins élevée, et de réaliser un zoom de 2x à 3x, ou d'utiliser des couleurs basé sur une palette, et 4 ou 8bit. Ou peut-être même que TI aurait pu utiliser le eZ80, similaire mais meilleur CPU que l'actuel.
D'un point de vue plus technique, le controlleur n'accepte que des couleurs 16 ou 18 bit, donc 2 à 3 writes par pixels. Sortir un unique pixels prend 29 cycles d'horloge (pour remplir l'écran d'une seule couleur). En comparaison, l'ancien contrôleur nécessitait environ 100 cycles d'horloges mais était capable d'écrire 8 pixels, donc chaque pixels prenait environ 12 cycles. On a donc maintenant un temps 3 fois plus long pour écrire un unique pixel (si on veut du véritable graphisme), et lécran comporte 12.5x plus de pixels...
L'ancien contrôleur peut accepter 120 fps de 94x64 (mais il les affiche à 60fps max); le nouveau pour une sous-section à 96x64, arrive à 60 fps. Donc le framerate maximum est de 7 fps (0.15 sec/frame) pour du plein écran, et ceci est seulement possible si l'écran est rempli avec une seule couleur... En pratique, 5-6 fps (environ 0.2s/f) est le maximum atteignable pour du graphisme plein-écran.
Critor a exécuté un programme de test du CPU que DrDnar a écrit, et qui a été le premier a effectuer une sortie textuelle sur l'écran (et a affiché une trollerie ) :
KermM est déjà en train de travailler sur le support de la 84+CSE sur son émulteur jsTIfied. Ayant un peu d'avance et sachant que le changement principal est lié à l'écran, il aura probablement l'honneur d'être le premier à fournir un émulateur z80 compatible 84C ! Cependant, la "compétition" du côté de l'équipe de TIilEm n'est pas absente...
Les membres de la communauté Critor et KermM ont reçu, il y a peu, des unités de démonstration de la TI-84 Plus C Silver Edition. Et, pendant le week-end (et cette journée pour KermM), BrandonW, calc84, FloppusMaximus, Critor et KermM ont réussi à exécuter quelques programmes assembleur sur la 84+CSE !
Des progrès significatifs ont été fait, et voici un résumé des découvertes :
- L'ASIC est le même que le TA3 ASIC des TI-84+/SE, où le port 15h indique 45h.
- Ainsi, la fréquence du CPu est toujours de 15 MHz (compatible 6MHz).
- Il y a toujours 128Ko de RAM.
- L'ASIC TA3 a toujours supporté 4 Mo de flash. C'est accessible en écrivant sur les ports 0E et 0F. (Voilà un mystère de résolu). Peut-être que les chips de 8 Mo sont supportés aussi, mais TI ne fera probablement pas de calculatrice en proposant).
- Le contrôleur d'écran est un ILI9325 (ou un equivalent) (http://www.adafruit.com/datasheets/ILI9325.pdf) et est attaché de façon permanente à l'écran en lui-même.
- Les images de fond de l'écran graphiques sont en couleur 16 bit, non-compressées, mais sont zommées 2x à l'affichage; la véritable taille des données étant 133x83.
- Les pixels ne sont probablement pas carrés: l'ancienne résolution est de 96x64 ---ratio = 3:2--- et la nouvelle est de 320x240 (ratio = 4:3). Ainsi, les pixels sont d'environ 9:8, soit 1.125.
L'UI (interface) paraît un peu "molle"; en effet, quelques calculs montrent que c'est à cause du processeur z80 cadencé à 15MHz, ce qui n'est pas assez pour bien contrôler un écran aussi grand. Le fait d'ajouter un mode de CPU du genre 20 ou 25 MHZ (comme ce qu'il était prévu sur les 83+SE) aurait largement contribué a rendre l'interface plus réactive.
Une autre solution aurait été de choisir un écran ayant une résolution moins élevée, et de réaliser un zoom de 2x à 3x, ou d'utiliser des couleurs basé sur une palette, et 4 ou 8bit. Ou peut-être même que TI aurait pu utiliser le eZ80, similaire mais meilleur CPU que l'actuel.
D'un point de vue plus technique, le controlleur n'accepte que des couleurs 16 ou 18 bit, donc 2 à 3 writes par pixels. Sortir un unique pixels prend 29 cycles d'horloge (pour remplir l'écran d'une seule couleur). En comparaison, l'ancien contrôleur nécessitait environ 100 cycles d'horloges mais était capable d'écrire 8 pixels, donc chaque pixels prenait environ 12 cycles. On a donc maintenant un temps 3 fois plus long pour écrire un unique pixel (si on veut du véritable graphisme), et lécran comporte 12.5x plus de pixels...
L'ancien contrôleur peut accepter 120 fps de 94x64 (mais il les affiche à 60fps max); le nouveau pour une sous-section à 96x64, arrive à 60 fps. Donc le framerate maximum est de 7 fps (0.15 sec/frame) pour du plein écran, et ceci est seulement possible si l'écran est rempli avec une seule couleur... En pratique, 5-6 fps (environ 0.2s/f) est le maximum atteignable pour du graphisme plein-écran.
Critor a exécuté un programme de test du CPU que DrDnar a écrit, et qui a été le premier a effectuer une sortie textuelle sur l'écran (et a affiché une trollerie ) :
KermM est déjà en train de travailler sur le support de la 84+CSE sur son émulteur jsTIfied. Ayant un peu d'avance et sachant que le changement principal est lié à l'écran, il aura probablement l'honneur d'être le premier à fournir un émulateur z80 compatible 84C ! Cependant, la "compétition" du côté de l'équipe de TIilEm n'est pas absente...
Article originally on Cemetech / Omnimaga.
Community members critor and KermM have received preview units of the TI-84 Plus C Silver Edition. So, over the weekend (and all of today, for KermM), BrandonW, calc84, FloppusMaximus, critor, DrDnar, and KermM been working to get simple assembly programs running on the TI-84+CSE.
We made significant progress, and have discovered the following:
More technically, the controller only accepts 16- or 18-bit color, meaning 2 to 3 writes per pixel. Outputting a single pixel takes at least 29 clock cycles (for filling the screen with a single color). By contrast, the old controller needed about 100 clock cycles per write, but each write could send 8 pixels, so each pixel only averaged 12 clock cycles. So it takes three times as long to write a single pixel (if you want actual graphics), and the screen has 12.5 times as many pixels. The old controller can accept 120 96x64 frames per second (but it only displays at 60 fps); the new one, displaying only a shrunken 96x64 subsection, can only manage 60 fps. So, the maximum frame rate for full-screen display is 7 fps (0.15 sec/frame), and that's only possible if you're filling the screen with a single color. In practice, 5-6 fps (about 0.2 s/f) is the best you can possibly get for full screen graphics.
Critor ran a CPU test program that DrDnar wrote, which was the first program to produce screen output, and the first to produce troll output:
KermM is already working to add TI-84+CSE support to jsTIfied. Given that he has a head start and the only major changes are screen-related, he's likely to claim the honor of being the first to add emulator support; however, there is also word of competition from the TilEm team.
Community members critor and KermM have received preview units of the TI-84 Plus C Silver Edition. So, over the weekend (and all of today, for KermM), BrandonW, calc84, FloppusMaximus, critor, DrDnar, and KermM been working to get simple assembly programs running on the TI-84+CSE.
We made significant progress, and have discovered the following:
- The ASIC is exactly the same as the TA3 ASIC on the TI-84+/SE, where port 15h reads 45h.
- Consequently, the CPU speed is still 6/15 MHz.
- There is (again) 128 KB of RAM.
- The TA3 ASIC has always supported 4 MB of flash. It's accessed by writing to ports 0E and 0F. (There's a mystery solved.) There might be support for 8 MB chips, too, but TI seems unlikely to release a such a calculator.
- The screen controller is an ILI9325 or equivalent (http://www.adafruit.com/datasheets/ILI9325.pdf) and is permanently attached to the screen unit.
- Graph screen background images are 16-bit color, uncompressed, but are scaled up 2x for display; the actual data size is 133x83.
- The pixels are likely non-square: the old resolution is 96x64---a 3:2 ratio---and the new one is 320x240, which 4:3. So, the pixels will likely be about 9:8, or 1.125.
More technically, the controller only accepts 16- or 18-bit color, meaning 2 to 3 writes per pixel. Outputting a single pixel takes at least 29 clock cycles (for filling the screen with a single color). By contrast, the old controller needed about 100 clock cycles per write, but each write could send 8 pixels, so each pixel only averaged 12 clock cycles. So it takes three times as long to write a single pixel (if you want actual graphics), and the screen has 12.5 times as many pixels. The old controller can accept 120 96x64 frames per second (but it only displays at 60 fps); the new one, displaying only a shrunken 96x64 subsection, can only manage 60 fps. So, the maximum frame rate for full-screen display is 7 fps (0.15 sec/frame), and that's only possible if you're filling the screen with a single color. In practice, 5-6 fps (about 0.2 s/f) is the best you can possibly get for full screen graphics.
Critor ran a CPU test program that DrDnar wrote, which was the first program to produce screen output, and the first to produce troll output:
KermM is already working to add TI-84+CSE support to jsTIfied. Given that he has a head start and the only major changes are screen-related, he's likely to claim the honor of being the first to add emulator support; however, there is also word of competition from the TilEm team.