dimanche 25 février 2024

POMME-I, le désassembleur

Le moniteur possède maintenant un désassembleur accessible avec la commande @. L'affichage pause à chaque page et il faut appuyer sur la barre d'espacement pour voir la page suivante. Toute autre touche revient à la ligne de commande du moniteur. Le STM8S207K8 possède un boot loader en ROM à l'adresse 0x6000. Voici les premières lignes de code tel que désasssemblées par stm8_dasm.

#6000@

6000: 9B
6000	9B               SIM
6001	AD 0C            CALLR 600F 
6003	25 19            JRC 601E 
6005	CE 48 7E         LDW X,487E 
6008	A3 55 AA         CPW X,#55AA 
600B	27 11            JREQ 601E 
600D	20 16            JRA 6025 
600F	C6 80 00         LD A,8000 
6012	A1 82            CP A,#82 
6014	27 06            JREQ 601C 
6016	A1 AC            CP A,#AC 
6018	27 02            JREQ 601C 
601A	99               SCF
601B	81               RET
601C	98               RCF
601D	81               RET
601E	C6 48 00         LD A,4800 
6021	A1 AA            CP A,#AA 
6023	26 09            JRNE 602E 
6025	5F               CLRW X
6026	4F               CLR A
6027	4B 28            PUSH #28 
6029	86               POP CC
602A	AC 00 80 00      JPF 8000 

La prochaine étape est l'écriture d'un assembleur simple. Lorsque l'assembleur sera intégré au moniteur je vais changer les commandes du moniteur. Toutes les fonctions qui ne font pas parti du moniteur de base comme S,] et @ seront accessible par une interface de commande dérivée accessibles par la lettre X. X pour extension puisque que ces fonctionnalités ne faisait pas partie du p1Monitor à lorigine.

Cette version V1.3R0 est disponible sur le github mais je vais attendre que l'assembleur soit complété avant de présenter un vidéo de démonstration.

POMME-I, V1.2R4 , améliorations du moniteur

Dans la version précédente du moniteur, assembler le code pour les appels système était un peu compliqué et encore plus compliqué lorsqu'il s'agissait d'opérations sur les fichiers. J'ai simplifié tout ça en ajoutant la commande S. De plus j'ai ajouté la commande ] pour assembler l'instruction machine RET qui indique la fin du programme en langage machine et le retour vers le moniteur.

En MS-DOS il y avait un programme appellé debug.exe qui était un moniteur avec un assembleur et un désassembleur ainsi que d'autre fonctions pour examiner et modifier la mémoire RAM. Il y avait 2 types de fichiers exécutables en MS-DOS, les fichiers *.COM et les fichiers *.EXE. L'application debug.exe permettait de créer des fichiers *.COM. Avec le p1Monitor mon objectif est de m'approcher des fonctionnalités de debug.exe en permettant de créer des fichiers en assembleur qui pourront être chargés et exécuter à partir de p1Monitor. Le désassembleur existe déjà puisque je l'avait créé en 2019 avec le projet MONA, ce ne sera pas trop compliqué d'intégrer ce désassembleur à p1Monitor et ensuite il ne me restera qu'à créer l'assembleur.

Démonstration de la commande S de p1Monitor

dimanche 18 février 2024

POMME-I V1.2R2 sauvegarde d'un programme en langage machine.

Dans le vidéo suivant je montre comment:

  • créer un programme en langage machine dans le moniteur en se servant des appels aux services noyau.
  • Comment créer un autre petit programme pour sauvegarder le premier comme fichier binaire.
  • Comment recharger dans le moniteur le fichier binaire pour l'exécuter.