Here is a short description of my algorithm:
My device starts with NRFD set high (because it is ready for new data),
and NDAC set low ( because it didn't accept any data yet).
Then it waits for an interrupt caused by DAV going low. The interrupt
routine checks ATN. If ATN is low, the actual address which was set by
the controller is read. In the case that the listener address matches,
NRFD is set low and NDAC is set high. At last the device starts a loop
where it polls the DAV. As soon as DAV goes high my device sets NDAC
low and NRFD high. Now the device waits for the next interrupt caused
by DAV.