Zebra เป็นระบบปฏิบัติการมัลติทาสกสำหรับคอมพิวเตอร์ Z80 ซึ่งส่วนใหญ่ใช้ใน C กับแอสเซมเบลอร์บางตัว
ซอฟต์แวร์นี้ได้รับอนุญาตภายใต้ GPLV3 สำหรับข้อกำหนดใบอนุญาตเต็มรูปแบบดูที่นี่
หากคุณสนใจที่จะตั้งค่าระบบปฏิบัติการสำหรับระบบของคุณเองโปรดติดต่อ!
ระบบปฏิบัติการกำหนดเป้าหมายคอมพิวเตอร์โมดูลาร์ Z80 ที่กำหนดเองของฉัน
เคอร์เนลมีวัตถุประสงค์เพื่อทำงานด้วย RAM 32KB และให้การโต้ตอบกับผู้ใช้ผ่านอินเตอร์เฟสอนุกรม โปรแกรมผู้ใช้แต่ละรายการได้รับการจัดสรรหน้า 32KB ของ RAM Banked ซึ่งช่วยให้หลายโปรแกรมสามารถดำเนินการพร้อมกันได้
พื้นที่เก็บข้อมูลนี้ยังมีโปรแกรมยูทิลิตี้ในตัวเช่นล่ามพื้นฐาน
bootloader สองขั้นตอนช่วยให้สามารถโหลดภาพระบบปฏิบัติการจากระบบไฟล์
rstdir สำหรับการดูไฟล์ เมื่อเริ่มต้นคอมพิวเตอร์โมดูลาร์มี ROM 8K ที่ 0x0000 และ RAM 32K ที่ 0x8000 bootloader อยู่ใน ROM และมีไดรเวอร์ CF-Card พื้นฐานสามารถอ่านแต่ละภาคส่วนจากดิสก์
bootloader รองอยู่ใน 9 ภาคแรกของ CF-card โหลดเดอร์ขั้นที่สองนี้มีรูทีน CF-CARD เดียวกัน แต่นอกจากนี้ยังมีไดรเวอร์ FAT-16 ที่สามารถอ่านไฟล์จากดิสก์ซึ่งจัดรูปแบบในรูปแบบ FAT16
bootloader รองนี้จะถูกโหลดลงใน RAM ที่ 0x8000 จากนั้นดำเนินการ ครั้งแรกที่สลับธนาคารล่าง ( 0x0000 ถึง 0x7fff ) จาก ROM เป็น RAM และเขียนภาพเคอร์เนลซึ่งอยู่ในระบบไฟล์ของ CF-Card เป็น kernel.bin ไปยัง RAM ที่ 0x0000 ตัวโหลดรองจากนั้นรีเซ็ตเป็น 0x0000 เพื่อบูตลงในเคอร์เนล
เคอร์เนลเริ่มต้นไดรเวอร์ระบบไฟล์ที่สมบูรณ์และส่วนประกอบระบบปฏิบัติการอื่น ๆ จากนั้นโหลดตัวประมวลผลคำสั่ง ( command.exe ) จากดิสก์และเริ่มดำเนินการ
ณ จุดนี้การควบคุมจะถูกส่งมอบให้กับผู้ใช้ซึ่งสามารถโต้ตอบกับระบบผ่านบรรทัดคำสั่งเพื่อเรียกใช้โปรแกรม
Low RAM High RAM
0x0000┌────────────────────────┐ 0x8000┌────────────────────────┐
│ Kernel │ │ User Program Area │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ 0xe000├────────────────────────┤
│ │ │ Stack │
│ │ │ │
│ │ │ │
│ │ 0xF800├────────────────────────┤
│ │ │ User Program Args │
└────────────────────────┘ └────────────────────────┘
0xF7FF ในการเริ่มต้นโปรแกรมและเพิ่มขึ้นargv และ argc )