Journal Sortie de Punix beta5, et d'un émulateur 68k en javascript !

Posté par  (site web personnel) . Licence CC By‑SA.
20
28
avr.
2012

Sommaire

Une cinquième beta pour Punix

Pour ceux qui ont apprécié ma dernière dépêche sur Punix, voici quelques nouvelles !

Christopher Williams a sorti une 5ème version beta de son système d'exploitation Unix pour calculatrice à base de Motorolla 68000.
Cette version est disponible pour TI89 et TI92+, et les sources sont disponibles.
Si vous souhaitez compiler depuis les sources, il vous faudra vous munir de :

  • GCC4TI
  • RabbitSign
  • tib2xxu de FreeFlash (Pour compiler ce dernier sous Unix, il suffit de commenter la ligne #define WINDOWS, et de compiler ainsi : gcc tib2xxu.c -o tib2xxu)

C'est la première beta a tourner sur de matériel et non sur émulateur, le test qui avait motivé ma dépêche n'avait pas été publié officiellement. Pour la démonstration audio, cette version inclut un extrait du Beau Danube Bleu. On retrouve donc le support officiel des niveaux de gris ainsi que l'antialiasing des caractères qui avait été annoncé. L'extrait audio inclut explique l'écart de taille entre cette beta 5 et la beta 4 (280 ko contre 76 ko), sans l'extrait audio elle ne ferait 96 ko).

Il faut noter que suite à un petit article OSNews qui a mit un gros coup de projecteur sur le projet, Christopher avait publié une petite FAQ. À cette occasion il a annoncé officiellement travailler à supporter les modèles Voyages 200 et TI 89 Titanium.

Pour finir, Christopher a découvert avec une heureuse surprise que son projet était référencé sur la page historique d'Unix d'Éric Lévénez.

Un émulateur 68000 en javascript

Vous aviez peut-être entendu parler de jslinux, un émulateur d'architecture PC exécutant Linux dans un navigateur et développé par Fabrice Bellard, et bien il n'est pas le seul à se lancer dans ce genre de projet un peu fou, et cette fois-ci, c'est Patrick Davidson qui s'y colle.

Patrick Davidson est un développeur très réputé dans le monde des calculatrices, il est l'auteur de jeux parmi les plus téléchargés sur plus de 10 ans, comme les différents Phoenix et sa version Platinum, disponible sur TI 82, 83, 83+, 84+, 85, 86 (Zilog z80), TI 89, 92, 92+, V200 (Motorola m68k), et Casio Graph 100+ (Nec V30Mx, compatible intel 286), les jeux Mercury, Monster…

Patrick a donc annoncé sur son site web travailler sur un émulateur en javascript de calculatrice TI 68k, la 92+ précisémment.
Tout comme jslinux démarre linux, il fallait bien que l'émulateur démarre un système d'exploitation pour qu'il soit utile, et c'est PedroM (en version 0.72) qui est démarré, préchargé avec les jeux de Patrick, évidemment !

L'émulateur est disponible à l'adresse suivante : http://www.ocf.berkeley.edu/~pad/emu/v3.html
Il fonctionne bien sous Firefox et Chrome, à vitesse normale, et devrait fonctionner sur tout navigateur supportant l'élément Canvas, et intégrant un interpréteur javascript assez rapide, évidemment. Attention, le code est très gros à charger (16Mo).

On peut donc lancer les jeux :

  • Phoenix 7 (shoot'em'up vertical en noir et blanc)
  • Platinum Edition (shoot'em'up vertical en niveaux de gris et scrolling différentiel)
  • Mercury (shoot'em'up horizontal en niveaux de gris en vidéo inversée)
  • Monster (casse brique en niveaux de gris)
  • Smiley's Adventure (jeux de plateforme en noir et blanc)

copie d'écran de Phoenix Platinum

Note : malheureusement les touches ont été pensées pour un clavier qwerty, et le résultat est un peu malheureux en azerty. Par exemple, dans les shoot'em'up, la touche "Lock" qui sert habituellement a tirer a été mappée sur la touche \ pas très accessible en azerty (AltGr+8).

Les codes de ces jeux sont couverts par une license très permissive.
License du code de Platinum, Phoenix, Mercury, Smiley's Adventure et Monster (noter le « I would appreciate » non obligatoire) :

All portions of the program made by me are copyrighted by me, but may be freely used, copied, and/or modified with no restrictions. There are a few
small sections based on the TIGCC library, which also may be freely redistributed.

However, I would appreciate if you at least do the following if you are making a modified version:

  • Don't add any restrictions to its distribution or modification
  • Supply complete source code
  • Give me a reasonable amount of credit

