У меня есть проект, написанный на БЕЙСИКЕ. Я не уверен в точной причине, но приложение не будет работать, кроме случаев, когда оно запускается из файловой системы FAT-16.
Я бы лучше попытался настроить среду, которая будет поддерживать это приложение в современной ОС (Vista / XP), а не переписывать ее.
Кто-нибудь знает, как запустить подобное приложение в XP / Vista через какое-то изменение кода (на BASIC) или «эмулятор» FAT-16 (если такой существует)?
Ожидаемое результирующее поведение - приложение работает в Vista / XP. Приложение отлично работает в Windows 9x с файловой системой на основе FAT-16.
Что означает "Работает не на Vista / XP"? Почему вы думаете, что это проблема файловой системы?





Запустите старую версию Windows на виртуальной машине VMWare, которая сама работает в современной ОС.
Можно ли настроить виртуальную машину для работы с файловой системой FAT-16?
Конечно! Настройте свою виртуальную машину так, чтобы на ней было два жестких диска, а затем «format / fs: fat d:» внутри вашей виртуальной машины. (Ваш опыт может отличаться. Прошло много времени с тех пор, как я использовал Windows 98, поэтому я не полностью помню параметры командной строки форматирования.)
Кроме того, если вам нравится что-то бесплатное, вы можете рассмотреть Microsoft Virtual PC вместо VMware. microsoft.com/windows/products/winfamily/virtualpc
Сервер VMWare является бесплатный, я почти уверен. У них есть более изящные продукты виртуализации, которые стоят $ $ $, но базовый виртуальный сервер этого не делает.
VirtualBox - еще один бесплатный вариант ... просто выбросить его там.
Вы можете попробовать запустить его через DOSBOX:
DOSBox emulates an Intel x86 PC, complete with sound, graphics, mouse, joystick, modem, etc., necessary for running many old MS-DOS applications that simply cannot be run on modern PCs and operating systems, such as Microsoft Windows XP, Windows Vista, Linux and FreeBSD
(из их Вики)
Пользуюсь им уже несколько лет. Он хороший, стабильный и достаточно надежный. Имеет несколько сторонних графических интерфейсов, чтобы упростить вашу жизнь.
Помимо простого поддержания активности приложения в виртуализированной среде, как уже было предложено, первое, что нужно сделать, - это выяснить Почему, код, похоже, требует FAT-16.
Если приложение (или его среда выполнения) особенно опасны, требование FAT-16 может быть связано с тем, что оно пытается выполнять прямой дисковый ввод-вывод, минуя операционную систему. Если сам BASIC-код пытается выполнить этот конкретный трюк, вы должны увидеть множество вызовов CALL, PEEK, POKE или даже случайных операторов IN и OUT в подпрограммах ввода-вывода. Определить, чем занимается среда выполнения, труднее: если она от Microsoft, на базе DOS и не слишком древняя (например, GWBASIC или QuickBASIC / PDS), или на базе Windows, все должно быть в порядке.
В любом случае, если приложение или среда выполнения попытаются выполнить прямой дисковый ввод-вывод, вы проиграете: будет практически невозможно заставить что-то работать в современной ОС без обширных, похожих на перезапись, изменений кода.
Если приложение использует обычные возможности BASIC для ввода и вывода (например, ОТКРЫТЫЙ «файл» ДЛЯ любого AS # 1), а среда выполнения также использует обычные интерфейсы ОС, наиболее вероятная причина, по которой оно работает только с FAT-16, заключается в том, что его сильно сбивают с толку длинные имена файлов.
Первое, что нужно попробовать, - это поместить приложение в каталог с коротким именем (например, c: \ myapp) и посмотреть, что будет дальше. Возможно, это просто работает: в противном случае вы сможете выяснить, что происходит, пройдя через код BASIC (мягко говоря, если отладчик является частью его среды выполнения).
Без дополнительной информации о точном интерпретаторе / компиляторе, в котором работает ваше приложение, невозможно ответить на ваш вопрос более подробно. Если ответы до сих пор не помогли, вы можете изменить свой вопрос, включив в него эту информацию.
В зависимости от среды: все еще должно быть возможно создание файловых систем Fat-16 в современной ОС, вам могут потребоваться дополнительные инструменты, такие как Acronis DiskDirector, даже для некоторых вариантов fdisk Linux.
Просто имейте в виду, что FAT-16 ограничен размером раздела 2 ГБ.
Но, как было сказано ранее: лучше выяснить, ПОЧЕМУ. Похоже на своего рода защиту от копирования WTF.
Запустите его с флэш-памяти, zip-накопителя или любого другого съемного носителя, который у вас есть. Windows XP без проблем отформатировала usb-флешку емкостью 1 ГБ как FAT, никаких дополнительных инструментов не потребовалось. Кроме того, если приложение действительно зло, вы таким образом, надеюсь, ограничите его вредоносность границами диска.
Второе предложение @ eugensk00: у нас есть немного дурацкое программное обеспечение для инструментов, которое не будет сохранять на жесткий диск NTFS, а будет сохранять на небольшую карту памяти (1 ГБ) ...
Возможно, вы сможете импортировать код непосредственно в VB.NET (хотя это почти наверняка потребует некоторых изменений). Затем вы можете заменить исходные вызовы ввода-вывода файла приложения (которые почти наверняка являются вашей проблемой) на вызовы VB.NET, чтобы избавиться от проблемы FAT16.
Также обратите внимание, что некоторые программы старой школы перед записью файлов сначала проверяют, достаточно ли места на диске, что приводит к дурацким проблемам, если диск настолько велик, что он переполняет 16-битный счетчик, который, по-видимому, использует. (В этом случае он либо сработает, либо не сработает, в зависимости от характера переполнения).
Какое поведение будет ожидаемым и результирующим? Требуется дополнительная информация.