Question

J'ai un projet écrit en BASIC. Je ne suis pas sûr de la raison exacte, mais l'application ne fonctionnera pas sauf si elle est exécutée à partir d'un système de fichiers FAT-16.

Je préférerais plutôt configurer et créer un environnement compatible avec cette application dans un système d'exploitation moderne (Vista / XP) plutôt que de la réécrire.

Est-ce que quelqu'un sait comment faire fonctionner une telle application sous XP / Vista en modifiant le code (en code BASIC) ou en FAT-16 "émulateur"? (si une telle chose existe)?

Était-ce utile?

La solution

Vous pouvez essayer de l'exécuter via un DOSBOX :

  

DOSBox émule un PC Intel x86,   complète avec son, graphisme, souris,   manette de jeu, modem, etc., nécessaires pour   exécuter de nombreuses anciennes applications MS-DOS   ne peut tout simplement pas être exécuté sur des PC modernes et   systèmes d'exploitation, tels que Microsoft   Windows XP, Windows Vista, Linux et   FreeBSD

(à partir de leur Wiki )

Je l'utilise depuis plusieurs années maintenant. C'est bon, stable et assez robuste. Possède également plusieurs interfaces graphiques tierces pour vous faciliter la vie.

Autres conseils

Hormis le maintien de l'application dans un environnement virtualisé, comme cela a déjà été suggéré, la première chose à faire serait de déterminer pourquoi le code semble nécessiter FAT-16.

Si l'application (ou son environnement d'exécution) est particulièrement néfaste, l'exigence FAT-16 peut provenir du fait qu'elle tente d'effectuer une E / S de disque directe en contournant le système d'exploitation. Si le code BASIC lui-même tente de tirer cette cascade particulière, vous devriez voir apparaître de nombreux appels, appels, PEEK, POKE ou même les instructions occasionnelles IN et OUT dans les routines d'E / S. Il est plus difficile de déterminer ce qu’est le moteur d’exécution: s’il s’agit de Microsoft, basé sur DOS et pas trop ancien (par exemple, GWBASIC ou QuickBASIC / PDS), ou basé sur Windows, cela devrait être OK, cependant.

Quoi qu’il en soit, si l’application ou le moteur d’exécution tente d’effectuer une E / S directe sur disque, vous perdez: il sera quasiment impossible de faire fonctionner les choses sur un système d’exploitation moderne sans modifications majeures du code.

Si l'application utilise les fonctionnalités BASIC normales pour l'entrée et la sortie (par exemple, le fichier OPEN "quel que soit l'AS # 1), et que l'exécution utilise également les interfaces de système d'exploitation normales, la raison la plus probable pour laquelle elle fonctionne uniquement en FAT -16, c’est que les noms de fichiers longs l’embrouillent profondément.

La première chose à faire serait de placer l’application dans un répertoire portant un nom court (par exemple, c: \ myapp) et de voir ce qui se passera ensuite. Cela fonctionne peut-être simplement: sinon, vous devriez être en mesure de comprendre ce qui se passe en parcourant le code BASIC (supposer avec charité qu'un débogueur fait partie de son environnement d'exécution).

Sans plus d'informations sur l'interpréteur / compilateur exact dans lequel votre application fonctionne, il est impossible de répondre à votre question plus en détail. Si les réponses ne vous ont pas encore aidé, vous pouvez modifier votre question pour inclure ces informations.

Exécuter une ancienne version de Windows sur une machine virtuelle VMWare, elle-même exécutée sur un système d'exploitation moderne.

Utilisez-le à partir d'un lecteur flash, zip ou de tout autre support amovible.
Windows XP a formaté un lecteur flash USB de 1 Go au format FAT sans aucun problème, aucun outil supplémentaire n’était nécessaire.
En outre, si l’application est vraiment diabolique , vous pouvez donc, espérons-le, en limiter les conséquences aux limites du lecteur.

En fonction de l’environnement: il devrait toujours être possible de créer des systèmes de fichiers Fat-16 sur un système d’exploitation moderne. Vous aurez peut-être simplement besoin d’outils supplémentaires comme Acronis DiskDirector, même de la variante fdisk de Linux.

N'oubliez pas que FAT-16 est limité à une taille de partition de 2 Go.

Mais comme dit précédemment: Mieux vaut savoir POURQUOI. Cela ressemble à une sorte de protection WTF contre la copie.

Je souscris à la suggestion de @ eugensk00, nous avons un logiciel d’instrument légèrement farfelu qui ne sauvegarde pas sur un disque dur NTFS, mais sur une petite clé USB (1 Go) ...

Vous pourrez peut-être importer le code directement dans VB.NET (bien que cela nécessiterait presque certainement quelques modifications). Vous pouvez alors remplacer les appels IO de l'application d'origine (qui sont certainement votre problème) par des appels VB.NET, ce qui vous permet de résoudre le problème FAT16.

Notez également que certains programmes de la vieille école vérifient d’abord si l’espace disque est suffisant avant d’écrire des fichiers, ce qui entraîne des problèmes délirants si le lecteur est si gros qu’il déborde du compteur 16 bits qu’il utilise apparemment. (Si tel est le cas, cela fonctionnera ou ne fonctionnera pas, en fonction de la nature du débordement).

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top