!!! VolksForth 6502 Assembler

(work in progress, translation pending)

Source: [6502 Assembler]

See also: [6502 Assembler in Forth]

%%tabbedSection 
%%tab-english
tab content 1
/%
%%tab-deutsch

!!Der 6502-Assembler

Im folgenden werden die Konzepte des 6502-Assemblers für VolksForth dargestellt. Es wird kein vollständiges Glossar angegeben, da die Mnemonics des Assemblers allen Maschinensprache-Programmierern vertraut sein dürften. Eine genaue Darstellung der Funktionsweise findet sich in den [FORTH DIMENSIONS, Vol III,5 p. 143ff|A FORTH ASSEMBLER FOR THE 6502] . Im folgenden wird eine kurze Zusammenfassung angegeben sowie Änderungen gegenüber dem Original dargestellt.

Die Funktionsweise des Adressinterpreters sowie der Routine NEXT wird in [Kapitel 2 des VolksForth Handbuch|VFHandbuchKapitel2] dargestellt. Der 6502-Assembler gestattet strukturierte Programmierung. Die Strukturelemente sind analog zu den Kontrollstrukturen des Forth aufgebaut, tragen jedoch andere Namen, um die Verwechselungsgefahr zu verringern und die Übersichtlichkeit zu erhöhen.

Ein Beispiel:
{{{
cc ?[ <ausdruck1> ][ <ausdruck2> ]? 
}}}
cc steht fur "condition code" . <ausdruck1> wird ausgeführt, wenn cc zutrifft, andernfalls <ausdruck2>. Der Teil 
{{{
][ <ausdruck2>
}}}
kann auch weggelassen werden. Das Analogon in Forth ist	IF ELSE ... THEN

Beachten Sie bitte, das vor {{{?[}}} immer(!) ein conditioncode stehen muß. Außerdem findet keine Prüfung auf korrekte Verschachtelung der Kontrollstrukturen statt.

Weitere Kontrollstrukturen sind:
{{{
[[ <ausdruck1> cc ?[[ <ausdruck2> ]]? 
[[ <ausdruck1> cc ?] 
[[ <ausdruck1> ]]
}}}

Die analogen Ausdrucke in Forth sind:
{{{
BEGIN <ausdruck1> WHILE <ausdruck2> REPEAT
BEGIN <ausdruckl> UNTIL 
BEGIN <ausdruck1> REPEAT
}}}
Auch hier darf bei den Assemblerworten cc nicht weggelassen werden. Außerdem ist nur genau ein {{{?[[}}} zwischen {{{[[}}} und {{{]]?}}} zulässig. Beachten Sie bitte auch den Unterschied zwischen {{{]]}}} und {{{]]?}}} !

Als condition code sind zulässig: 
{{{
0= 0<> 0< 0>= CS CC VS VC
}}}
/%
/%