Salvare l'output del comando nel file MS-DOS 1.x.


27

Sembra che [COMMAND]>[FILE]non funzioni nelle prime versioni di MS-DOS. Sto usando MS-DOS 1.25 e l'espressione precedente dà la dichiarazione invalid argument.

Aggiornamento : poiché è vero che non funziona in DOS 1.x, è possibile ottenere quell'output utilizzando alcune funzionalità della scatola virtuale o dire ottenendo l'output da alcuni file di registro.


18
Perché stai usando DOS 1.25 ?!
Keltari,

41
@Keltari: nessuna fastidiosa notifica di aggiornamento a Windows 10
Mark K Cowan,

6
Se hai altre domande sulla tua configurazione che non sarebbero in argomento qui, prova Retrocomputing , un altro sito SE dedicato a quel genere di cose. (Informativa completa: potrei essere un po 'affiliato a quel sito.)
wizzwizz4

4
Questa domanda mi fa sentire di nuovo giovane!
Dmitry Grigoryev il

9
1.x MS-DOS è essenzialmente un clone CP / M, in cui Ctrl-P si avviava copiando l'output della console sulla stampante. Un approccio simile può quindi essere possibile anche in MS-DOS.
Thorbjørn Ravn Andersen,

Risposte:


5

è possibile utilizzare le funzionalità di debug della macchina virtuale (o gdb / qualcos'altro) per leggere direttamente la memoria. ms-dos non ha protezione della memoria né un sistema multi-task, quindi puoi leggere la memoria della macchina virtuale, puoi leggere la vga della macchina virtuale per l'input.

la documentazione dice che esiste un comando

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

la sintassi corretta per ottenere l'output è: esegui VirtualBox --debug --startvm msdos1.25, quindi, nella console del debugger: info vgatext

output incollato:

The COMPAQ Personal Computer DOS                                                
Version 1.11                                                                    


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


A>                                                                              











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

Quindi, puoi scrivere uno script di debugger che si aggancia a un valore di memoria nella memoria del tuo programma e scarica lo schermo vga quando un programma esegue l'output / oppure puoi scrivere uno script che mette in pausa cpu, salva il contenuto in modo coerente, se l'output cambia, salva il contenuto aggiornato, continua esecuzione della CPU

Alcune opzioni per indagare sono:

  • scopri come scrivere uno script di debug per scaricare i contenuti di memoria della tua applicazione

  • trova alcuni driver di vga / porta seriale / soluzione di dumping della memoria per quemu / dosbox / virtualbox

  • trovare alcuni vecchi programmi di utilità degli anni '80 che forse qualcuno ha scritto lì per questo scopo

  • aggiungi il tag freedos qui (o addirittura sposta / ripeti la tua domanda su big stackoverflow, suppongo che alcuni guru dovrebbero sapere qualcosa su problemi come questo

Aggiornerò più avanti se trovo qualcosa di interessante, ma puoi per favore rivelare alcuni dettagli sul perché stai usando 1.25, questo programma funziona su versioni più recenti di msdos? Scommetto che puoi trovare un giovane hacker di assemblaggio desideroso di rattoppare questo programma su una versione più recente (o aggiungere l'output di file con asm) a un piccolo costo


Potresti fornire alcune informazioni aggiuntive su tale processo, per favore?
Blake,

@Blake aggiornato, info vgatextdopo tutto sembra funzionare tutto quello che devi fare è scrivere uno script corretto per il debugger, a quanto pare
strangeqargo,

Le informazioni che hai fornito sono molto interessanti. In effetti potrebbe essere assolutamente utilizzabile per la mia situazione. Sto usando questo per la vecchia applicazione che voglio capire come funziona dandogli input e ottenendo output automaticamente. Potrebbe non essere il modo migliore, ma voglio farlo in questo modo. Grazie per la risposta, dammi solo un paio di giorni per leggere questo manuale e scrivere una sorta di script (spero sia possibile) e ti darà informazioni sul funzionamento. Grazie mille.
Blake,

1
Se non avessi già contrassegnato la risposta, lo contrassegnerei sicuramente. Grazie per tutto il vostro aiuto ragazzi.
Blake,

1
Avevo bisogno di ottenere l'output della mia applicazione come testo. Nella documentazione viene menzionato come utilizzare la console di debug nel terminale. Usando VBoxManaged debugvms <nome del già avviato in modalità debug VM> info vgatext ti stampa lo schermo in modalità terminale e loro usando il reindirizzamento e una sorta di semplice analisi sono riuscito a ottenere ciò di cui avevo bisogno. Grazie.
Blake,

40

Sembra che [COMMAND]> [FILE] non funziona nelle prime versioni di MS-DOS.

Sto usando MS-DOS 1.25 e l'espressione precedente fornisce l'argomento non valido dell'istruzione

È corretto. Quello che vuoi fare non è possibile in v1.25.

Il reindirizzamento dei comandi (insieme a molti altri miglioramenti) è stato aggiunto nella versione 2.0.

MS-DOS versione 2.0 (equivalente a PC-DOS 2.0) fu rilasciato per la prima volta nel marzo 1983. Era, a posteriori, un nuovo sistema operativo (sebbene si fosse prestata molta attenzione a mantenere la compatibilità con MS-DOS versione 1). Conteneva molte innovazioni significative e funzionalità avanzate, comprese quelle elencate nella pagina seguente.

  • Supporto per floppy disk e hard disk di capacità maggiore
  • Molte funzionalità simili a UNIX / XENIX, tra cui una struttura di file gerarchica, handle di file, reindirizzamento I / O, pipe e filtri
  • Stampa in background (spooling di stampa)
  • Etichette di volume, oltre a attributi di file aggiuntivi
  • Driver di dispositivo installabili
  • Un file di configurazione del sistema personalizzabile dall'utente che controllava il caricamento di driver di periferica aggiuntivi, il numero di buffer del disco di sistema e così via
  • Manutenzione di blocchi di ambiente che potrebbero essere utilizzati per trasmettere informazioni tra programmi
  • Un driver di visualizzazione ANSI opzionale che ha consentito ai programmi di posizionare il cursore e controllare le caratteristiche di visualizzazione in modo indipendente dall'hardware
  • Supporto per l'allocazione dinamica, la modifica e il rilascio di memoria da parte dei programmi applicativi
  • Supporto per interpreti di comandi utente personalizzati (shell)
  • Tabelle di sistema per assistere il software applicativo nella modifica dei formati di valuta, ora e data (noto come supporto internazionale)

Programmazione MS-DOS avanzata di origine di Ray Duncan


Cosa posso fare invece?

Una possibile soluzione alternativa sarebbe quella di acquisire lo schermo (come testo) e analizzare l'output.

Le risposte a questa domanda La cattura dello schermo in DOS elenca alcuni programmi TSR (Terminate ma Stay Resident) che sono punti di partenza per indagare.


13
Bella risposta. Solo il più vero dei Super Utenti si preoccuperebbe affatto di MS-DOS 1.0.
Dico Reinstate Monica il

Grazie per la tua risposta, lo apprezzo, ma voglio trovare un modo (diciamo usando le funzioni della scatola virtuale), per questo non lo segnerò come risposta per il momento.
Blake,

@Blake Una possibile soluzione alternativa sarebbe quella di acquisire lo schermo (come testo) e analizzare l'output. Ho aggiornato la risposta.
DavidPostill

Mi dispiace in anticipo per il ritardo dei risultati quando si tenta di utilizzare questo programma tsr. Non appena avrò accesso alla mia macchina ti farò sapere. È un'ottima alternativa e spero tanto di funzionare correttamente. È necessario installare altri programmi (che ad esempio crea questo ambiente tsr)?
Blake,

1
@ Blake Non me lo ricordo, ma sono molti anni che non uso DOS. Non preoccuparti dei ritardi nei test;)
DavidPostill

-3

È possibile installare C e scrivere un programma per prendere i comandi dos, eseguirli in una shell e registrare i risultati. Consiglierei di utilizzare Borland Turbo C 2.01. Puoi anche scrivere codice in Quickbasic se stai cercando di scrivere codice ... ;-)

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

Personalmente, userei DOS 5.5 o 6 dato che ci sono alcune cose aggiuntive che potresti ottenere.


1
Funziona in v1.25?
Blake,

E se è così, puoi darmi qualche aiuto aggiuntivo sull'installazione di C e su come registrare i risultati, grazie mille.
Blake,

1
@ Blake non funziona in v1
edc65

L'uso di C per scrivere un programma sarebbe una risposta utile, se menzionasse le API che useresti durante la scrittura di tale programma. (E, naturalmente, ha preso in considerazione l'esigenza esplicita nella domanda che il codice sia compatibile con DOS 1.x.) Questa risposta non fa neanche. Invia semplicemente un collegamento a un popolare compilatore / pacchetto IDE, senza alcuna guida sulla pertinenza di tale set di strumenti.
Cody Grey,

Il compilatore C ha funzionalità per stdin e stdout e può eseguire comandi di shell. Non so quale compilatore funzionerebbe in DOS 1. Se sei così preoccupato per il mantenimento della scheda, una domanda migliore sarebbe perché qualcuno dovrebbe scrivere il codice per MS DOS 1 ...
Gandolf989,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.