OS2 World Community Forum

OS/2, eCS & ArcaOS - Technical => Applications => Topic started by: davidrg on January 31, 2023, 11:42:35 pm

Title: Kermit 95 / C-Kermit for Windows and OS/2
Post by: davidrg on January 31, 2023, 11:42:35 pm
- Kermit 95. Doesn't work, but it's now open source and modular. It could actually be interesting to (re-)port as it once supported OS/2.

I'm the maintainer of Kermit 95 - now called C-Kermit for Windows (and OS/2 I guess). Pull requests welcome :D

My main focus so far has been getting it working properly on Windows again but I have been careful not to break OS/2 support along the way so no need to re-port it. In fact, github produces OS/2 binaries cross-compiled from Windows with OpenWatcom on mostly every commit! All that's needed to get it back to where it was 20 years ago is some bug fixing (bugs probably caused by switching from some IBM compiler to OpenWatcom). Problem is I know almost nothing about OS/2 development (but I do have boxed copies of OS/2 1.3 through to Warp 4 to test on). And also Kermit 95 didn't support SSH on OS/2 AFAIK - but thats a solvable problem now that its open-source.

As far as SSH goes, libssh supposedly supports OS/2 but not OpenWatcom - possibly because OpenSSL doesn't support OpenWatcom either. So either libssh+openssl need to be ported to OpenWatcom or C-Kermit for OS/2 needs to be ported to GCC. Not sure which is easier (or even possible). If the libssh+openssl situation can be sorted out, the libssh support code in C-Kermit for Windows and OS/2 uses Win32 threading APIs so there will be a little bit of porting work there too but I expect that would be pretty easy.

