The key piece of data that is not being provided by CompuServe on the client is an ASCII string that gets placed in the Call Request Packet. The string should be "ARAX25".
The problem is CompuServe sets up their X.25 services in such a way that all their PAD parameters are set up ahead of time. The client logs into the CompuServe network and is authenticated to use a predetermined service. Other X.25 service providers allow the client to issue PAD commands, therefore the scripts for them look very different than the script for CompuServe. As a comparison look in the Sprint CCL script that comes with ARA MultiPort Server X.25 Extension software to see how the "ARAX25" string gets sent to the PAD. In X.25 terminology, the "ARAX25" string goes in the Call User Data field which ends up being the last 6 bytes of the Call Request packet.