Im Slave wird das Byte direkt aus dem register TWDR geholt, siehe Kommentar.

Wie ich schon beschrieben habe, kann der SlaveCode so wie er jetzt ist, nichts senden, weil das da nicht vorgesehen ist.

Warum soll ich aus der Hauptschleife heraus, es gibt sonst nix zu tun ?
Die schleife wird immer durchlaufen und überprüft ob TWI-seitig was anliegt, wenn über TWI ein Byte angekommen ist, wird das Byte an PortD angezeigt.

Der Master hat keine Adresse, weils eben der Master ist.

Lese Dir mal im Wiki die I2C Seiten durch, sonst muss ich hier alles nochmal erzählen.

Wenn du eine Eierlegende Wollmilchsau in Sachen I2C haben willst, musst Du die Lib von Bascom ans laufen bekommen, dann muss man nicht denken, und alles läuft fast von selber, und es gibt schöne funktionen zum aufrufen.