L'école Le BIOS, c'est quoi au juste ? Cette illustre inconnus
TurboSEB
Membre non connecté
Conseiller Municipal
OUI, MOI TurboSEB, j'ose posé LA Question
C'EST QUOI LE BIOS POUR UN MSX ?
parce que, c'est bien beau de vos posts de nous dire le bios par ci, le bios par la, sauf que nous, on sait même pas de quoi vous parlez et on peu même pas rire à vos blagues d'informaticiens
J'ai déjà une partie de mes réponses ici :
https://fr.m.wikipedia.org/wiki/BIOS_(informatique)
Donc j'ai compris que c'est la couche logiciel native du système MSX, qui organise tout au boot, mais qui n'est pas forcément utile pour la grande majorité d'entre nous, même en programmation.
Sur les systèmes d'ordinateur récents, ce boot logiciel ne sert a rien après le démarrage de l'ordinateur car l'ensemble des processus sont repris par le système d'exploitation
MAIS ÇA CONTIENT QUOI EXACTEMENT UN BIOS ? Edité par TurboSEB Le 21/11/2020 à 20h50
C'EST QUOI LE BIOS POUR UN MSX ?
parce que, c'est bien beau de vos posts de nous dire le bios par ci, le bios par la, sauf que nous, on sait même pas de quoi vous parlez et on peu même pas rire à vos blagues d'informaticiens
J'ai déjà une partie de mes réponses ici :
https://fr.m.wikipedia.org/wiki/BIOS_(informatique)
Donc j'ai compris que c'est la couche logiciel native du système MSX, qui organise tout au boot, mais qui n'est pas forcément utile pour la grande majorité d'entre nous, même en programmation.
Sur les systèmes d'ordinateur récents, ce boot logiciel ne sert a rien après le démarrage de l'ordinateur car l'ensemble des processus sont repris par le système d'exploitation
MAIS ÇA CONTIENT QUOI EXACTEMENT UN BIOS ? Edité par TurboSEB Le 21/11/2020 à 20h50
MSX 1&2 + Moniteurs+divers (environ 0.70Tonnes)
aoineko
Membre non connecté
Conseiller Municipal
Les autres répondrons surement bien mieux, mais en gros dans le contexte du MSX, on parle de "Bios" pour décrire les fonctionnalités de bases du système.
C'est censé éviter aux programmeurs de devoir réinventer la roue en leur offrant une libraire de fonctions pour les tâches courantes (dessiner à l'écran, jouer un son, vérifier l'appuis d'une touche du clavier, etc.).
Ca permet aussi d'assurer une meilleur compatibilité entre les ordinateurs car une même instruction que va utiliser un programmeur peux avoir un contenu différent d'un ordi à l'autre pour s'adapter à des spécificités (chaque marque et/ou ordi a sa propre implémentation des fonctions du Bios ; d'où la liste des ROM système dans OpenMSX par ex.).
Un MSX contient généralement :
- Sur le Slot 0 (je crois que c'est standard), une ROM de 32 KB contenant : la Main-ROM (16 KB) + le Basic (16 KB).
- Sur le Slot 3 (je crois que c'est standard aussi), 2 ROMS (16 KB chacune) : la Sub-ROM (avec des fonctions MSX2) et le Disc-Basic (si le MSX à un lecteur de disquette)
Généralement le "Bios" semble ne désigner que les fonctions de la Main-ROM, mais par extension, ça peut inclure celles des autres ROM.
Le problème des fonctions du Bios sur MSX, c'est qu'elles ne sont pas très performantes.
Si tu veux faire un jeu qui tire le maximum des capacités du MSX, il vaut mieux ne pas passer par le Bios et accéder directement aux périphériques.
Par ex., pour l'affichage, on accède généralement directement au VDP sans passer par le Bios.
Je laisse les autres corriger et compléter au besoin.
C'est censé éviter aux programmeurs de devoir réinventer la roue en leur offrant une libraire de fonctions pour les tâches courantes (dessiner à l'écran, jouer un son, vérifier l'appuis d'une touche du clavier, etc.).
Ca permet aussi d'assurer une meilleur compatibilité entre les ordinateurs car une même instruction que va utiliser un programmeur peux avoir un contenu différent d'un ordi à l'autre pour s'adapter à des spécificités (chaque marque et/ou ordi a sa propre implémentation des fonctions du Bios ; d'où la liste des ROM système dans OpenMSX par ex.).
Un MSX contient généralement :
- Sur le Slot 0 (je crois que c'est standard), une ROM de 32 KB contenant : la Main-ROM (16 KB) + le Basic (16 KB).
- Sur le Slot 3 (je crois que c'est standard aussi), 2 ROMS (16 KB chacune) : la Sub-ROM (avec des fonctions MSX2) et le Disc-Basic (si le MSX à un lecteur de disquette)
Généralement le "Bios" semble ne désigner que les fonctions de la Main-ROM, mais par extension, ça peut inclure celles des autres ROM.
Le problème des fonctions du Bios sur MSX, c'est qu'elles ne sont pas très performantes.
Si tu veux faire un jeu qui tire le maximum des capacités du MSX, il vaut mieux ne pas passer par le Bios et accéder directement aux périphériques.
Par ex., pour l'affichage, on accède généralement directement au VDP sans passer par le Bios.
Je laisse les autres corriger et compléter au besoin.
On est toujours ignorant avant de savoir.
TurboSEB
Membre non connecté
Conseiller Municipal
Donc, c'est un peu comme Zindows il y a peu, a chaque version, on rajoute une couche logiciel par blocs (chaque bloc pouvant lui-même être évolutif) avec des instructions spécifiques au lieu de refondre le tout, histoire d'être forcément rétro compatible.
Le BIOS, c'est un peu comme les librairies du Basic en somme !?!
Y'a t'il des instructions Basic spécifiques aux routines BIOS, ou faut-il forcément passer par le langage Machine pour y accéder au BIOS ?
Les instructions du Basic sont-ils en faite des petits programmes librairies en langage machine qui utilisent les routines du BIOS ?
A priori on peu se passer du BIOS en passant directement aux composants spécifiques, VDP, PSG, PPI. Mais j'imagine qu'il est obligatoire pour démarrer la machine, ou non ?
Edité par TurboSEB Le 22/11/2020 à 09h27
Le BIOS, c'est un peu comme les librairies du Basic en somme !?!
Y'a t'il des instructions Basic spécifiques aux routines BIOS, ou faut-il forcément passer par le langage Machine pour y accéder au BIOS ?
Les instructions du Basic sont-ils en faite des petits programmes librairies en langage machine qui utilisent les routines du BIOS ?
A priori on peu se passer du BIOS en passant directement aux composants spécifiques, VDP, PSG, PPI. Mais j'imagine qu'il est obligatoire pour démarrer la machine, ou non ?
Edité par TurboSEB Le 22/11/2020 à 09h27
MSX 1&2 + Moniteurs+divers (environ 0.70Tonnes)
le BIOS sur MSX est un ensemble de routines dont l'adresse est figée pour que tout les MSX soient compatibles
explication ( compliquée ) du livre pratique du MSX2
en fait dans l'absolu ce sont des routines dont les adresses d'appel sont figées et qui font appel a des routines de la rom qui peuvent être différentes
1er exemple avec une donnée
ces 2 octets quelque soit le MSX contiennent toujours les données ci dessus qui différent suivant la provenance du MSX
explication ( compliquée ) du livre pratique du MSX2
3 LE BIOS (BASIC INPUT/OUTPUT SYSTEM)
3.2 LE BIOS EN MAIN-ROM
Vous trouverez pour chaque routine du Bios en mémoire centrale son nom et son adresse mémoire,
son type (pour les possesseurs de MSX1), les paramètres devant être fournis à la routine, les
résultats que vous récupèrerez ainsi que les registres modifiés et parfois une remarque sur la routine
elle-même ou sur son fonctionnement.
A la rubrique « type », la désignation MSX1 précise que la routine existait déjà sur MSX1, elle reste
bien entendu compatible avec le MSX2. Dans ce cas de figure, un chiffre précise le genre de
modifications apporté sur MSX2 par rapport à l'ancienne routine. Voici la table des codes :
1 - Aucune modification par rapport à la routine MSX1.
2 - Appel à la Sub-ROM si l'écran est en mode 5, 6, 7 ou 8.
3 - Appel systématique à la Sub-ROM.
4 - Routine modifiée pour pouvoir traiter les cas des modes d'écrans 4 à 8.
3.2 LE BIOS EN MAIN-ROM
Vous trouverez pour chaque routine du Bios en mémoire centrale son nom et son adresse mémoire,
son type (pour les possesseurs de MSX1), les paramètres devant être fournis à la routine, les
résultats que vous récupèrerez ainsi que les registres modifiés et parfois une remarque sur la routine
elle-même ou sur son fonctionnement.
A la rubrique « type », la désignation MSX1 précise que la routine existait déjà sur MSX1, elle reste
bien entendu compatible avec le MSX2. Dans ce cas de figure, un chiffre précise le genre de
modifications apporté sur MSX2 par rapport à l'ancienne routine. Voici la table des codes :
1 - Aucune modification par rapport à la routine MSX1.
2 - Appel à la Sub-ROM si l'écran est en mode 5, 6, 7 ou 8.
3 - Appel systématique à la Sub-ROM.
4 - Routine modifiée pour pouvoir traiter les cas des modes d'écrans 4 à 8.
en fait dans l'absolu ce sont des routines dont les adresses d'appel sont figées et qui font appel a des routines de la rom qui peuvent être différentes
1er exemple avec une donnée
ces 2 octets quelque soit le MSX contiennent toujours les données ci dessus qui différent suivant la provenance du MSX
pour ceux qui ont programmé en BASIC et on déja vu deux lignes du genre dans un programme
DEFUSR = &41:PRINT USR(0)
OU
DEFUSR = &44:PRINT USR(0)
ce sont en fait des appels direct au BIOS
DEFUSR = &41:PRINT USR(0)
OU
DEFUSR = &44:PRINT USR(0)
ce sont en fait des appels direct au BIOS
décortiquons la routine qui fait appel a &H41 ( extinction de l'écran )
d'abord voici une photo de la rom d'un MSX1 on voit que la ROM fait appel a l'adresse 0577h par un jp ( jump ) instruction C3 77 05
la même photo pour la rom d'un MSX2 on voit que la ROM fait maintenant appel a l'adresse 060Ah par un jp ( jump ) instruction C3 0a 06
voici le désassemblage a partir de 0577 pour le MSX1 et de 060A pour le MSX2
on voit que le début est pareil mais que la routine MSX2 est bien plus longue certainement du a la différence du modéle de VDP
d'abord voici une photo de la rom d'un MSX1 on voit que la ROM fait appel a l'adresse 0577h par un jp ( jump ) instruction C3 77 05
la même photo pour la rom d'un MSX2 on voit que la ROM fait maintenant appel a l'adresse 060Ah par un jp ( jump ) instruction C3 0a 06
voici le désassemblage a partir de 0577 pour le MSX1 et de 060A pour le MSX2
on voit que le début est pareil mais que la routine MSX2 est bien plus longue certainement du a la différence du modéle de VDP
parce que, c'est bien beau de vos posts de nous dire le bios par ci, le bios par la, sauf que nous, on sait même pas de quoi vous parlez et on peu même pas rire à vos blagues d'informaticiens
dites moi si je vous êtes perdus ou si c'est un peu plus clair pour tout le monde
parce que moi je ne suis pas informaticien mais juste auto-didacte
pour les plus curieux
0F3E0H RG1SAV 1 Contenu du registre 1 du VDP
0F3DFH RG0SAV 1 Contenu du registre 0 du VDP
ce sont des variables systéme dont l'adresse est figée et qui se trouvent dans la partie haute de la mémoire vive
elles sont donc écrites a l'init du MSX
0F3E0H RG1SAV 1 Contenu du registre 1 du VDP
0F3DFH RG0SAV 1 Contenu du registre 0 du VDP
ce sont des variables systéme dont l'adresse est figée et qui se trouvent dans la partie haute de la mémoire vive
elles sont donc écrites a l'init du MSX
TurboSEB
Membre non connecté
Conseiller Municipal
Perso je comprend
Même si la mise en pratique n'est pas d'actualité pour moi, j'ai une meilleure vision du système et de sa mise en œuvre.
Par exemple l'ordre des Roms sur les slots à forcément une grosse importance, on met pas le bios sur le slot 3 mais forcément sur le slot 0, pour qu'il soit le premier à être mis en œuvre et de pouvoir posé le système, c'est un peu comme si on mettait le boot de Zindows sur le disc F du slot D
Donc avant la mise en œuvre du BIOS par le Z80, il y a une logique hardware.
Même si la mise en pratique n'est pas d'actualité pour moi, j'ai une meilleure vision du système et de sa mise en œuvre.
Par exemple l'ordre des Roms sur les slots à forcément une grosse importance, on met pas le bios sur le slot 3 mais forcément sur le slot 0, pour qu'il soit le premier à être mis en œuvre et de pouvoir posé le système, c'est un peu comme si on mettait le boot de Zindows sur le disc F du slot D
Donc avant la mise en œuvre du BIOS par le Z80, il y a une logique hardware.
MSX 1&2 + Moniteurs+divers (environ 0.70Tonnes)
Donc avant la mise en œuvre du BIOS par le Z80, il y a une logique hardware
bien sur a part le Z80 qui pilote tout il y a le PPI 8255 qui est un périphérique d'entrée sortie qui gére entre autre les slots
PPI / Programmable Peripheral Interface / 8255
Le PPI controle un nombre de choses dans le systéme MSX, la selection des slots,la sortie cassette et interface avec le clavier.
Port Description
#A8 registre A du PPI selection des slots primaires
#A9 registre B du PPI matrice du clavier lignes entrées
#AA registre C du PPI clavier et interface K7.
#AB registre de commande
description des registres en detail
A8 selection des slots primaires
Les 64k de la mémoiredu MSX sont divisés en 4 blocs de 16k, appelés pages.
Ce registre controle quel slot primaire doit être mappé a chaque page de memoire
PPI-registre A (#A8) Bits Description
0-1 Slot pour page 0 (#0000-#3FFF)
2-3 Slot pour page 1 (#4000-#7FFF)
4-5 Slot pour page 2 (#8000-#BFFF)
6-7 Slot pour page 3 (#C000-#FFFF)
Ce registre peut être écrit et lu
chaque slot primaire peut être étendu en 4 slots secondaires slots, aussi appelé subslots
Le registre de sélection d'un subslot est a l'addresse #FFFF de la mémoire
en passant certains programmes de MSX1 se servaient de cette adresse car les subslots n'existaient pas sur les 1ers modéles et dont plantaient sur les machines les gérants
mais il faut aussi parler des ports d'entrée sortie qui gérent les principaux composants du système et qui eux aussi sont figés
ces ports sont au nombre de 255 et utilisent les adresses de A0 a A7 pour leur décodage
les valeurs par défaut sont
90 interface imprimante
98 VDP
A0 PSG
A8 PPI
on voit donc ici le minimum vital pour faire fonctionner un MSX ( l'interface imprimante était même en option sous forme de cartouche sur certains MSX1 )
il y a donc un décodage purement électronique des ces adresses et la on sort du BIOS
ces ports sont au nombre de 255 et utilisent les adresses de A0 a A7 pour leur décodage
les valeurs par défaut sont
90 interface imprimante
98 VDP
A0 PSG
A8 PPI
on voit donc ici le minimum vital pour faire fonctionner un MSX ( l'interface imprimante était même en option sous forme de cartouche sur certains MSX1 )
il y a donc un décodage purement électronique des ces adresses et la on sort du BIOS
ericb59
Membre non connecté
Conseiller Municipal
J'ai pas tout lu les réponses, mais je ne doute pas que tout soit exact. Je met juste un exemple concret.
BIOS = Basic Input Output System
C'est en fait un ensemble de routines prêtes à l'emploi.
ici tu as la liste de toutes les routines du Bios MSX : http://map.grauw.nl/resources/msxbios.php
Exemple concret tu veux afficher un caractère à l'écran.
Pour cela tu as routine 0xA2 CHPUT (Affiche un caractère à l'écran)
Pour l'utiliser Ca dit que tu mets le caractère à afficher dans le registre A, puis tu appel la routine.
En assembleur si tu veux afficher la lettre A (Caractère ascii n°65) tu fais ceci :
LD A,65
Call #0xA2
voilà, c'est tout.
Afficher un mot, une phrase se fait par répétition de cette routine avec différents caractères.
Quand tu utilises Print "Bonjour" en fait le Basic va utiliser cette routine Bios pour afficher B o n j o u r
BIOS = Basic Input Output System
C'est en fait un ensemble de routines prêtes à l'emploi.
ici tu as la liste de toutes les routines du Bios MSX : http://map.grauw.nl/resources/msxbios.php
Exemple concret tu veux afficher un caractère à l'écran.
Pour cela tu as routine 0xA2 CHPUT (Affiche un caractère à l'écran)
Pour l'utiliser Ca dit que tu mets le caractère à afficher dans le registre A, puis tu appel la routine.
En assembleur si tu veux afficher la lettre A (Caractère ascii n°65) tu fais ceci :
LD A,65
Call #0xA2
voilà, c'est tout.
Afficher un mot, une phrase se fait par répétition de cette routine avec différents caractères.
Quand tu utilises Print "Bonjour" en fait le Basic va utiliser cette routine Bios pour afficher B o n j o u r
Répondre
Vous n'êtes pas autorisé à écrire dans cette catégorie