I've raised an issue on google code
although not sure if it is properly tracked.
Briefly - the issue is around the fact that pre-packaged optiboot for at85 is in fact compiled for at84 platform, hence it breaks timer1 and... well, doesn't use memory properly - but this is harmless (it ignores first 0x40 bytes available).
As a consequence I've tried first to get optiboot from here
but then figured it's bigger than at84 one, so one may argue that t1 could be sacrificed for bigger space. So then I re-factored disassembled code and ported it properly to at85 reducing the code size in the process from 0x240 to 0x200 (precisely 512 bytes).
I've tested new version - T1 (delay/millis) works now, PWM works... so to me the issue is fixed and available space even more increased.
Additionally I'm working now on OptibootSerial implementation which will use Optiboot's softuart calls (since I know now exactly where the calls are in memory) reducing Serial footprint on at85 with this bootloader.
Theoretically it's even possible to setup ISR for PCINT3 calling getch making data receive asynchronous - however that's rather for future plans. Bare minimum goal is to make it work half duplex so that it can run AvrISP sketch (it will also need USI->SPI wrapper but that's another story).
Couple of questions:
Who can replace a bootloader in the repository and accept a library code change? Or rather - what's the correct process to do it (as it seems issues tab is used just to track internal code changes)?
Second question - is it possible to provide constants to arduino library in board definitions? I read new (1.5) arduino accepts .c.flags board option - is it also applicable to 1.0? I just don't want to hardcode uart hooks and params into library but provide them in a board definition.
And of course tests, reviews, suggestions are welcomed.Moderator edit: links corrected