[Alice]-Programmation du controleur joystick.

Cette catégorie traite de développements récents destinés à nos vieilles machines, applications, jeux ou démos... Amis programmeurs, c'est ici que vous pourrez enfin devenir célèbres!

Modérateurs : Papy.G, fneck, Carl

Avatar de l’utilisateur
PcKid
Messages : 541
Inscription : 17 sept. 2011 19:00

[Alice]-Programmation du controleur joystick.

Message par PcKid »

Bonjour à tous,

Dans l'exemple du programme fourni par Matra pour piloter le controleur joystick
que l'on peut voir ici en page 2.

Je voudrais savoir si quelqu'un peut m'expliquer la ligne 25 surtout le BAND31 d'ou il sort ?
25 B= BAN31 : GOSUB300

Et la ligne 40 le CAND31 d'ou il provient ?

40 B=CAND31 : GOSUB300

Merci à vous pour votre aide.

Recherche : Jeux et livres pour Alice Matra
* * * * * * Contactez - moi !* * * * * * *

Fabrice Montupet

Re: [Alice]-Programmation du controleur joystick.

Message par Fabrice Montupet »

Les listings étaient truffés d'erreur de frappes ou d'impression à l'époque. Dans celui-ci , il manque des espaces un peu partout. De fait, il faut sûrement lire ici :
25 B=B AND 31 : GOSUB 300
40 B=C AND 31 : GOSUB 300
et remplacer les "IFB" par "IF B", les "THENX$" par "THEN X$", etc...
Avatar de l’utilisateur
PcKid
Messages : 541
Inscription : 17 sept. 2011 19:00

Re: [Alice]-Programmation du controleur joystick.

Message par PcKid »

merci Fabrice

J'avais remarqué cela en corrigeant pas mal de faute dans les manuels alice, et je n'y avais pas pensé,
à mon avis les programmeurs ont donné le code écrit à la main aux secrétaires qui devaient taper sans comprendre.

Mais quand même ,

B=B AND 31 reste pour moi incompréhensible.

Et en plus j'ai tapé sur alice B = BAND31 croyant que c'etait une constante public de la rom Basic,
et le programme marche quand même , c'est ultra permissif le basic.

J'aurais aimé comprendre.

Merci

Recherche : Jeux et livres pour Alice Matra
* * * * * * Contactez - moi !* * * * * * *

kweeky
Messages : 372
Inscription : 24 avr. 2008 18:17
Localisation : Pas très loin de Bordeaux

Re: [Alice]-Programmation du controleur joystick.

Message par kweeky »

Salut PcKid

En fait AND est un opérateur booléen. Il correspond à la fonction "ET" logique, dont la table de vérité est :

0 ET 0 = 0
0 ET 1 = 0
1 ET 0 = 0
1 ET 1 = 1

Pour que le résultat soit "vrai" (donc égal à 1), il faut que le premier terme ET le deuxième terme soient vrais.

ça c'est pour un bit. Pour un nombre plus grand, de plusieurs bits, l'opération AND opère bit par bit. Exemple :

26(décimal) AND 14 (décimal) = 11010(binaire) AND 01110(binaire) = 01010(binaire) = 10(décimal)

Si tu essaies PRINT 26 AND 14, tu devrais (si je ne me suis pas planté) obtenir 10.

Dans ton exemple, il faut savoir que 31 en décimal, ça fait 00011111 en binaire sur 8 bits. Si tu fais (une valeur sur 8 bits) AND 31, tu obtiendras la valeur de départ amputée des 3 premiers bits, ce qui revient à ne conserver que les 5 bits les plus à droite (de poids faibles). Après pourquoi voudrait-on faire une chose pareille, il faudrait que tu postes le code complet pour qu'on y voit plus clair.

Dans le même ordre d'idée, tu as aussi la fonction "OR" (ou logique), et "NOT" (non logique). Tu devrais regarder le manuel pour ces 3 fonctions.

