Salve a saída do comando no arquivo MS-DOS 1.x

27

Parece que [COMMAND]>[FILE]não funciona nas versões anteriores do MS-DOS. Estou usando o MS-DOS 1.25 e a expressão acima dão a declaração invalid argument.

Atualização : Como é verdade que ele não funciona no DOS 1.x, é possível obter essa saída usando algumas funcionalidades da caixa virtual ou, digamos, obtendo a saída de alguns arquivos de log.

Blake
fonte
18
Por que você está usando o DOS 1.25 ?!
Keltari
41
@Keltari: Não irritantes do Windows 10 notificações de atualização
Mark K Cowan
6
Se você tiver outras perguntas sobre a sua instalação que não estariam no tópico aqui, tente Retrocomputing , outro site do SE dedicado a esse tipo de coisa. (Divulgação completa: Eu posso ser um pouco filiados com esse site.)
wizzwizz4
4
Esta pergunta me faz sentir jovem de novo!
Dmitry Grigoryev
9
O MS-DOS 1.x é essencialmente um clone do CP / M, onde o Ctrl-P acionava a cópia da saída do console para a impressora. Uma abordagem semelhante também pode ser possível no MS-DOS.
Thorbjørn Ravn Andersen

Respostas:

5

você pode usar os recursos de depuração da máquina virtual (ou gdb / outra coisa) para ler a memória diretamente. O ms-dos não possui proteção de memória nem é um sistema de várias tarefas; portanto, você pode ler a memória da máquina virtual, pode ler a máquina virtual vga para entrada.

documentação diz que existe um comando

info vgatext -- print the contents of the VGA framebuffer formatted as standard text mode

a sintaxe correta para obter a saída é: execute VirtualBox --debug --startvm msdos1.25, então, no console do depurador: info vgatext

saída copiada e colada:

The COMPAQ Personal Computer DOS                                                
Version 1.11                                                                    


(C) Copyright COMPAQ Computer Corp. 1982                                        
(C) Copyright Microsoft 1981, 82                                                


A>                                                                              











--------------------------------------------------------------------------------
VBoxDbg> 

Portanto, você pode escrever um script de depurador que conecte um valor de memória na memória do programa e despeja a tela vga quando um programa produz / ou você pode escrever um script que pausa a CPU, salva o conteúdo de maneira consistente, se a saída for alterada, salva o conteúdo atualizado, continua cpu run

