home *** CD-ROM | disk | FTP | other *** search
/ Celestin Apprentice 2 / Apprentice-Release2.iso / Tools / Languages / Yerk 3.6.6 / Module source / constants < prev    next >
Encoding:
Text File  |  1991-06-16  |  1.8 KB  |  64 lines  |  [TEXT/YERK]

  1.     08c0001f ,    \        bset    #31,d0
  2.     2e80    w,    \        move.l    d0,(sp)
  3. next,
  4. decimal
  5.  
  6. 2600    ordered-col    KNAMES
  7. 2600    ordered-col    KONSTANTS
  8.  
  9. \ : doHex tib c@ ascii $ = IF hex 2 -> in THEN ;
  10. : doHex ( addr -- addr) @word dup count " $" s= IF drop @word hex ELSE decimal THEN ;
  11.  
  12. \ ( -- )   Get next word, add if global name
  13. : konstantName { \ val nhash -- }
  14. \    size: konstants .d
  15.     doHex
  16.     number drop -> val
  17.     @word
  18.     HashName -> nhash
  19.     nhash indexOf: kNames
  20.     IF   . abort" collision"
  21.     ELSE nhash add: kNames val add: konstants
  22.     THEN ;
  23.  
  24. \ read toolbox name/trap table and fill arrays
  25. : Tools" { \ radix cecho -- }
  26.     base -> radix  decho -> cecho
  27.     new: loadFile setName: topFile
  28.     openReadOnly: topFile ?error 149
  29.  
  30.         0 moveTo: topFile drop
  31.         query: topFile drop
  32.          BEGIN                    \ read until eof
  33.             tib c@ ascii \ <>    \ skip comments
  34.             IF konstantName THEN
  35.             query: topFile
  36.         UNTIL
  37.         -echo
  38.  
  39.     remove: loadFile
  40.     radix -> base  cecho -> decho ;
  41.  
  42. \ load the calls into the symbol table
  43. Tools" ::Module source:konstants
  44.  
  45. CR
  46. size: konstants . ." constants stored" CR
  47.  
  48. forget doHex
  49.  
  50. \ ( str255 -- global )  Get global word for a global index
  51. : @konstant ( tStr -- )
  52.     HashName indexOf: kNames 0= ?error 150
  53.     at: konstants ;
  54.  
  55. \ global dispatcher
  56. : konstant
  57.     @word @konstant
  58.     state 
  59.     IF  compile lit , 
  60.     THEN 
  61. ; Immediate
  62.  
  63. ;module
  64.