Okay...
a) für Textlänge 5 braucht der de-Cruncher mehr Speicher als man an Datenbytes einspart.
b) definiere Dein Programm so, daß nur gerade Textlängen vorkommen und spare die Sonderbehandlung. Solche Tricks und Kniffe kommen öfter vor als man denkt!
c) wenn es denn unbedingt sein muß:
start: load a, (quelle)
shift_right a, 4; viermal nach rechts schieben...
and #§0F; ---denn wir brauchen erstmal das High-Nibble
store (farbram)
increment farbram
decrement counter
jump_zero fertig; wenn counter auf Null geht: raus hier!
load a, (quelle); nochmal holen- push/pull geht auch, ist aber langsamer
and #§0F; diesmal: low-Nibble isolieren
store (farbram)
increment quelle; beim nächsten Durchgang brauchen wir ein neues Byte!
increment farbram
decrement counter
jump_not_zero start; wenn counter noch nicht auf Null: nächste Runde!
fertig: jee-ha!
Du wolltest Pseudo-Code, hier hast Du... was jee-ha! macht darfst Du selbst rausfinden.