2008-09-28 6 views
3

У меня есть проект, написанный на Бейсике. Я не уверен точно, но приложение не будет работать, кроме как при запуске из файловой системы FAT-16.FAT-16 On Modern OS

Я бы предпочел настроить и среду, которая будет поддерживать это приложение в современной ОС (Vista/XP), вместо того, чтобы переписывать его.

Кто-нибудь знает, как получить такое приложение, как это работает в XP/Vista, посредством какого-либо изменения кода (для кода BASIC) или эмулятора FAT-16 (если такая вещь существует)?

+0

Какое ожидаемое поведенческое поведение? Больше информации. – 2008-09-28 12:17:52

+0

Ожидаемое поведение в том, что приложение работает на Vista/XP. Приложение отлично работает в Windows 9x на файловой системе на основе FAT-16. – 2008-09-28 12:19:07

+0

Что это значит: «Это работает не на Vista/XP»? Почему вы думаете, что это проблема файловой системы? – Horcrux7 2008-09-28 13:21:24

ответ

7

Вы можете попробовать запустить его через DOSBOX:

DOSBox эмулирует x86 ПК Intel, в комплекте со звуком, графикой, мышь, джойстик , модем и т.д., необходимые для работает много старых MS -DOS приложения, которые просто не могут быть запущены на современных компьютерах и операционных систем, таких как Microsoft Windows XP, Windows Vista, Linux и FreeBSD

(от их Wiki)

Я использую его уже несколько лет. Он хорош, стабилен и достаточно прочен. Имеет несколько сторонних графических интерфейсов, а также сделать вашу жизнь проще.

1

Запустите старую версию Windows в виртуальной машине VMWare, которая работает в современной ОС.

5

. Помимо простого сохранения приложения в виртуализованной среде, как уже было предложено, первое, что нужно сделать, - это выяснить, почему код кажется, требует FAT-16.

Если приложение (или его время выполнения) является особенно злым, требование FAT-16 может быть связано с тем, что он пытается выполнить прямой ввод-вывод на диск, минуя операционную систему. Если сам код BASIC пытается вытащить этот конкретный трюк, вы должны увидеть множество CALL, PEEKs, POKE или даже случайные инструкции IN и OUT в процедурах ввода-вывода. Определить, что время выполнения больше, сложнее: если это от Microsoft, DOS-based и не слишком древний (например, GWBASIC или QuickBASIC/PDS) или Windows-based, все должно быть хорошо.

Во всяком случае, если приложение или среда выполнения пытается напрямую подключиться к вводу-выводу, вы потеряете: практически невозможно заставить вещи работать на современной ОС без обширных переписывающих изменений кода.

Если приложение использует обычные ОС BASIC для ввода и вывода (например, OPEN "file" FOR any AS # 1), а среда выполнения также использует обычные интерфейсы ОС, наиболее вероятная причина, по которой она работает только на FAT -16 заключается в том, что он становится чересчур путаным длинными именами файлов.

Первое, что нужно попробовать - это разместить приложение в каталоге с коротким именем (например, c: \ myapp) и посмотреть, что будет дальше. Возможно, это просто работает: в противном случае вы сможете понять, что происходит, перейдя через код BASIC (при условии, что отладчик является частью среды выполнения).

Без дополнительной информации о точном интерпретаторе/компиляторе, в котором работает ваше приложение, невозможно ответить на ваш вопрос более подробно. Если ответы до сих пор не были полезны, вы можете изменить свой вопрос, чтобы включить эту информацию.

0

В зависимости от среды: по-прежнему возможно создавать файловые системы Fat-16 на современной ОС, вам могут потребоваться дополнительные инструменты, такие как Acronis DiskDirector даже для некоторого Linux-fdisk-варианта.

Просто имейте в виду, что FAT-16 ограничен разделом размером 2 ГБ.

Но, как сказано выше: лучше всего узнать ПОЧЕМУ. Похоже, что-то вроде WTF-Copy-Protection.

1

Запустите его со вспышки, почтового диска или любого другого съемного носителя, который у вас есть.
Windows XP отформатировал флэш-накопитель USB 1GB как FAT без проблем, никаких дополнительных инструментов не было.
Кроме того, если приложение действительно является злом, вы, таким образом, надеетесь, сдерживаете его злобность по границам диска.

0

Я второй @ предложение eugensk00, у нас есть некоторые немного дурацкий инструмент программного обеспечения, которое не будет сохранить на жестком диске с файловой системой NTFS, но позволит сэкономить на палочке небольшой памяти (1 Гб) ...

0

Вы могли бы быть в состоянии импортируйте код непосредственно в VB.NET (хотя это почти наверняка потребует некоторых изменений). Затем вы могли заменить вызовы ввода-вывода исходного приложения (которые, безусловно, ваша проблема), с помощью вызовов VB.NET, избавляя вас от проблемы FAT16.

0

Также обратите внимание, что некоторые программы старой школы сначала проверяют, достаточно ли свободного места на диске перед записью файлов, что приводит к неуклюжим проблемам, если диск настолько велик, что он переполняет 16-разрядный счетчик, который, по-видимому, использует. (Если это так, то он будет работать или работать не в зависимости от характера переполнения).