mirror of
https://github.com/hsoft/collapseos.git
synced 2025-01-12 10:08:06 +11:00
Remove cmp
Not worth the complexity and space.
This commit is contained in:
parent
0b3a328e65
commit
931c812394
4
blk/003
4
blk/003
@ -8,8 +8,8 @@ reference.
|
||||
Contents
|
||||
|
||||
4 DOES> 6 Compilation vs meta-comp.
|
||||
8 I/O 11 Chained comparisons
|
||||
14 Addressed devices 18 Signed-ness
|
||||
8 I/O 14 Addressed devices
|
||||
18 Signed-ness
|
||||
|
||||
|
||||
|
||||
|
16
blk/011
16
blk/011
@ -1,16 +0,0 @@
|
||||
Chained comparisons
|
||||
|
||||
The unit "cmp.fs" contains words to facilitate chained
|
||||
comparisons with a single reference number. This allows, for
|
||||
example, to easily express "a == b or a == c" or "a > b and a <
|
||||
c".
|
||||
|
||||
The way those chained comparison words work is that, unlike
|
||||
single comparison operators, they don't have a "n1 n2 -- f"
|
||||
signature, but rather a "n1 f n2 -- n1 f" signature. That is,
|
||||
each operator "carries over" the reference number in addition
|
||||
to the latest flag.
|
||||
|
||||
|
||||
|
||||
(cont.)
|
16
blk/012
16
blk/012
@ -1,16 +0,0 @@
|
||||
(cont.) You open a chain with "<>{" and you close a chain with
|
||||
"<>}". Then, in between those words, you can chain operators.
|
||||
For example, to check whether A == B or A == C, you would
|
||||
write:
|
||||
|
||||
A <>{ B &= C |= <>}
|
||||
|
||||
The first operator must be of the "&" type because the chain
|
||||
starts with its flag to true. For example, "<>{ <>}" yields
|
||||
true.
|
||||
|
||||
To check whether A is in between B and C inclusively, you would
|
||||
write:
|
||||
|
||||
A <>{ B 1 - &> C 1 + &< <>}
|
||||
|
2
blk/123
2
blk/123
@ -2,7 +2,7 @@
|
||||
: ASKIP ( a -- a+n )
|
||||
DUP @ ( a n )
|
||||
( ?br or br or NUMBER )
|
||||
DUP <>{ 0x67 &= 0x53 |= 0x20 |= 0x24 |= <>}
|
||||
DUP 0x67 = OVER 0x53 = OR OVER 0x20 = OR OVER 0x24 = OR
|
||||
IF DROP 4 + EXIT THEN
|
||||
( regular word )
|
||||
0x22 = NOT IF 2+ EXIT THEN
|
||||
|
4
blk/127
4
blk/127
@ -1,7 +1,7 @@
|
||||
: RLWORD ( ol o a1 a2 -- )
|
||||
SWAP DUP C@ ( ol o a2 a1 n )
|
||||
DUP <>{ 0x0e &= 0x2b |= <>} NOT IF ( unwind all args )
|
||||
2DROP 2DROP EXIT THEN
|
||||
DUP 0x0e = OVER 0x2b = OR NOT IF
|
||||
( unwind all args ) 2DROP 2DROP EXIT THEN
|
||||
0x2b = IF 2+ THEN ( ol o a2 a1 )
|
||||
1+ ( ol o a2 a1+1 )
|
||||
BEGIN ( ol o a2 a1 )
|
||||
|
10
blk/438
10
blk/438
@ -1,13 +1,3 @@
|
||||
( Words useful for complex comparison operations )
|
||||
|
||||
: >= < NOT ;
|
||||
: <= > NOT ;
|
||||
: 0>= 0< NOT ;
|
||||
|
||||
( n1 -- n1 true )
|
||||
: <>{ 1 ;
|
||||
|
||||
( n1 f -- f )
|
||||
: <>} SWAP DROP ;
|
||||
|
||||
|
||||
|
14
blk/439
14
blk/439
@ -1,15 +1 @@
|
||||
|
||||
: _|&
|
||||
( n1 n2 cell )
|
||||
>R >R DUP R> R> ( n1 n1 n2 cell )
|
||||
@ EXECUTE ( n1 f )
|
||||
;
|
||||
|
||||
( n1 f n2 -- n1 f )
|
||||
: _|
|
||||
CREATE , DOES>
|
||||
( n1 f n2 cell )
|
||||
ROT IF 2DROP 1 EXIT THEN ( n1 true )
|
||||
_|&
|
||||
;
|
||||
|
||||
|
15
blk/440
15
blk/440
@ -1,15 +0,0 @@
|
||||
: _&
|
||||
CREATE , DOES>
|
||||
( n1 f n2 cell )
|
||||
ROT NOT IF 2DROP 0 EXIT THEN ( n1 true )
|
||||
_|&
|
||||
;
|
||||
|
||||
( All words below have this signature:
|
||||
n1 f n2 -- n1 f )
|
||||
' = _| |=
|
||||
' = _& &=
|
||||
' > _| |>
|
||||
' > _& &>
|
||||
' < _| |<
|
||||
' < _& &<
|
2
blk/461
2
blk/461
@ -8,7 +8,7 @@
|
||||
DROP
|
||||
8 0 DO
|
||||
C@+
|
||||
DUP <>{ 0x20 &< 0x7e |> <>}
|
||||
DUP 0x20 < OVER 0x7e > OR
|
||||
IF DROP '.' THEN
|
||||
EMIT
|
||||
LOOP
|
||||
|
BIN
emul/forth.bin
BIN
emul/forth.bin
Binary file not shown.
@ -23,7 +23,7 @@ H@ 256 /MOD 2 PC! 2 PC!
|
||||
(entry) _
|
||||
( Update LATEST )
|
||||
PC ORG @ 8 + !
|
||||
422 441 XPACKR ( core cmp )
|
||||
422 441 XPACKR ( core )
|
||||
446 452 XPACKR ( parse )
|
||||
358 360 XPACKR ( acia.fs )
|
||||
442 445 XPACKR ( print )
|
||||
|
Loading…
Reference in New Issue
Block a user