2 điểm bởi GN⁺ 2025-01-06 | 1 bình luận | Chia sẻ qua WhatsApp

Một con chó đối đầu với ngăn xếp đồ họa Windows 3.1

Giới thiệu

  • Trong quá trình tìm hiểu phần cứng VGA, tôi đã cố gắng xử lý vấn đề phát sinh khi chỉnh sửa trình điều khiển video cũ.
  • Cố gắng cài đặt Windows 3.11 trên Asus Eee PC 1000H để có đầu ra video phù hợp.

Đầu ra video mặc định của Windows 3.x

  • Mặc định, Windows 3.x render ở độ phân giải 640x480 VGA với 16 màu.
  • Trên màn hình 1024x600 của Eee PC, độ phân giải này là không phù hợp.

Vấn đề với trình điều khiển Super VGA

  • Windows 3.11 có sẵn trình điều khiển cho các card video cũ, nhưng không hỗ trợ Intel GMA 950.
  • Trình điều khiển Super VGA hỗ trợ độ phân giải 1024x768 và 256 màu, nhưng không hoạt động.

Vấn đề của video IBM PC

  • VGA là một bộ điều khiển video rất đặc thù được thiết kế bởi IBM vào thập niên 1980.
  • SVGA chỉ ra công nghệ tiến bộ hơn VGA, nhưng không phải là một tiêu chuẩn.

VBE (VESA BIOS Extensions)

  • VBE là giao diện cho phép phần mềm tương tác với bộ điều hợp video.
  • VBE9x và VBEMP của BearWindows cho phép VBE hoạt động trên Windows 9x và NT.
  • SVGAPatch đã vá trình điều khiển Super VGA 256 màu của Microsoft để sử dụng VBE.

Vấn đề của SVGAPatch

  • SVGAPatch gây ra vấn đề tương thích với phần mềm DOS.
  • Khi mở DOS prompt, màn hình sẽ bị hỏng.

Cấu trúc của Windows 3.x

  • Trong Enhanced Mode, có ba hệ điều hành chạy cùng lúc.
  • Trình quản lý máy ảo tạo máy ảo và trong máy ảo đầu tiên chạy Windows ở chế độ chuẩn.

Cấu trúc trình điều khiển hiển thị

  • Khi chọn bộ điều hợp video trong Windows Setup, nhiều trình điều khiển sẽ được cài đặt.
  • Bao gồm Grabber, Display Driver và Virtual Display Device (VDD).

Cơ chế hoạt động của SVGAPatch

  • SVGAPatch thiết lập một chế độ video cụ thể và sử dụng VBE để quản lý bộ nhớ video.
  • Nó thay thế chức năng cho một video adapter cụ thể để hỗ trợ VBE.

Vai trò của VDD

  • Các chương trình DOS mong đợi truy cập trực tiếp phần cứng.
  • Windows xử lý điều này thông qua triển khai ảo hóa.

Kết luận

  • SVGAPatch cải thiện đầu ra video tốt hơn bằng cách dùng VBE, nhưng cần giải quyết vấn đề tương thích với các chương trình DOS.
  • Việc quản lý trạng thái phức tạp của VDD có thể là nguyên nhân gây ra vấn đề.

1 bình luận

 
GN⁺ 2025-01-06
Ý kiến Hacker News
  • Điều thú vị là có thể tải Windows 3.x trên PC hiện đại và dùng ngay VGA cơ bản. Tuy nhiên, trên Linux/BSD hiện đại thì rất khó nhận được hỗ trợ framebuffer VGA tăng tốc phần mềm mặc định nếu thiếu đúng driver và tệp cấu hình.

    • Dự án xfree86 đã cố gắng giải quyết vấn đề này, nhưng bản fork của Xorg thì không duy trì cách tiếp cận đó.
  • Giao diện GUI của Windows 3.1 có vẻ trực quan, hiệu quả và dễ dùng hơn hiện tại.

  • Menu Start của Win11 khó chịu đến mức gần như chỉ có thể dùng được nếu gõ từ khóa rồi cầu nguyện.

  • Windows NT và 2k từng là trạng thái cân bằng/ổn định nhất, rồi các PM bắt đầu liên tục thay đổi mọi thứ.

  • KDE và Gnome càng về sau càng càng hấp dẫn hơn.

  • Vấn đề hình ảnh bị hỏng khi mở DOS prompt ở chế độ cửa sổ là do DOS prompt chạy trong một VM riêng.

    • Có thể BIOS ROM VGA là lớp bọc của VBE, và có thể bao gồm các lệnh IN/OUT giao tiếp với các cổng I/O của VBE.
  • Nhà phát triển driver hiển thị Windows 3.x/9x đã sử dụng cách đặt trap cổng I/O để ảo hóa truy cập phần cứng.

  • Thiết bị hiển thị ảo (VDD) đóng vai trò như bộ ghép kênh của phần cứng video, và khi ứng dụng DOS chạy toàn màn hình thì gửi lệnh trực tiếp tới bộ điều hợp VGA thực.

  • GUI của Windows 3.x chạy trong VM DOS, và nhân hypervisor VMM32 sẽ multiplexer nó cùng với các VM tiến trình DOS khác.

  • Khi viết driver framebuffer VESA cho Win9x, người ta nhận ra cách lưu/khôi phục trạng thái GPU khác nhau tùy theo nhà sản xuất.

  • Trong DOSBox, chế độ văn bản hiển thị ký tự bị hỏng; trên Eee PC, một số màu trong GUI biến mất.

  • Tôi đang chạy 32-bit Debian trên Eee PC; Firefox khá nặng, nhưng mpv đủ dùng cho video streaming.

  • Mình luôn cảm thấy kính trọng mỗi khi đọc cách các phiên bản Windows dựa trên DOS hoạt động.

  • Tôi từng liên hệ hỗ trợ kỹ thuật của Microsoft và nhận được đĩa driver khi ET4000H không được hỗ trợ ở Windows 3.1.

  • Tôi có một EEEPC 207g, và nghĩ sẽ thú vị nếu dùng nó để chơi game retro.

  • So sánh trạng thái đổi từ GUI sang chế độ DOS để tìm ra quy luật.

  • Cảm giác thoải mái khi thiết kế website gợi nhớ thời kỳ thịnh vượng nhất của Internet xưa.