Commandes du 'moniteur' Goupil ?

C'est la catégorie reine de l'ordinophile, 8 bits et pas un de plus!
Single board ou bus S-100 acceptés.

Modérateurs : Papy.G, fneck, Carl

gotcha
Messages : 2758
Inscription : 30 mars 2017 11:39
Localisation : Isère
Contact :

Re: Utilisation/commandes du 'moniteur' Goupil ?

Message par gotcha »

Bon, j'avance dans le désassemblage du BIOS. Je suis toujours dans le POST, mais j'ai déjà vu passer un service 'moniteur' dans la table de vecteurs d'IT:

J'ai déjà traité un certain nombre de fonctions de setup/check du POST et il m'en reste normalement moins de 10 à analyser/
Avec avec un peu de chance, je tomberai sur la gestion de l'invite du moniteur à la fin du POST.

EDIT: Je viens d'ailleurs juste d'atteindre le code qui affiche "G4MON-186 V1R4" sur l'écran.
Dernière modification par gotcha le 19 avr. 2021 13:40, modifié 1 fois.
Amstrad CPC et Goupil power :mrgreen:
Bénévole à l'association pour un conservatoire de l’informatique et de la télématique (https://www.aconit.org)
gotcha
Messages : 2758
Inscription : 30 mars 2017 11:39
Localisation : Isère
Contact :

Re: Commandes du 'moniteur' Goupil ?

Message par gotcha »

Voila, après une journée de désassemblage, je suis arrivé au moniteur :D
Dans quelques temps, ses commandes n'auront plus de secret pour moi ;-)

Le code qui affiche le '+' et attends une commande clavier:

Code : Tout sélectionner

seg000:CFB4                 mov     al, 2Bh ; '+'
seg000:CFB6                 call    WRITE_CHARACTER

<...>

seg000:CFC5                 call    READ_CHAR_FROM_KEYBOARD
Amstrad CPC et Goupil power :mrgreen:
Bénévole à l'association pour un conservatoire de l’informatique et de la télématique (https://www.aconit.org)
gotcha
Messages : 2758
Inscription : 30 mars 2017 11:39
Localisation : Isère
Contact :

Re: Commandes du 'moniteur' Goupil ?

Message par gotcha »

J'ai trouvé la liste des mots clés des commandes du moniteur du G4.

Le code du moniteur et en particulier du parseur de commandes est plus difficile à analyser que le code du POST du BIOS :cry: Mais je ne suis pas vraiment étonné :)

Il faut maintenant que je comprenne la syntaxe des commandes et leur signification, car on peut mettre des opérandes.
Tout seul comme un grand, j'avais juste trouvé 'D' , donc le désassemblage nous apprends pas mal de chose :)

Code : Tout sélectionner

CNT
CYL
D
DRV
DK
DK?
E
F
C
H
HD
I
IW
O
OW
Q
R
RD
SEC
WR
?
RES
BOOT
BO
SLOAD
CALLF
TA
Dernière modification par gotcha le 20 avr. 2021 12:51, modifié 1 fois.
Amstrad CPC et Goupil power :mrgreen:
Bénévole à l'association pour un conservatoire de l’informatique et de la télématique (https://www.aconit.org)
Avatar de l’utilisateur
fneck
Site Admin
Messages : 17423
Inscription : 01 avr. 2007 12:03
Localisation : Drôme Provençale (26)
Contact :

Re: Commandes du 'moniteur' Goupil ?

Message par fneck »

Ca en fait un bon paquet. Habituellement j'avais plutôt vu une seule lettre par commande mais là c'est plus évolué.
Fabien https://www.system-cfg.com
Les bonnes pratiques de l'utilisateur du forum viewtopic.php?f=14&t=3
Fool-DupleX
Messages : 2284
Inscription : 06 avr. 2009 12:07

Re: Commandes du 'moniteur' Goupil ?

Message par Fool-DupleX »

Par curiosité, quelle est la taille du BIOS et quels logiciels utilises-tu pour faire ton reverse ?
gotcha
Messages : 2758
Inscription : 30 mars 2017 11:39
Localisation : Isère
Contact :

