我有一个用BASIC编写的项目。我不确定确切的原因,但除了从FAT-16文件系统运行之外,应用程序将无法运行。

我宁愿尝试在现代操作系统(Vista / XP)中设置和支持此应用程序的环境,而不是重写它。

有没有人知道如何通过某种代码更改(对于BASIC代码)或FAT-16“模拟器”来获得在XP / Vista中运行的这样的应用程序。 (如果存在这样的事情)?

有帮助吗?

解决方案

您可以尝试通过 DOSBOX 运行它:

  

DOSBox模拟Intel x86 PC,   配有声音,图形,鼠标,   操纵杆,调制解调器等,必要的   运行许多旧的MS-DOS应用程序   根本无法在现代PC上运行   操作系统,例如Microsoft   Windows XP,Windows Vista,Linux和   FreeBSD的

(来自他们的 Wiki

我现在用它好几年了。它很好,稳定且非常坚固。有几个第三方GUI也可以让你的生活更轻松

其他提示

除了在虚拟化环境中保持应用程序活着之外,正如已经建议的那样,首先要做的是找出为什么代码似乎需要FAT-16。

如果应用程序(或其运行时)特别邪恶,FAT-16要求可能源于它试图绕过操作系统进行直接磁盘I / O这一事实。如果BASIC代码本身试图拉动该特定的特技,你应该在I / O例程中看到大量的CALL,PEEK,POKE甚至偶尔的IN和OUT语句。确定运行时的内容更加困难:如果它来自Microsoft,基于DOS且不太古老(例如GWBASIC或QuickBASIC / PDS),或者基于Windows,它应该没问题。

无论如何,如果应用程序或运行时正在尝试直接磁盘I / O,那么您将失败:如果没有像代码一样的大量重写代码,那么在现代操作系统上工作几乎是不可能的。

如果应用程序使用普通的BASIC工具进行输入和输出(例如OPEN“文件”FOR FOR AS#1),并且运行时也使用普通的OS接口,那么最有可能的原因是它只适用于FAT -16是因为长文件名而被混淆了。

首先要尝试的是将应用程序放在一个名称较短的目录(例如c:\ myapp)中,然后看看接下来会发生什么。可能它只是起作用:否则,您应该能够通过逐步执行BASIC代码来确定发生了什么(慈善假设调试器是其运行时环境的一部分)。

如果没有关于您的应用运行的确切解释器/编译器的更多信息,则无法更详细地回答您的问题。如果到目前为止的答案没有帮助,您可能需要编辑您的问题以包含此信息。

在VMWare虚拟机中运行旧版本的Windows,该虚拟机本身在现代操作系统中运行。

从闪存,zip驱动器或任何可移动媒体运行它。
Windows XP将1GB usb闪存驱动器格式化为FAT没有任何问题,没有其他工具是必需的 此外,如果应用程序确实是邪恶,那么您希望通过驱动器的边界来限制其邪恶。

取决于环境:在现代操作系统上仍然可以创建Fat-16文件系统,您可能只需要其他工具,例如Acronis DiskDirector甚至是某些Linux的fdisk Variant。

请记住,FAT-16仅限于2 GB的分区大小。

但如前所述:最好找出原因。听起来像是某种WTF-Copy-Protection。

我的第二个@ eugensk00的建议,我们有一些稍微古怪的仪器软件,它不会保存到NTFS硬盘,但会保存到一个小记忆棒(1GB)......

您可以将代码直接导入VB.NET(尽管几乎肯定需要进行一些修改)。然后,您可以使用VB.NET调用替换原始应用程序的文件IO调用(这几乎肯定是您的问题),让您摆脱FAT16问题。

另请注意,一些老派程序在编写文件之前首先检查是否有足够的磁盘空间,如果驱动器太大而导致其溢出显然正在使用的16位计数器,则会导致古怪的问题。 (如果是这种情况,那么它将起作用,或者不起作用,具体取决于溢出的性质。)

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top