A programmer en Pascal pour la HP-48G

Les derniers trucs auxquels vous avez joué, les derniers ordinateurs que vous avez bidouillés.

Modérateur : Politburo

Répondre
Avatar de l’utilisateur
Miskatonic91
Fonctionne à 1200 bauds
Fonctionne à 1200 bauds
Messages : 437
Inscription : 27 août 2016 17:28
Localisation : Valdemarnie

A programmer en Pascal pour la HP-48G

Message par Miskatonic91 » 06 avr. 2017 00:03

Enfin... je triche un peu quand même! Ce n'est pas moi qui programme en l’occurrence, mais l'auteur d'un compilateur Pascal tournant sous XP et qui produit des exécutables pour la HP-48. Je me suis contenté de compiler les sources et de transmettre le programme à ma HP-48 par liaison série. Le compilateur s'appelle HP-Pascal. Un bon plan pour les ceusses qui ne veulent pas se mettre à l'assembleur de la HP-48... :mrgreen:

Pour les communications PC-HP48, j'ai réutilisé le câble bricolé pour le HP-95LX:
Image
Côté PC, c'est toujours le grand bazar :mrgreen: : dans un XP virtuel émulé sous VirtualBox, lui-même lancé dans une session Linux, j'utilise HyperTerminal avec les paramètres qui vont bien:
Image
Côté HP-48, ça mouline à 9600 bauds:
Image
Une photo d'une session d'HP-Pascal (ici, le début du source du programme pacman.pas):
Image
Et voili-voilou le résultat:
Image Image Image

Bonne nuit! :wink:
Un peu de tout, mais toujours de bon goût :wink:

Avatar de l’utilisateur
Marge
Fonctionne à 9600 bauds
Fonctionne à 9600 bauds
Messages : 4593
Inscription : 01 oct. 2008 14:39
Localisation : En bas, tout au fond à gauche.

Re: A programmer en Pascal pour la HP-48G

Message par Marge » 06 avr. 2017 02:53

Ah oui, bien intéressant !

Ainsi, on peut faire ça depuis un PC moderne. Quelle liaison utilises-tu ? C'est du rs-232, non ?
3 hommes, 3 demis, un 3a... Magnéto, Serge !

« Boris », c'est juste Maurice enrhumé.

Avatar de l’utilisateur
Miskatonic91
Fonctionne à 1200 bauds
Fonctionne à 1200 bauds
Messages : 437
Inscription : 27 août 2016 17:28
Localisation : Valdemarnie

Re: A programmer en Pascal pour la HP-48G

Message par Miskatonic91 » 06 avr. 2017 09:09

Oui, c'est une liaison série. Le PC doit posséder le port adéquat (voir le lien pour le HP-95LX). Sinon ça doit marcher aussi avec un câble USB-Série comme celui-ci. :wink:
Un peu de tout, mais toujours de bon goût :wink:

Avatar de l’utilisateur
Marge
Fonctionne à 9600 bauds
Fonctionne à 9600 bauds
Messages : 4593
Inscription : 01 oct. 2008 14:39
Localisation : En bas, tout au fond à gauche.

Re: A programmer en Pascal pour la HP-48G

Message par Marge » 06 avr. 2017 13:19

Miskatonic91 a écrit :Oui, c'est une liaison série. Le PC doit posséder le port adéquat (voir le lien pour le HP-95LX). Sinon ça doit marcher aussi avec un câble USB-Série comme celui-ci. :wink:
Merci.

Ce vendeur n'expédie pas en bas à gauche, mais je dois trouver ça par ici.

Eh oui, même 4 fois moins cher, une fois n'est pas coutume.
3 hommes, 3 demis, un 3a... Magnéto, Serge !

« Boris », c'est juste Maurice enrhumé.

Avatar de l’utilisateur
Miskatonic91
Fonctionne à 1200 bauds
Fonctionne à 1200 bauds
Messages : 437
Inscription : 27 août 2016 17:28
Localisation : Valdemarnie

Re: A programmer en Pascal pour la HP-48G

Message par Miskatonic91 » 06 avr. 2017 19:05

Oui, bien sûr, on peut en trouver de moins chers. C'est juste que le câble sur Amazon est très bien noté par les acheteurs. Le problème crucial, c'est le pilote. Celui que je possède (qui n'est pas celui d'Amazon) ne fonctionne pas avec le pilote fourni par le constructeur. J'ai fini par trouver un pilote alternatif qui fonctionne très bien, lui (merci G..gle :mrgreen: ).
Un peu de tout, mais toujours de bon goût :wink:

