cClaude.rocks ☕ Le blog

[Nouvelles technologies, sciences et coups de gueule…]

Menu

C64 La premiÚre image de cette page fait 62 Ko.

Le Commodore 64 est un ordinateur sorti en août 1982. Un ordinateur super puissant à base d'un processeur 6510 (un dérivé du 6502) cadencé à ~1 MHz. Un taille de mémoire extraordinaire de 64 Ko de Mémoire vive (dont 2 Ko utilisé par la mémoire vidéo en mode caractÚre)

Mais également 20 Ko de ROM, répartis en 3 blocs (8 Ko BASIC 2.0, 8 Ko Noyau, 4 Ko de caractÚres générés).


L’affichage gĂ©rĂ© par un processeur MOS 6569/8565/8566, le VIC:

C64

  • 1 mode texte de 40×25 caractĂšres de 8×8 pixels : 2 couleurs chacun parmi 16.

Deux modes « graphiques » bitmap :

  • 320 × 200 chaque bloc de 8 × 8 peut avoir 2 couleurs parmi 16.
  • 160 × 200 chaque bloc de 4 × 8 peut avoir 4 couleurs parmi 16.

Un processeur sonore MOS 6581/8580, le SID, permettant de produire 3 sons en mĂȘme temps, sur la base de 4 formes d’ondes.

Petite comparaison de ce qui a été mon premier ordinateur avec mon ordinateur actuel.

Mon premier ordinateur Mon ordinateur actuel Rapport
Vitesse du processeur 1 MHz (0,001 GHz) 2 200 MHz (2.20 GHz) par cƓur x 2 200
Nombre de processeurs 1 1
Nombre de cƓurs 1 6
Hyper-Threading NON OUI
Cumul 1 MHz (0,001 GHz) 26 400 MHz (26,4 GHz) x 26 400
🝛
Mémoire (RAM) 64 Ko (0,000 064 Go) 16 000 000 Ko (16 Go) x 250 000
Mémoire graphique 0 (partagée) 6 000 000 Ko (6 Go)
Cumul 64 Ko (0,000 064 Go) 22 000 000 Ko (22 Go) x 343 750
🝛

C64 On a du mal Ă  croire que la popularitĂ© et les capacitĂ©s graphiques et sonores avancĂ©es du Commodore 64 lui ont permis d’accueillir plusieurs milliers de jeux vidĂ©o.

Cependant, mĂȘme si cet ordinateur est largement Ă©crasĂ© en termes de performance par les ordinateurs d’aujourd’hui, il reste des personnes actives sur cette machine et voici quelques sites qui en tĂ©moignent :


  • Replay resources propose toute une gamme de logiciels pour le C64 et ces Ă©mulateurs. On y retrouve la fameuse Action Replay, mais Ă©galement plein de documentation autour de la machine mythique.

  • zimmers.net – Un site contenant une liste impressionnante de logiciels, de ROM pour le C=64. Il y a en particulier le source des ROMs en assembleur (avec les commentaires).

  • C64 Portal propose des news sur l’actualitĂ© de la scĂšne du Commodore 64.

  • The C64 Scene Demo Database est en quelque sorte l’annuaire des personnes ayant participĂ© Ă  l’aventure du C64 et de celles qui y participent encore.

  • POUET est un site dĂ©diĂ© Ă  la scĂšne informatique dans son ensemble, il propose des informations et annuaire plus large.

D’autre façon de soulager sa nostalgie :

኿


Le but de cet article est de vous faire découvrir les économiseurs d'écran de Mint, leur paramétrage et également de vous apprendre quelques commandes avancées de bash et ce en mode hacking.

On apprendra Ă  lancer les Ă©conomiseurs d'Ă©cran individuellement depuis le CLI.

Pour lever toute confusion, il ne s’agit pas ici de savoir comment lancer l’économiseur d’écran depuis la ligne de commande mais plutĂŽt de pouvoir ouvrir chacun des programmes qui gĂšre l’affichage de ces Ă©conomiseurs. Cependant pour ce qui est de lancer du forçage du lancement de l’économiseur d’écran, voici comment faire :

