Add word "LOAD"
This commit is contained in:
parent
a67101fb8b
commit
aec19e5c87
2
blk/001
2
blk/001
@ -1,4 +1,4 @@
|
|||||||
MASTER INDEX
|
MASTER INDEX
|
||||||
|
|
||||||
3 Usage 30 Dictionary
|
3 Usage 30 Dictionary
|
||||||
70 Implementation notes
|
70 Implementation notes 100 Block explorer
|
||||||
|
1
blk/064
1
blk/064
@ -3,3 +3,4 @@ Disk
|
|||||||
BLK> -- a Address of the current block variable.
|
BLK> -- a Address of the current block variable.
|
||||||
LIST n -- Prints the contents of the block n on screen in the
|
LIST n -- Prints the contents of the block n on screen in the
|
||||||
form of 16 lines of 64 columns.
|
form of 16 lines of 64 columns.
|
||||||
|
LOAD n -- Interprets Forth code from block n
|
||||||
|
10
blk/100
Normal file
10
blk/100
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
Block explorer
|
||||||
|
|
||||||
|
This is an application to conveniently browse the contents of
|
||||||
|
the disk blocks. You can launch it with "102 LOAD".
|
||||||
|
|
||||||
|
USAGE: When loaded, the Forth interpreter is replaced by the
|
||||||
|
explorer interpreter. Typing "Q" quits the program.
|
||||||
|
|
||||||
|
Typing a decimal number followed by space or return lists the
|
||||||
|
contents of that block.
|
Binary file not shown.
30
forth/blk.fs
30
forth/blk.fs
@ -7,11 +7,17 @@
|
|||||||
: BLK!* 2 BLKMEM+ ;
|
: BLK!* 2 BLKMEM+ ;
|
||||||
( Current blk pointer in ( )
|
( Current blk pointer in ( )
|
||||||
: BLK> 4 BLKMEM+ ;
|
: BLK> 4 BLKMEM+ ;
|
||||||
: BLK( 6 BLKMEM+ ;
|
( backup for CINPTR when LOADing )
|
||||||
|
: BLKC<* 6 BLKMEM+ ;
|
||||||
|
: BLK( 8 BLKMEM+ ;
|
||||||
|
|
||||||
: BLK$
|
: BLK$
|
||||||
H@ 0x57 RAM+ !
|
H@ 0x57 RAM+ !
|
||||||
1030 ALLOT
|
( 1024 for the block, 8 for variables )
|
||||||
|
1032 ALLOT
|
||||||
|
( LOAD detects end of block with ASCII EOT. This is why
|
||||||
|
we write it there. EOT == 0x04 )
|
||||||
|
4 C,
|
||||||
-1 BLK> !
|
-1 BLK> !
|
||||||
;
|
;
|
||||||
|
|
||||||
@ -30,3 +36,23 @@
|
|||||||
CRLF
|
CRLF
|
||||||
LOOP
|
LOOP
|
||||||
;
|
;
|
||||||
|
|
||||||
|
: _
|
||||||
|
(boot<)
|
||||||
|
DUP 4 = IF
|
||||||
|
DROP
|
||||||
|
( We're finished interpreting )
|
||||||
|
BLKC<* @ 0x0c RAM+ !
|
||||||
|
C<
|
||||||
|
THEN
|
||||||
|
;
|
||||||
|
|
||||||
|
: LOAD
|
||||||
|
BLK@
|
||||||
|
( 2e == BOOT C< PTR )
|
||||||
|
BLK( 0x2e RAM+ !
|
||||||
|
( Save current C< ptr )
|
||||||
|
0x0c RAM+ @ BLKC<* !
|
||||||
|
( 0c == CINPTR )
|
||||||
|
['] _ 0x0c RAM+ !
|
||||||
|
;
|
||||||
|
@ -178,7 +178,7 @@
|
|||||||
|
|
||||||
( system c< simply reads source from binary, starting at
|
( system c< simply reads source from binary, starting at
|
||||||
LATEST. Convenient way to bootstrap a new system. )
|
LATEST. Convenient way to bootstrap a new system. )
|
||||||
: (c<)
|
: (boot<)
|
||||||
( 2e == BOOT C< PTR )
|
( 2e == BOOT C< PTR )
|
||||||
0x2e RAM+ @ ( a )
|
0x2e RAM+ @ ( a )
|
||||||
DUP C@ ( a c )
|
DUP C@ ( a c )
|
||||||
@ -192,7 +192,7 @@
|
|||||||
( 2e == SYSTEM SCRATCHPAD )
|
( 2e == SYSTEM SCRATCHPAD )
|
||||||
CURRENT @ 0x2e RAM+ !
|
CURRENT @ 0x2e RAM+ !
|
||||||
( 0c == CINPTR )
|
( 0c == CINPTR )
|
||||||
LIT< (c<) (find) DROP 0x0c RAM+ !
|
LIT< (boot<) (find) DROP 0x0c RAM+ !
|
||||||
LIT< INIT (find)
|
LIT< INIT (find)
|
||||||
IF EXECUTE
|
IF EXECUTE
|
||||||
ELSE DROP INTERPRET THEN
|
ELSE DROP INTERPRET THEN
|
||||||
|
Loading…
Reference in New Issue
Block a user