1 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
2 ;; UrForth level
1: self
-hosting
32-bit Forth compiler
4 ;; Copyright
(C
) 2020 Ketmar Dark
// Invisible Vector
6 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
9 parse
-name x
-tc
-xcfind
-must
11 parse
-name tc
-create
-header
-named tc
-smudge
13 ;; copy
"hidden" and
"immediate" flags
14 r
> tc
-cfa
->ffa tc
-ffa@
15 tc
-(wflag
-hidden
) tc
-(wflag
-immediate
) or and
>r
16 tc
-latest
-cfa tc
-cfa
->ffa
17 dup tc
-ffa@ tc
-(wflag
-hidden
) tc
-(wflag
-immediate
) or ~and r
> or
23 ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
25 parse
-name tc
-(variable
-header
-str
)
34 parse
-name tc
-(variable
-header
-str
)
40 ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
41 : (HIDDEN
) ( -- ) tc
-hidden
;
42 : (PUBLIC
) ( -- ) tc
-public
;
43 : (NORETURN
) ( -- ) tc
-noreturn
;
44 : (CODEBLOCK
) ( -- ) tc
-codeblock
;
45 : IMMEDIATE
( -- ) tc
-immediate
;
47 : (ARG
-NONE
) ( -- ) tc
-arg
-none
;
48 : (ARG
-BRANCH
) ( -- ) tc
-arg
-branch
;
49 : (ARG
-LIT
) ( -- ) tc
-arg
-lit
;
50 : (ARG
-C4STRZ
) ( -- ) tc
-arg
-c4strz
;
51 : (ARG
-CFA
) ( -- ) tc
-arg
-cfa
;
52 : (ARG
-CBLOCK
) ( -- ) tc
-arg
-cblock
;
53 : (ARG
-VOCID
) ( -- ) tc
-arg
-vocid
;
54 : (ARG
-C1STRZ
) ( -- ) tc
-arg
-c1strz
;
55 : (ARG
-U8
) ( -- ) tc
-arg
-u8
;
56 : (ARG
-S8
) ( -- ) tc
-arg
-s8
;
57 : (ARG
-U16
) ( -- ) tc
-arg
-u16
;
58 : (ARG
-S16
) ( -- ) tc
-arg
-s16
;
61 ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
62 : error
-table
-msg
," ( code -- ) \ msg"
63 ;; UrForth level
0 uses byte
for error code
, UrForth level
1 uses
4
65 34 parse dup tc
-n
-allot tc
->real swap move
66 0 tc
-c
, ;; terminating zero
for the string
69 : error
-table
-end ( -- )
75 ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;