For your first, code, you actually don't need the 7B. One of the outputs of EFEF4A is that it stores to DE, but it stores the lower 8 bits to A, also. :D
Your second code can be optimised because C601 is almost the same as 3C ('add a,1' versus 'inc a'). The difference between the two is that the former will set the c flag if it overflows the 8-bit value, but when that happens, both will also set the z flag since it will be going from FF to 00.
Anywho, that is some nice recursion. What you could try is:
FE5C ;check if A=5C (5B=theta)
2002 ;'jr nz,$+4' skips the next two bytes if the z flag is reset
C605 ;add 5 to A so that it is 61h ('a')
20EB ;'jr nz,$-19' jumps back 23 bytes to the beginning of this program if z is reset.
It is so cool that people are speaking hex o.o I feel like it is so much easier to understand assembly this way. You can tell somebody that EFD74A D604C0 EB4E234623 117884 EDB012 copies Ans to OP1 if it is a string and you can just use that instead of looking at:
ld de,OP1 ;OP1=8478h
ld (de),a ;I was tricky to make sure A=0 at this point
And then if you know that you can use EFF142D878B7C0 to search for the var named in OP1 and exit if it doesn't exist or is archived, you can use the two pieces together.