← กลับไปยังบทความทั้งหมด

หน้าโค้ดฮาร์ดแวร์ (Hardware Code Page)

สรุปใจความสำคัญ

  • หน้าโค้ดฮาร์ดแวร์ (HWCP) คือชุดตัวอักษรที่ถูกจัดเก็บไว้ใน ROM ของอุปกรณ์ เช่น การ์ดจอหรือเครื่องพิมพ์ ทำให้ไม่สามารถแก้ไขโดยผู้ใช้ได้
  • ใช้สำหรับการแสดงผลข้อความเริ่มต้น เช่น ข้อความจาก BIOS ก่อนที่ระบบปฏิบัติการจะโหลดฟอนต์หรือเข้าสู่โหมดกราฟิก
  • หน้าโค้ด OEM เป็นกลุ่มที่ใหญ่กว่าหน้าโค้ดฮาร์ดแวร์ โดยรวมถึงทั้งฟอนต์ใน ROM และฟอนต์ที่สามารถดาวน์โหลดลงใน RAM ของอุปกรณ์ได้
  • ในระบบ DOS และ Windows 9x ต้องระบุค่า HWCP ใน CONFIG.SYS เพื่อให้ระบบปฏิบัติการจัดการการสลับหน้าโค้ดได้อย่างถูกต้อง

ในระบบคอมพิวเตอร์ หน้าโค้ดฮาร์ดแวร์ (Hardware Code Page หรือ HWCP) หมายถึง หน้าโค้ด (Code Page) ที่อุปกรณ์ฮาร์ดแวร์ เช่น การ์ดแสดงผล (Display Adapter) หรือเครื่องพิมพ์ รองรับในตัว โดยชุดตัวอักษร (Glyphs) ที่ใช้ในการแสดงผลจะถูกจัดเก็บไว้ในหน่วยความจำอ่านอย่างเดียว (Read-Only Memory หรือ ROM) หรือแฟลชเมมโมรี ของตัวสร้างตัวอักษรแบบตัวเลข (Alphanumeric Character Generator) ทำให้ผู้ใช้ไม่สามารถเปลี่ยนแปลงข้อมูลเหล่านี้ได้

ข้อดีสำคัญของหน้าโค้ดฮาร์ดแวร์คือ ระบบสามารถเรียกใช้งานตัวอักษรได้ทันทีโดยไม่ต้องโหลดนิยามของฟอนต์ (Font Definitions) ลงในอุปกรณ์ก่อน ตัวอย่างที่เห็นได้ชัดที่สุดคือ ข้อความเริ่มต้น (Startup Messages) ที่ส่งมาจาก System BIOS ของเครื่อง PC หรือข้อความที่ระบบปฏิบัติการแสดงผลก่อนที่จะเริ่มการทำงานของตรรกะการสลับหน้าโค้ด (Code Page Switching Logic) และการจัดการฟอนต์ รวมถึงก่อนที่จะเปลี่ยนเข้าสู่โหมดกราฟิก ข้อความเหล่านี้จะถูกแสดงผลโดยใช้หน้าโค้ดฮาร์ดแวร์เริ่มต้นของเครื่องคอมพิวเตอร์เครื่องนั้น

การกำหนดหน้าโค้ดในอุปกรณ์ต่างๆ

การ์ดแสดงผล (Display Adapters)

สำหรับเครื่อง PC ที่เข้ากันได้กับ IBM ในอเมริกาเหนือ หน้าโค้ดฮาร์ดแวร์ของการ์ดแสดงผลมักจะเป็น Code Page 437 อย่างไรก็ตาม ในเครื่องคอมพิวเตอร์พกพาหรือเครื่องที่จำหน่ายในภูมิภาคอื่น เช่น ยุโรปตะวันออก, อาหรับ, ตะวันออกกลาง และเอเชีย จะมีการใช้หน้าโค้ดอื่นๆ เป็นค่าเริ่มต้น เช่น:

  • Code Page 100 (ฮีบรู)
  • Code Page 151 (อาหรับ Nafitha)
  • Code Page 667 (Mazovia)
  • Code Page 737 (กรีก)
  • Code Page 850 (พหุภาษา)
  • การเข้ารหัสอื่นๆ เช่น Roman-8, Kamenický, KOI-8 และ MIK

