--- gforth/glocals.fs 1996/05/13 16:36:58 1.22 +++ gforth/glocals.fs 1996/08/26 10:07:18 1.25 @@ -505,29 +505,30 @@ forth definitions code-address! then ; -: TO ( c|w|d|r "name" -- ) \ core-ext,local +:noname + ' dup >definer [ ' locals-wordlist >definer ] literal = + if + >body ! + else + -&32 throw + endif ; +:noname 0 0 0. 0.0e0 { c: clocal w: wlocal d: dlocal f: flocal } ' dup >definer case [ ' locals-wordlist >definer ] literal \ value OF >body POSTPONE Aliteral POSTPONE ! ENDOF - [ ' clocal >definer ] literal + [ comp' clocal drop >definer ] literal OF POSTPONE laddr# >body @ lp-offset, POSTPONE c! ENDOF - [ ' wlocal >definer ] literal + [ comp' wlocal drop >definer ] literal OF POSTPONE laddr# >body @ lp-offset, POSTPONE ! ENDOF - [ ' dlocal >definer ] literal + [ comp' dlocal drop >definer ] literal OF POSTPONE laddr# >body @ lp-offset, POSTPONE 2! ENDOF - [ ' flocal >definer ] literal + [ comp' flocal drop >definer ] literal OF POSTPONE laddr# >body @ lp-offset, POSTPONE f! ENDOF -&32 throw - endcase ; immediate -interpretation: - ' dup >definer [ ' locals-wordlist >definer ] literal = - if - >body ! - else - -&32 throw - endif ; + endcase ; +interpret/compile: TO ( c|w|d|r "name" -- ) \ core-ext,local : locals| \ don't use 'locals|'! use '{'! A portable and free '{'