Komutun çıktısını MS-DOS 1.x dosyasına kaydedin.


27

Görünüşe [COMMAND]>[FILE]göre MS-DOS'un ilk sürümlerinde çalışmıyor. MS-DOS 1.25 kullanıyorum ve yukarıdaki ifade ifade verir invalid argument.

Güncelleme : DOS 1.x 'de çalışmadığı doğru olduğu için, sanal kutunun bazı fonksiyonlarını kullanarak bu çıktının elde edilmesi ya da bazı günlük dosyalarından çıktının alınması ile söylenmesi mümkündür.


18
Neden DOS 1.25 kullanıyorsunuz ?!
Keltari

41
@Keltari: Can sıkıcı bir Windows 10 güncelleme bildirimi yok
Mark K Cowan

6
Kurulumunuzla ilgili olarak burada konulamayacak başka sorularınız varsa , bu tür şeylere adanmış başka bir SE sitesi olan Retrocomputing'i deneyin . (Tam açıklama: Bu siteye biraz bağlı olabilirim .)
wizzwizz4

4
Bu soru beni tekrar genç hissettiriyor!
Dmitry Grigoryev

9
MS-DOS 1.x, Ctrl-P'nin konsol çıktısını yazıcıya kopyalamayı tetiklediği bir CP / M klonudur. Benzer bir yaklaşım bu nedenle MS-DOS'da da mümkün olabilir.
Thorbjørn Ravn Andersen

Yanıtlar:


5

belleği doğrudan okumak için sanal makine hata ayıklama olanaklarını (veya gdb / başka bir şeyi) kullanabilirsiniz. ms-dos'da hafıza koruması yoktur ve çok görevli bir sistem değildir, bu yüzden sanal makine hafızasını okuyabilir, sanal makine girişlerini vga okuyabilirsiniz.

dokümantasyonda bir komut var.

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

çıktı almak için doğru sözdizimi şudur: run VirtualBox --debug --startvm msdos1.25, ardından, hata ayıklayıcı konsolunda: info vgatext

kopya yapıştırılmış çıktı:

The COMPAQ Personal Computer DOS                                                
Version 1.11                                                                    


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


A>                                                                              











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

Böylece, bir program çıktığında program belleğinizin içindeki bir hafıza değerine bağlı olan bir hata ayıklama komut dosyası yazabilir ve bir program çıktığında vga ekranını dökebilir / veya cpu'yu duraklatan bir komut dosyası yazabilir, içeriği sürekli olarak kaydeder, çıktı değişirse, güncellenmiş içeriği kaydeder, devam eder. cpu koşusu

Araştırılacak bazı seçenekler:

  • uygulamanızın bellek içeriğini boşaltmak için nasıl hata ayıklama komut dosyası yazılacağını bulun

  • Quemu / dosbox / virtualbox için bazı hata ayıklama vga sürücüsü / seri port / bellek boşaltma çözümünü bulun

  • Belki birileri orada bu amaç için yazmış 80'lerden bazı ESK yardımcı programı bulmak

  • Buraya freedos etiketini ekleyin (ya da sorunuzu büyük yığılma akışı üzerine taşıyın / tekrarlayın, sanırım bazı gurular bu gibi sorunlar hakkında bir şeyler bilmeli

Eğer ilginç bir şey bulursam daha sonra güncelleyeceğim, ancak neden 1.25 kullandığına ilişkin bazı detayları açıklayabilir misiniz, bu program msdos'un daha yeni sürümlerinde çalışıyor mu? Bahse girerim bu programı daha yeni bir sürüme eklemeye istekli bazı genç montaj korsanlarını bulabilirsiniz (veya asm ile dosya çıktısı ekleyin)


Bu işlem hakkında biraz ek bilgi verebilir misiniz, lütfen?
Blake

@Blake güncellendi, göründüğü gibi info vgatextçalışır , tek yapmanız gereken hata ayıklayıcı için doğru bir komut dosyası
yazmaktır (

Verdiğiniz bilgi çok ilginç. Aslında benim durumum için kesinlikle kullanılabilir. Bunu, giriş vererek ve otomatik olarak çıktı alarak nasıl çalıştığını anlamak istediğim eski uygulama için kullanıyorum. En iyi yol olmayabilir ama böyle yapmak istiyorum. Cevabınız için teşekkür ederim, sadece bu kılavuzu okumak için bir iki gün verin ve bir çeşit senaryo yazın (mümkün olması umuduyla) ve çalışıp çalışmadığı konusunda size bilgi verecektir. Çok teşekkür ederim.
Blake,

1
Cevabı işaretlememiş olsaydım, kesinlikle bunu işaretlerdim. Tüm yardımlarınız için teşekkürler.
Blake

1
Uygulamamın çıktısını bir metin olarak almam gerekiyordu. Belgelerde terminalde hata ayıklama konsolunun nasıl kullanılacağı açıklanmaktadır. VBoxManaged debugvms'leri kullanarak <daha önce debug modunda başlatılmış olan VM'nin adı> info vgatext, ekranı terminal modunda basar ve yönlendirmeleri ve ihtiyaç duyduğum şeyi elde etmeyi başardığım bir çeşit basit ayrıştırmayı kullanır. Teşekkür ederim.
Blake,

40

[COMMAND]> [FILE] MS-DOS'un ilk sürümlerinde çalışmadığı görülüyor.

MS-DOS 1.25 kullanıyorum ve yukarıdaki ifade geçersiz bir argüman veriyor

Bu doğru. V1.25'te yapmak istedikleriniz mümkün değil.

Komut yeniden yönlendirme (birçok iyileştirme ile birlikte) v2.0'da eklendi.

MS-DOS sürüm 2.0 (PC-DOS 2.0'a eşdeğer) ilk olarak Mart 1983'te piyasaya sürüldü. Geçmişe bakıldığında, yeni bir işletim sistemi (MS-DOS sürüm 1 ile uyumluluğu korumak için büyük özen gösterilmesine rağmen) yapıldı. Bir sonraki sayfada listelenenler de dahil olmak üzere birçok önemli yenilik ve geliştirilmiş özellikler içeriyordu.

  • Hem daha büyük kapasiteli disketler hem de sabit diskler için destek
  • Hiyerarşik bir dosya yapısı, dosya tanıtıcıları, G / Ç yönlendirmeleri, borular ve filtreler dahil olmak üzere birçok UNIX / XENIX benzeri özellik
  • Arka plan yazdırma (yazdırma biriktirme)
  • Birim etiketleri, artı ek dosya özellikleri
  • Yüklenebilir aygıt sürücüleri
  • Ek aygıt sürücülerinin yüklenmesini, sistem disk arabelleği sayısını vb. Kontrol eden kullanıcı tarafından özelleştirilebilir bir sistem yapılandırma dosyası
  • Programlar arasında bilgi iletmek için kullanılabilecek çevre bloklarının bakımı
  • Programların imleci konumlandırmasına ve ekran özelliklerini donanımdan bağımsız bir şekilde kontrol etmesine izin veren isteğe bağlı bir ANSI ekran sürücüsü
  • Uygulama programları tarafından dinamik ayırma, değiştirme ve hafıza açma desteği
  • Özel kullanıcı komut tercümanları (mermiler) desteği
  • Uygulama yazılımının para birimini, saati ve tarih biçimlerini değiştirmesine yardımcı olmak için sistem tabloları (uluslararası destek olarak bilinir)

Kaynak Gelişmiş MS-DOS Programlama Ray Duncan


Bunun yerine ne yapabilirim?

Olası bir geçici çözüm, ekranı yakalamak (metin olarak) ve çıktıyı ayrıştırmak olabilir.

DOS'ta yakalanan bu ekranın cevapları , araştırmanız için başlangıç ​​noktaları olan bazı TSR (Terminate ama Stay Resident) programlarını listeler.


13
Güzel cevap Yalnızca en gerçek Süper Kullanıcılar MS-DOS 1.0 ile ilgilenir.
Ben Reinstate Monica 'nın

Cevabınız için teşekkür ederim, bunu takdir ediyorum ama bir yol bulmak istiyorum (sanal kutu işlevlerini kullanarak). Bu yüzden şu an için cevap olarak işaretlemeyeceğim.
Blake

@Blake Olası geçici çözüm, ekranı yakalamak (metin olarak) ve çıktıyı ayrıştırmak olabilir. Cevabı güncelledim.
DavidPostill

Bu tsr programlarını kullanmaya çalışırken sonuçların gecikmesi için şimdiden özür dilerim. Makineme ulaşır ulaşmaz size bildiririm. Bu harika bir alternatif ve düzgün çalışmayı umuyorum. Başka programlar kurmak gerekli midir (örneğin bu tsr ortamını oluşturur)?
Blake

1
Hatırladığım o değil @Blake, ama öyle pek ben DOS kullanılan beri yıl.
Testinizdeki

-3

C komutunu kurabilir ve dos komutlarını almak için bir program yazabilir, bir kabukta çalıştırabilir ve sonuçları kaydedebilirsiniz. Borland Turbo C 2.01 kullanmanızı tavsiye ederim. Kod yazmak istiyorsanız, Quickbasic'ta da kod yazabilirsiniz ... ;-)

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

Şahsen, alabileceğiniz birkaç ek şey olduğu göz önüne alındığında DOS 5.5 veya 6'yı kullanırdım.


1
Bu v1.25'te çalışıyor mu?
Blake

Ve eğer öyleyse, C kurulumunda ve sonuçların nasıl kaydedileceği konusunda bana biraz yardım edebilir misiniz, çok teşekkür ederim.
Blake

1
@Blake v1'de çalışmaz
edc65

Bir program yazmak için C'nin kullanılması yararlı bir cevap olacaktır, eğer böyle bir program yazarken kullanacağınız API'lerden bahsetmişse. (Ve tabii ki, kodun DOS 1.x ile uyumlu olduğu sorusundaki açık gerekliliği de göz önünde bulunduruldu.) Sadece popüler bir derleyici / IDE paketine bir bağlantı gönderir ve böyle bir araç setinin uygunluğuna yol göstermez.
Cody Gray

C derleyicisi stdin ve stdout için olanaklara sahiptir ve kabuk komutlarını çalıştırabilir. Hangi derleyicinin DOS 1'de çalışacağını bilmiyorum. Yönetim kurulunu korumak konusunda endişeleriniz varsa, neden MS DOS 1 için kod yazan birisinin daha iyi bir soru ...
Gandolf989
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.