1 điểm bởi GN⁺ 3 giờ trước | 1 bình luận | Chia sẻ qua WhatsApp
  • 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...

    • Có lẽ đây là lần đầu tôi thấy một commit được ghi là 49 năm trước
    • Tôi vẫn nhớ lúc nhận ra rằng dù dùng Commodore 64, thực ra mình vẫn đang dùng Microsoft
    • Điều thú vị là chính Microsoft BASIC lại bắt nguồn từ BASIC-PLUS, còn BASIC-PLUS thì xuất phát từ Dartmouth BASIC
      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

    • Đúng, nhưng phần assembly đó không phải là DOS, và cũng chẳng hề dễ
      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
    • Nói công bằng thì chắc cũng cần một doanh nhân lạnh lùng để lèo lái công ty. Bây giờ phần lớn vẫn vậy
    • Tôi lại cảm thấy gần như ngược lại. Thật sự là phải có đúng người, đúng chỗ, đúng thời điểm
    • Điều đáng kinh ngạc là ngay cả với những bộ xử lý và hệ thống đơn giản như thế mà cũng đã như vậy. Không có bảng mô tả, không có cấu hình quản lý bộ nhớ
      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
    • Nếu thay assembly bằng TypeScript/Rust/Go thì nguyên lý đó đến giờ vẫn đúng, miễn là ý tưởng tốt và hữu ích
  • 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 muốn nghe thêm về việc thứ gì hoạt động tốt trong OCR cho font dot-matrix
      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
    • Tôi từng quét một danh sách tìm thấy trong đống giấy tờ của cha mình và nhờ đó khôi phục được một phần phần mềm cũ mà trước đây tôi từng viết
    • Đây lại là thêm một ví dụ cho thấy văn bản in trên giấy sống lâu hơn bất kỳ thiết bị lưu trữ số nào
  • 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ế

    • Chi tiết của câu chuyện này gần như chỗ nào cũng còn tranh cãi, ngay cả giữa chính những người trong cuộc. Có lẽ chỉ chắc chắn được ý lớn là đã có một cuộc họp không suôn sẻ
  • 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

    • Nếu đến ngày codebase Windows 2000 được mở nguồn hoặc công bố mã, chắc tôi có thể chết mãn nguyệ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
    • Tôi nghĩ disassemble nó chắc không khó lắm
    • Tôi đoán có thể cũng không còn xa. Tôi có cảm giác Microsoft gần như đang đi đến hồi kết với Windows như một nền tảng
    • Ngay cả Windows 3.11 đời đầu thôi chắc cũng có rất nhiều thứ truyền cảm hứng và đáng để học
    • Có vẻ họ công bố muộn hơn vài chục năm so với thời điểm còn đủ sức gây hứng thú
  • 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ệ

    • Đôi khi tôi nghĩ chính việc mô hình tinh thần về máy tính của mình vẫn là Apple ][+ với 48KB RAM khiến tôi viết mã tốt hơn
    • Từ khá lâu rồi đã có rất nhiều lập trình viên hoàn toàn không hiểu các khái niệm cấp thấp. Họ bắt đầu với JavaScript hoặc Python và chưa từng nhìn xuống bên dưới, nên gần như chẳng có giới hạn nào cho những cấu trúc quái vật mà họ xem là bình thường
      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
    • DOS và “tuyệt vời” trong cùng một câu cơ à...
  • Đâ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...