Lưu đầu ra của lệnh trong tệp MS-DOS 1.x


27

Có vẻ như [COMMAND]>[FILE]nó không hoạt động trong các phiên bản đầu của MS-DOS. Tôi đang sử dụng MS-DOS 1.25 và biểu thức trên đưa ra tuyên bố invalid argument.

Cập nhật : Vì đúng là nó không hoạt động trong DOS 1.x nên có thể lấy đầu ra đó bằng một số chức năng của hộp ảo hoặc nói bằng cách lấy đầu ra từ một số tệp nhật ký.


18
Tại sao bạn sử dụng DOS 1.25?!
Keltari

41
@Keltari: Không có thông báo cập nhật Windows 10 gây phiền nhiễu
Mark K Cowan

6
Nếu bạn có bất kỳ câu hỏi nào khác về thiết lập của bạn sẽ không có chủ đề ở đây, hãy thử Retrocomputing , một trang SE khác dành riêng cho loại điều đó. (Tiết lộ đầy đủ: Tôi có thể có một chút liên kết với trang web đó.)
wizzwizz4

4
Câu hỏi này khiến tôi cảm thấy trẻ lại!
Dmitry Grigoryev

9
MS-DOS 1.x thực chất là một bản sao CP / M, trong đó Ctrl-P kích hoạt sao chép đầu ra giao diện điều khiển vào máy in. Do đó, một cách tiếp cận tương tự cũng có thể có trong MS-DOS.
Thorbjørn Ravn Andersen

Câu trả lời:


5

bạn có thể sử dụng các phương tiện gỡ lỗi máy ảo của mình (hoặc gdb / thứ khác) để đọc bộ nhớ trực tiếp. ms-dos không có bảo vệ bộ nhớ cũng không phải là một hệ thống đa tác vụ, vì vậy bạn có thể đọc bộ nhớ máy ảo, bạn có thể đọc vga máy ảo cho đầu vào.

tài liệu nói rằng có tồn tại một lệnh

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

cú pháp đúng để nhận đầu ra là: run VirtualBox --debug --startvm msdos1.25, sau đó, trong bảng điều khiển gỡ lỗi: info vgatext

đầu ra dán sao chép:

The COMPAQ Personal Computer DOS                                                
Version 1.11                                                                    


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


A>                                                                              











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

Vì vậy, bạn có thể viết tập lệnh gỡ lỗi móc vào giá trị bộ nhớ trong bộ nhớ chương trình của bạn và bỏ màn hình vga khi chương trình xuất / hoặc bạn có thể viết tập lệnh tạm dừng cpu, lưu nội dung một cách nhất quán, nếu đầu ra thay đổi, lưu nội dung cập nhật, tiếp tục cpu chạy

