!!! 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
}}}
/%
/%