1 คะแนน โดย GN⁺ 7 시간 전 | 1 ความคิดเห็น | แชร์ทาง WhatsApp
  • 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 ความคิดเห็น

 
GN⁺ 7 시간 전
ความเห็นจาก Hacker News
  • เริ่มเขียนโปรแกรมด้วย แอสเซมบลี ในปี 1978 และอยากเข้าใจไม่ใช่แค่ซอฟต์แวร์ แต่รวมถึงหลักการทำงานของฮาร์ดแวร์ด้วย
    หลังจากประกอบชุดคิท Z80 ก็ได้เรียนรู้ดิจิทัลอิเล็กทรอนิกส์ด้วย logic probe และออสซิลโลสโคป พร้อมทั้งศึกษาคู่มืออย่างละเอียดจนได้เรียนรู้ชุดคำสั่ง ทุกวันนี้เกือบอายุ 70 แล้วแต่ยังจำได้ชัดเหมือนเพิ่งเกิดเมื่อวาน และ Z80 ก็เป็น CPU ที่ยอดเยี่ยมจริงๆ

    • สามปีถัดมาเริ่มต้นกับ คอมพิวเตอร์ Radio Shack 4KB ที่ใช้ 6809 และแม้จะไม่ได้เขียนโค้ด 6809 มานานกว่า 40 ปี ก็ยังจำ opcode ได้หลายตัวจนเพิ่งช่วยแก้บั๊กแอสเซมบลีสุดหินบน retrocomputing.stackexchange.com ได้
      เรียนรู้ด้วยตัวเองจากการ reverse assemble ROM และอ้างอิงการ์ดสรุปของ Motorola โดยไม่มีทั้งคลาสเรียนหรือหนังสือ แต่ต่อมาก็ไปก่อตั้งสตาร์ตอัปหลายแห่งและมีเส้นทางอาชีพที่ประสบความสำเร็จ การเรียนรู้คอมพิวเตอร์ตั้งแต่หลักการพื้นฐานที่สุดในชั้นล่างสุดยังคงมีคุณค่าที่ทดแทนไม่ได้
    • ขอแนะนำ Turing Complete(https://turingcomplete.game/)
      เป็นเกมจำลอง digital logic ที่ให้สร้างวงจรพื้นฐานจาก NAND gate แล้วประกอบอุปกรณ์เชิงฟังก์ชันกับ instruction decoder เพื่อสร้างสถาปัตยกรรมที่ Turing complete จากนั้นเขียนโปรแกรมด้วยแอสเซมบลีที่กำหนดเอง หากต้องการ opcode ใหม่ก็สามารถสร้างเองได้ จึงยากแต่คุ้มค่ามาก ตอนนี้ใกล้ออก正式แล้ว และมี ตัวอย่าง เผยแพร่แล้ว
    • ทั้ง Z80 และ 6502 ต่างก็ถือกำเนิดจาก ดีไซน์ที่ถูกปฏิเสธภายในบริษัท แม้ตอนนี้ทุกอย่างจะซับซ้อนขึ้นมาก แต่อยากเห็นนักออกแบบคนใหม่ปล่อยอะไรสักอย่างแบบ FORK86-64
    • ฉันเองก็เคยทำ อุปกรณ์ต่อพ่วงภายนอกสำหรับ ZX81 ด้วยตัวเอง
  • ตอนอายุ 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 รันโปรแกรมจริงๆ อย่างไร

    • ตอนอายุ 12 กลับรู้สึกว่า โครงสร้างเรียบง่ายของ BASIC ช่วยให้เข้าใจแอสเซมบลีของ Z80 ได้ง่ายขึ้น ที่อยู่หน่วยความจำคือเลขบรรทัด รีจิสเตอร์คือ ตัวแปร JP คือ GOTO, CALL คือ GOSUB, CP คือ IF, JP Z คือ THEN GOTO, และ LD คือ LET
    • คอมพิวเตอร์เครื่องแรกที่ซื้อคือ ZX-81 แบบคิท และกลายเป็น ผู้บุกเบิกด้านไอที ในเมืองเล็กๆ ของตัวเอง เป็นยุคที่ทุกอย่างทั้งซับซ้อนและเรียบง่าย และใช้ RAM แค่ 1KB ก็ยังรัน flight simulator ได้
    • รู้จักคอมพิวเตอร์ครั้งแรกผ่าน ZX-81 และหลงใหลใน วิธีปิดหน้าจอในโหมดความเร็วสูง รวมถึงการประนีประนอมอันน่าสนใจระหว่างฮาร์ดแวร์กับซอฟต์แวร์
  • คำกล่าวที่ว่า “Z80 เข้ากันได้แบบไบนารีอย่างสมบูรณ์กับชุดคำสั่งของ 8080” นั้น หากนับรวม flag register ด้วยก็ไม่จริง เพราะการทำงานของ parity flag ในบางคำสั่งต่างกัน
    อีกทั้งโปรแกรมที่อาศัย opcode ที่ไม่ได้กำหนดไว้ของ 8080 อาจถูกรันแบบใดก็ได้ แต่ Z80 นำ opcode เหล่านั้นกลับมาใช้เป็นคำสั่งใหม่

    • การที่มันไม่ทำให้ parity flag เข้ากันได้อย่างสมบูรณ์ถือเป็นทางเลือกที่ฉลาด โปรแกรมเดิมแทบไม่ตรวจค่านี้อยู่แล้ว และแทบไม่เคยตรวจเลยหลังคำสั่งที่ทำงานต่างออกไปบน Z80
      ทำให้สามารถนำ parity flag มา ใช้ซ้ำเป็น overflow flag ได้ ซึ่งเป็นส่วนขยายที่มีประโยชน์มาก Datapoint 2200, Intel 8008, Intel 8080 และ RISC-V เป็นชุดคำสั่งหายากที่ฮาร์ดแวร์ไม่ตรวจจับ overflow ซึ่งต่างจากดีไซน์ยุคแรกที่เรียบง่ายและต้นทุนต่ำ แต่สำหรับ RISC-V ไม่มีข้อแก้ตัว และมองว่านี่เป็นความผิดพลาดที่ใหญ่ที่สุด
    • คำสั่งที่ไม่ได้กำหนดไว้ไม่ใช่ส่วนหนึ่งของชุดคำสั่ง 8080 ดังนั้นการรองรับมันจึงไม่ใช่ความเข้ากันได้กับชุดคำสั่ง แต่เป็น ความเข้ากันได้แบบไบนารีกับซิลิคอน 8080 อย่างไรก็ดี ความต่างของ parity flag ทำลายความเข้ากันได้จริง ดังนั้นคำอธิบายที่แม่นยำกว่าคือ “เข้ากันได้แบบไบนารีกับโค้ดที่พึ่งพาเฉพาะชุดคำสั่ง 8080 โดยไม่รวมค่าของ parity flag”
  • ต้นปี 1983 ได้เริ่มเขียนโปรแกรมด้วย แอสเซมบลี Z80 บน TRS-80 Model I หนังสือของ Bill Barden และบทความชุด ‘The Next Step’ ของ Hardin Brothers ในนิตยสาร 80 Micro เป็นจุดเริ่มต้น และได้สรุปประสบการณ์ตอนนั้นไว้ในบทความนี้

    • ตอนเป็นวัยรุ่นราวปี 1980 มักซื้อหนังสือจาก Radio Shack แถวบ้านเท่าที่พอมีกำลังซื้อ และเพราะ TRS-80 ใช้ Z80 จึงได้อ่าน หนังสือ Z80 ของ Bill Barden ที่ Howard Sams ตีพิมพ์ด้วย
      มันอธิบายได้ชัดเจนจนแม้แต่เด็กก็เข้าใจ เลยอ่านตั้งแต่ต้นจนจบ ถึงจะไม่เคยได้จับ Z80 จริงๆ แต่ก็ปูพื้นฐานให้เข้าใจทั้ง 6502 และไมโครคอนโทรลเลอร์ยุคแรกอย่าง 8051 กับ PIC ได้ไม่ยาก จนถึงตอนนี้ก็ดูเหมือนยังเข้าใจไมโครโปรเซสเซอร์สมัยใหม่ด้วยการเทียบกับ Z80 อยู่ และขอแนะนำให้เรียนรู้ ไมโครโปรเซสเซอร์ 8 บิต ที่เรียบง่ายพอให้คนทั่วไปมองภาพรวมได้
  • เริ่มต้นกับ Z80 ในยุคที่คอมไพเลอร์ภาษาระดับสูงมีราคาแพง และซอฟต์แวร์แบบแชร์แวร์ก็หาไม่ได้ง่ายเหมือนโอเพนซอร์สทุกวันนี้ หากอยากเข้าใจว่ากำลังสั่งอะไรให้เครื่องทำ ทุกคนก็ควรเรียนแอสเซมบลีสักเล็กน้อย และ Z80 ก็เรียบง่ายพอจะใช้คิดตามได้

  • เมื่อ 35 ปีก่อน ต้องแอสเซมเบิลโปรแกรมด้วยมือแล้วป้อน ภาษาเครื่องแบบเลขฐานสิบหก เข้าไปในบอร์ดโดยตรง เพื่อให้สะดวกขึ้นจึงเขียน assembler ใช้เอง และประสบการณ์นั้นก็นำไปสู่งานด้านเครื่องมือพัฒนา ก่อนจะต่อยอดไปถึงการทำงานกับคอมไพเลอร์ C++ ตัวสำคัญ

    • ในยุค 1980 หลายคนรวมถึงฉันสามารถอ่าน รหัสฐานสิบหกของคำสั่ง Z80 ได้ง่ายพอๆ กับแอสเซมบลีแบบสัญลักษณ์ ซึ่งมีประโยชน์มากเวลาทำ reverse engineering กับ Microsoft CP/M BASIC interpreter หรือคอมไพเลอร์ FORTRAN
    • งานแบบนั้นฟังดูเหมือนเรื่องปลายยุค 1970 แต่จริงๆ แล้วเป็น ปี 1991 ข้อดีคือสามารถรู้ได้ตลอดเวลาว่าโปรแกรมกำลังทำอะไรอย่างแม่นยำ แต่ถ้าจะสร้างอะไรซับซ้อนก็ทรมานไม่น้อย
    • เป็นการแปลงแอสเซมบลี เป็นภาษาเครื่องซึ่งเป็นภาษาเดียวที่ CPU เข้าใจ ด้วยตัวเองโดยตรง
  • ยังขาด เครื่องคิดเลข TI-84 ที่ทุกวันนี้นักเรียนอเมริกันหลายล้านคนยังใช้อยู่และสามารถเขียนโปรแกรมด้วย BASIC ได้ รุ่นจอขาวดำใช้ Z80 ส่วนรุ่นจอสีใช้ eZ80

    • ในยุโรป โรงเรียนมัธยมก็ระบุให้ซื้อ TI-84 Plus และจากที่ยังเห็นขายตามร้านก็น่าจะยังใช้งานกันอยู่
      ฉันใช้เวลาไปมากกับการทำโปรแกรมเล็กๆ ใน TI-BASIC ไว้อวดเพื่อนๆ แต่ไม่ได้ไปถึงขั้นเรียนแอสเซมบลี Z80 เคยพิมพ์คู่มือแอสเซมบลี Z80 สำหรับ TI-84 Plus ออกมาทั้งชุดเพื่อเริ่มอ่าน แต่จนถึงตอนนี้ก็ยังเขียนไม่ได้สักบรรทัด
    • TI-84+ อาจเป็นหนึ่งในคอมพิวเตอร์เรโทรเครื่องโปรดที่สุดของฉัน
    • ของฉันคือ TI-83 เลยไม่มีเทคโนโลยีล้ำๆ แบบนั้น