Sinon, tu as raison, c'est chiant les machines dont les éditeurs suppriment les espaces. ça donne des trucs illisibles pour nous, les humains.

@+
Avatar de l’utilisateur
PcKid
Messages : 541
Inscription : 17 sept. 2011 19:00

Re: [Alice]-Programmation du controleur joystick.

Message par PcKid »

Ok je comprends ton raisonnement !

Le code est présent sur le lien de mon 1er post , sur le site de Daniel
tu vois tout le code, par contre ce qui est embêtant c'est de telecharger le plugin DJVU.

C'est peut être la raison pourquoi tu ne vois pas le code en entier.

Merci à toi,

olivier

Recherche : Jeux et livres pour Alice Matra
* * * * * * Contactez - moi !* * * * * * *

Markerror
Messages : 2123
Inscription : 31 oct. 2011 19:21
Localisation : Orléans
Contact :

Re: [Alice]-Programmation du controleur joystick.

Message par Markerror »

Bonsoir,

Je ne connais pas le Basic de l'Alice, mais comme c'est du Microsoft et que c'est sur une machine ayant peu de ram, il est probable qu'il peut se passer des espaces entre les instructions pour gratter quelques octets. Ce n'est pas bien lisible, mais ça marche. C'est le cas du Basic du VG5000 et du MO5.

Markerror
Avatar de l’utilisateur
Patrice
Messages : 1562
Inscription : 14 janv. 2008 10:42
Localisation : https://www.ville-saintes.fr/
Contact :

Re: [Alice]-Programmation du controleur joystick.

Message par Patrice »

Oui, c'est exactement ça comme l'a précisé Markerror, à l'époque (1984) la mémoire RAM avait un coût non négligeable par rapport à celui du micro-ordinateur (pour Alice 4k 4 k de RAM et 8 K pour Alice 32) et donc par mesure d'économie l'interpréteur Basic acceptait la possibilité de supprimer les espaces dans les lignes de programme :!: :wink:
Avatar de l’utilisateur
PcKid
Messages : 541
Inscription : 17 sept. 2011 19:00

Re: [Alice]-Programmation du controleur joystick.

Message par PcKid »

Patrice a écrit :[edit modo: quote inutile supprimée]
Cela n'a jamais prêté à confusion ? en cas d'erreur pour déboguer, c'est pas facile.

Recherche : Jeux et livres pour Alice Matra
* * * * * * Contactez - moi !* * * * * * *

Fabrice Montupet

Re: [Alice]-Programmation du controleur joystick.

Message par Fabrice Montupet »

... Surtout que le Basic est destiné au débutant, prendre autant de liberté avec la syntaxe va à l’encontre de la philosophie de ce langage.
Offrir en 1983 4 malheureux Ko de RAM sur un microordinateur (dont 3 seulement utilisables), il fallait être gonflé.. Surtout que le prix de l'Alice n'était pas tendre. La concurrence faisait mieux sans peine.
Dernière modification par Fabrice Montupet le 06 oct. 2012 10:22, modifié 1 fois.
Avatar de l’utilisateur
Patrice
Messages : 1562
Inscription : 14 janv. 2008 10:42
Localisation : https://www.ville-saintes.fr/
Contact :

Re: [Alice]-Programmation du controleur joystick.

Message par Patrice »

Avec cette astuce la clarté du texte est altérée mais dans le contexte de l'époque, 1 octet gagné par espace (gain moyen de 10 à 20 octets par ligne de programme) permettait de rédiger des programmes plus performants dans un faible espace RAM (pour Alice sans extension RAM de 4K à 8K). Une extension RAM de 16K coûtait, à l'époque (1984), 690 F correspondant à une somme réactualisée (2012) de ~ 200€. La contre-partie se situait évidemment dans la perte de lisibilité d'un programme lors des opérations de déverminage et/ou d'analyse.
Fabrice Montupet

Re: [Alice]-Programmation du controleur joystick.

