Well, you would need to touch all those routines then. I would think that all have some sort of main WHILE loop so you can just change it to IF.
The user interaction always starts at this line:
(getpoint "\nSelect objects/<Inside corner>: ")
So build your main function based on this:
(setq sub "T")
(while (progn
(initget ...)
(setq o (getpoint (strcat "Select objects for " sub " type wall xing or [Lwall/Xwall] : "))
(cond ((not o) nil) ; exit
((= o "Lwall") (setq sub "L")) ; do not exit the loop)
-//- for X and T
(o ; it's a point
(cond ((= sub "Twall") (wall-T o)) ; you need to change c:wall-t to accept the point argument....
Spoiler in the attachemt bellow.