Shop OBEX P1 Docs P2 Docs Learn Events
Looking for a good presentation of the ANS Forth 94 dictionary, not the document — Parallax Forums

Looking for a good presentation of the ANS Forth 94 dictionary, not the document

LoopyBytelooseLoopyByteloose Posts: 12,537
edited 2012-10-31 07:44 in General Discussion
Okay, now I am interested in access to good references for Forth. In particular, I seek a good way to assimilate the whole ANS Forth dictionary.

Over the years, this programming language has managed to intrigue me and then frustrated me as it is obvious that the dictionary is rather huge and for those of us that are not a genius that is a full 3 or more standard deviations from the norm it does not quite seem intuitive.

I have no trouble at all with stack manipulation and actually still use RPN for all my serious number crunching. I even have an HP50g calculator. But when the 'words' begin to define places and procedures that are rather full of jargon, I get lost.

The ANS Forth presentation may be complete, but the groupings are not easy to associate with productive applications. I am reading a rather odd variety of documentations and tutorials to try to penetrate this barrier. And I have revisited the 'classics' by Leo Brodie. But I find that words such as #> tend to confound me.

I just wish that someone might write "ANS Forth 94 words explained, for dummies".

Meanwhile, I may download the whole list to a spreadsheet and try to catagorize them myself.
«13

