Sweet 16

Sweet 16 ist eine Betriebssystem Routine im ROM des Apple II, eine Erweiterung des 6502 Befehlssatzes die dem 8- Bit Prozessor zu 16- Bit Funktionalität verhilft.

Näheres dazu hier im Blog:
Artikel zu „Sweet 16“ (Digi Barn Computer Museum)

Aber, Sweet 16 ist nicht nur eine geniale Betriebssystem Routine, Sweet 16 steht stellvertretend als Model dafür, wie sich der Befehlssatz des 6502- Prozessors erweitern lässt. Nebeneffekt – gewünscht oder nicht – der Source obfuskiert sich quasi von selbst.

Grundsätzlich lässt sich Sweet 16 auf dem Apple ][ folgendermaßen nutzen:

JSR SW16

20140406-210651.jpg
Sweet 16, Diassembliert

Der vollständige Source Code findet sich in:
Wozniak, Steve (1977): The Woz Wonderbook.  A compendium of notes, diagrams, articels, instructions and code that describes the Apple ][ Computer and how to program it.

Auf das JSR folgt der Sweet 16 Befehlssatz, der dann schrittweise von der Subroutine (SW16) interpretiert wird.

Genutzt wird die Funktion des 6502 Befehls Jump to Subroutine (JSR). Der Befehl springt die angegebene Adresse an, merk sich aber die Adresse des auf den Befehl JSR folgenden Bytes, indem er diese auf den Stack rettet. Zuerst das High- Byte, dann das Low Byte.

Man denk sich nun die so auf den Stack geschriebene Rückkehradresse sollte auf den nächsten Befehl zeigen. dem ist aber – wie obe beschrieben – nicht so. Dieser „Fehler“ wird korrigiert, indem das RTS die Rückkehradresse automatisch um eins erhöht. Vergleiche in: N.N. (1976) : MCS 6500 Microcomputer Family Programing Manual. Januar 1976. Norristown: MOS Technology Inc.

Um einen Fehler handelt es sich dabei eigendlich nicht. Die oben beschriebene Tatsache entspringt vielmehr der Festlegung, dass Adressen auf dem Stack immer auf die nächste freie Stelle im Speicher zeigen sollen (ebenfalls nachzulesen in der o.g. Quelle).

Advertisements

Kommentar verfassen

Trage deine Daten unten ein oder klicke ein Icon um dich einzuloggen:

WordPress.com-Logo

Du kommentierst mit Deinem WordPress.com-Konto. Abmelden /  Ändern )

Google+ Foto

Du kommentierst mit Deinem Google+-Konto. Abmelden /  Ändern )

Twitter-Bild

Du kommentierst mit Deinem Twitter-Konto. Abmelden /  Ändern )

Facebook-Foto

Du kommentierst mit Deinem Facebook-Konto. Abmelden /  Ändern )

w

Verbinde mit %s

%d Bloggern gefällt das: