Πίνακας περιεχομένων:
- Προμήθειες
- Βήμα 1: Εγκαταστήστε το Z80asm στο Z80-mbc2 σας
- Βήμα 2: Αντιγράψτε τον πηγαίο κώδικα σε εσάς Z80-mbc2
- Βήμα 3: Μεταγλωττίστε και εκτελέστε το πρόγραμμα
Βίντεο: Z80-mbc2 Z80 Code Flash LED χρήστη: 3 βήματα
2024 Συγγραφέας: John Day | [email protected]. Τελευταία τροποποίηση: 2024-01-30 08:32
Αυτό είναι ένα παράδειγμα προγράμματος LED χρήστη γραμμένο σε Z80 assembler για τον υπολογιστή 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: για να επιλέξετε αυτόν τον τύπο μονάδας δίσκου:
ΦΑ:
μετά από μερικά δευτερόλεπτα θα δείτε την προτροπή F:
τώρα χρησιμοποιήστε το πρόγραμμα zde16 στη μονάδα δίσκου A για να επεξεργαστείτε ένα κενό αρχείο:
a: zde16 myled.z80
Αυτό θα δημιουργήσει ένα αρχείο που ονομάζεται myled.z80 στο δίσκο F:, Σημείωση: το.z80 απαιτείται στο όνομα για να λειτουργήσει το z80asm.
Τώρα αντιγράψτε και επικολλήστε τον παρακάτω κώδικα, ανάλογα με την ταχύτητα του τερματικού σας κ.λπ. ίσως χρειαστεί να αντιγράψετε και να επικολλήσετε σε μικρές ενότητες. Or πληκτρολογήστε το! πάρτε την αίσθηση του 1980 επίσης πίσω.
;
Δοκιμάστε το LED χρήστη και το κλειδί χρήστη. BDOS equ 05h; cp/m BDOS σημείο εισόδου USRLED equ 0; opcode για χειριστήριο LED χρήστη USRKEY ισοδύναμη 80h; opcode για 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, στοίβα. ld hl, msg; hello message call _puts lp: ld a, 1; turn on = 1 led led call call, καθυστέρηση και αναμονή για τα κλειδιά jr nz, φινίρισμα? non zero σημαίνει κλειδί/διακόπτης πατημένος xor a; a = 0 καθυστέρηση κλήσης led, καθυστέρηση ή αναμονή για το κλειδί/διακόπτη jr z, lp. Αν μηδέν, χωρίς κλειδί/διακόπτη, πηγαίνετε ξανά. φινίρισμα: xor a; το πλήκτρο ή ο διακόπτης πατήθηκε, έτσι έγινε η κλήση led ld hl, bye; say bye call _puts; display msg HL = ld sp, (estack); αρχική στοίβα ret; επιστροφή σε cp/m; led: ώθηση af; αποθήκευση τιμής led 0 ή 1 ld a, USRLED out (CPORT), a; optcode sent pop af out (DPORT), a; data sent ret? Βρόχος καθυστέρησης που πατά το πλήκτρο ελέγχου στο τερματικό ή την καθυστέρηση κλειδιού χρήστη: ld bc, 00e00h; περίπου 1/2s CPU 8mhz, καθαρός βρόχος εργασίας μαντείας2: dec bc; μετρήστε το βρόχο push bc; αποθηκεύστε regs όταν καλείτε BDOS push de ld c, 6; BDOS raw i/o έλεγχος εάν πατήσατε το πλήκτρο ld e, 0ffh κλήση BDOS pop de; πάρτε τις τιμές μας πίσω από το stack pop bc ή a; ελέγξτε αν πατήσατε το πλήκτρο στο τερματικό ret nz; ναι επιστρέψτε (διατηρεί επίσης τη ρύθμιση σημαίας nz) ld a, USRKEY; Τώρα ελέγξτε το κλειδί χρήστη (CPORT), a; θύρα εντολών σε a, (DPORT); πλήκτρο ανάγνωσης και a, 1; ενδιαφέρεται μόνο για το bit 0 ret nz; επιστροφή εάν το userkey πατήσει ld a, b; ή είναι bc = 0 ή c jr nz, loop2; δεν τελείωσε η καταμέτρηση, πήγαινε ξανά xor a. ρύθμισε τη σημαία z στο 0 ret. δεν επέστρεψες κανένα πλήκτρο πατημένο, τέλος καθυστέρησης. _puts: push bc; αποθηκεύστε τα regs μας έτοιμα για κλήσεις bdos push de nxt: ld a, (hl); get char or a; test if it is 0, end of msg jr z, done; yes so done ld e, a; ρυθμίστε την κλήση στο BDOS για εκτύπωση char ld c, 2 push hl; αποθήκευση κειμένου δείκτη κλήσης BDOS; εκτύπωση pop hl inc hl; επόμενο char jr nxt; συνέχιση: pop de; ? msg db 'Test LED User, any key to exit' 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 Copyright (C) 1983-86 by SLR Systems Rel. 1.32 MYLED/A Τέλος αρχείου Pass 1 0 Εντοπίστηκαν σφάλματα. 406 Απόλυτα Bytes. Ανιχνεύθηκαν 16 σύμβολα.
Αυτό θα αναζητήσει το αρχείο myled.z80 και θα παράγει ένα δυαδικό (.com) αρχείο, αυτό σημαίνει την επιλογή /a.
Δείτε το αρχείο z80asm.doc για περισσότερες πληροφορίες.
Για να εκτελέσετε το πρόγραμμα, πληκτρολογήστε:
F> μυλημένος
Δοκιμή LED χρήστη, οποιοδήποτε κλειδί για έξοδο από την έξοδο F>
Πατήστε είτε το κουμπί χρήστη είτε ένα πλήκτρο στο τερματικό για έξοδο.
Εγινε.
Συνιστάται:
Δοκιμαστής μπαταρίας Arduino με διεπαφή χρήστη WEB .: 5 βήματα
Δοκιμαστής μπαταρίας Arduino με διεπαφή χρήστη WEB .: Σήμερα, ο ηλεκτρονικός εξοπλισμός χρησιμοποιεί εφεδρικές μπαταρίες για να αποθηκεύσει την κατάσταση στην οποία είχε παραμείνει η λειτουργία όταν ο εξοπλισμός ήταν απενεργοποιημένος ή όταν, κατά τύχη, ο εξοπλισμός ήταν απενεργοποιημένος. Ο χρήστης, όταν ενεργοποιείται, επιστρέφει στο σημείο όπου έμεινε
Λογικός αναλυτής με διεπαφή χρήστη Android: 7 βήματα
Λογικός αναλυτής με διεπαφή χρήστη Android: Ο κόσμος έχει ήδη κατακλυστεί από τόσους πολλούς λογικούς αναλυτές. Στο ηλεκτρονικό μου χόμπι, χρειαζόμουν ένα για την αντιμετώπιση προβλημάτων και τον εντοπισμό σφαλμάτων. Έψαξα στο διαδίκτυο αλλά δεν μπορώ να βρω αυτό που ψάχνω. Εδώ λοιπόν, σας παρουσιάζω … " ΑΛΛΑ ΑΛΛΟ ΛΟΙΟ
Δημιουργία καμπύλης διεπαφής χρήστη στην ενότητα για εικονική πραγματικότητα: 4 βήματα
Δημιουργία Curved UI in Unity for Virtual Reality: Αν ψάχνετε για μια δωρεάν και εύκολη λύση για να δημιουργήσετε μια καμπύλη διεπαφή χρήστη για την Εφαρμογή Εικονικής Πραγματικότητας ή το Παιχνίδι VR, βρίσκεστε στο σωστό μέρος. Σε αυτό το ιστολόγιο θα μάθετε να δημιουργείτε ένα καμπύλο στοιχείο ui σε ενότητα χρησιμοποιώντας τις επεκτάσεις Unity UI
Διεπαφή χρήστη LCD: 4 βήματα
LCD User Interface: Το LCD User Interface είναι, όπως μπορείτε να περιμένετε, μια διεπαφή φτιαγμένη για LCD 16*2. Θα μπορείτε να εμφανίζετε χρόνο, πληροφορίες υλικού, μηνύματα … Αλλά θα μπορείτε επίσης να δημιουργήσετε δικό σας σχέδιο και κινούμενα σχέδια, για να τα αποθηκεύσετε και να τα φορτώσετε. Χρειάζεται: - Ard
Συγκολλητικό σίδερο με μπαταρία λιθίου κατασκευασμένο από χρήστη: 8 βήματα (με εικόνες)
Συγκολλητικό σίδερο με μπαταρία λιθίου κατασκευασμένο από τον χρήστη: Πρόσφατα, βρήκα μια πλεονάζουσα πηγή για συμβουλές συγκόλλησης Weller (r) BP1 με μπαταρία. Η συγκόλληση ηλεκτρονικών απαιτεί μερικές φορές μια επίσκεψη επισκευής τοποθεσίας και τα εργαλεία πεδίου μπορεί να είναι μια πρόκληση. Συχνά φτιάχνω τα δικά μου εργαλεία, βρίσκοντας πολύ χαμηλές τις λύσεις στο ράφι