Leider befürchte ich, daß es ein kleines Problem mit dem Code gibt. Der Befehl BIT testet das höchste Bit (7) ab und übertragt den Inhalt ins N-Flag sowie das zweithöchste Bit (6), dessen Inhalt ins V-Flag kopiert wird. Dadurch kann man mit
BIT variable
BPL bit_7_nicht_gesetzt
BMI bit_7_gesetzt
BVC bit_6_nicht_gesetzt
BVS bit_6_gesetzt
direkt testen, ob diese beiden Bits gesetzt sind oder nicht. In Deinem Fall willst Du aber das unterste Bit (0) testen. Zum Tests anderer Bits muß zuerst eine Maske in den Akkumulator geladen werden, die angibt, welche Bits getestet werden sollen, z. B.
Der Prozessor führt dann beim BIT-Befehl eine UND-Operation durch mit dem Operanden, dessen Ergebnis dann im Z-Flag landet.
Siehe hierzu auch: Bitte melde dich an, um diesen Link zu sehen.
In Deinem Fall läßt sich das vielleicht so regeln:
; vorher
LDA print_line_offs ;laenge holen
LSR ; ungerade?
ROR ; rotiere Bit ins höchste Bit
STA print_line_flag ;speichern
; dann
BIT print_line_flag
BMI +
EDIT: In Deinem konkreten Fall läßt sich das Programm aber auch viel kürzer gestalten: