Path: csiph.com!v102.xanadu-bbs.net!xanadu-bbs.net!feeder.erje.net!eu.feeder.erje.net!news.etla.org!aioe.org!.POSTED!not-for-mail From: "Rod Pemberton" Newsgroups: comp.lang.forth Subject: Re: quick review of References: NNTP-Posting-Host: CNsg4fVcCsvs3UaOgZtQCw.user.speranza.aioe.org Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii; format=flowed; delsp=yes Content-Transfer-Encoding: 7bit X-Complaints-To: abuse@aioe.org User-Agent: Opera Mail/12.16 (Linux) X-Notice: Filtered by postfilter v. 0.8.2 Xref: csiph.com comp.lang.forth:28042 On Wed, 22 Jan 2014 00:21:23 -0500, Elizabeth D. Rather wrote: > Normally, a system remembers the last link field, often in a > variable named LAST. So, when you're linking a new definition > that is the place that your new link needs to point to. If > :NONAME doesn't change it, everything will be fine. Actually, indirectly, that *IS* the crux of my current problem! It appears I had CREATE (CREATE) and :NONAME correct at one point. But, :NONAME failed to work with RECURSE when I implemented it. I fixed that issue by adding a dictionary header to :NONAME at which point :NONAME's definition was only slightly different from (CREATE). Some time later, I realized the two were basically the same, backed out (CREATE) and CREATE even though they're required by ANS ... oops. After that, I was working on re-coding and moving around high-level versions of : and ; which added to the mess. So, I think I can get back to using correct versions of CREATE (CREATE) and :NONAME but then my RECURSE won't work with :NONAME. The issue is my RECURSE uses LAST which in my system points to the start of the dictionary header (not LFA) to find the CFA which is my XT. For high-level Forth words, the CFA is just past the dictionary header. (CREATE) updates LAST so it points to the most recent : definition. If :NONAME doesn't have a dictionary header, doesn't call (CREATE), and doesn't update LAST directly, then LAST is set to the prior : definition, not the current :NONAME definition. Then, my RECURSE obtains the wrong XT since it uses LAST. I fixed that issue by adding a header to :NONAME which was incorrect. If there is no dictionary header for a :NONAME definition, how does LAST provide the correct value to RECURSE? So, I'm assuming RECURSE must use some method other than LAST to find the current definition. AIR, both ' and FIND need names. How else does one find a :NONAME definition? Even if I correct LAST to point to the LFA, I'll have the same problem, i.e., no apparent way to find a :NONAME definition for RECURSE. > And there is no DOES field, since DOES> patches the code field. I had problems with that before. A few people here helped out. I ended up creating an extra field for DOES even though I didn't want it. I'm going to leave that issue alone for a while. AIR, the other solutions required modifyihg the PFA area too, which could lead to problems. Rod Pemberton