Simpan output dari perintah dalam file MS-DOS 1.x

27

Tampaknya itu [COMMAND]>[FILE]tidak berfungsi di versi awal MS-DOS. Saya menggunakan MS-DOS 1.25 dan ekspresi di atas memberikan pernyataan invalid argument.

Pembaruan : Karena memang benar bahwa itu tidak bekerja di DOS 1.x maka apakah mungkin untuk mendapatkan output yang menggunakan beberapa fungsi kotak virtual atau mengatakan dengan mendapatkan output dari beberapa file log.

Blake
sumber
18
Mengapa Anda menggunakan DOS 1.25 ?!
Keltari
41
@Keltari: Tidak ada notifikasi pembaruan Windows 10 yang mengganggu
Mark K Cowan
6
Jika Anda memiliki pertanyaan lain tentang pengaturan Anda yang tidak akan menjadi topik di sini, coba Retrocomputing , situs SE lain yang didedikasikan untuk hal semacam itu. (Pengungkapan penuh: Saya mungkin sedikit berafiliasi dengan situs itu.)
wizzwizz4
4
Pertanyaan ini membuat saya merasa muda lagi!
Dmitry Grigoryev
9
MS-DOS 1.x pada dasarnya adalah klon CP / M, tempat Ctrl-P memicu penyalinan output konsol ke printer. Karena itu, pendekatan yang serupa juga dimungkinkan dalam MS-DOS.
Thorbjørn Ravn Andersen

Jawaban:

5

Anda dapat menggunakan fasilitas debug mesin virtual Anda (atau gdb / sesuatu yang lain) untuk membaca memori secara langsung. ms-dos tidak memiliki perlindungan memori atau sistem multi-tugas, sehingga Anda dapat membaca memori mesin virtual, Anda dapat membaca vga mesin virtual untuk input.

dokumentasi mengatakan ada perintah

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

sintaks yang benar untuk mendapatkan output adalah: jalankan VirtualBox --debug --startvm msdos1.25, kemudian, di konsol debugger: info vgatext

hasil copy-paste:

The COMPAQ Personal Computer DOS                                                
Version 1.11                                                                    


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


A>                                                                              











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

Jadi, Anda dapat menulis skrip debugger yang mengaitkan nilai memori di dalam memori program Anda dan menampilkan layar vga ketika sebuah program menghasilkan / / Anda dapat menulis skrip yang menjeda cpu, menyimpan konten secara konsisten, jika output berubah, menyimpan konten yang diperbarui, berlanjut cpu run

