Table des matières:

Z80-mbc2 Z80 Code Flash LED utilisateur : 3 étapes
Z80-mbc2 Z80 Code Flash LED utilisateur : 3 étapes

Vidéo: Z80-mbc2 Z80 Code Flash LED utilisateur : 3 étapes

Vidéo: Z80-mbc2 Z80 Code Flash LED utilisateur : 3 étapes
Vidéo: Z80-MBC2 Flashing LED Clock 2024, Novembre
Anonim
Z80-mbc2 Z80 Code Flash LED utilisateur
Z80-mbc2 Z80 Code Flash LED utilisateur

Il s'agit d'un exemple de programme utilisateur LED écrit en assembleur Z80 pour l'ordinateur z80-mbc2.

J'ai fait cet exercice de test et de révision pour moi, c'est mon premier programme Z80 depuis plus de 35 ans.

Prendre plaisir

Fournitures

ordinateur Z80-mbc2

Une copie de Z80ASM de SLR Systems Rel. 1.32, téléchargeable à partir de nombreuses archives cp/m

Un éditeur, j'ai utilisé ZDE16, car il était déjà sur l'image de démarrage CP/M pour le z80-mbc2

Étape 1: Installez Z80asm sur votre Z80-mbc2

Installez Z80asm sur votre Z80-mbc2
Installez Z80asm sur votre Z80-mbc2

Je suppose que vous êtes familiarisé avec les outils dont vous disposez pour votre Z80-MBC2, à savoir quelle que soit la version de cpmtools que vous utilisez. Voici les étapes si vous utilisez les versions en ligne de commande:

  1. Obtenez les fichiers z80asm.com et z80asm.doc (facultatif) dans un répertoire quelque part sur votre PC hôte
  2. Mettez votre carte SD dans le même PC, je suppose ci-dessous qu'elle s'affiche en tant que lecteur E: ci-dessous.
  3. J'ai mis l'assembleur sur mon disque CP/M A, pour cp/m 2.2 ce serait l'image disque DS0N00. DSK
  4. La commande: cpmcp -f z80mbc2-d0 e:DS0N00. DSK z80asm.com 0: copiera le fichier z80asm.com sur l'image
  5. La commande cpmcp -f z80mbc2-d0 e:DS0N00. DSK z80asm.doc 0: copiera la documentation sur le disque (facultatif)

Lorsque vous démarrez cp/m 2.2 sur votre z80-mbc, vous devriez maintenant avoir z80asm.com et z80asm.doc (facultatif) sur le lecteur A

Étape 2: copiez le code source sur vous Z80-mbc2

Connectez-vous au z80-mbc à l'aide de votre programme de terminal

Je vous suggère d'utiliser un disque non rempli pour enregistrer le code source, par exemple f: pour choisir ce type de lecteur:

F:

après quelques secondes, vous verrez l'invite F:.

utilisez maintenant le programme zde16 sur le lecteur A pour éditer un fichier vierge:

a:zde16 myled.z80

Cela créera un fichier appelé myled.z80 sur le disque F:, note: le.z80 est requis dans le nom pour que z80asm fonctionne.

Maintenant, copiez et collez le code ci-dessous, en fonction de la vitesse de votre terminal, etc., vous devrez peut-être copier et coller par petites sections. Ou saisissez-le ! retrouvez également cette sensation des années 1980.

;

; Tester la LED utilisateur et la clé utilisateur; BDOS equ 05h;cp/m Point d'entrée BDOS USRLED equ 0;opcode pour le contrôle de la LED utilisateur USRKEY equ 80h;opcode pour le contrôle du commutateur utilisateur DPORT equ 0;DATA port i/o CPORT equ 1;Command port output; org 0100h; ld (estack), sp; conserve les informations existantes pour le retour à cp/m ld sp, stack; ld hl, msg;hello message call _puts lp: ld a, 1;allumer = 1 appel led retard d'appel;retarder et attendre la (les) touche(s) jr nz, terminer;non zéro signifie touche/interrupteur enfoncé xor a;a= 0 appel led retard d'appel; retarder ou attendre touche/interrupteur jr z, lp; si zéro, pas de touche/interrupteur, recommencer; finition: xou a;touche ou commutateur a été enfoncé, donc fait appel led ld hl, bye;dire bye call _puts;affichage msg HL= ld sp, (estack);pile d'origine ret;retour à cp/m; led: push af; sauvegarde la valeur de la led 0 ou 1 ld a, USRLED out (CPORT), a; optcode envoyé pop af out (DPORT), a; data envoyé ret;;Delay loop qui vérifie la touche enfoncée sur le terminal ou le délai de la touche utilisateur: ld bc, 00e00h; environ 1/2 s 8 mhz CPU, pure conjecture boucle de travail2: dec bc; compter la boucle push bc; enregistrer les regs lors de l'appel BDOS push de ld c, 6;BDOS raw i/o vérifie si la touche est enfoncée ld e, 0ffh appelle BDOS pop de; récupère nos valeurs de la pile pop bc ou a; vérifie si la touche est enfoncée sur le terminal ret nz;yes return (maintient également l'indicateur nz défini) ld a, USRKEY; maintenant vérifier la clé utilisateur (CPORT), a; port de commande dans a, (DPORT); lire la clé et a, 1; uniquement intéressé par le bit 0 ret nz; revenir si la clé utilisateur est enfoncée ld a, b; ou est bc=0 ou c jr nz, loop2;pas fini de compter, recommencer xor a;mettre le drapeau z à 0 ret;retour aucune touche enfoncée, fin du délai; _puts: push bc;sauvegarder nos regs prêts pour les appels bdos push de nxt: ld a, (hl);get char ou a;test si c'est 0, end of msg jr z, done;yes so done ld e, a; configurer l'appel à BDOS pour imprimer un char ld c, 2 push hl; enregistrer le pointeur de texte appeler BDOS; l'imprimer pop hl inc hl; prochain char jr nxt; continuer à faire: pop de; terminé la restauration des regs pop bc ret; et revenir; msg db 'User LED test, any key to exit' db 0ah, 0dh, 0 bye db 'Exit' db 0ah, 0dh, 0 estack dw 0 ds 256 - 2 stack: dw 0

Enregistrez le fichier en utilisant ESC x. Voir le guide d'utilisation de ZDE16 pour plus d'informations, c'est un peu comme wordstar pour la plupart des éditions, sauf que les options Ctrl-K sont différentes.

Étape 3: compiler et exécuter le programme

Une fois que vous avez votre code source sur la machine.

Taper:

F>

F>a:z80asm myled/a Z80ASM Copyright (C) 1983-86 par SLR Systems Rel. 1.32 MYLED/A Fin du fichier Réussite 1 0 Erreur(s) détectée(s). 406 octets absolus. 16 symboles détectés.

Cela recherchera le fichier myled.z80 et produira un fichier binaire (.com), c'est ce que signifie l'option /a.

Voir le fichier z80asm.doc pour plus d'informations.

Pour exécuter le programme, tapez:

F>myled

Test LED utilisateur, n'importe quelle touche pour quitter Exit F>

Appuyez soit sur le bouton utilisateur, soit sur une touche du terminal pour quitter.

Terminé.

Conseillé: