วันเสาร์ที่ 28 พฤศจิกายน พ.ศ. 2552

0x106 : Bootloader

หลังจากได้เตรียม Tool ที่ใช้ในการเขียน OS แล้วต่อไป ก็ได้เวลาสำหรับการเริ่มสักที โดยในขั้นแรกจะทำตัว Boot เปล่าๆก่อน ซึ่งเป็นโค๊ดภาษา Assembly

;#*******************************************
;# GreanNetworK Operating System
;# - Test Bootloader
;# boot.asm
;# 28/11/2552
;#*******************************************
BITS 16
ORG 0x7C00

JMP $

TIMES 510 - ($ - $$) db 0
DW 0xAA55

จากโค๊ดดังกล่าวพออธิบายได้ตามนี้....

วันพุธที่ 25 พฤศจิกายน พ.ศ. 2552

0x105 : BIOS Interrupt

Interrupt(INT) 0x19 ทำหน้าที่เป็น Bootstrap Loader โดยคุณสมบัตินี้จะทำงานโดย BIOS ซึ่งสามารถอ่าน Sector แรกของดิสได้ (sector 1,head 0, track 0)

Sector นั้นจะมีขนาด 512 bytes โดย sector จะอยู่ Track อีกทีหนึ่ง

Head หรือ Face ดิสแผ่นหนึ่งจะมีสองหน้าคือหน้า 0 กับหน้า 1 แต่ส่วนมากแล้วเราจะใช้งานเพียงหน้าเดียว

Track ภายใน Track นั้นจะประกอบไปด้วย sector สำหรับ Floppy นั้นจะมี sector อยู่ 18 sector ต่อหนึ่ง Track

Disk
Tracks
Sectors/Track
Cluster Size
Total Sectors
360K
40
9
2
720
1.2MB
80
15
1
2400
720K
80
9
2
1440
1.44MB
80
18
1
2880

เพิ่มเติมเกี่ยวกับ Disk

วันอังคารที่ 24 พฤศจิกายน พ.ศ. 2552

0x104 : Press Power Button

ในการที่จะสร้าง OS ขึ้นมานั้นเราต้องเข้าใจถึงการทำงานของ hardware ของมันซะก่อน ซึ่งถ้าหากพูดถึงคอมพิวเตอร์แล้วก็คงต้องดูกันตั้งแต่กดปุ่ม Power เลยทีเดียว โดยเมื่อเราทำการกดปุ่ม Power นั้นสัญญานอิเลคทรอนิค จะถูกส่งออกไปยังเมนบอร์ด จากนั้นเมนบอร์ดจะทำการส่งสัญญานไปยัง Power Supply (PSU : Power Supply Unit) อีกต่อหนึ่ง สัญญานที่ถูกส่งออกไปนั้นจะเป็น bit ของข้อมูล เช่นถ้าหากเป็น 0 นั้นอาจจะเป็นไปได้ว่าคอมพิวเตอร์ไม่ทำงาน หรือ เมนบอร์ดเกิดความเสียหาย หากข้อมูลเป็น 1 ก็ให้ Power Supply นั้นทำงาน

หากยังพอจำกันได้ถึงระบบ bit ที่ใช้ในคอมพิวเตอร์นั้น คอมพิวเตอร์ได้กำหนดให้มีการแทนเลขของ bit แทนความหมายต่างๆ โดยจะทำงานผ่าน Logic Gate ต่างๆตาม Digital Logic เพื่อประกอบกันเป็นคอมพิวเตอร์

เมื่อ Power Supply ได้รับสัญญานให้ทำงาน Power Supply จะทำการจ่ายพลังงานให้กับอุปกรณ์ต่างๆ แล้วจากนั้นจะส่งสัญญานที่เรียกว่า "Power Good" ไปยังเมนบอร์ดเพื่อให้ BIOS (Basic Input Output System) ได้รู้

เพิ่มเติมเกี่ยวกับ Power Supply

0x103 : Introduction

หลังจากที่ได้รวบรวมข้อมูลในการทำ OS แล้วก็พอที่จะระบุขอบเขตได้คร่าวๆ แล้วว่า Tool ที่จะต้องใช้นั้นคือ
  • Nasm สำหรับ Compile ภาษา Assembly
  • DJGPP สำหรับ Compile ภาษา C/C++
  • Visual Floppy Drive สำหรับจำลอง Floppy Drive ในการเก็บ OS ของเรา
  • Pastcopy สำหรับ เขียนไฟล์ของเราไปยัง boot sector
  • Boch สำหรับไว้ทดสอบ OS โดย Boch จะเป็น Emulator ที่ใช้ในการรัน OS
Tool ทั้งหมดสามารถโหลดได้จากหน้า 0x100 : Data Collection

สำหรับลำดับในการทำคงเริ่มจาก
  • สร้างตัว Bootloader
  • ทำตัว Kernel
  • แล้วก็ทดสอบบน Boch (ถ้าหาแผ่น Floppy Disk ได้คงได้ทดสอบกับคอมฯ)
สำหรับข้อมูลอ้างอิง Tutorial ของ assembly และ c/c++ ได้รวบรวมไว้ในหน้า Data Collection แล้ว

วันอาทิตย์ที่ 22 พฤศจิกายน พ.ศ. 2552

0x102 : Installation DJGPP

การติดตั้ง DJGPP สำหรับ Windows
DJGPP ที่จะนำมาใช้งานนั้น เป็นส่วนของ C/C++ Compiler โดยเราต้องทำการดาวน์โหลดไฟล์จาก www.delorie.com ไฟล์ที่จำเป็นต้องใช้งานนั้น จะมี 4 ไฟล์หลักคือ
  • djdev203.zip - DJGPP Basic Development Kit
  • gcc*b.zip - Basic GCC compiler
  • gpp*b.zip - C++ compiler
  • bnu*b.zip - Basic assembler, linker
โดยที่เครื่องหมาย * หมายถึงตัวเลขของเวอร์ชันในขณะนั้น


image_0x01

0x101 : Installation Nasm

การติดตั้ง Nasm สำหรับ Windows
การตดตั้ง Nasm สำหรับ Linux

การติดตั้ง Nasm สำหรับ Windows
Nasm สามารถดาวน์โหลดได้จาก www.nasm.us ซึ่งสามารถทำการดาวน์โหลดได้ฟรี โดยปัจจุบันได้พัฒนาถึงเวอร์ชัน 2.08rc4


 image_0x01

เมื่อทำการดาวน์โหลดจะได้ไฟล์ชื่อว่า nasm-2.08rc4-win32.zip ให้ทำการแตกไฟล์ไปที่ C:\nasm เมื่อทำการแตกไฟล์แล้วจะได้ตามภาพ image_0x02

0x100 : Data Collection

Operating System Development