โดยทั่วไป การ์ดแสดงผลส่วนใหญ่จะรองรับหน้าโค้ดฮาร์ดแวร์แบบ 8 บิตเพียงหน้าเดียว ซึ่งบิตแมป (Bitmaps) ของตัวอักษรจะถูกเก็บไว้ใน EPROM ในซ็อกเก็ต DIP การเลือกหน้าโค้ดฮาร์ดแวร์มักทำได้ผ่านจัมเปอร์ (Jumpers), การตั้งค่าใน EEPROM หรือ CMOS Setup แต่การ์ดแสดงผลบางรุ่นที่ออกแบบมาสำหรับตลาดเฉพาะ เช่น ยุโรปตะวันออกหรือตะวันออกกลาง อาจรองรับหน้าโค้ดฮาร์ดแวร์หลายหน้า (เรียกว่า Font Pages) ซึ่งสามารถสลับได้ผ่านพอร์ต I/O หรือฟังก์ชัน BIOS เพิ่มเติม

เครื่องพิมพ์ (Printers)

เครื่องพิมพ์มักรองรับชุดตัวอักษรที่ผู้ใช้สามารถสลับได้หลากหลายกว่า โดยมักรวมถึงชุดตัวอักษร 7 บิต ตามมาตรฐาน ISO/IEC 646 (เช่น Code Page 367 สำหรับ US/ASCII) และหน้าโค้ด 8 บิต อีกหลายรูปแบบ เช่น Code Page 437, 850, 851, 852, 853, 855, 857, 860, 861, 863, 865 และ 866 การเลือกหน้าโค้ดในเครื่องพิมพ์สามารถทำได้ผ่านสวิตช์ DIP, เมนูการตั้งค่าบนตัวเครื่อง หรือการส่งลำดับคำสั่ง Escape Sequences จากคอมพิวเตอร์

การรองรับในระบบปฏิบัติการ

เมื่อระบบปฏิบัติการเริ่มทำงานและโหลดตรรกะการสลับหน้าโค้ด ระบบจะไม่สามารถทราบได้ด้วยตัวเองว่าหน้าโค้ดฮาร์ดแวร์ใดที่กำลังทำงานอยู่ ดังนั้นจึงจำเป็นต้องมีการระบุหน้าโค้ดฮาร์ดแวร์เพื่อให้การสลับหน้าโค้ดทำงานได้อย่างถูกต้อง

ในระบบ DOS และ Windows 9x การระบุหน้าโค้ดฮาร์ดแวร์จะทำผ่านพารามิเตอร์ hwcp ในไดรเวอร์อุปกรณ์ DISPLAY.SYS และ PRINTER.SYS ภายในไฟล์ CONFIG.SYS หากมีการรองรับหลายหน้าโค้ด พารามิเตอร์ hwcp1 จะถูกใช้เพื่อระบุหน้าโค้ดเริ่มต้น

หากไม่มีการระบุหน้าโค้ด ไดรเวอร์เหล่านี้จะใช้ค่าเริ่มต้นเป็นหมายเลขหน้าโค้ดสมมติ 999 หรือสมมติว่าหน้าโค้ดฮาร์ดแวร์ตรงกับหน้าโค้ดหลัก (Primary Code Page) ที่ระบุในไฟล์ COUNTRY.SYS ตามรหัสประเทศที่ตั้งไว้ (โดยปกติจะเป็นรหัส 1 สำหรับสหรัฐอเมริกาในเวอร์ชันตะวันตกของ DOS ซึ่งจะใช้ Code Page 437 หรือ 850 ขึ้นอยู่กับภูมิภาค)