Message par Fabrice Montupet »

Que cette astuce (au demeurant très pratique pour celles et ceux cherchant à économiser le moindre octet) était utilisée par des utilisateurs habitués/expérimentés est une chose, mais qu'elle fut imposée dans des manuels/modes d'emplois de Matra me semble malvenu. J'imagine que les débutants, qui étaient d'ailleurs la cible de ce micro ordinateur initiatique, ont dû bien être déroutés devant ce genre de concaténation d'instructions.
kweeky
Messages : 372
Inscription : 24 avr. 2008 18:17
Localisation : Pas très loin de Bordeaux

Re: [Alice]-Programmation du controleur joystick.

Message par kweeky »

D'où la supériorité du ZX-81 ! :mrgreen:

@PCKid : je donne un coup d'oeil au code.
Daniel
Messages : 17424
Inscription : 01 mai 2007 18:30
Localisation : Vaucluse
Contact :

Re: [Alice]-Programmation du controleur joystick.

Message par Daniel »

Fabrice Montupet a écrit :J'imagine que les débutants (...), ont dû bien être déroutés devant ce genre de concaténation d'instructions.
Il ne faut pas non plus prendre les débutants pour des idiots. J'en connaissais beaucoup à l'époque (surtout sur MO5) : ils écrivaient tous leurs programmes Basic sans espaces et n'avaient aucun mal à se relire. Le Basic est un langage comme un autre, avec ses règles. Si la règle dit que l'espace est facultatif après un mot-clé ou un signe de ponctuation, je ne vois pas pourquoi on s'acharnerait à en ajouter. Moi-même, quand j'ai commencé à écrire des programmes EXL100, j'ai maudit Exelvision qui impose des espaces là où ce n'est pas nécessaire.

Un exemple : en français, j'ai remarqué que tu ne laisses pas d'espace devant le point ou la virgule, et pourtant j'arrive à comprendre, car je connais la règle. De même FORJ=1TO20:A=A+J:NEXT n'a jamais choqué un thomsoniste ou un programmeur Alice. Si les espaces avaient été obligatoires, Hebdogiciel n'aurait pas eu beaucoup de candidats pour sa rubrique "deuligne".
Daniel
L'obstacle augmente mon ardeur.
Avatar de l’utilisateur
PcKid
Messages : 541
Inscription : 17 sept. 2011 19:00

Re: [Alice]-Programmation du controleur joystick.

Message par PcKid »

Quand j'ai commencé sur Alice en 85, je recopiais le code bêtement, avec ou sans espace à partir des manuels.

En fait quand on souhaite apprendre, et que l'on part de zéro, je trouve cela déroutant, car les lignes sans espaces
étaient présente de façons aléatoire, et on pouvait quelques lignes plus tard retrouver à peu près la même syntaxe ou test avec des espaces.

Je ne sais pas pour l’époque, mais si on a une convention de nommage ou de code, il faut l'appliquer partout.


@Kweeky : merci j'attends ton retour !
Dernière modification par PcKid le 07 oct. 2012 09:03, modifié 1 fois.

Recherche : Jeux et livres pour Alice Matra
* * * * * * Contactez - moi !* * * * * * *

Fabrice Montupet

Re: [Alice]-Programmation du controleur joystick.

Message par Fabrice Montupet »

@Daniel: L'existence même de ce topic prouve que le manque d'espace peut être (et a dû être) un problème pour certains.
Si tu me lis bien, je ne remet pas en cause cette astuce qui permet de gagner quelques précieux octets. Je n'ai pas écrit que les espaces devaient être obligatoires dans la saisie d'un programme mais qu'il aurait été pratique qu'ils apparaissent pour les débutants dans les listings des manuels. Certaines personnes (qui n'étaient pas idiotes) découvraient le langage informatique par le Basic et avaient vraiment besoin de clarté aux premières heures de programmation pour bien l’assimiler.
Répondre