Développement de BriXen: épisode 2 – Hello World!

Exercice d’aujourd’hui: créer notre première application Amstrad. Rien de moins.

Tout d’abord, il est nécessaire d’installer Docker.

Le docker contenant le dernier toolchain CPTC (Crazy Piri Toolchain) est disponible sur Docker Hub. Nous l’installerons après.

Actuellement, ce docker contient les outils suivants:

sdcc: compilateur C (et assembleur via sdasz80)
idsk: création d’image disk pour l’Amstrad
hex2bin: conversion de la sortie du compilateur vers un fichier lisible par l’Amstrad
nocart: conversion d’une image disque vers un fichier GX4000 / Amstrad plus
2cdt: création d’une image cassette
Disark: convertisseur de source assembleur (rasm -> sdcc par exemple)
addhead: pour jouer avec les header AMSDOS d’un fichier
bin2c: convertisseur de fichier binaire vers un fichier source .c
lzsa: compression de fichier binaire avec LZSA
rasm: assembleur de Roudoudou (utilisé actuellement pour convertir le player de ArkosTracker)

Je reviendrai plus en détail plus tard sur chacun de ces outils.

Ensuite, nous pouvons télécharger le template à partir duquel sera réalisé notre futur jeu.

git clone git@github.com:Crazy-Piri/cptc-template.git
cd cptc-template
docker run --rm -v $PWD:/src/ -it redbug26/cptc-docker
./build.sh

La commande toolchain.sh lance une session Docker dans notre environnement de développement. Elle fonctionne sous linux et macOS. Il a donc lieu de l’adapter pour une utilisation sous Windows.

La commande build.sh crée le disque cptc-template.dsk dans lequel se trouve votre première application pour l’Amstrad CPC.

Ouvrez le fichier cptc-template.dsk dans votre émulateur préféré et lancez la commande

run"main.bin

Maintenant, comment interfacer tout cela avec Visual Studio Code ?

A suivre pour le prochain épisode…

l'interface de Toby

Toby

Toby n’est pas le nom de mon chien.

Est-ce, comme moi, que vos bookmarks sont un foutoir sans nom ? À force d’installer 36 navigateurs web différents sur 36 machines sur plus de 20 ans sans rien nettoyer, cela ne donne plus rien d’utilisable.

Je voulais donc repartir sur de bonnes bases (de zéro donc) avec une interface plus moderne que ce que nous proposent les navigateurs web de base.

Mon choix s’est porté sur Toby.

Toby se présente sous la forme d’un plugin dans Chrome ou Firefox (ou via un site web en bêta) et s’affiche lors de l’ouverture d’un nouvel onglet.

Votre page est alors divisée en 3 parties (dont 2 repliables):

La partie de gauche avec vos espaces et le paramétrage
La partie de droite avec les onglets actuellement ouverts
La partie centrale avec vos collections.

Chaque espace contient des collections, chaque collection contient vos bookmarks.

Tout de fait via drag’n drop avec la partie de droite. Dur de faire plus intuitif.

Je vous laisse découvrir le reste (recherche des sites doublons, ouverture d’une collection complète, sauvegarde de la session courante dans une collection …), je suis certain que, comme moi, vous apprécierez.

Ah oui: tout ça est gratuit. Une version pro existe, mais est plus destinée aux équipes.

(c) Pexels – Anton Kudryashov

Droit des vos fichiers Apache

Vous modifiez des fichiers de votre serveur web directement à partir de votre navigateur ?

Il se peut que donc que vous ne puissiez plus y accéder en ligne de commande.

Tout d’abord, vérifiez que vous êtes bien dans le groupe www-data

sudo usermod -a -G www-data votre_user

Ensuite, ajouter la commande umask 002 dans le fichier /etc/apache2/envvars

Et redémarrer complètement le service apache via service apache2 restart

Merci qui ?

Développement de BriXen: épisode 1 – Ma chaine de compilation Amstrad CPC

Introduction

Je n’avais jamais développé sur Amstrad CPC (mis à part en Basic il y a… plus de 30 ans). Lorsque Pascal Visa a lancé la CPC Gamedev Contest 2020 dans le groupe Facebook Amstrad CPC pour toujours and beyond !, je me suis dit que c’était l’occasion d’enfin m’y mettre. Le développement de mon émulateur CrocoDS m’a beaucoup appris sur les possibilités de mon ordinateur préféré.

