;
;  _===_ _           _                  ______ _     _             _ _ _
; |  ___| |         | |                 | ___ (_)   | |           (_) | |
; | |__ | | ___  ___| |_ _ __ ___ ______| |_/ /_  __| | ___  _   _ _| | | ___ _   _ _ __
; |  __|| |/ _ \/ __| __| '__/ _ \______| ___ \ |/ _` |/ _ \| | | | | | |/ _ \ | | | '__|
; | |___| |  __/ (__| |_| | | (_) |     | |_/ / | (_| | (_) | |_| | | | |  __/ |_| | |
; \____/|_|\___|\___|\__|_|  \___/      \____/|_|\__,_|\___/ \__,_|_|_|_|\___|\__,_|_|
;
; Essai de Basculement de la broche PIO-B0 à vitesse lente sur plateforme Z80 PRO-83
; Code source développé et assemblé sur le site ASM80.com
; Électro-Bidouilleur, V1, Juin 2022. https://www.youtube.com/Électro-Bidouilleur
; Licence de droits: Attribution 4.0 International (CC BY 4.0)  Lisez https://creativecommons.org/licenses/by/4.0/deed.fr  

; DÉFINITION DE MACROS
PIO_B_D equ 041h
PIO_B_C equ 043h

; INITIALISATION DU PORT PIO-B
INIT:
    ld A,0Fh                ; Configurer le port PIO-B en mode sortie (mode 0)
    out (PIO_B_C),A         ;     "

; BOUCLE DE BASCULEMENT
BASCULE:
    xor 01h                 ; Basculer le bit 0 de la valeur dans l'accumulateur
    out (PIO_B_D),A         ; Transférer l'accumulateur vers le registre de donnée de PIO-B
    
    ; boucle imbriquée de génération de délai pour ralentir le clignotement
    ld D,000h               ; initialisation du comteur de la boucle externe
    ld E,000h               ; initialisation du comteur de la boucle interne
BOUCLE_EXT:
    dec E                   ; décrémenter le compteur externe
    jp Z,BASCULE            ; compteur externe à zéro? Si oui, boucler
BOUCLE_INT:                 ; sinon, passer à la boucle interne
    dec D                   ; décrémenter le compteur interne
    jp Z,BOUCLE_EXT         ; compteur interne à zéro? Si oui, passer à la boucle externe
    jp BOUCLE_INT           ; sinon, boucler dans la boucle interne
    
; FIN
