Path: csiph.com!usenet.pasdenom.info!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:28717 On Wed, 22 Jan 2014 00:21:23 -0500, Elizabeth D. Rather wrote: > On 1/21/14 5:04 PM, Rod Pemberton wrote: >> Yes. Thanks. I'm thinking what you said earlier should work. > > Yay. I hope your code cleans up a lot as a result. > Fixed. Seems so. I hope. I corrected high-level definitions for CREATE :NONAME (and eventually for the high-level definitions of : colon and ; semis). I implemented (CREATE) based on my incorrect definition for :NONAME and parts from other related defs, and older versions in my backups. I found one bug too ... :NONAME's no longer have a dictionary header. Other words are correctly linked around :NONAME's dictionary space, don't overwrite it's space, etc. I implemented LATESTXT. LATESTXT is updated with LAST everywhere LAST is stored, and also set to HERE in :NONAME. I changed RECURSE to use LATESTXT instead of LAST and updated RECURSE to compile R> DROP to not overflow the return stack. This was caused from numerous ENTER (or DOCOL) from recursing without an EXIT (or SEMIS). I had that previously but backed it out at some point for reasons unknown now. I had hoped to not use LATESTXT by just temporarily updating LAST , but the value it needed to be preserved for too long. It would've had to have stayed set until ; semis and then reset to it's prior value. That appeared to lead to a coding mess. I.e., how do you know when to reset or leave it alone? ... I think Mark Wills was running into this. I did run into an issue with DOVAR. Actually, it affects DOVAR DODOES and ENTER (or DOCOL) or any other CFA field address. I can set them up as routines ((non-existant i.e., just returns address) or as constants. E.g., I can make DOVAR work for either of these def's, but not both: : CREATE (CREATE) COMPILE DOVAR ; \ DOVAR address as a routine : CREATE (CREATE) DOVAR , ; \ DOVAR address as a constant When setup as a constant, they don't crash my system when entered interactively. I *cannot* install a fake do-nothing routine for them when setup as a routine, i.e., they will crash if used interactively. They're only used when compiled or comma'd into a definition's CFA. Or, at least, I can't think of a non-CFA use for them ... So, I went with constants for now. Rod Pemberton