$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 legen
Der 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