Avatar de l’utilisateur
fred260571
Fonctionne à 300 bauds
Fonctionne à 300 bauds
Messages : 269
Inscription : 19 avr. 2016 13:10
Localisation : Toulouse

Re: A programmer en Pascal pour la HP-48G

Message par fred260571 » 09 avr. 2019 13:27

Pour transférer un fichier depuis mon Mac 10.11.6 vers une HP48
utilisé un TRENDnet TU-S9 (USB vers RS232)
téléchargé et installé les drivers
http://www.trendnet.com/langfr/support/ ... =265_TU-S9
redémarré
téléchargé kermit
ftp://kermit.columbia.edu/kermit/bin/
ftp://kermit.columbia.edu/kermit/bin/ck ... _64-10.7.1
chmod qui va bien
et

Code : Tout sélectionner

./cku302.macosx-x86_64-10.7.1 -C 'set port /dev/tty.usbserial,set carrier-watch off,robust,set file bin,set parity none, set speed 9600, set block 3,set flow none,set control prefix all'
et voila
ignorance is bliss
TI 57 II, TI 66, casio fx7500g, HP48GX, HP49G+, HP200LX, palm m125, Sharp PC-G850VS, HP12C

Gilles59
Fonctionne à 2400 bauds
Fonctionne à 2400 bauds
Messages : 1290
Inscription : 27 oct. 2010 20:46

Re: A programmer en Pascal pour la HP-48G

Message par Gilles59 » 12 juin 2019 12:57

Miskatonic91 a écrit :
06 avr. 2017 00:03
Enfin... je triche un peu quand même! Ce n'est pas moi qui programme en l’occurrence, mais l'auteur d'un compilateur Pascal tournant sous XP et qui produit des exécutables pour la HP-48. Je me suis contenté de compiler les sources et de transmettre le programme à ma HP-48 par liaison série. Le compilateur s'appelle HP-Pascal. Un bon plan pour les ceusses qui ne veulent pas se mettre à l'assembleur de la HP-48... :mrgreen:
Ca marche aussi sur les HP49 et 50g ;D

Ci après un BreakOut que j'ai écris et qui est tres rapide sur 49/50G avec des sons etc ...

https://www.hpcalc.org/details/8662

La plupart des commandes de Pascal y sont (ca ressemble pas mal à du Turbo Pascal en fait), avec des limitations et quelques bugs mais c'est assez bluffant dans l'ensemble. Pour vous donner une idée de ce qu'on peut faire, voilà le programme source :

Code : Tout sélectionner

Program CasseBriques;

{ =======================================
  v1.3 Août 2017  - Nemo_59
  HP Pascal v2.1 pour HP50g-HP49g+               
 --------------------------------------- }

Uses SystemHP,CrtHPmini_49,GraphHP,GameHP_49,
     MathsHP_49, SoundHP_49;

Ressource Breakout;

Const NbTableau=5; HzMur=200; MsMur=5; HzBord=600; MsBord=5;
      HzRqt=800; MsRqt=5; HzOut=100; MsOut=500;

Mvt : Array[1..8, 1..3, 1..2] Of Byte =
{ Chaque déplacement de la balle est décomposé en 3 mouvements de 1x1 pixel}
  1, 0, 1,-1, 1,-1 { Direction 1    -3---2-  }
, 0,-1, 1,-1, 1,-1 { Direction 2    4-----1  }
, 0,-1,-1,-1,-1,-1 { Direction 3    -------  }
,-1, 0,-1,-1,-1,-1 { Direction 4    ---O---  }
,-1, 0,-1, 1,-1, 1 { Direction 5    -------  }
, 0, 1,-1, 1,-1, 1 { Direction 6    5-----8  }
, 0, 1, 1, 1, 1, 1 { Direction 7    -6---7-  }
, 1, 1, 1, 0, 1, 1;{ Direction 8             }

Tableau : Array[1..NbTableau, 0..15] Of String[14] =

