[comp.lang.forth] Block handling tips

trolfs@vax1.tcd.ie (TOMMY) (03/29/89)

 Thanks to everyone who replied to my original posting about file handling tips.
However I think I wasn't being very clear. Sorry. What I should have said was
"Does anybody have any BLOCK handling tips?"

 The forth I have is called 'C64-forth' (PET-forth is its parent) which does
access the disk directly in blocks. It even has some file handling words. 
But as I hope to upgrade to a larger computer (C64, I still love you!), I want
to have a block management extention which I can take with me, so everything
will have to be done through BLOCK.

 Here are some examples that I have come across so far for make block
manipulation easier. 


  :  THRU  ( n1 n2 ---) 1+ swap  do I load loop ;

  :  +LOAD   ( load next block)   blk @ 1+ load ;
        
  :  FH      ( offset --- blk+offset)  blk @ + ;  ( FH = from here )

   eg    3 FH LOAD  ( load 3rd block from here )
      or 3 FH 5 FH THRU

   and one way of not having to remember numbers is

   10 CONSTANT BLOCK_STUFF

   BLOCK_STUFF LOAD

 I know, I know. These are fairly trivial examples. Even though they're handy,
there is still hassel in keeping the blocks organized.


  This is the sort of thing I would like.


  NEW  ( --- next_free_block)   

   NEW would put number of next  free block on stack.


  SCREEN nnnnnn  ( n --- )

   SCREEN would  try to allocate block n and create nnnnn, whos run time action
 is the put n on the stack (ie constant), however it would have to be stored
 in some sort of directory.

 So now you could do something like:

    NEW SCREEN GRAPHICS

    GRAPHICS EDIT

 Also, it woulbe nice to be to associate blocks

   GRAPHICS ADD NEW SCREEN TURTLE

 ADD would some how link TURTLE with GRAPHIC, so that if you load TURTLE it
will load GRAPHIC itself or something like that.

 Does anyone have any good ideas on allocating blocks (I was thinking of a sort
of link list affair), and what about associating blocks with each other.That
could be quite powerful ( or maybe not?).


 Anyway. Thanks again to everybody who replied. Hope I'm not being a pain.

  See yah.

    Tommy.




 










-- 

                                Thomas Rolfs.
                                                 (trolfs@vax1.tcd.ie)
                                                  Dublin,
                                                  Ireland.