Il restait donc à savoir comment programmer sur un Amstrad en 2020. Pas question évidemment de développer directement sur l’Amstrad mais plutôt de s’aider des outils modernes.

Comme beaucoup de développeurs actuellement, je suis passé sous Visual Studio Code, l’éditeur de code multi plateforme et extensible développé par Microsoft.

Lorsque j’ai commencé à développer pour l’Amstrad CPC, il était donc évident que je puisse utiliser cet éditeur.

Mon langage de prédilection étant depuis toujours le C pour sa simplicité et du fait qu’il soit un langage de très bas niveau. Je comptais donc développer en ce langage (avec évidemment l’ajout de code assembleur pour les routines ayant besoin de plus d’optimisation).

Comment donc mélanger tout cela ?

Les outils

J’ai essayé divers environnements de développement tels que CPCtelera, cpc-dev-tool-chain mais aucun ne m’a satisfait à 100%.

Ils m’auront au moins permis de me donner des idées sur plusieurs de mes futurs outils. Ces outils auront leurs prochains articles détaillés à l’avenir.

SDCC comme compilateur C (et asm dans un premier temps). J’avais commencé avec Z88DK mais le code généré par ce compilateur était beaucoup moins optimisé que celui de SDCC.
cpcrslib comme librairie de fonctions assembleur.
Arkos Tracker 2 pour la musique
Visual studio code (déjà évoqué auparavant)
Docker (je ne voulais pas devoir réinstaller un environnement de développement chaque fois que je change de machine)
Retro Virtual Machine comme émulateur multi-plateforme. J’ai mon propre émulateur (que j’utilise aussi au niveau développement pour certaines de ces fonctionnalités) mais RVM va beaucoup plus loin au niveau debug.
Divers outils tels que convimgcpc, RGAS, iDSK…

Tout cela m’a permis de faire un template qui sera disponible sur GitHub dans les jours qui viennent qui me permet:

Via la commande SHIFT-CMD-B de faire un build de mes sources,
Via la commande SHIFT-CMD-R d’exécuter l’application directement dans Retro Virtual Machine.

À suivre pour l’épisode 2 très bientôt…

(c) Pexels – Andrea Piacquadio

Fun with UNDOK

UNDOK ? Cékoidon ?

D’après le site de Frontier Smart Technologies, l’application UNDOK ™ de Frontier fournit le contrôleur le plus complet, le plus polyvalent et le plus facile à utiliser pour les systèmes audio connectés de nouvelle génération.

Ça vous aide ? Non ? En fait, il s’agit du logiciel présent sur beaucoup de radios Internet (Roberts, Sangean, Pure, Revo, Hama, Medion…)

Je possède le Robert Revival iStream 3 et voudrais l’interfacer avec ma domotique. C’est évidemment possible et nous allons le voir tout de suite.

Tout d’abord, il est nécessaire de trouver l’IP de la radio. Cela se fait via la recherche SSDP (Simple Service Discovery Protocol) suivante:

gssdp-discover -t urn:schemas-frontier-silicon-com:undok:fsapi:1

L’IP de la radio nous permet déjà d’avoir quelques infos via l’adresse http://<ip>/device

<netRemote>
<friendlyName>Roberts Salon</friendlyName>
<version>ir-mmi-FS2026-0500-0641_V2.14.35c.EX86167-1A39</version>
<webfsapi>http://192.168.1.209:80/fsapi</webfsapi>
</netRemote>

L’affichage de la ressource UPNP contient aussi des informations intéressantes: http://<ip>:8080/dd.xml

Maintenant que nous avons l’adresse IP, nous pouvons installer la librairie fsapi via composer, le gestionnaire de paquet PHP. Dans un nouveau répertoire, tapons la commande suivante (petit patapon):

composer require flammy/fsapi

Il n’y a plus qu’à créer le script: un fichier index.php contenant le code suivant (avec l’ip de la radio)

<?php
require_once("vendor/autoload.php");
require_once("vendor/flammy/fsapi/src/Radio.php");
$host = "192.168.1.209";
$pin = "1234";
$Radio = new Radio($host,$pin);
$Radio->getSet("netRemote.sys.power","1");   // 1: on, 0 :off