'..............', { Tableau 1 }
'..............',
'..............',
'XXXXXXXXXXXXXX',
'XXXXXXXXXXXXXX',
'XXXXXXXXXXXXXX',
'XXXXXXXXXXXXXX',
'XXXXXXXXXXXXXX',
'..............',
'..............',
'..............',
'..............',
'..............',
'..............',
'..............',
'..............',


'..............', { Tableau 2 }
'..............',
'XXXXXXXXXXXXXX',
'XXXXXXXXXXXXXX',
'..............',
'..............',
'XXXXXXXXXXXXXX',
'XXXXXXXXXXXXXX',
'XXXXXXXXXXXXXX',
'..............',
'..............',
'..............',
'..............',
'..............',
'..............',
'..............',

'..............', { Tableau 3 }
'..X........X..',
'...X......X...',
'..XXXXXXXXXX..',
'..XX.XXXX.XX..',
'.XXXXXXXXXXXX.',
'XXXXXXXXXXXXXX',
'XXXXXXXXXXXXXX',
'X.X........X.X',
'X.X........X.X',
'...XXX..XXX...',
'...XXX..XXX...',
'..............',
'..............',
'..............',
'..............',

'..............', { Tableau 4 }
'..............',
'....XXXXXX....',
'..XXXXXXXXXX..',
'.XX.XXXXXX.XX.',
'XX...XXXX...XX',
'XXX.XXXXXX.XXX',
'XXXXXXXXXXXXXX',
'XX.XXXXXXXX.XX',
'XXX........XXX',
'.XXXX....XXXX.',
'..XXXXXXXXXX..',
'.....XXXX.....',
'..............',
'..............',
'..............',

'..............', { Tableau 5 }
'..............',
'....XXXXXX....',
'..XX.XXXXXXX..',
'.XX.XXXXX...XX',
'XX.XXXXX.XX.XX',
'X...XXXX.XX.XX',
'X.XX.XX.XX.XXX',
'X.XX.XX...XXXX',
'X.XX.XX.XXXXXX',
'.XXXXXX.XXXXX.',
'..XXXXX.XXXX..',
'....XXXXXX....',
'..............',
'..............',
'..............';

Static BestScore:Integer=350;

Var i, j, Rx, Bx, By, Bx2, By2,
 Dir, Choc, b, Vies, LrgRqt,
 Vitesse, Difficulte, Niveau, NBrique, TotBrique : Byte;
 TapeMur, Perdu, GagneNiveau, SoundOn: Boolean;
 Score,k : Integer;
 c: Char;

{--------------------------}
Procedure DessineMur;
Begin
 PutBloc(10,10,g_Level);
 GotoXY(11,6); Write(Niveau);
 GotoXY(3,8); Write('Press ENTER to play');
 If SoundOn Then Begin
  Beep(349,100); Beep(392,200); Beep(349,100); Beep(392,200); Beep(493,200); Beep(523,400);End 
 Else c:=ReadKey;
 Clearbar(5,5,95,70);
 TotBrique:=0;
 Box(0,0,100,80); 

 For i:=1 To 14 Do
  For j:=0 To 15 Do
   If Tableau[((Niveau-1) MOD NbTableau)+1,j][i]='X' Then Begin 
     Bar((i-1)*7+2,j*4+2,i*7,j*4+4); TotBrique:=TotBrique+1; 
     If SoundOn Then Beep(Random(1000)+200,15);
    End;

 Bar(Rx,78,Rx+LrgRqt,79);
 GotoXY(26,2); Write(Score);
 GotoXY(26,5); Write(BestScore);
 GotoXY(26,8); Write(Vies); 
 GotoXY(26,11);Write(Niveau);
 Perdu:=False; GagneNiveau:=False;
 Vitesse:=Difficulte-(Niveau Div (NbTableau+1)*3); 
 If Vitesse<2 Then Vitesse:=1;
 NBrique:=0;
End;

{--------------------------}
Procedure BougeRaquette;
Var D : Char; 
Begin
 D:=' ';
 For j:=1 To Vitesse Do Begin
  If RightPressed Then D:='R';
  If LeftPressed  Then D:='L';
 End;

 Case D Of
  'R': If Rx<86 Then
         Begin
          ClearLineV(Rx,78,79);
          LineV(Rx+LrgRqt+1,78,79);
          Rx:=Rx+1;
         End;
   'L': If Rx>1 Then
         Begin
          ClearLineV(Rx+LrgRqt,78,79);
          LineV(Rx-1,78,79);
          Rx:=Rx-1;
         End;
 End;
