I suspect that's too small, but there are MANY missing details to consider and I might be wrong.

gmheap documentation is here.

Note that for new installation the value is 0 (zero), in that case:

the system will configure the size of gmheap to be 3% of the total memory configured for global buffers. The minimum gmheap will be configured to is 307,200 KB (300 MB) and the maximum is 2,097,000 KB (2 GB)

So, your gmheap is about 1/3 of current default.

It's long time I don't install Ensemble 2018, why are you still using Ensemble and not IRIS?

I just tested installing Ensemble 2018 and CSP Gateway is properly installed and configured.

When the setup kit is run the first dialog is:

Do you get the same dialog? What option you choose?
As you can see it is also possible to install only the CSP Gateway component.

If you choose Custom then this dialog is displayed:

As you can see the option to install CSP Gateway for IIS is there.

If I proceed to the install, at the end I have the CSP Gateway properly configured in C:\inetpub\CSPGateway

In order to help you, apart from saying that is not being installed, can you provide some information on what you are actually doing and what do you actually see/get during install?

I think you need to enable/allow Unauthenticated access for Web Applications.

I can see that in Web Application configuration in "Allowed Authentication Methods" the option "Unauthenticated" is not available, this means is not enabled/allowed systemwide.

In Management Portal check System Administration > Security > System Security > Authentication/Web Session Options, and see if "Allow Unauthenticated access" (first option/checkbox) is enabled.

After that, enable the option "Unauthenticated" in the "Allowed Authentication Methods" of the Web Application.

There is also SYS.Stats.Dashboard class, again, I'm not sure it was in 2014 as well.

This class provides an overview of the system "health", with all of the critical metrics and statuses gathered as properties in one class. It essentially contains all of the data that's available on the Dashboard in the System Management Portal. Each property is a different metric or status.

The WRITE command, when passed no argument, does a reflexion on the system.

Well, it simply list/write all defined variables in current stack level, something you can perform using standard Object Script commands and functions, no need to look at Write source code.

To do that you can use $order,  $query, and indirection, with some trick needed for the variables you use to perform the listing, or, maybe simpler, you can use output redirection (to a string for example) and then...well, an argument less Write command 😊

Some hint for the first option:

USER>set a=1,b=2,b(1)=3,x=""
 
USER>set x=$order(@x)
 
USER>write x
a
USER>set x=$order(@x)
 
USER>write x
b
USER>set x=$query(@x)
 
USER>w x
b(1)

For output redirection, see IO Redirect in ObjectScript in Open Exchange.