>Does anyone know why the SCHEDULE macro uses R0 for the BALR return >address with MODE=NONXM and R14 for the return address with MODE=FULLXM?
The guess is that it was because that form of SCHEDULE needs to preserve reg 14. And the reason for that would be historical -- way back when, SCHEDULE had forms that conditionally expanded inline. And preserving of R14 (as was natural for the inline form) was deemed useful for the out-of-line case too. After all, it's one instruction shorter to BALR 0,15 then in the target routine before returning copy into some reg other than 0 prior to return versus saving reg 14, BALR 14,15 and after return restoring reg 14. Peter Relson z/OS Core Technology Design