สารบัญ:
- เสบียง
- ขั้นตอนที่ 1: ติดตั้ง Z80asm บน Z80-mbc2. ของคุณ
- ขั้นตอนที่ 2: คัดลอกซอร์สโค้ดให้คุณ Z80-mbc2
- ขั้นตอนที่ 3: รวบรวมและเรียกใช้โปรแกรม
วีดีโอ: Z80-mbc2 ไฟ LED ผู้ใช้รหัส Z80: 3 ขั้นตอน
2024 ผู้เขียน: John Day | [email protected]. แก้ไขล่าสุด: 2024-01-30 13:02
นี่คือตัวอย่างโปรแกรม LED สำหรับผู้ใช้ที่เขียนด้วยแอสเซมเบลอร์ Z80 สำหรับคอมพิวเตอร์ z80-mbc2
ฉันทำแบบทดสอบและแบบฝึกหัดเพื่อทบทวน นี่เป็นโปรแกรม Z80 แรกของฉันมานานกว่า 35 ปี
สนุก
เสบียง
คอมพิวเตอร์ Z80-mbc2
สำเนาของ Z80ASM จาก SLR Systems Rel. 1.32 สามารถดาวน์โหลดได้จากไฟล์เก็บถาวร cp/m จำนวนมาก
ฉันใช้โปรแกรมแก้ไข ZDE16 เนื่องจากเป็นอิมเมจสำหรับบูต CP/M สำหรับ z80-mbc2 แล้ว
ขั้นตอนที่ 1: ติดตั้ง Z80asm บน Z80-mbc2. ของคุณ
ฉันถือว่าคุ้นเคยกับเครื่องมือที่คุณมีสำหรับ Z80-MBC2 ของคุณ ไม่ว่าจะเป็น cpmtools เวอร์ชันใดก็ตามที่คุณใช้ ต่อไปนี้เป็นขั้นตอนหากใช้เวอร์ชันบรรทัดคำสั่ง:
- รับไฟล์ z80asm.com และ z80asm.doc (ทางเลือก) ในไดเร็กทอรีบางแห่งบนโฮสต์พีซีของคุณ
- ใส่การ์ด SD ของคุณในพีซีเครื่องเดียวกัน ฉันคิดว่ามันแสดงเป็นไดรฟ์ E: ด้านล่าง
- ฉันใส่แอสเซมเบลอร์บนดิสก์ CP/M A สำหรับ cp/m 2.2 ที่จะเป็นอิมเมจดิสก์ DS0N00. DSK
- คำสั่ง: cpmcp -f z80mbc2-d0 e:DS0N00. DSK z80asm.com 0: จะคัดลอกไฟล์ z80asm.com ไปยังรูปภาพ
- คำสั่ง cpmcp -f z80mbc2-d0 e:DS0N00. DSK z80asm.doc 0: จะคัดลอกเอกสารไปยังดิสก์ (ทางเลือก)
เมื่อคุณบูต cp/m 2.2 บน z80-mbc ของคุณ ตอนนี้คุณควรมี z80asm.com และ z80asm.doc (เป็นทางเลือก) ในไดรฟ์ A
ขั้นตอนที่ 2: คัดลอกซอร์สโค้ดให้คุณ Z80-mbc2
เชื่อมต่อกับ z80-mbc โดยใช้โปรแกรมเทอร์มินัลของคุณ
ฉันแนะนำให้คุณใช้ดิสก์ที่ไม่ได้ใส่ข้อมูลเพื่อบันทึกซอร์สโค้ด เช่น f: เพื่อเลือกประเภทไดรฟ์นี้:
NS:
หลังจากนั้นไม่กี่วินาที คุณจะเห็นพรอมต์ F:
ตอนนี้ใช้โปรแกรม zde16 บนไดรฟ์ A เพื่อแก้ไขไฟล์เปล่า:
a:zde16 myled.z80
สิ่งนี้จะสร้างไฟล์ชื่อ myled.z80 บนดิสก์ F: หมายเหตุ: จำเป็นต้องใช้.z80 ในชื่อเพื่อให้ z80asm ทำงานได้
ตอนนี้ให้คัดลอกและวางโค้ดด้านล่าง ทั้งนี้ขึ้นอยู่กับความเร็วของเทอร์มินัล ฯลฯ คุณอาจต้องคัดลอกและวางในส่วนเล็กๆ หรือพิมพ์เข้าไป! ให้ความรู้สึกของยุค 1980 กลับมาเช่นกัน
;
;ทดสอบ LED ผู้ใช้และรหัสผู้ใช้; BDOS equ 05h;cp/m BDOS entry point USRLED equ 0;opcode for User LED control USRKEY equ 80h;opcode for User Switch control DPORT equ 0;DATA port i/o CPORT equ 1;Command port output; org 0100h; ld (estack), sp; เก็บข้อมูลที่มีอยู่เพื่อกลับไปที่ cp/m ld sp, stack; ld hl, msg;hello message call _puts lp: ld a, 1;turn on = 1 call led call delay;delay and wait for key(s) jr nz, finish;non zero หมายถึงคีย์/สวิตช์กด xor a;a= 0 call led call delay;ดีเลย์หรือรอคีย์/สวิตช์ jr z, lp;ถ้าเป็นศูนย์ ไม่มีคีย์/สวิตช์ ไปอีกครั้ง; เสร็จสิ้น: xor a; กดปุ่มหรือสวิตช์แล้วจึงทำการโทร led ld hl, bye;say bye call _puts;display msg HL= ld sp, (estack); original stack ret;return to cp/m; led: กด af; บันทึกค่า led 0 หรือ 1 ld a, USRLED ออก (CPORT), a;optcode ส่ง pop af out (DPORT), a;data sent ret;;การวนรอบการหน่วงเวลาที่ตรวจสอบการกดปุ่มบนเทอร์มินัลหรือความล่าช้าของปุ่มผู้ใช้: ld bc, 00e00h;aprox 1/2s 8mhz CPU, การเดางาน loop2: dec bc;นับการวนซ้ำ bc;บันทึก regs เมื่อเรียก BDOS push de ld c, 6;BDOS raw i/o ตรวจสอบว่ามีการกดปุ่ม ld e, 0ffh call BDOS pop de;รับค่าของเรากลับจาก stack pop bc หรือ a;ตรวจสอบว่ามีการกดปุ่มบนเทอร์มินัล ret nz หรือไม่ return (ยังเก็บค่าสถานะ nz ไว้ด้วย) ld a, USRKEY;ตอนนี้ตรวจสอบ user key out (CPORT), a;command port in a, (DPORT);read key and a, 1;สนใจเฉพาะบิต 0 ret nz; return หาก userkey กดปุ่ม ld a, b;หรือเป็น bc=0 หรือ c jr nz, loop2;ยังนับไม่เสร็จ ไปอีกครั้ง xor a;ตั้งค่าแฟล็ก z เป็น 0 ret; ไม่มีการกดปุ่มย้อนกลับ สิ้นสุดการหน่วงเวลา; _puts: push bc;save regs ของเราพร้อมสำหรับการโทร bdos push de nxt: ld a, (hl);get char หรือ a;test if it's 0, end of msg jr z, done;yes so done ld e, a; ตั้งค่าการโทรไปยัง BDOS เพื่อพิมพ์ ถ่าน ld c, 2 กด hl; บันทึกตัวชี้ข้อความ เรียก BDOS; พิมพ์ป๊อป hl inc hl; ถ่านถัดไป jr nxt; ทำต่อไปให้เสร็จ: pop de; เรียกคืน regs pop bc ret แล้ว; และส่งคืน; msg db 'การทดสอบ LED ของผู้ใช้, คีย์ใดๆ เพื่อออกจาก' db 0ah, 0dh, 0 bye db 'Exit' db 0ah, 0dh, 0 estack dw 0 ds 256 - 2 stack: dw 0
บันทึกไฟล์โดยใช้ ESC x ดูข้อมูลเพิ่มเติมในคู่มือการใช้ ZDE16 ซึ่งคล้ายกับ wordstar สำหรับการแก้ไขส่วนใหญ่ ยกเว้นตัวเลือก Ctrl-K ต่างกัน
ขั้นตอนที่ 3: รวบรวมและเรียกใช้โปรแกรม
เมื่อคุณมีซอร์สโค้ดของคุณอยู่ในเครื่องแล้ว
พิมพ์:
F>
F>a:z80asm myled/a Z80ASM ลิขสิทธิ์ (C) 1983-86 โดย SLR Systems Rel. 1.32 MYLED/A สิ้นสุดไฟล์ ผ่าน 1 0 ตรวจพบข้อผิดพลาด 406 ไบต์แอบโซลูท ตรวจพบสัญลักษณ์ 16 ตัว
สิ่งนี้จะค้นหาไฟล์ myled.z80 และสร้างไฟล์ไบนารี (.com) นั่นคือสิ่งที่ตัวเลือก /a ย่อมาจาก
ดูไฟล์ z80asm.doc สำหรับข้อมูลเพิ่มเติม
ในการรันโปรแกรม ให้พิมพ์:
F>ไมเลด
การทดสอบ LED ของผู้ใช้ ปุ่มใดก็ได้เพื่อออกจาก Exit F>
กดปุ่มผู้ใช้หรือปุ่มบนเครื่องเทอร์มินัลเพื่อออก
เสร็จแล้ว.
แนะนำ:
ทบทวนคอมพิวเตอร์ Z80: 6 ขั้นตอน
ทบทวนคอมพิวเตอร์ Z80 อีกครั้ง: ในอดีต ฉันได้เขียนคำแนะนำเกี่ยวกับวิธีสร้างคอมพิวเตอร์ที่ใช้ Z80 และฉันออกแบบวงจรให้เรียบง่ายที่สุดเท่าที่จะเป็นไปได้ เพื่อให้สามารถสร้างได้ง่ายที่สุด ฉันเขียนโปรแกรมขนาดเล็กด้วยแนวคิดเรื่องความเรียบง่ายแบบเดียวกัน NS
การออกแบบเกมในการสะบัดใน 5 ขั้นตอน: 5 ขั้นตอน
การออกแบบเกมในการสะบัดใน 5 ขั้นตอน: การตวัดเป็นวิธีง่ายๆ ในการสร้างเกม โดยเฉพาะอย่างยิ่งเกมปริศนา นิยายภาพ หรือเกมผจญภัย
วิธีใช้ Neopixel Ws2812 LED หรือ LED STRIP หรือ Led Ring กับ Arduino: 4 ขั้นตอน
วิธีใช้ Neopixel Ws2812 LED หรือ LED STRIP หรือ Led Ring กับ Arduino: สวัสดีทุกคนเนื่องจาก Neopixel led Strip เป็นที่นิยมอย่างมากและเรียกอีกอย่างว่า ws2812 led strip เช่นกัน พวกเขาเป็นที่นิยมอย่างมากเพราะในแถบนำเหล่านี้เราสามารถระบุแต่ละ LED แยกจากกัน ซึ่งหมายความว่าหากคุณต้องการให้ไฟ LED สองสามดวงเรืองแสงเป็นสีเดียว
ESP8266 RGB LED STRIP WIFI ควบคุม - NODEMCU เป็นรีโมท IR สำหรับ Led Strip ที่ควบคุมผ่าน Wifi - RGB LED STRIP การควบคุมสมาร์ทโฟน: 4 ขั้นตอน
ESP8266 RGB LED STRIP WIFI ควบคุม | NODEMCU เป็นรีโมท IR สำหรับ Led Strip ที่ควบคุมผ่าน Wifi | การควบคุมสมาร์ทโฟน RGB LED STRIP: สวัสดีทุกคนในบทช่วยสอนนี้ เราจะเรียนรู้วิธีใช้ nodemcu หรือ esp8266 เป็นรีโมท IR เพื่อควบคุมแถบ LED RGB และ Nodemcu จะถูกควบคุมโดยสมาร์ทโฟนผ่าน wifi โดยพื้นฐานแล้ว คุณสามารถควบคุม RGB LED STRIP ได้ด้วยสมาร์ทโฟนของคุณ
Z80 Monitor Type ระบบปฏิบัติการและ SBC: 6 ขั้นตอน (พร้อมรูปภาพ)
ระบบปฏิบัติการประเภทจอภาพ Z80 และ SBC: EfexV4 เป็น ROM ของจอภาพที่มีแอสเซมเบลอร์แบบอินไลน์และตัวแยกชิ้นส่วนและยูทิลิตี้พื้นฐานเพื่อเขียน รัน และดีบักโปรแกรม z80 ของคุณในฮาร์ดแวร์จริง EfexMon ไม่ต้องการ CP/M, N8VEM หรือฮาร์ดแวร์ที่ซับซ้อนอื่นๆ คุณต้องการเฉพาะสถาปัตยกรรม Z80 มาตรฐาน SBC a