Quelques ouvrages où il est question d’assembleur

Ces ouvrages ne sont plus très actuels, mais ils permettent de se (re)plonger dans l’assembleur de l’époque du DOS.
En haut à gauche : 1994. En haut à droite : 1989.
En bas à gauche : 1993. En bas à droite : 1997.


Et quelques liens :
Introduction au langage assembleur (vue d’ensemble)
Structure interne des ordinateurs (voir la partie 2)
Apprendre l’assembleur
Programmation Assembleur 32 et 64 bits sous Linux Ubuntu

Comparatif DOSBox / JS-DOS

Pour accéder aux valeurs mesurées sur C282, il faut utiliser la combinaison de touches SHIFT R.

Sur mon ordinateur (hors ligne), C282 donne les résultats suivants dans la machine virtuelle DOSBox :

Sur le même ordinateur (en ligne), C282 donne les résultats ci-dessous avec JS-DOS (cycles: 20000). NvDelay passant de 347 à 54, on constate que le passage sur le Web de C282 divise par 6 environ la vitesse de calcul. Le régulateur permet d’obtenir un visuel quasi identique en ligne et hors ligne pour une machine suffisamment puissante. Étonnamment, avec JS-DOS, le même test sur un Netbook (peu puissant) indique une régulation satisfaisante alors que le visuel ne correspond pas du tout à ce qui est attendu (trop lent).

Pour accéder aux valeurs mesurées sur Opus 1, il faut utiliser la combinaison de touches SHIFT R.

Sur mon ordinateur (hors ligne), Opus 1 donne les résultats suivants dans la machine virtuelle DOSBox :

Sur le même ordinateur (en ligne), Opus 1 donne les résultats ci-dessous avec JS-DOS (cycles: 40000). NvDelay passe de 320 à 171.

JS-DOS

JS-DOS permet d’exécuter un programme DOS dans un navigateur Web de manière très simple. => Site officiel : https://js-dos.com.

Dans la console de Debian, télécharger la version 6.22 :

cd Téléchargements

wget https://js-dos.com/6.22/current/js-dos.js

wget https://js-dos.com/6.22/current/wdosbox.js
wget https://js-dos.com/6.22/current/wdosbox-emterp.js
wget https://js-dos.com/6.22/current/wdosbox-nosync.js
wget https://js-dos.com/6.22/current/dosbox.js
wget https://js-dos.com/6.22/current/dosbox-emterp.js
wget https://js-dos.com/6.22/current/dosbox-nosync.js
wget https://js-dos.com/6.22/current/wdosbox-profiling.js
wget https://js-dos.com/6.22/current/wdosbox-emterp-profiling.js
wget https://js-dos.com/6.22/current/wdosbox-nosync-profiling.js

wget https://js-dos.com/6.22/current/wdosbox.wasm.js
wget https://js-dos.com/6.22/current/wdosbox-emterp.wasm.js
wget https://js-dos.com/6.22/current/wdosbox-nosync.wasm.js
wget https://js-dos.com/6.22/current/wdosbox-profiling.wasm.js
wget https://js-dos.com/6.22/current/wdosbox-emterp-profiling.wasm.js
wget https://js-dos.com/6.22/current/wdosbox-nosync-profiling.wasm.js

Exemples : https://js-dos.com/6.22/examples/

Problème rencontré : Le titre que je donne à mes pages html est écrasé par JS-DOS et indique DOSBox. Pour résoudre ce problème, j’ai modifié certains fichiers ci-dessus en remplaçant :

setWindowTitle!=="undefined"

par :

setWindowTitle=="undefined"

Les fichiers concernés sont :
wdosbox.js
wdosbox-emterp.js
wdosbox-nosync.js
dosbox.js
dosbox-emterp.js
dosbox-nosync.js
wdosbox-profiling.js
wdosbox-emterp-profiling.js
wdosbox-nosync-profiling.js

J’en ai informé l’auteur.

DOS retro gaming

Des jeux que j’ai aimé, que j’aime encore et qui fonctionnent bien sous FreeDOS, mais sans le son sur mon Netbook :
Prince of Persia (1990)
CTRL Q pour quitter.
Les flèches pour se déplacer.
Shift pour se battre (dès qu’on a trouvé l’épée).
Shift associé à une flèche pour un déplacement précautionneux.
Lemmings (1991)
Civilization (1991)
Tetris Classic (1992)

*** Portails de jeux DOS ***
DOS Haven
DOSGames.com
Internet Archive : Permet de jouer dans un navigateur Web
Dos.Zone

DOS retro coding

*** DOS / Système ***
Gladir.com
Programming MS-DOS with Power
Ralf Brown’s Interrupt List
Graphical programming in Assembly

*** C ***
256-Color VGA programming in C
PC Game Programmer’s Encyclopedia
The Atrevida PC Game Programming Tutorials

*** Pascal ***
SWAG : SourceWare Archive Group => allswags.zip (29/11/1997)
https://turbo-pascal.developpez.com
MS-DOS games and utilities
DOS-VGA-Game

*** Divers ***
X2 Support Group Game Development Archives (miroir)
flipcode Archives
VGA programming lessons
Afficher une image en VGA mode 13h
Michael Abrash’s Graphics Programming Black Book => html

Installation de FreeDOS sur un Netbook

Machine cible : Samsung NC210 / DD 250 Go / RAM 2 Go.
Système à installer : FreeDOS 1.3 RC4 (30/04/2021).

