Rename switch to ialias
The switch name was confusing.
This commit is contained in:
parent
b4f3fde062
commit
f8b7a3ce65
10
blk.fs
10
blk.fs
@ -1123,7 +1123,7 @@ lblexec BSET L1 FSET ( B284 ) L2 FSET ( B286 )
|
|||||||
A ORr, IFZ, JP(HL), THEN,
|
A ORr, IFZ, JP(HL), THEN,
|
||||||
A DECr, ( compiled? ) IFNZ, ( no )
|
A DECr, ( compiled? ) IFNZ, ( no )
|
||||||
3 CPi, IFZ, ( alias ) LDDE(HL), JR, lblexec BWR THEN,
|
3 CPi, IFZ, ( alias ) LDDE(HL), JR, lblexec BWR THEN,
|
||||||
IFNC, ( switch )
|
IFNC, ( ialias )
|
||||||
LDDE(HL), EXDEHL, LDDE(HL), JR, lblexec BWR THEN,
|
LDDE(HL), EXDEHL, LDDE(HL), JR, lblexec BWR THEN,
|
||||||
( cell or does. push PFA ) HL PUSH,
|
( cell or does. push PFA ) HL PUSH,
|
||||||
A DECr, JRZ, lblnext BWR ( cell )
|
A DECr, JRZ, lblnext BWR ( cell )
|
||||||
@ -1739,7 +1739,7 @@ with "390 LOAD"
|
|||||||
( ----- 355 )
|
( ----- 355 )
|
||||||
: +! TUCK @ + SWAP ! ;
|
: +! TUCK @ + SWAP ! ;
|
||||||
: *! ( addr alias -- ) 1+ ! ;
|
: *! ( addr alias -- ) 1+ ! ;
|
||||||
: **! ( addr switch -- ) 1+ @ ! ;
|
: **! ( addr ialias -- ) 1+ @ ! ;
|
||||||
: / /MOD NIP ;
|
: / /MOD NIP ;
|
||||||
: MOD /MOD DROP ;
|
: MOD /MOD DROP ;
|
||||||
: ALLOT HERE +! ;
|
: ALLOT HERE +! ;
|
||||||
@ -2155,7 +2155,7 @@ XCURRENT @ _xapply ORG @ 0x04 ( stable ABI BOOT ) + !
|
|||||||
( ----- 391 )
|
( ----- 391 )
|
||||||
( Now we have "as late as possible" stuff. See bootstrap doc. )
|
( Now we have "as late as possible" stuff. See bootstrap doc. )
|
||||||
: :* ( addr -- ) (entry) 4 ( alias ) C, , ;
|
: :* ( addr -- ) (entry) 4 ( alias ) C, , ;
|
||||||
: :** ( addr -- ) (entry) 5 ( switch ) C, , ;
|
: :** ( addr -- ) (entry) 5 ( ialias ) C, , ;
|
||||||
( ----- 392 )
|
( ----- 392 )
|
||||||
: _bchk DUP 0x7f + 0xff > IF LIT" br ovfl" (print) ABORT THEN ;
|
: _bchk DUP 0x7f + 0xff > IF LIT" br ovfl" (print) ABORT THEN ;
|
||||||
: DO COMPILE 2>R H@ ; IMMEDIATE
|
: DO COMPILE 2>R H@ ; IMMEDIATE
|
||||||
@ -2599,8 +2599,8 @@ lblexec BSET ( DI -> wordref )
|
|||||||
DI PUSHx, JMPs, lblnext @ RPCs, THEN,
|
DI PUSHx, JMPs, lblnext @ RPCs, THEN,
|
||||||
AL DECr, IFZ, ( does )
|
AL DECr, IFZ, ( does )
|
||||||
DI PUSHx, DI INCx, DI INCx, DI [DI] MOVx[], THEN,
|
DI PUSHx, DI INCx, DI INCx, DI [DI] MOVx[], THEN,
|
||||||
( alias or switch ) DI [DI] MOVx[],
|
( alias or ialias ) DI [DI] MOVx[],
|
||||||
AL DECr, IFNZ, ( switch ) DI [DI] MOVx[], THEN,
|
AL DECr, IFNZ, ( ialias ) DI [DI] MOVx[], THEN,
|
||||||
JMPs, lblexec @ RPCs,
|
JMPs, lblexec @ RPCs,
|
||||||
THEN, ( continue to compiled )
|
THEN, ( continue to compiled )
|
||||||
BP INCx, BP INCx, [BP] 0 DX MOV[]+x, ( pushRS )
|
BP INCx, BP INCx, [BP] 0 DX MOV[]+x, ( pushRS )
|
||||||
|
@ -66,7 +66,7 @@ WORD( a -- a Get wordref's beginning addr.
|
|||||||
|
|
||||||
: x ... ; -- Define a new word
|
: x ... ; -- Define a new word
|
||||||
:* x a -- Define a new alias
|
:* x a -- Define a new alias
|
||||||
:** x a -- Define a new switch
|
:** x a -- Define a new ialias
|
||||||
CREATE x -- Create cell named x. Doesn't allocate a PF.
|
CREATE x -- Create cell named x. Doesn't allocate a PF.
|
||||||
[COMPILE] x -- *I* Compile word x and write it to HERE.
|
[COMPILE] x -- *I* Compile word x and write it to HERE.
|
||||||
IMMEDIATE words are *not* executed.
|
IMMEDIATE words are *not* executed.
|
||||||
@ -164,7 +164,7 @@ C! c a -- Store byte c in address a
|
|||||||
C!+ c a -- a+1 Store byte c in a and inc a.
|
C!+ c a -- a+1 Store byte c in a and inc a.
|
||||||
C!- c a -- a-1 Store byte c in a and dec a.
|
C!- c a -- a-1 Store byte c in a and dec a.
|
||||||
*! a al -- Change alias al's addr to a.
|
*! a al -- Change alias al's addr to a.
|
||||||
**! a sw -- Change switch sw's addr to a.
|
**! a sw -- Change ialias sw's addr to a.
|
||||||
CURRENT -- a Set a to wordref of last added entry.
|
CURRENT -- a Set a to wordref of last added entry.
|
||||||
CURRENT* -- a A pointer to active CURRENT*. Useful
|
CURRENT* -- a A pointer to active CURRENT*. Useful
|
||||||
when we have multiple active dicts.
|
when we have multiple active dicts.
|
||||||
@ -185,7 +185,7 @@ MOVEW notes: this word's purpose is to interface with word-
|
|||||||
based systems. src and dst are addressed as *bytes* but u is a
|
based systems. src and dst are addressed as *bytes* but u is a
|
||||||
*word* count. Every iteration increases src and dst by 2. This
|
*word* count. Every iteration increases src and dst by 2. This
|
||||||
shouldn't be used on regular memory, it will yield weird
|
shouldn't be used on regular memory, it will yield weird
|
||||||
results. Use it with A! switch pointing to a word-based target.
|
results. Use it with A! ialias pointing to a word-based target.
|
||||||
|
|
||||||
# Arithmetic / Bits
|
# Arithmetic / Bits
|
||||||
|
|
||||||
|
@ -109,7 +109,7 @@ compiled word.
|
|||||||
4: alias. See usage.txt. PFA is like a cell, but instead of
|
4: alias. See usage.txt. PFA is like a cell, but instead of
|
||||||
pushing it to PS, we execute it.
|
pushing it to PS, we execute it.
|
||||||
|
|
||||||
5: switch. Same as alias, but with an added indirection.
|
5: ialias. Same as alias, but with an added indirection.
|
||||||
|
|
||||||
# System variables
|
# System variables
|
||||||
|
|
||||||
|
@ -52,7 +52,7 @@ Interpreter output is unbuffered and only has EMIT. This
|
|||||||
word can also be overriden, mostly as a companion to the
|
word can also be overriden, mostly as a companion to the
|
||||||
raison d'etre of your KEY override.
|
raison d'etre of your KEY override.
|
||||||
|
|
||||||
# Aliases and Switches
|
# Aliases
|
||||||
|
|
||||||
A common pattern in Forth is to add an indirection layer with
|
A common pattern in Forth is to add an indirection layer with
|
||||||
a pointer word. For example, if you have a word "FOO" for
|
a pointer word. For example, if you have a word "FOO" for
|
||||||
@ -65,7 +65,7 @@ verbose, which make us want to avoid this pattern for words
|
|||||||
that are often used.
|
that are often used.
|
||||||
|
|
||||||
For this purpose, Collapse OS has two special word types:
|
For this purpose, Collapse OS has two special word types:
|
||||||
alias and switches.
|
alias and ialiases (indirect alias).
|
||||||
|
|
||||||
An alias is a variable that contains a pointer to another word.
|
An alias is a variable that contains a pointer to another word.
|
||||||
When invoked, we invoke the specified pointer with minimal over-
|
When invoked, we invoke the specified pointer with minimal over-
|
||||||
@ -74,18 +74,18 @@ with "' _FOO :* FOO". Invoking FOO will then invoke "_FOO". You
|
|||||||
can change the alias' pointer with "*!" like this:
|
can change the alias' pointer with "*!" like this:
|
||||||
"' BAR ' FOO *!". FOO now invokes BAR.
|
"' BAR ' FOO *!". FOO now invokes BAR.
|
||||||
|
|
||||||
A switch is like an alias, but with a second level of indi-
|
A ialias is like an alias, but with a second level of indi-
|
||||||
rection. The variable points to a cell pointing to our word.
|
rection. The variable points to a cell pointing to our word.
|
||||||
It works like an alias, except you have to use ":**" and "**!".
|
It works like an alias, except you have to use ":**" and "**!".
|
||||||
Switches are used by core code which point to hardcoded
|
Ialiases are used by core code which point to hardcoded
|
||||||
addresses in RAM (because the core code is designed to run from
|
addresses in RAM (because the core code is designed to run from
|
||||||
ROM, we can't have regular variables). You are unlikely to
|
ROM, we can't have regular variables). You are unlikely to
|
||||||
need switches in regular code.
|
need ialiases in regular code.
|
||||||
|
|
||||||
# Addressed devices
|
# Addressed devices
|
||||||
|
|
||||||
A@, A! and A, are the indirect versions of C@, C! and C,. They
|
A@, A! and A, are the indirect versions of C@, C! and C,. They
|
||||||
are switch words and initially point to C@, C! and C,.
|
are ialias words and initially point to C@, C! and C,.
|
||||||
|
|
||||||
Addressed device words can be useful to "pipe" processing to
|
Addressed device words can be useful to "pipe" processing to
|
||||||
places outside of regular memory.
|
places outside of regular memory.
|
||||||
|
Loading…
Reference in New Issue
Block a user