mirror of
https://github.com/hsoft/collapseos.git
synced 2025-02-17 18:06:02 +11:00
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
|
3 Usage 30 Dictionary
|
||||||
70 Implementation notes 100 Block editor
|
70 Implementation notes 100 Block editor
|
||||||
120 Linker 140 Addressed devices
|
120 Linker 150 Extra words
|
||||||
150 Extra words
|
|
||||||
200 Z80 assembler 260 Cross compilation
|
200 Z80 assembler 260 Cross compilation
|
||||||
280 Z80 boot code 350 Core words
|
280 Z80 boot code 350 Core words
|
||||||
410 PS/2 keyboard subsystem 420 Bootstrap guide
|
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
|
8 Interpreter I/O 11 Signed-ness
|
||||||
14 Addressed devices 17 DOES>
|
14 Addressed devices 17 DOES>
|
||||||
18 Disk blocks 21 How blocks are organized
|
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(*
|
RAMSTART FUTURE USES +3c BLK(*
|
||||||
+02 CURRENT +3e FUTURE USES
|
+02 CURRENT +3e A@*
|
||||||
+04 HERE
|
+04 HERE +40 A!*
|
||||||
+06 C<? +51 CURRENTPTR
|
+06 C<? +42 FUTURE USES
|
||||||
+08 C<* override +53 (emit) override
|
+08 C<* override +51 CURRENTPTR
|
||||||
+0a NLPTR +55 (key) override
|
+0a NLPTR +53 (emit) override
|
||||||
+0c C<* +57 FUTURE USES
|
+0c C<* +55 (key) override
|
||||||
+0e WORDBUF
|
+0e WORDBUF +57 FUTURE USES
|
||||||
+2e BOOT C< PTR +5d adev's variables
|
+2e BOOT C< PTR
|
||||||
+30 IN> +5f FUTURE USES
|
+30 IN>
|
||||||
+32 IN(* +70 DRIVERS
|
+32 IN(* +70 DRIVERS
|
||||||
+34 BLK@* +80 RAMEND
|
+34 BLK@* +80 RAMEND
|
||||||
+36 BLK!*
|
+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 -- )
|
( b1 b2 -- )
|
||||||
: LOADR 1+ SWAP DO I DUP . NL LOAD LOOP ;
|
: LOADR 1+ SWAP DO I DUP . NL LOAD LOOP ;
|
||||||
: LOADR+ BLK> @ + SWAP BLK> @ + SWAP LOADR ;
|
: 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 )
|
0 0x0a RAM+ ! ( NLPTR )
|
||||||
( 0c == C<* )
|
( 0c == C<* )
|
||||||
['] (boot<) 0x0c RAM+ !
|
['] (boot<) 0x0c RAM+ !
|
||||||
|
['] C@ A@* ! ['] C! A!* !
|
||||||
( boot< always has a char waiting. 06 == C<?* )
|
( boot< always has a char waiting. 06 == C<?* )
|
||||||
1 0x06 RAM+ ! INTERPRET
|
1 0x06 RAM+ ! INTERPRET
|
||||||
RDLN$ LIT< _sys [entry]
|
RDLN$ LIT< _sys [entry]
|
||||||
|
BIN
emul/forth.bin
BIN
emul/forth.bin
Binary file not shown.
Loading…
Reference in New Issue
Block a user