Screenshot of it running on OS/2 here: https://kermitproject.org/ckwscreenshots/os2.html
Title: Re: Kermit 95 / C-Kermit for Windows and OS/2
Post by: Dave Yeo on February 01, 2023, 01:47:38 am
Third option, the OpenWatcom build use the GCC compiled libssh.
Need the right compile flags on OW for the calling convention (can't use the OW specific one) and the right declarations in the libssh headers for the calling convention. Forget the specifics but it is possible.
Title: Re: Kermit 95 / C-Kermit for Windows and OS/2
Post by: davidrg on February 01, 2023, 03:08:01 am
Third option, the OpenWatcom build use the GCC compiled libssh.
Need the right compile flags on OW for the calling convention (can't use the OW specific one) and the right declarations in the libssh headers for the calling convention. Forget the specifics but it is possible.

I hadn't considered that! Don't know why though - seems a reasonable enough thing to do and I'm not statically linking either library. libssh and openssl are just written in C so no particular reason why they have to be built with the same compiler. I'll have to look into that some time!
Title: Re: Kermit 95 / C-Kermit for Windows and OS/2
Post by: Dave Yeo on February 01, 2023, 04:24:40 am
Hi davidrg, forgot to welcome you to the forum.
This is the latest code https://ftp2.zx.net.nz/pub/CKW/test_builds/ckw10b8-beta4/ckw-b4-src.zip (https://ftp2.zx.net.nz/pub/CKW/test_builds/ckw10b8-beta4/ckw-b4-src.zip)?
Is there a git or such repository?
Anyways downloaded the above source and built ckoker32.exe, which seems to run fine though textmode. Wasn't there a graphical exe too? It's been a long time since I played with kermit.
It compiled fine (lots of warnings) on OS/2 after a minor patch to ckoker.mak,
Code: [Select]
L:\work\ckwin-10.0beta.08-4\kermit\k95>diff -u ckoker.mak.orig ckoker.mak
--- ckoker.mak.orig     2023-01-31 18:55:46.000000000 -0800
+++ ckoker.mak  2023-01-31 18:38:06.000000000 -0800
@@ -686,9 +686,9 @@
 !ifdef PLATFORM
 !if "$(PLATFORM)" == "OS2"
 LIBS = os2386.lib rexx.lib \
-!if "$(CMP)" != "OWCL"
-       bigmath.lib
-!endif
+#!if "$(CMP)" != "OWCL"
+#       bigmath.lib
+#!endif
 # OpenWatcom doesn't have bigmath.lib
 # SRP support: libsrp.lib
 !else if "$(PLATFORM)" == "NT"

I see this,
Code: [Select]
===============================================================================
C-Kermit Build Configuration
===============================================================================
Platform:                 OS2
Build:                    K95
Architecture:             x86
Compiler:                 OpenWatcom WCL386
Compiler Version:         OpenWatcom
Compiler Target Platform: OS/2
Enabled Features:         Network-Connections DECnet
Disabled Features:        Kerberos SRP ZLIB SSL SSH ConPTY TelnetEncryptionOption CryptDLL XYZMODEM SuperLAT NetBIOS Mouse-Wheel
===============================================================================

Couple of observations, kerberos, zlib, crypto10.dll, (from OpenSSL) ) are available as GCC builds.
Quickly looking, it looks like you're using the old 16bit TCPIP stack, it would need updating to the 32 bit stack. Actually you should be targeting OS/2 4.5, basically V4 with all the free updates, especially FP#15 and the latest MPTS packages and whatever the last kernel was released by IBM.
There doesn't seem to be any DLLs associated with openssh. For openssl, probably the easiest would be to create OW friendly import libs and add some directive for the right calling convention.
One project I ended up supporting, the screensaver, links to some GCC compiled DLLs, it uses these flags. I'm far from an OW expert.
Code: [Select]
dllflags = -bd
cflags = $(debugflags) -zq -bm -bt=OS2 -6s -fpi87 -fp6 -sg -otexanr -wx

Perhaps Martin should split this topic off to its own thread as well.
Title: Re: Kermit 95 / C-Kermit for Windows and OS/2
Post by: davidrg on February 01, 2023, 09:07:07 am
I'm impressed you got it building so quickly! Yes, that's the code for the latest beta. Github repository is here: https://github.com/davidrg/ckwin/.

Kermit 95 only had a GUI version on Windows and it was a fairly late addition at that - looking back through the old changelogs it appears to have first appeared in April 2002 with the final release of Kermit 95 less than a year later in January 2003. There is a graphical connection manager though, the dialer, which was available on OS/2 as well as Windows. That does build with OpenWatcom but I've not attempted to build it for OS/2 yet (The dialer was open-sourced after I was last working on getting the OS/2 code going again).

As far as I can tell the TCP/IP side of C-Kermit for OS/2 lives in a DLL with DLLs originally supplied for IBM TCP/IP 2.0 and 1.2, PC/TCP 1.3 and Novell LAN Workplace 3.0. This appears to be the same arrangement C-Kermit used with the last free release for OS/2, 5A(191) of mid-1995 (https://kermitproject.org/cko191.html), though of course I don't have licenses for any OS/2 SDKs besides what comes with OpenWatcom which doesn't appear to be enough.

I guess next I need to look for a GCC that can cross-compile for OS/2 from Windows or Linux! And yes, I guess all this Kermit stuff probably belongs in its own thread somewhere.
Title: Re: Kermit 95 / C-Kermit for Windows and OS/2
Post by: Ian Manners on February 01, 2023, 10:09:57 am
Hi Dave,

Quote
Perhaps Martin should split this topic off to its own thread as well.

Done :)

Welcome to the forums David.
I used Kermit quite a lot back in my DEC days back in the 80's and 90's. Certainly owe it a lot for making my life easy back then.
Title: Re: Kermit 95 / C-Kermit for Windows and OS/2
Post by: Dave Yeo on February 01, 2023, 10:05:37 pm
Hi David,
There isn't really a GCC cross-compiler, at least that runs on NT, it is possible to use the RSX library to run the EMX GCC 2.8.1 on Win9x but it probably wouldn't be worthwhile as it'll have the same problems.
Briefly tried compiling the dialer, my nmake wasn't happy with the makeflle and for some reason nmake32 is broken here.
There is a copy of the toolkit (sdk) here, https://github.com/bitwiseworks/os2tk45 (https://github.com/bitwiseworks/os2tk45), I'd assume the headers and libs would work for cross-compiling with OW, they work fine natively. It supports both the old and new TCPIP stack.
Stack updates are described here, http://web.archive.org/web/20060926010237/http://www.warpupdates.mynetcologne.de/english/net_mpts.html (http://web.archive.org/web/20060926010237/http://www.warpupdates.mynetcologne.de/english/net_mpts.html), the site has lots of other info on updating, many links are broken but it gives file names to Google and IBM still has most of its updates on one of its ftp sites.
Title: Re: Kermit 95 / C-Kermit for Windows and OS/2
Post by: Dave Yeo on February 01, 2023, 10:08:02 pm
Here's what I compiled if anyone is interested. Lightly tested and I just copied the exe's, ini's and such from the build.
Title: Re: Kermit 95 / C-Kermit for Windows and OS/2
Post by: davidrg on February 02, 2023, 02:05:53 am
Hi David,
There isn't really a GCC cross-compiler, at least that runs on NT, it is possible to use the RSX library to run the EMX GCC 2.8.1 on Win9x but it probably wouldn't be worthwhile as it'll have the same problems.
Briefly tried compiling the dialer, my nmake wasn't happy with the makeflle and for some reason nmake32 is broken here.
There is a copy of the toolkit (sdk) here, https://github.com/bitwiseworks/os2tk45 (https://github.com/bitwiseworks/os2tk45), I'd assume the headers and libs would work for cross-compiling with OW, they work fine natively. It supports both the old and new TCPIP stack.
Stack updates are described here, http://web.archive.org/web/20060926010237/http://www.warpupdates.mynetcologne.de/english/net_mpts.html (http://web.archive.org/web/20060926010237/http://www.warpupdates.mynetcologne.de/english/net_mpts.html), the site has lots of other info on updating, many links are broken but it gives file names to Google and IBM still has most of its updates on one of its ftp sites.

If I get time tonight I might have a look at the dialer and see if I can get it building - it already builds with OpenWatcom 1.9 for all x86 Windows newer than NT 3.10, and it previously built for OS/2 with the IBM compiler, so I can't imagine there is too much standing in the way of OpenWatcom+OS/2.

This ticket is currently tracking the state of the C-Kermit for OS/2 (Kermit/2): https://github.com/davidrg/ckwin/issues/8 - I think this pretty much covers all the regressions from the final commercial release of Kermit 95 (v2.1.2) for OS/2 that I've noticed so far in my fairly limited testing. As far as I can tell (I'll have to dig out my K95 CD sometime to check) the OS/2 version didn't have OpenSSL (#156 (https://github.com/davidrg/ckwin/issues/156)) or SSH (#157 (https://github.com/davidrg/ckwin/issues/157)) support back then - probably due to compiler issues. Kerberos I'm just ignoring for now - most likely C-Kermit itself (on all platforms) needs to gain Heimdal Kerberos support but I doubt there is enough demand for Kerberos-secured telnet, ftp and http at this point to make the work worthwhile.

There being no GCC that can cross-compile for OS/2 is a bit of a pain as it makes automated builds from Github that include OpenSSL and SSH for OS/2 impossible. But that's a problem for another day - fixing the remaining build issues and getting an optimised build with TCP/IP and NetBIOS that doesn't crash on startup ought to be dealt with first.
Title: Re: Kermit 95 / C-Kermit for Windows and OS/2
Post by: Dave Yeo on February 02, 2023, 04:29:52 am
Revisiting the dialer and using wmake, the problem is that it thinks I'm on Windows.
Code: [Select]
===============================================================================
C-Kermit Dialer Build Configuration
===============================================================================
Architecture:             x86
Compiler:                 OpenWatcom C/C++ CL clone
Compiler Version:         Visual C++ 7.0 compatible
Compiler Target Platform: Windows
===============================================================================

With a bunch of errors about extensions, from zinc I guess, cpp.obn and such.
I found the PM version of C-Kermit, it is weird and basically draws what looks like a VIO window.
Also there's C-Kermit_5A-191 which looks fairly complete for its time, no ssh of course.
https://hobbes.nmsu.edu/?search=kermit&stype=any&sort=type_name&dir=%2F (https://hobbes.nmsu.edu/?search=kermit&stype=any&sort=type_name&dir=%2F)

Edit: better screen capture
Title: Re: Kermit 95 / C-Kermit for Windows and OS/2
Post by: davidrg on February 02, 2023, 07:03:28 am
Yeah, Kermit 5A(191) for OS/2 is what both this and the windows version were based on originally. Its the last free version for OS/2 before it was turned into a commercial product and ported to Windows as Kermit 95. So the OS/2 and Windows versions are very closely related - a pretty big chunk of the code that was originally specific to OS/2 is also used on Windows too with #ifdef OS2ONLY or #ifdef NT differentiating between the platforms where there are API differences (#ifdef OS2 means OS/2 or Windows)
Title: Re: Kermit 95 / C-Kermit for Windows and OS/2
Post by: davidrg on February 02, 2023, 11:16:47 am
Spent a bunch of time tonight getting the Dialer to build for OS/2 with OpenWatcom 1.9 (cross-compiled from Windows). It needed a bunch of makefile changes as the makefile only knew how to build the OS/2 target with the IBM compiler. And of course there were various build errors in the OS/2 bits of the dialer which had never seen the Watcom compiler before. And there are new bat/cmd files for setting an OS/2 build of the dialer going either on windows or OS/2 (the OS/2 hosted .cmd files are at the moment untested though - my NetWare server is currently down making getting stuff on/off OS/2 a bit challenging).

So it now builds fine, warnings aside, but it doesn't run at all. I just get SYS3175 "A program generated an access violation at 00000000". I've spent a few hours looking at it and I've no idea why. I'm not very familiar with OpenWatcoms wpp386 and wlink (for windows I just use its Visual C++-compatible frontend and linker) so it may well be the problem lies there. Or some issue with runtime libraries or the OS/2 version of OpenZinc.

At any rate, the buildable (but not yet runnable) code is on this branch: https://github.com/davidrg/ckwin/tree/dialer-for-os2 (edit: changes are now on the master branch)
Title: Re: Kermit 95 / C-Kermit for Windows and OS/2
Post by: Dave Yeo on February 02, 2023, 11:50:35 pm
Seems OpenZinc is not simple to install. Directions say to run A:\install.bat but I've downloaded 3 different packages without an install.bat. Might be easier to build it. Might be the problem with the dialler, slightly incompatible build options, though I'd expect a sys2070 in that case
Title: Re: Kermit 95 / C-Kermit for Windows and OS/2
Post by: davidrg on February 03, 2023, 04:25:29 am
I've never attempted to install OpenZinc - for windows at least it was sufficient to just grab the full package (http://openzinc.com/Downloads/OZ1.zip - includes source and binaries for all platforms and compilers) and extract it into a folder named 'zinc' alongside the 'kermit' folder in the source tree (this is how the Kermit 95 2.1.3 build tree was organised), such that you have:

Code: [Select]
\kermit\k95\ckoker.mak
\kermit\dialer\k95dial.mak
\zinc\copymak.bat
\setenv.cmd

For building with OpenWatcom 1.9 for Windows that's all I've had to do. For Visual C++ I had to customise all the makefiles for each version of Visual C++ to link against the multithreaded runtime and rebuild which was annoying but seemingly nothing new - looking at the Zinc code in the Kermit 95 build tree the same was done for the commercial releases.
Title: Re: Kermit 95 / C-Kermit for Windows and OS/2
Post by: Dave Yeo on February 03, 2023, 04:46:46 am
Ok, did you recompile Zinc or just use the included libs by using set LIB?
And is DOS required, DOS is broken here as the computer is too new and lacking stuff in the video BIOS. Looks like changing copymak.bat to copymak.cmd should work. Otherwise have to switch to an UEFI install of OS/2 where it has its own video BIOS.
Title: Re: Kermit 95 / C-Kermit for Windows and OS/2
Post by: davidrg on February 03, 2023, 05:15:02 am
For both windows and OS/2 I've just used the included libs with OpenWatcom. No DOS support should be required - it should be sufficient to just download the Engine and either the "Windows NT files" or "OS/2 files" depending on the target (windows/os2).

So i think to build the dialer *on* OS/2 with OpenWatcom 1.9, it should be sufficient to run:
Code: [Select]
set root=C:\src (where ever the full source code lives)
cd %root%
setenv.cmd
cd ..\dialer
mkos2.cmd

And assuming zinc is in %root%\zinc the include and lib path should get setup correctly. I've not tried this actually on OS/2 yet though - still need to figure out a reasonable way of getting the source into the VM. The process on Windows is pretty much identical - just .bat instead of .cmd
Title: Re: Kermit 95 / C-Kermit for Windows and OS/2
Post by: davidrg on February 03, 2023, 01:00:52 pm
Found a different Warp 4 VM that had Fixpak 15 applied and the SNAP graphics driver so actually had usable graphics performance and a usable resolution! Spent I don't know how long trying to get the arca package manager to work so I could maybe install git but I think it wants some tcpip update that isn't included in Fixpak 15. If that update was ever free I don't think its a rabbit hole worth going down based on past experience with OS/2 updates.

So I zipped up all the source and FTPd it into the VM with IBM WebExplorer (ugh), adjusted the k95dial.mak to do a debug build, and if I'm understanding the OpenWatcom Debugger correctly its falling over at zinc\include\ui_win.hpp:1751 though I have no idea why or whats even calling that (some zinc code?). Tried rebuilding Zinc with OpenWatcom 1.9 (which required fixing zinc\source\o_print.cpp) but that didn't help. Tried rebuilding it with the /bm (multithreaded runtime) compiler option but no change.

Not really sure where to go from here as far as the dialer is concerned. As far as I know it was last successfully built for OS/2 in November 2002 for Kermit 95 v2.1.2 using an IBM compiler and a modified version of Zinc 4.2. OS/2 support was dropped after 2.1.2 so its possible some change in Kermit 95 2.1.3 broke something. Or maybe the switch to OpenWatcom has broken something on OS/2. Or maybe some change in OpenZinc 1.0 (which is based on Zinc 4.2) has broken something on OS/2. The Zinc designer can't open dialer.dat (which contains all the GUI designs) but maybe the designer is just broken on OS/2 in some way, or there is some extra setup thats required.

Edit: Ended up merging the makefile changes over into the master branch so that if nothing else Github Actions can check that windows-related changes to the dialer don't break OS/2 any further. The issue of the OS/2 Dialer crashing on startup is now tracked by ticket #152 (https://github.com/davidrg/ckwin/issues/152)
Title: Re: Kermit 95 / C-Kermit for Windows and OS/2
Post by: Dave Yeo on February 04, 2023, 04:39:02 am
Hi, tried some more to get the dialer compiling on OS/2, no luck as the detection code seems broken.
Code: [Select]
===============================================================================
C-Kermit Dialer Build Configuration
===============================================================================
Architecture:             x86
Compiler:                 OpenWatcom WCL386
Compiler Version:         OpenWatcom
Compiler Target Platform: OS/2
===============================================================================


Using ctl3d32
k95dial.mak(82): Error(E21): Extension(s) (.cpp.obn) not defined
k95dial.mak(83): Warning(W20): Command list does not belong to any target
k95dial.mak(85): Error(E21): Extension(s) (.c.obn) not defined
k95dial.mak(86): Warning(W20): Command list does not belong to any target
k95dial.mak(153): Error(E25): Extension (.cpp) declared more than once
k95dial.mak(153): Error(E25): Extension (.c) declared more than once
k95dial.mak(155): Error(E21): Extension(s) (.c.obo) not defined
k95dial.mak(156): Warning(W20): Command list does not belong to any target
k95dial.mak(158): Error(E21): Extension(s) (.cpp.obo) not defined
k95dial.mak(159): Warning(W20): Command list does not belong to any target
Error(E02): Make execution terminated

Looking at the Windows dialer, it does seem to be needed to setup the TCPIP and such rather then simply the modem. While the Windows dialer runs here, the rest of the latest C-Kermit has DLL problems, had to add vcruntime140.dll then api-ms-win-crt-runtime-l1-1-0.dll which unluckily still failed to load the DLL, I assume it is just to long and weird of a DLL name. These can't be statically linked?
As for the package manager, or rather the underlaying Python I believe, failing, yes everything for quite a while has been linked to the newest TCPIP stack. It is freely available, likely needs some fixpak installed first. Same with Snap, there's a free version on Hobbes but IIRC, it needs some fixpak installed first as well.
There are ISO's of Warp v4.52 floating around, places like https://winworldpc.com/product/os-2-warp-4/os-2-warp-452 (https://winworldpc.com/product/os-2-warp-4/os-2-warp-452) and while in theory you should have a license, IBM doesn't seem to care as these ISO's are still available. 4.52 is basically a rerelease of v4 with all the fixes up till then on a bootable CD.
Title: Re: Kermit 95 / C-Kermit for Windows and OS/2
Post by: davidrg on February 04, 2023, 05:03:31 am
Yeah, for the Windows version you've got install the Visual C++ runtime - for Vista and newer the correct one should be this: https://aka.ms/vs/17/release/vc_redist.x86.exe - I'll have to check Frank has put links to the runtime downloads in the ckwin download section. I've still got building a proper install program on my to-do list but it will probably be a while before I get around to it - too many other things that need fixing.

On OS/2 I don't bother to try and detect the compiler - the makefiles just assume OpenWatcom 1.9, though the makefiles should still support icc as well.

Building the dialer on Warp 4 Fixpak 15 with OpenWatcom 1.9 installed to C:\watcom and the kermit located in C:\src and the OpenZinc 1.0 located in C:\src\zinc should be:

Code: [Select]
C:\watcom\owsetenv.cmd
set include=%include%;C:\src\kermit\k95
set include=%include%;C:\src\zinc\include
set lib=C:\src\zinc\lib\ow19;%lib%
cd C:\src\kermit\dialer
wmake -h -ms -f k95dial.mak PLATFORM=OS2 MAKE="wmake -h -ms" os2
Title: Re: Kermit 95 / C-Kermit for Windows and OS/2
Post by: Dave Yeo on February 05, 2023, 03:49:37 am
Ok, that worked and running k2dial resulted in,
Code: [Select]
02-04-2023  18:38:01  SYS3175  PID 00b4  TID 0001  Slot 00a1
L:\WORK\CKWIN\KERMIT\DIALER\K2DIAL.EXE
c0000005
00000000
P1=00000001  P2=00000000  P3=XXXXXXXX  P4=XXXXXXXX
EAX=00417434  EBX=000d7544  ECX=00000000  EDX=00000000
ESI=000b22b4  EDI=00000000
DS=0053  DSACC=d0f3  DSLIM=b7ffffff
ES=0053  ESACC=d0f3  ESLIM=b7ffffff
FS=150b  FSACC=00f3  FSLIM=00000030
GS=0000  GSACC=****  GSLIM=********
CS:EIP=005b:00000000  CSACC=d0df  CSLIM=b7ffffff
SS:ESP=0053:000d74f4  SSACC=d0f3  SSLIM=b7ffffff
EBP=00417434  FLG=00010246

Which I guess is the same result as you.
Title: Re: Kermit 95 / C-Kermit for Windows and OS/2
Post by: davidrg on February 05, 2023, 09:55:35 pm
Yeah, that's the same error I get.

I assume its an issue with OpenWatcom+OS2 given the same code builds and runs fine on Windows with both Visual C++ and OpenWatcom. There are still a few problems like this affecting C-Kermit itself - optimized builds crash on startup, as do builds with NetBIOS enabled. Quite possibly these are all genuine bugs in the code that just didn't affect the IBM compiler for whatever reason and are only showing up now when using Watcom.
Title: Re: Kermit 95 / C-Kermit for Windows and OS/2
Post by: Dave Yeo on February 05, 2023, 10:19:42 pm
Do you think it would still compile with the IBM compiler and do you know which version was used. I have 3.08.
Title: Re: Kermit 95 / C-Kermit for Windows and OS/2
Post by: davidrg on February 06, 2023, 12:22:43 am
I've no idea what version was used previously I'm afraid. Based on the makefile, it was some version of VisualAge that probably installed by default into C:\IBMCXX0. The last OS/2 release of Kermit 95 was 2.1.2 on 25 November 2002 so it won't be anything newer than that. I think after 2.1.2, OS/2 support was dropped entirely.

The dialer source code comes from the Kermit 95 2.1.3 build tree so binaries from this code were never officially released for OS/2. Kermit 95 2.1.3 was released on 21 January 2003 (changelog (http://www.columbia.edu/kermit/k95news.html)) though so unlikely anything much would have broken in that time and it probably would have still worked. The only changes I've made to the dialer code since getting permission to release it were ripping out all the registration code, rebranding it, fixing build issues with OpenWatcom and other versions of Visual C++, plus updating the SSH options to match what the new SSH subsystem is actually capable of. So I expect it should be very nearly buildable with ICC.

I've left all the ICC stuff in the makefile so you would just have to change line 18 of k95dial.mak (https://github.com/davidrg/ckwin/blob/master/kermit/dialer/k95dial.mak#L18) (CMP = OWCL386) to some other value (what value shouldn't matter as long as its not OWCL386) to prevent it from taking the OpenWatcom path in a few if/else statements. To build C-Kermit with icc, you'd need to modify the makefile in a similar way. This time to line 105 of ckoker.mak (https://github.com/davidrg/ckwin/blob/master/kermit/k95/ckoker.mak#L105) and build the ibmc target rather than the wcos2 target.

C-Kermit itself is in a bit more of a tricky state than the dialer. C-Kermit for Windows and OS/2 is based on what was going to be Kermit 95 v2.2 which was never released and was never going to support OS/2. As OS/2 was no longer supported there had been some windows-specific changes in modules shared by both Windows and OS/2 that weren't guarded with #ifdef NT or didn't have alternative OS/2 code paths. Additionally, the modules shared with other platforms (unix/linux/vms) have received an additional 20 years of development work without ever being compiled for or tested on OS/2 until last year. All the stuff that causes compile errors for Watcom when targeting OS/2 has been fixed but I wouldn't be too surprised if ICC ran into a few issues. And its possible that even when built with ICC some bugs will remain.

C-Kermit for Windows originally had similar issues (missing code, last built with an ancient non-free compiler, bugs when built with anything else, shared bits not built for windows in over a decade). The difference there is I know windows very well, I'm vaguely familiar with programming for Windows in C/C++, and I've got a big collection of Visual C++ versions and MSDN library CDs that I can use to diagnose problems and look up information on API and compiler changes.