Beberapa opsi untuk diselidiki adalah:

  • temukan cara menulis skrip debugging untuk membuang konten memori aplikasi Anda

  • temukan beberapa debug vga driver / port serial / solusi dumping memori untuk quemu / dosbox / virtualbox

  • menemukan beberapa program utilitas LAMA dari 80 yang mungkin seseorang menulis kembali ke sana untuk tujuan ini

  • tambahkan tag freedos di sini (atau bahkan pindahkan / ulangi pertanyaan Anda di stackoverflow besar, saya kira beberapa guru harus tahu tentang masalah seperti ini

Saya akan memperbarui nanti jika saya menemukan sesuatu yang menarik, tetapi dapatkah Anda mengungkapkan beberapa detail mengapa Anda menggunakan 1,25, apakah program ini bekerja pada versi yang lebih baru dari msdos? Saya yakin Anda dapat menemukan beberapa peretas muda yang bersemangat untuk menambal program ini ke versi yang lebih baru (atau menambahkan keluaran file dengan asm) dengan biaya kecil

Barang aneh
sumber
Bisakah Anda memberikan beberapa info tambahan tentang proses itu?
Blake
@Blake diperbarui, tampaknya info vgatextbekerja setelah semua yang harus Anda lakukan adalah menulis skrip yang benar untuk debugger tampaknya
oddqargo
Info yang Anda berikan sangat menarik. Bahkan mungkin benar-benar dapat digunakan untuk situasi saya. Saya menggunakan ini untuk aplikasi lama yang ingin saya mengerti cara kerjanya dengan memberikan input dan mendapatkan output secara otomatis. Ini mungkin bukan cara terbaik tetapi saya ingin melakukannya seperti ini. Terima kasih atas jawabannya, cukup beri saya satu atau dua hari untuk membaca manual ini dan menulis semacam skrip (harap mungkin) dan akan memberi Anda informasi apakah itu berfungsi. Terima kasih banyak.
Blake
1
Jika saya belum menandai jawaban, saya pasti akan menandai ini. Terima kasih atas semua bantuannya kalian.
Blake
1
Saya perlu mendapatkan output dari aplikasi saya sebagai teks. Dalam dokumentasi disebutkan cara menggunakan konsol debug di terminal. Menggunakan VBoxManaged debugvms <nama yang sudah dimulai dalam mode debug VM> info vgatext mencetak Anda layar dalam mode terminal dan mereka menggunakan pengalihan dan semacam penguraian sederhana saya berhasil mendapatkan apa yang saya butuhkan. Terima kasih.
Blake
40

Tampaknya [PERINTAH]> [FILE] tidak berfungsi di versi awal MS-DOS.

Saya menggunakan MS-DOS 1.25 dan ekspresi di atas memberikan argumen pernyataan tidak valid

Itu betul. Apa yang ingin Anda lakukan tidak mungkin di v1.25.

Pengalihan perintah (bersama dengan banyak perbaikan lainnya) telah ditambahkan di v2.0.

MS-DOS versi 2.0 (setara dengan PC-DOS 2.0) pertama kali dirilis pada bulan Maret 1983. Itu, dalam retrospeksi, sistem operasi baru (meskipun sangat hati-hati untuk menjaga kompatibilitas dengan MS-DOS versi 1). Itu berisi banyak inovasi signifikan dan fitur yang disempurnakan, termasuk yang terdaftar di halaman berikut.

  • Dukungan untuk floppy disk dan hard disk berkapasitas lebih besar
  • Banyak fitur seperti UNIX / XENIX, termasuk struktur file hierarkis, pegangan file, pengalihan I / O, pipa, dan filter
  • Pencetakan latar belakang (spooling cetak)
  • Label volume, plus atribut file tambahan
  • Driver perangkat yang dapat diinstal
  • File konfigurasi sistem yang dapat disesuaikan pengguna yang mengontrol pemuatan driver perangkat tambahan, jumlah buffer disk sistem, dan sebagainya
  • Pemeliharaan blok lingkungan yang dapat digunakan untuk meneruskan informasi antar program
  • Driver tampilan ANSI opsional yang memungkinkan program untuk memposisikan kursor dan mengontrol karakteristik tampilan secara independen perangkat keras
  • Dukungan untuk alokasi dinamis, modifikasi, dan pelepasan memori oleh program aplikasi
  • Dukungan untuk penerjemah perintah pengguna yang disesuaikan (kerang)
  • Tabel sistem untuk membantu perangkat lunak aplikasi dalam memodifikasi mata uang, waktu, dan format tanggal (dikenal sebagai dukungan internasional)

Source Advanced MS-DOS Programming Oleh Ray Duncan


Apa yang bisa saya lakukan?

Solusi yang mungkin dilakukan adalah dengan menangkap layar (sebagai teks) dan mengurai hasilnya.

Jawaban untuk pertanyaan ini Screen capture dalam DOS mencantumkan beberapa program TSR (Terminate but Stay Resident) yang merupakan titik awal untuk Anda selidiki.

DavidPostill
sumber
13
Jawaban bagus. Hanya Pengguna Super sejati yang akan peduli sama sekali tentang MS-DOS 1.0.
Saya katakan Reinstate Monica
Terima kasih atas jawaban Anda, saya menghargainya tetapi saya ingin menemukan cara (katakanlah menggunakan fungsi kotak virtual) itu sebabnya saya tidak akan menandainya sebagai jawaban untuk saat ini.
Blake
@Blake Kemungkinan solusinya adalah dengan menangkap layar (sebagai teks) dan mengurai hasilnya. Saya telah memperbarui jawabannya.
DavidPostill
Saya minta maaf sebelumnya atas keterlambatan hasil ketika mencoba menggunakan program TSR ini. Segera setelah saya mendapatkan akses ke mesin saya, saya akan memberi tahu Anda. Ini adalah alternatif yang bagus dan saya berharap banyak bekerja dengan baik. Apakah perlu menginstal program lain (yang misalnya membuat lingkungan tsr ini)?
Blake
1
@ Blake Bukannya saya ingat, tapi sudah bertahun- tahun sejak saya menggunakan DOS. Jangan khawatir tentang keterlambatan pengujian Anda;)
DavidPostill
-3

Anda dapat menginstal C dan menulis sebuah program untuk mengambil perintah dos, menjalankannya dalam sebuah shell dan mencatat hasilnya. Saya akan merekomendasikan Anda menggunakan Borland Turbo C 2.01. Anda juga dapat menulis kode dalam Quickbasic jika Anda ingin menulis kode ... ;-)

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

Secara pribadi, saya akan menggunakan DOS 5.5 atau 6 mengingat ada beberapa hal tambahan yang akan Anda dapatkan.

Gandolf989
sumber
1
Apakah ini berfungsi di v1.25?
Blake
Dan jika demikian, dapatkah Anda memberi saya bantuan tambahan untuk menginstal C dan cara mencatat hasilnya, terima kasih banyak.
Blake
1
@Blake itu tidak bekerja di v1
edc65
Menggunakan C untuk menulis program akan menjadi jawaban yang bermanfaat, jika itu menyebutkan API yang akan Anda gunakan saat menulis program seperti itu. (Dan, tentu saja, memperhitungkan persyaratan eksplisit dalam pertanyaan bahwa kode tersebut kompatibel dengan DOS 1.x.) Jawaban ini tidak. Itu hanya spam link ke paket compiler / IDE populer, tanpa panduan tentang relevansi toolset tersebut.
Cody Gray
Kompiler C memiliki fasilitas untuk stdin dan stdout dan dapat menjalankan perintah shell. Saya tidak tahu kompiler mana yang akan bekerja di DOS 1. Jika Anda begitu khawatir tentang menjaga board, pertanyaan yang lebih baik adalah mengapa ada orang yang menulis kode untuk MS DOS 1 ...
Gandolf989