xdg-screensaver activate

Attention, certaine parties de cet article nĂ©cessite l’accĂšs root Ă  votre machine. À utiliser avec prĂ©caution.

Cet article ne s’applique pas Ă  Ubuntu dans la mesure oĂč les distributions Ubuntu n’intĂšgrent pas d’économiseur d’écran ludique Ă  sa configuration de base. Vous devrez sans doute installer le paquet xscreensaver pour en profiter.

sudo apt install xscreensaver

La configuration

screensaver

La configuration des Ă©conomiseurs d’écran (screensavers) sous Mint n’est certainement pas le point fort de la distribution, on va essayer de comprendre pourquoi.

Pour voir l’interface de configurer, faite la recherche screensaver depuis la zone de recherche du menu de Mint.

Je vous laisse constatĂ© qu’il n’est pas possible de modifier le fonctionnement des diffĂ©rents Ă©conomiseurs d’écran.


Essayons de comprendre comment cela fonctionne.

Les fichiers de configuration se trouvent ici:

ls -la  /usr/share/applications/screensavers/

Vous obtenez une longue liste, dont voici un extrait :

-rw-r--r-- 1 root root 299 Mar 24 2017 abstractile.desktop
-rw-r--r-- 1 root root 256 Mar 24 2017 anemone.desktop
-rw-r--r-- 1 root root 542 Mar 24 2017 anemotaxis.desktop
-rw-r--r-- 1 root root 305 Mar 24 2017 antinspect.desktop
-rw-r--r-- 1 root root 302 Mar 24 2017 antmaze.desktop
-rw-r--r-- 1 root root 345 Mar 24 2017 antspotlight.desktop

et vous notez que ces fichiers de configuration appartiennent à l’utilisateur root, cependant tous les utilisateurs de la machine peuvent les lire. Pour les modifier, il faudra donc obtenir les privilùges root.

La configuration des Ă©conomiseurs d’écran est globale Ă  la machine, et en fait certain Ă©conomiseurs d’écran doivent ĂȘtre lancĂ©s avec les droits administrateurs.

Petite correction pour Sonar

En particulier l’économiseur Sonar doit s’exĂ©cuter avec les privilĂšges root. Cet Ă©conomiseur d’écran qui peut s’exĂ©cuter directement Ă  l’aide de :

/usr/lib/xscreensaver/sonar

Il est censé affiché la liste des machines du réseau local mais sans une intervention (mineur) de votre part, il ne le fera pas à la place il indique un message à propos du Setuid.

Commençons par fixer ce problùme. La correction se fait à l’aide de la commande suivante :

sudo chmod +s /usr/lib/xscreensaver/sonar

Cette commande permet de dĂ©finir les drapeaux Setuid et Setgid pour cet Ă©conomiseur d’écran.

Besoin de configuration

En particulier pour les économiseurs qui affiche des images, il semble souhaitable de pouvoir changer le chemin par défaut.

Le chemin par dĂ©faut est celui du rĂ©pertoire image de l’utilisateur courant, pour connaĂźtre la valeur sur votre systĂšme utilisez :

xdg-user-dir PICTURES

Plus de dĂ©tail dans l’article dĂ©diĂ©

En RĂ©sumĂ©, en fonction de la langue de l’interface :

Langue Chemin standard Écriture alternative
Français /home/${USER}/Images ~/Images
Anglais /home/${USER}/Picture ~/Picture

Cependant la solution universelle reste :

# Liste du contenu
ls -l "$( xdg-user-dir PICTURES )"

Cependant, nous verrons plus loin qu’aucune options ne semble pas disponible pour configurer ce chemin dans les versions actuellement disponibles dans les dĂ©pĂŽts de Mint. Il est Ă  noter que l’auteur regrette ce fait puisqu’il continue Ă  maintenir et faire Ă©voluer ses Ă©conomiseurs.

Allons un peu plus loin

