ครบรอบ 50 ปีการเปิดตัว Zilog Z80
(goliath32.com)- Zilog Z80 ที่เปิดตัวในเดือนกรกฎาคม 1976 ถูกใช้อย่างแพร่หลายตั้งแต่คอมพิวเตอร์ส่วนบุคคลและคอมพิวเตอร์งานอดิเรก ไปจนถึงอุปกรณ์ฝังตัวและอุปกรณ์อุตสาหกรรม จนกลายเป็นตัวแทนของยุคไมโครโปรเซสเซอร์ 8 บิต
- โดยยังคง ความเข้ากันได้แบบไบนารีกับ Intel 8080 เอาไว้ แต่ขยายรีจิสเตอร์ วิธีอ้างแอดเดรส ชุดคำสั่ง และความสามารถด้านอินเทอร์รัปต์ พร้อมออกแบบการเชื่อมต่อทางไฟฟ้าให้เรียบง่ายยิ่งขึ้น
- ข้อจำกัดของ 8008 ที่มีสแตกจำกัดและพื้นที่แอดเดรส 14 บิต ได้รับการปรับปรุงใน 8080 ให้เป็นสแตกในหน่วยความจำและพื้นที่แอดเดรส 16 บิต และ Z80 ก็เพิ่ม index register, alternate register bank และ block instruction เข้าไปอีก
- ด้วยไฟเลี้ยง 5V ชุดเดียว สัญญาณนาฬิกาเดียว และสัญญาณควบคุม MREQ·IORQ·RD·WR รวมถึง DRAM refresh ในตัว ทำให้สามารถประกอบคอมพิวเตอร์ได้ด้วยชิปรอบข้างจำนวนน้อย
- ตระกูล Z80 ให้กำเนิดอนุพันธ์หลายตัว เช่น Sharp LR35902 ของ Game Boy และ eZ80 ส่วน Z80 ดั้งเดิมนั้นมีอายุการใช้งานในภาคอุตสาหกรรมยาวนานก่อนจะ ยุติการผลิตในเดือนมิถุนายน 2024
จาก Datapoint 2200 สู่ Intel 8008
- Computer Terminal Corporation (CTC) พัฒนาโปรแกรมเมเบิลเทอร์มินัล Datapoint 2200 ที่ติดตั้งโปรเซสเซอร์ 8 บิตซึ่งสร้างจากชิป TTL แบบแยกชิ้น
- แผนที่จะเปลี่ยนวงจร TTL บางส่วนด้วย IC แบบสั่งทำพิเศษ ได้ขยายไปสู่แนวทางที่ใส่ CPU ทั้งตัวลงในชิปเดี่ยว โดยให้ Texas Instruments และ Intel ออกแบบกันคนละชุด
- ทั้งสองบริษัทต่างทำแบบให้เสร็จไม่ทันกำหนด และเมื่อชิปของ Intel พร้อมแล้ว CTC ก็ขายเทอร์มินัลแบบ TTL อยู่ก่อนแล้ว
- วิศวกรของ CTC เองก็ไม่พอใจกับประสิทธิภาพของชิป และสถาปัตยกรรมของเทอร์มินัลรุ่นถัดไปก็ถูกเปลี่ยนไปแล้ว
- TI ยกเลิกการออกแบบไป แต่ Intel เปลี่ยนชื่อผลิตภัณฑ์จากเดิม 1201 เป็นชื่อทางการตลาดว่า 8008 แล้วนำออกสู่ตลาด
โครงสร้างและข้อจำกัดของ 8008
- 8008 มีรีจิสเตอร์ 7 ตัวคือ A·B·C·D·E·H·L
- A คือ accumulator และ H กับ L รวมกันเป็นตัวชี้หน่วยความจำ HL
- pseudo-register M หมายถึงไบต์ในหน่วยความจำที่ HL ชี้อยู่
- สถานะของ ALU ถูกเก็บด้วยแฟล็ก Carry, Parity, Zero และ Sign และใช้กับคำสั่งกระโดด เรียก และกลับแบบมีเงื่อนไข
- program counter จัดการได้โดยตรงยาก และการเรียกฟังก์ชันใช้ สแตกที่อยู่กลับภายในโปรเซสเซอร์ 8 ระดับ
- นี่เป็นการออกแบบจากแนวคิดที่ว่า Datapoint 2200 จะใช้หน่วยความจำแบบอนุกรม ทำให้สแตกเรียกฟังก์ชันที่อยู่บนหน่วยความจำอาจกลายเป็นคอขวด
- แอดเดรสของหน่วยความจำมีขนาด 14 บิต และมี พอร์ต I/O 32 พอร์ต ในพื้นที่แยกต่างหาก
- เมื่อเกิดอินเทอร์รัปต์ อุปกรณ์รอบข้างจะวางคำสั่ง RST ลงบน data bus แล้ว CPU ก็จะนำไปทำงาน
- RST จะเรียกหนึ่งใน 8 สล็อตที่ต้นพื้นที่แอดเดรส
- เนื่องจากไม่มี memory stack แบบอเนกประสงค์ และการเข้าถึงหน่วยความจำทั้งหมดต้องใช้ HL หากต้องการบันทึกรีจิสเตอร์ระหว่างจัดการอินเทอร์รัปต์ ก็ต้องใช้ external latch บน I/O bus เป็นรีจิสเตอร์ชั่วคราว
- ใช้ทรานซิสเตอร์ประมาณ 3,500 ตัว และแพ็กเกจ DIP18 พร้อมทำ multiplex ระหว่าง address bus และ data bus
- วงจรภายนอกจึงต้อง latch bus และตีความสัญญาณสถานะภายในของ CPU
- ต้องใช้สัญญาณนาฬิกา 500kHz สองเฟสและแรงดันไฟ +5V กับ -9V
จาก 8008 สู่ 8080
- ตั้งแต่ก่อนการพัฒนา 8008 จะเสร็จ ก็เริ่มมีการพูดถึงการปรับปรุงข้อจำกัดเหล่านั้นแล้ว แต่ฝ่ายบริหารของ Intel ต้องการดูการตอบรับของตลาดก่อน
- Federico Faggin ผลักดันการพัฒนารุ่นปรับปรุง และผลจากการรอจนคู่แข่งเปิดตัวผลิตภัณฑ์ 8 บิต ทำให้ Intel เสียความได้เปรียบไป 9 เดือน
- ก่อนโครงการจะได้รับอนุมัติ Faggin ก็ได้ดึง Masatoshi Shima จาก Busicom มาร่วมออกแบบ 8080 แล้ว
- ยังนำคำวิจารณ์และฟีดแบ็กจากลูกค้าที่มีศักยภาพซึ่งได้ดูเดโม 8008 มาปรับใช้ด้วย และตั้งแต่ต้นก็ตัดสินใจว่าจะไม่รักษาความเข้ากันได้แบบไบนารีกับ 8008
สถาปัตยกรรม 8080
- 8080 ยังคงโครงสร้างรีจิสเตอร์คล้ายกับ 8008 แต่ตัดสแตกที่อยู่กลับภายในออก และนำ memory stack ที่ SP ชี้อยู่ มาใช้
- สามารถ push หรือ pop คู่รีจิสเตอร์ BC·DE·HL·AF ลงสแตกได้
- ในแอสเซมบลีของ Intel เรียก AF ว่า PSW ซึ่งย่อมาจาก program status word
- พื้นที่แอดเดรสเพิ่มเป็น 16 บิต 64KB และพอร์ต I/O เพิ่มเป็น 256 พอร์ต
- สามารถทำ indirect access แบบจำกัดผ่าน BC และ DE ได้
- accumulator และ HL สามารถอ่านหรือเก็บค่าที่แอดเดรสซึ่งระบุแบบ immediate ได้
- มีการเพิ่มการดำเนินการ 16 บิต เช่น การเพิ่มหรือลดคู่รีจิสเตอร์ เพื่อจัดการการคำนวณ pointer และตัวนับ 16 บิต
- บล็อกคำสั่งเหล่านี้ไม่กระทบแฟล็กของ ALU ดังนั้นหลังจากลดค่า BC แล้ว ต้องตรวจแยกเองว่าทั้งสองไบต์เป็น 0 หรือไม่
- อินเทอร์รัปต์ยังคงใช้แนวทางอิง RST แต่สามารถเปิดหรือปิดได้ด้วยซอฟต์แวร์
- การมี memory stack แบบชัดเจนทำให้ไม่ต้องมีฮาร์ดแวร์ I/O สำหรับเก็บรีจิสเตอร์อีกต่อไป
- แอสเซมบลี Intel 8080 มีความสัมพันธ์ระหว่าง mnemonic กับ opcode เกือบแบบ 1:1 จึง ทำ assembler ได้ง่าย แต่สำหรับมนุษย์อาจอ่านไม่สะดวก
- คำสั่งสำหรับคู่รีจิสเตอร์ใช้ชื่อรีจิสเตอร์เพียงฝั่งเดียว และใช้ X ใน INX เพื่อแยกจาก INC แบบไบต์เดี่ยว
อินเทอร์เฟซทางไฟฟ้าของ 8080
- เพื่อเพิ่มความเร็ว จึงใช้ลอจิก NMOS ทำให้ต้องใช้ไฟสามชุดคือ -5V·+5V·+12V และสัญญาณนาฬิกาสองเฟส
- แม้แพ็กเกจ 40 ขาจะทำให้แยกเส้นแอดเดรสและเส้นข้อมูลได้ แต่ก็ยัง multiplex สถานะควบคุมบางส่วนไว้บน data bus ทำให้ยังต้องมี external latch และ decoder
- Intel จำหน่ายชิปสนับสนุนสำหรับการถอดรหัสสถานะและสร้างสัญญาณนาฬิกา และในบางระบบก็ยังต้องมี interrupt controller, timer และ DMA controller ด้วย
- programmable timer อย่างน้อยก็สามารถใช้ขับการ refresh ของ DRAM ได้
- รุ่นถัดมา 8085 ใช้ไฟเลี้ยง 5V เดียวและสัญญาณนาฬิกา 5V เดียว พร้อมเพิ่มสัญญาณควบคุมบางส่วน แต่ก็ยังต้องใช้ชิปสนับสนุนเฉพาะอยู่ดี
การก่อตั้ง Zilog และการพัฒนา Z80
- Faggin ไม่พอใจกับความล่าช้าในการอนุมัติโครงการ 8080 และความขัดแย้งกับฝ่ายบริหารของ Intel จึงออกมาตั้งบริษัทพร้อมกับ Ralph Ungermann หัวหน้าฝ่ายไมโครโปรเซสเซอร์
- ตอนแรกพวกเขาพิจารณาทำไมโครคอนโทรลเลอร์ แต่เห็นว่ามาร์จินต่ำเกินไปสำหรับสตาร์ตอัปเซมิคอนดักเตอร์แบบ fabless
- จากนั้นจึงตัดสินใจออกแบบ Super 80 ซึ่งเป็นรุ่นปรับปรุงของ 8080 และผลิตภัณฑ์นี้ก็พัฒนาต่อมาเป็น Zilog Z80
- ได้รับเงินทุนจาก Exxon และดึง Shima ออกจาก Intel มาร่วมทีม
- ทีมที่รับผิดชอบด้านเลย์เอาต์ ซอฟต์แวร์จำลอง และงานอื่น ๆ ขยายเป็นทั้งหมด 11 คน
- เป้าหมายคือรักษาความเข้ากันได้แบบไบนารีกับ 8080 พร้อมเพิ่มรีจิสเตอร์ วิธีอ้างแอดเดรส และชุดคำสั่ง รวมถึงสะท้อนคุณลักษณะของโปรเซสเซอร์ร่วมสมัยอย่าง 6800
- ยังตั้งเป้าให้เร็วกว่า 8080 และมีการเชื่อมต่อทางไฟฟ้าที่ง่ายกว่า
- กว่าจะได้ต้นแบบที่ทำงานได้จริง ใช้งบประมาณไปราว 400,000 ดอลลาร์ ซึ่งยังต่ำกว่างบ 500,000 ดอลลาร์ที่ได้จาก Exxon และทันตามกำหนด
- หลังมีความขัดแย้งกับ Synertek ซึ่งเป็นผู้รับจ้างผลิตรายแรก การผลิตจึงพึ่งพา Mostek
- หลังจากนั้นแม้จะสร้าง fab ของตัวเองได้ด้วยเงินลงทุนเพิ่มจาก Exxon แต่ก็ยังคงมีหลายแหล่งผลิตสำหรับ Z80 ต่อไป
การขยายสถาปัตยกรรมของ Z80
- Z80 เข้ากันได้แบบไบนารีกับชุดคำสั่ง 8080 อย่างสมบูรณ์
- เพิ่ม index register 16 บิต IX และ IY ซึ่งได้แรงบันดาลใจจาก 6800
- สามารถใช้แทน HL ได้ผ่าน opcode prefix และรองรับออฟเซ็ตแบบ immediate ด้วย
- คู่รีจิสเตอร์ AF·BC·DE·HL มี alternate bank ทำให้สลับได้รวดเร็วระหว่างการจัดการอินเทอร์รัปต์
- อินเทอร์รัปต์มีสามโหมด
- โหมด 0 คือแบบเข้ากันได้กับ 8080
- โหมด 1 จะเรียกแอดเดรสคงที่เสมอ
- โหมด 2 ใช้ค่าบน bus เป็นดัชนีเพื่อกระโดดผ่านตารางเรียก และมีรีจิสเตอร์อีกตัวระบุแอดเดรสฐานของตารางในหน่วยความจำ
- เพิ่มคำสั่งหมุนบิต ตรวจและตั้งค่าบิต การคำนวณ BCD คำสั่งวนซ้ำที่ใช้ BC เป็นตัวนับ รวมถึงการโอนบล็อก การเปรียบเทียบ และการทำงานกับสตริง
- สามารถแทนลูปคัดลอกไบต์ทั้งชุดด้วยคำสั่งวนซ้ำในตัวอย่าง LDIR เพียงคำสั่งเดียว
- เนื่องจาก Intel อ้างลิขสิทธิ์ mnemonic ของแอสเซมบลี Z80 จึงใช้ไวยากรณ์ของตัวเอง
- เขียน operand อย่างชัดเจนกว่า และ overload mnemonic พื้นฐานเพื่อให้อ่านง่ายกว่าไวยากรณ์ของ 8080
การออกแบบบัสที่เรียบง่ายขึ้น
- Z80 ต้องการเพียง ไฟเลี้ยง 5V เดียวและสัญญาณนาฬิกาเดียว
- สถานะที่ใน 8080 ต้องให้วงจรภายนอก latch และตีความ ถูกส่งออกมาเป็นสัญญาณเฉพาะโดยตรง
- MREQ และ IORQ ใช้แยกการเข้าถึงหน่วยความจำกับ I/O
- RD และ WR ใช้บอกการอ่านและการเขียน
- M1 ใช้บอกว่าการเข้าถึงหน่วยความจำครั้งปัจจุบันคือการดึงคำสั่ง
- สามารถสร้างคอมพิวเตอร์พื้นฐานได้ด้วยการต่อ address bus และ data bus ตรง ๆ และมีวงจรประมาณแค่ใช้ 74xx138 ตัวเดียวเลือก EEPROM, RAM และ UART
- ตัวนับ refresh ภายในจะส่งค่าออกไปยัง address bus ระหว่างรอบถอดรหัสคำสั่ง พร้อมเปิดใช้งานเส้นควบคุมเพื่อจัดการ DRAM refresh
- หากใช้อินเทอร์รัปต์โหมด 1 ก็สามารถต่ออุปกรณ์เดี่ยวเข้ากับขาอินเทอร์รัปต์ได้โดยไม่ต้องมี external interrupt controller
- ถ้ามีหลายอุปกรณ์ ก็จัดการได้ด้วยวงจรง่าย ๆ อย่าง priority encoder 74xx148 และ latch
พัฒนาการหลัง Z80
- ก่อนที่ Z80 จะเปิดตัวในเดือนกรกฎาคม 1976 ก็เริ่มมีการออกแบบเบื้องต้นของ Z8000 แบบ 16 บิตแล้ว และผลิตภัณฑ์ออกสู่ตลาดในปี 1979 หลัง Intel 8086 แต่ก่อน Motorola 68000
- Z8000 ใช้หน่วยความจำแบบแบ่งเซกเมนต์เช่นเดียวกับ 8086 แต่ส่งหมายเลขเซกเมนต์ออกบน bus และให้ MMU ภายนอกจัดการการแปลงเป็น linear address รวมถึงตรวจขอบเขตและสิทธิ์การเข้าถึง
- ในชุดคำสั่งของ 8086 นอกจากจะสืบสายมาจาก 8080 แล้ว ยังสะท้อนคุณลักษณะเฉพาะของ Z80 อย่างคำสั่งบล็อก สตริง และลูปแบบวนซ้ำในตัวด้วย
- การออกแบบ MMU ของ Z8000 ยังมีอิทธิพลต่อ protected mode 16 บิตแบบอิง descriptor table ของ 286 ด้วย
Exxon, IBM PC และการเปลี่ยนแปลงของ Zilog
- Zilog มุ่งเป้าตลาดคอมพิวเตอร์มาตั้งแต่ยุคที่ไมโครโปรเซสเซอร์ยังถูกมองว่าเป็นตัวแทนวงจรลอจิก แต่ความสัมพันธ์กับ Exxon กลับเป็นหนึ่งในเหตุผลที่ IBM เลือก Intel 8088 แทน Zilog สำหรับพีซีของตน
- Exxon พยายามสร้างกลุ่มธุรกิจคอมพิวติ้งของตัวเองเพื่อแข่งกับ IBM และลงทุนเชิงกลยุทธ์ในผู้ผลิตเครื่องพิมพ์ดีด เวิร์ดโปรเซสเซอร์ และเครื่องพิมพ์หลายราย
- บางบริษัทในกลุ่มนี้ออกแบบผลิตภัณฑ์บนพื้นฐานชิ้นส่วนของ Zilog และแย่งส่วนแบ่งตลาดจากผลิตภัณฑ์ของ IBM
- ความสัมพันธ์อันใกล้ชิดกับ Exxon ยังก่อให้เกิดความขัดแย้งระหว่าง Faggin กับ Ungermann และ Ungermann ก็ลาออกก่อนที่ Zilog จะกลายเป็นบริษัทลูกของ Exxon อย่างสมบูรณ์ในปี 1980
- Zilog แยกตัวออกจาก Exxon อีกครั้งในปี 1989 และเข้าตลาดหลักทรัพย์ในปี 1991
- หลังจากนั้นบริษัทเปลี่ยนเจ้าของหลายครั้งระหว่างกองทุนไพรเวตอิควิตี้และบริษัทอิเล็กทรอนิกส์ ปัจจุบันเป็นของ Littelfuse
- หลังถูกใช้งานเป็นโปรเซสเซอร์ฝังตัวมาอย่างยาวนาน Z80 ก็ ยุติการผลิตในเดือนมิถุนายน 2024
ประสบการณ์ส่วนตัวกับ Z80 และอิทธิพลระยะยาว
- Z80 รวมถึง 8080·8085 ที่เข้ากันได้แบบไบนารี ช่วยสร้างมาตรฐานฮาร์ดแวร์โดยพฤตินัยของไมโครคอมพิวเตอร์ 8 บิต และเป็นพื้นฐานให้ CP/M และ Microsoft BASIC กลายเป็นมาตรฐานซอฟต์แวร์โดยพฤตินัย
- Z80 ถูกใช้ในคอมพิวเตอร์ส่วนบุคคลยุคแรก คอมพิวเตอร์ตามบ้านและงานอดิเรก รวมถึงระบบฝังตัวและระบบอุตสาหกรรมหลากหลายประเภท
- ยังมีทั้งโคลนและสถาปัตยกรรมอนุพันธ์ เช่น Sharp LR35902 ของ Game Boy รุ่นดั้งเดิม
- หลังจาก Zilog เลิกสายอนุพันธ์ 16 และ 32 บิต ก็กลับมาทำไมโครคอนโทรลเลอร์บนพื้นฐาน Z80 เช่น eZ80 ที่ใช้ pipeline และความถี่สัญญาณนาฬิกาสูงขึ้น
- หลังจากพบว่า Z80 ยังมีขายอยู่ในแค็ตตาล็อกชิ้นส่วนอิเล็กทรอนิกส์ตอนช่วงปลายวัยรุ่น ผู้เขียนก็เริ่มออกแบบคอมพิวเตอร์ขนาดเล็ก และยืมห้องล้างภาพของโรงเรียนตอนกลางคืนมาใช้กัดแผ่น PCB
- ได้ฟังครูเล่าประสบการณ์เกี่ยวกับคอมพิวเตอร์บ้านและคอนโซลรุ่นเก่า รวมถึงคอมพิวเตอร์ที่ประกอบแบบ wire-wrap ไว้ในกล่อง Tupperware และรัน CP/M·WordStar ได้
- ยังได้รับชิ้นส่วนตระกูล MCS-85 และชิป Z80·8085·6502·6522 มาลองใช้กับโปรเจ็กต์ที่สร้างเอง
- ระหว่างทางยังได้เรียนรู้ด้วยว่า การทำ power-on reset ที่เชื่อถือได้นั้นยากกว่าที่คิดมาก linker นั้นทำยากกว่า assembler มาก และคนคนเดียวก็สามารถสร้างคอมไพเลอร์ที่ใช้งานได้จริงขึ้นมาเองได้
1 ความคิดเห็น
ความเห็นจาก Hacker News
เริ่มเขียนโปรแกรมด้วย แอสเซมบลี ในปี 1978 และอยากเข้าใจไม่ใช่แค่ซอฟต์แวร์ แต่รวมถึงหลักการทำงานของฮาร์ดแวร์ด้วย
หลังจากประกอบชุดคิท Z80 ก็ได้เรียนรู้ดิจิทัลอิเล็กทรอนิกส์ด้วย logic probe และออสซิลโลสโคป พร้อมทั้งศึกษาคู่มืออย่างละเอียดจนได้เรียนรู้ชุดคำสั่ง ทุกวันนี้เกือบอายุ 70 แล้วแต่ยังจำได้ชัดเหมือนเพิ่งเกิดเมื่อวาน และ Z80 ก็เป็น CPU ที่ยอดเยี่ยมจริงๆ
เรียนรู้ด้วยตัวเองจากการ reverse assemble ROM และอ้างอิงการ์ดสรุปของ Motorola โดยไม่มีทั้งคลาสเรียนหรือหนังสือ แต่ต่อมาก็ไปก่อตั้งสตาร์ตอัปหลายแห่งและมีเส้นทางอาชีพที่ประสบความสำเร็จ การเรียนรู้คอมพิวเตอร์ตั้งแต่หลักการพื้นฐานที่สุดในชั้นล่างสุดยังคงมีคุณค่าที่ทดแทนไม่ได้
เป็นเกมจำลอง digital logic ที่ให้สร้างวงจรพื้นฐานจาก NAND gate แล้วประกอบอุปกรณ์เชิงฟังก์ชันกับ instruction decoder เพื่อสร้างสถาปัตยกรรมที่ Turing complete จากนั้นเขียนโปรแกรมด้วยแอสเซมบลีที่กำหนดเอง หากต้องการ opcode ใหม่ก็สามารถสร้างเองได้ จึงยากแต่คุ้มค่ามาก ตอนนี้ใกล้ออก正式แล้ว และมี ตัวอย่าง เผยแพร่แล้ว
FORK86-64ตอนอายุ 12 ได้ประกอบ คอมพิวเตอร์ Z80 จากคิทของรายการทีวี ‘Klein Microcomputer Sebstgebaut und Programmiert’
ใช้หม้อแปลง Märklin เป็นแหล่งจ่ายไฟ และใช้เครื่องบันทึกเทป Telefunken เป็นอุปกรณ์เก็บข้อมูล หลังพิมพ์เกมลงจอดบนดวงจันทร์ด้วยภาษาเครื่องของ Z80 เข้าไปแล้วก็กลัวโปรแกรมหาย เลยไม่ปิดเครื่องอยู่ 2 สัปดาห์
ให้ความรู้สึกเหมือนได้ย้อนกลับไปยุค 1980 ของ ZX Spectrum ตอนนั้น RAM 128KB เป็นของหรูหราที่เกินเอื้อมอยู่แล้ว ซึ่งก็คล้ายกับทุกวันนี้นิดหน่อย
https://spectrumcomputing.co.uk/entry/2000237/Book/Mastering...
http://www.primrosebank.net/computers/zxspectrum/docs/Comple...
จำได้ว่าเคยมอง ตารางอ้างอิงคำสั่ง Z80 ท้ายคู่มือผู้ใช้ ZX-81 แล้วไม่เข้าใจอะไรเลย ต่างจาก abstraction ระดับสูงอย่าง BASIC ที่เข้าใจง่ายกว่า ต้องใช้เวลาพอสมควรกว่าจะมองออกว่า CPU รันโปรแกรมจริงๆ อย่างไร
JPคือGOTO,CALLคือGOSUB,CPคือIF,JP ZคือTHEN GOTO, และLDคือLETคำกล่าวที่ว่า “Z80 เข้ากันได้แบบไบนารีอย่างสมบูรณ์กับชุดคำสั่งของ 8080” นั้น หากนับรวม flag register ด้วยก็ไม่จริง เพราะการทำงานของ parity flag ในบางคำสั่งต่างกัน
อีกทั้งโปรแกรมที่อาศัย opcode ที่ไม่ได้กำหนดไว้ของ 8080 อาจถูกรันแบบใดก็ได้ แต่ Z80 นำ opcode เหล่านั้นกลับมาใช้เป็นคำสั่งใหม่
ทำให้สามารถนำ parity flag มา ใช้ซ้ำเป็น overflow flag ได้ ซึ่งเป็นส่วนขยายที่มีประโยชน์มาก Datapoint 2200, Intel 8008, Intel 8080 และ RISC-V เป็นชุดคำสั่งหายากที่ฮาร์ดแวร์ไม่ตรวจจับ overflow ซึ่งต่างจากดีไซน์ยุคแรกที่เรียบง่ายและต้นทุนต่ำ แต่สำหรับ RISC-V ไม่มีข้อแก้ตัว และมองว่านี่เป็นความผิดพลาดที่ใหญ่ที่สุด
ต้นปี 1983 ได้เริ่มเขียนโปรแกรมด้วย แอสเซมบลี Z80 บน TRS-80 Model I หนังสือของ Bill Barden และบทความชุด ‘The Next Step’ ของ Hardin Brothers ในนิตยสาร 80 Micro เป็นจุดเริ่มต้น และได้สรุปประสบการณ์ตอนนั้นไว้ในบทความนี้
มันอธิบายได้ชัดเจนจนแม้แต่เด็กก็เข้าใจ เลยอ่านตั้งแต่ต้นจนจบ ถึงจะไม่เคยได้จับ Z80 จริงๆ แต่ก็ปูพื้นฐานให้เข้าใจทั้ง 6502 และไมโครคอนโทรลเลอร์ยุคแรกอย่าง 8051 กับ PIC ได้ไม่ยาก จนถึงตอนนี้ก็ดูเหมือนยังเข้าใจไมโครโปรเซสเซอร์สมัยใหม่ด้วยการเทียบกับ Z80 อยู่ และขอแนะนำให้เรียนรู้ ไมโครโปรเซสเซอร์ 8 บิต ที่เรียบง่ายพอให้คนทั่วไปมองภาพรวมได้
เริ่มต้นกับ Z80 ในยุคที่คอมไพเลอร์ภาษาระดับสูงมีราคาแพง และซอฟต์แวร์แบบแชร์แวร์ก็หาไม่ได้ง่ายเหมือนโอเพนซอร์สทุกวันนี้ หากอยากเข้าใจว่ากำลังสั่งอะไรให้เครื่องทำ ทุกคนก็ควรเรียนแอสเซมบลีสักเล็กน้อย และ Z80 ก็เรียบง่ายพอจะใช้คิดตามได้
เมื่อ 35 ปีก่อน ต้องแอสเซมเบิลโปรแกรมด้วยมือแล้วป้อน ภาษาเครื่องแบบเลขฐานสิบหก เข้าไปในบอร์ดโดยตรง เพื่อให้สะดวกขึ้นจึงเขียน assembler ใช้เอง และประสบการณ์นั้นก็นำไปสู่งานด้านเครื่องมือพัฒนา ก่อนจะต่อยอดไปถึงการทำงานกับคอมไพเลอร์ C++ ตัวสำคัญ
ยังขาด เครื่องคิดเลข TI-84 ที่ทุกวันนี้นักเรียนอเมริกันหลายล้านคนยังใช้อยู่และสามารถเขียนโปรแกรมด้วย BASIC ได้ รุ่นจอขาวดำใช้ Z80 ส่วนรุ่นจอสีใช้ eZ80
ฉันใช้เวลาไปมากกับการทำโปรแกรมเล็กๆ ใน TI-BASIC ไว้อวดเพื่อนๆ แต่ไม่ได้ไปถึงขั้นเรียนแอสเซมบลี Z80 เคยพิมพ์คู่มือแอสเซมบลี Z80 สำหรับ TI-84 Plus ออกมาทั้งชุดเพื่อเริ่มอ่าน แต่จนถึงตอนนี้ก็ยังเขียนไม่ได้สักบรรทัด