Блин, даже неловко как-то...
Похоже я сам в основной проге перед циклом затирал регистр R0 при разрешении IRQ. И из-за этого далее возникало Data Abort. Пол дня убил на мой же косяк

А ещё я узнал про странное отличие портов 0 и 1. При установке любого бита IODIR.x в 1 на порте 0 у него автоматически устанавливается на выходе 1 (IOPIN.x = 1). А на порте 1 этого не происходит!