Regardons, l’un des fichiers de configuration et essayons de comprendre :

cat /usr/share/applications/screensavers/zoom.desktop

Cette commande vous affichera le contenu suivant :

[Desktop Entry]
Name=Zoom
Exec=/usr/lib/xscreensaver/zoom -root
TryExec=/usr/lib/xscreensaver/zoom
Comment=Zooms in on a part of the screen and then moves around. With the "Lenses" option, the result is like looking through many overlapping lenses rather than just a simple zoom. Written by James Macnicol.
StartupNotify=false
Terminal=false
Type=Application
Categories=Screensaver;
OnlyShowIn=MATE;

Cela ressemble Ă  un fichier '*.ini' en termes de structure avec des sections dĂ©finies entre crochets. Ici, il n’y a qu’une section qui se nomme : Desktop Entry

Décodage trivial des différentes lignes qui ont un format [propriété]=[valeur].

Propriété Valeur
Name Il semble assez Ă©vidant que c’est le nom affichĂ© dans l’interface de â€čconfigurationâ€ș des Ă©conomiseurs d’écran.
Exec On comprend que c’est le nom du programme qui gùre l’affichage avec ces paramùtres
TryExec 'Try' qui veut dire essayer, laisse penser qu’en cas d’échec de la commande prĂ©cĂ©dente, cette seconde commande sera Ă  prendre en compte.
StartupNotify Non investiguĂ©, mais on comprend que c’est une valeur boolĂ©enne (true ou false) – ce n’est pas intĂ©ressant pour cet article
Terminal booléen / pas intéressant ici
Type booléen / pas intéressant ici
Categories Surprise il s’agit d’un Ă©conomiseur d’écran.
OnlyShowIn pas intéressant ici

On comprend que les propriĂ©tĂ©s qui nous intĂ©ressent sont Exec et TryExec. Pour la propriĂ©tĂ© Exec, il y a une option -root. Ce paramĂštre indique que l’on souhaite utiliser la fenĂȘtre racine.

Pour Ă©viter de faire des bĂȘtises, on va donc se concentrer sur la propriĂ©tĂ© TryExec.

Essayons d’exĂ©cuter depuis le terminal la commande : /usr/lib/xscreensaver/zoom

Miracle, l’économiseur se lance dans une fenĂȘtre, et si on clique dessus cela passe Ă  l’image suivante. Cela n’est pas possible en mode Ă©conomiseur d’écran puisque toute intervention du clavier, de la souris ou autre arrĂȘte l’économiseur d’écran.

PremiĂšre conclusion Ă  cette Ă©tape

On peut lancer les Ă©conomiseurs d’écran dans une fenĂȘtre et il est possible d’interagir avec.

Liste des Ă©conomiseurs d’écran

On va essayer de rĂ©pondre Ă  la question : Comment rĂ©cupĂ©rer la liste de tous les programmes liĂ©s aux diffĂ©rents Ă©conomiseurs d’écran ?

Pour cela on va avoir besoin des commandes suivantes :

Commande Description simplifiée
grep N’affiche que les lignes contenant un motif donnĂ©. ex:
grep 'TryExec=' /usr/share/applications/screensavers/zoom.desktop
| Prend la rĂ©ponse d’une commande et la passe comme entrĂ©e Ă  la commande suivante
cut N’affiche qu’une colonne – ex:
echo 'a;b;c' | cut -d ';' -f2
qui affiche b et ensuite:
echo 'a;b;c' | cut -d ';' -f2-
qui affiche b;c

Du coup

grep 'TryExec=' /usr/share/applications/screensavers/zoom.desktop | cut -d '=' -f2-

Nous affiche bien, le nom du programme liĂ© Ă  notre Ă©conomiseur d’écran.

Ok, mais on voulait la liste de tous les programmes non ?

En effet, rien de plus facile, remplaçons le nom du fichier par *:

