Man ruft ein Sub. Das Sub soll signalisieren ob einen Bedingung erfüllt ist oder nicht.
Nun ja, wir lassen das Sub einfach ein Flag entsprechend der zu prüfenden Bedingung setzten. Der Aufrufende Programmteil prüft nun diese Flag und reagiert entsprechend. Könnte so aussehen:
JSR CHECK
LDA FLAG
CMP #ISOK
BNE NOTOK
ALLES KLAR. DO WHATEVER….
NOTOK:
DO WAHTEVER…..
CHECK:
LDA BEDINGUNG
CMP #ERFÜLLT
BNE NICHTERFÜLLT
LDA #ISOK
STA FLAG
RTS
NICHTERFÜLLT
LDA #NOTOK
STA FLAG
RTS
Umständlich!
Wir verschwenden ein ganzes Byte für das Flag und wir müssen LDA / STA und LDA / CMP ausführen. Noch mehr verschwendeter Platz! Nun bietet unser 6502 eine Menge Register. Warum nicht das Carry- Flag als „Flag“ nutzen. Dafür ist es schließlich gedacht.
Das Bespiel oben könnte dann so aussehen:
JSR CHECK
BCS ISOK
DO WHATEVER…. (Not Ok!)
ISOK:
ALLES KLAR, DO WHATEVER!
CHECK:
LDA BEDINGUNG
CMP #ERFÜLLT
BNE NICHTERFÜLLT
SEC (Bedingung ist erfüllt)
RTS
NICHTERFÜLLT:
CLC
RTS
Recht elegant…….
Kommentar verfassen