Deutsch   English   Français   Italiano  
<vq4m3k$1cv3v$1@dont-email.me>

View for Bookmarking (what is this?)
Look up another Usenet article

Path: ...!eternal-september.org!feeder3.eternal-september.org!news.eternal-september.org!eternal-september.org!.POSTED!not-for-mail
From: sjack@dontemail.me (sjack)
Newsgroups: comp.lang.forth
Subject: FigForth MIX
Date: Mon, 3 Mar 2025 16:41:25 -0000 (UTC)
Organization: A noiseless patient Spider
Lines: 37
Message-ID: <vq4m3k$1cv3v$1@dont-email.me>
Reply-To: sdwjack69@gmail.com
Injection-Date: Mon, 03 Mar 2025 17:41:25 +0100 (CET)
Injection-Info: dont-email.me; posting-host="747c1876cd3fd069d7f2cf6441dea844";
	logging-data="1473663"; mail-complaints-to="abuse@eternal-september.org";	posting-account="U2FsdGVkX1+CrTUHLJuea8JyXkKcG53H"
User-Agent: tin/2.6.4-20240224 ("Banff") (Linux/6.8.0-54-generic (x86_64))
Cancel-Lock: sha1:X2sEI5ix22Kj0rNtmdy/uYAE4Mc=
Bytes: 1519

                                 A FigForth MIX                                 


( support )
( : i. ."  --> " ; )
( Sample 'MIX'(ish) in high level FigForth )
Vocabulary MIX immediate
MIX definitions

: sto  ( n a -- )    ! ;
: add  ( n a -- )   +! ;
( 'i:' starts inline definition )
i: mov  ( a1 a2 -- ) >r @ r> ! ;
i: xor  ( a1 a2 -- ) >r @ r @ forth xor r> ! ;
i: xchg ( a1 a2 -- ) dup >r @ over @ r> ! swap ! ; 
( some registers )
0 variable r1
0 variable r2

( Test run )
MIX
 1 r1 sto
r1 r2 mov
 1 r2 add
i. r1 ? --> 1 
i. r2 ? --> 2 

r1 r2 xchg
i. r1 ? --> 2 
i. r2 ? --> 1 

r1 r2 xor r2 r1 xor r1 r2 xor
i. r1 ? --> 1 
i. r2 ? --> 2 

-fin- 
 OK