Một số tùy chọn để điều tra là:

  • tìm cách viết tập lệnh gỡ lỗi để bỏ nội dung bộ nhớ trong ứng dụng của bạn

  • tìm một số giải pháp gỡ lỗi trình điều khiển vga / cổng nối tiếp / bộ nhớ cho quemu / dosbox / virtualbox

  • tìm một số chương trình tiện ích OLD từ những năm 80 mà có lẽ ai đó đã viết lại ở đó cho mục đích này

  • thêm thẻ freedo ở đây (hoặc thậm chí di chuyển / lặp lại câu hỏi của bạn trên stackoverflow lớn, tôi cho rằng một số bậc thầy nên biết một điều về các vấn đề như thế này

Tôi sẽ cập nhật sau nếu tôi thấy điều gì đó thú vị, nhưng bạn có thể vui lòng tiết lộ một số chi tiết về lý do tại sao bạn sử dụng 1.25, chương trình này có hoạt động trên các phiên bản mới hơn của msdos không? Tôi cá là bạn có thể tìm thấy một số hacker lắp ráp trẻ mong muốn vá chương trình này lên phiên bản mới hơn (hoặc thêm đầu ra tệp bằng asm) với một khoản phí nhỏ


Bạn có thể cho một số thông tin bổ sung về quá trình đó, xin vui lòng?
Blake

@Blake được cập nhật, có vẻ như info vgatexthoạt động sau tất cả những gì bạn phải làm là viết một kịch bản chính xác cho trình gỡ lỗi có vẻ như
lạqargo

Thông tin bạn đưa ra rất thú vị. Trong thực tế nó có thể hoàn toàn có thể sử dụng cho tình huống của tôi. Tôi đang sử dụng ứng dụng này cho ứng dụng cũ mà tôi muốn hiểu cách thức hoạt động của nó bằng cách cho nó nhập và nhận đầu ra tự động. Nó có thể không phải là cách tốt nhất nhưng tôi muốn làm như thế này. Cảm ơn bạn đã trả lời, chỉ cần cho tôi một hoặc hai ngày để đọc hướng dẫn này và viết một số loại kịch bản (hy vọng nó có thể) và sẽ cung cấp cho bạn thông tin về việc nó có hoạt động không. Cảm ơn bạn rất nhiều.
Blake

1
Nếu tôi chưa đánh dấu câu trả lời, tôi chắc chắn sẽ đánh dấu câu này. Cảm ơn tất cả những người giúp đỡ của bạn.
Blake

1
Tôi cần phải lấy đầu ra của ứng dụng của tôi dưới dạng văn bản. Trong tài liệu được đề cập cách sử dụng bảng điều khiển gỡ lỗi trong thiết bị đầu cuối. Sử dụng gỡ lỗi VBoxManaged <tên của chế độ gỡ lỗi VM> thông tin vgatext, nó in cho bạn màn hình ở chế độ đầu cuối và chúng sử dụng chuyển hướng và một số phân tích cú pháp đơn giản mà tôi quản lý để có được những gì tôi cần. Cảm ơn bạn.
Blake

40

Có vẻ như [THÔNG TIN]> [TẬP TIN] không hoạt động trong các phiên bản đầu của MS-DOS.

Tôi đang sử dụng MS-DOS 1.25 và biểu thức trên đưa ra câu lệnh không hợp lệ

Đúng rồi. Những gì bạn muốn làm là không thể trong v1.25.

Chuyển hướng lệnh (cùng với nhiều cải tiến khác) đã được thêm vào trong v2.0.

MS-DOS phiên bản 2.0 (tương đương với PC-DOS 2.0) được phát hành lần đầu tiên vào tháng 3 năm 1983. Nhìn lại, nó là một hệ điều hành mới (mặc dù rất cẩn thận để duy trì khả năng tương thích với MS-DOS phiên bản 1). Nó chứa nhiều đổi mới quan trọng và các tính năng nâng cao, bao gồm cả những tính năng được liệt kê trên trang sau.

  • Hỗ trợ cho cả đĩa mềm và đĩa cứng dung lượng lớn hơn
  • Nhiều tính năng giống UNIX / XENIX, bao gồm cấu trúc tệp phân cấp, xử lý tệp, chuyển hướng I / O, đường ống và bộ lọc
  • In nền (in spooling)
  • Nhãn khối lượng, cộng với các thuộc tính tệp bổ sung
  • Trình điều khiển thiết bị có thể cài đặt
  • Tệp cấu hình hệ thống có thể tùy chỉnh của người dùng kiểm soát việc tải thêm trình điều khiển thiết bị, số lượng bộ đệm đĩa hệ thống, v.v.
  • Bảo trì các khối môi trường có thể được sử dụng để truyền thông tin giữa các chương trình
  • Trình điều khiển hiển thị ANSI tùy chọn cho phép các chương trình định vị con trỏ và điều khiển các đặc điểm hiển thị theo cách độc lập với phần cứng
  • Hỗ trợ phân bổ động, sửa đổi và giải phóng bộ nhớ bằng các chương trình ứng dụng
  • Hỗ trợ cho trình thông dịch lệnh người dùng tùy chỉnh (shell)
  • Các bảng hệ thống để hỗ trợ phần mềm ứng dụng sửa đổi các định dạng tiền tệ, thời gian và ngày (được gọi là hỗ trợ quốc tế)

Nguồn lập trình MS-DOS nâng cao của Ray Duncan


Tôi có thể làm gì thay thế?

Một cách giải quyết khác có thể là chụp màn hình (dưới dạng văn bản) và phân tích đầu ra.

Các câu trả lời cho câu hỏi này Chụp màn hình trong DOS liệt kê một số chương trình TSR (Chấm dứt nhưng vẫn tồn tại) là điểm khởi đầu để bạn điều tra.


13
Câu trả lời tốt đẹp. Chỉ có những người dùng siêu thực nhất mới quan tâm đến MS-DOS 1.0.
Tôi nói phục hồi Monica

Cảm ơn câu trả lời của bạn, tôi đánh giá cao nó nhưng tôi muốn tìm một cách (nói sử dụng các chức năng hộp ảo) đó là lý do tại sao tôi sẽ không đánh dấu nó là câu trả lời cho thời điểm này.
Blake

@Blake Cách giải quyết có thể là chụp màn hình (dưới dạng văn bản) và phân tích đầu ra. Tôi đã cập nhật câu trả lời.
DavidPostill

Tôi xin lỗi trước sự chậm trễ của kết quả khi cố gắng sử dụng các chương trình tsr này. Ngay sau khi tôi truy cập vào máy của mình, tôi sẽ cho bạn biết. Nó là sự thay thế tuyệt vời và tôi hy vọng rất nhiều để làm việc đúng. Có cần thiết phải cài đặt bất kỳ chương trình nào khác không (ví dụ như tạo môi trường tsr này)?
Blake

1
@Blake Không phải tôi có thể nhớ, nhưng đã nhiều năm kể từ khi tôi sử dụng DOS. Đừng lo lắng về sự chậm trễ trong quá trình kiểm tra của bạn;)
DavidPostill

-3

Bạn có thể cài đặt C và viết chương trình để nhận lệnh dos, chạy chúng trong shell và ghi lại kết quả. Tôi khuyên bạn nên sử dụng Borland Turbo C 2.01. Bạn cũng có thể viết mã bằng Quickbasic nếu bạn đang muốn viết mã ... ;-)

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

Cá nhân, tôi sẽ sử dụng DOS 5.5 hoặc 6 nếu có thêm một vài thứ mà bạn sẽ nhận được.


1
Làm công việc này trong v1.25?
Blake

Và nếu vậy, bạn có thể cho tôi một số trợ giúp bổ sung về việc cài đặt C và cách đăng nhập kết quả không, cảm ơn bạn rất nhiều.
Blake

1
@Blake nó không hoạt động trong v1
edc65

Sử dụng C để viết chương trình sẽ là một câu trả lời hữu ích, nếu nó đề cập đến các API mà bạn sẽ sử dụng khi viết một chương trình như vậy. (Và, tất nhiên, đã tính đến yêu cầu rõ ràng trong câu hỏi rằng mã có tương thích với DOS 1.x.) Câu trả lời này không. Nó chỉ spam một liên kết đến gói trình biên dịch / IDE phổ biến, không có hướng dẫn về mức độ liên quan của bộ công cụ như vậy.
Cody Grey

Trình biên dịch C có các tiện ích cho stdin và stdout và nó có thể chạy các lệnh shell. Tôi không biết trình biên dịch nào sẽ hoạt động trong DOS 1. Nếu bạn quá quan tâm đến việc duy trì bảng, một câu hỏi hay hơn là tại sao mọi người sẽ viết mã cho MS DOS 1 ...
Gandolf989
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.