MSX Village forum

L'école Le BIOS, c'est quoi au juste ? Cette illustre inconnus

TurboSEB Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : compte ++ Groupe : Shoutbox

Inscrit le : 08/08/2010 à 20h57

Messages: 5886

Le 21/11/2020 à 20h50
OUI, MOI TurboSEB, j'ose posé LA Question :D

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 :oups

J'ai déjà une partie de mes réponses ici : :tea
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

Rang

Avatar

Groupe : Shoutbox

Inscrit le : 02/01/2011 à 21h17

Messages: 2904

Le 21/11/2020 à 21h32
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. ^^


On est toujours ignorant avant de savoir.
Github    
TurboSEB Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : compte ++ Groupe : Shoutbox

Inscrit le : 08/08/2010 à 20h57

Messages: 5886

Le 22/11/2020 à 08h10
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. :tea

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 ? :tea

Edité par TurboSEB Le 22/11/2020 à 09h27



MSX 1&2 + Moniteurs+divers (environ 0.70Tonnes)
   
Jipe Membre non connecté

Maire-adjoint

Rang

Avatar

Association

Inscrit le : 02/10/2009 à 19h41

Messages: 10730

Le 22/11/2020 à 09h59
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

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.


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


:noel
Site web    
Jipe Membre non connecté

Maire-adjoint

Rang

Avatar

Association

Inscrit le : 02/10/2009 à 19h41

Messages: 10730

Le 22/11/2020 à 10h29
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



:noel
Site web    
Jipe Membre non connecté

Maire-adjoint

Rang

Avatar

Association

Inscrit le : 02/10/2009 à 19h41

Messages: 10730

Le 22/11/2020 à 10h57
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




:noel
Site web    
Jipe Membre non connecté

Maire-adjoint

Rang

Avatar

Association

Inscrit le : 02/10/2009 à 19h41

Messages: 10730

Le 22/11/2020 à 11h01
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 :heink

parce que moi je ne suis pas informaticien mais juste auto-didacte :siffle



:noel
Site web    
Jipe Membre non connecté

Maire-adjoint

Rang

Avatar

Association

Inscrit le : 02/10/2009 à 19h41

Messages: 10730

Le 22/11/2020 à 11h08
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


:noel
Site web    
TurboSEB Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : compte ++ Groupe : Shoutbox

Inscrit le : 08/08/2010 à 20h57

Messages: 5886

Le 22/11/2020 à 12h04
Perso je comprend :top

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 :oups 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 :gne

Donc avant la mise en œuvre du BIOS par le Z80, il y a une logique hardware. :tea




MSX 1&2 + Moniteurs+divers (environ 0.70Tonnes)
   
Jipe Membre non connecté

Maire-adjoint

Rang

Avatar

Association

Inscrit le : 02/10/2009 à 19h41

Messages: 10730

Le 22/11/2020 à 13h05
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



:noel
Site web    
Jipe Membre non connecté

Maire-adjoint

Rang

Avatar

Association

Inscrit le : 02/10/2009 à 19h41

Messages: 10730

Le 22/11/2020 à 13h15
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 ;)


:noel
Site web    
ericb59 Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : compte ++ Groupe : Shoutbox

Inscrit le : 17/04/2012 à 10h25

Messages: 5566

Le 22/11/2020 à 19h26
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

:) :D



banniere-ericb59e
Site web    
Jipe Membre non connecté

Maire-adjoint

Rang

Avatar

Association

Inscrit le : 02/10/2009 à 19h41

Messages: 10730

Le 22/11/2020 à 19h58
moi j'utilise Pratique du MSX 2 retapé par Granced en PDF ;)
avec la fonction recherche c'est facile de suivre un programme dans une fenêtre avec le PDF dans une autre


:noel
Site web    
Répondre
Vous n'êtes pas autorisé à écrire dans cette catégorie