grep 'TryExec=' /usr/share/applications/screensavers/*.desktop | cut -d '=' -f2-

Quels Ă©conomiseurs d’écran

Une vue de moteur en 3D ?

/usr/lib/xscreensaver/engine

On fait quelques essais avec la sourie et le clavier et zap :

  • 'q' : pour quitter (Ă  priori vrai sur tous les Ă©conomiseurs)
  • 'ESPACE' : pour changer de point de vue (fonction diffĂ©rente suivant les Ă©conomiseurs).

Ici la souris n’a pas d’effet.

De l’art d’ordinateur

/usr/lib/xscreensaver/substrate

Cet Ă©conomiseur fait de jolies images, mais il ne faut rien faire sur son ordinateur, en le lançant depuis la ligne de commande, vous n’avez plus ce problĂšme.

On peut configurer quelque chose ?

En gĂ©nĂ©ral sous Linux, pour connaĂźtre les paramĂštres d’une commande, on utilise le paramĂštre --help (ou -h), essayons :

/usr/lib/xscreensaver/spotlight --help

Et voilà le résultat :

Spotlight: from the XScreenSaver 5.36 distribution (10-Oct-2016)
           https://www.jwz.org/xscreensaver/

Options include: -root, -window, -mono, -install, -noinstall,
     -visual <arg>, -window-id <arg>, -fps, -no-fps, -pair,
     -delay <arg>, -duration <arg>, -radius <arg>.

Alors, on comprend que ces programmes n’ont pas Ă©tĂ© mis Ă  jour depuis 3 ans ! On comprend pourquoi l’auteur n’est pas content.

Essayons donc ces paramĂštres

ParamĂštre Observation
-root ça plante...
-window Ne fait rien, ce qui semble logique puisqu’on est dĂ©jĂ  en mode fenĂȘtrĂ©.
-install Pas testé.
-noinstall Pas testé.
-visual GL
-window-id arg Réservé aux développeurs.
-fps Ajoute l’affichage du nombre d’images par secondes et la charge machine.
-no-fps Ne fait rien, doit supprimer -fps lorsqu’il est dĂ©fini ailleurs.
-pair Ouvre deux fenĂȘtres.
-delay 1 Vitesse de déplacement du spot
-duration 2 Change d’image toutes les 2 secondes.
-radius 50 DĂ©fini la taille du spot Ă  50 pixels.

En fait, un autre rĂ©flexe qu’il faut avoir sur Linux est d’utiliser la commande man qui permet d’afficher le manuel liĂ© Ă  une commande.

man zoom

La section SYNOPSIS:

zoom [-display  host:display.screen] [-foreground color]
     [-background color] [-window] [-root] [-mono]
     [-install] [-visual visual] [-delay usecs]
     [-duration secs] [-lenses] [-pixwidth pixels]
     [-pixheight pixels] [-pixspacex pixels]
     [-pixspacey pixels] [-lensoffsetx pixels]
     [-lensoffsety pixels] [-fps]

On note qu’il y a plus de paramĂštres que ce que l’aide intĂ©grĂ©e affiche.

Du coup la section OPTIONS permet de compléter notre tableau.

ParamĂštre Description
-window Dessine dans une nouvelle fenĂȘtre. Action par dĂ©faut.
-root Dessine dans la fenĂȘtre principale.
-mono Pour les anciennes machines affichant en monochrome. N’a pas d’effet sur les systùmes modernes.
-install Utilise un jeu de couleur spĂ©cifique pour la fenĂȘtre. N’a pas d’effet sur les systĂšmes modernes.
-visual visual Permet de dĂ©finir le mode d’affichage Ă  utiliser. Voir plus loin.
-delay microseconds Ralentisseur d’affichage.
-duration seconds DĂ©fini le dĂ©lai avant l’affiche de l’image suivante. Par dĂ©faut 120 secondes.
-lenses Au lieu de faire un agrandissement, copie simplement une rĂ©gion de l’image d’origine. Si lensoffsetx <pixwidth (et pareillement pour Y), des rĂ©gions consĂ©cutives se chevaucheront, ce qui donnera l’effet de regarder Ă  travers une matrice de loupes.
-pixwidth pixels Largeur de la loupe en pixels.
-pixheight pixels Hauteur de la loupe en pixels.
-pixspacex pixels Nombre de pixels noirs entre les loupes (direction X).
-pixspacey pixels Nombre de pixels noirs entre les loupes (direction Y).
-lensoffsetx pixels Distance dans la direction X entre des régions copiées consécutives (efficace uniquement lorsque avec les loupes)
-lensoffsety pixels Distance dans la direction Y entre des régions copiées consécutives (efficace uniquement lorsque avec les loupes)

D’autre recherches, que je vous Ă©pargne, permettent de trouver des valeurs possibles pour l’option -visual:

  • Any
  • Best
  • Default
  • Default-N
  • GL
  • TrueColor
  • PseudoColor
  • StaticGray
  • GrayScale
  • DirectColor
  • Color
  • Gray
  • Mono

Ce serait bien de voir chacun de ces effets sans avoir Ă  taper toutes les commandes, alors essayons de programmer cela en bash.

Cela va nous permettre d'introduire de nouveaux concepts:

Pour crĂ©er une variable en bash, il suffit de la faire prĂ©cĂ©der de l’instruction declare (mmm, Ok, c’est optionnel, mais c’est pour des raisons historiques). Ensuite on utilise le signe = comme opĂ©rateur d’affectation, enfin on met la valeur. Comme dans notre cas, on a plusieurs valeurs, on va mettre cela entre guillemets : ' et une valeur par ligne.

Cela donne :

declare VISUALS='
Any
Best
Default
Default-N
GL
TrueColor
PseudoColor
StaticGray
GrayScale
DirectColor
Color
Gray
Mono
'

L’idĂ©e ensuite est de parcourir toutes ces valeurs. La commande for est lĂ  pour ça :

for VISUAL in $VISUALS ; do echo $VISUAL ; done

En détail :

  • On met la premiĂšre valeurs de VISUALS dans VISUAL. On utilise $ devant VISUALS car on veut le contenu de la variable et pas son nom et on fait cela temps qu’il y a des valeurs Ă  prendre.
  • Le point virgule ; indique que l’on Ă  fini cette commande.
  • do littĂ©ralement faire.
  • echo littĂ©ralement rĂ©pĂšte, cela imprime ce qui suit et saute Ă  la ligne.
  • $VISUAL on affiche la valeur courante.
  • ; fin de la commande
  • done fin de la boucle (littĂ©ralement c'est fait)

Cette ligne se contente d'afficher toutes les valeurs contenues dans la variable VISUALS.

Maintenant, on voudrait lancer l’économiseur d’écran. Pour cela il suffit d'ajouter dans la boucle (avant le done) :

/usr/lib/xscreensaver/spotlight -visual $VISUAL

Ce qui au final donne :

declare VISUALS='
Any
Best
Default
Default-N
GL
TrueColor
PseudoColor
StaticGray
GrayScale
DirectColor
Color
Gray
Mono
'

for VISUAL in $VISUALS ; do echo $VISUAL; /usr/lib/xscreensaver/spotlight -visual $VISUAL ; done

Pour passer Ă  l’économiseur suivant, il suffit de fermer la fenĂȘtre ou d’utiliser la touche q (pour quit).

On s’aperçoit que toutes ces valeurs ne sont pas fonctionnelles, loin de lĂ , mais je pense que c’est parce que certaine valeurs doivent ĂȘtre utilisĂ© avec d’autre paramĂštres (par ex -root, -mono) et aussi que cela dĂ©pend de la machine et du systĂšme d’exploitation (cet Ă©conomiseur d’écran tourne sur beaucoup de plateformes).

La suite


Ce billet Ă©tant suffisant long, je garde la suite pour plus-tard.

኿


1 ⋘ 101 / Navigation / 103 ⋙ 115

Les anciens billets sont Ă©galement disponibles dans les archives.

â„č 2006 - 2022 | 🏠 Accueil du domaine | 🏡 Accueil du blog