$gmt() works exactly like $asctime(), only it returns GMT dates/times instead of dates/times in your timezone. To understand why $gmt() returns the result you mentioned, you need to read carefully how $asctime() works.
Help file:
$asctime(793947600) returns the default text format for this time value
$asctime(hh:nn:ss) returns the current time in this format
$asctime(793947600,dd/mm/yy) returns the date for this time value
.......
Note: You can specify both the N and format parameters, or only one or the other.
As you can see, $asctime() does not accept a date as a parameter: it accepts an integer (taken as seconds elapsed from 1/1/1970 0:00) and returns the date for this number, in the format you specified in the 2nd parameter. What happens if the 1st (secs) parameter is missing? mirc assumes the current $ctime. This means that you can only specify the format param and it returns the current values for H, h, n, s etc. So, $asctime(1/1/1970 03:00:00) or $gmt(1/1/1970 03:00:00) think that the "1/1/1970 03:00:00" part is the format because a simple check tells mirc that it isn't an integer, which would be the seconds; so it must be the format parameter. And since this parameter does not contain any 'evaluatable' items (ie letters H, h, n, s, m, d etc) , $asctime / $gmt return the parameter unaffected.