IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Programmation d'OS Assembleur Discussion :

Virtual Box saute à l'adresse 0x5C00 au lieu de 0x7C00


Sujet :

Programmation d'OS Assembleur

  1. #1
    Membre éclairé

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2012
    Messages
    359
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2012
    Messages : 359
    Points : 738
    Points
    738
    Billets dans le blog
    2
    Par défaut Virtual Box saute à l'adresse 0x5C00 au lieu de 0x7C00
    Bonjour,

    Mon probléme est le suivant :

    J'ai fait une disquette FAT12 bootable hardcoder à la main, le bootloader lit parfaitement le FS, charge un fichier exécutable à l'adresse 0x0000:0x7C00 puis effectue un saut à cette même adresse.

    Jusque là tout va bien, le problème c'est qu'une fois arrivé dans le fichier exe, on est à l'adresse 0X05C00 alors que les adresses sont codées en dur dans le code, j'ai supposé que cela venait de VirtualBox mais je ne trouve rien sur le sujet.

    Quelqu'un voit-il quoi faire ou d'où vient le problème ?

    Les codes
    Fichiers attachés Fichiers attachés
    Le gourou dicte la ligne (de commande) à suivre ...

    Penser à lire le Tutoriel Batch ou a consulter la FAQ Batch et ses contributions,
    ainsi que le Cour sur la ligne de commande et des scripts

  2. #2
    Expert éminent Avatar de BufferBob
    Profil pro
    responsable R&D vidage de truites
    Inscrit en
    Novembre 2010
    Messages
    3 035
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : responsable R&D vidage de truites

    Informations forums :
    Inscription : Novembre 2010
    Messages : 3 035
    Points : 8 400
    Points
    8 400
    Par défaut
    salut,

    je comprends pas tout à fait, quand tu dis "jusque là tout va bien" tu veux dire que les codes que tu as mis en pièce jointe fonctionnent ? (auquel cas c'est peut-être le LOADER qu'il faudrait mettre non ?)

    j'ai essayé vite fait sans trop chercher :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    nasm -f bin nasm -f bin VBR_FAT12.asm -o floppy.img
    qemu-system-i386.exe -fda floppy.img
    j'ai également essayé avec virtualbox (créer une machine other/unknown, ajouter un floppy tout en haut de la liste, en virant le controleur ide par défaut au besoin, charger l'img, lancer la vm), tout fonctionne à priori au mieux de ce qu'on peut faire avec ce que tu nous donne (qemu & vbox), c'est à dire l'affichage de :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    ASTERIX BOOTDISK
    File not found: /LOADER
    The system will be restart in 3 seconds.
    ps: ce serait plutôt restarted ;o)

  3. #3
    Membre éclairé

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2012
    Messages
    359
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2012
    Messages : 359
    Points : 738
    Points
    738
    Billets dans le blog
    2
    Par défaut
    Effectivement, il manque le loader. Pour l'ajouter à l'image, il faut utiliser la commande mount :

    Sous Linux :
    Code sh : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    mount -t msdos -o loop /chemin/vers/l/image /mnt/fdd0
    cp /chemin/vers/le/loader /mnt/fdd0/LOADER
    umount -t msdos /mnt/fdd0

    Dans le code, il y a une macro pour tester les deux cas.

    PS : mon anglais est plus que douteux, il est fort possible que tu aies raison.
    Fichiers attachés Fichiers attachés
    Le gourou dicte la ligne (de commande) à suivre ...

    Penser à lire le Tutoriel Batch ou a consulter la FAQ Batch et ses contributions,
    ainsi que le Cour sur la ligne de commande et des scripts

  4. #4
    Expert éminent Avatar de BufferBob
    Profil pro
    responsable R&D vidage de truites
    Inscrit en
    Novembre 2010
    Messages
    3 035
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : responsable R&D vidage de truites

    Informations forums :
    Inscription : Novembre 2010
    Messages : 3 035
    Points : 8 400
    Points
    8 400
    Par défaut
    j'ai regardé un peu plus en détail,

    le code tourne, il se reloge convenablement en 0:600, ce qui occasionne (jmp 0x0:reloc(_load_dvr)) un jmp 0:65f, jusque là pas de souci
    le problème survient dans le _jmp_loader
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    _start:
    (...)
       _jmp_loader:
          mov dl, [bpbaddr(BS_DrvNum)]     ; Retore disk ID
          jmp 0x0000:VBR_LOADADDR          ; jump in loader file
    concrètement l'opcode est jmp 0:7c00, sauf qu'il n'y a rien en 0x7c00, donc pour moi le secteur n'est simplement pas chargé, et la vérification d'erreur peut-être pas adéquate (le jc short .readdisk c'est bien ça ?)

    j'ai pas investigué plus (je me suis surtout contenté de tracer le code en vérité ici), pour debugger j'ai utilisé gdb et qemu (mais c'est possiblement faisable avec vbox également)

    d'un coté (bind sur localhost) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    qemu-system-i386 -boot a -fda floppy.img -S -gdb tcp:0.0.0.0:1234,ipv4
    de l'autre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    $ gdb -q
    (gdb) set architecture i8086
    (gdb) set disassembly-flavor intel
    (gdb) target remote parsifal:1234
    (gdb) break *0x7c00
    (gdb) continue
    (gdb) x/40i 0x7c41
    etc.
    si besoin je continuerai d'investiguer dans la soirée je pense

  5. #5
    Expert éminent Avatar de BufferBob
    Profil pro
    responsable R&D vidage de truites
    Inscrit en
    Novembre 2010
    Messages
    3 035
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : responsable R&D vidage de truites

    Informations forums :
    Inscription : Novembre 2010
    Messages : 3 035
    Points : 8 400
    Points
    8 400
    Par défaut
    bon, c'est bien compliqué tout ça, j'ai tracé quasiment l'intégralité du code, concrètement au moment de charger le fichier ça charge bien quelque chose qui écrase la mémoire en 0x7c00, mais ce n'est pas le fichier
    je suis pas du tout expert de la FAT12 mais j'ai l'impression que l'entrée dans la FAT pour déterminer les clusters utilisés par le fichier est un peu étrange:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    0xa00:  0xf0    0xff    0xff    0x00    0xf0    0xff    0x00    0x00
    ce qui revient à ff0 - fff - 000 - fff, je sais pas comment l’interpréter, la première entrée est celle du volume ça ok, mais la deuxième sous-entendrait qu'il s'agit d'un cluster vide ?

    tu observes la même chose ? tu as avancé de ton côté ?

  6. #6
    Membre confirmé Avatar de bifur
    passe le balais et l'aspirateur
    Inscrit en
    Mars 2008
    Messages
    314
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations professionnelles :
    Activité : passe le balais et l'aspirateur

    Informations forums :
    Inscription : Mars 2008
    Messages : 314
    Points : 550
    Points
    550
    Par défaut
    est ce que vous êtes au courant que les deux premier cluster n'existent pas? parce que sinon vous chargez peut être deux cluster plus loin

    edit: après un bon repas et une lecture vite faite des codes source fournit il ne me semble pas que vous ayez prit en compte le fait que les deux premier cluster (le 0 et le 1) n'existe pas dans la zone de donnée, car 0= cluster vide et 1=cluster réservé
    ....le premier cluster dans la zone de donnée est donc le cluster 2

    un mauvais calcul de la taille occupé par le repertoire racine peut aussi créer des problème (le parametre a l'offset 17 est le nombre d'entrée du repertoire (32 octets) et pas le nombre de secteur du répertoire racine)

    je vous refilerait bien le code source de mon vieux amorceur pour disquette mais après vérification il n'y as aucun commentaire (erreur de jeunesse) et il ne vous aidera pas vraiment

  7. #7
    Membre éclairé

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2012
    Messages
    359
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2012
    Messages : 359
    Points : 738
    Points
    738
    Billets dans le blog
    2
    Par défaut
    @bifur: J'ai bien réservé deux clusters dans la FAT donc pas de problème avec ça.

    @BufferBob: il semberai que la commande mount ajoute mal les fichiers comme je suis sous Windows j'utilise WinImage
    Le gourou dicte la ligne (de commande) à suivre ...

    Penser à lire le Tutoriel Batch ou a consulter la FAQ Batch et ses contributions,
    ainsi que le Cour sur la ligne de commande et des scripts

  8. #8
    Expert éminent Avatar de BufferBob
    Profil pro
    responsable R&D vidage de truites
    Inscrit en
    Novembre 2010
    Messages
    3 035
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : responsable R&D vidage de truites

    Informations forums :
    Inscription : Novembre 2010
    Messages : 3 035
    Points : 8 400
    Points
    8 400
    Par défaut
    Citation Envoyé par InitSreen Voir le message
    @BufferBob: il semberai que la commande mount ajoute mal les fichiers comme je suis sous Windows j'utilise WinImage
    j'ai utilisé mount sous Linux perso, apparemment elle s'y retrouve (copie dans les deux sens ok), VirtualClone Drive sous Windows en revanche fait mine de monter le volume mais ne spawn pas un nouveau lecteur comme il devrait, je ne sais pas quoi penser...

    à mon avis il faudrait être sûr de la structure de la FAT avant de chercher une erreur éventuelle du côté du code, si tu as une image valide hésite pas à la mettre en pj évidemment

    Citation Envoyé par bifur Voir le message
    est ce que vous êtes au courant que les deux premier cluster n'existent pas? parce que sinon vous chargez peut être deux cluster plus loin

    edit: après un bon repas et une lecture vite faite des codes source fournit il ne me semble pas que vous ayez prit en compte le fait que les deux premier cluster (le 0 et le 1) n'existe pas dans la zone de donnée, car 0= cluster vide et 1=cluster réservé
    ....le premier cluster dans la zone de donnée est donc le cluster 2
    à l'exécution le fichier semble se trouver sur le cluster n°3, multiplié par 1.5 il vérifie donc si j'ai tout bien compris la valeur à 0xa00 + 4 (cf plus haut) et tombe à priori sur 000 (cluster vide)

  9. #9
    Membre confirmé Avatar de bifur
    passe le balais et l'aspirateur
    Inscrit en
    Mars 2008
    Messages
    314
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations professionnelles :
    Activité : passe le balais et l'aspirateur

    Informations forums :
    Inscription : Mars 2008
    Messages : 314
    Points : 550
    Points
    550
    Par défaut
    si votre fichier commence par le cluster n°3 et que la table montrée plus haut est bien l'image de la table fat, le cluster numéros 3 est bien marqué comme étant une fin de fichier (0FFFh) c'est le cluster numéros 2 qui est marqué comme vide

  10. #10
    Expert éminent Avatar de BufferBob
    Profil pro
    responsable R&D vidage de truites
    Inscrit en
    Novembre 2010
    Messages
    3 035
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : responsable R&D vidage de truites

    Informations forums :
    Inscription : Novembre 2010
    Messages : 3 035
    Points : 8 400
    Points
    8 400
    Par défaut
    Citation Envoyé par bifur Voir le message
    si votre fichier commence par le cluster n°3 et que la table montrée plus haut est bien l'image de la table fat, le cluster numéros 3 est bien marqué comme étant une fin de fichier (0FFFh) c'est le cluster numéros 2 qui est marqué comme vide
    pardon, je me suis planté en l'écrivant, l'occupation du fichier est censée être décrite à partir de la 3e entrée dans la table, donc on tombe sur 000 ou sur fff (selon qu'on commence à 0 ou 1 j'imagine) mais reste qu'à l'arrivée on ne sait pas quel(s) cluster(s) occupe le fichier, ou alors j'ai raté un morceau dans la spec

    sauf erreur, une entrée valide devrait indiquer une valeur du genre f02 ou f03 par exemple, non ?

  11. #11
    Membre confirmé Avatar de bifur
    passe le balais et l'aspirateur
    Inscrit en
    Mars 2008
    Messages
    314
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations professionnelles :
    Activité : passe le balais et l'aspirateur

    Informations forums :
    Inscription : Mars 2008
    Messages : 314
    Points : 550
    Points
    550
    Par défaut
    dans la table FAT on commence par l'entrée 0 (comme la plupart des fois en logique informatique) donc le cluster 3 est bien marquée comme étant la fin d'un fichier (si c'est un fichier de moins de 512 octet c'est normal)

    selon la spec que j'ai uttilisé (https://fr.wikipedia.org/wiki/File_Allocation_Table qui est très bien) 0F02h et F03h renvoie a des numéros de cluster suivant du fichier, donc ça m'étonnerait que l'on les rencontre ici

    ce cluster n°3 doit se trouver a l'adresse: tailleMBR+tailleFAT*NombreFAT+entréeROOT*32+octetCluster*(NumerosCluster-2)

    avec:
    tailleMBR = 200h (un secteur sur un disquette)
    tailleFAT = valeur du word a l'adresse 22
    NombreFAT = valeur de l'octet a l'adresse 16 (2 habituellement)
    entréeROOT = valeur du word a l'adresse 17 (c'est le nombre de fichier dans le repertoire racine en gros)
    octetCluster = 200h sur une disquette habituellement
    NumérosCluster = 3 (pour cet exemple)

  12. #12
    Membre éclairé

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2012
    Messages
    359
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2012
    Messages : 359
    Points : 738
    Points
    738
    Billets dans le blog
    2
    Par défaut
    La commande mount décalle d'un cluster le fichier dans l'image par rapport à WinImage, pourquoi ?!? Hormis ça l'image
    fonctionne visiblement.

    Avec le code suivant pour le LOADER (en pièce jointe) et en l'ajoutant aux images avec WinImage, j'obtiens les deux images
    selon que j'utilise la macro IMG_5C00 ou la macro IMG_7C00. Celle assemblé avec la macro IMG_5C00 fonctionne sous
    VirtualBox et celle assemblé avec la macro IMG_7C00 n'affiche que les adresses sans texte ni retour à la ligne.

    Alors que dans le code de l'image le saut vers le LOADER est codé en dur (VBR_LOADADDR=0x7C00) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    _jmp_loader:
        mov dl, [bpbaddr(BS_DrvNum)]    ; Retore disk ID
        jmp 0x0000:VBR_LOADADDR         ; jump in loader file
    le LOADER s'exécute toujours à l'adresse 0x0000:0x5C00 (chez moi sous VirtualBox).

    Sinon le reste doit fonctionner, sans quoi le LOADER ne s'exécuterait jamais ...

    Plus précisément la question du post était:
    Pourquoi VirtualBox charge et exécute le code à l'adresse 0x0000:0x5C00 alors que c'est l'adresse 0x0000:0x7C00 qui est spécifié en dur (donc pas calcullé ... ) ?
    Fichiers attachés Fichiers attachés
    Le gourou dicte la ligne (de commande) à suivre ...

    Penser à lire le Tutoriel Batch ou a consulter la FAQ Batch et ses contributions,
    ainsi que le Cour sur la ligne de commande et des scripts

  13. #13
    Membre confirmé Avatar de bifur
    passe le balais et l'aspirateur
    Inscrit en
    Mars 2008
    Messages
    314
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations professionnelles :
    Activité : passe le balais et l'aspirateur

    Informations forums :
    Inscription : Mars 2008
    Messages : 314
    Points : 550
    Points
    550
    Par défaut
    j'avoue ne pas comprendre a quoi sert ceci (n'étant pas utilisateur de nasm):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    %define	IMG_5C00
    ;%define	IMG_7C00
    %define	LOADADDR				0x7C00
     
    %ifdef IMG_5C00
    	%define	laddr(x)			(0x5C00 + x)
    %elifdef IMG_7C00
    	%define	laddr(x)			(LOADADDR + x)
    %endif

  14. #14
    Membre éclairé

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2012
    Messages
    359
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2012
    Messages : 359
    Points : 738
    Points
    738
    Billets dans le blog
    2
    Par défaut
    À calculer l'adresse des données, dans le cas de la macro IMG_05C00 : l'adresse encodée au moment du linkage sera 0x5C00 + le décalage entre le début du fichier binaire et le label x et pour IMG_7C00 se sera 0x7C00 + le décalage entre le début du fichier binaire et le label x. J'aurais tout aussi bien pu utiliser org 0x7C00 ou org 0X5C00.
    Le gourou dicte la ligne (de commande) à suivre ...

    Penser à lire le Tutoriel Batch ou a consulter la FAQ Batch et ses contributions,
    ainsi que le Cour sur la ligne de commande et des scripts

  15. #15
    Membre confirmé Avatar de bifur
    passe le balais et l'aspirateur
    Inscrit en
    Mars 2008
    Messages
    314
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations professionnelles :
    Activité : passe le balais et l'aspirateur

    Informations forums :
    Inscription : Mars 2008
    Messages : 314
    Points : 550
    Points
    550
    Par défaut
    pourquoi n'as tu pas utillisé org 7C00h a la place? c'est quand me moin long a ecrire!

    ça m'explique pas mal de truc mais je ne voie toujours pas pourquoi ça bug.....a part peut être le fait que tu fait pointer ta pile sur le début du code (il vaut mieux bien les séparer)


    sinon pour economiser un peu de place dans ton code (c'est important la place dans un amorçeur) je te conseille de remplacer _put par ça:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    _put:          ;affiche la chaine ASCIIZ en ds:si   
    push ax
    push bx
    push si
    mov ah,0Eh
    mov bl,0Ah
    b_put:
    mov al,[si]
    cmp al,0
    je fin_put
    int 10h
    inc si
    jmp b_put
    fin_put:
    pop si
    pop bx
    pop ax
    ret
    je ne me souviens plus si ça prend en compte les carac spéciaux mais il me semble que oui

  16. #16
    Membre éclairé

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2012
    Messages
    359
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2012
    Messages : 359
    Points : 738
    Points
    738
    Billets dans le blog
    2
    Par défaut
    Le code se relocalise pour ne pas être écrasé par le loader qu'il charge à l'adresse 0x07C00. En utilisant org 0x00 et des macros pour calculer l'adresse des choses, cela permet d'avoir une adresse de base à laquelle on ajoute le label voulue (le décallage depuis le début du fichier: org 0x00 + <label>)
    Le gourou dicte la ligne (de commande) à suivre ...

    Penser à lire le Tutoriel Batch ou a consulter la FAQ Batch et ses contributions,
    ainsi que le Cour sur la ligne de commande et des scripts

  17. #17
    Membre confirmé Avatar de bifur
    passe le balais et l'aspirateur
    Inscrit en
    Mars 2008
    Messages
    314
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations professionnelles :
    Activité : passe le balais et l'aspirateur

    Informations forums :
    Inscription : Mars 2008
    Messages : 314
    Points : 550
    Points
    550
    Par défaut
    j'ai passé un peu de temps a me gratter la tête pour comprendre ce qui as pu merder et je ne voie pas.....
    est ce que tu pourrait me passer les binaires de tes deux image disque (une avec 7C00 et l'autre avec 5C00) pour que je puisse tester ça sur des machines réel? peut être que virtualbox merdois mais j'y croie pas trop

    en tout cas sacrée boulot! par contre je ne comprend pas pourquoi vouloir faire obligatoirement charger LOADER en 7C00? est ce que c'est pour faire du multiboot sans grub mais avec disquette?

  18. #18
    Expert éminent Avatar de BufferBob
    Profil pro
    responsable R&D vidage de truites
    Inscrit en
    Novembre 2010
    Messages
    3 035
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : responsable R&D vidage de truites

    Informations forums :
    Inscription : Novembre 2010
    Messages : 3 035
    Points : 8 400
    Points
    8 400
    Par défaut
    Citation Envoyé par bifur Voir le message
    est ce que tu pourrait me passer les binaires de tes deux image disque (une avec 7C00 et l'autre avec 5C00) pour que je puisse tester ça sur des machines réel? peut être que virtualbox merdois mais j'y croie pas trop
    perso avec qemu j'ai rien observé de similaire, je sais pas d'où sort cette valeur 0x5c00 honnêtement, pour moi le code se reloge en 0:0600, le seul moment où ça viande c'est au moment de charger le fichier, la zone mémoire en 0:7c00 (qui contenait initialement le loader avant qu'il soit relogé) est comme effacée (remplie de zéros donc), ce qui me laissait supposer que ce n'était pas le bon secteur de la disquette qui était copié, et j'ai pas eu l'occasion de faire d'autres tests depuis

    du coup ouai, ça m'intéresse aussi ^^

  19. #19
    Membre éclairé

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2012
    Messages
    359
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2012
    Messages : 359
    Points : 738
    Points
    738
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par BufferBob
    le seul moment où ça viande c'est au moment de charger le fichier, la zone mémoire en 0:7c00 (qui contenait initialement le loader avant qu'il soit relogé) est comme effacée (remplie de zéros donc), ce qui me laissait supposer que ce n'était pas le bon secteur de la disquette qui était copié, et j'ai pas eu l'occasion de faire d'autres tests depuis
    il y a peu-être quelques choses de ce coté là, je vais tout bien relire voir si je ne me suis pas trompé quelques part.

    Citation Envoyé par bifur
    par contre je ne comprend pas pourquoi vouloir faire obligatoirement charger LOADER en 7C00? est ce que c'est pour faire du multiboot sans grub mais avec disquette?
    non, cela aurais tout aussi bien pût être une autre adresse.

    Voilà les images
    Fichiers attachés Fichiers attachés
    Le gourou dicte la ligne (de commande) à suivre ...

    Penser à lire le Tutoriel Batch ou a consulter la FAQ Batch et ses contributions,
    ainsi que le Cour sur la ligne de commande et des scripts

  20. #20
    Membre confirmé Avatar de bifur
    passe le balais et l'aspirateur
    Inscrit en
    Mars 2008
    Messages
    314
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations professionnelles :
    Activité : passe le balais et l'aspirateur

    Informations forums :
    Inscription : Mars 2008
    Messages : 314
    Points : 550
    Points
    550
    Par défaut
    bon, j'ai essayé les deux image fournis sur machine réelle (un vieux pentium2 qui me sert pour tester mon ptit projet d'OS) et a part le message "ASTERIX BOOTDISK" rien d'autre ne s'affiche
    j'ai relu et rerelu le code pour voir si je voyait une souce d'erreur mais je ne voie rien, des chose estrange que je n'aurait pas fait comme ça, mais rien qui me semble être la source de l'erreur

    je met ici mon logiciel d'amorçage créer il y a quelques années pour rendre amorçable une disquette, crée pour dos (executable.com) le programme ne recrée pas une image disque complète mais modifie le code d'amorçage de la disquette qui est dans le lecteur sans altérer le système de fichier. le code d'amorçage cherche le fichier SYST.BAZ dans le répertoire racine et le charge a l'adresse 5000h:0000h

    si c'est une copie de secteur vide comme le pense Buffer Bob ça viens surement d'un simple décalage de secteur, je suis en train d'essayer de comprendre comment tu procède pour convertir un numéros de secteur en coordonné CHS, tu arrive probablement a trouver l'entrée de ton fichier "LOADER" dans le répertoire root car lors de la lecture tu lit plusieur secteur a la fois (et par chance tu lit le premier secteur de répertoire root) mais lors du chargement de LOADEr ça ne fonctionne pas. il faudrait voir si lors du chargement du répertoire root il n'y as pas de décalage de secteur(on lirait une partie de la deuxième table FAT avant de lire le début du repertoire)
    Fichiers attachés Fichiers attachés

Discussions similaires

  1. Réponses: 1
    Dernier message: 24/07/2007, 16h11
  2. Virtual box+ DVD restauration XP
    Par goule71 dans le forum Installation
    Réponses: 2
    Dernier message: 05/07/2007, 18h22
  3. Virtualisation avec Virtual Box
    Par belaggoun2000 dans le forum Administration système
    Réponses: 3
    Dernier message: 23/06/2007, 12h07
  4. problème avec Virtual Box
    Par belaggoun2000 dans le forum Applications et environnements graphiques
    Réponses: 6
    Dernier message: 19/06/2007, 12h09
  5. Virtual Box : Ou est stocké le lecteur
    Par goule71 dans le forum Applications et environnements graphiques
    Réponses: 4
    Dernier message: 16/06/2007, 17h12

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo