Zahex, I think you have undertaken too big a job for a novice, or at least you are attacking it too brutely. There's nothing wrong with learning the stuff while writing an actual program - sometimes it's the best way to learn - but there has to be a reasonable sequence when climbing a learning curve. You cannot expect anyone here (or elsewhere) to help you aim for a high point on the curve if you show no interest in covering the basic parts. Such a request is equal to a request for finished code.
For example. Using GETSTRING to have the user make a choice (in the QUESTION-x functions) shows that you haven't explored other, and far better, facilities that AutoLISP provides to communicate with the user. And that's ok! We've all been there. The real issue is that, apparantly, you haven't even tried to figure out what is wrong before posting it: In QUESTION1, how do the choices (c)hange and e(x)it correspond to the test values of "m" and "s"?
If the user gets so far as to figure out that "m" is for change (?!), he will get a "too few arguments" error. This happens when a statement calls a function that needs arguments but supplies none, or lesser than required, during the call. In this case, the call to HELIX will need an argument because HELIX is defined to take an argument (param).
Try correct those basic flaws throughout your code (possibly by using the very simple technique I decribed in a reply to your PM). Try to catch the obvious before posting it but don't hesitate to post any specific questions about the less obvious. And in the same thread, please! It will result in a much better response. I promise.