mirror of
https://github.com/hsoft/collapseos.git
synced 2025-02-17 17:36:02 +11:00
forth: Forth-ify "(parse*)"
This commit is contained in:
parent
f9d45f7f53
commit
a9cf861cfd
Binary file not shown.
@ -129,6 +129,8 @@ LIT:
|
|||||||
.dw CINPTR
|
.dw CINPTR
|
||||||
.dw SYSVNXT
|
.dw SYSVNXT
|
||||||
.dw FLAGS
|
.dw FLAGS
|
||||||
|
; 46
|
||||||
|
.dw PARSEPTR
|
||||||
|
|
||||||
; *** Code ***
|
; *** Code ***
|
||||||
forthMain:
|
forthMain:
|
||||||
@ -148,10 +150,6 @@ forthMain:
|
|||||||
ld (CURRENT), hl
|
ld (CURRENT), hl
|
||||||
ld hl, HERE_INITIAL
|
ld hl, HERE_INITIAL
|
||||||
ld (HERE), hl
|
ld (HERE), hl
|
||||||
; Set up PARSEPTR
|
|
||||||
ld hl, .parseName
|
|
||||||
call find
|
|
||||||
ld (PARSEPTR), de
|
|
||||||
; Set up SYSVNXT
|
; Set up SYSVNXT
|
||||||
ld hl, SYSVBUF
|
ld hl, SYSVBUF
|
||||||
ld (SYSVNXT), hl
|
ld (SYSVNXT), hl
|
||||||
@ -160,12 +158,10 @@ forthMain:
|
|||||||
push de
|
push de
|
||||||
jp EXECUTE+2
|
jp EXECUTE+2
|
||||||
|
|
||||||
.parseName:
|
|
||||||
.db "(parse)", 0
|
|
||||||
.bootName:
|
.bootName:
|
||||||
.db "BOOT", 0
|
.db "BOOT", 0
|
||||||
|
|
||||||
.fill 89
|
.fill 105
|
||||||
|
|
||||||
; STABLE ABI
|
; STABLE ABI
|
||||||
; Offset: 00cd
|
; Offset: 00cd
|
||||||
@ -814,17 +810,10 @@ CURRENT_:
|
|||||||
.dw sysvarWord
|
.dw sysvarWord
|
||||||
.dw CURRENT
|
.dw CURRENT
|
||||||
|
|
||||||
.db "(parse*)"
|
.fill 92
|
||||||
.dw $-CURRENT_
|
|
||||||
.db 8
|
|
||||||
PARSEPTR_:
|
|
||||||
.dw sysvarWord
|
|
||||||
.dw PARSEPTR
|
|
||||||
|
|
||||||
.fill 77
|
|
||||||
|
|
||||||
.db "_bend"
|
.db "_bend"
|
||||||
.dw $-PARSEPTR_
|
.dw $-CURRENT_
|
||||||
.db 5
|
.db 5
|
||||||
; Offset: 0647
|
; Offset: 0647
|
||||||
.out $
|
.out $
|
||||||
|
@ -60,6 +60,11 @@
|
|||||||
[ JTBL 44 + @ LITN ]
|
[ JTBL 44 + @ LITN ]
|
||||||
;
|
;
|
||||||
|
|
||||||
|
: (parse*)
|
||||||
|
( JTBL+46 == PARSEPTR )
|
||||||
|
[ JTBL 46 + @ LITN ]
|
||||||
|
;
|
||||||
|
|
||||||
: QUIT
|
: QUIT
|
||||||
0 _c FLAGS _c ! _c (resRS)
|
0 _c FLAGS _c ! _c (resRS)
|
||||||
LIT< INTERPRET (find) _c DROP EXECUTE
|
LIT< INTERPRET (find) _c DROP EXECUTE
|
||||||
@ -154,12 +159,13 @@
|
|||||||
EXECUTE
|
EXECUTE
|
||||||
0 _c FLAGS _c !
|
0 _c FLAGS _c !
|
||||||
ELSE
|
ELSE
|
||||||
(parse*) _c @ EXECUTE
|
_c (parse*) _c @ EXECUTE
|
||||||
THEN
|
THEN
|
||||||
AGAIN
|
AGAIN
|
||||||
;
|
;
|
||||||
|
|
||||||
: BOOT
|
: BOOT
|
||||||
|
LIT< (parse) (find) _c DROP _c (parse*) _c !
|
||||||
LIT< (c<) (find) NOT IF LIT< KEY (find) _c DROP THEN
|
LIT< (c<) (find) NOT IF LIT< KEY (find) _c DROP THEN
|
||||||
( JTBL+40 == CINPTR )
|
( JTBL+40 == CINPTR )
|
||||||
[ JTBL 40 + @ LITN ] _c !
|
[ JTBL 40 + @ LITN ] _c !
|
||||||
@ -190,7 +196,7 @@
|
|||||||
( is word )
|
( is word )
|
||||||
IF _c DUP _c IMMED? IF EXECUTE ELSE , THEN
|
IF _c DUP _c IMMED? IF EXECUTE ELSE , THEN
|
||||||
( maybe number )
|
( maybe number )
|
||||||
ELSE (parse*) _c @ EXECUTE _c LITN THEN
|
ELSE _c (parse*) _c @ EXECUTE _c LITN THEN
|
||||||
AGAIN
|
AGAIN
|
||||||
; IMMEDIATE
|
; IMMEDIATE
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user