3C509B-nestor icon indicating copy to clipboard operation
3C509B-nestor copied to clipboard

3ccfg.exe requires over 256KB RAM

Open voidstar78 opened this issue 3 years ago • 4 comments

On an old 5150, you'll only have 64KB or 256KB RAM in a stock machine.

I ran 3ccfg.exe on my 5150 with 256KB, and the program said there was insufficient memory.

I added the RAM extension for the XT-IDE, configured to 640KB, and then 3ccfg is working.

why does 3ccfg need so much RAM? I am not sure if the 3c509.exe also needs this much RAM -- if it turns out 3c509 driver needs this RAM for TCP/IP or whatever buffers, then that's fine - no issue then.

But if 3c509 can work with 64KB or 256KB, maybe the CONFIG utility should also try to work within that constraint.

I didn't try running 3ccfg from command line to see if it can complete the configuration with less memory. I know the readme notes give the suggested command line parameters - but I have to run 3ccfg to verify/examine what all those options are. But now I realize the suggested options in the readme are probably ok for like 99% of the situation.

Anyway - this same problem is with MS/DR DOS newer than version 4.0. Their SETUP/install require over 256KB, but then to actually boot after the install, you can boot with regular 256KB.

voidstar78 avatar Aug 16 '21 05:08 voidstar78

if 3c509 can work with 64KB or 256KB, maybe the CONFIG utility should also try to work within that constraint.

I agree that that would make sense. Have you tested it to find out if the driver even works within those memory limits?

Unfortunately, I don't believe it is going to be possible to make the config program smaller. I recall I had to use PKLITE to compress the executable so it would fit on a single 360K floppy.

Currently the executable file alone is 229 KB. Since it is a self-extracting PKZIP executable, it is going to need more RAM as it unzips and executes itself.

On a guess, I'd say most of the code is probably the silly text-based "windowing" system (Magma System's "MEWEL"). A random person on the Internet had this to say about MEWEL in 1994:

The overhead of MEWEL itself is from 250-300K, depending on which compiler and graphics library you are using. You can overlay MEWEL and reduce the in-memory size to 150-200K.

It may be possible for someone to remove MEWEL and leave the command line functionality. However, I do not have the 8086 assembly skill necessary to fix it. (3Com never released the source code, as far as I know).

hackerb9 avatar Aug 16 '21 07:08 hackerb9

Any progress on testing the driver with 64K/256K RAM?

hackerb9 avatar Aug 23 '21 17:08 hackerb9

Hi, thanks for the reminder!

It works. Here's what I found out: configured to 256KB, my memory report indicates...

262144 bytes total 182896 bytes available (after booting DR DOS 3.41) 179408 bytes available (after loading 3C509.com - which implies to me this driver{?} consumes only ~3.5KB! PC-DOS 3.00 and earlier can boot with 64KB, so this program could even work with those)

Then I tried the mTCP tools...

DHCP works with 256KB

FTP/FTPSRV neither of these work ("could not setup packet buffers") but maybe revised versions of these could be adjusted to have smaller buffers (possibly less performance, I'm not sure how many connections the FTPSRV supports up to -- and I didn't see any command line options to adjust)

TELNET did not run, says "not enough memory" (maybe it has a scroll back buffer that is pre-allocated and needs to be reduced)

SNTP, PING, HTGET, NC (netcast) works with 256KB (for HTGET I just used www.google.com as sample)

IRCJR works with 256KB, can join a server, but then doesn't have enough memory to make a chat window when join a channel (so can do private messages, but not general public chats) -- again like FTP, maybe a custom build could be made to work with 256KB (smaller scroll back buffers maybe). But odd to me that if IRCJR can work, that TELNET didn't.

-Steve / voidstar

On Mon, Aug 23, 2021 at 12:12 PM hackerb9 @.***> wrote:

Any progress on testing the driver with 64K/256K RAM?

— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub https://github.com/hackerb9/3C509B-nestor/issues/2#issuecomment-903958459, or unsubscribe https://github.com/notifications/unsubscribe-auth/AEJRDLTNKZTFHRSYVS4AOLDT6J6OZANCNFSM5CHALMLA . Triage notifications on the go with GitHub Mobile for iOS https://apps.apple.com/app/apple-store/id1477376905?ct=notification-email&mt=8&pt=524675 or Android https://play.google.com/store/apps/details?id=com.github.android&utm_campaign=notification-email .

voidstar78 avatar Aug 23 '21 17:08 voidstar78

Good job!

I'm also surprised about TELNET not working, but I think your guess is correct (statically allocated scrollback buffer seems plausible). You said netcat works, so you should be able to implement TELNET, but I suspect the mTCP version of nc is not going to support telnet protocol negotiation (RFC 854's "DO, DON'T, WILL, WON'T").

Did you try 64KB as well? I expect, even if the driver works, all the mTCP tools will fail, but it would be interesting to know. Unfortunately, the program I would most be interested in running, mTCP's TELNET.EXE, weighs in at 64KB just for the executable, so that's a no go.

(I actually prefer MS-Kermit's TELNET since it has file transfer builtin, but that's even more heavy weight. I'm pretty sure even 256K won't run the current version.)

hackerb9 avatar Aug 23 '21 22:08 hackerb9