Re: Commandes du 'moniteur' Goupil ?

Message par gotcha »

J'ai dumpé les 64KB du segment F000 avec mon petit programme C, mais la zone de ROM proprement dite démarre à F800:0000 d'après le technical manual : donc 32 KB de ROM. C'est cohérent avec ce que j'ai vu pour l'instant.

Pour le désassemblage, j'utilise la version free de IDA : https://www.hex-rays.com/products/ida/s ... _freeware/
On en avait parlé un peu ici : https://forum.system-cfg.com/viewtopic.php?f=24&t=10787
J'ai finalement opté pour IDA Free que je trouve globalement excellent et productif pour désassembler du code bas niveau comme les codes de boot.
Dernière modification par gotcha le 20 avr. 2021 19:39, modifié 1 fois.
Amstrad CPC et Goupil power :mrgreen:
Bénévole à l'association pour un conservatoire de l’informatique et de la télématique (https://www.aconit.org)
gotcha
Messages : 2758
Inscription : 30 mars 2017 11:39
Localisation : Isère
Contact :

Re: Commandes du 'moniteur' Goupil ?

Message par gotcha »

fneck a écrit : 20 avr. 2021 08:15 Ca en fait un bon paquet. Habituellement j'avais plutôt vu une seule lettre par commande mais là c'est plus évolué.
Oui, c'est peut-être pour ça qu'ils n'ont pas implémenté la commande 'H' (help), qui se contente d'afficher qu'il n'y a pas de help.
Ça prendrait certainement trop de place en ROM.

Par contre, je suis quand même étonné de ne pas avoir trouvé la doc du moniteur dans le technical manuall.

D'un autre coté, ça fait longtemps que je voulais désassembler un BIOS pour mieux comprendre le POST. Donc ce mystérieux moniteur est une bonne excuse pour le faire :-)
Amstrad CPC et Goupil power :mrgreen:
Bénévole à l'association pour un conservatoire de l’informatique et de la télématique (https://www.aconit.org)
Zebulon
Messages : 2788
Inscription : 02 nov. 2020 14:03

Re: Commandes du 'moniteur' Goupil ?

Message par Zebulon »

gotcha a écrit : 20 avr. 2021 10:31 J'ai finalement opté pour IDA Free que je trouve globalement excellent et productif pour désassembler du code bas niveau comme les codes de boot.
J'ai testé hier soir pour désassembler le petit programme PARK.COM des PC1512/1640 car je voulais essayer de comprendre pourquoi il me fait toujours une erreur "invalid drive specification". Bon j'ai pas compris mais effectivement le désassemblage est très bien fait et la possibilité de renommer les labels au fur et à mesure des investigations, pouvoir naviguer entre code désassemblé et vue hexa, etc sont vraiment top. Je ne connaissais pas d'autres outils.

Ce qui manque cruellement sur émulation PC c'est des outils comme ceux proposés par DCMOTO ou Caprice/Winape qui permettent vraiment de superviser les entrailles de la machine live.
gotcha
Messages : 2758
Inscription : 30 mars 2017 11:39
Localisation : Isère
Contact :

Re: Commandes du 'moniteur' Goupil ?

Message par gotcha »

Les .COM et .EXE sont je crois déjà structurés avec des sections différentes pour les données et le code.

Les codes de bootstrap (MBR, BIOS, Boot sector de disquette) sont quant à eux déstructurés avec des données et du code mélangés. IDA permet à partir d'un point d'entrée qu'on sait être du code (l'adresse du 'cold boot' pour le BIOS dans le cas que je traite ici) de petit à petit structurer le programme et de déterminer quel byte est en fait une data ou une instruction.

Pour les data, on peut décider au fur et à mesure si c'est un byte, un word, un dword, une string en fonction de ce qu'en fait le code.
Au fur et à mesure qu'on avance et qu'on comprend la fonctionnalité, on va effectivement aussi nommer les différents labels.
Amstrad CPC et Goupil power :mrgreen:
Bénévole à l'association pour un conservatoire de l’informatique et de la télématique (https://www.aconit.org)
Répondre