Algumas opções para investigar são:

  • descubra como escrever um script de depuração para despejar o conteúdo da memória do seu aplicativo

  • encontre alguma solução de depuração de driver vga / porta serial / despejo de memória para quemu / dosbox / virtualbox

  • encontre algum programa utilitário ANTIGO dos anos 80 que talvez alguém tenha escrito lá para esse fim

  • adicione a tag freedos aqui (ou até mova / repita sua pergunta no grande stackoverflow, suponho que alguns gurus devam saber algo sobre problemas como este

Atualizarei mais tarde se encontrar algo interessante, mas você pode revelar alguns detalhes sobre por que está usando a versão 1.25. Este programa funciona em versões mais recentes do msdos? Aposto que você pode encontrar algum jovem hacker de montagem ansioso para corrigir esse programa para uma versão mais recente (ou adicionar saída de arquivo com asm) por uma pequena taxa

strangeqargo
fonte
Você poderia fornecer informações adicionais sobre esse processo, por favor?
Blake
@Blake atualizado, parece info vgatextobras afinal tudo que você tem a fazer é escrever um script correto para depurador parece
strangeqargo
A informação que você forneceu é muito interessante. De fato, pode ser absolutamente utilizável para a minha situação. Estou usando isso para aplicativos antigos, que quero entender como está funcionando, fornecendo entrada e obtendo saída automaticamente. Pode não ser o melhor caminho, mas quero fazê-lo assim. Obrigado pela resposta, basta me dar um ou dois dias para ler este manual e escrever algum tipo de script (espero que seja possível) e fornecer informações sobre se ele funciona. Muito obrigado
Blake
1
Se ainda não tiver marcado a resposta, eu definitivamente marcaria isso. Obrigado por toda a sua ajuda pessoal.
Blake
1
Eu precisava obter a saída do meu aplicativo como um texto. Na documentação é mencionada como usar o console de depuração no terminal. Usando debugvms VBoxManaged <nome do VM já iniciado no modo de depuração> info vgatext ele imprime a tela no modo terminal e eles usando o redirecionamento e algum tipo de análise simples que consegui obter o que precisava. Obrigado.
Blake
40

Parece que [COMMAND]> [FILE] não funciona nas versões anteriores do MS-DOS.

Estou usando o MS-DOS 1.25 e a expressão acima fornece o argumento inválido da instrução

Está correto. O que você deseja fazer não é possível na v1.25.

O redirecionamento de comando (junto com muitas outras melhorias) foi adicionado na v2.0.

O MS-DOS versão 2.0 (equivalente ao PC-DOS 2.0) foi lançado pela primeira vez em março de 1983. Era, em retrospecto, um novo sistema operacional (embora tenha sido tomado muito cuidado para manter a compatibilidade com o MS-DOS versão 1). Continha muitas inovações significativas e recursos aprimorados, incluindo os listados na página a seguir.

  • Suporte para disquetes e discos rígidos de maior capacidade
  • Muitos recursos do tipo UNIX / XENIX, incluindo uma estrutura hierárquica de arquivos, identificadores de arquivos, redirecionamento de E / S, pipes e filtros
  • Impressão em segundo plano (spool de impressão)
  • Rótulos de volume, além de atributos de arquivo adicionais
  • Drivers de dispositivo instaláveis
  • Um arquivo de configuração do sistema personalizável pelo usuário que controlava o carregamento de drivers de dispositivo adicionais, o número de buffers de disco do sistema etc.
  • Manutenção de blocos de ambiente que podem ser usados ​​para passar informações entre programas
  • Um driver de vídeo ANSI opcional que permitiu que os programas posicionassem o cursor e controlassem as características de exibição de maneira independente do hardware
  • Suporte para alocação dinâmica, modificação e liberação de memória por programas aplicativos
  • Suporte para intérpretes de comando do usuário personalizados (shells)
  • Tabelas do sistema para ajudar o software aplicativo a modificar seus formatos de moeda, hora e data (conhecido como suporte internacional)

Fonte Avançada MS-DOS programação por Ray Duncan


O que posso fazer em vez disso?

Uma solução possível seria capturar a tela (como texto) e analisar a saída.

As respostas a esta pergunta A captura de tela no DOS lista alguns programas TSR (Terminate but Stay Resident) que são pontos de partida para você investigar.

DavidPostill
fonte
13
Boa resposta. Somente os superusuários mais verdadeiros se importariam com o MS-DOS 1.0.
Eu digo Restabelecer Monica
Obrigado por sua resposta, agradeço, mas quero encontrar uma maneira (digamos, usando funções de caixa virtual), por isso não vou marcá-lo como resposta no momento.
Blake
@ Blake Possível solução alternativa seria capturar a tela (como texto) e analisar a saída. Eu atualizei a resposta.
DavidPostill
Lamento antecipadamente o atraso dos resultados ao tentar usar esses programas tsr. Assim que tiver acesso à minha máquina, você será informado. É uma ótima alternativa e espero que funcione corretamente. É necessário instalar outros programas (que por exemplo criam esse ambiente tsr)?
Blake
1
@ Blake Não que eu me lembre, mas faz muitos anos desde que eu usei o DOS. Não se preocupe com os atrasos nos testes;)
DavidPostill
-3

Você pode instalar o C e escrever um programa para executar os comandos dos, executá-los em um shell e registrar os resultados. Eu recomendo que você use o Borland Turbo C 2.01. Você também pode escrever código no Quickbasic se estiver olhando para escrever código ... ;-)

https://archive.org/details/msdos_borland_turbo_c_2.01

Pessoalmente, eu usaria o DOS 5.5 ou 6, pois existem algumas coisas adicionais que você obteria.

Gandolf989
fonte
1
Isso funciona na v1.25?
Blake
E se sim, você pode me dar uma ajuda adicional sobre a instalação do C e sobre como registrar os resultados, muito obrigado.
Blake
1
@Blake ele não funciona em v1
edc65
Usar C para escrever um programa seria uma resposta útil, se mencionasse as APIs que você usaria ao escrever esse programa. (E, é claro, levou em consideração o requisito explícito na pergunta de que o código seja compatível com o DOS 1.x.) Essa resposta também não. Ele apenas envia um link para um pacote popular de compilador / IDE, sem orientação sobre a relevância desse conjunto de ferramentas.
Cody Gray
O compilador C possui recursos para stdin e stdout e pode executar comandos do shell. Eu não sei qual compilador iria trabalhar em DOS 1. Se você está tão preocupado com a manutenção da placa, a melhor pergunta seria por que qualquer código de gravação para MS DOS 1 ...
Gandolf989