Initialement, il y avait sur cette machine une version de Debian. Pour installer FreeDOS, il faut donc préparer le disque dur.
J’ai utilisé pour cela une version live de Debian :

Dans la console :

sudo fdisk /dev/sda

Supprimer les partitions existantes (touche d).
Ajouter une partition (touche n).
Définir le format de partition (touche t) avec le code Hexa c : W95 FAT32 (LBA).
Activer l'unique et nouvelle partition (touche a).
Contrôler les modifications avant écriture (touche p).
Écrire la nouvelle table de partitions (touche w).

Pour décompresser le fichier FD13-LiveCD.zip et récupérer FD13LIVE.iso :

unzip FD13-LiveCD.zip

J’ai ensuite gravé l’image de FreeDOS sur un CD-ROM.

Une fois le système installé, pour pouvoir accéder à la clé USB, il faut, au niveau du BIOS mettre les priorités suivantes concernant le boot :
1 – USB CD (lecteur dvd externe)
2 – SATA HDD (disque dur)
3 – USB HDD (clé USB)

Le disque dur sera accessible en tapant C: et la clé USB en tapant D: à condition d’avoir installé la clé avant le démarrage du système. Il n’est pas possible d’utiliser la clé USB de manière souple (l’enlever, la remettre).

Outils de développement que j’installe :
Open Watcom C/C++ 1.9 => Lien intéressant pour l’installation
NASM 2.15.05 => Manuel en ligne
Turbo Pascal 7.0

Pour copier mon répertoire PERSO et ses sous-répertoires de D: vers C: :

xcopy d:\perso c:\perso /E

Rajouts personnels à la fin du fichier fdauto.bat (= autoexec.bat) :

REM *** OPEN WATCOM 1.9 ***
PATH C:\WATCOM\BINW;%PATH%
SET INCLUDE=C:\WATCOM\H
SET WATCOM=C:\WATCOM
SET EDPATH=C:\WATCOM\EDDAT
SET WIPFC=C:\WATCOM\WIPFC

REM *** TURBO PASCAL 7.0 ***
PATH C:\TP7\BIN;%PATH%

REM *** NASM 2.15.05 ***
PATH C:\NASM;%PATH%

Pour compiler et créer un exécutable avec Watcom :

wcl hello.c

Liens :
DOS commands
Index of FreeDOS 1.2 on ibiblio.org
Chaine officiel YouTube de FreeDOS
BTTR Software

Fusées à eau

Dans le cadre du démarrage d’un nouveau projet scientifique et technique lié aux fusées, voici une page de liens intéressants sur le sujet :
Planète Sciences => Note technique Version 2.3
Les fusées à eau avec Papyjo
Go Mars
Lycée Naval : TPE fusées à eau
DUT Mesures Physiques Clermont-Ferrand : Rapport sur la fusée à eau
Forum Fuzeao
Air Command Water Rocket
U.S. Water Rockets

Matériel acheté :
Raccord pour fusée à eau

Mise à jour de la centrale Alpha 4

Je viens de mettre à jour la centrale Alpha 4. Elle est le 4ème prototype d’une centrale d’acquisition LIBRE à destination des enseignants de physique-chimie notamment. La centrale Alpha 4 a subi une cure d’amaigrissement par rapport à la version précédente (les capteurs internes ont été retirés) et le code informatique a été amélioré.

Les données (horodatées) sont enregistrées au format texte sur une carte SD. Elles se récupèrent par l’intermédiaire d’un câble USB connecté à un ordinateur sous Linux, Windows ou Mac OS X. Les données brutes sont ensuite facilement exploitables notamment grâce à un programme que j’ai écrit en Python. Celui-ci crée un fichier au format CSV, trace une courbe et permet de modéliser la fonction obtenue, tout cela automatiquement en appuyant sur un seul bouton de la centrale.

Charge d’un condensateur sous 5 volts avec une résistance de 1 MΩ et un condensateur de 100 µF :
b = -0,010 => τ = RC = 100 s

Oscillations :

Mettre à jour un programmateur USBasp avec un autre programmateur USBasp (sous Debian 10)

Lorsque je téléverse un programme dans ma carte Arduino Nano avec mon programmateur USBasp, j’obtiens le message suivant : avrdude: warning: cannot set sck period. please check for usbasp firmware update.

Si avrdude n’est pas installé dans Debian 10, le faire préalablement :

sudo apt-get install avrdude

Télécharger la dernière version du firmware (usbasp.2011-05-28.tar.gz ) sur le site officiel et décompresser l’archive :

cd Téléchargements
wget https://www.fischl.de/usbasp/usbasp.2011-05-28.tar.gz
tar -zxvf usbasp.2011-05-28.tar.gz

La puce sur le programmateur à mettre à jour est un ATmega8L (à vérifier à la loupe). Dans l’archive décompressée ci-dessus, le fichier qui nous intéresse est donc : usbasp.atmega8.2011-05-28.hex

Sur le programmateur à mettre à jour, JP1 est à positionner sur 5V ; les 2 broches de JP2 sont à relier entre elles.
Connecter les 2 programmateurs.
Taper dans la console les 2 lignes suivantes :

cd Téléchargements/usbasp.2011-05-28/bin/firmware/
avrdude -p atmega8 -c usbasp -U flash:w:usbasp.atmega8.2011-05-28.hex:i -F -P usb

Copie écran de ce qu’on obtient :

Libérer les broches de JP2.

=> Lien