2 คะแนน โดย GN⁺ 2025-01-06 | 1 ความคิดเห็น | แชร์ทาง WhatsApp

One Dog v. สแตกกราฟิก Windows 3.1

บทนำ

  • ขณะศึกษาฮาร์ดแวร์ VGA ได้พยายามแก้ปัญหาที่เกิดขึ้นขณะแก้ไขไดรเวอร์วิดีโอเก่า
  • พยายามติดตั้ง Windows 3.11 บน Asus Eee PC 1000H เพื่อให้ได้ผลลัพธ์การแสดงผลวิดีโอที่เหมาะสม

การแสดงผลวิดีโอพื้นฐานของ Windows 3.x

  • โดยค่าเริ่มต้น Windows 3.x เรนเดอร์ภาพด้วยความละเอียด VGA 640x480 และ 16 สี
  • ที่หน้าจอ 1024x600 ของ Eee PC ความละเอียดนี้ไม่เหมาะสม

ปัญหาของไดรเวอร์ Super VGA

  • Windows 3.11 มีไดรเวอร์สำหรับอะแดปเตอร์วิดีโอรุ่นเก่า แต่ไม่รองรับ Intel GMA 950
  • ไดรเวอร์ Super VGA รองรับความละเอียด 1024x768 และ 256 สี แต่ไม่ทำงาน

ปัญหาวิดีโอของ IBM PC

  • VGA เป็นวิดีโอคอนโทรลเลอร์ที่ออกแบบไว้เฉพาะมากโดย IBM ในทศวรรษ 1980
  • SVGA หมายถึงเทคโนโลยีที่ก้าวหน้ากว่า VGA แต่ไม่ได้เป็นมาตรฐาน

VBE (VESA BIOS Extensions)

  • VBE เป็นอินเทอร์เฟซที่ทำให้ซอฟต์แวร์สามารถโต้ตอบกับอะแดปเตอร์วิดีโอได้
  • VBE9x และ VBEMP ของ BearWindows ช่วยให้สามารถใช้ VBE ได้บน Windows 9x และ NT
  • SVGAPatch แพตช์ไดรเวอร์ Super VGA 256 สีของ Microsoft เพื่อให้รองรับ VBE

ปัญหาของ SVGAPatch

  • SVGAPatch ทำให้เกิดปัญหาความเข้ากันได้กับซอฟต์แวร์ DOS
  • เมื่อเปิด DOS Prompt หน้าจอจะเสียหาย

โครงสร้าง Windows 3.x

  • ใน Enhanced Mode มีระบบปฏิบัติการถึง 3 ตัวทำงานพร้อมกัน
  • ตัวจัดการเครื่องเสมือนสร้างเครื่องเสมือนได้ และในเครื่องเสมือนตัวแรกจะรัน Windows โหมดมาตรฐาน

โครงสร้างไดรเวอร์แสดงผล

  • เมื่อเลือกอะแดปเตอร์วิดีโอใน Windows Setup จะมีการติดตั้งไดรเวอร์หลายตัว
  • ประกอบด้วย Grabber, Display Driver และ Virtual Display Device (VDD)

หลักการทำงานของ SVGAPatch

  • SVGAPatch ตั้งค่าโหมดวิดีโอเฉพาะ และจัดการหน่วยความจำวิดีโอด้วยการใช้ VBE
  • มันแทนที่ฟังก์ชันของอะแดปเตอร์วิดีโอบางตัวเพื่อรองรับ VBE

บทบาทของ VDD

  • โปรแกรม DOS คาดหวังว่าจะเข้าถึงฮาร์ดแวร์โดยตรง
  • Windows จัดการปัญหานี้ผ่านการทำงานแบบเสมือน

บทสรุป

  • SVGAPatch ช่วยให้ได้การแสดงผลวิดีโอที่ดีกว่าโดยใช้ VBE แต่ยังคงต้องแก้ปัญหาความเข้ากันได้กับโปรแกรม DOS
  • ความซับซ้อนของการจัดการสถานะใน VDD อาจเป็นสาเหตุของปัญหา