ในกรณีที่หน้าโค้ดฮาร์ดแวร์ไม่ตรงกับหมายเลขที่กำหนดไว้เป็นทางการ สามารถใช้หมายเลขในช่วง 57344–61439 (E000h–EFFFh) สำหรับหน้าโค้ดที่ผู้ใช้กำหนดเอง หรือ 65280–65533 (FF00h–FFFDh) สำหรับหน้าโค้ดเพื่อการใช้งานส่วนตัว (Private Use) ตามมาตรฐาน IBM CDRA เพื่อให้ระบบปฏิบัติการมี "ตัวระบุ" (Handle) ในการเลือกหน้าโค้ดนั้นๆ

ความแตกต่างระหว่างหน้าโค้ดฮาร์ดแวร์และหน้าโค้ด OEM

หน้าโค้ดฮาร์ดแวร์ถือเป็นส่วนหนึ่งของ หน้าโค้ด OEM (OEM Code Pages) ซึ่งคำว่า "OEM" (Original Equipment Manufacturer) บ่งบอกว่าชุดตัวอักษรสามารถถูกเปลี่ยนแปลงได้โดยผู้ผลิตเพื่อให้เหมาะสมกับตลาดที่แตกต่างกัน

อย่างไรก็ตาม หน้าโค้ด OEM ไม่จำเป็นต้องอยู่ใน ROM เสมอไป แต่รวมถึงสิ่งที่เรียกว่า "หน้าโค้ดที่เตรียมไว้" (Prepared Code Pages) หรือชุดตัวอักษรที่ดาวน์โหลดได้ (Downloadable Character Sets/Fonts) ซึ่งเป็นฟอนต์แบบราสเตอร์ (Raster Fonts) ที่ถูกโหลดลงใน RAM ของฟอนต์ในอุปกรณ์ที่รองรับ เช่น การ์ดแสดงผลบางรุ่น (เช่น IBM MCGA, EGA, VGA) และเครื่องพิมพ์ ดังนั้น กลุ่มของหน้าโค้ด OEM จึงเป็นเซตที่ครอบคลุม (Superset) ของหน้าโค้ดฮาร์ดแวร์

คำถามที่พบบ่อย

หน้าโค้ดฮาร์ดแวร์แตกต่างจากฟอนต์ทั่วไปอย่างไร?

หน้าโค้ดฮาร์ดแวร์ถูกเก็บไว้ใน ROM ของอุปกรณ์ฮาร์ดแวร์โดยตรง ทำให้สามารถแสดงผลได้ทันทีโดยไม่ต้องโหลดข้อมูลฟอนต์จากซอฟต์แวร์ ซึ่งต่างจากฟอนต์ทั่วไปที่ต้องอาศัยการจัดการของระบบปฏิบัติการและหน่วยความจำหลัก

ทำไมต้องระบุ HWCP ในระบบปฏิบัติการรุ่นเก่าอย่าง DOS?

เพราะระบบปฏิบัติการไม่สามารถตรวจพบได้เองว่าฮาร์ดแวร์ตัวนั้นใช้หน้าโค้ดใดเป็นค่าเริ่มต้น ดังนั้นการระบุใน CONFIG.SYS จึงช่วยให้ไดรเวอร์อุปกรณ์สามารถแปลงรหัสตัวอักษรให้ตรงกับสิ่งที่ฮาร์ดแวร์แสดงผลได้ถูกต้อง

Code Page 437 คืออะไร?

Code Page 437 คือหน้าโค้ดฮาร์ดแวร์มาตรฐานที่ใช้ในเครื่อง PC ของ IBM ในอเมริกาเหนือ ซึ่งเป็นหนึ่งในหน้าโค้ด OEM ที่แพร่หลายที่สุดในยุคแรกของคอมพิวเตอร์