- Microsoft đã công bố các tư liệu DOS ban đầu có niên đại từ trước khi cái tên MS-DOS xuất hiện, cho thấy giai đoạn phát triển còn sớm hơn những gì từng được công khai trước đây
- Tài liệu được công bố bao gồm mã nguồn kernel của 86-DOS 1.00, nhiều bản snapshot phát triển của kernel PC-DOS 1.00, cùng các tiện ích như CHKDSK
- Tim Paterson đã tạo ra 86-DOS cho bộ kit máy tính Intel 8086 của Seattle Computer Products, và hệ điều hành này cũng từng được biết đến với tên QDOS
- Microsoft đã cấp phép 86-DOS để làm hệ điều hành cho IBM PC 5150, thuê Paterson rồi mua lại toàn bộ quyền, sau đó mở rộng thành PC-DOS và MS-DOS
- Đoạn mã lần này không được khôi phục từ bản lưu trữ số mà được chép tay và quét lại từ bản in trên giấy của Paterson, qua đó mở rộng phạm vi tư liệu nghiên cứu về các hệ điều hành PC thời kỳ đầu
Mã nguồn DOS sơ khai được công bố
- Microsoft đã công bố “mã nguồn DOS lâu đời nhất trong số các mã nguồn DOS mà hãng từng công khai”
- Lần công bố này truy ngược đến cả đoạn mã từ trước khi cái tên MS-DOS ra đời, và trong bài viết của Microsoft có mã nguồn kernel
86-DOS 1.00, nhiều bản snapshot phát triển của kernel PC-DOS 1.00, cùng các tiện ích như CHKDSK
- Vì đây là tư liệu có niên đại sớm hơn những mã nguồn MS-DOS từng được công bố trước đó, nên có thể quan sát quá trình phát triển DOS từ giai đoạn đầu hơn nữa
Con đường từ 86-DOS đến MS-DOS
- Tim Paterson ban đầu tạo ra 86-DOS cho bộ kit máy tính nền tảng Intel 8086 do Seattle Computer Products bán ra
- 86-DOS trước đó còn được biết đến với tên QDOS, viết tắt của “quick and dirty operating system”
- Microsoft đã cấp phép 86-DOS để cung cấp hệ điều hành cho IBM PC 5150 khi đó vẫn còn đang phát triển, đồng thời thuê Paterson tiếp tục phát triển nó
- Sau đó Microsoft mua đứt quyền đối với 86-DOS, cấp phép cho IBM dưới tên PC-DOS nhưng vẫn giữ quyền bán cho các công ty khác
- Phiên bản do Microsoft bán ra được gọi là MS-DOS, và trở thành hệ điều hành được sử dụng rộng rãi khi các máy tương thích IBM PC của bên thứ ba lan rộng trong thập niên 1980 và 1990
Đoạn mã được phục dựng từ bản in giấy
- Mã nguồn lần này đã quá cũ nên không được lưu trữ dưới dạng số
- Một nhóm sử gia và chuyên gia bảo tồn do Yufeng Gao và Rich Cini dẫn dắt, dưới tên “DOS Disassembly Group”, đã chép tay và quét lại đoạn mã từ các bản in giấy do Paterson cung cấp
- Do chất lượng của các bản in đã tồn tại hàng chục năm, phần mềm OCR hiện đại khó có thể xử lý chính xác, khiến công việc phục dựng càng trở nên phức tạp
Các đợt công bố và xu hướng bảo tồn liên quan
- Microsoft đã công bố mã nguồn mở MS-DOS 1.25 và 2.0 vào năm 2014, rồi mở lại mã nguồn vào năm 2018
- Năm 2024, hãng cũng công bố mã nguồn MS-DOS 4.0 được mô tả là một phiên bản khác thường, và các phiên bản này đều nằm trong cùng kho GitHub
- Đợt công bố lần này không phải là tư liệu liên quan đến 86-DOS đầu tiên được tái phát hiện trong thập niên 2020; hai năm trước, phiên bản 86-DOS sớm nhất từng được biết đến đã được tái phát hiện và tải lên Internet Archive
- Việc công bố đồng thời đoạn mã từ trước thương hiệu MS-DOS, các snapshot phát triển và các tiện ích đã mở rộng thêm nguồn tư liệu gốc để nghiên cứu lịch sử hệ điều hành PC thời kỳ đầu
1 bình luận
Ý kiến trên Hacker News
Hiếm khi nói câu này, nhưng cảm ơn Microsoft. Thật ra, quan trọng ngang với DOS, thậm chí có thể còn hơn, là BASIC do Microsoft tạo ra
Điều họ thực sự muốn làm là BASIC, còn DOS là bước đệm giúp họ giành được hợp đồng với IBM. Trong nhiều thập kỷ, Microsoft gần với một công ty công cụ cho nhà phát triển làm hệ điều hành và phần mềm khác như nghề tay trái, và họ cũng đã công bố mã BASIC đó dưới dạng mã nguồn mở https://opensource.microsoft.com/blog/2025/09/03/microsoft-o...
Dartmouth BASIC về sau phát triển thành SBASIC (Structured BASIC), một ngôn ngữ lập trình có cấu trúc, nhưng chính sự phổ biến của Microsoft BASIC lại khiến việc chuẩn hóa ANSI của SBASIC bị chững lại
https://en.wikipedia.org/wiki/Microsoft_BASIC
Trình thông dịch Altair BASIC được Paul Allen và Bill Gates phát triển bằng cách dùng trình giả lập Intel 8080 mà họ tự làm trên minicomputer PDP-10, còn phương ngữ Microsoft thì được phỏng theo BASIC-PLUS của DEC mà Gates từng dùng hồi trung học
https://en.wikipedia.org/wiki/Dartmouth_BASIC
Dartmouth BASIC là phiên bản BASIC gốc do John G. Kemeny và Thomas E. Kurtz tạo ra, cùng với DTSS đã cung cấp môi trường lập trình tương tác cho sinh viên đại học và toàn bộ thành viên trong trường. Năm 1975, họ đưa ra SBASIC với các khái niệm lập trình có cấu trúc, và đây trở thành nền tảng cho nỗ lực ANSI “Standard BASIC” vào đầu thập niên 1980
Nhưng đến cuối thập niên 1980, hàng chục triệu máy tính gia đình đã chạy các biến thể của trình thông dịch MS BASIC, khiến nó trở thành chuẩn thực tế, và cuối cùng nỗ lực ANSI SBASIC bị dừng lại. Kemeny và Kurtz tiếp tục các ý tưởng đó để tạo ra True BASIC, nhưng tính đến tháng 2 năm 2026, trang web TrueBASIC đã chính thức đóng cửa
https://en.wikipedia.org/wiki/True_BASIC
Thật ghen tị khi ngày đó chỉ cần viết vài nghìn dòng assembly là đã có thể khởi nghiệp một công ty phần mềm thành công
Microsoft không tự viết mã DOS mà là mua lại. Dĩ nhiên sau đó họ có phát triển và chỉnh sửa tiếp, nhưng đó giống một thương vụ kinh doanh khôn ngoan và gặp thời hơn là một thành tựu kỹ thuật
Khởi đầu thực sự của Microsoft là trước đó, khi Allen, Gates và Davidoff tạo ra trình thông dịch Altair BASIC, và đó là một thành tựu đáng kể
Họ thậm chí còn chưa từng nhìn thấy chiếc máy mục tiêu, cũng không sở hữu nó. Họ đã làm việc suốt 8 tuần trên máy tính của trường đại học mà lẽ ra không được phép dùng
“Altair đã đồng ý gặp để bàn về khả năng mua một trình thông dịch BASIC, nhưng Gates và Allen thì không có cả trình thông dịch BASIC lẫn hệ thống Altair. Allen đã tạo sẵn một trình giả lập Intel 8008 chạy trên máy tính chia sẻ thời gian PDP-10, rồi sửa nó theo hướng dẫn lập trình cho Altair để phát triển và kiểm thử trình thông dịch trên PDP-10 của Harvard.”
Trình thông dịch hoàn chỉnh vừa khít trong 4KB bộ nhớ, bao gồm cả hệ thống vào/ra riêng và trình soạn thảo dòng, mà vẫn còn đủ chỗ cho chương trình cần được thông dịch. Để chuẩn bị trình diễn, họ lưu trình thông dịch hoàn chỉnh lên băng đục lỗ mà Altair có thể đọc được, rồi Paul Allen bay tới Albuquerque để gặp Altair
Ngay trước khi hạ cánh, Allen nhận ra mình đã quên bootloader để nạp băng vào bộ nhớ, nên ông hoàn thành chương trình bằng mã máy 8080 trước khi máy bay đáp xuống. Chỉ sau khi nạp chương trình vào Altair và thấy hiện lên lời nhắc hỏi dung lượng bộ nhớ hệ thống, Gates và Allen mới biết trình thông dịch của họ thật sự chạy được trên phần cứng Altair
https://en.wikipedia.org/wiki/Altair_BASIC
Ngày nay chỉ để bắt đầu thôi cũng cần một bộ xử lý nhỏ khác nằm bên trong bộ xử lý chính. Đó đúng là thời hoàng kim
Thảo luận về mã nguồn khi đó ở đây. 24 ngày trước, 79 điểm, 19 bình luận https://news.ycombinator.com/item?id=47957494
Cũng có thảo luận về bản clone trên GitHub. 162 điểm, 15 bình luận https://news.ycombinator.com/item?id=47946813
Đáng ngạc nhiên là họ còn phải đọc lại bản in trên giấy bằng OCR
Mã nguồn này cũ đến mức không hề được lưu trữ dưới dạng số, và một nhóm sử gia cùng chuyên gia lưu trữ mang tên “DOS Disassembly Group”, do Yufeng Gao và Rich Cini dẫn dắt, đã phải vất vả chép lại và quét mã từ các bản in giấy do Paterson cung cấp. Chất lượng các bản in đã vài chục năm tuổi được cho là khiến cả phần mềm OCR hiện đại cũng gặp khó khăn
Tôi từng OCR được bản in từ máy in letter-quality lên khoảng 97%, chủ yếu lỗi ở O và X
Nhưng các hệ thống nhận dạng văn bản dựa trên machine learning ngày nay dường như cũng thiên về việc từ chối mã máy tính vì nó không giống ngôn ngữ của con người
Câu chuyện Microsoft bước vào mảng hệ điều hành khá thú vị. IBM muốn hệ điều hành CP/M, nhưng Digital Research đã không ký NDA của IBM, và đó trở thành một ngã rẽ lớn trong lịch sử điện toán
Trích từ kịch bản truyền hình “Triumph of the Nerds”:
https://www.pbs.org/nerds/part2.html
Jack Sams (IBM) nghĩ rằng Microsoft có một gói bao gồm cả ngôn ngữ BASIC lẫn hệ điều hành, nhưng IBM đã không thực sự thẩm tra trước
Theo Steve Ballmer, IBM nghĩ Microsoft có thể cấp phép CP/M cho máy tính cá nhân mới vì Microsoft từng bán CP/M kèm sản phẩm SoftCard. Microsoft trả lời: “Chúng tôi không làm mảng đó”
Jack Sams kể rằng Bill Gates giải thích Microsoft không có quyền đó, nhưng Gary Kildall có lẽ đã sẵn sàng, nên ngay tại chỗ ông gọi cho Gary ở Digital Research để nhờ tiếp đón phía IBM tử tế
Tôi tự hỏi còn phải chờ bao lâu nữa mới thấy mã nguồn của các phiên bản Windows sớm nhất được công bố. Chỉ riêng việc mã DOS cổ như thế này vẫn còn tồn tại cũng đủ để hy vọng mã Windows đời đầu cũng đã được bảo tồn
Dĩ nhiên đến lúc ngay cả tia hy vọng về khả năng đó xuất hiện thì có lẽ tôi đã chết từ lâu rồi. Đó thực sự là một hệ điều hành đẹp và chạy rất mượt
Bài liên quan gần đây: Microsoft open sources DOS 1.00 on 45th anniversary - https://news.ycombinator.com/item?id=47957494 - tháng 4 năm 2026, 19 bình luận
Những ngày đầu của điện toán hiện đại thật sự rực rỡ. Chúng ta đối xử với máy đúng như một cỗ máy
Hiệu năng, sáng tạo và khoa học đều cần thiết để làm cho một máy 386 chạy đúng cách. Giờ thì tôi không thích cái kiểu chỉ chất thư viện, ảo hóa, rồi mã tệ chồng lên mã tệ chồng lên mã tệ
Linus Torvalds cũng đã nói điều gì đó tương tự vài tháng trước khi bàn về các công cụ lập trình AI. Thế hệ của ông ấy, và cả thế hệ của tôi, may mắn vì bắt đầu từ tầng thấp và có thể giữ được cảm nhận về toàn bộ stack, còn bọn trẻ bây giờ thì khó có cơ hội đó
Nếu trải nghiệm lập trình đầu tiên của một đứa trẻ là một chatbot trông như thiên tài, thì có lẽ sẽ không dễ để hình thành mức độ cảm nhận đó về máy tính, thuật toán và cấu trúc dữ liệu
Đây đúng là mã nguồn cổ nhất, nhưng binary 86-DOS v0.1-C còn xuất hiện sớm hơn mã v1.00 này, và v0.34 cũng đã được tìm thấy; bạn có thể tải về và chạy trong trình giả lập :-)
https://arstechnica.com/gadgets/2024/01/the-oldest-known-ver...