.pio_version 0

.program steptime

    pull
    mov y, osr
    pull
    mov x, null
    set pins, 0

main:
    set pindirs, 1
    mov isr, x
    mov x, osr

settle:
    jmp x--, settle
    mov x, isr
    set pindirs, 0

up:
    jmp pin, continue
    jmp x--, up

continue:
    jmp y--, main
    mov isr, x
    push

% c-sdk {
static inline void steptime_program_init(PIO pio, uint sm, uint offset, uint pin) {
    pio_sm_config c = steptime_program_get_default_config(offset);

    sm_config_set_jmp_pin(&c, pin);
    sm_config_set_set_pins(&c, pin, 1);
    pio_sm_init(pio, sm, offset, &c);

    pio_gpio_init(pio, pin);
    pio_sm_set_enabled(pio, sm, true);
}
%}