1 ความคิดเห็น

 
GN⁺ 2025-01-06
ความคิดเห็นจาก Hacker News
  • น่าทึ่งที่ในพีซียุคใหม่สามารถโหลด Windows 3.x และใช้งาน VGA ค่าเริ่มต้นได้ทันทีได้ อย่างไรก็ตามบน Linux/BSD สมัยใหม่ หากไม่มีไดรเวอร์และไฟล์กำหนดค่าที่ถูกต้อง การได้รับการรองรับ VGA framebuffer ที่เร่งความเร็วด้วยซอฟต์แวร์โดยค่าเริ่มต้นก็มักทำได้ยาก

    • โครงการ xfree86 เคยพยายามแก้ปัญหานี้ แต่ในฟอร์กของ Xorg แนวทางนั้นไม่ได้ถูกสืบทอดต่อ
  • ดูแล้ว GUI ของ Windows 3.1 ดูเป็นธรรมชาติ ทำงานมีประสิทธิภาพ และใช้งานง่ายกว่าเวอร์ชันปัจจุบัน

  • เมนู Start ของ Win11 แทบไม่สามารถใช้งานได้เลย นอกจากการพิมพ์คีย์เวิร์ดและการอธิษฐาน

  • Windows NT และ 2k เป็นจุดที่สมบูรณ์ที่สุด แล้วหลังจากนั้นผู้จัดการผลิตภัณฑ์ก็เริ่มเปลี่ยนแปลง

  • KDE และ Gnome ดูน่าดึงดูดมากขึ้นตามกาลเวลา

  • ปัญหาจอเสียหายเมื่อเปิด DOS Prompt แบบหน้าต่างเกิดจาก DOS Prompt ทำงานใน VM แยกต่างหาก

    • BIOS ของ VGA ROM อาจเป็น wrapper ของ VBE ซึ่งอาจรวมคำสั่ง IN และ OUT ที่สื่อสารกับพอร์ต I/O ของ VBE
  • ผู้พัฒนาไดรเวอร์แสดงผลใน Windows 3.x/9x ใช้การตั้งค่า I/O port trap เพื่อเสมือนการเข้าถึงฮาร์ดแวร์

  • Virtual Display Device (VDD) ทำหน้าที่เป็นตัวมัลติเพล็กเซอร์ของฮาร์ดแวร์วิดีโอ และเมื่อแอป DOS อยู่ในโหมดเต็มหน้าจอ ก็ส่งคำสั่งไปยังอะแดปเตอร์ VGA แท้ ๆ โดยตรง

  • GUI ของ Windows 3.x รันอยู่ใน DOS VM และไฮเปอร์ไวเซอร์เคอร์เนล VMM32 ทำการมัลติเพล็กซ์มันกับ VM กระบวนการ DOS อื่นๆ

  • ขณะเขียนไดรเวอร์ VESA framebuffer ของ Win9x ได้พบว่าแต่ละผู้ผลิตมีวิธีเก็บและคืนค่าระบบ GPU ของตนเอง

  • ใน DOSBox โหมดข้อความแสดงผลตัวอักษรที่เสียหาย และบน Eee PC สีก็หายไปจากบางส่วนของ GUI

  • ตอนนี้รัน Debian 32-bit บน Eee PC อยู่ และแม้ว่า Firefox จะหนักเกินไป แต่ mpv ทำงานได้เพียงพอสำหรับการสตรีมวิดีโอ

  • เมื่ออ่านว่าระบบ Windows รุ่นเก่าแบบ DOS เดิมทำงานอย่างไร มักรู้สึกทึ่งเสมอ

  • เคยมีประสบการณ์ติดต่อฝ่ายสนับสนุนของ MS เพื่อขอรับดิสก์ไดรเวอร์ตอนที่ ET4000H ไม่รองรับใน Windows 3.1

  • มี EEEPC 207g อยู่ และคิดว่ามันคงสนุกมากถ้าใช้เครื่องนี้ลองเล่นเกมเรโทร

  • วิเคราะห์รูปแบบโดยเปรียบเทียบการเปลี่ยนแปลงสถานะระหว่าง GUI กับ DOS mode

  • การออกแบบของเว็บไซต์ทำให้นึกถึงยุคทองของอินเทอร์เน็ตในอดีต และรู้สึกสดชื่น