home .. forth .. colorforth mail list archive ..

Re: [colorforth] Question about displaying text


Thank you for your continued work John. 

I added your links to http://forthlinks.com

I just wanted to remind everyone that the above site
has the most complete list of colorForth links that
I know of (32) and I encourage anyone to submit any
colorForth link that does not exist there.  Also
consider linking to the colorForth section of the
above site from your colorForth website.

Has anyone heard when the new colorForth is coming out?
Jeff mentioned it a few months back.

On Tue, 26 Dec 2006 12:05:44 -0800 (PST), "John Drake"
<jmdrake_98@xxxxxxxxx> said:
> Hello all,
> 
> I've made some progess on the Primary ColorForth
> tutorial.  For one thing I added the formatting
> to the "editor" chapter Jeff did.  Jeff included
> the formatting when he wrote it, but I was unsure
> how well the Wiki would take HTML so I just 
> pasted raw text.  Now I realize that it handles
> HTML pretty well.  I pasted Jeff's HTML and all
> I had to do was attach all of the images.
> 
> http://www.quartus.net/cgi-bin/twiki/view/Main/PrimaryColorForthEditor
> 
> I also added the examples from chapter 1 of 
> Starting Forth that I had documented on my
> blog.
> 
> http://www.quartus.net/cgi-bin/twiki/view/Main/PrimaryColorForthGettingStarted
> 
> Note, the HTML that the blog had inserted
> was much more problematic for the Wiki and
> I had to do a lot of editing, but I got it
> to work.
> 
> Now for my question.  I've actually finished
> the rest of the example from chapter 1.  But
> I'm not 100% satisfied with the results.
> 
> This is what I have so far.  I know how to
> display a packed word that's on the stack.
> 
> : type fffffff0 and unpack if emit type ; then 
> drop drop ;
> 
> This recursively upacks a charecter and displays.
> If the charecter is 0 then we're at the end of
> the word and "type" stops.  So if "hello" was
> at the top of block 20 then
> 
> : ok show text 20 block type keyboard ;
> 
> would create a word to display "hello" at the
> top of the screen.
> 
> I also figured out a way to use "string
> variables".  Magenta variables are basically
> pointers to areas of memory inside of blocks.
> So if you put a magenta variable address on
> the stack and add 1 to it you'll have a
> pointer to the packed source code that comes
> after the variable.  So I create magenta
> variables and then put the string I want
> directly after the variables in the form
> of comments.
> 
> var s 0 ( hello )
> 
> Then
> 
> : ok show text s 1 + @ type keyboard ;
> 
> will also display "hello" on the screen.
> 
> Factoring out "1 + @ type" I get:
> 
> : stype 1 + @
> : type fffffff0 and unpack if emit type ; then 
> drop drop ;
> 
> But the problem is, what happens when you have
> longer words?  For example:
> 
> var s 0 ( bookends )
> 
> If I do:
> 
> : ok show text s stype keyboard ;
> 
> I get:
> 
> booke
> 
> Now I can chain words together.  For example
> I created a word "dword" to deal with long
> words like "bookends".
> 
> : dword dup stype 1 + stype ;
> 
> Then
> 
> : ok show text s dword keyboard ;
> 
> displays:
> 
> bookends
> 
> But there HAS to be a better way.  How can
> I get ColorForth to differentiate between
> short words like "hello" that get packed
> into a single 32 bit word and longer words
> like "bookends" that take 2 32 bit words?
> 
> Clearly the editor knows how to do this
> because it displays "bookends" just fine.
> 
> Regards,
> 
> John M. Drake
> 
> __________________________________________________
> Do You Yahoo!?
> Tired of spam?  Yahoo! Mail has the best spam protection around 
> http://mail.yahoo.com 
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: colorforth-unsubscribe@xxxxxxxxxxxxxxxxxx
> For additional commands, e-mail: colorforth-help@xxxxxxxxxxxxxxxxxx
> Main web page - http://www.colorforth.com
> 

---------------------------------------------------------------------
To unsubscribe, e-mail: colorforth-unsubscribe@xxxxxxxxxxxxxxxxxx
For additional commands, e-mail: colorforth-help@xxxxxxxxxxxxxxxxxx
Main web page - http://www.colorforth.com