; 09 — Counter/nastro (0xE0/0xE1) che fa girare il motore (0xB0)
; Il contatore e' collegato al nastro trasportatore: un passo ogni 500 ms.
; A zero genera un interrupt (IM2) che fa avanzare il motore di un passo.

MOTOR = 0xB0
CTR   = 0xE0
CTR_C = 0xE1

        .seg CODE (abs)
        .org 0x0070
VTab:   .dw servizio

        .org 0x0100
inizio:
        ld  sp, 0xFFFF
        ld  a, 4
        out (CTR), a          ; ogni 4 passi del nastro...
        ld  a, VTab
        out (CTR_C), a
        ld  a, 0x83
        out (CTR_C), a        ; ...un interrupt
        ld  a, 0
        ld  i, a
        im  2
        ei
ciclo:
        nop
        jp  ciclo

servizio:
        push af
        ld  a, 1
        out (MOTOR), a        ; impulso: un passo
        nop
        xor a
        out (MOTOR), a
        pop af
        ei
        reti
