Забыл добавить. Флаги многократно увеличивают скорость работы любого автомата. Или быстренько проверить локальный флаг, или отправить\принять\обработать событие\сообщение. Ты же сам сетовал, что проц тупит, пока все автоматы провернет. Где нужно, делаю флаговую переменную.
FSM_FLAGS:
.byte 1
FSM_STATE:
.byte 1
PROC_CHEGO_TO_TAM:
ldiy FSM_FLAGS
ld FLAGS,Y
rcall PROC_FSM
st Y,FLAGS
ret
FSM_STATE_1:
sbrc FLAGS
sbrs FLAGS
sbr FLAGS,1<<1
cbr FLAGS,1<<5
ret