# กรณีศึกษา

### ระบบภาษาไทยระดับแก่น (Thai Kernel System : TKS)

ระบบภาษาไทยระดับแก่นหรือ TKS ถูกออกแบบและพัฒนาโดยทีมงานจากห้อง
ปฏิบัติการวิจัยไมโครคอมพิวเตอร์มหาวิทยาลัยเกษตรศาสตร์
ถึงแม้ว่า TKS จะไม่ประสบความสำเร็จมากในการขยายฐานผู้ใช้ ทั้งนี้เนื่องจาก
มีการเปลี่ยนแปลงเทคโนโลยีดังที่ได้กล่าวไปแล้ว แต่ระบบ TKS ถือว่าเป็น
ตัวอย่างที่ดีสำหรับการพัฒนาระบบภาษาไทยเพื่อเป็นพื้นฐาน สำหรับการสร้าง
แอพพลิเคชั่นภาษาไทยอื่นๆต่อไป

### สถาปัตยกรรมของ TKS

ระบบ TKS ถูกออกแบบโดยมีจุดมุ่งหมายคือ

- มีลักษณะเป็นฟังก์ชันบริการที่ง่ายต่อการเรียกใช้ แต่ละฟังก์ชันบริการจะมี
  หมายเลขกำกับ การเรียกใช้จะเรียกในลักษณะฟังก์ชัน CALL จากโปรแกรม
  ประยุกต์
- สนับสนุนการทำงานพื้นฐานที่เกี่ยวข้องกับภาษาไทยไว้ทั้งหมด เช่นฟังก์ชันเกี่ยว
  กับจอภาพ คีย์บอร์ด และเครื่องพิมพ์
- มีความอ่อนตัวที่จะเปลี่ยนแปลงรูปแบบภายในให้ขึ้นกับอุปกรณ์ต่างๆได้ เช่น
  เครื่องพิมพ์ทุกชนิด การแสดงผลบนจอภาพได้ทุกโหมด (โหมดตัวอักษรหรือกราฟฟิก)
  รหัสการแทนค่าภาษาไทยทำได้ทุกรหัสและทุกระดับ
- TKS สามารถเพิ่มฟังก์ชั่นได้ เช่นการจัดการจอภาพแบบหน้าต่าง
- เป็นส่วนเดียวของระบบซอฟต์แวร์ที่ยอมให้ผผูกพันกับสิ่งแวดล้อมและฮาร์ดแวร์

TKS จะวางระดับโครงสร้างไว้เป็นชั้นๆ โดยจะมี Physical device drive ซึ่งจะ
ทำหน้าที่ควบคุมตัวฮาร์ดแวร์โดยตรง เป็นชั้นแรกสุด และชั้นถัดมาจะเป็นชั้นของ
ลอจิคอลดีไวซ์ไดรเวอร์ และถัดไปจะเป็นระดับของฟังก์ชั่นคอลและไลบราลี ระดับบนสุด
จึงจะเป็นระดับของแอพพลิเคชั่นหรือโปรแกรมประยุกต์

- ระดับฟิสิคัลดีไวซ์ไดรเวอร์ (PDD - Physical Device Driver)
  ในระดับนี้จะมีการติดต่อกับอุปกรณ์ฮาร์ดแวร์โดยตรง เช่น จอภาพ คีย์บอร์ด เป็นต้น
  ในการติดต่อจะมีการกำหนดเป็นหมายเลขต่างๆเช่น
  - entry #0-#3 มีหน้าที่เกี่ยวกับตรวจสอบและการติดตั้งระบบ
  entry #16-#21 มีหน้าที่เกี่ยวกับการรับและส่งข้อมูลเป็นตัวอักษร (char) หรือเป็น คำ (word)
  entry #22-#25 มีหน้าที่เกี่ยวกับการรับและส่งข้อมูลเป็นกลุ่มตัวอักษร (stream)

- ระดับลอจิคัลดีไวซ์ไดรเวอร์ (LDD-Logical Device Driver)
  ในระดับนี้จะทำการติดต่อกับอุปกรณ์ผ่านทางชื่อ เช่น STD_IN, STD_OUT, STD_ERR
  เป็นต้น การกำหนดในลักษณะนี้จะสามารถทำให้ทำการเปลี่ยนทิศทางข้อมูล (redirection)
  ได้ง่าย
- ระดับฟังก์ชันคอลและไลบราลี่ (FCLF-Function Call and Library Function)
  ในระดับนี้จะเกี่ยวข้องกับ I/O และระบบภาษาไทย โดยสามารถทำการติดต่อได้โดยผ่าน
  ทางการเรียกใช้งานฟังก์ชัน
- ระดับโปรแกรมประยุกต์
  ในระดับนี้จะสามารถใช้การติดต่อจากระดับใดก็ได้ใน 3 ระดับข้างต้นทั้งนี้ขึ้นอยู่
  กับความเหมาะสมของความเร็วที่ต้องการติดต่อ และความง่ายในการใช้งาน

  ### ตัวอย่างของการเรียกใช้ TKS

- การเรียกผ่าน LDD

      main()
      {
          STRING string;
          string = & "ระบบผู้\^เชี่ยวชาญ\0";
          dprints (STD_OUT, string);
          exit();
      }

- การเรียกผ่านระบบ (function call)

      #define READCHAR  5
      main()
      {
          Char ch;
          ch = Func_call (READCHAR, STD_AUX);
          exit;
      }

- การเรียกผ่าน PDD โดยตรง

      #define ENTRY 17
      main()
      {
          TEXT test = {"_","_","_","_"};
          PDD_VDO(ENTRY, txt);
      }

  หมายเหตุ
  - dprints, Func_call เป็นฟังก์ชั่นใน FCLF
  - PDD_VDO เป็นชื่อของการเรียกเข้าหาระบบในระดับ PDD

HTML developed by Kaiwal Development Team (kaiwal@geocities.com)