version 1.143, 2003/09/01 22:12:46
|
version 1.146, 2003/10/09 20:25:59
|
Line 136
|
Line 136
|
\ throw execute, cfa and NEXT1 out? |
\ throw execute, cfa and NEXT1 out? |
\ macroize *ip, ip++, *ip++ (pipelining)? |
\ macroize *ip, ip++, *ip++ (pipelining)? |
|
|
|
\ Stack caching setup |
|
|
|
\E register IPTOS Cell |
|
\E register spa Cell |
|
\E register spb Cell |
|
\E register spc Cell |
|
\E register spd Cell |
|
|
|
\E create IPregs IPTOS , |
|
\E create regs spc , spb , spa , |
|
|
|
\E IPregs 1 0 stack-state IPss1 |
|
\E regs 3 cells + 0 0 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 |
|
|
|
\ the first of these is the default state |
|
\E state S0 |
|
\E state S1 |
|
\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 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 , |
|
|
|
\ !! the following should be automatic |
|
\E S0 to state-default |
|
\E state-default to state-in |
|
\E state-default to state-out |
|
|
\ these m4 macros would collide with identifiers |
\ these m4 macros would collide with identifiers |
undefine(`index') |
undefine(`index') |
undefine(`shift') |
undefine(`shift') |
Line 1400 longname2=listlfind(c_addr, u, longname1
|
Line 1441 longname2=listlfind(c_addr, u, longname1
|
REPEAT THEN nip nip ; |
REPEAT THEN nip nip ; |
: (findl-samelen) ( u longname1 -- u longname2/0 ) |
: (findl-samelen) ( u longname1 -- u longname2/0 ) |
BEGIN 2dup cell+ @ lcount-mask and <> WHILE @ dup 0= UNTIL THEN ; |
BEGIN 2dup cell+ @ lcount-mask and <> WHILE @ dup 0= UNTIL THEN ; |
|
: capscomp ( c_addr1 u c_addr2 -- n ) |
|
swap bounds |
|
?DO dup c@ I c@ <> |
|
IF dup c@ toupper I c@ toupper = |
|
ELSE true THEN WHILE 1+ LOOP drop 0 |
|
ELSE c@ toupper I c@ toupper - unloop THEN sgn ; |
|
: sgn ( n -- -1/0/1 ) |
|
dup 0= IF EXIT THEN 0< 2* 1+ ; |
|
|
\+hash |
\+hash |
|
|