End;

{------------------------------}
Procedure BougeBalle;
Var Mx,My : Integer; Interm : Byte;
Begin
 Interm:=1;
 
 Repeat
  BougeRaquette;
  Bx2:=Bx+Mvt[Dir,Interm,1];
  By2:=By+Mvt[Dir,Interm,2];

  If Bx2>=99 Then Begin
   Case Dir Of
    1: Dir:=4;
    2: Dir:=3;
    7: Dir:=6;
    8: Dir:=5;
   End;
   Bx2:=98; If SoundOn Then Beep(HzBord,MsBord);
   Exit;
  End;

  If Bx2<=0 Then Begin
   Case Dir Of
    3: Dir:=2;
    4: Dir:=1;
    5: Dir:=8;
    6: Dir:=7;
   End;
   Bx2:=2; If SoundOn Then Beep(HzBord,MsBord);
   Exit;
  End;

  If By2<=0 Then Begin
   Case Dir Of
    1: Dir:=8;
    2: Dir:=7;
    3: Dir:=6;
    4: Dir:=5;
   End;
   By2:=4; If SoundOn Then Beep(HzBord,MsBord);
   Exit;
  End;

  BougeRaquette;

  If By2=77 Then Begin
   k:=Bx2; k:=k-Rx+1; 
   If Dir in [7,8] And (k=-1 Or (k=-2 And LeftPressed)) Then k:=0;
   If Dir in [5,6] And (k=15 Or (k=16 And RightPressed)) Then k:=14;
          
   If k>=0 And k<=LrgRqt+1 Then Begin
    Case k Of
     0     : Dir:=4;
     {1..3  : Case Dir Of 5,6: Dir:=4; 7,8: Dir:=2; End;
     4..10 : Dir:=9-Dir;
     11..13: Case Dir Of 5,6: Dir:=3; 7,8: Dir:=1; End;}
     1,2  : Case Dir Of 5,6: Dir:=4; 7,8: Dir:=2; End;
     3..11 : Dir:=9-Dir;
     12,13: Case Dir Of 5,6: Dir:=3; 7,8: Dir:=1; End;
     14    : Dir:=1;
    End;
    If SoundOn Then Beep(HzRqt,MsRqt);
   End Else Begin 
    Perdu:=True; ClearBar(Bx,By,Bx+1,By+1); 
    If SoundOn Then Beep(HzOut,MsOut);
   End;
    Exit;
  End;

  Choc:=0; TapeMur:=False;

  ClearBar(Bx,By,Bx+1,By+1);
  If Point(Bx2,By2)     Then Choc:=1;
  If Point(Bx2+1,By2)   Then Choc:=Choc+2;
  If Point(Bx2+1,By2+1) Then Choc:=Choc+4;
  If Point(Bx2,By2+1)   Then Choc:=Choc+8;
  Bar(Bx,By,Bx+1,By+1);

  Case Dir Of
   1,2: Case Choc Of
    1,3: Begin TapeMur:=True; Dir:=9-Dir; End;
    2  : Begin TapeMur:=True; Dir:=Dir+4; End;
    6,4: Begin TapeMur:=True; Dir:=Dir+2; End;   
   End;
   3,4: Case Choc Of
    2,3: Begin TapeMur:=True; Dir:=Dir+2; End;         
    1  : Begin TapeMur:=True; Dir:=Dir+4; End;
    9,8: Begin TapeMur:=True; Dir:=5-Dir; End; 
   End;
   5,6: Case Choc Of
    4,12: Begin TapeMur:=True; Dir:=9-Dir; End;
    8   : Begin TapeMur:=True; Dir:=Dir-4; End;
    1,9 : Begin TapeMur:=True; Dir:=Dir+2; End;
   End;
   7,8: Case Choc Of
    8,12: Begin TapeMur:=True; Dir:=9-Dir; End;
    4   : Begin TapeMur:=True; Dir:=Dir-4; End;
    2,6 : Begin TapeMur:=True; Dir:=Dir-2; End;
   End;
  End;
 
  If TapeMur Then Begin
   NBrique:=NBrique+1;
   Mx:=((Bx2-1) Div 7)*7 + 1;
   My:=((By2-1) Div 4)*4 + 1;
   ClearBar(Mx,My,Mx+6,My+3); 
   If SoundOn Then Begin Beep(HzMur,MsMur); Beep(HzMur*2,MsMur); End;
   Score:=Score+5; GotoXY(26,2); Write(Score); Interm:=3;
  End;

  Interm:=Interm+1;
  If By2<77 Then Begin
   ClearBar(Bx,By,Bx+1,By+1);
   Bar(Bx2,By2,Bx2+1,By2+1);
  End;
  Bx:=Bx2; By:=By2;
 Until Interm=4;
