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

Turbo Pascal Discussion :

[TP] NTVDM : Erreur CPU


Sujet :

Turbo Pascal

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Janvier 2006
    Messages
    42
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 42
    Par défaut [TP] NTVDM : Erreur CPU
    Salut,

    Je veux utiliser deux unités ensemble: un unit SVGA (qui me donne 256 couleurs) et un unit pour faire marcher la souris. Ils marchent bien tout seuls mais quand je les utitise ensemble dans un programme, ca donne un message d'erreur :

    "The NTVDM CPU has encountered an illegal instruction
    CS:cd02 IP:0000 OP:ff 3f ff 1f ff"

    et je doit fermer TP7.


    Ca marchait bien en Windows ME. Maintenant j'ai Windows XP professional. Qui peut m'aider?

  2. #2
    Responsable Pascal, Lazarus et Assembleur


    Avatar de Alcatîz
    Homme Profil pro
    Ressources humaines
    Inscrit en
    Mars 2003
    Messages
    8 056
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ressources humaines
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2003
    Messages : 8 056
    Billets dans le blog
    2
    Par défaut
    Bonjour !

    La machine virtuelle (NTVDM.EXE) peine parfois à émuler certains appels directs au hardware ou à des interruptions du BIOS.
    Sans avoir accès aux sources en question, difficile de répondre.
    Règles du forum
    Cours et tutoriels Pascal, Delphi, Lazarus et Assembleur
    Avant de poser une question, consultez les FAQ Pascal, Delphi, Lazarus et Assembleur
    Mes tutoriels et sources Pascal

    Le problème en ce bas monde est que les imbéciles sont sûrs d'eux et fiers comme des coqs de basse cour, alors que les gens intelligents sont emplis de doute. [Bertrand Russell]
    La tolérance atteindra un tel niveau que les personnes intelligentes seront interdites de toute réflexion afin de ne pas offenser les imbéciles. [Fiodor Mikhaïlovitch Dostoïevski]

  3. #3
    Membre averti
    Inscrit en
    Janvier 2006
    Messages
    42
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 42
    Par défaut
    Salut Alcatîz ,

    Le probleme est que je n'ai pas la source de l'unité SVGA, j'ai seulement le fichier TPU (il date de 1995). Le reste du programme (un sorte de photoshop simple) consiste de plusieur fichiers source (environ 4) et puis encore 3 autres fichiers. On peut importer et manipuler des photos GIF de 256 couleurs.

    J'ai decouvre que les deux unités peuvent marcher ensemble quand même dans un autre programme simple. Mais pas dans le photoshop...

  4. #4
    Responsable Pascal, Lazarus et Assembleur


    Avatar de Alcatîz
    Homme Profil pro
    Ressources humaines
    Inscrit en
    Mars 2003
    Messages
    8 056
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ressources humaines
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2003
    Messages : 8 056
    Billets dans le blog
    2
    Par défaut
    Je n'avais pas accordé suffisamment d'attention au message d'erreur :
    Citation Envoyé par Flagada Voir le message
    The NTVDM CPU has encountered an illegal instruction
    CS:cd02 IP:0000 OP:ff 3f ff 1f ff
    L'interruption 02h (signification des deux octets CD02) correspond à une interruption non masquable déclenchée par un défaut dans la RAM.
    Le compilateur n'a pas volontairement codé ces deux octets en tant qu'instruction. Et tu dis que le programme compilé tourne sans erreur sur une vraie machine à base de "DOS " (Win ME)...

    Il n'est pas toujours facile de déboguer du code 16 bits sous XP. Pour trouver l'instruction qui s'exécute différemment dans NTVDM, tu pourrais d'abord utiliser un éditeur hexadécimal pour repérer la portion de code qui précède les octets CD02 et ensuite utiliser un débogueur comme SSD (Servile Software Decoder) pour faire tourner le programme jusqu'à la portion de code repérée. Mais pour remonter du code machine vers le source Pascal, il te faudra de la chance et de la patience.

    Peut-être que d'autres auront de meilleures idées ?
    Règles du forum
    Cours et tutoriels Pascal, Delphi, Lazarus et Assembleur
    Avant de poser une question, consultez les FAQ Pascal, Delphi, Lazarus et Assembleur
    Mes tutoriels et sources Pascal

    Le problème en ce bas monde est que les imbéciles sont sûrs d'eux et fiers comme des coqs de basse cour, alors que les gens intelligents sont emplis de doute. [Bertrand Russell]
    La tolérance atteindra un tel niveau que les personnes intelligentes seront interdites de toute réflexion afin de ne pas offenser les imbéciles. [Fiodor Mikhaïlovitch Dostoïevski]

  5. #5
    Membre averti
    Inscrit en
    Janvier 2006
    Messages
    42
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 42
    Par défaut
    Citation Envoyé par Alcatîz Voir le message
    Et tu dis que le programme compilé tourne sans erreur sur une vraie machine à base de "DOS " (Win ME)...
    Ben oui. Ca marchait bien.

    L'interruption 02h (signification des deux octets CD02) correspond à une interruption non masquable déclenchée par un défaut dans la RAM.
    Le compilateur n'a pas volontairement codé ces deux octets en tant qu'instruction.

    Il n'est pas toujours facile de déboguer du code 16 bits sous XP. Pour trouver l'instruction qui s'exécute différemment dans NTVDM, tu pourrais d'abord utiliser un éditeur hexadécimal pour repérer la portion de code qui précède les octets CD02 et ensuite utiliser un débogueur comme SSD (Servile Software Decoder) pour faire tourner le programme jusqu'à la portion de code repérée. Mais pour remonter du code machine vers le source Pascal, il te faudra de la chance et de la patience.
    Hmmm... Tout cela me semble tres dificile...
    J´ai essaye autre chose:

    Quand je boot en DOS (Win98, winME) ca marche "assez" bien. Le seul probleme est que le souris ne vas pas plus bas que 199 pixels, bien que lécran est 479 pixels...?

  6. #6
    Rédacteur/Modérateur
    Avatar de M.Dlb
    Inscrit en
    Avril 2002
    Messages
    2 466
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Avril 2002
    Messages : 2 466
    Par défaut
    Ca dépend de la résolution que tu as demandé, non ? Ca utilise peut-être la résolution 320*200, auquel cas, tu devras la changer pour avoir celle que tu désires

  7. #7
    Membre averti
    Inscrit en
    Janvier 2006
    Messages
    42
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 42
    Par défaut
    Non, la resolution est bien 639 x 479. L'écran est tout a fait normal, 256 couleurs, et le souris fonctionne. Seulement, tu peut pas atteindre la moitee bas de l'écran avec le souris.

  8. #8
    Membre confirmé Avatar de Transgarp
    Profil pro
    Inscrit en
    Février 2008
    Messages
    99
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Février 2008
    Messages : 99
    Par défaut
    Je crois avoir trouvé une solution de ce petit problème de NTVDM

    Je compilais en {$F-}

    Ce soir j'ai essayé en {$F+} Force far call

    Tout semble bien fonctionner maintenant

Discussions similaires

  1. temps cpu / Canal d'erreur
    Par _ash_ dans le forum Shell et commandes GNU
    Réponses: 4
    Dernier message: 30/04/2009, 15h10
  2. Réponses: 12
    Dernier message: 06/04/2009, 12h07
  3. Problème erreur oracle (CPU)
    Par Bibi dans le forum Bases de données
    Réponses: 1
    Dernier message: 13/01/2008, 11h28
  4. Réponses: 1
    Dernier message: 30/09/2007, 13h26
  5. [CPU] Erreur : CPU over speed
    Par charaf dans le forum Composants
    Réponses: 4
    Dernier message: 02/10/2006, 13h43

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