add a d:stack field to hold a pointer to a stack comment for a word (currently unused)

FossilOrigin-Name: 638db3d5baf3d12cf5686941e23d726c3dc3e78837ac08f1ce897e82303a1245
This commit is contained in:
crc 2024-09-09 11:50:15 +00:00
parent 5c52887aa8
commit 9281b1b737
8 changed files with 1155 additions and 1032 deletions

View file

@ -34,6 +34,7 @@
at `TempStringMax`
- `s:temp` now truncates strings longer than `TempStringMax`
- `s:filter` now truncates strings longer than `TempStringMax`
- added new `d:stack` field for storing a stack comment
- library

View file

@ -1,3 +1,3 @@
~~~
#1 'BUILD const
#2 'BUILD const
~~~

View file

@ -698,6 +698,7 @@ below.
| class | link to the class handler function | d:class |
| source | source identifier | d:source |
| hash | hash of the word name | d:hash |
| source | pointer to stack comment | d:stack |
| name | zero terminated string | d:name |
The initial dictionary is constructed at the end of this file.
@ -709,6 +710,7 @@ It'll take a form like this:
r class:primitive
r source-file
d 0
d 0
s dup
: 0001
@ -717,6 +719,7 @@ It'll take a form like this:
r class:primitive
r source-file
d 0
d 0
s drop
: 0002
@ -724,6 +727,7 @@ It'll take a form like this:
r _swap
r class:primitive
d 0
d 0
s swap
Each entry starts with a pointer to the prior entry (with a
@ -762,9 +766,13 @@ d 3
i liadre..
d 4
: d:name
: d:stack
i liadre..
d 5
: d:name
i liadre..
d 6
~~~
A traditional Forth has `create` to make a new dictionary entry
@ -799,6 +807,9 @@ r comma
i lilica..
d 0
r comma
i lilica..
d 0
r comma
i lica....
r comma:string
i polist..
@ -1550,6 +1561,7 @@ r _dup
r class:primitive
r source-file
d 0
d 0
s dup
: 0001
r 0000
@ -1557,6 +1569,7 @@ r _drop
r class:primitive
r source-file
d 0
d 0
s drop
: 0002
r 0001
@ -1564,6 +1577,7 @@ r _swap
r class:primitive
r source-file
d 0
d 0
s swap
: 0003
r 0002
@ -1571,6 +1585,7 @@ r _call
r class:primitive
r source-file
d 0
d 0
s call
: 0004
r 0003
@ -1578,6 +1593,7 @@ r _eq
r class:primitive
r source-file
d 0
d 0
s eq?
: 0005
r 0004
@ -1585,6 +1601,7 @@ r _neq
r class:primitive
r source-file
d 0
d 0
s -eq?
: 0006
r 0005
@ -1592,6 +1609,7 @@ r _lt
r class:primitive
r source-file
d 0
d 0
s lt?
: 0007
r 0006
@ -1599,6 +1617,7 @@ r _gt
r class:primitive
r source-file
d 0
d 0
s gt?
: 0008
r 0007
@ -1606,6 +1625,7 @@ r _fetch
r class:primitive
r source-file
d 0
d 0
s fetch
: 0009
r 0008
@ -1613,6 +1633,7 @@ r _store
r class:primitive
r source-file
d 0
d 0
s store
: 0010
r 0009
@ -1620,6 +1641,7 @@ r _add
r class:primitive
r source-file
d 0
d 0
s +
: 0011
r 0010
@ -1627,6 +1649,7 @@ r _sub
r class:primitive
r source-file
d 0
d 0
s -
: 0012
r 0011
@ -1634,6 +1657,7 @@ r _mul
r class:primitive
r source-file
d 0
d 0
s *
: 0013
r 0012
@ -1641,6 +1665,7 @@ r _divmod
r class:primitive
r source-file
d 0
d 0
s /mod
: 0014
r 0013
@ -1648,6 +1673,7 @@ r _and
r class:primitive
r source-file
d 0
d 0
s and
: 0015
r 0014
@ -1655,6 +1681,7 @@ r _or
r class:primitive
r source-file
d 0
d 0
s or
: 0016
r 0015
@ -1662,6 +1689,7 @@ r _xor
r class:primitive
r source-file
d 0
d 0
s xor
: 0017
r 0016
@ -1669,6 +1697,7 @@ r _shift
r class:primitive
r source-file
d 0
d 0
s shift
: 0018
r 0017
@ -1676,6 +1705,7 @@ r push
r class:macro
r source-file
d 0
d 0
s push
: 0019
r 0018
@ -1683,6 +1713,7 @@ r pop
r class:macro
r source-file
d 0
d 0
s pop
: 0020
r 0019
@ -1690,6 +1721,7 @@ r 0;
r class:macro
r source-file
d 0
d 0
s 0;
: 0021
r 0020
@ -1697,6 +1729,7 @@ r fetch-next
r class:word
r source-file
d 0
d 0
s fetch-next
: 0022
r 0021
@ -1704,6 +1737,7 @@ r store-next
r class:word
r source-file
d 0
d 0
s store-next
: 0023
r 0022
@ -1711,6 +1745,7 @@ r s:to-number
r class:word
r source-file
d 0
d 0
s s:to-number
: 0024
r 0023
@ -1718,6 +1753,7 @@ r s:eq
r class:word
r source-file
d 0
d 0
s s:eq?
: 0025
r 0024
@ -1725,6 +1761,7 @@ r s:length
r class:word
r source-file
d 0
d 0
s s:length
: 0026
r 0025
@ -1732,6 +1769,7 @@ r choose
r class:word
r source-file
d 0
d 0
s choose
: 0027
r 0026
@ -1739,6 +1777,7 @@ r if
r class:primitive
r source-file
d 0
d 0
s if
: 0028
r 0027
@ -1746,6 +1785,7 @@ r -if
r class:word
r source-file
d 0
d 0
s -if
: 0029
r 0028
@ -1753,6 +1793,7 @@ r sigil:(
r class:macro
r source-file
d 0
d 0
s sigil:(
: 0030
r 0029
@ -1760,6 +1801,7 @@ r Compiler
r class:data
r source-file
d 0
d 0
s Compiler
: 0031
r 0030
@ -1767,6 +1809,7 @@ r Heap
r class:data
r source-file
d 0
d 0
s Heap
: 0032
r 0031
@ -1774,6 +1817,7 @@ r comma
r class:word
r source-file
d 0
d 0
s ,
: 0033
r 0032
@ -1781,6 +1825,7 @@ r comma:string
r class:word
r source-file
d 0
d 0
s s,
: 0034
r 0033
@ -1788,6 +1833,7 @@ r ;
r class:macro
r source-file
d 0
d 0
s ;
: 0035
r 0034
@ -1795,6 +1841,7 @@ r [
r class:macro
r source-file
d 0
d 0
s [
: 0036
r 0035
@ -1802,6 +1849,7 @@ r ]
r class:macro
r source-file
d 0
d 0
s ]
: 0037
r 0036
@ -1809,6 +1857,7 @@ r Dictionary
r class:data
r source-file
d 0
d 0
s Dictionary
: 0038
r 0037
@ -1816,6 +1865,7 @@ r d:link
r class:word
r source-file
d 0
d 0
s d:link
: 0039
r 0038
@ -1823,6 +1873,7 @@ r d:xt
r class:word
r source-file
d 0
d 0
s d:xt
: 0040
r 0039
@ -1830,6 +1881,7 @@ r d:class
r class:word
r source-file
d 0
d 0
s d:class
: 0041
r 0040
@ -1837,6 +1889,7 @@ r d:name
r class:word
r source-file
d 0
d 0
s d:name
: 0042
r 0041
@ -1844,6 +1897,7 @@ r class:word
r class:word
r source-file
d 0
d 0
s class:word
: 0043
r 0042
@ -1851,6 +1905,7 @@ r class:macro
r class:word
r source-file
d 0
d 0
s class:macro
: 0044
r 0043
@ -1858,6 +1913,7 @@ r class:data
r class:word
r source-file
d 0
d 0
s class:data
: 0045
r 0044
@ -1865,6 +1921,7 @@ r d:add-header
r class:word
r source-file
d 0
d 0
s d:add-header
: 0046
r 0045
@ -1872,6 +1929,7 @@ r sigil:#
r class:macro
r source-file
d 0
d 0
s sigil:#
: 0047
r 0046
@ -1879,6 +1937,7 @@ r sigil::
r class:macro
r source-file
d 0
d 0
s sigil::
: 0048
r 0047
@ -1886,6 +1945,7 @@ r sigil:&
r class:macro
r source-file
d 0
d 0
s sigil:&
: 0049
r 0048
@ -1893,6 +1953,7 @@ r sigil:$
r class:macro
r source-file
d 0
d 0
s sigil:$
: 0050
r 0049
@ -1900,6 +1961,7 @@ r repeat
r class:macro
r source-file
d 0
d 0
s repeat
: 0051
r 0050
@ -1907,6 +1969,7 @@ r again
r class:macro
r source-file
d 0
d 0
s again
: 0052
r 0051
@ -1914,6 +1977,7 @@ r interpret
r class:word
r source-file
d 0
d 0
s interpret
: 0053
r 0052
@ -1921,6 +1985,7 @@ r d:lookup
r class:word
r source-file
d 0
d 0
s d:lookup
: 0054
r 0053
@ -1928,6 +1993,7 @@ r class:primitive
r class:word
r source-file
d 0
d 0
s class:primitive
: 0055
r 0054
@ -1935,6 +2001,7 @@ r Version
r class:data
r source-file
d 0
d 0
s Version
: 0056
r 0055
@ -1942,6 +2009,7 @@ r muri:i
r class:word
r source-file
d 0
d 0
s i
: 0057
r 0056
@ -1949,6 +2017,7 @@ r comma
r class:word
r source-file
d 0
d 0
s d
: 0058
r 0057
@ -1956,6 +2025,7 @@ r muri:r
r class:word
r source-file
d 0
d 0
s r
: 0059
r 0058
@ -1963,6 +2033,7 @@ r Base
r class:data
r source-file
d 0
d 0
s Base
: 0060
r 0059
@ -1970,6 +2041,7 @@ r pack
r class:word
r source-file
d 0
d 0
s pack
: 0061
r 0060
@ -1977,6 +2049,7 @@ r unpack
r class:word
r source-file
d 0
d 0
s unpack
: 0062
r 0061
@ -1984,6 +2057,7 @@ r d:source
r class:word
r source-file
d 0
d 0
s d:source
: 0063
r 0062
@ -1991,13 +2065,23 @@ r d:hash
r class:word
r source-file
d 0
d 0
s d:hash
: 9999
: 0064
r 0063
r d:stack
r class:word
r source-file
d 0
d 0
s d:stack
: 9999
r 0064
r err:notfound
r class:word
r source-file
d 0
d 0
s err:notfound
~~~

BIN
ngaImage

Binary file not shown.

View file

@ -35,7 +35,8 @@
#define D_OFFSET_CLASS 2
#define D_OFFSET_SOURCE 3
#define D_OFFSET_HASH 4
#define D_OFFSET_NAME 5
#define D_OFFSET_STACK 5
#define D_OFFSET_NAME 6
/* These settings can be overridden at compile time. */

File diff suppressed because it is too large Load diff

View file

@ -49,7 +49,8 @@
#define D_OFFSET_LINK 0 /* Dictionary Format Info. Update if */
#define D_OFFSET_XT 1 /* you change the dictionary fields. */
#define D_OFFSET_CLASS 2
#define D_OFFSET_NAME 5
#define D_OFFSET_STACK 5
#define D_OFFSET_NAME 6
#define NUM_DEVICES 1 /* Set the number of I/O devices */

View file

@ -17,7 +17,7 @@ const
D_OFFSET_LINK = 0;
D_OFFSET_XT = 1;
D_OFFSET_CLASS = 2;
D_OFFSET_NAME = 4;
D_OFFSET_NAME = 6;
TIB = 1471;
var