version 1.18, 2007/12/31 17:34:58
|
version 1.20, 2010/05/12 20:13:33
|
Line 6
|
Line 6
|
|
|
\ Gforth is free software; you can redistribute it and/or |
\ Gforth is free software; you can redistribute it and/or |
\ modify it under the terms of the GNU General Public License |
\ modify it under the terms of the GNU General Public License |
\ as published by the Free Software Foundation; either version 2 |
\ as published by the Free Software Foundation, either version 3 |
\ of the License, or (at your option) any later version. |
\ of the License, or (at your option) any later version. |
|
|
\ This program is distributed in the hope that it will be useful, |
\ This program is distributed in the hope that it will be useful, |
Line 15
|
Line 15
|
\ GNU General Public License for more details. |
\ GNU General Public License for more details. |
|
|
\ You should have received a copy of the GNU General Public License |
\ You should have received a copy of the GNU General Public License |
\ along with this program; if not, write to the Free Software |
\ along with this program. If not, see http://www.gnu.org/licenses/. |
\ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111, USA. |
|
|
|
s" address-unit-bits" environment? drop constant bits/au |
s" address-unit-bits" environment? drop constant bits/au |
7 constant dodoes-tag |
7 constant dodoes-tag |
Line 78 s" address-unit-bits" environment? drop
|
Line 77 s" address-unit-bits" environment? drop
|
coffset 0<> cell1 coffset + cell2 = and |
coffset 0<> cell1 coffset + cell2 = and |
if |
if |
cell1 cbase - cell / { tag } |
cell1 cbase - cell / { tag } |
tag dodoes-tag = |
|
if |
|
\ make sure that the next cell will not be tagged |
|
\ !! can probably be optimized away with hybrid threading |
|
dbase negate image1 i 1+ th +! |
|
dbase doffset + negate image2 i 1+ th +! |
|
endif |
|
tag >tag $4000 xor file-id write-cell throw |
tag >tag $4000 xor file-id write-cell throw |
i reloc-bits set-bit |
i reloc-bits set-bit |
else |
else |
xoffset 0<> cell1 xoffset + cell2 = and |
xoffset 0<> cell1 xoffset + cell2 = and |
if |
if |
cell1 xbase - cell / { tag } |
cell1 xbase - cell / { tag } |
tag dodoes-tag = |
|
if |
|
\ make sure that the next cell will not be tagged |
|
\ !! can probably be optimized away with hybrid threading |
|
dbase negate image1 i 1+ th +! |
|
dbase doffset + negate image2 i 1+ th +! |
|
endif |
|
tag >tag file-id write-cell throw |
tag >tag file-id write-cell throw |
i reloc-bits set-bit |
i reloc-bits set-bit |
else |
else |