After quite some time here comes another release of Contiki for the C64 (and C128 in VDC mode). In case you're interested here some info on (some of) the changes since the last release:
1. The Twitter client had to go
Twitter just doesn't want any 3rd party clients anymore and successfully drives them away.
2. The email client didn't make any sense anymore (it never did make much anyway). Nowadays everybody uses strong encryption.
3. The FTP client was a similiar case. Without PASV support not interoperable with anything out there. Without support for sending files it was never really useful anyway.
4. The Telnet server is now part of the package. It was "always" there but had a bug keeping it from working with cc65. I found and fixed it because it is used as base for https://github.com/lodger-c64/Contiki-BBS
. The C64 demo Telnet server I'm providing comes with the shell command 'wget' allowing you to download a i.e. the Google homepage with 'wget http://www.google.com
| write google.htm'. This means that the Telnet server uses two simultaneous TCP connections: One incommming for the Telnet client and one outgoing for the wget command.
5. I'm sure about everybody sees the web browser as most interesting Contiki program. So I went ahead and invested many hours in improvement:
- Originally there were several fixed sized arrays to hold the data of links and forms. While that had the benefit of simple (aka fast and small) 6502 code to access the data it turned out to be simply to inflexible to accommodate somewhat more complex pages. Quite some time ago I changed that with https://github.com/contiki-os/contiki/c ... b121556f5e
to use a single buffer containing linked lists of items allocated according to their actual size. As part of that change I moved away from storing input field data in the actual page allowing to support scrolling input fields and hidden input fields.
- In the meantime I fixed quite some issues. Among them there were several fixes improving the "skipping" of unhandled stuff:
a) HTTP header field parsing uses a fixed 1024 byte buffer. If a header field was longer the whole page parsing failed. Nowadays many pages set cookies - which are easily larger than 1024 bytes. Now the header field parsing successfully skips too-long header fields.
- Regarding the actual page display nowadays people use loads of <div> to structure their content. Inserting a newline for every </div> sometimes meant literally empty pages
Instead of blowing up the parser code I opted for a post-processing: There are simply never more than two consecutive newlines rendered.
- I was surprised to find that "THE" web page (http://www.google.com
- I (re-)added the option to quit the C64 web browser and launch the WGET program when hitting any non-(X)HTML content. The WGET program is given the URL to download so that you only have to enter the filename to save as.
6. The C64 web browser and C64 IRC client are now additionally available as "soft80" variants - with the full feature set of 40 column variants! The soft80 support is part of the cc65 C library for the C64 and as such available to other cc65 programs. Thanks to <email@example.com> and <firstname.lastname@example.org> for their contribution to the cc65 C library for the C64
7. I moved away from that Contiki online configurator thingy. Contiki now comes as straight disk image download. Either as three .d64 images, as one .d71 image or as one .d81 image. First run ETHCONFIG once to set your Ethernet cart type. Then run IPCONFIG to set your IP configuration either via DHCP or manually.
8. The .zip file containing all the disk images contains a "zip comment". That comment is a GitHub URL listing the last Contiki commits (with their dates) that went into the build. This way you can judge how old/new the stuff is although there's no official Contiki version.
9. The Contiki programs come with IDE64 support. I have however a report that there's a compatibility issue with IDEDOS 0.90. That issue isn't present with IDEDOS 0.91 beta. Another option to workaround the issue is to disable IDE64 with 'KILL'.