705d68deec
With KEY and EMIT being switch words, most of the high layer can be defined before drivers. In addition to this change, I've compacted core blocks which were becoming quite sparse.
16 lines
480 B
Plaintext
16 lines
480 B
Plaintext
( returns negative value on error )
|
|
: _ ( c -- n )
|
|
DUP '0' '1' =><= IF '0' - EXIT THEN
|
|
DROP -1 ( bad )
|
|
;
|
|
: _pb ( a -- n f, parse binary )
|
|
( '0': ASCII 0x30 'b': 0x62 0x6230 )
|
|
DUP 1+ @ 0x6230 = NOT IF 0 EXIT THEN ( a 0 )
|
|
( We have "0b" prefix )
|
|
DUP C@ ( a len )
|
|
0 SWAP 1+ ( len+1 ) 3 DO ( a r )
|
|
OVER I + C@ ( a r c ) _ ( a r n )
|
|
DUP 0< IF 2DROP 0 UNLOOP EXIT THEN
|
|
SWAP 1 LSHIFT + ( a r*2+n ) LOOP
|
|
NIP 1 ;
|