home *** CD-ROM | disk | FTP | other *** search
/ ftp.whtech.com / ftp.whtech.com.tar / ftp.whtech.com / Geneve / 9640news / CAT17 / RLFRTH.ARK < prev    next >
Text File  |  2006-10-19  |  3KB  |  120 lines

  1. ?
  2. .FI;LM 0;RM 79;IN +0
  3. I just downloaded John Carver's file
  4. FORTH$ (GEnie 661) with the FORTH
  5. string stuff.  It looks great to me;
  6. thanks, John, for this and all the
  7. other files you've given us.
  8.  
  9.  
  10. I've been idly toying with doing
  11. something like BASIC does for string
  12. assignment, and reading FORTH$ fired up
  13. my imagination again. I want to get
  14. away from having to predetermine the
  15. length of a string variable, so I'd do
  16. things a little differently than does
  17. John Burkett.
  18.  
  19.  
  20. First, let's rename WLITERAL to be
  21. called ", as it is on the Macintosh
  22. FORTH.  Then introduce the defining
  23. word $TRING, to be used as follows:
  24.  
  25.  
  26.  
  27. .LM +10;RM -10
  28. $TRING A$ ( A$ is now a string
  29. variable)
  30. $TRING B$ $TRING C$ ( So are B$ and
  31. C$)
  32.  
  33.  
  34. .LM -10;RM +10
  35. We will need the string store and
  36. fetch words $! and $@@.  Then we could
  37. write stuff like:
  38.  
  39. .LM +10;RM -10
  40. " This is a string."  A$ $! ( A$ now
  41. contains that phrase)
  42. B$ $@@ ( ...addr) ( the stack now
  43. contains the address of the length byte
  44. of a copy of the string that is stored
  45. in B$)
  46. A$ $@@ C$ $! ( C$ contains a copy of
  47. A$)
  48. A$ $@@ COUNT TYPE ( type out whatever's
  49. in A$)
  50.  
  51. .LM -10;RM +10
  52. With this we could forget about
  53. preassigning lengths of strings (just
  54. like BASIC) and do the equivalent of
  55. BASICs A$=A$&&B$&&RPT$(.....
  56.  
  57. My idea is to use a memory manager to
  58. help out.  Any variable that wants to
  59. use MANAGER must first report in to
  60. it and get a token, which it must keep.
  61. This token is sort of like a credit
  62. card or a key to the Playboy Club -
  63. don't lose it!
  64. To request the manager to store your
  65. data you would place on the stack the
  66. token, the address of the data, and the
  67. number of bytes to be stored.
  68. Then you would call
  69. the store-manager, which would remember
  70. your data for you.
  71. To fetch back your data, you would
  72. place its token and a memory address on
  73. the stack, and call the fetch-manager.
  74. The manager would get the data from
  75. wherever it is keeping it and give you
  76. a copy at the place you specified.
  77. The idea is that the memory manager
  78. will be able to manage its own private
  79. storage (maybe it would use a RELATIVE
  80. disk file, maybe GRAM, RAMDISK, or
  81. VDP?) It would have to be able to
  82. collect garbage, just as BASIC does.
  83. (Does anyone know how BASIC does
  84. that?)
  85. FORGET would have to be changed a
  86. little, so that tokens belonging to a
  87. word that is being forgotten could be
  88. handed back to the manager, which would
  89. then release their memory.  ABORT would
  90. call the manager to release all
  91. tokens.
  92.  
  93.  
  94. This manager could be used for other
  95. than string storage, of course, but
  96. strings seem to be the most obvious
  97. use.
  98. A declaration of a word as a string
  99. would mean that a token would be
  100. requested for it; invoking it would
  101. place its token on the stack.
  102.                                 Any
  103. Comments?
  104.  
  105. Nelson Byrne
  106. 28th Dec, 1986
  107.  
  108.  
  109.  
  110.  
  111. )UUUUUUUUUU
  112. HELP!
  113. HOW DO I STOP?
  114. ?
  115. FNCN 4 NO DO
  116.  
  117. Download complete.  Turn off Capture File.
  118.  
  119.  
  120.