Вопрос

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

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

Кто-нибудь знает, как запустить подобное приложение в XP / Vista с помощью какого-либо изменения кода (БАЗОВОГО кода) или "эмулятора" FAT-16 (если такая вещь существует)?

Это было полезно?

Решение

Вы можете попробовать запустить его через ДОСБОКС:

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

(из их Вики)

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

Другие советы

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

Если приложение (или его среда выполнения) является особенно вредоносным, требование FAT-16 может быть связано с тем фактом, что оно пытается выполнить прямой дисковый ввод-вывод в обход операционной системы.Если сам БАЗОВЫЙ код пытается выполнить этот конкретный трюк, вы должны увидеть множество вызовов, подглядываний, тычков или даже случайных инструкций IN и OUT в процедурах ввода-вывода.Определить, для чего предназначена среда выполнения, гораздо сложнее:если он от Microsoft, на базе DOS и не слишком древний (напримерGWBASIC или QuickBASIC / PDS), или на базе Windows, все должно быть в порядке.

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

Если приложение использует обычные БАЗОВЫЕ средства для ввода и вывода (напримерОТКРОЙТЕ "файл" ДЛЯ чего угодно КАК #1), и среда выполнения также использует обычные интерфейсы ОС, наиболее вероятная причина, по которой она работает только на FAT-16, заключается в том, что ее сильно путают длинные имена файлов.

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

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

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

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

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

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

Но, как было сказано ранее:Лучше всего выяснить, ПОЧЕМУ.Звучит как какая-то WTF-Защита от копирования.

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top