FAT-16 на современных ОС

У меня есть проект, написанный на БЕЙСИКЕ. Я не уверен в точной причине, но приложение не будет работать, кроме случаев, когда оно запускается из файловой системы FAT-16.

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

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

Какое поведение будет ожидаемым и результирующим? Требуется дополнительная информация.

Mikael Jansson 28.09.2008 16:17

Ожидаемое результирующее поведение - приложение работает в Vista / XP. Приложение отлично работает в Windows 9x с файловой системой на основе FAT-16.

Steve Horn 28.09.2008 16:19

Что означает "Работает не на Vista / XP"? Почему вы думаете, что это проблема файловой системы?

Horcrux7 28.09.2008 17:21
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
3
3
544
8
Перейти к ответу Данный вопрос помечен как решенный

Ответы 8

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

Можно ли настроить виртуальную машину для работы с файловой системой FAT-16?

Steve Horn 28.09.2008 16:19

Конечно! Настройте свою виртуальную машину так, чтобы на ней было два жестких диска, а затем «format / fs: fat d:» внутри вашей виртуальной машины. (Ваш опыт может отличаться. Прошло много времени с тех пор, как я использовал Windows 98, поэтому я не полностью помню параметры командной строки форматирования.)

Chris Jester-Young 28.09.2008 16:24

Кроме того, если вам нравится что-то бесплатное, вы можете рассмотреть Microsoft Virtual PC вместо VMware. microsoft.com/windows/products/winfamily/virtualpc

Chris Jester-Young 28.09.2008 16:25

Сервер VMWare является бесплатный, я почти уверен. У них есть более изящные продукты виртуализации, которые стоят $ $ $, но базовый виртуальный сервер этого не делает.

skaffman 28.09.2008 16:34

VirtualBox - еще один бесплатный вариант ... просто выбросить его там.

HoboBen 28.09.2008 16:56
Ответ принят как подходящий

Вы можете попробовать запустить его через 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-битный счетчик, который, по-видимому, использует. (В этом случае он либо сработает, либо не сработает, в зависимости от характера переполнения).

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