En la pila lo último que metes es lo primero en salir. Si antes de hacer el call metes en la pila af y quieres recuperarlo dentro de ese call, lo que recuperas con el pop es la dirección que ha almacenado el call (que es lo último que se ha metido en la pila). No se si te refieres a eso o si después de hacer el ret vuelves a recuperar a de la pila.
En cualquier caso, yo no almacenaría en "a" el valor de "max_entities" si no lo vas a usar en ese momento, ya que el valor se mantiene en esa dirección de memoria. Si lo que quieres usar es ese "a" que dices de recuperar con "pop af", entonces puedes hacer "ld a, (max_entities" después de volver del call al que llamas.
En cualquier caso, yo no almacenaría en "a" el valor de "max_entities" si no lo vas a usar en ese momento, ya que el valor se mantiene en esa dirección de memoria. Si lo que quieres usar es ese "a" que dices de recuperar con "pop af", entonces puedes hacer "ld a, (max_entities" después de volver del call al que llamas.