在现代操作系统上的FAT-16

问题描述:

我有一个用BASIC编写的项目。我不确定确切的原因,但除了从FAT-16文件系统运行时,应用程序将不起作用。在现代操作系统上的FAT-16

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

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

+0

预期与结果行为有什么区别?需要更多信息。 – 2008-09-28 12:17:52

+0

预期的结果是该应用在Vista/XP上运行。在基于FAT-16的文件系统上,该应用在Windows 9x上运行良好。 – 2008-09-28 12:19:07

+0

这意味着什么“它不在Vista/XP上运行”?为什么你认为这是文件系统的问题? – Horcrux7 2008-09-28 13:21:24

您可以尝试通过运行它DOSBOX

DOSBox中模拟了一个英特尔的x86 PC, 有声音,图像,鼠标,游戏杆 ,调制解调器等,必要 运行许多旧的MS该 根本无法在现代PC和 操作系统上运行的应用程序-DOS,如Microsoft 的Windows XP,Windows Vista中,Linux和FreeBSD的

(来自他们的Wiki

我现在使用它好几年了。这是好的,稳定的,相当强劲。有几个第三方的GUI以及使您的生活更轻松

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

其他不仅仅是保持应用程序存活在虚拟化环境中,由于已经提出,要做的第一件事是要弄清楚为什么代码似乎需要FAT-16。

如果应用程序(或其运行时)特别恶劣,则FAT-16要求可能源于它试图绕过操作系统执行直接磁盘I/O。如果BASIC代码本身试图拉出特定的特技,那么在I/O例程中应该会看到很多CALL,PEEK,POKE或偶尔的IN和OUT语句。确定运行时要做什么更困难:如果它来自Microsoft,基于DOS并且不太古老(例如GWBASIC或QuickBASIC/PDS),或者基于Windows,它应该没问题。无论如何,如果应用程序或运行时正在尝试直接进行磁盘I/O,那么您将失去:在现代操作系统上运行某些东西几乎是不可能的,而且不需要进行大量的类似改写的代码更改。

如果应用程序使用正常的BASIC工具进行输入和输出(例如,对于任何AS#1,打开“文件”),并且运行时也使用正常的操作系统界面,最有可能的原因是它只能在FAT -16是由长文件名引起的困惑。

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

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

视环境而定:在现代操作系统上仍应该可以创建Fat-16文件系统,您甚至可能需要其他工具,例如某些Linux的fdisk Variant的Acronis DiskDirector。

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

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

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

我第二@ eugensk00的建议下,我们稍微有一些古怪的乐器软件,该软件将无法保存到NTFS硬盘,但将保存到一个小的记忆棒(1GB)...

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

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