Si le code source de l'émulateur est disponible, ainsi que celui de quelques outils (conversion de rom), je n'ai pas encore trouvé de license. Mais il faut garder à l'esprit que ce n'est qu'une seconde alpha, et qu'il n'y a pas de nom non-plus, à part « Javascript TI-92 Plus emulator ». L'émulateur est donc en javascript, les outils de conversion en python, et les jeux en assembleur 68k.

Les plus curieux pourront se repaître de ce code, attention c'est du lourd ;)

Maintenant, certains doivent se poser la même question que moi… À quand Punix dans un navigateur avec cet émulateur ?

  • # HW1 ou HW2 ?

    Posté par  (site web personnel) . Évalué à 2.

    Les TI89 supportées ne sont toujours que les HW2 ou les HW1 le sont aussi maintenant ?

    S'il y a un problème, il y a une solution; s'il n'y a pas de solution, c'est qu'il n'y a pas de problème.

    • [^] # Re: HW1 ou HW2 ?

      Posté par  (site web personnel) . Évalué à 2.

      Je n'ai pas d'autres infos que celles que j'avais déjà pointé.
      En même temps, je ne crois pas l'avoir lu se prononcer vraiment pour un non-support du HW1, simplement il n'en a pas pour tester, ce qui ne veut pas dire que ça ne marche pas.

      À priori, un système installé planté n'empêche pas de réinstaller un OS derrière : la calculette répond à une séquence de touche particulière pour recevoir et réécraser l'OS quelque soit l'état je crois (à vérifier cependant).

      J'avais pu exécuter la beta4 en HW1 sur émulateur sans problème, mais Christopher avait dit à l'occasion de son test que sa version de développement plantait méchamment en HW1…

      Je lui ai indiqué ta question sur son blog (il lit les discussions françaises avec un logiciel de traduction ^^).

      ce commentaire est sous licence cc by 4 et précédentes

      • [^] # Re: HW1 ou HW2 ?

        Posté par  (site web personnel) . Évalué à 2.

        Je viens de tester et ça me semble marcher.
        J'ai pu me loguer en root, faire un ps, un top, un help, un uname.
        J'ai lancé tests mais je ne trouve pas le ctrl-d.

        Quel est le test pour les niveaux de gris ? Pour voir si je la plante.

        S'il y a un problème, il y a une solution; s'il n'y a pas de solution, c'est qu'il n'y a pas de problème.

        • [^] # Re: HW1 ou HW2 ?

          Posté par  (site web personnel) . Évalué à 2.

          tu as testé sur émulateur ou sur machine réelle ?
          parce qu'il y a rien à faire pour avoir les niveaux de gris normalement (cf ma copie d'écran sur émulateur : les premières lignes causent de grayplane ^^)

          ce commentaire est sous licence cc by 4 et précédentes

          • [^] # Re: HW1 ou HW2 ?

            Posté par  (site web personnel) . Évalué à 2.

            Testé sur ma TI89 HW1.
            J'ai les même lignes qui causent de grayplane que dans ta copie d'écran.

            S'il y a un problème, il y a une solution; s'il n'y a pas de solution, c'est qu'il n'y a pas de problème.

            • [^] # Re: HW1 ou HW2 ?

              Posté par  (site web personnel) . Évalué à 2.

              C'est donc que Punix fonctionne, déjà c'est une super nouvelle !
              Et tu n'as pas d'antialiasing ? les niveaux de gris sont peut-être tout simplement désactivés.

              ce commentaire est sous licence cc by 4 et précédentes

              • [^] # Re: HW1 ou HW2 ?

                Posté par  (site web personnel) . Évalué à 2.

                arf non, je viens de remettre l'os d'origine et j'ai bien une HW2, je ne sais pas pourquoi je ne voyais pas Hardware Version 2.00 avant…

                Autant pour moi…

                S'il y a un problème, il y a une solution; s'il n'y a pas de solution, c'est qu'il n'y a pas de problème.

                • [^] # Re: HW1 ou HW2 ?

                  Posté par  (site web personnel) . Évalué à 2.

                  C'était bizarre que ça marche en vrai et pas sur émulateur ^^
                  Bon ben c'est tant mieux pour toi :)

                  ce commentaire est sous licence cc by 4 et précédentes

    • [^] # Re: HW1 ou HW2 ?

      Posté par  (site web personnel) . Évalué à 2.

      En tout cas, j'ai testé punix-beta5 en émulateur en TI89 HW1 et TI92+ HW1 et ça ne marche pas, en tout cas l'écran est planté.

      En effet c'est la gestion de l'écran qui change le plus entre l'HW1 et l'HW2, et comme il fait des niveaux de gris pour antialiaser… PAF !

      ce commentaire est sous licence cc by 4 et précédentes

    • [^] # Re: HW1 ou HW2 ?

      Posté par  (site web personnel) . Évalué à 2. Dernière modification le 29 avril 2012 à 19:03.

      Il y a des commentaires qui parlent de HW1 dans son code, donc tout espoir n'est peut-être pas perdu ?

      grep -ir hw1 src/
      src/sys/sys/start.s:    move.b  %d0,0x15(%a5)   | OSC2 and LCD mem stopped on HW1 (do not clr.b since it reads before set)
      src/sys/sys/start.s:    move.w  %d0,0x45b00     | Allow Execution of all Flash ROM on HW1
      src/sys/sys/start.s:    move.w  #0x4C00/8,0x10(%a5) | Set LCD memory address on HW1
      src/sys/sys/start.s:    move.b  #0xB2,0x17(%a5)     | Reset 0x600017 cycles on HW1.
      src/sys/sys/start.s:    move.b  #0x1F,0x15(%a5)     | Enable Timer Interrupts / Increment rate of 0x600017 (OSC2/2^9) / Enable 0x600017 / Enable Int 3 / Enable OSC2 / Enable LCD on HW1
      src/sys/sys/start.s:    move.w  #0x4C00/8,0x600010      | Set 4C00 as VRAM for HW1
      src/sys/sys/start.s:    bclr    #1,0x600015 | disable LCD from reading RAM (hw1)
      src/sys/sys/start.s:    bset    #1,0x600015 | enable LCD from reading RAM (hw1)
      src/sys/sys/start.s:    bclr    #1,0x600015 | disable LCD from reading RAM (hw1)
      src/sys/sys/start.s:    bset    #1,0x600015 | enable LCD from reading RAM (hw1)
      src/sys/sys/flash.txt:The FlashROM on the TI-89, 92+, V200, and TI-89Ti consists of 64KB pages. The HW1/HW2 models (TI-89, TI-92+) contain 32 pages, and the HW3/HW4 models (V200, TI-89Ti) contain 64 (128?) pages of FlashROM. The following will apply specifically to the HW1/HW2 models, but most will apply to the HW3/HW4 models as well.
      src/sys/sys/m68k.s: bset.b  #4,0x1d(%a0)        | 0x60001d disable screen (hw1)
      src/sys/sys/string.s:| 0. Can't use movem due to HW1 Archive bug (Or?)
      src/sys/h/lcd.h: *  7 HW1: Voltage multiplier enable. Keep set (=1).
      src/sys/h/lcd.h: *  4 HW1: Screen disable (power down).
      src/sys/h/lcd.h: *  3-0 LCD contrast bits 3-0 (bit 3 is MSb on HW1).
      
      

      Dans la beta4 il y avait moins de lignes :

      grep -ri hw1 src/
      src/sys/sys/string.s:| 0. Can't use movem due to HW1 Archive bug (Or?)
      src/sys/sys/start.s:    move.b  %d0,0x15(%a5)   | OSC2 and LCD mem stopped on HW1 (do not clr.b since it reads before set)
      src/sys/sys/start.s:    move.w  %d0,0x45E00     | Allow Execution of all Flash ROM on HW1
      src/sys/sys/start.s:    move.w  #0x4C00/8,0x10(%a5) | Set LCD memory address on HW1
      src/sys/sys/start.s:    move.b  #0xB2,0x17(%a5)     | Reset 0x600017 cycles on HW1.
      src/sys/sys/start.s:    move.b  #0x1F,0x15(%a5)     | Enable Timer Interrupts / Increment rate of 0x600017 (OSC2/2^9) / Enable 0x600017 / Enable Int 3 / Enable OSC2 / Enable LCD on HW1
      src/sys/sys/start.s:    move.w  #0x4C00/8,0x600010      | Set 4C00 as VRAM for HW1
      src/sys/h/lcd.h: *  7 HW1: Voltage multiplier enable. Keep set (=1).
      src/sys/h/lcd.h: *  4 HW1: Screen disable (power down).
      src/sys/h/lcd.h: *  3-0 LCD contrast bits 3-0 (bit 3 is MSb on HW1).
      
      

      Elle se compile bien, en tout cas :)
      copie d'écran de punix beta5
      Il faudrait voir si les niveaux de gris sont facilement désactivables. :D

      ce commentaire est sous licence cc by 4 et précédentes

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.