Just in time for the Contiki 2.1 release I finished my port of the Contiki 2.x codebase to cc65 targets ?
This port consist primarily of two parts:
1. Complete and clean integration of the cc65 toolchain into the Contiki 2.x build system. This allows Contiki 2.x applications to be built for about every cc65 target. Predefined are the C64 and the enhanced Apple //e.
2. Generic Ethernet packet driver with dynamically loading, self-modifying Ethernet card device drivers for the CS8900A and the LAN91C96. These two drivers are used both for the C64 and the enhanced Apple //e.
My Contiki 2.x port is _NO_ successor of my Contiki 1.x port!
While Contiki was originally a disk based OS with a GUI and with TCP/IP, the goals have totally changed in the meanwhile. Now it’s a ROM based OS for embedded systems without UI and with TCP/IP or low power radio MAC protocols.
As a consequence there’s no development at all done on the original GUI applications. Therefore it didn’t make sense to invest a lot of effort into just recreating the Contiki 1.x experience with the Contiki 2.x codebase.
On the other hand there are several people interested in creating TCP/IP enabled 8-bit applications on the Apple2. But they don’t want or need the Contiki GUI either because they want to create their own GUI or don’t need a GUI at all. Surely it was possible to strip the GUI from Contiki 1.x but the whole thing is so highly optimized from source to build that this seems a quite difficult task to begin with.
Therefore those people tend to go for uIP instead. uIP is a quite popular TCP/IP library being the core of the TCP/IP stack in Contiki.
I think this is a pity as you most of the time end up recreating a lot of what the Contiki core offers on top of uIP – and still miss the rest. In a nutshell my Contiki 2.x port claims to be “the better uIP” for cc65 targets.
– Windows/Cygwin or Un*x as test platform work out of the box
– cc65 targets as target platform work out of the box
– Several examples (including a web server) work out of the box
– Both Uther and LANceGS work out of the box
– The Protothreads paradigm for intuitively interleaving/coordinating several streams of activity in extremely lightweight processes
Some processes come with Contiki and can be used as needed:
– TCP/IP stack
– Ethernet card driver
– DNS client
– DHCP client
The application is defined as a custom process. A potential web browser could consist of the Protothreads:
– Keyboard/mouse handler
– HTML parser
– Page renderer
So I think by now nobody wonders anymore why I posted this message to comp.sys.apple2.programmer ?