mirror of
https://github.com/hsoft/collapseos.git
synced 2024-11-26 19:38:06 +11:00
Compare commits
2 Commits
244776a7eb
...
06a4674317
Author | SHA1 | Date | |
---|---|---|---|
|
06a4674317 | ||
|
a476773813 |
4
blk/050
4
blk/050
@ -4,6 +4,8 @@ Memory
|
|||||||
! n a -- Store n in address a
|
! n a -- Store n in address a
|
||||||
? a -- Print value of addr a
|
? a -- Print value of addr a
|
||||||
+! n a -- Increase value of addr a by n
|
+! n a -- Increase value of addr a by n
|
||||||
|
BIT@ b a -- f Get bit b from addr a.
|
||||||
|
BIT! f b a -- Set bit b to f in addr a.
|
||||||
C@ a -- c Set c to byte at address a
|
C@ a -- c Set c to byte at address a
|
||||||
C@+ a -- a+1 c Fetch c from a and inc a.
|
C@+ a -- a+1 c Fetch c from a and inc a.
|
||||||
C@- a -- a-1 c Fetch c from a and dec a.
|
C@- a -- a-1 c Fetch c from a and dec a.
|
||||||
@ -11,6 +13,4 @@ C! c a -- Store byte c in address a
|
|||||||
C!+ c a -- a+1 Store byte c in a and inc a.
|
C!+ c a -- a+1 Store byte c in a and inc a.
|
||||||
C!- c a -- a-1 Store byte c in a and dec a.
|
C!- c a -- a-1 Store byte c in a and dec a.
|
||||||
CURRENT -- a Set a to wordref of last added entry.
|
CURRENT -- a Set a to wordref of last added entry.
|
||||||
CURRENT* -- a A pointer to active CURRENT*. Useful
|
|
||||||
when we have multiple active dicts.
|
|
||||||
(cont.)
|
(cont.)
|
||||||
|
2
blk/051
2
blk/051
@ -1,3 +1,5 @@
|
|||||||
|
CURRENT* -- a A pointer to active CURRENT*. Useful
|
||||||
|
when we have multiple active dicts.
|
||||||
FILL a n b -- Fill n bytes at addr a with val b.
|
FILL a n b -- Fill n bytes at addr a with val b.
|
||||||
HERE -- a Push HERE's address
|
HERE -- a Push HERE's address
|
||||||
H@ -- a HERE @
|
H@ -- a HERE @
|
||||||
|
10
blk/404
10
blk/404
@ -4,9 +4,11 @@
|
|||||||
DUP NOT IF DROP 0x0c RAM+ @ THEN ( 0c == C<* )
|
DUP NOT IF DROP 0x0c RAM+ @ THEN ( 0c == C<* )
|
||||||
EXECUTE
|
EXECUTE
|
||||||
;
|
;
|
||||||
|
|
||||||
: , HERE @ ! HERE @ 2+ HERE ! ;
|
: , HERE @ ! HERE @ 2+ HERE ! ;
|
||||||
|
|
||||||
: C, HERE @ C! HERE @ 1+ HERE ! ;
|
: C, HERE @ C! HERE @ 1+ HERE ! ;
|
||||||
|
: BIT@ ( bit addr -- f ) C@ SWAP RSHIFT 0x01 AND ;
|
||||||
|
: BIT! ( f bit addr -- )
|
||||||
|
SWAP 0x01 SWAP LSHIFT ROT ( addr mask f )
|
||||||
|
IF OVER C@ OR
|
||||||
|
ELSE 0xff XOR OVER C@ AND THEN ( addr flg )
|
||||||
|
SWAP C! ;
|
||||||
|
4
blk/568
4
blk/568
@ -7,3 +7,7 @@ CREATE _atbl
|
|||||||
0x20 C, 'Y' C, 'T' C, 'O' C, 'J' C, 'E' C, 'B' C, 0 C,
|
0x20 C, 'Y' C, 'T' C, 'O' C, 'J' C, 'E' C, 'B' C, 0 C,
|
||||||
0 C, 'X' C, 'S' C, 'N' C, 'I' C, 'D' C, 'A' C, 0x80 C,
|
0 C, 'X' C, 'S' C, 'N' C, 'I' C, 'D' C, 'A' C, 0x80 C,
|
||||||
0 C, 0 C, 0 C, 0 C, 0 C, 0x81 ( 2nd ) C, 0 C, 0x7f C,
|
0 C, 0 C, 0 C, 0 C, 0 C, 0x81 ( 2nd ) C, 0 C, 0x7f C,
|
||||||
|
: _2nd@ 0 [ KBD_MEM LITN ] BIT@ ;
|
||||||
|
: _2nd! 0 [ KBD_MEM LITN ] BIT! ;
|
||||||
|
: _alock@ 1 [ KBD_MEM LITN ] BIT@ ;
|
||||||
|
: _alock^ _alock@ NOT 1 [ KBD_MEM LITN ] BIT! ;
|
||||||
|
14
blk/570
14
blk/570
@ -1,6 +1,12 @@
|
|||||||
|
: _tbl^ ( swap input tbl )
|
||||||
|
_atbl = IF _dtbl ELSE _atbl THEN ;
|
||||||
: (key)
|
: (key)
|
||||||
_dtbl 0 ( dummy ) BEGIN ( tbl 0 )
|
0 _2nd! 0 ( lastchr ) BEGIN
|
||||||
DROP DUP ( tbl ) _gti + C@
|
_alock@ IF _atbl ELSE _dtbl THEN
|
||||||
DUP 0x80 = IF ( alpha ) 2DROP _atbl 0 THEN
|
OVER 0x80 ( alpha ) =
|
||||||
DUP UNTIL ( tbl c -- loop if null ) SWAP DROP
|
IF _tbl^ _2nd@ IF _alock^ THEN THEN
|
||||||
|
SWAP 0x81 = _2nd!
|
||||||
|
_gti + C@
|
||||||
|
DUP 0 0x80 >< UNTIL ( loop if not in range )
|
||||||
_wait ;
|
_wait ;
|
||||||
|
: KBD$ 0 [ KBD_MEM LITN ] C! ;
|
||||||
|
BIN
emul/forth.bin
BIN
emul/forth.bin
Binary file not shown.
@ -1,6 +1,7 @@
|
|||||||
0x8000 CONSTANT RAMSTART
|
0x8000 CONSTANT RAMSTART
|
||||||
0xb000 CONSTANT RS_ADDR
|
0xb000 CONSTANT RS_ADDR
|
||||||
RAMSTART 0x70 + CONSTANT LCD_MEM
|
RAMSTART 0x70 + CONSTANT LCD_MEM
|
||||||
|
RAMSTART 0x72 + CONSTANT KBD_MEM
|
||||||
0x01 CONSTANT KBD_PORT
|
0x01 CONSTANT KBD_PORT
|
||||||
212 LOAD ( z80 assembler )
|
212 LOAD ( z80 assembler )
|
||||||
262 LOAD ( xcomp )
|
262 LOAD ( xcomp )
|
||||||
@ -25,6 +26,6 @@ PC ORG @ 8 + !
|
|||||||
422 437 XPACKR ( core )
|
422 437 XPACKR ( core )
|
||||||
558 560 XPACKR ( LCD high )
|
558 560 XPACKR ( LCD high )
|
||||||
438 451 XPACKR ( print fmt readln )
|
438 451 XPACKR ( print fmt readln )
|
||||||
," : _ LCD$ (ok) RDLN$ ; _ "
|
," : _ LCD$ KBD$ (ok) RDLN$ ; _ "
|
||||||
ORG @ 256 /MOD 2 PC! 2 PC!
|
ORG @ 256 /MOD 2 PC! 2 PC!
|
||||||
H@ 256 /MOD 2 PC! 2 PC!
|
H@ 256 /MOD 2 PC! 2 PC!
|
||||||
|
Loading…
Reference in New Issue
Block a user