Domanda

Ho un progetto che è stato scritto in BASIC. Non sono sicuro del motivo esatto, ma l'app non funzionerà tranne quando viene eseguita da un file system FAT-16.

Preferirei provare a configurare un ambiente che supporterà questa app in un sistema operativo moderno (Vista / XP) invece di riscriverla.

Qualcuno sa come far funzionare un'app come questa in XP / Vista attraverso un qualche tipo di cambio di codice (al codice BASIC) o FAT-16 "emulatore"? (se esiste una cosa del genere)?

È stato utile?

Soluzione

Puoi provare a eseguirlo tramite un DOSBOX :

  

DOSBox emula un PC Intel x86,   completo di suono, grafica, mouse,   joystick, modem, ecc. necessari per   eseguendo molte vecchie applicazioni MS-DOS che   semplicemente non può essere eseguito su PC moderni e   sistemi operativi, come Microsoft   Windows XP, Windows Vista, Linux e   FreeBSD

(dal loro Wiki )

Lo uso da diversi anni ormai. È buono, stabile e abbastanza robusto. Dispone anche di diverse GUI di terze parti per rendere la tua vita più semplice

Altri suggerimenti

Oltre a mantenere viva l'app in un ambiente virtualizzato, come è già stato suggerito, la prima cosa da fare sarebbe capire perché il codice sembra richiedere FAT-16.

Se l'app (o il suo runtime) è particolarmente dannoso, il requisito FAT-16 potrebbe derivare dal fatto che sta tentando di eseguire l'I / O su disco diretto, bypassando il sistema operativo. Se il codice BASIC stesso sta tentando di eseguire quella particolare acrobazia, dovresti vedere un sacco di CHIAMATE, PEEK, POKE o persino le istruzioni IN e OUT occasionali nelle routine I / O. Determinare a cosa serve il runtime è più difficile: se proviene da Microsoft, basato su DOS e non troppo antico (ad esempio GWBASIC o QuickBASIC / PDS) o basato su Windows, dovrebbe essere OK, tuttavia.

In ogni caso, se l'app o il runtime tentano l'I / O diretto su disco, si perde: sarà praticamente impossibile far funzionare le cose su un sistema operativo moderno senza modifiche estese, simili a riscrittura.

Se l'app utilizza le normali funzionalità BASIC per l'input e l'output (ad es. OPEN " file " FOR qualunque AS # 1) e il runtime utilizza anche le normali interfacce del sistema operativo, il motivo più probabile funziona solo su FAT -16 è che viene completamente confuso da nomi di file lunghi.

La prima cosa da provare è mettere l'app in una directory con un nome breve (ad es. c: \ myapp) e vedere cosa succede dopo. Forse funziona: altrimenti, dovresti essere in grado di capire cosa sta succedendo passando attraverso il codice BASIC (supponendo caritatevolmente che un debugger sia parte del suo ambiente di runtime).

Senza ulteriori informazioni sull'interprete / compilatore esatto in cui viene eseguita la tua app, è impossibile rispondere alla tua domanda in modo più dettagliato. Se le risposte finora non sono state utili, potresti voler modificare la tua domanda per includere queste informazioni.

Esegui una versione precedente di Windows in una macchina virtuale VMWare, essa stessa in esecuzione in un sistema operativo moderno.

Eseguilo da un'unità flash, zip o qualsiasi altro supporto rimovibile che hai.
Windows XP ha formattato un'unità flash USB da 1 GB come FAT senza problemi, non sono stati necessari strumenti aggiuntivi.
Inoltre, se l'applicazione è davvero malvagia , quindi, si spera, ne limiti la malvagità dai confini del disco.

A seconda dell'ambiente: dovrebbe essere ancora possibile creare filesystem Fat-16 su sistemi operativi moderni, potrebbe essere necessario solo strumenti aggiuntivi come Acronis DiskDirector anche di alcune varianti fdisk di Linux.

Tieni presente che FAT-16 è limitato a una dimensione della partizione di 2 GB.

Ma come detto prima: meglio scoprire PERCHÉ. Sembra una sorta di protezione da copia WTF.

Secondo il suggerimento di @ugenk00, abbiamo un software per strumenti leggermente stravagante che non salverà su un disco rigido NTFS ma salverà su una piccola memory stick (1 GB) ...

Potresti essere in grado di importare il codice direttamente in VB.NET (anche se quasi sicuramente richiederebbe alcune modifiche). È quindi possibile sostituire le chiamate IO del file dell'app originale (che sono quasi sicuramente il tuo problema) con le chiamate VB.NET, eliminando il problema FAT16.

Nota anche che alcuni programmi di vecchia scuola controllano prima di tutto se c'è abbastanza spazio su disco prima di scrivere file, causando problemi stravaganti se l'unità è così grande da traboccare dal contatore a 16 bit che apparentemente sta usando. (In tal caso, funzionerà o non funzionerà, a seconda della natura dell'overflow).

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top