Implementations of NEXT in Forth Systems for the 6502 CPU#
FIG-FORTH (also X-FORTH, ANTIC FORTH and other derivatives of FIG-FORTH ...)#
NEXT
LDY #1
LDA (IP),Y ; Hi-Byte of wordaddress
STA W+1 ; store in W-Reg
DEY
LDA (IP),Y ; Lo-Byte of wordaddress
STA W ; store in W-Reg
CLC
LDA IP ; increment IP by 2
ADC #2
STA IP
BCC L54
INC IP+1
L54
JMP W-1 ; indirect jump to (W)
64FORTH (Tom Zimmer)#
NEXT LDY #1
LDA (IP),Y
STA W+1
DEY
LDA (IP),Y
STA W
LDA (W),Y
STA TMP
INY
LDA (W),Y
STA TMP+1
DEY
CLC
LDA IP
ADC #2
STA IP
BCC L816E
INC IP+1
L816E JMP (TMP)
See http://groups.google.de/group/comp.lang.forth/browse_thread/thread/19f7f2102e020583/8d1b52cf069d1258
FOCO65 #
next
ldy #0
lda (ip),y ; lade naechste Adresse (IP=Instruction Pointer)
sta w ; und speichere in die Speicherstelle "w"
iny
lda (ip),y
sta w+1
lda #2 ; den Instruction-Pointer um zwei erhoehen, so das
clc ; dieser auf den naechsten Befehl zeigt
adc ip
sta ip
lda #0
adc ip+1
sta ip+1
ldy #0
lda (w),y ; Sprung-Adresse des naechsten Befehls laden
sta z ; und in die Speicherstelle "z" schreiben
iny
lda (w),y
sta z+1
jmp (z) ; indirekt an die Adresse in Speicherstelle "z"
; springen