On exécute le script via php index.php et la radio s’allume…

Après, si vous voulez vous passer de l’API (ou de php), cette commande suffit:

curl -vs "http://192.168.1.209/fsapi/SET/netRemote.sys.power?value=1&pin=1234"

Le faire via php vous permet d’avoir accès à des fonctions plus parlantes tel que $Radio->volume('up'); ou $Radio->radioFrequency(106.4);.

Total commander (et un potentiel successeur)

J’ai abandonné depuis longtemps Windows, mais s’il y a bien une application qui me manque sur les autres OS, c’est Total Commander.

Total Commander est un gestionnaire de fichier (orthodoxe) tel que Norton Commander ou mon bon vieux Ketchup Killers Commander.

Sa première version date du 25 septembre 1993 (28 ans déjà) et se nommait Windows Commander.

J’ai essayé 36 clones sur macOS (et aussi sur Linux), mais aucun ne me donne les mêmes sentations.

De retour sur Linux depuis quelques mois, j’ai donc ressayé wine qui permet de faire tourner des applications Windows sur les systèmes d’exploitation conforme à POSIX tel que Linux, macOS ou BSD. Je ne l’avais plus essayé depuis très longtemps et il faut avouer qu’il tourne maintenant très bien.

L’idée de redonner une chance à wine vient du fait que Valve l’utilise aussi pour sa console Steam Deck. Une preuve que wine est enfin devenu un produit mature.

Lors de la rédaction de cet article, je suis tombé sur Double Commander qui se veut un clone open-source de Total Commander. Je l’avais testé sur macOS il y a quelques années, mais n’avait pas été convaincu. Par contre, sous Linux, la sensation d’utiliser Total Commander est bien présente. Préférant utiliser des applications natives, je vais lui donner sa chance.

Avec un peu de customisation, j’arrive à avoir quelque chose qui ressemble vraiment à Total Commander. Il se permet même d’avoir plus d’options et être programmable en lua.

Est-ce qu’il sonnerait la mort de Total Commander (du moins sous Linux) ?

Hacking Novell

Vu qu’il y a prescription, je peux maintenant en parler.

Il y a 25 ans, j’ai fait des études pour devenir ingénieur civil. Les débuts d’Internet et les salles informatiques du campus ont vite eu raison de mon ambition…

J’y ai découvert les plaisirs des réseaux et de la programmation C. Les ordinateurs, sans disque dur, étaient connectés via un réseau IPX en 10BASE2 (ceux qui ont pratiqué se rappelleront des joies de ce type de réseau et son terminateur). Pour accéder à Internet, il fallait la disquette magique (une disquette de boot) avec laquelle on pouvait aussi s’amuser… mais ceci est une autre histoire, qui sera contée une autre fois.

Pour en revenir au réseau IPX, les répertoires partagés étaient gérés par un serveur Novell NetWare (d’après mes années d’études et le fichier net5.com que j’exécutais, cela devait être du 3.1). J’avais, à l’époque, réalisé un gestionnaire de fichiers (SH Tools Deluxe R1.00 en hommage à PC Tools Deluxe). Celui-ci deviendra Ketchup Killers Commander des années plus tard.

L’utilisant pour tous mes accès disques, quelle ne fut pas ma surprise quand je vis que je pouvais accéder à tous les fichiers qui m’étaient interdits via le command.com du DOS.

SH Tools Deluxe R1.00

La raison ?

J’utilisais l’interruption 21h pour accéder aux fichiers, mais au lieu de faire ce qui était recommandé:

cd repetoire # int 21h fonction 3Bh ?
open fichier # int 21h fonction 0fh ?

Je faisais directement:

open repertoirefichier # int 21h fonction 0fh ?

La couche d’émulation DOS au-dessus de Novell Netware ne vérifiait pas les accès absolu !

Je n’ai jamais su si c’était une faille dans Netware ou juste une mauvaise configuration de la part des administrateurs réseau de l’école, mais posséder cette connaissance me remplissait de bonheur (il m’en fallait peu à l’époque). Wargames étant déjà un de mes films cultes, je me sentais un peu comme le David Lightman belge.

Après, vu le peu d’utilisation des serveurs de fichiers (la Polytech de Mons n’avait pas encore fini sa migration VAX/VMS vers Novell), les conséquences de cette faille n’étaient finalement pas bien graves.