End;

Procedure Parametres(c :Char); 
Begin
  If Ord(c)=16 Then Halt;
  Case c Of
   'A' : Begin ClearBar(118,22,125,44); PutSprite(118,22,Check); Difficulte:=15; End;
   'B' : Begin ClearBar(118,22,125,44); PutSprite(118,31,Check); Difficulte:=11; End;
   'C' : Begin ClearBar(118,22,125,44); PutSprite(118,40,Check); Difficulte:=8;  End;
   'D': Begin
         If SoundOn Then SoundOn:=False Else SoundOn:=True;
         ClearBar(63,49,70,61);
         If SoundOn Then PutSprite(64,49,Check) Else PutSprite(64,56,Check);         
        End;
  End;
End;

Procedure Initialisation;
Begin 
 EnableInterrupt;ClearBar(0,0,130,79);
 If SoundOn Then SoundOn:=False Else SoundOn:=True; 
 AppearCool(Instructions);
 Parametres(Chr(68));
 Case Difficulte Of
  15 : Parametres(Chr(65));
  11 : Parametres(Chr(66));
  8  : Parametres(Chr(67)); 
 End;
 While KeyPressed Do c:=ReadKey; 
 Repeat 
  c:=ReadKey;
  If SoundOn Then Beep(440,20);
  Parametres(c);
 Until Ord(c)=13;
 DisappearCool;
End;

{-------- Programme principal -----------}
Begin
 

 AppearCool(Breakout2); LineV(128,0,59); LineV(129,0,59);
 GotoXY(7,11); Write('Press ENTER to Play');
 GotoXY(7,12); Write('Press DEL<- to Exit');
 c:=ReadKey; If c=Chr(16) Then Halt;
 DisappearCool;

 SoundOn:=True; Difficulte:=15; Contraste(15); 

 Repeat 
  Initialisation;
 
  Score:=0; Vies:=6; Niveau:=1; Rx:=35; LrgRqt:=13;

  ClrScr; PutBloc(100,0,Menu);

  Repeat
   {Nouveau Niveau}
   Vies:=Vies+2; DessineMur;
   DisableInterrupt;

   Repeat
    {Nouvelle balle}
    By:=75; Bx:=Rx+5; Dir:=Random(3)+1; 
    GotoXY(26,8); Write(Vies);
    Repeat BougeRaquette; Until UpPressed Or ExitPressed Or EnterPressed;
    If SoundOn Then Beep(740,300); 
    Bx:=Rx+6;
    Perdu:=False;

    Repeat
     BougeBalle;
     If NBrique=TotBrique Then GagneNiveau:=True;
    Until GagneNiveau Or Perdu Or ExitPressed;

    ClearBar(Bx,By,Bx+1,By+1);
    If Perdu Then Vies:=Vies-1; GotoXY(26,8); Write(Vies);
   Until Vies=0 Or GagneNiveau Or ExitPressed; 

   Niveau:=Niveau+1;
   EnableInterrupt;
  Until Vies=0 Or ExitPressed;
 
  GotoXY(8,8); Write('GAME OVER'); Box(30,46,68,54);

  If Score>BestScore Then Begin 
   ClearBar(1,1,99,79);PutBloc(4,6,Best);
   BestScore:=Score;
   If SoundOn Then Begin
    Beep(233,400);Beep(349,400);Beep( 311,133);Beep( 293,133);Beep( 261,133);Beep( 466,400);Beep( 349,400);
    Beep( 311,133);Beep( 293,133);Beep( 261,133 );Beep(466,400 );Beep(349,400 );Beep(311,133 );
    Beep(293,133 );Beep(311,133 );Beep(260,533); 
   End;
  End;
  GotoXY(5,11); Write('ENTER to replay');
  GotoXY(5,12); Write(' DEL<- to exit');
  ClearBar(1,78,99,79);
  Repeat Until EnterPressed Or ExitPressed;
 Until ExitPressed;

