Move adev to core
It's small enough to be worth it.
This commit is contained in:
parent
bb190f9665
commit
6bff03a48b
3
blk/001
3
blk/001
@ -2,8 +2,7 @@ MASTER INDEX
|
||||
|
||||
3 Usage 30 Dictionary
|
||||
70 Implementation notes 100 Block editor
|
||||
120 Linker 140 Addressed devices
|
||||
150 Extra words
|
||||
120 Linker 150 Extra words
|
||||
200 Z80 assembler 260 Cross compilation
|
||||
280 Z80 boot code 350 Core words
|
||||
410 PS/2 keyboard subsystem 420 Bootstrap guide
|
||||
|
1
blk/003
1
blk/003
@ -14,3 +14,4 @@ Contents
|
||||
8 Interpreter I/O 11 Signed-ness
|
||||
14 Addressed devices 17 DOES>
|
||||
18 Disk blocks 21 How blocks are organized
|
||||
22 Addressed devices
|
||||
|
6
blk/022
Normal file
6
blk/022
Normal file
@ -0,0 +1,6 @@
|
||||
Addressed devices
|
||||
|
||||
A@ and A! are the indirect versions of C@ and C!. Their target
|
||||
word is controlled through A@* and A!* and by default point to
|
||||
C@ and C*. There is also a AMOVE word that is the same as MOVE
|
||||
but using A@ and A!.
|
18
blk/081
18
blk/081
@ -1,13 +1,13 @@
|
||||
RAMSTART FUTURE USES +3c BLK(*
|
||||
+02 CURRENT +3e FUTURE USES
|
||||
+04 HERE
|
||||
+06 C<? +51 CURRENTPTR
|
||||
+08 C<* override +53 (emit) override
|
||||
+0a NLPTR +55 (key) override
|
||||
+0c C<* +57 FUTURE USES
|
||||
+0e WORDBUF
|
||||
+2e BOOT C< PTR +5d adev's variables
|
||||
+30 IN> +5f FUTURE USES
|
||||
+02 CURRENT +3e A@*
|
||||
+04 HERE +40 A!*
|
||||
+06 C<? +42 FUTURE USES
|
||||
+08 C<* override +51 CURRENTPTR
|
||||
+0a NLPTR +53 (emit) override
|
||||
+0c C<* +55 (key) override
|
||||
+0e WORDBUF +57 FUTURE USES
|
||||
+2e BOOT C< PTR
|
||||
+30 IN>
|
||||
+32 IN(* +70 DRIVERS
|
||||
+34 BLK@* +80 RAMEND
|
||||
+36 BLK!*
|
||||
|
10
blk/140
10
blk/140
@ -1,10 +0,0 @@
|
||||
Addressed devices
|
||||
|
||||
Abstractions to read and write to devices that allow addressed
|
||||
access. At all times, we have one active "fetch" device and
|
||||
one active "store" device, A@ and A!.
|
||||
|
||||
Those words have the same signature as C@ and C!, and in fact,
|
||||
initially default to proxy of those words.
|
||||
|
||||
Load with "142 LOAD"
|
15
blk/143
15
blk/143
@ -1,15 +0,0 @@
|
||||
: ADEVMEM+ 0x5d RAM+ @ + ;
|
||||
: A@* 0 ADEVMEM+ ;
|
||||
: A!* 2 ADEVMEM+ ;
|
||||
|
||||
: ADEV$
|
||||
H@ 0x5d RAM+ !
|
||||
4 ALLOT
|
||||
['] C@ A@* !
|
||||
['] C! A!* !
|
||||
;
|
||||
|
||||
: A@ A@* @ EXECUTE ;
|
||||
: A! A!* @ EXECUTE ;
|
||||
|
||||
|
11
blk/144
11
blk/144
@ -1,11 +0,0 @@
|
||||
( Same as MOVE, but with A@ and A! )
|
||||
( src dst u -- )
|
||||
: AMOVE
|
||||
( u ) 0 DO
|
||||
SWAP DUP I + A@ ( dst src x )
|
||||
ROT TUCK I + ( src dst x dst )
|
||||
A! ( src dst )
|
||||
LOOP
|
||||
2DROP
|
||||
;
|
||||
|
10
blk/394
10
blk/394
@ -2,3 +2,13 @@
|
||||
( b1 b2 -- )
|
||||
: LOADR 1+ SWAP DO I DUP . NL LOAD LOOP ;
|
||||
: LOADR+ BLK> @ + SWAP BLK> @ + SWAP LOADR ;
|
||||
( Now, adev stuff )
|
||||
: A@* 0x3e RAM+ ; : A@ A@* @ EXECUTE ;
|
||||
: A!* 0x40 RAM+ ; : A! A!* @ EXECUTE ;
|
||||
( src dst u -- )
|
||||
: AMOVE
|
||||
( u ) 0 DO
|
||||
SWAP DUP I + A@ ( dst src x )
|
||||
ROT TUCK I + ( src dst x dst )
|
||||
A! ( src dst )
|
||||
LOOP 2DROP ;
|
||||
|
1
blk/396
1
blk/396
@ -8,6 +8,7 @@
|
||||
0 0x0a RAM+ ! ( NLPTR )
|
||||
( 0c == C<* )
|
||||
['] (boot<) 0x0c RAM+ !
|
||||
['] C@ A@* ! ['] C! A!* !
|
||||
( boot< always has a char waiting. 06 == C<?* )
|
||||
1 0x06 RAM+ ! INTERPRET
|
||||
RDLN$ LIT< _sys [entry]
|
||||
|
BIN
emul/forth.bin
BIN
emul/forth.bin
Binary file not shown.
Loading…
Reference in New Issue
Block a user