$Header: /home/radek/cvs/forth-book/sec-xforth.xml,v 1.1 2003/12/28 18:21:56 radek Exp $
FIXME: obsah
Hlavička slova LIT
NFA_LIT: BYTE $83, "LIT" LFA_LIT: WORD 0 CFA_LIT: WORD PFA_LIT
Tělo, kód slova je uložen v poli PFA
PFA_LIT: LDA (IP),Y ; Lo-Byte der inline folgenden Zahl holen
PHA ; und auf den Stack retten
INC IP ; Instruction-Pointer inkrementieren
BNE L30
INC IP+1
L30: LDA (IP), Y ; Hi-Byte der inline folgenden Zahl holen
L31: INC IP ; Instruction-Pointer inkrementieren
BNE PUSH
INC IP+1
PUSH: DEX ; Datenstack-Pointer dekrementieren
DEX
PUT: STA 1,X ; Hi-Byte (ist in A) auf den Datenstack legen
PLA ; Lo-Byte vom Stack holen
STA 0,X ; und auf den Datenstack legenDer Adressinterpreter NEXT holt die Adresse des naechsten Secondaries und fuehrt es aus.
NEXT: LDY #1
LDA (IP),Y ; Hi-Byte der Wortadresse
STA W+1 ; im W-Register ablegen
DEY
LDA (IP),Y ; Lo-Byte der Wortadresse
STA W ; im W-Register ablegen
CLC
LDA IP ; IP um 2 inkrementieren
ADC #2
STA IP
BCC L54
INC IP+1
L54: JMP W-1 ; indirekten Sprung nach (W) ausfuehren
DOCOL:
; -(RSP)=IP
LDA IP+1
PHA
LDA IP
PHA
; IP=W+2
CLC
LDA W
ADC #2
STA IP
TYA
ADC W+1
STA IP+1
; JUMP NEXT
JMP NEXT
EXIT:
; IP=(RSP)+
PLA
STA IP
PLA
STA IP+1
; JUMP NEXT
JMP NEXT