From 67d25d837ac55f28a366c0a3b262e439a6e75fc3 Mon Sep 17 00:00:00 2001 From: Dimitri Sokolyuk Date: Sat, 19 Aug 2017 12:15:28 +0200 Subject: Add AmForth --- amforth-6.5/common/lib/modules.frt | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) create mode 100644 amforth-6.5/common/lib/modules.frt (limited to 'amforth-6.5/common/lib/modules.frt') diff --git a/amforth-6.5/common/lib/modules.frt b/amforth-6.5/common/lib/modules.frt new file mode 100644 index 0000000..7948e58 --- /dev/null +++ b/amforth-6.5/common/lib/modules.frt @@ -0,0 +1,28 @@ +\ VFX like modules based on Forth-94 wordlists uho 2016-04-16 +\ ---------------------------------------------------------------- +\ http://theforth.net/package/modules +\ http://theforth.net/package/modules/current-view/glossary.md + +\ modified for amforth (@ -> @i for numbers kept in the dictionary ) + +\ #require set-order.frt +\ #require get-order.frt +\ #require previous.frt + +: module ( -- old-current ) + get-current wordlist create dup >r , + get-order r@ swap 1+ set-order + r> set-current ; + +: export ( old-current -- old-currrent ) + >r >in @ ' swap >in ! ( -- 'name ) + get-current r@ set-current ( -- 'name current ) + create swap , set-current r> + does> @i execute ; + +: expose-module ( -- ) + get-order ' >body @i swap 1+ set-order ; + +: end-module ( old-current -- ) + set-current previous ; + -- cgit v1.2.3