Relevant cc65 changes...
General:
- The compiler generates "extended" dependency info (like gcc) so there's no need for postprocessing whatsoever :-)
- The linker is very pernickety regarding the ordering of cmdline options so a custom linker rule is necessary :-(
Apple2:
- The various memory usage scenarios aren't specified anymore via separate linker configs but via defines overriding default values in the builtin linker config.
Atari:
- The builtin linker config allows to override the start addr so there no more need for a custom linker config.
- The C library comes with POSIX directory access. So there's no more need for for a custom coding.
CBM:
- The C library comes with POSIX directory access. So there's no more need for for a custom coding.
Contiki now leverages that feature to place process.o, etimer.o and uip_arp.o in HIGHCODE. These files were carefully chosen as:
- they are necessary for all Ethernet apps
- their size doesn't depend on configuration macros
- they fill the available space nicely (with a little reserve for changes in the source or the compiler)
ProDOS requires for each opened file a user-supplied page-aligned 1024 byte i/o buffer. This makes the generic POSIX file i/o library contained in the cc65 C-library quite heavyweight.
In contrast the lightweight pfs implementation uses the uIP packet buffer as ProDOS i/o buffer. Therefore:
- Only one file may be open at any time.
- That file may not be open while the uIP packet buffer is used by uIP. The open()/read()/close() sequence should be completed before Contiki event scheduling or inside handling a single Contiki event.
- The uIP packet buffer must be large enough to hold the ProDOS I/O buffer. Depending on the position of the uIP buffer in memory this means between 1024 and 1024 + 256 bytes. Therefore in an Ethernet environment setting the MTU_SIZE to at least 1266 is safe (So the default of 1500 is just fine).