End.
Casio FX-502P /602P / 603P / FX180P+ / FX4000P / TI57 / TI66 / TI74 Basicalc / TI95 Procalc / HP12C / HP15C LE / DM41L / HP 30B / HP39GII / HP 48SX USA / 49G / 49G+ / 50G / 50G NewRPL / HP Prime / Oric 1 / Amstrad CPC 6128+

Avatar de l’utilisateur
Miskatonic91
Fonctionne à 1200 bauds
Fonctionne à 1200 bauds
Messages : 437
Inscription : 27 août 2016 17:28
Localisation : Valdemarnie

Re: A programmer en Pascal pour la HP-48G

Message par Miskatonic91 » 12 juin 2019 13:13

Ton jeu a l'air super!
Est-il compatible HP48?
Un peu de tout, mais toujours de bon goût :wink:

Gilles59
Fonctionne à 2400 bauds
Fonctionne à 2400 bauds
Messages : 1290
Inscription : 27 oct. 2010 20:46

Re: A programmer en Pascal pour la HP-48G

Message par Gilles59 » 12 juin 2019 14:49

Miskatonic91 a écrit :
12 juin 2019 13:13
Ton jeu a l'air super!
Est-il compatible HP48?
En l'état non, Mais je pense que ça ne doit pas être compliqué avec de petites adaptation. Il faudrait changer les UNITS utilisées et la taille de l'écran.
Voir si çà ne serait pas trop lent aussi, mais de mémoire je mets des boucles de tempo car sinon c'est trop rapide. Si je trouve un peu de temps je vais essayer dans un premier temps avec l'émulateur.
Casio FX-502P /602P / 603P / FX180P+ / FX4000P / TI57 / TI66 / TI74 Basicalc / TI95 Procalc / HP12C / HP15C LE / DM41L / HP 30B / HP39GII / HP 48SX USA / 49G / 49G+ / 50G / 50G NewRPL / HP Prime / Oric 1 / Amstrad CPC 6128+

Gilles59
Fonctionne à 2400 bauds
Fonctionne à 2400 bauds
Messages : 1290
Inscription : 27 oct. 2010 20:46

Re: A programmer en Pascal pour la HP-48G

Message par Gilles59 » 15 juin 2019 20:58

La conversion hp49g est facile mais il faut redimensionner l’ecran. Par contre il manque une UNIT pour gérer les mini-fonts pour les 48. Quelques extraits vidéo (pas facile de poser le smartphone lol).

https://youtu.be/C0SFkYQMbDY
Casio FX-502P /602P / 603P / FX180P+ / FX4000P / TI57 / TI66 / TI74 Basicalc / TI95 Procalc / HP12C / HP15C LE / DM41L / HP 30B / HP39GII / HP 48SX USA / 49G / 49G+ / 50G / 50G NewRPL / HP Prime / Oric 1 / Amstrad CPC 6128+

Gilles59
Fonctionne à 2400 bauds
Fonctionne à 2400 bauds
Messages : 1290
Inscription : 27 oct. 2010 20:46

Re: A programmer en Pascal pour la HP-48G

Message par Gilles59 » 15 juin 2019 21:48

Gilles59 a écrit :
15 juin 2019 20:58
La conversion hp49g est facile mais il faut redimensionner l’ecran. Par contre il manque une UNIT pour gérer les mini-fonts pour les 48. Quelques extraits vidéo (pas facile de poser le smartphone lol).

https://youtu.be/C0SFkYQMbDY
Si ça intéresse quelqu’un j’ai converti en PDF le manuel du hp pascal qui est à la base un fichier d’aide Windows qui n’est plus lisible avec les Windows récent.

Ce manuel évoque la possibilité d’appeler une fonction en pascal et renvoyer le résultat sur la pile rom, par contre ça n’explique pas comment. Si quelqu’un sait ...
Casio FX-502P /602P / 603P / FX180P+ / FX4000P / TI57 / TI66 / TI74 Basicalc / TI95 Procalc / HP12C / HP15C LE / DM41L / HP 30B / HP39GII / HP 48SX USA / 49G / 49G+ / 50G / 50G NewRPL / HP Prime / Oric 1 / Amstrad CPC 6128+

Répondre

Revenir vers « A quoi t'as joué hier ? »