GPD Pocket 2

Est-ce que cette image vous dit quelque chose ?

Non ? Il s’agit d’une capture d’écran de Terminator 2 dans lequel John Connor (Edward Furlong) pirate un distributeur de billets à l’aide d’un Atari Portfolio. Cette scène a fait rêver beaucoup de jeunes de l’époque (dont moi) et avoir un ordinateur toujours sur soi parraissait irééel. L’Atari Portfolio était un compatible PC sous une variante de MS-Dos et beneficait ainsi d’une belle logithèque (une grande partie des logiciels qui tournait en mode console en DOS).

J’ai possédé plus tard quelques ultraportables tel que Jornada 720 (sous Windows CE) ou le Asus EEE 900.

D’autres m’ont fait aussi fait envie tel que le Sharp Zaurus ou les Psion Series 3 et 5 mais ils étaient soit introuvable, soit trop chers…

Lorsque l’ASUS EEE pc est sorti (vers 2007), le marché des mini machines a explosé et chaque marque proposait sa version du pc que l’on pouvait emmener partout… Mais cela restait toujours trop grand à mon goût.

Après cela, le marché s’est tari et la possibilité d’avoir un telle machine disparaissait avec lui.. Mon espoir aussi.

2015… GPD annonce le GPD Win et l’espoir revient.

GPD Win

Je patiente quelques années (tout en restant attentif à ce qu’ils sortent) et craque en 2020 pour le GPD Pocket 2.

Mon GPD Pocket 2 a des spécifications de rêve pour un petit PC sous Linux:

Processeur: Intel Celeron CPU 3965Y @ 1.50GHz (avec un TDP de 4.5W)
Ecran de 7 pouces avec une résolution de 1920×1200
8 Go de RAM
128 Go de stockage eMMC et un slot MicroSD
2 USB-A et 1 USB-C
Wifi & Bluetooth 4
Et des dimensions de 181x113x14mm pour un poids de 465g

GPD Pocket 2

Il m’accompagne maintenant presque partout et nous servira souvent dans nos futurs pérégrinations à travers le monde Linux.

Edito – Avril 2022

J’ai commencé ce blog il y a un peu plus de 16 ans (le 23 mars 2006) et l’ai rapidement abandonné pour favoriser mes développements mobiles (KyPass entre autres).

L’envie de réécrire me taraudait depuis quelque temps.

En ce 1er avril 2022, exactement 45 ans après la première émission des Grosses Têtes, j’ai donc décidé que ce blog reprendrait vie !

Mais de quoi vais-je donc parler ? Il ne faut pas que je retombe dans mes travers et que je perde toute motivation après quelques semaines.

Niveau technique, mes passions sont:

Le retrogaming. Je ne suis pas un grand joueur, mais tous les ordinateurs qui ont fait l’histoire de l’informatique m’ont toujours attiré. Par manque de place, je me suis focalisé sur certains (qui a dit l’Amstrad ?). Et si l’on développait un jeu sur Amstrad CPC ensemble ?
L’open source et toute la créativité que l’on retrouve dans ce milieu. Nous détournerons des objets juste par plaisir: nous écouterons la radio FM sans carte radio ni internet, nous utiliserons la caméra de notre smartphone à distance sur notre pc… Récemment, je me suis refait un environnement Linux sur mon GPD Pocket 2 (dont je parlerais dans un futur billet). Il nous servira de terrain de jeu.

J’ai déjà 46 ans, je retracerais aussi mon histoire autour de l’informatique (la demoscène, les débuts des développements mobiles …). Père Castor a de quoi vous remplir vos soirées.

Et pour ne pas vous laisser sans rien en cas de baisse d’envie, pendant ces derniers mois, je me suis contraint à l’écriture quotidienne d’articles.

Une journée où l’on n’a rien appris est une journée perdue. (dixit machin)

Pendant mes humanités, un de mes professeurs de physique nous avait dit que les plus grandes qualités d’un scientifique étaient la curiosité et la paresse. La curiosité parce qu’elle nous permet d’apprendre; la paresse parce qu’elle nous permet d’optimiser nos tâches répétitives.

Et ça ce soir… ça va se savoir ! Bonsoir !