Bei dem Thread über die indirekte Adressierung ist schon einmal kurz etwas zum Aufbau einer Sprungtabelle geschrieben worden. Das Konzept einer solchen Tabelle ist dabei v.a., daß man die eigentlichen Routinen dadurch beliebig im Speicher platzieren kann, da man nur die Einträge in der Tabelle an die Speicheradresse anpassen muß, wohingegen Programme immer die gleiche Adresse - nämlich den Platz in der Tabelle - nutzen, um solch eine Funktion aufzurufen.
Ob man diesen zweiten Sprung - nach dem ersten, den das Programm in die Tabelle (auf die gewünschte Funktion) ausführt - nun indirekt gestaltet oder nicht, ist ein bißchen Geschmackssache. Eine Indirektion hat den großen Vorteil, daß die aufzurufende Routine auch noch ergänzt oder gar ersetzt werden könnte. Die "Entkopplung" von Programm und realem Ort der Funktion wird davon nicht berührt.
Besonders interessant wird soetwas, wenn es über mehrere Generationen einer bestimmen Maschine immer relativ konstant beibehalten wird - d.h. die Einsprungpunkte der Tabelle mit den gleichen Funktionen verknüpft bleiben.
Sofern diese auch ihr Aufrufverhalten und die Rückgabewerte beibehalten, läßt sich so "uralte" Software von Gerät zu Gerät weiterverwenden - vorausgesetzt die Software nutzt ausschließlich die definierten Funktionen.
Leider ist das manchmal gar nicht so einfach, insbesondere, wenn neue Hardwaremöglichkeiten auftauchen, die benutzt werden sollen. Spätestens dann wird Software zunehmend wenigstens rückwärts-INKOMPATIBEL, da eine Vorgängermaschine eben die neue Hardwarefunktion und die zugehörigen Routinen gar nicht bieten kann.
Sehr konsequent wäre nun, daß solche Tabellen auch herstellerübergreifend angelegt würden und von irgendwelchen Firmenkonsortien durchgesetzt worden wären. Das hat es im Mikrocomputerbereich eigentlich nie wirklich gegeben. Die große Ausnahme ist vielleicht BASICODE, was versucht so ein System von gleichbenutzbaren Routinen mit definierten Einsprungpunkten zu definieren; als GOSUB Routinen für BASIC. Auch die MSX Geräte sind in der Form "normiert" (dort allerdings auch unter Vorgabe von Hardwaremindeststandards). Ansonsten funktioniert das gut nur innerhalb der Geräte eines Herstellers.
Ähnliche Funktionalität findet sich im PC Bereich in Form des BIOS. Auch dieses definiert bestimmte immer wiederkehrende Grundfunktionen, "abstrahiert" zudem die eigentliche Hardware und stellt dazu auch fixe "Aufrufpunkte" für Software bereit. Dieses Konzept geht dort letztlich auf Gary Kildall (Intergalactic Digital Research) und seine Vorerfahrungen mit CP/M zurück.
Recht konsequent war dies auch bei Acorn umgesetzt worden. Dort lassen sich auch auf dem aktuellsten RISC OS noch "gut" geschriebene und die Systemeinsprünge benutzende Programme für den BBC Micro direkt auf aktuellster Hardware ausführen.
Für die Commodore Rechner gibt es auch eine gewisse Konsistenz in Form der sogenannten KERNAL-Tabelle.
Diese findet sich bereits bei den ersten Modellen und ist über die 8-Bit Geräte kontinuierlich erweitert worden, bei relativ guter Konstanz der wichtigsten Routinen, sowohl in Bedienung wie bei ihrem jeweiligen "Tabellenplatz".
Für die Spectrums und Ataris dieser Welt, wird es ähnliches vermutlich auch geben, immerhin gibt es auch dort mehrere Gerätegenerationen, die jeweils "alte" Software ausführen können.