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
|
3 Usage 30 Dictionary
|
||||||
70 Implementation notes 100 Block editor
|
70 Implementation notes 100 Block editor
|
||||||
120 Linker 140 Addressed devices
|
120 Linker 140 Addressed devices
|
||||||
|
150 Extra words
|
||||||
200 Z80 assembler 260 Cross compilation
|
200 Z80 assembler 260 Cross compilation
|
||||||
280 Z80 boot code 350 ACIA driver
|
280 Z80 boot code 350 ACIA driver
|
||||||
370 SD Card driver 390 Inner core
|
370 SD Card driver 390 Inner core
|
||||||
|
3
blk/030
3
blk/030
@ -1,6 +1,7 @@
|
|||||||
Dictionary
|
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
|
31 Glossary 34 Symbols
|
||||||
37 Entry management 40 Defining words
|
37 Entry management 40 Defining words
|
||||||
|
4
blk/037
4
blk/037
@ -1,7 +1,7 @@
|
|||||||
Entry management
|
Entry management
|
||||||
|
|
||||||
(find) a -- a f Read at a and find it in dict. If found,
|
'? x -- a f Find x it in dict. If found, f=1 and
|
||||||
f=1 and a = wordref. If not found, f=0 and
|
a = wordref. If not found, f=0 and
|
||||||
a = string addr.
|
a = string addr.
|
||||||
' x -- a Push addr of word x to a. If not found,
|
' x -- a Push addr of word x to a. If not found,
|
||||||
aborts.
|
aborts.
|
||||||
|
2
blk/102
2
blk/102
@ -1,3 +1,4 @@
|
|||||||
|
152 LOAD ( extras )
|
||||||
103 105 LOADR
|
103 105 LOADR
|
||||||
|
|
||||||
: BROWSE
|
: BROWSE
|
||||||
@ -13,4 +14,3 @@
|
|||||||
;
|
;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
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
|
; IMMEDIATE
|
||||||
: ENDOF [COMPILE] ELSE ; 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 ;
|
: LITS 34 , SCPY ;
|
||||||
: LIT< WORD LITS ; IMMEDIATE
|
: LIT< WORD LITS ; IMMEDIATE
|
||||||
: LITA 36 , , ;
|
: LITA 36 , , ;
|
||||||
|
: '? WORD (find) ;
|
||||||
: '
|
: '
|
||||||
WORD (find) (?br) [ 4 , ] EXIT
|
'? (?br) [ 4 , ] EXIT
|
||||||
LIT< (wnf) (find) DROP EXECUTE
|
LIT< (wnf) (find) DROP EXECUTE
|
||||||
;
|
;
|
||||||
: ['] ' LITA ; IMMEDIATE
|
: ['] ' LITA ; IMMEDIATE
|
||||||
|
|
||||||
|
5
blk/434
5
blk/434
@ -6,10 +6,5 @@
|
|||||||
LOOP
|
LOOP
|
||||||
2DROP
|
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! ;
|
: DELW 1- 0 SWAP C! ;
|
||||||
: PREV 3 - DUP @ - ;
|
: PREV 3 - DUP @ - ;
|
||||||
|
3
blk/435
3
blk/435
@ -11,6 +11,3 @@
|
|||||||
WORD( HERE ! ( w )
|
WORD( HERE ! ( w )
|
||||||
PREV CURRENT !
|
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 -- )
|
( b1 b2 -- )
|
||||||
: LOADR 1+ SWAP DO I DUP . CRLF LOAD LOOP ;
|
: 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