Freezepoints

Ein Freezepoint unterbricht das laufende Programm und springt zum DreaMon.

Alle Register der I/O Chips werden dabei gerettet, soda� in das Programm zur�ckgekehrt werden kann, als w�re nichts geschehen.

Es gibt zwei Typen der Freezepoints, die sich in der Sprungart zum DreaMon unterscheiden:

TypBen�tigtL�ngeBedingung
J (JSR)die Vektoren bei $d3xx3I/O mu� aktiv sein und der Freezepoint mu� in Bank 0 liegen
L (JSL)nichts4keine

Der Speicherinhalt beim Freezepoint wird gerettet und durch dem Sprungbefehl ersetzt. Also passt auf, da� ihr nicht �ber selbstmodifizierenden Code stolpert. (Eine L�sung daf�r findet ihr weiter unten)

Nachdem der Freezepoint ausgef�hrt wurde, wird der urspr�ngliche Speicherinhalt wieder zur�ckgeschrieben. Im DreaMon sieht man also immer den urspr�nglichen Speicher. Der Disassemble Befehl zeigt einen Freezepoint mit einem kleinen Kommentar hinter dem Opcode an.

Wird ein Freezepoint erreicht, k�nnen 4 Dinge geschehen:

TypParameterAktion
N (Normal)keineSpringt einfach zum DreaMon
C (Count)n (eine Zahl von 0 bis $ff)Freezed beim (n+1)-ten mal (also ist n=0 wie 'normal')
A (Activate)n (eine Zahl von 0 bis $ff)Aktiviert die Bits aus n, weiter passiert nichts
R (Remote)n (eine Zahl von 0 bis $ff)Freezed wenn mindestens ein Bit aus n aktiviert ist

Das standard Zahlensystem f�r alle Parameter ist Hex.

Activate und Remote Freezepoints sind nur in Kombination n�tzlich. Sie werden ben�tigt, wenn timingkritische Routinen oder selbstmodifizierender Code gefreezed werden soll und die anderen Typen nicht funktionieren.

Remote Freezepoints werden nicht in den Speicher geschrieben, wenn sie gesetzt wurden. Sie werden nur vorgemerkt, bis ein Activate Freezepoint erreicht wird. Nun wird der Remote Freezepoint in den Speicher geschrieben und kann ausgef�hrt werden. Der Parameter f�r beide Typen ist eine Bit Maske, die steuert, welcher Freezepoint aktiviert wird. Bei einem Activate mit Parameter $15 werden alle Remote Freezepoints gesetzt, die mindestens die Bits 0, 2 oder 4 gesetzt haben, z.B. einer mit $32.

Freezepoints k�nnen auf zwei verschiedene Arten gesetzt werden: