RE: [cc65] PPP and TCP/IP

Date view Thread view Subject view

From: Adam Dunkels (adam_at_sics.se)
Date: 2002-12-18 12:45:11


Hi!

On Wed, 2002-12-18 at 02:01, Chris wrote:
> Thanks a lot for the links.  Aside from the online resources (which
> are good, once you find them), I thought I would try to find
> a good book on the subject, if one was available.  I heard mixed
> reviews of "TCP/IP Lean" (1st ed), but decided to try it anyhow with
> the 2nd edition & it's extra coverage and updates.

Apart from Stevens TCP/IP illustrated volume 1 (which I am recommending
once again, because it is really good :-) and volume 2 (which is an
incredible run-through of the BSD TCP/IP code), there is also another
book on how to implement a TCP/IP stack: "Internetworking with TCP/IP
volume II" by Comer and Stevens (not the same Stevens). 

> Marinetti is a TCP/IP stack with PPP support for the Apple // GS;
> though I haven't looked at the source code.  To do that, requires
> a real system or an emulator.  It's all written in 65816 assembler,
> so it's pretty "tight", though I don't know the actual code size.
> The // GS has 256k memory *minimum*, and usually 1 to 8 megs. At
> some point I will look at the code, though.

Programs written in assembler tend to be very hard to understand, in
particular if they are written for a CPU architecture with which one is
not very acquainted. There are some links to other TCP/IP sources in C
on the "Links" page of my uIP site:

   http://dunkels.com/adam/uip/

I found some of them helpful when writing lwIP and uIP.

> TCP/IP on an 128k Apple //e will be a challenge, but that is what
> my ultimate goal is.  I have already resigned myself to the fact
> that it will take a couple months of reading and testing before
> I'll be comfortable enough to really implement something.  The
> code for the //e will most likely be for use with cc65, and then
> eventually hand-optimized where possible.

That sounds like a very good way to work: make things work first,
optimize later. In a TCP/IP stack, the most expensive operation is data
copying and TCP/UDP checksums. So to make it work fast, make the
software architecture so that copying never is done, and hand-optimize
the checksum function.

Of course, the easy way would be to pick existing code such as uIP,
which already works on cc65, and tweak the drivers for the Apple II. It
might not be the funniest way to do it, however :-) Designing and
implementing something is a very good way to learn stuff, and I can
definately recommend anyone who wishes to learn TCP/IP from the ground
up to implement a TCP/IP stack. 

/adam
-- 
Adam Dunkels <adam_at_sics.se>

----------------------------------------------------------------------
To unsubscribe from the list send mail to majordomo_at_musoftware.de with
the string "unsubscribe cc65" in the body(!) of the mail.


Date view Thread view Subject view

This archive was generated by hypermail 2.1.3 : 2002-12-18 12:45:21 CET