Introduce the notion of Extra words
This commit is contained in:
parent
0044011f06
commit
f38de1c151
1
blk/001
1
blk/001
@ -3,6 +3,7 @@ MASTER INDEX
|
||||
3 Usage 30 Dictionary
|
||||
70 Implementation notes 100 Block editor
|
||||
120 Linker 140 Addressed devices
|
||||
150 Extra words
|
||||
200 Z80 assembler 260 Cross compilation
|
||||
280 Z80 boot code 350 ACIA driver
|
||||
370 SD Card driver 390 Inner core
|
||||
|
3
blk/030
3
blk/030
@ -1,6 +1,7 @@
|
||||
Dictionary
|
||||
|
||||
Be sure to read usage guide (B3) first.
|
||||
List of words defined in Inner core (B390), Core words (B420)
|
||||
and Extra words (B150).
|
||||
|
||||
31 Glossary 34 Symbols
|
||||
37 Entry management 40 Defining words
|
||||
|
4
blk/037
4
blk/037
@ -1,7 +1,7 @@
|
||||
Entry management
|
||||
|
||||
(find) a -- a f Read at a and find it in dict. If found,
|
||||
f=1 and a = wordref. If not found, f=0 and
|
||||
'? x -- a f Find x it in dict. If found, f=1 and
|
||||
a = wordref. If not found, f=0 and
|
||||
a = string addr.
|
||||
' x -- a Push addr of word x to a. If not found,
|
||||
aborts.
|
||||
|
14
blk/150
Normal file
14
blk/150
Normal file
@ -0,0 +1,14 @@
|
||||
Extra words
|
||||
|
||||
The Core words (B420) section contains the absolute minimum
|
||||
needed to get a usable Forth interpreter with input buffer and
|
||||
disk blocks access running. The goal here is to minimize the
|
||||
binary size of a minimum Collapse OS install.
|
||||
|
||||
Extra words are words you will most likely want because they
|
||||
are generally useful. They are so useful that they are part
|
||||
of the Dictionary (B30).
|
||||
|
||||
Some programs need them, so they will automatically LOAD them.
|
||||
To that end, the loader is conditional: it aborts if extra
|
||||
words are already present. Load with "152 LOAD".
|
3
blk/152
Normal file
3
blk/152
Normal file
@ -0,0 +1,3 @@
|
||||
'? CASE NOT [IF]
|
||||
153 157 LOADR
|
||||
[THEN] DROP ( from '? )
|
@ -8,3 +8,4 @@
|
||||
; IMMEDIATE
|
||||
: ENDOF [COMPILE] ELSE ; IMMEDIATE
|
||||
|
||||
|
6
blk/155
Normal file
6
blk/155
Normal file
@ -0,0 +1,6 @@
|
||||
: FILL ( a n b -- )
|
||||
SWAP 2 PICK + ( a b a+n ) ROT ( b a+n a ) DO ( b )
|
||||
DUP I C!
|
||||
LOOP
|
||||
;
|
||||
|
4
blk/156
Normal file
4
blk/156
Normal file
@ -0,0 +1,4 @@
|
||||
: EMPTY
|
||||
LIT< _sys (find) NOT IF ABORT THEN
|
||||
DUP HERE ! CURRENT ! ;
|
||||
|
5
blk/157
Normal file
5
blk/157
Normal file
@ -0,0 +1,5 @@
|
||||
: WIPE BLK( 1024 0 FILL BLK!! ;
|
||||
|
||||
( src dst -- )
|
||||
: COPY SWAP BLK@ BLK> ! BLK! ;
|
||||
|
4
blk/422
4
blk/422
@ -8,9 +8,9 @@
|
||||
: LITS 34 , SCPY ;
|
||||
: LIT< WORD LITS ; IMMEDIATE
|
||||
: LITA 36 , , ;
|
||||
: '? WORD (find) ;
|
||||
: '
|
||||
WORD (find) (?br) [ 4 , ] EXIT
|
||||
'? (?br) [ 4 , ] EXIT
|
||||
LIT< (wnf) (find) DROP EXECUTE
|
||||
;
|
||||
: ['] ' LITA ; IMMEDIATE
|
||||
|
||||
|
5
blk/434
5
blk/434
@ -6,10 +6,5 @@
|
||||
LOOP
|
||||
2DROP
|
||||
;
|
||||
: FILL ( a n b -- )
|
||||
SWAP 2 PICK + ( a b a+n ) ROT ( b a+n a ) DO ( b )
|
||||
DUP I C!
|
||||
LOOP
|
||||
;
|
||||
: DELW 1- 0 SWAP C! ;
|
||||
: PREV 3 - DUP @ - ;
|
||||
|
3
blk/435
3
blk/435
@ -11,6 +11,3 @@
|
||||
WORD( HERE ! ( w )
|
||||
PREV CURRENT !
|
||||
;
|
||||
: EMPTY
|
||||
LIT< _sys (find) NOT IF ABORT THEN
|
||||
DUP HERE ! CURRENT ! ;
|
||||
|
5
blk/470
5
blk/470
@ -1,7 +1,2 @@
|
||||
( b1 b2 -- )
|
||||
: LOADR 1+ SWAP DO I DUP . CRLF LOAD LOOP ;
|
||||
|
||||
: WIPE BLK( 1024 0 FILL BLK!! ;
|
||||
|
||||
( src dst -- )
|
||||
: COPY SWAP BLK@ BLK> ! BLK! ;
|
||||
|
BIN
emul/forth.bin
BIN
emul/forth.bin
Binary file not shown.
Loading…
Reference in New Issue
Block a user