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 ความคิดเห็น
ความคิดเห็นจาก Hacker News
น่าทึ่งที่ในพีซียุคใหม่สามารถโหลด Windows 3.x และใช้งาน VGA ค่าเริ่มต้นได้ทันทีได้ อย่างไรก็ตามบน Linux/BSD สมัยใหม่ หากไม่มีไดรเวอร์และไฟล์กำหนดค่าที่ถูกต้อง การได้รับการรองรับ VGA framebuffer ที่เร่งความเร็วด้วยซอฟต์แวร์โดยค่าเริ่มต้นก็มักทำได้ยาก
ดูแล้ว GUI ของ Windows 3.1 ดูเป็นธรรมชาติ ทำงานมีประสิทธิภาพ และใช้งานง่ายกว่าเวอร์ชันปัจจุบัน
เมนู Start ของ Win11 แทบไม่สามารถใช้งานได้เลย นอกจากการพิมพ์คีย์เวิร์ดและการอธิษฐาน
Windows NT และ 2k เป็นจุดที่สมบูรณ์ที่สุด แล้วหลังจากนั้นผู้จัดการผลิตภัณฑ์ก็เริ่มเปลี่ยนแปลง
KDE และ Gnome ดูน่าดึงดูดมากขึ้นตามกาลเวลา
ปัญหาจอเสียหายเมื่อเปิด DOS Prompt แบบหน้าต่างเกิดจาก DOS Prompt ทำงานใน VM แยกต่างหาก
ผู้พัฒนาไดรเวอร์แสดงผลใน 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
การออกแบบของเว็บไซต์ทำให้นึกถึงยุคทองของอินเทอร์เน็ตในอดีต และรู้สึกสดชื่น