Comments

  • mindrobotsmindrobots Posts: 6,506
    edited 2012-10-13 05:21
    Loopy,

    Gforth is out there as a kitchen sink Forth implementation. It runs well on Linux. They claim ANS compliance and I think have a bunch of words beyond ANS. there is a lot of documentation for it and when you start Googling, you end up with a manual, a tutorial and an HTML word list. Like I said it has bunches and bunches of words.

    All the word definitions in PropForth, Tachyon and Gforth make my head spin. For PropForth, I have the .f files printed out and annotated. I made an index (see PropForth wiki) so you can tell in which .f file the word is defined. For Tachyon, I have a spreadsheet I'm trying to build and maintain (slow progress). For Gforth, I have the manual and word list open in a browser whenever I'm using it. My memory isn't what it used to be, so I usually have some references near by.

    I'm finding this memory thing to spread into other languages, too. My head has become a tower of Babel as far as programming languages and sadly, I code most everything with reference tools nearby. Functions, operators, libraries; many so close but not quite!!
  • prof_brainoprof_braino Posts: 4,313
    edited 2012-10-13 06:25
    references for Forth. ANS Forth dictionary.

    ... words such as #> tend to confound me.

    I just wish that someone might write "ANS Forth 94 words explained, for dummies".

    Meanwhile, I may download the whole list to a spreadsheet and try to catagorize them myself.

    By whole list do you mean? http://forth.sourceforge.net/std/dpans/

    If you have question about particular words, the best way might be to ask for examples.

    For example #> is (usually) only used in conjunction with its mates <# #S and # to set up a formatted string as in

    <# #S # # # # #>

    This converts the value on the stack to the stack to three digits in the number base for printing etc.

    Then you can get and address and a length on the stack, and you can use the word that takes a length and an address and print or copy or manipulate that prepared, formatted string. If 137 were on the stack, and the base were decimal, it would yield 00137. the same with number base of hex would yield 00089

    I think. I seldom use this one, its too confusing. Unless somebody is paying for a profession application; then I have to dig out the dpans again. I don't recall seeing this in propforth, nobody has asked about it yet, so it may be in the "optional extensions for later if anybody asks for it" list.
  • Dave HeinDave Hein Posts: 6,347
    edited 2012-10-13 06:31
    I've been looking for ANS Forth resources also. There must be some ANS Forth dictionaries that can be loaded into a simple Forth kernel to provide full standard support. I'm writing a simple Forth interpreter just to learn how Forth works, and it has helped me to understand it a lot more. I have a much better appreciation for the strengths and weaknesses of Forth now. I've also been playing around with PicoC, which is a C interpreter. It provides similar capabilities as Forth, but with a syntax that may be more familiar to most programmers.
  • LoopyBytelooseLoopyByteloose Posts: 12,537
    edited 2012-10-13 07:06
    Small is beautiful.

    Initially i tried some years ago to download a copy of "Starting Forth" by Leo Brodie, but the PDF file was rather fragmented. Today, I found out that I can't find a good PDF version, but Forth, Inc. has the original available on-line and it is quite clear. I may stay away from the ANS Forth spec for awhile and just try to get something working in PropForth.

    http://www.forth.com/starting-forth/sf1/sf1.html

    I am collecting quite a list of other stuff, but unsure of the quality of that, so I will not mention anything else - except to say that "Thinking Forth" by Leo Brodie is not really a beginner's text. It is more conceptual and procedural. One should start with "Starting Forth" and do some projects before getting into it.

    GForth is huge, like all PC Forths. But it is handy if I just want to check out something I read.
  • mindrobotsmindrobots Posts: 6,506
    edited 2012-10-13 08:11
    Loopy, go check Peter's Tachyon thread he just posted a link to a PDF copy.
  • LoopyBytelooseLoopyByteloose Posts: 12,537
    edited 2012-10-13 09:20
    Been there, done that.... and said thank you.
    I mentioned that out-of-print Forth books are readily available via AbeBooks.com for very reasonable to outrageous prices.

    So far, I am just surfing and reading - not trying to build a library.

    More reading about ANS Forth came up with comments that no one really tries to comply with the whole thing - everyone does a sub-set. So the standard is merely an idea book for portable Forth code. And portable Forth code is somewhat of a fiction as everyone tries to optimize in their own way.

    In other words, Forth is and will always be a thinking man's computer language. It morphs every time it gets passed on and really used.

    As long as I can identify useful fundamental elements that are equivalent to something like Parallax's PBasic, I think I have enough to get started. It is just that some presentations do not clearly explain branching and looping and bit-banging i/o.

    Starting Forth is pretty good. But micro-controller bit banging needs to be found through other resources.
  • Dave HeinDave Hein Posts: 6,347
    edited 2012-10-13 09:37
    I've been looking at pforth (Portable Forth) a bit, and it looks promising as far as doing a full implementation of ANSI Forth. I've gotten it to run under cygwin on my PC, but I haven't tried porting it to the Prop yet.
  • LoopyBytelooseLoopyByteloose Posts: 12,537
    edited 2012-10-13 11:13
    A 'full ANSI implementation'. One item I read claimed Mr. Moore's Forth had something like 69 words, and that later versions had crept up to 2500 words.

    The world of information and tools are divided by threes.

    For information - it is need to know, nice to know, and garbage.
    For tools - It is must use, can use, and forget it.

    BTW, porting pForth to the Propeller will be an interesting demonstration of whether Catalina C or GCC really accept C programs from beyond.
  • Dave HeinDave Hein Posts: 6,347
    edited 2012-10-13 12:30
    A full ANSI implementation doesn't look that daunting. Appendix F in the standard gives an alphabetical list of all the words. I have included that below. There's a total of 371 words. However, you only have to implement the 133 CORE words to be ANSI standard. The other words are optional. Of course many of the optional words are included in most Forth implementations.
      .6.1.0010   !  ....................."store"........................CORE......41
      .6.1.0030   #  ....................."number-sign"..................CORE......41
      .6.1.0040   #>  ...................."number-sign-greater"..........CORE......41
      .6.1.0050   #S  ...................."number-sign-s"................CORE......41
      .6.2.0060   #TIB  .................."number-t-i-b".............CORE EXT......64
      .6.1.0070   '  ....................."tick".........................CORE......41
      .6.1.0080   (  ....................."paren"........................CORE......41
    11.6.1.0080   (  ....................."paren"........................FILE......97
    13.6.1.0086   (LOCAL)  ..............."paren-local-paren"...........LOCAL.....122
      .6.1.0090   *  ....................."star".........................CORE......42
      .6.1.0100   */ ....................."star-slash"...................CORE......42
      .6.1.0110   */MOD  ................."star-slash-mod"...............CORE......42
      .6.1.0120   +  ....................."plus".........................CORE......42
      .6.1.0130   +!  ...................."plus-store"...................CORE......42
      .6.1.0140   +LOOP  ................."plus-loop"....................CORE......42
      .6.1.0150   ,  ....................."comma"........................CORE......43
      .6.1.0160   -  ....................."minus"........................CORE......43
    17.6.1.0170   -TRAILING  ............."dash-trailing"..............STRING.....140
      .6.1.0180   .  ....................."dot"..........................CORE......43
      .6.1.0190   ."  ...................."dot-quote"....................CORE......43
      .6.2.0200   .(  ...................."dot-paren"................CORE EXT......64
      .6.2.0210   .R  ...................."dot-r"....................CORE EXT......64
    15.6.1.0220   .S  ...................."dot-s".......................TOOLS.....129
      .6.1.0230   /  ....................."slash"........................CORE......44
      .6.1.0240   /MOD  .................."slash-mod"....................CORE......44
    17.6.1.0245   /STRING  ..............."slash-string"...............STRING.....140
      .6.1.0250   0<  ...................."zero-less"....................CORE......44
      .6.2.0260   0<>  ..................."zero-not-equals"..........CORE EXT......64
      .6.1.0270   0=  ...................."zero-equals"..................CORE......44
      .6.2.0280   0>  ...................."zero-greater".............CORE EXT......64
      .6.1.0290   1+  ...................."one-plus".....................CORE......44
      .6.1.0300   1-  ...................."one-minus"....................CORE......44
      .6.1.0310   2!  ...................."two-store"....................CORE......44
      .6.1.0320   2*  ...................."two-star".....................CORE......44
      .6.1.0330   2/  ...................."two-slash"....................CORE......44
      .6.2.0340   2>R  ..................."two-to-r".................CORE EXT......64
      .6.1.0350   2@  ...................."two-fetch"....................CORE......45
     8.6.1.0360   2CONSTANT  ............."two-constant"...............DOUBLE......80
      .6.1.0370   2DROP  ................."two-drop".....................CORE......45
      .6.1.0380   2DUP  .................."two-dupe".....................CORE......45
     8.6.1.0390   2LITERAL  .............."two-literal"................DOUBLE......80
      .6.1.0400   2OVER  ................."two-over".....................CORE......45
      .6.2.0410   2R>  ..................."two-r-from"...............CORE EXT......64
      .6.2.0415   2R@  ..................."two-r-fetch"..............CORE EXT......65
     8.6.2.0420   2ROT  .................."two-rote"...............DOUBLE EXT......82
      .6.1.0430   2SWAP  ................."two-swap".....................CORE......45
     8.6.1.0440   2VARIABLE  ............."two-variable"...............DOUBLE......81
      .6.1.0450   :  ....................."colon"........................CORE......45
      .6.2.0455   :NONAME  ..............."colon-no-name"............CORE EXT......65
      .6.1.0460   ;  ....................."semicolon"....................CORE......45
    15.6.2.0470   ;CODE  ................."semicolon-code"..........TOOLS EXT.....130
      .6.1.0480   <  ....................."less-than"....................CORE......46
      .6.1.0490   <#  ...................."less-number-sign".............CORE......46
      .6.2.0500   <>  ...................."not-equals"...............CORE EXT......65
      .6.1.0530   =  ....................."equals".......................CORE......46
      .6.1.0540   >  ....................."greater-than".................CORE......46
      .6.1.0550   >BODY  ................."to-body"......................CORE......46
    12.6.1.0558   >FLOAT  ................"to-float".................FLOATING.....108
      .6.1.0560   >IN  ..................."to-in"........................CORE......46
      .6.1.0570   >NUMBER  ..............."to-number"....................CORE......46
      .6.1.0580   >R  ...................."to-r".........................CORE......47
    15.6.1.0600   ?  ....................."question"....................TOOLS.....129
      .6.2.0620   ?DO  ..................."question-do"..............CORE EXT......65
      .6.1.0630   ?DUP  .................."question-dupe"................CORE......47
      .6.1.0650   @  ....................."fetch"........................CORE......47
      .6.1.0670   ABORT  ................................................CORE......47
     9.6.2.0670   ABORT  .......................................EXCEPTION EXT......88
      .6.1.0680   ABORT"  ................"abort-quote"..................CORE......47
     9.6.2.0680   ABORT"  ................"abort-quote".........EXCEPTION EXT......88
      .6.1.0690   ABS  ..................."abs"..........................CORE......47
      .6.1.0695   ACCEPT  ...............................................CORE......48
      .6.2.0700   AGAIN  ............................................CORE EXT......66
    15.6.2.0702   AHEAD  ...........................................TOOLS EXT.....130
      .6.1.0705   ALIGN  ................................................CORE......48
      .6.1.0706   ALIGNED  ..............................................CORE......48
    14.6.1.0707   ALLOCATE  ...........................................MEMORY.....125
      .6.1.0710   ALLOT  ................................................CORE......48
    16.6.2.0715   ALSO  ...........................................SEARCH EXT.....138
      .6.1.0720   AND  ..................................................CORE......48
    15.6.2.0740   ASSEMBLER  .......................................TOOLS EXT.....130
    10.6.1.0742   AT-XY  ................."at-x-y"...................FACILITY......90
      .6.1.0750   BASE  .................................................CORE......49
      .6.1.0760   BEGIN  ................................................CORE......49
    11.6.1.0765   BIN  ..................................................FILE......97
      .6.1.0770   BL  ...................."b-l"..........................CORE......49
    17.6.1.0780   BLANK  ..............................................STRING.....140
     7.6.1.0790   BLK  ..................."b-l-k".......................BLOCK......75
     7.6.1.0800   BLOCK  ...............................................BLOCK......75
     7.6.1.0820   BUFFER  ..............................................BLOCK......76
    15.6.2.0830   BYE  .............................................TOOLS EXT.....130
      .6.1.0850   C!  ...................."c-store"......................CORE......49
      .6.2.0855   C"  ...................."c-quote"..................CORE EXT......66
      .6.1.0860   C,  ...................."c-comma"......................CORE......49
      .6.1.0870   C@  ...................."c-fetch"......................CORE......49
      .6.2.0873   CASE  .............................................CORE EXT......66
     9.6.1.0875   CATCH  ...........................................EXCEPTION......87
      .6.1.0880   CELL+  ................."cell-plus"....................CORE......49
      .6.1.0890   CELLS  ................................................CORE......50
      .6.1.0895   CHAR  .................."char".........................CORE......50
      .6.1.0897   CHAR+ .................."char-plus"....................CORE......50
      .6.1.0898   CHARS  ................."chars"........................CORE......50
    11.6.1.0900   CLOSE-FILE  ...........................................FILE......97
    17.6.1.0910   CMOVE  ................."c-move".....................STRING.....140
    17.6.1.0920   CMOVE>  ................"c-move-up"..................STRING.....140
    15.6.2.0930   CODE  ............................................TOOLS EXT.....130
    17.6.1.0935   COMPARE  ............................................STRING.....140
      .6.2.0945   COMPILE,  .............."compile-comma"............CORE EXT......66
      .6.1.0950   CONSTANT  .............................................CORE......50
      .6.2.0970   CONVERT  ..........................................CORE EXT......67
      .6.1.0980   COUNT  ................................................CORE......50
      .6.1.0990   CR  ...................."c-r"..........................CORE......50
      .6.1.1000   CREATE  ...............................................CORE......50
    11.6.1.1010   CREATE-FILE  ..........................................FILE......97
    15.6.2.1015   CS-PICK  ..............."c-s-pick"................TOOLS EXT.....131
    15.6.2.1020   CS-ROLL  ..............."c-s-roll"................TOOLS EXT.....131
     8.6.1.1040   D+  ...................."d-plus".....................DOUBLE......81
     8.6.1.1050   D-  ...................."d-minus"....................DOUBLE......81
     8.6.1.1060   D.  ...................."d-dot"......................DOUBLE......81
     8.6.1.1070   D.R  ..................."d-dot-r"....................DOUBLE......81
     8.6.1.1075   D0<  ..................."d-zero-less"................DOUBLE......81
     8.6.1.1080   D0=  ..................."d-zero-equals"..............DOUBLE......81
     8.6.1.1090   D2*  ..................."d-two-star".................DOUBLE......81
     8.6.1.1100   D2/  ..................."d-two-slash"................DOUBLE......82
     8.6.1.1110   D<  ...................."d-less-than"................DOUBLE......82
     8.6.1.1120   D=  ...................."d-equals"...................DOUBLE......82
    12.6.1.1130   D>F  ..................."d-to-f"...................FLOATING.....109
     8.6.1.1140   D>S  ..................."d-to-s".....................DOUBLE......82
     8.6.1.1160   DABS  .................."d-abs"......................DOUBLE......82
      .6.1.1170   DECIMAL  ..............................................CORE......51
    16.6.1.1180   DEFINITIONS  ........................................SEARCH.....136
    11.6.1.1190   DELETE-FILE  ..........................................FILE......97
      .6.1.1200   DEPTH  ................................................CORE......51
    12.6.2.1203   DF!  ..................."d-f-store"............FLOATING EXT.....112
    12.6.2.1204   DF@  ..................."d-f-fetch"............FLOATING EXT.....113
    12.6.2.1205   DFALIGN  ..............."d-f-align"............FLOATING EXT.....113
    12.6.2.1207   DFALIGNED  ............."d-f-aligned"..........FLOATING EXT.....113
    12.6.2.1208   DFLOAT+  ..............."d-float-plus".........FLOATING EXT.....113
    12.6.2.1209   DFLOATS  ..............."d-floats".............FLOATING EXT.....113
     8.6.1.1210   DMAX  .................."d-max"......................DOUBLE......82
     8.6.1.1220   DMIN  .................."d-min"......................DOUBLE......82
     8.6.1.1230   DNEGATE  ..............."d-negate"...................DOUBLE......82
      .6.1.1240   DO  ...................................................CORE......51
      .6.1.1250   DOES>  ................."does".........................CORE......51
      .6.1.1260   DROP  .................................................CORE......52
     8.6.2.1270   DU<  ..................."d-u-less"...............DOUBLE EXT......83
    15.6.1.1280   DUMP  ................................................TOOLS.....129
      .6.1.1290   DUP  ..................."dupe".........................CORE......52
    15.6.2.1300   EDITOR  ..........................................TOOLS EXT.....132
    10.6.2.1305   EKEY  .................."e-key"................FACILITY EXT......91
    10.6.2.1306   EKEY>CHAR  ............."e-key-to-char"........FACILITY EXT......91
    10.6.2.1307   EKEY?  ................."e-key-question".......FACILITY EXT......91
      .6.1.1310   ELSE  .................................................CORE......52
      .6.1.1320   EMIT  .................................................CORE......52
    10.6.2.1325   EMIT?  ................."emit-question"........FACILITY EXT......91
     7.6.2.1330   EMPTY-BUFFERS  ...................................BLOCK EXT......77
      .6.2.1342   ENDCASE  ..............."end-case".................CORE EXT......67
      .6.2.1343   ENDOF  ................."end-of"...................CORE EXT......67
      .6.1.1345   ENVIRONMENT?  .........."environment-query"............CORE......53
      .6.2.1350   ERASE  ............................................CORE EXT......67
      .6.1.1360   EVALUATE  .............................................CORE......53
     7.6.1.1360   EVALUATE  ............................................BLOCK......76
      .6.1.1370   EXECUTE  ..............................................CORE......53
      .6.1.1380   EXIT  .................................................CORE......53
      .6.2.1390   EXPECT  ...........................................CORE EXT......68
    12.6.1.1400   F!  ...................."f-store"..................FLOATING.....109
    12.6.1.1410   F*  ...................."f-star"...................FLOATING.....109
    12.6.2.1415   F**  ..................."f-star-star"..........FLOATING EXT.....113
    12.6.1.1420   F+  ...................."f-plus"...................FLOATING.....109
    12.6.1.1425   F-  ...................."f-minus"..................FLOATING.....109
    12.6.2.1427   F.  ...................."f-dot"................FLOATING EXT.....113
    12.6.1.1430   F/  ...................."f-slash"..................FLOATING.....109
    12.6.1.1440   F0<  ..................."f-zero-less-than".........FLOATING.....109
    12.6.1.1450   F0=  ..................."f-zero-equals"............FLOATING.....109
    12.6.1.1460   F<  ...................."f-less-than"..............FLOATING.....109
    12.6.1.1470   F>D  ..................."f-to-d"...................FLOATING.....110
    12.6.1.1472   F@  ...................."f-fetch"..................FLOATING.....110
    12.6.2.1474   FABS  .................."f-abs"................FLOATING EXT.....114
    12.6.2.1476   FACOS  ................."f-a-cos"..............FLOATING EXT.....114
    12.6.2.1477   FACOSH  ................"f-a-cosh".............FLOATING EXT.....114
    12.6.1.1479   FALIGN  ................"f-align"..................FLOATING.....110
    12.6.1.1483   FALIGNED  .............."f-aligned"................FLOATING.....110
    12.6.2.1484   FALOG  ................."f-a-log"..............FLOATING EXT.....114
      .6.2.1485   FALSE  ............................................CORE EXT......68
    12.6.2.1486   FASIN  ................."f-a-sine".............FLOATING EXT.....114
    12.6.2.1487   FASINH  ................"f-a-cinch"............FLOATING EXT.....114
    12.6.2.1488   FATAN  ................."f-a-tan"..............FLOATING EXT.....114
    12.6.2.1489   FATAN2  ................"f-a-tan-two"..........FLOATING EXT.....114
    12.6.2.1491   FATANH  ................"f-a-tan-h"............FLOATING EXT.....114
    12.6.1.1492   FCONSTANT  ............."f-constant"...............FLOATING.....110
    12.6.2.1493   FCOS  .................."f-cos"................FLOATING EXT.....115
    12.6.2.1494   FCOSH  ................."f-cosh"...............FLOATING EXT.....115
    12.6.1.1497   FDEPTH  ................"f-depth"..................FLOATING.....110
    12.6.1.1500   FDROP  ................."f-drop"...................FLOATING.....110
    12.6.1.1510   FDUP  .................."f-dupe"...................FLOATING.....110
    12.6.2.1513   FE.  ..................."f-e-dot"..............FLOATING EXT.....115
    12.6.2.1515   FEXP  .................."f-e-x-p"..............FLOATING EXT.....115
    12.6.2.1516   FEXPM1  ................"f-e-x-p-m-one"........FLOATING EXT.....115
    11.6.1.1520   FILE-POSITION .........................................FILE......97
    11.6.1.1522   FILE-SIZE  ............................................FILE......97
    11.6.2.1524   FILE-STATUS  ......................................FILE EXT.....102
      .6.1.1540   FILL  .................................................CORE......53
      .6.1.1550   FIND  .................................................CORE......53
    16.6.1.1550   FIND  ...............................................SEARCH.....136
    12.6.1.1552   FLITERAL  .............."f-literal"................FLOATING.....111
    12.6.2.1553   FLN  ..................."f-l-n"................FLOATING EXT.....115
    12.6.2.1554   FLNP1  ................."f-l-n-p-one"..........FLOATING EXT.....115
    12.6.1.1555   FLOAT+  ................"float-plus"...............FLOATING.....111
    12.6.1.1556   FLOATS  ...........................................FLOATING.....111
    12.6.2.1557   FLOG  .................."f-log"................FLOATING EXT.....115
    12.6.1.1558   FLOOR  ............................................FLOATING.....111
     7.6.1.1559   FLUSH  ...............................................BLOCK......76
    11.6.2.1560   FLUSH-FILE  .......................................FILE EXT.....102
      .6.1.1561   FM/MOD  ................"f-m-slash-mod"................CORE......54
    12.6.1.1562   FMAX  .................."f-max"....................FLOATING.....111
    12.6.1.1565   FMIN  .................."f-min"....................FLOATING.....111
    12.6.1.1567   FNEGATE  ..............."f-negate".................FLOATING.....111
    15.6.2.1580   FORGET  ..........................................TOOLS EXT.....132
    16.6.2.1590   FORTH  ..........................................SEARCH EXT.....138
    16.6.1.1595   FORTH-WORDLIST  .....................................SEARCH.....137
    12.6.1.1600   FOVER  ................."f-over"...................FLOATING.....111
    14.6.1.1605   FREE  ...............................................MEMORY.....126
    12.6.1.1610   FROT  .................."f-rote"...................FLOATING.....111
    12.6.1.1612   FROUND  ................"f-round"..................FLOATING.....111
    12.6.2.1613   FS.  ..................."f-s-dot"..............FLOATING EXT.....115
    12.6.2.1614   FSIN  .................."f-sine"...............FLOATING EXT.....116
    12.6.2.1616   FSINCOS  ..............."f-sine-cos"...........FLOATING EXT.....116
    12.6.2.1617   FSINH  ................."f-cinch"..............FLOATING EXT.....116
    12.6.2.1618   FSQRT  ................."f-square-root"........FLOATING EXT.....116
    12.6.1.1620   FSWAP  ................."f-swap"...................FLOATING.....111
    12.6.2.1625   FTAN  .................."f-tan"................FLOATING EXT.....116
    12.6.2.1626   FTANH  ................."f-tan-h"..............FLOATING EXT.....116
    12.6.1.1630   FVARIABLE  ............."f-variable"...............FLOATING.....112
    12.6.2.1640   F~  ...................."f-proximate"..........FLOATING EXT.....116
    16.6.1.1643   GET-CURRENT  ........................................SEARCH.....137
    16.6.1.1647   GET-ORDER  ..........................................SEARCH.....137
      .6.1.1650   HERE  .................................................CORE......54
      .6.2.1660   HEX  ..............................................CORE EXT......68
      .6.1.1670   HOLD  .................................................CORE......54
      .6.1.1680   I  ....................................................CORE......54
      .6.1.1700   IF  ...................................................CORE......54
      .6.1.1710   IMMEDIATE  ............................................CORE......54
    11.6.1.1717   INCLUDE-FILE  .........................................FILE......98
    11.6.1.1718   INCLUDED  .............................................FILE......98
      .6.1.1720   INVERT  ...............................................CORE......55
      .6.1.1730   J  ....................................................CORE......55
      .6.1.1750   KEY  ..................................................CORE......55
    10.6.1.1755   KEY?  .................."key-question".............FACILITY......90
       6.1.1760   LEAVE  ................................................CORE......56
     7.6.2.1770   LIST  ............................................BLOCK EXT......77
      .6.1.1780   LITERAL  ..............................................CORE......76
     7.6.1.1790   LOAD  ................................................BLOCK......76
    13.6.2.1795   LOCALS|  ..............."locals-bar"..............LOCAL EXT.....123
      .6.1.1800   LOOP  .................................................CORE......56
      .6.1.1805   LSHIFT  ................"l-shift"......................CORE......56
      .6.1.1810   M*  ...................."m-star".......................CORE......56
     8.6.1.1820   M*/  ..................."m-star-slash"...............DOUBLE......82
     8.6.1.1830   M+  ...................."m-plus".....................DOUBLE......82
      .6.2.1850   MARKER  ...........................................CORE EXT......68
      .6.1.1870   MAX  ..................................................CORE......56
      .6.1.1880   MIN  ..................................................CORE......56
      .6.1.1890   MOD  ..................................................CORE......56
      .6.1.1900   MOVE  .................................................CORE......56
    10.6.2.1905   MS  ...........................................FACILITY EXT......91
      .6.1.1910   NEGATE  ...............................................CORE......57
      .6.2.1930   NIP  ..............................................CORE EXT......68
      .6.2.1950   OF  ...............................................CORE EXT......68
    16.6.2.1965   ONLY  ...........................................SEARCH EXT.....138
    11.6.1.1970   OPEN-FILE  ............................................FILE......99
      .6.1.1980   OR  ...................................................CORE......57
    16.6.2.1985   ORDER  ..........................................SEARCH EXT.....138
      .6.1.1990   OVER  .................................................CORE......57
      .6.2.2000   PAD  ..............................................CORE EXT......69
    10.6.1.2005   PAGE  .............................................FACILITY......91
      .6.2.2008   PARSE  ............................................CORE EXT......69
      .6.2.2030   PICK  .............................................CORE EXT......69
      .6.1.2033   POSTPONE  .............................................CORE......57
    12.6.2.2035   PRECISION  ....................................FLOATING EXT.....117
    16.6.2.2037   PREVIOUS  .......................................SEARCH EXT.....138
      .6.2.2040   QUERY  ............................................CORE EXT......69
      .6.1.2050   QUIT  .................................................CORE......57
    11.6.1.2054   R/O  ..................."r-o"..........................FILE......99
    11.6.1.2056   R/W  ..................."r-w"..........................FILE......99
      .6.1.2060   R>  ...................."r-from".......................CORE......57
      .6.1.2070   R@  ...................."r-fetch"......................CORE......58
    11.6.1.2080   READ-FILE  ............................................FILE......99
    11.6.1.2090   READ-LINE  ............................................FILE.....100
      .6.1.2120   RECURSE  ..............................................CORE......58
      .6.2.2125   REFILL  ...........................................CORE EXT......69
     7.6.2.2125   REFILL  ..........................................BLOCK EXT......77
    11.6.2.2125   REFILL  ...........................................FILE EXT.....102
    11.6.2.2130   RENAME-FILE  ......................................FILE EXT.....102
      .6.1.2140   REPEAT  ...............................................CORE......58
    11.6.1.2142   REPOSITION-FILE  ......................................FILE.....100
    12.6.1.2143   REPRESENT  ........................................FLOATING.....112
    14.6.1.2145   RESIZE  .............................................MEMORY.....126
    11.6.1.2147   RESIZE-FILE  ..........................................FILE.....100
      .6.2.2148   RESTORE-INPUT  ....................................CORE EXT......70
      .6.2.2150   ROLL  .............................................CORE EXT......70
      .6.1.2160   ROT  ..................."rote".........................CORE......58
      .6.1.2162   RSHIFT  ................"r-shift"......................CORE......58
      .6.1.2165   S"  ...................."s-quote"......................CORE......58
    11.6.1.2165   S"  ...................."s-quote"......................FILE.....101
      .6.1.2170   S>D  ..................."s-to-d".......................CORE......59
     7.6.1.2180   SAVE-BUFFERS  ........................................BLOCK......77
      .6.2.2182   SAVE-INPUT  .......................................CORE EXT......70
     7.6.2.2190   SCR  ..................."s-c-r"...................BLOCK EXT......77
    17.6.1.2191   SEARCH  .............................................STRING.....141
    16.6.1.2192   SEARCH-WORDLIST  ....................................SEARCH.....137
    15.6.1.2194   SEE  .................................................TOOLS.....129
    16.6.1.2195   SET-CURRENT  ........................................SEARCH.....137
    16.6.1.2197   SET-ORDER  ..........................................SEARCH.....137
    12.6.2.2200   SET-PRECISION  ................................FLOATING EXT.....117
    12.6.2.2202   SF!  ..................."s-f-store"............FLOATING EXT.....117
    12.6.2.2203   SF@  ..................."s-f-fetch"............FLOATING EXT.....117
    12.6.2.2204   SFALIGN  ..............."s-f-align"............FLOATING EXT.....117
    12.6.2.2206   SFALIGNED  ............."s-f-aligned"..........FLOATING EXT.....117
    12.6.2.2207   SFLOAT+  ..............."s-float-plus".........FLOATING EXT.....118
    12.6.2.2208   SFLOATS  ..............."s-floats".............FLOATING EXT.....118
      .6.1.2210   SIGN  .................................................CORE......59
    17.6.1.2212   SLITERAL  ...........................................STRING.....141
      .6.1.2214   SM/REM  ................"s-m-slash-rem"................CORE......59
      .6.1.2216   SOURCE  ...............................................CORE......59
      .6.2.2218   SOURCE-ID  ............."source-i-d"...............CORE EXT......70
    11.6.1.2218   SOURCE-ID  ............."source-i-d"...................FILE.....101
      .6.1.2220   SPACE  ................................................CORE......59
      .6.1.2230   SPACES  ...............................................CORE......59
      .6.2.2240   SPAN  .............................................CORE EXT......70
      .6.1.2250   STATE  ................................................CORE......59
    15.6.2.2250   STATE  ...........................................TOOLS EXT.....132
      .6.1.2260   SWAP  .................................................CORE......60
      .6.1.2270   THEN  .................................................CORE......60
     9.6.1.2275   THROW  ...........................................EXCEPTION......87
     7.6.2.2280   THRU  ............................................BLOCK EXT......78
      .6.2.2290   TIB  ..................."t-i-b"....................CORE EXT......71
    10.6.2.2292   TIME&DATE  ............."time-and-date"........FACILITY EXT......92
      .6.2.2295   TO  ...............................................CORE EXT......71
    13.6.1.2295   TO  ..................................................LOCAL.....123
      .6.2.2298   TRUE  .............................................CORE EXT......71
      .6.2.2300   TUCK  .............................................CORE EXT......71
      .6.1.2310   TYPE  .................................................CORE......60
      .6.1.2320   U.  ...................."u-dot"........................CORE......60
      .6.2.2330   U.R  ..................."u-dot-r"..................CORE EXT......71
      .6.1.2340   U<  ...................."u-less-than"..................CORE......60
      .6.2.2350   U>  ...................."u-greater-than"...........CORE EXT......71
      .6.1.2360   UM*  ..................."u-m-star".....................CORE......60
      .6.1.2370   UM/MOD  ................"u-m-slash-mod"................CORE......61
      .6.1.2380   UNLOOP  ...............................................CORE......61
      .6.1.2390   UNTIL  ................................................CORE......61
      .6.2.2395   UNUSED  ...........................................CORE EXT......71
     7.6.1.2400   UPDATE  ..............................................BLOCK......77
      .6.2.2405   VALUE  ............................................CORE EXT......72
      .6.1.2410   VARIABLE  .............................................CORE......61
    11.6.1.2425   W/O  ..................."w-o"..........................FILE.....101
      .6.1.2430   WHILE  ................................................CORE......62
      .6.2.2440   WITHIN  ...........................................CORE EXT......72
      .6.1.2450   WORD  .................................................CORE......62
    16.6.1.2460   WORDLIST  ...........................................SEARCH.....137
    15.6.1.2465   WORDS  ...............................................TOOLS.....129
    11.6.1.2480   WRITE-FILE  ...........................................FILE.....101
    11.6.1.2485   WRITE-LINE  ...........................................FILE.....102
      .6.1.2490   XOR  ..................."x-or".........................CORE......62
      .6.1.2500   [  ....................."left-bracket".................CORE......62
      .6.1.2510   [']  ..................."bracket-tick".................CORE......62
      .6.1.2520   [CHAR]  ................"bracket-char".................CORE......63
      .6.2.2530   [COMPILE]  ............."bracket-compile"..........CORE EXT......72
    15.6.2.2531   [ELSE]  ................"bracket-else"............TOOLS EXT.....132
    15.6.2.2532   [IF]  .................."bracket-if"..............TOOLS EXT.....132
    15.6.2.2533   [THEN]  ................"bracket-then"............TOOLS EXT.....133
      .6.2.2535   \  ....................."backslash"................CORE EXT......72
     7.6.2.2535   \  ....................."backslash"...............BLOCK EXT......78
      .6.1.2540   ]  ....................."right-bracket"................CORE......63
    
  • LoopyBytelooseLoopyByteloose Posts: 12,537
    edited 2012-10-14 07:33
    I am loading PropForth tonight to a Propeller Proto Board as it has a 64K eeprom and is quite easy to do. Tacyhon Forth looks also interesting, but I am confused about having to load a 'binary' instead of a .spin file.

    PropForth also has a document that lists all the Words for immediate reference - about 12 pages of print out. I don't know why this isn't included in the Zip file for V5.03. I picked it up some time ago with v4.60.

    Here it is.
    http://code.google.com/p/propforth/wiki/PFquickRef

    Full ANSI may be an admirable goal, but for the new learner it is just like learning any other vocabulary. It is the highest use words that one needs to learn first. Rarely does one read a dictionary, retain everything, and learn a foreign language. But I certainly remember how to ask where the bathroom is.
  • max72max72 Posts: 1,155
    edited 2012-10-14 07:57
    Go to the propforth install dir and check doc directory. Not a summary but a detailed list..
    For the list check mindrobot's.
    Massimo
  • LoopyBytelooseLoopyByteloose Posts: 12,537
    edited 2012-10-14 09:33
    There are lots of alphabetical listings, but it really helps to have the items listed by functional groups. ANS Forth breaks them out by Core items and add-ons. That doesn't really help a new user seek and choose a solution.

    The PFQuickRef is done the right way for learning.
  • Dave HeinDave Hein Posts: 6,347
    edited 2012-10-14 11:32
    There are lots of alphabetical listings, but it really helps to have the items listed by functional groups. ANS Forth breaks them out by Core items and add-ons.
    OK, here the list sorted by section number, which groups the functional groups.
      .6.1.0010   !  ....................."store"........................CORE......41
      .6.1.0030   #  ....................."number-sign"..................CORE......41
      .6.1.0040   #>  ...................."number-sign-greater"..........CORE......41
      .6.1.0050   #S  ...................."number-sign-s"................CORE......41
      .6.1.0070   '  ....................."tick".........................CORE......41
      .6.1.0080   (  ....................."paren"........................CORE......41
      .6.1.0090   *  ....................."star".........................CORE......42
      .6.1.0100   */ ....................."star-slash"...................CORE......42
      .6.1.0110   */MOD  ................."star-slash-mod"...............CORE......42
      .6.1.0120   +  ....................."plus".........................CORE......42
      .6.1.0130   +!  ...................."plus-store"...................CORE......42
      .6.1.0140   +LOOP  ................."plus-loop"....................CORE......42
      .6.1.0150   ,  ....................."comma"........................CORE......43
      .6.1.0160   -  ....................."minus"........................CORE......43
      .6.1.0180   .  ....................."dot"..........................CORE......43
      .6.1.0190   ."  ...................."dot-quote"....................CORE......43
      .6.1.0230   /  ....................."slash"........................CORE......44
      .6.1.0240   /MOD  .................."slash-mod"....................CORE......44
      .6.1.0250   0<  ...................."zero-less"....................CORE......44
      .6.1.0270   0=  ...................."zero-equals"..................CORE......44
      .6.1.0290   1+  ...................."one-plus".....................CORE......44
      .6.1.0300   1-  ...................."one-minus"....................CORE......44
      .6.1.0310   2!  ...................."two-store"....................CORE......44
      .6.1.0320   2*  ...................."two-star".....................CORE......44
      .6.1.0330   2/  ...................."two-slash"....................CORE......44
      .6.1.0350   2@  ...................."two-fetch"....................CORE......45
      .6.1.0370   2DROP  ................."two-drop".....................CORE......45
      .6.1.0380   2DUP  .................."two-dupe".....................CORE......45
      .6.1.0400   2OVER  ................."two-over".....................CORE......45
      .6.1.0430   2SWAP  ................."two-swap".....................CORE......45
      .6.1.0450   :  ....................."colon"........................CORE......45
      .6.1.0460   ;  ....................."semicolon"....................CORE......45
      .6.1.0480   <  ....................."less-than"....................CORE......46
      .6.1.0490   <#  ...................."less-number-sign".............CORE......46
      .6.1.0530   =  ....................."equals".......................CORE......46
      .6.1.0540   >  ....................."greater-than".................CORE......46
      .6.1.0550   >BODY  ................."to-body"......................CORE......46
      .6.1.0560   >IN  ..................."to-in"........................CORE......46
      .6.1.0570   >NUMBER  ..............."to-number"....................CORE......46
      .6.1.0580   >R  ...................."to-r".........................CORE......47
      .6.1.0630   ?DUP  .................."question-dupe"................CORE......47
      .6.1.0650   @  ....................."fetch"........................CORE......47
      .6.1.0670   ABORT  ................................................CORE......47
      .6.1.0680   ABORT"  ................"abort-quote"..................CORE......47
      .6.1.0690   ABS  ..................."abs"..........................CORE......47
      .6.1.0695   ACCEPT  ...............................................CORE......48
      .6.1.0705   ALIGN  ................................................CORE......48
      .6.1.0706   ALIGNED  ..............................................CORE......48
      .6.1.0710   ALLOT  ................................................CORE......48
      .6.1.0720   AND  ..................................................CORE......48
      .6.1.0750   BASE  .................................................CORE......49
      .6.1.0760   BEGIN  ................................................CORE......49
      .6.1.0770   BL  ...................."b-l"..........................CORE......49
      .6.1.0850   C!  ...................."c-store"......................CORE......49
      .6.1.0860   C,  ...................."c-comma"......................CORE......49
      .6.1.0870   C@  ...................."c-fetch"......................CORE......49
      .6.1.0880   CELL+  ................."cell-plus"....................CORE......49
      .6.1.0890   CELLS  ................................................CORE......50
      .6.1.0895   CHAR  .................."char".........................CORE......50
      .6.1.0897   CHAR+ .................."char-plus"....................CORE......50
      .6.1.0898   CHARS  ................."chars"........................CORE......50
      .6.1.0950   CONSTANT  .............................................CORE......50
      .6.1.0980   COUNT  ................................................CORE......50
      .6.1.0990   CR  ...................."c-r"..........................CORE......50
      .6.1.1000   CREATE  ...............................................CORE......50
      .6.1.1170   DECIMAL  ..............................................CORE......51
      .6.1.1200   DEPTH  ................................................CORE......51
      .6.1.1240   DO  ...................................................CORE......51
      .6.1.1250   DOES>  ................."does".........................CORE......51
      .6.1.1260   DROP  .................................................CORE......52
      .6.1.1290   DUP  ..................."dupe".........................CORE......52
      .6.1.1310   ELSE  .................................................CORE......52
      .6.1.1320   EMIT  .................................................CORE......52
      .6.1.1345   ENVIRONMENT?  .........."environment-query"............CORE......53
      .6.1.1360   EVALUATE  .............................................CORE......53
      .6.1.1370   EXECUTE  ..............................................CORE......53
      .6.1.1380   EXIT  .................................................CORE......53
      .6.1.1540   FILL  .................................................CORE......53
      .6.1.1550   FIND  .................................................CORE......53
      .6.1.1561   FM/MOD  ................"f-m-slash-mod"................CORE......54
      .6.1.1650   HERE  .................................................CORE......54
      .6.1.1670   HOLD  .................................................CORE......54
      .6.1.1680   I  ....................................................CORE......54
      .6.1.1700   IF  ...................................................CORE......54
      .6.1.1710   IMMEDIATE  ............................................CORE......54
      .6.1.1720   INVERT  ...............................................CORE......55
      .6.1.1730   J  ....................................................CORE......55
      .6.1.1750   KEY  ..................................................CORE......55
      .6.1.1760   LEAVE  ................................................CORE......56
      .6.1.1780   LITERAL  ..............................................CORE......76
      .6.1.1800   LOOP  .................................................CORE......56
      .6.1.1805   LSHIFT  ................"l-shift"......................CORE......56
      .6.1.1810   M*  ...................."m-star".......................CORE......56
      .6.1.1870   MAX  ..................................................CORE......56
      .6.1.1880   MIN  ..................................................CORE......56
      .6.1.1890   MOD  ..................................................CORE......56
      .6.1.1900   MOVE  .................................................CORE......56
      .6.1.1910   NEGATE  ...............................................CORE......57
      .6.1.1980   OR  ...................................................CORE......57
      .6.1.1990   OVER  .................................................CORE......57
      .6.1.2033   POSTPONE  .............................................CORE......57
      .6.1.2050   QUIT  .................................................CORE......57
      .6.1.2060   R>  ...................."r-from".......................CORE......57
      .6.1.2070   R@  ...................."r-fetch"......................CORE......58
      .6.1.2120   RECURSE  ..............................................CORE......58
      .6.1.2140   REPEAT  ...............................................CORE......58
      .6.1.2160   ROT  ..................."rote".........................CORE......58
      .6.1.2162   RSHIFT  ................"r-shift"......................CORE......58
      .6.1.2165   S"  ...................."s-quote"......................CORE......58
      .6.1.2170   S>D  ..................."s-to-d".......................CORE......59
      .6.1.2210   SIGN  .................................................CORE......59
      .6.1.2214   SM/REM  ................"s-m-slash-rem"................CORE......59
      .6.1.2216   SOURCE  ...............................................CORE......59
      .6.1.2220   SPACE  ................................................CORE......59
      .6.1.2230   SPACES  ...............................................CORE......59
      .6.1.2250   STATE  ................................................CORE......59
      .6.1.2260   SWAP  .................................................CORE......60
      .6.1.2270   THEN  .................................................CORE......60
      .6.1.2310   TYPE  .................................................CORE......60
      .6.1.2320   U.  ...................."u-dot"........................CORE......60
      .6.1.2340   U<  ...................."u-less-than"..................CORE......60
      .6.1.2360   UM*  ..................."u-m-star".....................CORE......60
      .6.1.2370   UM/MOD  ................"u-m-slash-mod"................CORE......61
      .6.1.2380   UNLOOP  ...............................................CORE......61
      .6.1.2390   UNTIL  ................................................CORE......61
      .6.1.2410   VARIABLE  .............................................CORE......61
      .6.1.2430   WHILE  ................................................CORE......62
      .6.1.2450   WORD  .................................................CORE......62
      .6.1.2490   XOR  ..................."x-or".........................CORE......62
      .6.1.2500   [  ....................."left-bracket".................CORE......62
      .6.1.2510   [']  ..................."bracket-tick".................CORE......62
      .6.1.2520   [CHAR]  ................"bracket-char".................CORE......63
      .6.1.2540   ]  ....................."right-bracket"................CORE......63
      .6.2.0060   #TIB  .................."number-t-i-b".............CORE EXT......64
      .6.2.0200   .(  ...................."dot-paren"................CORE EXT......64
      .6.2.0210   .R  ...................."dot-r"....................CORE EXT......64
      .6.2.0260   0<>  ..................."zero-not-equals"..........CORE EXT......64
      .6.2.0280   0>  ...................."zero-greater".............CORE EXT......64
      .6.2.0340   2>R  ..................."two-to-r".................CORE EXT......64
      .6.2.0410   2R>  ..................."two-r-from"...............CORE EXT......64
      .6.2.0415   2R@  ..................."two-r-fetch"..............CORE EXT......65
      .6.2.0455   :NONAME  ..............."colon-no-name"............CORE EXT......65
      .6.2.0500   <>  ...................."not-equals"...............CORE EXT......65
      .6.2.0620   ?DO  ..................."question-do"..............CORE EXT......65
      .6.2.0700   AGAIN  ............................................CORE EXT......66
      .6.2.0855   C"  ...................."c-quote"..................CORE EXT......66
      .6.2.0873   CASE  .............................................CORE EXT......66
      .6.2.0945   COMPILE,  .............."compile-comma"............CORE EXT......66
      .6.2.0970   CONVERT  ..........................................CORE EXT......67
      .6.2.1342   ENDCASE  ..............."end-case".................CORE EXT......67
      .6.2.1343   ENDOF  ................."end-of"...................CORE EXT......67
      .6.2.1350   ERASE  ............................................CORE EXT......67
      .6.2.1390   EXPECT  ...........................................CORE EXT......68
      .6.2.1485   FALSE  ............................................CORE EXT......68
      .6.2.1660   HEX  ..............................................CORE EXT......68
      .6.2.1850   MARKER  ...........................................CORE EXT......68
      .6.2.1930   NIP  ..............................................CORE EXT......68
      .6.2.1950   OF  ...............................................CORE EXT......68
      .6.2.2000   PAD  ..............................................CORE EXT......69
      .6.2.2008   PARSE  ............................................CORE EXT......69
      .6.2.2030   PICK  .............................................CORE EXT......69
      .6.2.2040   QUERY  ............................................CORE EXT......69
      .6.2.2125   REFILL  ...........................................CORE EXT......69
      .6.2.2148   RESTORE-INPUT  ....................................CORE EXT......70
      .6.2.2150   ROLL  .............................................CORE EXT......70
      .6.2.2182   SAVE-INPUT  .......................................CORE EXT......70
      .6.2.2218   SOURCE-ID  ............."source-i-d"...............CORE EXT......70
      .6.2.2240   SPAN  .............................................CORE EXT......70
      .6.2.2290   TIB  ..................."t-i-b"....................CORE EXT......71
      .6.2.2295   TO  ...............................................CORE EXT......71
      .6.2.2298   TRUE  .............................................CORE EXT......71
      .6.2.2300   TUCK  .............................................CORE EXT......71
      .6.2.2330   U.R  ..................."u-dot-r"..................CORE EXT......71
      .6.2.2350   U>  ...................."u-greater-than"...........CORE EXT......71
      .6.2.2395   UNUSED  ...........................................CORE EXT......71
      .6.2.2405   VALUE  ............................................CORE EXT......72
      .6.2.2440   WITHIN  ...........................................CORE EXT......72
      .6.2.2530   [COMPILE]  ............."bracket-compile"..........CORE EXT......72
      .6.2.2535   \  ....................."backslash"................CORE EXT......72
     7.6.1.0790   BLK  ..................."b-l-k".......................BLOCK......75
     7.6.1.0800   BLOCK  ...............................................BLOCK......75
     7.6.1.0820   BUFFER  ..............................................BLOCK......76
     7.6.1.1360   EVALUATE  ............................................BLOCK......76
     7.6.1.1559   FLUSH  ...............................................BLOCK......76
     7.6.1.1790   LOAD  ................................................BLOCK......76
     7.6.1.2180   SAVE-BUFFERS  ........................................BLOCK......77
     7.6.1.2400   UPDATE  ..............................................BLOCK......77
     7.6.2.1330   EMPTY-BUFFERS  ...................................BLOCK EXT......77
     7.6.2.1770   LIST  ............................................BLOCK EXT......77
     7.6.2.2125   REFILL  ..........................................BLOCK EXT......77
     7.6.2.2190   SCR  ..................."s-c-r"...................BLOCK EXT......77
     7.6.2.2280   THRU  ............................................BLOCK EXT......78
     7.6.2.2535   \  ....................."backslash"...............BLOCK EXT......78
     8.6.1.0360   2CONSTANT  ............."two-constant"...............DOUBLE......80
     8.6.1.0390   2LITERAL  .............."two-literal"................DOUBLE......80
     8.6.1.0440   2VARIABLE  ............."two-variable"...............DOUBLE......81
     8.6.1.1040   D+  ...................."d-plus".....................DOUBLE......81
     8.6.1.1050   D-  ...................."d-minus"....................DOUBLE......81
     8.6.1.1060   D.  ...................."d-dot"......................DOUBLE......81
     8.6.1.1070   D.R  ..................."d-dot-r"....................DOUBLE......81
     8.6.1.1075   D0<  ..................."d-zero-less"................DOUBLE......81
     8.6.1.1080   D0=  ..................."d-zero-equals"..............DOUBLE......81
     8.6.1.1090   D2*  ..................."d-two-star".................DOUBLE......81
     8.6.1.1100   D2/  ..................."d-two-slash"................DOUBLE......82
     8.6.1.1110   D<  ...................."d-less-than"................DOUBLE......82
     8.6.1.1120   D=  ...................."d-equals"...................DOUBLE......82
     8.6.1.1140   D>S  ..................."d-to-s".....................DOUBLE......82
     8.6.1.1160   DABS  .................."d-abs"......................DOUBLE......82
     8.6.1.1210   DMAX  .................."d-max"......................DOUBLE......82
     8.6.1.1220   DMIN  .................."d-min"......................DOUBLE......82
     8.6.1.1230   DNEGATE  ..............."d-negate"...................DOUBLE......82
     8.6.1.1820   M*/  ..................."m-star-slash"...............DOUBLE......82
     8.6.1.1830   M+  ...................."m-plus".....................DOUBLE......82
     8.6.2.0420   2ROT  .................."two-rote"...............DOUBLE EXT......82
     8.6.2.1270   DU<  ..................."d-u-less"...............DOUBLE EXT......83
     9.6.1.0875   CATCH  ...........................................EXCEPTION......87
     9.6.1.2275   THROW  ...........................................EXCEPTION......87
     9.6.2.0670   ABORT  .......................................EXCEPTION EXT......88
     9.6.2.0680   ABORT"  ................"abort-quote".........EXCEPTION EXT......88
    10.6.1.0742   AT-XY  ................."at-x-y"...................FACILITY......90
    10.6.1.1755   KEY?  .................."key-question".............FACILITY......90
    10.6.1.2005   PAGE  .............................................FACILITY......91
    10.6.2.1305   EKEY  .................."e-key"................FACILITY EXT......91
    10.6.2.1306   EKEY>CHAR  ............."e-key-to-char"........FACILITY EXT......91
    10.6.2.1307   EKEY?  ................."e-key-question".......FACILITY EXT......91
    10.6.2.1325   EMIT?  ................."emit-question"........FACILITY EXT......91
    10.6.2.1905   MS  ...........................................FACILITY EXT......91
    10.6.2.2292   TIME&DATE  ............."time-and-date"........FACILITY EXT......92
    11.6.1.0080   (  ....................."paren"........................FILE......97
    11.6.1.0765   BIN  ..................................................FILE......97
    11.6.1.0900   CLOSE-FILE  ...........................................FILE......97
    11.6.1.1010   CREATE-FILE  ..........................................FILE......97
    11.6.1.1190   DELETE-FILE  ..........................................FILE......97
    11.6.1.1520   FILE-POSITION .........................................FILE......97
    11.6.1.1522   FILE-SIZE  ............................................FILE......97
    11.6.1.1717   INCLUDE-FILE  .........................................FILE......98
    11.6.1.1718   INCLUDED  .............................................FILE......98
    11.6.1.1970   OPEN-FILE  ............................................FILE......99
    11.6.1.2054   R/O  ..................."r-o"..........................FILE......99
    11.6.1.2056   R/W  ..................."r-w"..........................FILE......99
    11.6.1.2080   READ-FILE  ............................................FILE......99
    11.6.1.2090   READ-LINE  ............................................FILE.....100
    11.6.1.2142   REPOSITION-FILE  ......................................FILE.....100
    11.6.1.2147   RESIZE-FILE  ..........................................FILE.....100
    11.6.1.2165   S"  ...................."s-quote"......................FILE.....101
    11.6.1.2218   SOURCE-ID  ............."source-i-d"...................FILE.....101
    11.6.1.2425   W/O  ..................."w-o"..........................FILE.....101
    11.6.1.2480   WRITE-FILE  ...........................................FILE.....101
    11.6.1.2485   WRITE-LINE  ...........................................FILE.....102
    11.6.2.1524   FILE-STATUS  ......................................FILE EXT.....102
    11.6.2.1560   FLUSH-FILE  .......................................FILE EXT.....102
    11.6.2.2125   REFILL  ...........................................FILE EXT.....102
    11.6.2.2130   RENAME-FILE  ......................................FILE EXT.....102
    12.6.1.0558   >FLOAT  ................"to-float".................FLOATING.....108
    12.6.1.1130   D>F  ..................."d-to-f"...................FLOATING.....109
    12.6.1.1400   F!  ...................."f-store"..................FLOATING.....109
    12.6.1.1410   F*  ...................."f-star"...................FLOATING.....109
    12.6.1.1420   F+  ...................."f-plus"...................FLOATING.....109
    12.6.1.1425   F-  ...................."f-minus"..................FLOATING.....109
    12.6.1.1430   F/  ...................."f-slash"..................FLOATING.....109
    12.6.1.1440   F0<  ..................."f-zero-less-than".........FLOATING.....109
    12.6.1.1450   F0=  ..................."f-zero-equals"............FLOATING.....109
    12.6.1.1460   F<  ...................."f-less-than"..............FLOATING.....109
    12.6.1.1470   F>D  ..................."f-to-d"...................FLOATING.....110
    12.6.1.1472   F@  ...................."f-fetch"..................FLOATING.....110
    12.6.1.1479   FALIGN  ................"f-align"..................FLOATING.....110
    12.6.1.1483   FALIGNED  .............."f-aligned"................FLOATING.....110
    12.6.1.1492   FCONSTANT  ............."f-constant"...............FLOATING.....110
    12.6.1.1497   FDEPTH  ................"f-depth"..................FLOATING.....110
    12.6.1.1500   FDROP  ................."f-drop"...................FLOATING.....110
    12.6.1.1510   FDUP  .................."f-dupe"...................FLOATING.....110
    12.6.1.1552   FLITERAL  .............."f-literal"................FLOATING.....111
    12.6.1.1555   FLOAT+  ................"float-plus"...............FLOATING.....111
    12.6.1.1556   FLOATS  ...........................................FLOATING.....111
    12.6.1.1558   FLOOR  ............................................FLOATING.....111
    12.6.1.1562   FMAX  .................."f-max"....................FLOATING.....111
    12.6.1.1565   FMIN  .................."f-min"....................FLOATING.....111
    12.6.1.1567   FNEGATE  ..............."f-negate".................FLOATING.....111
    12.6.1.1600   FOVER  ................."f-over"...................FLOATING.....111
    12.6.1.1610   FROT  .................."f-rote"...................FLOATING.....111
    12.6.1.1612   FROUND  ................"f-round"..................FLOATING.....111
    12.6.1.1620   FSWAP  ................."f-swap"...................FLOATING.....111
    12.6.1.1630   FVARIABLE  ............."f-variable"...............FLOATING.....112
    12.6.1.2143   REPRESENT  ........................................FLOATING.....112
    12.6.2.1203   DF!  ..................."d-f-store"............FLOATING EXT.....112
    12.6.2.1204   DF@  ..................."d-f-fetch"............FLOATING EXT.....113
    12.6.2.1205   DFALIGN  ..............."d-f-align"............FLOATING EXT.....113
    12.6.2.1207   DFALIGNED  ............."d-f-aligned"..........FLOATING EXT.....113
    12.6.2.1208   DFLOAT+  ..............."d-float-plus".........FLOATING EXT.....113
    12.6.2.1209   DFLOATS  ..............."d-floats".............FLOATING EXT.....113
    12.6.2.1415   F**  ..................."f-star-star"..........FLOATING EXT.....113
    12.6.2.1427   F.  ...................."f-dot"................FLOATING EXT.....113
    12.6.2.1474   FABS  .................."f-abs"................FLOATING EXT.....114
    12.6.2.1476   FACOS  ................."f-a-cos"..............FLOATING EXT.....114
    12.6.2.1477   FACOSH  ................"f-a-cosh".............FLOATING EXT.....114
    12.6.2.1484   FALOG  ................."f-a-log"..............FLOATING EXT.....114
    12.6.2.1486   FASIN  ................."f-a-sine".............FLOATING EXT.....114
    12.6.2.1487   FASINH  ................"f-a-cinch"............FLOATING EXT.....114
    12.6.2.1488   FATAN  ................."f-a-tan"..............FLOATING EXT.....114
    12.6.2.1489   FATAN2  ................"f-a-tan-two"..........FLOATING EXT.....114
    12.6.2.1491   FATANH  ................"f-a-tan-h"............FLOATING EXT.....114
    12.6.2.1493   FCOS  .................."f-cos"................FLOATING EXT.....115
    12.6.2.1494   FCOSH  ................."f-cosh"...............FLOATING EXT.....115
    12.6.2.1513   FE.  ..................."f-e-dot"..............FLOATING EXT.....115
    12.6.2.1515   FEXP  .................."f-e-x-p"..............FLOATING EXT.....115
    12.6.2.1516   FEXPM1  ................"f-e-x-p-m-one"........FLOATING EXT.....115
    12.6.2.1553   FLN  ..................."f-l-n"................FLOATING EXT.....115
    12.6.2.1554   FLNP1  ................."f-l-n-p-one"..........FLOATING EXT.....115
    12.6.2.1557   FLOG  .................."f-log"................FLOATING EXT.....115
    12.6.2.1613   FS.  ..................."f-s-dot"..............FLOATING EXT.....115
    12.6.2.1614   FSIN  .................."f-sine"...............FLOATING EXT.....116
    12.6.2.1616   FSINCOS  ..............."f-sine-cos"...........FLOATING EXT.....116
    12.6.2.1617   FSINH  ................."f-cinch"..............FLOATING EXT.....116
    12.6.2.1618   FSQRT  ................."f-square-root"........FLOATING EXT.....116
    12.6.2.1625   FTAN  .................."f-tan"................FLOATING EXT.....116
    12.6.2.1626   FTANH  ................."f-tan-h"..............FLOATING EXT.....116
    12.6.2.1640   F~  ...................."f-proximate"..........FLOATING EXT.....116
    12.6.2.2035   PRECISION  ....................................FLOATING EXT.....117
    12.6.2.2200   SET-PRECISION  ................................FLOATING EXT.....117
    12.6.2.2202   SF!  ..................."s-f-store"............FLOATING EXT.....117
    12.6.2.2203   SF@  ..................."s-f-fetch"............FLOATING EXT.....117
    12.6.2.2204   SFALIGN  ..............."s-f-align"............FLOATING EXT.....117
    12.6.2.2206   SFALIGNED  ............."s-f-aligned"..........FLOATING EXT.....117
    12.6.2.2207   SFLOAT+  ..............."s-float-plus".........FLOATING EXT.....118
    12.6.2.2208   SFLOATS  ..............."s-floats".............FLOATING EXT.....118
    13.6.1.0086   (LOCAL)  ..............."paren-local-paren"...........LOCAL.....122
    13.6.1.2295   TO  ..................................................LOCAL.....123
    13.6.2.1795   LOCALS|  ..............."locals-bar"..............LOCAL EXT.....123
    14.6.1.0707   ALLOCATE  ...........................................MEMORY.....125
    14.6.1.1605   FREE  ...............................................MEMORY.....126
    14.6.1.2145   RESIZE  .............................................MEMORY.....126
    15.6.1.0220   .S  ...................."dot-s".......................TOOLS.....129
    15.6.1.0600   ?  ....................."question"....................TOOLS.....129
    15.6.1.1280   DUMP  ................................................TOOLS.....129
    15.6.1.2194   SEE  .................................................TOOLS.....129
    15.6.1.2465   WORDS  ...............................................TOOLS.....129
    15.6.2.0470   ;CODE  ................."semicolon-code"..........TOOLS EXT.....130
    15.6.2.0702   AHEAD  ...........................................TOOLS EXT.....130
    15.6.2.0740   ASSEMBLER  .......................................TOOLS EXT.....130
    15.6.2.0830   BYE  .............................................TOOLS EXT.....130
    15.6.2.0930   CODE  ............................................TOOLS EXT.....130
    15.6.2.1015   CS-PICK  ..............."c-s-pick"................TOOLS EXT.....131
    15.6.2.1020   CS-ROLL  ..............."c-s-roll"................TOOLS EXT.....131
    15.6.2.1300   EDITOR  ..........................................TOOLS EXT.....132
    15.6.2.1580   FORGET  ..........................................TOOLS EXT.....132
    15.6.2.2250   STATE  ...........................................TOOLS EXT.....132
    15.6.2.2531   [ELSE]  ................"bracket-else"............TOOLS EXT.....132
    15.6.2.2532   [IF]  .................."bracket-if"..............TOOLS EXT.....132
    15.6.2.2533   [THEN]  ................"bracket-then"............TOOLS EXT.....133
    16.6.1.1180   DEFINITIONS  ........................................SEARCH.....136
    16.6.1.1550   FIND  ...............................................SEARCH.....136
    16.6.1.1595   FORTH-WORDLIST  .....................................SEARCH.....137
    16.6.1.1643   GET-CURRENT  ........................................SEARCH.....137
    16.6.1.1647   GET-ORDER  ..........................................SEARCH.....137
    16.6.1.2192   SEARCH-WORDLIST  ....................................SEARCH.....137
    16.6.1.2195   SET-CURRENT  ........................................SEARCH.....137
    16.6.1.2197   SET-ORDER  ..........................................SEARCH.....137
    16.6.1.2460   WORDLIST  ...........................................SEARCH.....137
    16.6.2.0715   ALSO  ...........................................SEARCH EXT.....138
    16.6.2.1590   FORTH  ..........................................SEARCH EXT.....138
    16.6.2.1965   ONLY  ...........................................SEARCH EXT.....138
    16.6.2.1985   ORDER  ..........................................SEARCH EXT.....138
    16.6.2.2037   PREVIOUS  .......................................SEARCH EXT.....138
    17.6.1.0170   -TRAILING  ............."dash-trailing"..............STRING.....140
    17.6.1.0245   /STRING  ..............."slash-string"...............STRING.....140
    17.6.1.0780   BLANK  ..............................................STRING.....140
    17.6.1.0910   CMOVE  ................."c-move".....................STRING.....140
    17.6.1.0920   CMOVE>  ................"c-move-up"..................STRING.....140
    17.6.1.0935   COMPARE  ............................................STRING.....140
    17.6.1.2191   SEARCH  .............................................STRING.....141
    17.6.1.2212   SLITERAL  ...........................................STRING.....141
    
  • prof_brainoprof_braino Posts: 4,313
    edited 2012-10-14 16:46
    Dave Hein wrote: »
    A full ANSI implementation doesn't look that daunting. Appendix F in the standard gives an alphabetical list of all the words. I have included that below. There's a total of 371 words. However, you only have to implement the 133 CORE words to be ANSI standard. The other words are optional. Of course many of the optional words are included in most Forth implementations.

    My $0.02 on the standard-

    The "standard" words don't always make sense. In the case of propforth, for example, the "store" ! and "fetch" @ words don't makes much sense.
    These words are defined as "per the cell size". In the COG, cells are long; but in HUB cells are bytes, but they are word aligned. So which it it for store and fetch?

    So the answer is "none of the above".

    If you want cog, you use COG! and COG@, these act on a long in cog memory.
    If you want hub memory, you use C@ and C! for byte, and W@ and W! for words.

    So in the case of store and fetch and propforth, these will never be implemented, for an obviously sound reason. If that means its not compliant to the standard, then its a good thing.

    Also there are the words CREATE and DOES>

    CREATE starts a definition, and leaves the address on the stack. Propforth's dictionary doesn't work that way, So create is not implemented.

    DOES> identifies the run time behavior of a an immediate (compile time) function. We decided that this is a bad idea, we should just have compile time words at compile time, and run time words are run time. We reached this conclusion since DOES> is always the toughest word to learn how to use, and the source of a large number of mistakes. Also, one can easily have the same compile time functionality and run time functionality by using two separate words, so DOES> buys us nothing but trouble.

    "Standard" just means "generic". An actual implementation on a micro controller is NOT generic, it is specific to the micro controller, just as is assembler.

    As far as sorting the words into functional groups, the doc you see was done by Brian when he was learning about pf4.0. If you wish to update the list per the current release, this would be a good learning exercise, and of benefit to other folks that like to organize things the same way you do. Be aware that 5.3 is coming out soon, and there may be some differences from 5.0.3 to 5.3, just as there may have been differences from 4.0 to 5.0.3. (I think all the changes are internal to the system and not visible to the user, but I could be wrong).
  • Dave HeinDave Hein Posts: 6,347
    edited 2012-10-14 18:57
    It seems like ! and @ are pretty fundamental, so I would think they should be in any Forth implementation. I suppose for compatibility purposes they can be easily mapped into W! and W@ by adding ": ! W! ;" and ": @ W@ ;" to the dictionary.

    I've spent most of the weekend learning Forth by writing an interpreter. I've implemented 93 out of the 133 ANSI core words. 67 of them are in the kernel and 26 in a dictionary. I'm hoping to knock out the remaining 40 in a couple of more days, but that might be optimistic.
  • prof_brainoprof_braino Posts: 4,313
    edited 2012-10-14 19:50
    Are you writing a generic forth interpreter, or for a specific chip?

    Notice, that on the prop, if you REALLY must have @ and !, you can define them to point to COG@ and COG!; or they could point to W@ and W! on the prop. But this would only be correct half the time, since the cell size in the COG is long and cell size in the HUB is word. If its not right all the time, its not right. So its wrong. (For me, anybody else can do anything they want).

    Also notice in "regular" forth implementations, C! and C@, W@ and W! explicitly define the size being addressed; while @ and ! leave you to guess. This is not a problem (as you probably know the cell size on the processor you are working on), but does give you a problem when you try to port you code to a new processor or forget or otherwise don't know the cell size. This has been a stumbling block for years. We decided that it is best to be explicit in all cases.

    The "standard" is just a generic example, and we are not required to implement ANY of it. We are completely free to make any engineering decisions that allow us to do our job easier. Sometimes it helps to find what the experts learned when they had to make this decision many times before. But we are still encouraged to make our own mistakes and learn for ourselves.
  • Dave HeinDave Hein Posts: 6,347
    edited 2012-10-14 20:51
    Yes, the difference in addressing between the cog and the hub does make it confusing. This issue was resolved in PropGCC by using byte addresses in the assembler for the cog. It makes hub and cog addressing act the same. The cell size can be determined from CELL+, or there may be some other word defined that explicitly gives the cell size. It seems like the cell size should match the machine word size, which would be 32 bits for the Prop.

    I understand that Forth can be implemented anyway a person wants to. Of course, it can't be claimed to be standard Forth unless it implements all of the core words. It seems that standards-compliance and portability isn't a priority in the Forth world like it is for other languages. I tend to like the predictability of standards compliance and portability, which is why I'm implementing the ANS core words.

    Currently, I'm developing my interpreter under cygwin on my PC. It's written in C, and I plan on porting it to the Prop at some point. As I said, this is more of a learning experience for me than actually producing something that is practical.
  • prof_brainoprof_braino Posts: 4,313
    edited 2012-10-15 05:24
    Dave Hein wrote: »
    This issue was resolved in PropGCC by using byte addresses in the assembler for the cog. It makes hub and cog addressing act the same. It seems like the cell size should match the machine word size, which would be 32 bits for the Prop.

    So if you use 32 bits, and byte, you have a problem. You have impliment tons of overhead to resolve this when a simple design decision would have solved it. Your choice. But, if you stick with it, you will see how the other choice would have had merits.
    I understand that Forth can be implemented anyway a person wants to. Of course, it can't be claimed to be standard Forth unless it implements all of the core words. It seems that standards-compliance and portability isn't a priority in the Forth world like it is for other languages. I tend to like the predictability of standards compliance and portability, which is why I'm implementing the ANS core words.

    The people the wrote the standard told me the standard is just a guideline. That is, we DON'T need to to implement every word. The standard it so that if we DO implement a word, we know how other folks did it. That is all. In fact, they said it would be detrimental to implement them all, since some are contradictory and only present for historical reasons. The real point is we are supposed to do what we need to accomplish the task at hand, not to comply with some irrelevant tome. But your exercise is a good one, it will show you the reality of this statement (or not).
    Currently, I'm developing my interpreter under cygwin on my PC. It's written in C, and I plan on porting it to the Prop at some point. As I said, this is more of a learning experience for me than actually producing something that is practical.

    If you write it in C, it might be "like" forth, but forth is written in forth. THAT's an indication of whether its forth or simply "forth-like". But it is a good experiment. Can you post your code? (In a different thread, we are high-jacking this one).
  • LoopyBytelooseLoopyByteloose Posts: 12,537
    edited 2012-10-15 05:58
    Dave Hein wrote: »
    OK, here the list sorted by section number, which groups the functional groups.
      .6.1.0010   !  ....................."store"........................CORE......41
      .6.1.0030   #  ....................."number-sign"..................CORE......41
      .6.1.0040   #>  ...................."number-sign-greater"..........CORE......41
      .6.1.0050   #S  ...................."number-sign-s"................CORE......41
      .6.1.0070   '  ....................."tick".........................CORE......41
      .6.1.0080   (  ....................."paren"........................CORE......41
      .6.1.0090   *  ....................."star".........................CORE......42
      .6.1.0100   */ ....................."star-slash"...................CORE......42
      .6.1.0110   */MOD  ................."star-slash-mod"...............CORE......42
      .6.1.0120   +  ....................."plus".........................CORE......42
      .6.1.0130   +!  ...................."plus-store"...................CORE......42
      .6.1.0140   +LOOP  ................."plus-loop"....................CORE......42
      .6.1.0150   ,  ....................."comma"........................CORE......43
      .6.1.0160   -  ....................."minus"........................CORE......43
      .6.1.0180   .  ....................."dot"..........................CORE......43
      .6.1.0190   ."  ...................."dot-quote"....................CORE......43
      .6.1.0230   /  ....................."slash"........................CORE......44
      .6.1.0240   /MOD  .................."slash-mod"....................CORE......44
      .6.1.0250   0<  ...................."zero-less"....................CORE......44
      .6.1.0270   0=  ...................."zero-equals"..................CORE......44
      .6.1.0290   1+  ...................."one-plus".....................CORE......44
      .6.1.0300   1-  ...................."one-minus"....................CORE......44
      .6.1.0310   2!  ...................."two-store"....................CORE......44
      .6.1.0320   2*  ...................."two-star".....................CORE......44
      .6.1.0330   2/  ...................."two-slash"....................CORE......44
      .6.1.0350   2@  ...................."two-fetch"....................CORE......45
      .6.1.0370   2DROP  ................."two-drop".....................CORE......45
      .6.1.0380   2DUP  .................."two-dupe".....................CORE......45
      .6.1.0400   2OVER  ................."two-over".....................CORE......45
      .6.1.0430   2SWAP  ................."two-swap".....................CORE......45
      .6.1.0450   :  ....................."colon"........................CORE......45
      .6.1.0460   ;  ....................."semicolon"....................CORE......45
      .6.1.0480   <  ....................."less-than"....................CORE......46
      .6.1.0490   <#  ...................."less-number-sign".............CORE......46
      .6.1.0530   =  ....................."equals".......................CORE......46
      .6.1.0540   >  ....................."greater-than".................CORE......46
      .6.1.0550   >BODY  ................."to-body"......................CORE......46
      .6.1.0560   >IN  ..................."to-in"........................CORE......46
      .6.1.0570   >NUMBER  ..............."to-number"....................CORE......46
      .6.1.0580   >R  ...................."to-r".........................CORE......47
      .6.1.0630   ?DUP  .................."question-dupe"................CORE......47
      .6.1.0650   @  ....................."fetch"........................CORE......47
      .6.1.0670   ABORT  ................................................CORE......47
      .6.1.0680   ABORT"  ................"abort-quote"..................CORE......47
      .6.1.0690   ABS  ..................."abs"..........................CORE......47
      .6.1.0695   ACCEPT  ...............................................CORE......48
      .6.1.0705   ALIGN  ................................................CORE......48
      .6.1.0706   ALIGNED  ..............................................CORE......48
      .6.1.0710   ALLOT  ................................................CORE......48
      .6.1.0720   AND  ..................................................CORE......48
      .6.1.0750   BASE  .................................................CORE......49
      .6.1.0760   BEGIN  ................................................CORE......49
      .6.1.0770   BL  ...................."b-l"..........................CORE......49
      .6.1.0850   C!  ...................."c-store"......................CORE......49
      .6.1.0860   C,  ...................."c-comma"......................CORE......49
      .6.1.0870   C@  ...................."c-fetch"......................CORE......49
      .6.1.0880   CELL+  ................."cell-plus"....................CORE......49
      .6.1.0890   CELLS  ................................................CORE......50
      .6.1.0895   CHAR  .................."char".........................CORE......50
      .6.1.0897   CHAR+ .................."char-plus"....................CORE......50
      .6.1.0898   CHARS  ................."chars"........................CORE......50
      .6.1.0950   CONSTANT  .............................................CORE......50
      .6.1.0980   COUNT  ................................................CORE......50
      .6.1.0990   CR  ...................."c-r"..........................CORE......50
      .6.1.1000   CREATE  ...............................................CORE......50
      .6.1.1170   DECIMAL  ..............................................CORE......51
      .6.1.1200   DEPTH  ................................................CORE......51
      .6.1.1240   DO  ...................................................CORE......51
      .6.1.1250   DOES>  ................."does".........................CORE......51
      .6.1.1260   DROP  .................................................CORE......52
      .6.1.1290   DUP  ..................."dupe".........................CORE......52
      .6.1.1310   ELSE  .................................................CORE......52
      .6.1.1320   EMIT  .................................................CORE......52
      .6.1.1345   ENVIRONMENT?  .........."environment-query"............CORE......53
      .6.1.1360   EVALUATE  .............................................CORE......53
      .6.1.1370   EXECUTE  ..............................................CORE......53
      .6.1.1380   EXIT  .................................................CORE......53
      .6.1.1540   FILL  .................................................CORE......53
      .6.1.1550   FIND  .................................................CORE......53
      .6.1.1561   FM/MOD  ................"f-m-slash-mod"................CORE......54
      .6.1.1650   HERE  .................................................CORE......54
      .6.1.1670   HOLD  .................................................CORE......54
      .6.1.1680   I  ....................................................CORE......54
      .6.1.1700   IF  ...................................................CORE......54
      .6.1.1710   IMMEDIATE  ............................................CORE......54
      .6.1.1720   INVERT  ...............................................CORE......55
      .6.1.1730   J  ....................................................CORE......55
      .6.1.1750   KEY  ..................................................CORE......55
      .6.1.1760   LEAVE  ................................................CORE......56
      .6.1.1780   LITERAL  ..............................................CORE......76
      .6.1.1800   LOOP  .................................................CORE......56
      .6.1.1805   LSHIFT  ................"l-shift"......................CORE......56
      .6.1.1810   M*  ...................."m-star".......................CORE......56
      .6.1.1870   MAX  ..................................................CORE......56
      .6.1.1880   MIN  ..................................................CORE......56
      .6.1.1890   MOD  ..................................................CORE......56
      .6.1.1900   MOVE  .................................................CORE......56
      .6.1.1910   NEGATE  ...............................................CORE......57
      .6.1.1980   OR  ...................................................CORE......57
      .6.1.1990   OVER  .................................................CORE......57
      .6.1.2033   POSTPONE  .............................................CORE......57
      .6.1.2050   QUIT  .................................................CORE......57
      .6.1.2060   R>  ...................."r-from".......................CORE......57
      .6.1.2070   R@  ...................."r-fetch"......................CORE......58
      .6.1.2120   RECURSE  ..............................................CORE......58
      .6.1.2140   REPEAT  ...............................................CORE......58
      .6.1.2160   ROT  ..................."rote".........................CORE......58
      .6.1.2162   RSHIFT  ................"r-shift"......................CORE......58
      .6.1.2165   S"  ...................."s-quote"......................CORE......58
      .6.1.2170   S>D  ..................."s-to-d".......................CORE......59
      .6.1.2210   SIGN  .................................................CORE......59
      .6.1.2214   SM/REM  ................"s-m-slash-rem"................CORE......59
      .6.1.2216   SOURCE  ...............................................CORE......59
      .6.1.2220   SPACE  ................................................CORE......59
      .6.1.2230   SPACES  ...............................................CORE......59
      .6.1.2250   STATE  ................................................CORE......59
      .6.1.2260   SWAP  .................................................CORE......60
      .6.1.2270   THEN  .................................................CORE......60
      .6.1.2310   TYPE  .................................................CORE......60
      .6.1.2320   U.  ...................."u-dot"........................CORE......60
      .6.1.2340   U<  ...................."u-less-than"..................CORE......60
      .6.1.2360   UM*  ..................."u-m-star".....................CORE......60
      .6.1.2370   UM/MOD  ................"u-m-slash-mod"................CORE......61
      .6.1.2380   UNLOOP  ...............................................CORE......61
      .6.1.2390   UNTIL  ................................................CORE......61
      .6.1.2410   VARIABLE  .............................................CORE......61
      .6.1.2430   WHILE  ................................................CORE......62
      .6.1.2450   WORD  .................................................CORE......62
      .6.1.2490   XOR  ..................."x-or".........................CORE......62
      .6.1.2500   [  ....................."left-bracket".................CORE......62
      .6.1.2510   [']  ..................."bracket-tick".................CORE......62
      .6.1.2520   [CHAR]  ................"bracket-char".................CORE......63
      .6.1.2540   ]  ....................."right-bracket"................CORE......63
      .6.2.0060   #TIB  .................."number-t-i-b".............CORE EXT......64
      .6.2.0200   .(  ...................."dot-paren"................CORE EXT......64
      .6.2.0210   .R  ...................."dot-r"....................CORE EXT......64
      .6.2.0260   0<>  ..................."zero-not-equals"..........CORE EXT......64
      .6.2.0280   0>  ...................."zero-greater".............CORE EXT......64
      .6.2.0340   2>R  ..................."two-to-r".................CORE EXT......64
      .6.2.0410   2R>  ..................."two-r-from"...............CORE EXT......64
      .6.2.0415   2R@  ..................."two-r-fetch"..............CORE EXT......65
      .6.2.0455   :NONAME  ..............."colon-no-name"............CORE EXT......65
      .6.2.0500   <>  ...................."not-equals"...............CORE EXT......65
      .6.2.0620   ?DO  ..................."question-do"..............CORE EXT......65
      .6.2.0700   AGAIN  ............................................CORE EXT......66
      .6.2.0855   C"  ...................."c-quote"..................CORE EXT......66
      .6.2.0873   CASE  .............................................CORE EXT......66
      .6.2.0945   COMPILE,  .............."compile-comma"............CORE EXT......66
      .6.2.0970   CONVERT  ..........................................CORE EXT......67
      .6.2.1342   ENDCASE  ..............."end-case".................CORE EXT......67
      .6.2.1343   ENDOF  ................."end-of"...................CORE EXT......67
      .6.2.1350   ERASE  ............................................CORE EXT......67
      .6.2.1390   EXPECT  ...........................................CORE EXT......68
      .6.2.1485   FALSE  ............................................CORE EXT......68
      .6.2.1660   HEX  ..............................................CORE EXT......68
      .6.2.1850   MARKER  ...........................................CORE EXT......68
      .6.2.1930   NIP  ..............................................CORE EXT......68
      .6.2.1950   OF  ...............................................CORE EXT......68
      .6.2.2000   PAD  ..............................................CORE EXT......69
      .6.2.2008   PARSE  ............................................CORE EXT......69
      .6.2.2030   PICK  .............................................CORE EXT......69
      .6.2.2040   QUERY  ............................................CORE EXT......69
      .6.2.2125   REFILL  ...........................................CORE EXT......69
      .6.2.2148   RESTORE-INPUT  ....................................CORE EXT......70
      .6.2.2150   ROLL  .............................................CORE EXT......70
      .6.2.2182   SAVE-INPUT  .......................................CORE EXT......70
      .6.2.2218   SOURCE-ID  ............."source-i-d"...............CORE EXT......70
      .6.2.2240   SPAN  .............................................CORE EXT......70
      .6.2.2290   TIB  ..................."t-i-b"....................CORE EXT......71
      .6.2.2295   TO  ...............................................CORE EXT......71
      .6.2.2298   TRUE  .............................................CORE EXT......71
      .6.2.2300   TUCK  .............................................CORE EXT......71
      .6.2.2330   U.R  ..................."u-dot-r"..................CORE EXT......71
      .6.2.2350   U>  ...................."u-greater-than"...........CORE EXT......71
      .6.2.2395   UNUSED  ...........................................CORE EXT......71
      .6.2.2405   VALUE  ............................................CORE EXT......72
      .6.2.2440   WITHIN  ...........................................CORE EXT......72
      .6.2.2530   [COMPILE]  ............."bracket-compile"..........CORE EXT......72
      .6.2.2535   \  ....................."backslash"................CORE EXT......72
     7.6.1.0790   BLK  ..................."b-l-k".......................BLOCK......75
     7.6.1.0800   BLOCK  ...............................................BLOCK......75
     7.6.1.0820   BUFFER  ..............................................BLOCK......76
     7.6.1.1360   EVALUATE  ............................................BLOCK......76
     7.6.1.1559   FLUSH  ...............................................BLOCK......76
     7.6.1.1790   LOAD  ................................................BLOCK......76
     7.6.1.2180   SAVE-BUFFERS  ........................................BLOCK......77
     7.6.1.2400   UPDATE  ..............................................BLOCK......77
     7.6.2.1330   EMPTY-BUFFERS  ...................................BLOCK EXT......77
     7.6.2.1770   LIST  ............................................BLOCK EXT......77
     7.6.2.2125   REFILL  ..........................................BLOCK EXT......77
     7.6.2.2190   SCR  ..................."s-c-r"...................BLOCK EXT......77
     7.6.2.2280   THRU  ............................................BLOCK EXT......78
     7.6.2.2535   \  ....................."backslash"...............BLOCK EXT......78
     8.6.1.0360   2CONSTANT  ............."two-constant"...............DOUBLE......80
     8.6.1.0390   2LITERAL  .............."two-literal"................DOUBLE......80
     8.6.1.0440   2VARIABLE  ............."two-variable"...............DOUBLE......81
     8.6.1.1040   D+  ...................."d-plus".....................DOUBLE......81
     8.6.1.1050   D-  ...................."d-minus"....................DOUBLE......81
     8.6.1.1060   D.  ...................."d-dot"......................DOUBLE......81
     8.6.1.1070   D.R  ..................."d-dot-r"....................DOUBLE......81
     8.6.1.1075   D0<  ..................."d-zero-less"................DOUBLE......81
     8.6.1.1080   D0=  ..................."d-zero-equals"..............DOUBLE......81
     8.6.1.1090   D2*  ..................."d-two-star".................DOUBLE......81
     8.6.1.1100   D2/  ..................."d-two-slash"................DOUBLE......82
     8.6.1.1110   D<  ...................."d-less-than"................DOUBLE......82
     8.6.1.1120   D=  ...................."d-equals"...................DOUBLE......82
     8.6.1.1140   D>S  ..................."d-to-s".....................DOUBLE......82
     8.6.1.1160   DABS  .................."d-abs"......................DOUBLE......82
     8.6.1.1210   DMAX  .................."d-max"......................DOUBLE......82
     8.6.1.1220   DMIN  .................."d-min"......................DOUBLE......82
     8.6.1.1230   DNEGATE  ..............."d-negate"...................DOUBLE......82
     8.6.1.1820   M*/  ..................."m-star-slash"...............DOUBLE......82
     8.6.1.1830   M+  ...................."m-plus".....................DOUBLE......82
     8.6.2.0420   2ROT  .................."two-rote"...............DOUBLE EXT......82
     8.6.2.1270   DU<  ..................."d-u-less"...............DOUBLE EXT......83
     9.6.1.0875   CATCH  ...........................................EXCEPTION......87
     9.6.1.2275   THROW  ...........................................EXCEPTION......87
     9.6.2.0670   ABORT  .......................................EXCEPTION EXT......88
     9.6.2.0680   ABORT"  ................"abort-quote".........EXCEPTION EXT......88
    10.6.1.0742   AT-XY  ................."at-x-y"...................FACILITY......90
    10.6.1.1755   KEY?  .................."key-question".............FACILITY......90
    10.6.1.2005   PAGE  .............................................FACILITY......91
    10.6.2.1305   EKEY  .................."e-key"................FACILITY EXT......91
    10.6.2.1306   EKEY>CHAR  ............."e-key-to-char"........FACILITY EXT......91
    10.6.2.1307   EKEY?  ................."e-key-question".......FACILITY EXT......91
    10.6.2.1325   EMIT?  ................."emit-question"........FACILITY EXT......91
    10.6.2.1905   MS  ...........................................FACILITY EXT......91
    10.6.2.2292   TIME&DATE  ............."time-and-date"........FACILITY EXT......92
    11.6.1.0080   (  ....................."paren"........................FILE......97
    11.6.1.0765   BIN  ..................................................FILE......97
    11.6.1.0900   CLOSE-FILE  ...........................................FILE......97
    11.6.1.1010   CREATE-FILE  ..........................................FILE......97
    11.6.1.1190   DELETE-FILE  ..........................................FILE......97
    11.6.1.1520   FILE-POSITION .........................................FILE......97
    11.6.1.1522   FILE-SIZE  ............................................FILE......97
    11.6.1.1717   INCLUDE-FILE  .........................................FILE......98
    11.6.1.1718   INCLUDED  .............................................FILE......98
    11.6.1.1970   OPEN-FILE  ............................................FILE......99
    11.6.1.2054   R/O  ..................."r-o"..........................FILE......99
    11.6.1.2056   R/W  ..................."r-w"..........................FILE......99
    11.6.1.2080   READ-FILE  ............................................FILE......99
    11.6.1.2090   READ-LINE  ............................................FILE.....100
    11.6.1.2142   REPOSITION-FILE  ......................................FILE.....100
    11.6.1.2147   RESIZE-FILE  ..........................................FILE.....100
    11.6.1.2165   S"  ...................."s-quote"......................FILE.....101
    11.6.1.2218   SOURCE-ID  ............."source-i-d"...................FILE.....101
    11.6.1.2425   W/O  ..................."w-o"..........................FILE.....101
    11.6.1.2480   WRITE-FILE  ...........................................FILE.....101
    11.6.1.2485   WRITE-LINE  ...........................................FILE.....102
    11.6.2.1524   FILE-STATUS  ......................................FILE EXT.....102
    11.6.2.1560   FLUSH-FILE  .......................................FILE EXT.....102
    11.6.2.2125   REFILL  ...........................................FILE EXT.....102
    11.6.2.2130   RENAME-FILE  ......................................FILE EXT.....102
    12.6.1.0558   >FLOAT  ................"to-float".................FLOATING.....108
    12.6.1.1130   D>F  ..................."d-to-f"...................FLOATING.....109
    12.6.1.1400   F!  ...................."f-store"..................FLOATING.....109
    12.6.1.1410   F*  ...................."f-star"...................FLOATING.....109
    12.6.1.1420   F+  ...................."f-plus"...................FLOATING.....109
    12.6.1.1425   F-  ...................."f-minus"..................FLOATING.....109
    12.6.1.1430   F/  ...................."f-slash"..................FLOATING.....109
    12.6.1.1440   F0<  ..................."f-zero-less-than".........FLOATING.....109
    12.6.1.1450   F0=  ..................."f-zero-equals"............FLOATING.....109
    12.6.1.1460   F<  ...................."f-less-than"..............FLOATING.....109
    12.6.1.1470   F>D  ..................."f-to-d"...................FLOATING.....110
    12.6.1.1472   F@  ...................."f-fetch"..................FLOATING.....110
    12.6.1.1479   FALIGN  ................"f-align"..................FLOATING.....110
    12.6.1.1483   FALIGNED  .............."f-aligned"................FLOATING.....110
    12.6.1.1492   FCONSTANT  ............."f-constant"...............FLOATING.....110
    12.6.1.1497   FDEPTH  ................"f-depth"..................FLOATING.....110
    12.6.1.1500   FDROP  ................."f-drop"...................FLOATING.....110
    12.6.1.1510   FDUP  .................."f-dupe"...................FLOATING.....110
    12.6.1.1552   FLITERAL  .............."f-literal"................FLOATING.....111
    12.6.1.1555   FLOAT+  ................"float-plus"...............FLOATING.....111
    12.6.1.1556   FLOATS  ...........................................FLOATING.....111
    12.6.1.1558   FLOOR  ............................................FLOATING.....111
    12.6.1.1562   FMAX  .................."f-max"....................FLOATING.....111
    12.6.1.1565   FMIN  .................."f-min"....................FLOATING.....111
    12.6.1.1567   FNEGATE  ..............."f-negate".................FLOATING.....111
    12.6.1.1600   FOVER  ................."f-over"...................FLOATING.....111
    12.6.1.1610   FROT  .................."f-rote"...................FLOATING.....111
    12.6.1.1612   FROUND  ................"f-round"..................FLOATING.....111
    12.6.1.1620   FSWAP  ................."f-swap"...................FLOATING.....111
    12.6.1.1630   FVARIABLE  ............."f-variable"...............FLOATING.....112
    12.6.1.2143   REPRESENT  ........................................FLOATING.....112
    12.6.2.1203   DF!  ..................."d-f-store"............FLOATING EXT.....112
    12.6.2.1204   DF@  ..................."d-f-fetch"............FLOATING EXT.....113
    12.6.2.1205   DFALIGN  ..............."d-f-align"............FLOATING EXT.....113
    12.6.2.1207   DFALIGNED  ............."d-f-aligned"..........FLOATING EXT.....113
    12.6.2.1208   DFLOAT+  ..............."d-float-plus".........FLOATING EXT.....113
    12.6.2.1209   DFLOATS  ..............."d-floats".............FLOATING EXT.....113
    12.6.2.1415   F**  ..................."f-star-star"..........FLOATING EXT.....113
    12.6.2.1427   F.  ...................."f-dot"................FLOATING EXT.....113
    12.6.2.1474   FABS  .................."f-abs"................FLOATING EXT.....114
    12.6.2.1476   FACOS  ................."f-a-cos"..............FLOATING EXT.....114
    12.6.2.1477   FACOSH  ................"f-a-cosh".............FLOATING EXT.....114
    12.6.2.1484   FALOG  ................."f-a-log"..............FLOATING EXT.....114
    12.6.2.1486   FASIN  ................."f-a-sine".............FLOATING EXT.....114
    12.6.2.1487   FASINH  ................"f-a-cinch"............FLOATING EXT.....114
    12.6.2.1488   FATAN  ................."f-a-tan"..............FLOATING EXT.....114
    12.6.2.1489   FATAN2  ................"f-a-tan-two"..........FLOATING EXT.....114
    12.6.2.1491   FATANH  ................"f-a-tan-h"............FLOATING EXT.....114
    12.6.2.1493   FCOS  .................."f-cos"................FLOATING EXT.....115
    12.6.2.1494   FCOSH  ................."f-cosh"...............FLOATING EXT.....115
    12.6.2.1513   FE.  ..................."f-e-dot"..............FLOATING EXT.....115
    12.6.2.1515   FEXP  .................."f-e-x-p"..............FLOATING EXT.....115
    12.6.2.1516   FEXPM1  ................"f-e-x-p-m-one"........FLOATING EXT.....115
    12.6.2.1553   FLN  ..................."f-l-n"................FLOATING EXT.....115
    12.6.2.1554   FLNP1  ................."f-l-n-p-one"..........FLOATING EXT.....115
    12.6.2.1557   FLOG  .................."f-log"................FLOATING EXT.....115
    12.6.2.1613   FS.  ..................."f-s-dot"..............FLOATING EXT.....115
    12.6.2.1614   FSIN  .................."f-sine"...............FLOATING EXT.....116
    12.6.2.1616   FSINCOS  ..............."f-sine-cos"...........FLOATING EXT.....116
    12.6.2.1617   FSINH  ................."f-cinch"..............FLOATING EXT.....116
    12.6.2.1618   FSQRT  ................."f-square-root"........FLOATING EXT.....116
    12.6.2.1625   FTAN  .................."f-tan"................FLOATING EXT.....116
    12.6.2.1626   FTANH  ................."f-tan-h"..............FLOATING EXT.....116
    12.6.2.1640   F~  ...................."f-proximate"..........FLOATING EXT.....116
    12.6.2.2035   PRECISION  ....................................FLOATING EXT.....117
    12.6.2.2200   SET-PRECISION  ................................FLOATING EXT.....117
    12.6.2.2202   SF!  ..................."s-f-store"............FLOATING EXT.....117
    12.6.2.2203   SF@  ..................."s-f-fetch"............FLOATING EXT.....117
    12.6.2.2204   SFALIGN  ..............."s-f-align"............FLOATING EXT.....117
    12.6.2.2206   SFALIGNED  ............."s-f-aligned"..........FLOATING EXT.....117
    12.6.2.2207   SFLOAT+  ..............."s-float-plus".........FLOATING EXT.....118
    12.6.2.2208   SFLOATS  ..............."s-floats".............FLOATING EXT.....118
    13.6.1.0086   (LOCAL)  ..............."paren-local-paren"...........LOCAL.....122
    13.6.1.2295   TO  ..................................................LOCAL.....123
    13.6.2.1795   LOCALS|  ..............."locals-bar"..............LOCAL EXT.....123
    14.6.1.0707   ALLOCATE  ...........................................MEMORY.....125
    14.6.1.1605   FREE  ...............................................MEMORY.....126
    14.6.1.2145   RESIZE  .............................................MEMORY.....126
    15.6.1.0220   .S  ...................."dot-s".......................TOOLS.....129
    15.6.1.0600   ?  ....................."question"....................TOOLS.....129
    15.6.1.1280   DUMP  ................................................TOOLS.....129
    15.6.1.2194   SEE  .................................................TOOLS.....129
    15.6.1.2465   WORDS  ...............................................TOOLS.....129
    15.6.2.0470   ;CODE  ................."semicolon-code"..........TOOLS EXT.....130
    15.6.2.0702   AHEAD  ...........................................TOOLS EXT.....130
    15.6.2.0740   ASSEMBLER  .......................................TOOLS EXT.....130
    15.6.2.0830   BYE  .............................................TOOLS EXT.....130
    15.6.2.0930   CODE  ............................................TOOLS EXT.....130
    15.6.2.1015   CS-PICK  ..............."c-s-pick"................TOOLS EXT.....131
    15.6.2.1020   CS-ROLL  ..............."c-s-roll"................TOOLS EXT.....131
    15.6.2.1300   EDITOR  ..........................................TOOLS EXT.....132
    15.6.2.1580   FORGET  ..........................................TOOLS EXT.....132
    15.6.2.2250   STATE  ...........................................TOOLS EXT.....132
    15.6.2.2531   [ELSE]  ................"bracket-else"............TOOLS EXT.....132
    15.6.2.2532   [IF]  .................."bracket-if"..............TOOLS EXT.....132
    15.6.2.2533   [THEN]  ................"bracket-then"............TOOLS EXT.....133
    16.6.1.1180   DEFINITIONS  ........................................SEARCH.....136
    16.6.1.1550   FIND  ...............................................SEARCH.....136
    16.6.1.1595   FORTH-WORDLIST  .....................................SEARCH.....137
    16.6.1.1643   GET-CURRENT  ........................................SEARCH.....137
    16.6.1.1647   GET-ORDER  ..........................................SEARCH.....137
    16.6.1.2192   SEARCH-WORDLIST  ....................................SEARCH.....137
    16.6.1.2195   SET-CURRENT  ........................................SEARCH.....137
    16.6.1.2197   SET-ORDER  ..........................................SEARCH.....137
    16.6.1.2460   WORDLIST  ...........................................SEARCH.....137
    16.6.2.0715   ALSO  ...........................................SEARCH EXT.....138
    16.6.2.1590   FORTH  ..........................................SEARCH EXT.....138
    16.6.2.1965   ONLY  ...........................................SEARCH EXT.....138
    16.6.2.1985   ORDER  ..........................................SEARCH EXT.....138
    16.6.2.2037   PREVIOUS  .......................................SEARCH EXT.....138
    17.6.1.0170   -TRAILING  ............."dash-trailing"..............STRING.....140
    17.6.1.0245   /STRING  ..............."slash-string"...............STRING.....140
    17.6.1.0780   BLANK  ..............................................STRING.....140
    17.6.1.0910   CMOVE  ................."c-move".....................STRING.....140
    17.6.1.0920   CMOVE>  ................"c-move-up"..................STRING.....140
    17.6.1.0935   COMPARE  ............................................STRING.....140
    17.6.1.2191   SEARCH  .............................................STRING.....141
    17.6.1.2212   SLITERAL  ...........................................STRING.....141
    

    Thanks Dave. I was NOT aware that the Section numbers were helpful. I will make a copy and print it out for reference.

    On other fronts, I have PropForth V5.03 loaded into a ProtoBoard and running nicely. It is a lot of fun, but obiviously NOT ANS Forth standard.

    As I have several of these Proto Boards (I bought 5 some time ago), I am going to load Tachyon Forth into another.

    Of course, when you have something viable - I'd be delighted to load your ANS Forth into yet another.

    What I really LIKE is that Forth does not require you to run and IDE and have to compile back and forth. There is a lot of spontaneity in how one uses it to explore and learn. Plus the Proto Boards will provide a directy VGA and keyboard interface - so it is possible to make the whole thing stand on its own.
  • mindrobotsmindrobots Posts: 6,506
    edited 2012-10-15 06:24
    Dave Hein wrote: »
    It seems like ! and @ are pretty fundamental, so I would think they should be in any Forth implementation. I suppose for compatibility purposes they can be easily mapped into W! and W@ by adding ": ! W! ;" and ": @ W@ ;" to the dictionary.

    I've spent most of the weekend learning Forth by writing an interpreter. I've implemented 93 out of the 133 ANSI core words. 67 of them are in the kernel and 26 in a dictionary. I'm hoping to knock out the remaining 40 in a couple of more days, but that might be optimistic.
    Dave, Cool!!

    Can't wait to see it and play with it! I figure any Forth (or Forth-like) addition to the family is welcome!!
  • LoopyBytelooseLoopyByteloose Posts: 12,537
    edited 2012-10-15 07:49
    Ummmm.... sorry Dave.
    That listing you posted is still mostly an alphabetical sort regardless of what you thought. It appears to be shorter, but not what I was hoping for. I may use it to make my own though.

    PropForth is pretty good, but the leading zeros in the Decimal display without CR for consecutive stack items tends to be a bit hard to look it, and even harder to read.
  • Dave HeinDave Hein Posts: 6,347
    edited 2012-10-15 08:29
    The people the wrote the standard told me the standard is just a guideline. That is, we DON'T need to to implement every word. The standard it so that if we DO implement a word, we know how other folks did it. That is all. In fact, they said it would be detrimental to implement them all, since some are contradictory and only present for historical reasons. The real point is we are supposed to do what we need to accomplish the task at hand, not to comply with some irrelevant tome. But your exercise is a good one, it will show you the reality of this statement (or not).

    If you write it in C, it might be "like" forth, but forth is written in forth. THAT's an indication of whether its forth or simply "forth-like". But it is a good experiment. Can you post your code? (In a different thread, we are high-jacking this one).
    prof_braino, you've been working with Forth orders of magnitude longer than I have, but you are incorrect about standards. I work in the video conferencing area, and there's know way different vendor's equipment would inter-operate if we just use the standard as a "guideline". The same is true for software portability. You can't port source code from one platform to another if they don't adhere to some standard.

    ANSI standards are written by representatives from various American companies. The standards are designed by committee, so they do end up with compromises in them that can seem odd at times. Most standards contain required features that must be implemented, and optional feature which may be implemented. ANS Forth requires that a standard compliant implementation support all of the core words. The remaining words are optional.

    Your definition of "forth" versus "forth-like" doesn't make sense. The ANS Forth standard has no such requirement as far as I know.
  • Dave HeinDave Hein Posts: 6,347
    edited 2012-10-15 08:32
    Loopy, the second list is sorted by section number, which groups words by CORE, CORE EXT, DOUBLE, etc. What kind of grouping are you looking for? Do you want a list grouped by arithmetic, memory access, I/O, etc., or do you want some other grouping?
  • LoopyBytelooseLoopyByteloose Posts: 12,537
    edited 2012-10-15 08:52
    Hi Dave,
    I don't really like the idea that I am making you do my work for me. I just think that one of the problems with learning Forth is that the people that really use it tend to not think very much about teaching it.

    I appreciate your concern, but I am rather embrassed to say that I am not quite sure. What I was mentioning is something that is more conceptual in learning foreign language vocabulary - word groups that have an associated form of utility.

    In this case, all the looping items together, all the branching items, all the bit-wise operators, all the stack manipulation items, and so on. It was just my observation that the ANS Forth document was a difficult document for a novice to penetrate, though I presume there is a lot of wisdom in what it says.

    One of the things that you might be interested in is the simple fact that you could rename all the non-standard terms in PropForth and have it comply more closely with ANS Forth.

    The true dilemma is that Forth is far closer to a true language than any other computer language in that everyone acquires their own vocabulary and thinks it suit them well. Computer languages tend to NOT have homonyms and synonyms and multiple terms for the same idea, but Forth might have to work with these issues at one level or another between users. Nobody has ever really standardized a spoken language.
  • prof_brainoprof_braino Posts: 4,313
    edited 2012-10-15 15:08
    What I really LIKE is that Forth does not require you to run and IDE and have to compile back and forth. There is a lot of spontaneity in how one uses it to explore and learn. Plus the Proto Boards will provide a directy VGA and keyboard interface - so it is possible to make the whole thing stand on its own.

    Check out the JupiterACE from propforth versions 3.2 to 3.5. This includes the first pass at VGA + keyboard for standalone propforth terminal. HiRes VGA displays TWO COG sessions at once, COG3 on top half of screen and COG4 on bottom half of screen. This is going to be brought forward to v5.3 when its released, and will enjoy all the benefits of optimization, EEPROM file system, SD memory, and multiple external props. So it will be moving from "Wow! Cool!" to "WOW! COOL!"
  • prof_brainoprof_braino Posts: 4,313
    edited 2012-10-15 15:22
    Dave Hein wrote: »
    but you are incorrect about standards.
    .... ANS Forth requires that a standard compliant implementation support all of the core words. ...Your definition of "forth" versus "forth-like" doesn't make sense. The ANS Forth standard has no such requirement as far as I know.

    Okey dokey, I'm just telling you what the authors said. In the case of forth, and micro controllers in general, there is a different meaning for "interoperability" and portability" for development kernels than for complete user systems such as video conferencing or telecom systems. The stuff from wide telecom system level is not the same at embedded device level.

    Interoperability means you define the interfaces. Portability STILL means your have to rewrite the drivers for different hardware. In the case of forth, the whole development environment is a driver for different hardware, that being each target processor.

    Be careful. You are not wrong, but when you apply an evaluation from the context of a video conferencing system to a micro controller development tool, you get non-answers.
  • Dave HeinDave Hein Posts: 6,347
    edited 2012-10-21 11:32
    I finally finished implementing all of the core words in my Forth interpreter. Now I can claim it as being ANS Forth compliant. :) Actually, it would still need a lot of work to make it practical, but I don't plan on adding any more improvements to this interpreter. As I mentioned in my previous posts I did it as a way to learn Forth. I implemented the simple words first, and left words like DOES>, IMMEDIATE, POSTPONE and EVALUATE for the end. I now have a must better understanding of how Forth works, and I realize that the words I implemented last should have been the first ones to implement. Once these words, plus a few others are implemented a Forth interpreter can be written completely in Forth using those words.

    I tested my Forth interpreter on various Forth programs I found on the internet. I also ran most of the code in "Starting Forth" and "A Beginner's Guide to Forth". I found that a lot of the ANS Forth programs use a few words that are not in the core set, so I had to implement a few of the core extension and other ANS Forth words. Non-ANS Forth programs are harder to port. They use words that are defined in specific Forth interpreters. This makes it really hard to port these programs.

    I think my next step in learning Forth is to work with PropForth and Tachyon. I wrote a Forth program to list ANS words that aren't in the dictionary, and I'll see if I can implement those in one of the Prop Forth interpreters. Though I have a much better appreciation for the strengths of Forth, I also understand some of its weaknesses as well. The lack of local variables seems like a real problem for large programs. I also miss the ability for the compiler to do type checking and catching other syntatical errors that I find extremely useful in other compilers.
  • LoopyBytelooseLoopyByteloose Posts: 12,537
    edited 2012-10-21 12:16
    WOW, quite a burst of creative energy in such a short time frame.

    I am plugging away on PropForth and parallel learning of ANS Forth via GForth, which is a free download for Intel computers. The idea is to get a good comparison of the use on a regular computer as well as the a feel for Forth on a Propeller.

    I haven't done too much with Tachyon Forth yet, even though I have it loaded into one of two Proto Boards (the other is loaded with PropForth and the two are connected back to back via standoffs, so that I can have both handy to explore).

    I am very please with how easy it is to get the Propeller to output and toggle pins via RS232 port terminal. Forth makes the Propeller a Lab Rat's wonder board as one can just sit and a computer and control the world within a few minutes of learning the language.

    I have started to try to do a comparative list of the ANS Forth words you provided me to the PropForth words as there are some confusing differences.

    PropForth does NOT have .s and uses ST? instead.

    The comparision is good for me as there is a big vocabulary to learn and you achieved much the same thing by writing your own compiler. One has to survey the words in the CORE to get started and any method that motivates the new learner is a good one.
  • prof_brainoprof_braino Posts: 4,313
    edited 2012-10-21 12:34
    Dave Hein wrote: »
    I finally finished implementing all of the core words in my Forth interpreter. Now I can claim it as being ANS Forth compliant. :) Actually, it would still need a lot of work to make it practical, but I don't plan on adding any more improvements to this interpreter. As I mentioned in my previous posts I did it as a way to learn Forth. I implemented the simple words first, and left words like DOES>, IMMEDIATE, POSTPONE and EVALUATE for the end. I now have a must better understanding of how Forth works, and I realize that the words I implemented last should have been the first ones to implement. Once these words, plus a few others are implemented a Forth interpreter can be written completely in Forth using those words.

    I tested my Forth interpreter on various Forth programs I found on the internet. I also ran most of the code in "Starting Forth" and "A Beginner's Guide to Forth". I found that a lot of the ANS Forth programs use a few words that are not in the core set, so I had to implement a few of the core extension and other ANS Forth words. Non-ANS Forth programs are harder to port. They use words that are defined in specific Forth interpreters. This makes it really hard to port these programs.

    I think my next step in learning Forth is to work with PropForth and Tachyon. I wrote a Forth program to list ANS words that aren't in the dictionary, and I'll see if I can implement those in one of the Prop Forth interpreters. Though I have a much better appreciation for the strengths of Forth, I also understand some of its weaknesses as well. The lack of local variables seems like a real problem for large programs. I also miss the ability for the compiler to do type checking and catching other syntatical errors that I find extremely useful in other compilers.

    Very cool! If you can get a version that ports smoothly from the PC to the prop (or the ATmega, or anything else) you are in a different class than I. Please share you work, I was under the impression that it was just too much work for the reasons you mentioned.

    For type checking, syntax, etc; usually the system tends to just choke when anything is even the slightest bit wrong. This turns out to be the biggest plus. Since there are only a few changes to each definition before you test, its pretty clear where the error lies. Then, you can examine the definitions in detail, since you know exactly where to look. The result is the code HAS to be pretty much perfect to work, you gain a deeper understanding of what's really going on, and nobody has to waste time idiot-proofing the compiler (I for one don;t need proof that I'm an idiot). If you can get a feel for very short (but deep) design-code-test cycles, this is a very nice way to go.
  • LoopyBytelooseLoopyByteloose Posts: 12,537
    edited 2012-10-21 12:47
    @Dave Hein
    I've added 30 points to what I previously considered your IQ to be and it is approaching what might be consider the boiling point of water in Fahrenheit.
Sign In or Register to comment.