--- gforth/xxxprim 2003/09/29 20:51:16 1.2 +++ gforth/xxxprim 2007/12/31 19:02:24 1.9 @@ -1,12 +1,12 @@ \ Gforth primitives -\ Copyright (C) 1995,1996,1997,1998,2000,2003 Free Software Foundation, Inc. +\ Copyright (C) 1995,1996,1997,1998,2000,2003,2007 Free Software Foundation, Inc. \ This file is part of Gforth. \ Gforth is free software; you can redistribute it and/or \ modify it under the terms of the GNU General Public License -\ as published by the Free Software Foundation; either version 2 +\ as published by the Free Software Foundation, either version 3 \ of the License, or (at your option) any later version. \ This program is distributed in the hope that it will be useful, @@ -15,8 +15,7 @@ \ GNU General Public License for more details. \ You should have received a copy of the GNU General Public License -\ along with this program; if not, write to the Free Software -\ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111, USA. +\ along with this program. If not, see http://www.gnu.org/licenses/. \ WARNING: This file is processed by m4. Make sure your identifiers @@ -138,30 +137,43 @@ \ set up stack caching states +\E register IPTOS Cell \E register spTOS Cell \E register sp1 Cell \E register sp2 Cell \E register sp3 Cell -\E create regs spTOS , sp1 , sp2 , sp3 , +\E create IPregs IPTOS , +\E create regs sp2 , sp1 , spTOS , -\E regs 0 0 stack-state ss0 -\E regs 1 1 stack-state ss1 -\E regs 2 2 stack-state ss2 -\E regs 3 3 stack-state ss3 +\E IPregs 1 0 stack-state IPss1 +\E regs 3 cells + 0 -1 stack-state ss0 +\E regs 2 cells + 1 0 stack-state ss1 +\E regs 1 cells + 2 1 stack-state ss2 +\E regs 0 cells + 3 2 stack-state ss3 -\E state S0 +\ the first of these is the default state \E state S1 +\E state S0 \E state S2 \E state S3 -\E ss0 data-stack s0 set-ss -\E ss1 data-stack s1 set-ss -\E ss2 data-stack s2 set-ss -\E ss3 data-stack s3 set-ss - -\E S1 to state-in -\E S1 to state-out +\E ss0 data-stack S0 set-ss +\E ss1 data-stack S1 set-ss +\E ss2 data-stack S2 set-ss +\E ss3 data-stack S3 set-ss + +\E IPss1 inst-stream S0 set-ss +\E IPss1 inst-stream S1 set-ss +\E IPss1 inst-stream S2 set-ss +\E IPss1 inst-stream S3 set-ss + +\E data-stack to cache-stack +\E here 4 cache-states 2! s0 , s1 , s2 , s3 , + +\E S1 to state-default +\E state-default to state-in +\E state-default to state-out + ( n1 n2 -- n ) core plus n = n1+n2; @@ -169,3 +181,24 @@ n = n1+n2; lit ( #w -- w ) gforth : r> dup @ swap cell+ >r ; + +over ( n1 n2 -- n1 n2 n1 ) + +drop ( n -- ) + +?branch ( #a_target f -- ) f83 question_branch +if (f==0) { + SET_IP((Xt *)a_target); + INST_TAIL; NEXT_P2; +} +SUPER_CONTINUE; + +noop ( -- ) + +\E prim-states drop +\E prim-states over + +\E branch-states ?branch + +\E gen-transitions noop +