Soweit ich das jetzt überflogen habe, war Code ursprünglich für den AT90S2313, also den Vorgänger des Tiny2313. Desweiteren meine ich mich zu erinnern, daß man den neuen Tiny in einen Kompatibilitätsmodus zum Vorgänger versetzen kann - den Mega128 logischerweise nicht.
Insofern ist natürlich alles mögliche anzupassen - was mir als erstes einfällt:
-einige SRAM-Adressen sind im Code fest gewählt - die müssen im Mega wegen des Extended-I/O-Space verschoben werden
-Bitnamen in I/O-Registern müssen überprüft werden (auf korrekten Namen, korrektes Register, und auf die gewünschte Funktion)
-es ist zu überprüfen, ob sich bei den Adressen hinter den Namen was geändert hat (bez. IN/OUT-LD(S)/ST(S), und SBI/CBI/SBIS/SBIC)
-zT werden Taktgenaue Timings mit NOPs erzeugt - es gibt einige Mnemonics, die beim "reduced core" des Tiny schneller sind, als beim Mega - sollte auch überprüft werden.
-da der Mega schon als Mega deutlich mehr Fähigkeiten (Hardware) hat, wäre es eigentlich sinniger, das alles komplett neu anzulegen - ich bezweifle jedoch, daß sich da wer die Mühe macht, das Konzept des Programmes erstmal zu verstehen (sich da also erstmal komplett einzuarbeiten)
Mal von der anderen Seite gefragt: Warum soll das eigentlich portiert werden? Also wenn Du da selbst noch was dazucoden willst, warum portierst Du es nicht selbst? - Wenn Du das nicht kannst, wie willst Du dann selbst was erweitern? Oder wozu brauchst Du mehr freien Platz? Oder die "Mega-Hardware"?
Vielleicht reicht es ja auch, auf den Tiny4313 zu portieren? Das ist die große Version des Tiny2313, mit doppelt soviel Flash, aber ansonsten weitgehend(?) identisch...
Und pinkompatibel.