So, I've attempted a "salami" technique: since I know that stock nsd.tcl that came with the server works, I will try adding things to it and see when it breaks. And I found when it breaks, but it does not help me much, maybe someone else could have an idea...
Basically, all works (or breaks, but with sympotms that it would work otherwise) once the following section is enabled:
#
# Tcl Configuration
#
ns_section "ns/server/${server}/tcl"
ns_param autoclose on
ns_param debug true
#
# This is where this server's private Tcl library is. All .tcl files
# in this directory are parsed when AOLserver starts. The crucial
# procedures used in OpenACS are defined through this library
#
ns_param library "${homedir}/servers/${server}/tcl"
Once it is enabled, I get a HTTP 404 (File not found). If I comment it out, I get a 500 (Internal server error), but server log shows that it tried to parse index.tcl, could not find ad_parameter procedure and gave up. If I replace normal index.tcl with a dummy one like this:
ns_write "hello"
everything works perfectly.
I type it as I keep on experimenting. Before I moved onto "salami" tactics, I renamed modules/tcl8.3 (see earlier postings) back into modules/tcl. I have just renamed it again, let's see what happens...
Now an error is different: it is again a 500, but now it complaints in the log that _ns_dirlist could not be found (referenced in ns_param directoryproc. I've just commented the string out completely, trying again...
Same error, but this time I am guessing this is a call from one of ACS .tcl scripts... Let's kill it there as well... No, wait, let's do some search on OpenACS about _ns_dirlist... Here, this seems like a valid reference: https://openacs.org/bboard/q-and-a-fetch-msg.tcl?msg_id=0001AX&topic_id=OpenACS&topic=11, let's look through it... Ok, let's set EnableAbstractURLsP to 0 in ad.tcl and try restarting... BINGO! It works! Hurray to the community efforts!!
Thanks, everybody, the problem is solved.