Pergunta

Eu tenho um projeto que foi escrito em BASIC. Eu não tenho certeza do motivo exato, mas o aplicativo não funcionará, exceto quando está a ser executado a partir de um sistema de arquivos FAT-16.

Eu prefiro tentar configurar e ambiente que irá apoiar este aplicativo em um sistema operacional moderno (Vista / XP) em vez de reescrevê-lo.

Alguém sabe como obter um aplicativo como este sendo executado no XP / Vista através de algum tipo de alteração de código (com o código BASIC) ou FAT-16 "emulador" (se é que isso existe)?

Foi útil?

Solução

Você pode tentar executá-lo através de um DOSBOX :

DOSBox emula um Intel x86 PC, completo com som, gráficos, rato, joystick, modem, etc., necessários para executando muitos aplicativos antigos MS-DOS que simplesmente não pode ser executado em PCs modernos e sistemas operacionais, como o Microsoft Windows XP, Windows Vista, Linux e FreeBSD

(de seu Wiki )

Eu uso ele há vários anos. É bom, estável e bastante robusto. Tem várias interfaces gráficas de terceiros, bem como para tornar a sua vivo mais fácil

Outras dicas

Outro do que apenas manter o aplicativo vivo em um ambiente virtualizado, como já foi sugerido, a primeira coisa a fazer seria a de descobrir o por o código parece exigir FAT-16.

Se o aplicativo (ou seu tempo de execução) é particularmente mal, a exigência FAT-16 pode provir do fato de que ele está tentando fazer direto ao disco I / O, ignorando o sistema operacional. Se o código BASIC em si está tentando puxar esse conluio particular, você deve ver um monte de chamadas, espreita, puxões ou até mesmo a IN ocasional e declaração OUT nas rotinas de I / O. Determinar o que o tempo de execução é de até é mais difícil:. Se é da Microsoft, DOS-based e não muito antiga (por exemplo GWBASIC ou QuickBASIC / PDS), ou baseados no Windows que deve ser OK, embora

De qualquer forma, se tanto o aplicativo ou o tempo de execução está tentando direto ao disco I / O, você perde: será praticamente impossível conseguir que as coisas funcionam em um sistema operacional moderno sem extensa, reescreva-like, alterações de código

Se o aplicativo está usando as instalações básicas normais para entrada e saída (por exemplo, "file" ABERTO por qualquer AS # 1), e o tempo de execução também está usando as interfaces OS normais, a razão mais provável ele só funciona em FAT 16 é que ele fica thorougly confuso com nomes de arquivos longos.

A primeira coisa a tentativa seria colocar o aplicativo em um diretório com um nome curto (por exemplo, c: \ myapp), e ver o que acontece em seguida. Possivelmente ele simplesmente funciona:. Caso contrário, você deve ser capaz de descobrir o que está acontecendo por percorrendo o código BASIC (caridosamente assumindo um depurador é parte do seu ambiente de tempo de execução)

Sem mais algumas informações sobre os exatos intérprete / compilador suas corridas de aplicativos em que é impossível responder à sua pergunta com mais detalhes. Se as respostas até agora não têm sido úteis, você pode querer editar a sua pergunta para incluir esta informação.

Executar uma versão mais antiga do Windows em uma máquina virtual VMWare, a própria executado em um sistema operacional moderno.

Run-lo a partir de um flash, zip rígido ou qualquer mídia removível que você tem.
Windows XP formatado uma unidade flash USB de 1 GB como FAT sem problemas, sem ferramentas adicionais foram nessesary.
Além disso, se o aplicativo é realmente mal , você, portanto, esperançosamente, restringir a sua maldade pelos limites da unidade.

Dependendo do ambiente:. Deve ainda ser possível criar Fat-16 Sistemas de arquivos no OS moderno, você pode apenas precisam de ferramentas adicionais, como Acronis DiskDirector de até mesmo alguns Linux' fdisk Variant

Basta ter em mente que FAT-16 é limitado a um tamanho de partição de 2 GB.

Mas, como disse antes: Melhor para descobrir o porquê. Soa como algum tipo de WTF-protecção contra cópia.

Eu segundo @ sugestão de eugensk00, nós temos algum software do aparelho ligeiramente maluco que não vai salvar para um NTFS disco rígido, mas vai economizar a uma vara pequena memória (1GB) ...

Você pode ser capaz de importar o código diretamente em VB.NET (embora quase certamente exigiria algumas modificações). Você poderia, então, substituir o ficheiro chamadas IO do aplicativo original (que são quase certamente o seu problema) com chamadas VB.NET, você ficar fora do problema FAT16.

Observe também que alguns programas de old-school primeiro verificar para ver se há espaço suficiente em disco antes de escrever arquivos, resultando em problemas de malucos se a unidade é tão grande que ele transborda o contador de 16 bits que é aparentemente usando. (Se for esse o caso, então ele vai ou trabalho, ou não trabalho, dependendo da natureza do overflow).

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top