Pregunta

Tengo un proyecto que fue escrito en BASIC. No estoy seguro de la razón exacta, pero la aplicación no funcionará excepto cuando se ejecute desde un sistema de archivos FAT-16.

Prefiero intentar configurar un entorno que admita esta aplicación en un sistema operativo moderno (Vista / XP) en lugar de reescribirla.

¿Alguien sabe cómo hacer que una aplicación como esta se ejecute en XP / Vista a través de algún tipo de cambio de código (al código BÁSICO) o el emulador FAT-16? (si tal cosa existe)?

¿Fue útil?

Solución

Puede intentar ejecutarlo a través de un DOSBOX :

  

DOSBox emula una PC Intel x86,   Completa con sonido, gráficos, mouse,   joystick, modem, etc., necesario para   ejecutando muchas aplicaciones antiguas de MS-DOS que   simplemente no se puede ejecutar en PC modernas y   sistemas operativos, como Microsoft   Windows XP, Windows Vista, Linux y   FreeBSD

(de su Wiki )

Lo uso desde hace varios años. Es bueno, estable y bastante robusto. También tiene varias GUI de terceros para facilitar tu vida

Otros consejos

Además de mantener viva la aplicación en un entorno virtualizado, como ya se ha sugerido, lo primero que se debe hacer es averiguar por qué el código parece requerir FAT-16.

Si la aplicación (o su tiempo de ejecución) es particularmente mala, el requisito de FAT-16 puede deberse al hecho de que está intentando realizar una E / S directa en el disco, sin pasar por el sistema operativo. Si el código BÁSICO en sí mismo está tratando de realizar ese truco en particular, debería ver muchas CALL, PEEKs, POKEs o incluso la ocasional instrucción IN y OUT en las rutinas de E / S. Determinar qué hace el tiempo de ejecución es más difícil: si es de Microsoft, basado en DOS y no demasiado antiguo (por ejemplo, GWBASIC o QuickBASIC / PDS), o basado en Windows, debería estar bien, sin embargo.

De todos modos, si la aplicación o el tiempo de ejecución intentan realizar una E / S directa en el disco, se pierde: será prácticamente imposible hacer que funcionen las cosas en un sistema operativo moderno sin cambios de código extensos, de tipo reescritura.

Si la aplicación está utilizando las instalaciones BÁSICAS normales para entrada y salida (por ejemplo, ABRIR " archivo " PARA cualquier AS # 1), y el tiempo de ejecución también utiliza las interfaces normales del sistema operativo, la razón más probable es que solo funcione en FAT -16 es que se confunde por completo con los nombres de archivo largos.

Lo primero que debe intentar sería colocar la aplicación en un directorio con un nombre corto (por ejemplo, c: \ myapp) y ver qué sucede a continuación. Es posible que simplemente funcione: de lo contrario, deberías poder averiguar qué está pasando al revisar el código BÁSICO (suponiendo que un depurador forma parte de su entorno de ejecución).

Sin más información sobre el intérprete / compilador exacto en el que se ejecuta su aplicación, es imposible responder a su pregunta con más detalle. Si las respuestas hasta ahora no han sido útiles, es posible que desee editar su pregunta para incluir esta información.

Ejecute una versión anterior de Windows en una máquina virtual VMWare, ejecutándose en un sistema operativo moderno.

Ejecútelo desde una memoria flash, unidad zip o cualquier medio extraíble que tenga.
Windows XP formateó una unidad flash USB de 1GB como FAT sin problemas, no se necesitaban herramientas adicionales.
Además, si la aplicación es realmente malvada , es de esperar, con suerte, limitar su maldad por los límites de la unidad.

Dependiendo del entorno: aún debería ser posible crear sistemas de archivos Fat-16 en un sistema operativo moderno, es posible que solo necesite herramientas adicionales como Acronis DiskDirector de incluso alguna variante fdisk de Linux.

Solo tenga en cuenta que FAT-16 está limitado a un tamaño de partición de 2 GB.

Pero como se dijo antes: mejor averiguar POR QUÉ. Suena como una especie de WTF-Copy-Protection.

Respaldo la sugerencia de @ eugensk00, tenemos un software de instrumento un poco loco que no se guardará en un disco duro NTFS, sino que se guardará en un pequeño dispositivo de memoria (1GB) ...

Es posible que pueda importar el código directamente en VB.NET (aunque seguramente requerirá algunas modificaciones). Luego, puede reemplazar las llamadas IO del archivo original de la aplicación (que es casi seguro que sea su problema) con llamadas VB.NET, lo que lo sacará del problema FAT16.

También tenga en cuenta que algunos programas de la vieja escuela primero verifican si hay suficiente espacio en el disco antes de escribir archivos, lo que resulta en problemas extravagantes si la unidad es tan grande que desborda el contador de 16 bits que aparentemente está usando. (Si ese es el caso, entonces funcionará o no funcionará, dependiendo de la naturaleza del desbordamiento).

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top