Автор |
Сообщение |
|
|
Заголовок сообщения: |
|
|
|
Kopa писал(а): iv_ru писал(а): Блин, как всё просто-то... только слова этого "marker" нет... Слово есть, но не в ядре и расположено lib\ans94\marker.frt
Небольшой итог:
"FORGET" работает теперь так как я и предпологал: тихо-мирно и самое главное правильно.
Спасибо всем большое за помощь, особенно: Kopе
П.С. если кому интересно, то надо было в AVR Studio в файле "dict_minimum.inc" добавить .include "words/set-current.asm", потом определить слово как в amforth-3.4\lib\ans94\marker.frt
и всё.
тест:
Код: marker startdict : newWord 1ms ; words \ newWord определено и показывается startdict words \нет такого слова: newWord
[quote="Kopa"][quote="iv_ru"]Блин, как всё просто-то... только слова этого "marker" нет...[/quote]
Слово есть, но не в ядре и расположено lib\ans94\marker.frt[/quote]
Небольшой итог:
"FORGET" работает теперь так как я и предпологал: тихо-мирно и самое главное правильно.
Спасибо всем большое за помощь, особенно: Kopе
П.С. если кому интересно, то надо было в AVR Studio в файле "dict_minimum.inc" добавить .include "words/set-current.asm", потом определить слово как в amforth-3.4\lib\ans94\marker.frt
и всё.
тест:
[code]marker startdict : newWord 1ms ; words \ newWord определено и показывается startdict words \нет такого слова: newWord[/code]
:D
|
|
|
|
Добавлено: Пт июн 26, 2009 12:35 |
|
|
|
|
|
Заголовок сообщения: |
|
|
|
iv_ru писал(а): Блин, как всё просто-то... только слова этого "marker" нет...
Слово есть, но не в ядре и расположено lib\ans94\marker.frt
Определено так:
Код: \ defines a word which resets the dictionary when called \ better then forget but has still limitations
: marker ( c<chars> -- ) get-order get-current dup e@ here edp heap \ maybe save turnkey as well create , , , , , \ for save the search order wordlists dup , 0 ?do dup , e@ , loop does> dup i@ to heap 1+ dup i@ to edp 1+ dup i@ to here 1+ dup i@ swap 1+ dup i@ swap >r swap over e! set-current r> 1+ dup i@ \ # of entries in search order dup >r 0 ?do 1+ dup i@ swap 1+ dup i@ over e! loop drop r> set-order ;
[quote="iv_ru"]Блин, как всё просто-то... только слова этого "marker" нет...[/quote]
Слово есть, но не в ядре и расположено lib\ans94\marker.frt
Определено так:
[code] \ defines a word which resets the dictionary when called \ better then forget but has still limitations
: marker ( c<chars> -- ) get-order get-current dup e@ here edp heap \ maybe save turnkey as well create , , , , , \ for save the search order wordlists dup , 0 ?do dup , e@ , loop does> dup i@ to heap 1+ dup i@ to edp 1+ dup i@ to here 1+ dup i@ swap 1+ dup i@ swap >r swap over e! set-current r> 1+ dup i@ \ # of entries in search order dup >r 0 ?do 1+ dup i@ swap 1+ dup i@ over e! loop drop r> set-order ; [/code]
|
|
|
|
Добавлено: Пт июн 26, 2009 07:20 |
|
|
|
|
|
Заголовок сообщения: |
|
|
|
Anonymous писал(а): iv_ru писал(а): Ну так всё-же как мне это сделать-то? Я, чесно говоря, пока понятия не имею... MARKER работает как необходимо?
Нет, не работает, да и слова такого нет, хотя по совету из Рассылки обновился до версии 3.4.
Там же в Рассылке посоветовали :
Код: words marker qux words qux words
Блин, как всё просто-то... только слова этого "marker" нет...
[quote="Anonymous"][quote="iv_ru"]Ну так всё-же как мне это сделать-то? Я, чесно говоря, пока понятия не имею...[/quote]
MARKER работает как необходимо?[/quote]
Нет, не работает, да и слова такого нет, хотя по совету из Рассылки обновился до версии 3.4.
Там же в Рассылке посоветовали :
[code]words marker qux words qux words[/code]
Блин, как всё просто-то... только слова этого "marker" нет...
|
|
|
|
Добавлено: Чт июн 25, 2009 19:05 |
|
|
|
|
|
Заголовок сообщения: |
|
|
|
iv_ru писал(а): Ну так всё-же как мне это сделать-то? Я, чесно говоря, пока понятия не имею...
MARKER работает как необходимо?
[quote="iv_ru"]Ну так всё-же как мне это сделать-то? Я, чесно говоря, пока понятия не имею...[/quote]
MARKER работает как необходимо?
|
|
|
|
Добавлено: Чт июн 25, 2009 08:26 |
|
|
|
|
|
Заголовок сообщения: |
|
|
|
Цитата: Ну так всё-же как мне это сделать-то? Я, чесно говоря, пока понятия не имею...
если вводите несколько вариантов одного слова друг за другом можно как-то так делать:
Код: VARIABLE LHERE VARIABLE LCURR : W[ HERE LHERE ! CURRENT @ @ LCURR ! ; : ]W LHERE @ DP ! LCURR @ CURRENT @ ! ;
и пример использования W[ : S DUP ; 1 S : S DROP ; 2 3 S ]W : S DUP SWAP ; 4 S первые два варианта неудачные, а последний нормальный, например,
он только и попадет в словарь.
[quote]Ну так всё-же как мне это сделать-то? Я, чесно говоря, пока понятия не имею...[/quote]
если вводите несколько вариантов одного слова друг за другом можно как-то так делать:
[code]VARIABLE LHERE VARIABLE LCURR : W[ HERE LHERE ! CURRENT @ @ LCURR ! ; : ]W LHERE @ DP ! LCURR @ CURRENT @ ! ;
и пример использования W[ : S DUP ; 1 S : S DROP ; 2 3 S ]W : S DUP SWAP ; 4 S[/code]первые два варианта неудачные, а последний нормальный, например,
он только и попадет в словарь.
|
|
|
|
Добавлено: Ср июн 24, 2009 15:46 |
|
|
|
|
|
Заголовок сообщения: |
|
|
|
iv_ru писал(а): Ну так всё-же как мне это сделать-то? Я, чесно говоря, пока понятия не имею...
Сначала посмотреть по этому вопросу книгу Баранова, а дальше отталкиваться
от реализации и возможности amForth попутно ознакамливаясь со стандартом
на Forth 94г.
P.S. или ждать пока кто нибудь из фортёров не скажет или предложит
реализацию как это сделать для amForth:)
Можно ещё завести переписку с автором по добавлению требуемой функциональности.
amForth Devel
ivan.rudenok задал вопрос про Forget ( Ваш? )
Ещё в forth.cz пользуются amForth ( добавили ассемблер и примеры с индикатором )
Утилита трансляции frt файлов frt -> asm AVRA
для amForth ( запускается с использованием gforth )
Пользователи amForth ( clustrМaps) c большим отрывом в Германии.
[quote="iv_ru"]Ну так всё-же как мне это сделать-то? Я, чесно говоря, пока понятия не имею...[/quote]
Сначала посмотреть по этому вопросу книгу Баранова, а дальше отталкиваться
от реализации и возможности amForth попутно ознакамливаясь со стандартом
на Forth 94г.
P.S. или ждать пока кто нибудь из фортёров не скажет или предложит
реализацию как это сделать для amForth:)
Можно ещё завести переписку с автором по добавлению требуемой функциональности.
[url=http://sourceforge.net/mailarchive/forum.php?forum_name=amforth-devel]amForth Devel[/url]
ivan.rudenok задал вопрос про Forget ( Ваш? )
Ещё в forth.cz пользуются amForth ( добавили ассемблер и примеры с индикатором )
Утилита трансляции frt файлов [url=http://www.forth-ev.de/trac/browser/g4]frt -> asm AVRA[/url]
для amForth ( запускается с использованием gforth )
Пользователи amForth ( [url=http://www2.clustrmaps.com/ru/counter/maps.php?url=http://amforth.sourceforge.net]clustrМaps[/url]) c большим отрывом в Германии.
|
|
|
|
Добавлено: Ср июн 24, 2009 13:11 |
|
|
|
|
|
Заголовок сообщения: |
|
|
|
Ну так всё-же как мне это сделать-то? Я, чесно говоря, пока понятия не имею...
Ну так всё-же как мне это сделать-то? Я, чесно говоря, пока понятия не имею...
|
|
|
|
Добавлено: Ср июн 24, 2009 12:46 |
|
|
|
|
|
Заголовок сообщения: |
|
|
|
iv_ru писал(а): Kopa писал(а): iv_ru писал(а): нет таких слов: CONTEXT и CURRENT, есть только эти: http://amforth.sourceforge.net/words/ Есть GET-CURRENT SET-CURRENT про другие не понятно, и непривычно смотреть Форт текст в виде ссылок DW:) Ну помоему, если я конечно всё правильно понял, то этими командами (GET-CURRENT SET-CURRENT) можно подключать/отключать словари, но при этом словари всегда находятся в системе.
Прежде всего, чтобы при реализации Forget ссылка на словарь не осталась в цепочке
последнего для добавления. ( например если мы затираем данные во Flash ) Можно организовать последним пользовательский словарь и его удалять из системы ( из процедуры поиска и скорректировав
HERE и при необходимости стереть ERASE область после HERE )
Слово ORDER показывает набор словарей для поиска ( CONTEXT ) и добавления ( CURRENT).
[quote="iv_ru"][quote="Kopa"][quote="iv_ru"] нет таких слов: CONTEXT и CURRENT, есть только эти: http://amforth.sourceforge.net/words/[/quote]
Есть GET-CURRENT SET-CURRENT про другие не понятно, и непривычно смотреть Форт текст в виде ссылок DW:)[/quote]
Ну помоему, если я конечно всё правильно понял, то этими командами (GET-CURRENT SET-CURRENT) можно подключать/отключать словари, но при этом словари всегда находятся в системе.[/quote]
Прежде всего, чтобы при реализации Forget ссылка на словарь не осталась в цепочке
последнего для добавления. ( например если мы затираем данные во Flash ) Можно организовать последним пользовательский словарь и его удалять из системы ( из процедуры поиска и скорректировав
HERE и при необходимости стереть ERASE область после HERE )
Слово ORDER показывает набор словарей для поиска ( CONTEXT ) и добавления ( CURRENT).
|
|
|
|
Добавлено: Вт июн 23, 2009 16:30 |
|
|
|
|
|
Заголовок сообщения: |
|
|
|
Kopa писал(а): iv_ru писал(а): нет таких слов: CONTEXT и CURRENT, есть только эти: http://amforth.sourceforge.net/words/ Есть GET-CURRENT SET-CURRENT про другие не понятно, и непривычно смотреть Форт текст в виде ссылок DW:)
Ну помоему, если я конечно всё правильно понял, то этими командами (GET-CURRENT SET-CURRENT) можно подключать/отключать словари, но при этом словари всегда находятся в системе.
[quote="Kopa"][quote="iv_ru"] нет таких слов: CONTEXT и CURRENT, есть только эти: http://amforth.sourceforge.net/words/[/quote]
Есть GET-CURRENT SET-CURRENT про другие не понятно, и непривычно смотреть Форт текст в виде ссылок DW:)[/quote]
Ну помоему, если я конечно всё правильно понял, то этими командами (GET-CURRENT SET-CURRENT) можно подключать/отключать словари, но при этом словари всегда находятся в системе.
|
|
|
|
Добавлено: Вт июн 23, 2009 16:13 |
|
|
|
|
|
Заголовок сообщения: |
|
|
|
iv_ru писал(а): нет таких слов: CONTEXT и CURRENT, есть только эти: http://amforth.sourceforge.net/words/
Есть GET-CURRENT SET-CURRENT про другие не понятно,
и непривычно смотреть Форт текст в виде ссылок DW:)
[quote="iv_ru"] нет таких слов: CONTEXT и CURRENT, есть только эти: http://amforth.sourceforge.net/words/[/quote]
Есть GET-CURRENT SET-CURRENT про другие не понятно,
и непривычно смотреть Форт текст в виде ссылок DW:)
|
|
|
|
Добавлено: Вт июн 23, 2009 16:02 |
|
|
|
|
|
Заголовок сообщения: |
|
|
|
Kopa писал(а): iv_ru писал(а): Forth в ней будет в качестве вызываемого модуля в добавок к firmware, но это уже не моя головная боль ) ... т.е. роль интерфеса к существующей железячной плате и возможно ещё одной:) P.S. Лучше о "головной боли" пользователя подумать заранее, чтобы не было чего нехорошего. >mark и >resolve - это немного не то. Ближе к этому процессу слова CONTEXT и CURRENT но HERE конечно тоже необходимо восстановить.
На сколько я понял, то клиент получит файл с настройками, который надо будет передать форту, который сделает кое-какие манипуляции с железом, какие имменно не нужно знать клиенту, и другим тоже ( привет китайцам ). Такая политика у шефа
нет таких слов: CONTEXT и CURRENT, есть только эти:
http://amforth.sourceforge.net/words/
[quote="Kopa"][quote="iv_ru"]Forth в ней будет в качестве вызываемого модуля в добавок к firmware, но это уже не моя головная боль :D ) ...[/quote]
т.е. роль интерфеса к существующей железячной плате и возможно ещё одной:)
P.S. Лучше о "головной боли" пользователя подумать заранее, чтобы не было чего нехорошего. >mark и >resolve - это немного не то. Ближе к этому процессу слова CONTEXT и CURRENT но HERE конечно тоже необходимо восстановить.[/quote]
На сколько я понял, то клиент получит файл с настройками, который надо будет передать форту, который сделает кое-какие манипуляции с железом, какие имменно не нужно знать клиенту, и другим тоже ( привет китайцам :)) ). Такая политика у шефа :-)
нет таких слов: CONTEXT и CURRENT, есть только эти:
http://amforth.sourceforge.net/words/
|
|
|
|
Добавлено: Вт июн 23, 2009 15:32 |
|
|
|
|
|
Заголовок сообщения: |
|
|
|
iv_ru писал(а): Forth в ней будет в качестве вызываемого модуля в добавок к firmware, но это уже не моя головная боль ) ...
т.е. роль интерфеса к существующей железячной плате и возможно ещё одной:)
P.S. Лучше о "головной боли" пользователя подумать заранее, чтобы не было
чего нехорошего.
>mark и >resolve - это немного не то. Ближе к этому процессу слова CONTEXT и CURRENT
но HERE конечно тоже необходимо восстановить.
[quote="iv_ru"]Forth в ней будет в качестве вызываемого модуля в добавок к firmware, но это уже не моя головная боль :D ) ...[/quote]
т.е. роль интерфеса к существующей железячной плате и возможно ещё одной:)
P.S. Лучше о "головной боли" пользователя подумать заранее, чтобы не было
чего нехорошего.
>mark и >resolve - это немного не то. Ближе к этому процессу слова CONTEXT и CURRENT
но HERE конечно тоже необходимо восстановить.
|
|
|
|
Добавлено: Вт июн 23, 2009 15:16 |
|
|
|
|
|
Заголовок сообщения: |
|
|
|
iv_ru писал(а): .s печатает весь стек, что не всегда удобно... но зато можно глянуть, как он сделан в конкретной системе, и отображать меньшее кол-во элементов. Потому как перечисленные выше варианты выглядят грубовато iv_ru писал(а): Мне необходимо что-б я свои слова из системы мог удалить, не перезаливая всю эту систему заново (Forth в ней будет в качестве вызываемого модуля в добавок к firmware, но это уже не моя головная боль )
надо смотреть, как устроен словарь в форт-системе (конкретной форт-системе)
и могут быть отличия для распределенной системы (где словарь может быть на host-e а код на микроконтроллере)
вобщем, в любом случае придется разбираться в том, как устроен словарь в конкретной системе, и как его можно корректно откатить...
[quote="iv_ru"].s печатает весь стек, что не всегда удобно...[/quote] но зато можно глянуть, как он сделан в конкретной системе, и отображать меньшее кол-во элементов. Потому как перечисленные выше варианты выглядят грубовато :)
[quote="iv_ru"]Мне необходимо что-б я свои слова из системы мог удалить, не перезаливая всю эту систему заново (Forth в ней будет в качестве вызываемого модуля в добавок к firmware, но это уже не моя головная боль )[/quote]
надо смотреть, как устроен словарь в форт-системе (конкретной форт-системе)
и могут быть отличия для распределенной системы (где словарь может быть на host-e а код на микроконтроллере)
вобщем, в любом случае придется разбираться в том, как устроен словарь в конкретной системе, и как его можно корректно откатить...
|
|
|
|
Добавлено: Вт июн 23, 2009 15:08 |
|
|
|
|
|
Заголовок сообщения: |
|
|
|
о-о-о в системе нет >mark и >resolve
Код: : >mark here compile compile exit ; : >resolve here swap i! ;
о-о-о в системе нет >mark и >resolve :dmad;
[code]: >mark here compile compile exit ; : >resolve here swap i! ; [/code]
|
|
|
|
Добавлено: Вт июн 23, 2009 15:07 |
|
|
|
|
|
Заголовок сообщения: |
|
|
|
mOleg писал(а): iv_ru писал(а): т.е мусора в системе не остаётся? Я это имел в виду. остается . FORGET в современных системах не делают - отказались от него 8( но в общем зависит от системы на смену ему в 94 стандарте есть слово MARKER (на мой взгляд очень неудобное) многие системы его поддерживают, но смысл в обоих словах есть только на больших машинах, а на микроконтроллерах обычно стараются не переопределять слова. вообще удаление слова из словаря возможно только, если его никто не использует, но даже в этом случае толку от удаления слова из словаря будет мало(так как память распределяется по стековому принципу) - останется дырка в памяти, которую использовать для чего-то полезного будет неудобно. а для распечатки стека обычно в системе есть слово .S
Мне необходимо что-б я свои слова из системы мог удалить, не перезаливая всю эту систему заново (Forth в ней будет в качестве вызываемого модуля в добавок к firmware, но это уже не моя головная боль )
.s печатает весь стек, что не всегда удобно...
Про marker сейчас посмотрим...
[quote="mOleg"][quote="iv_ru"]т.е мусора в системе не остаётся? Я это имел в виду.[/quote] остается . FORGET в современных системах не делают - отказались от него 8( но в общем зависит от системы на смену ему в 94 стандарте есть слово MARKER (на мой взгляд очень неудобное) многие системы его поддерживают, но смысл в обоих словах есть только на больших машинах, а на микроконтроллерах обычно стараются не переопределять слова. вообще удаление слова из словаря возможно только, если его никто не использует, но даже в этом случае толку от удаления слова из словаря будет мало(так как память распределяется по стековому принципу) - останется дырка в памяти, которую использовать для чего-то полезного будет неудобно.
а для распечатки стека обычно в системе есть слово .S[/quote]
Мне необходимо что-б я свои слова из системы мог удалить, не перезаливая всю эту систему заново :( (Forth в ней будет в качестве вызываемого модуля в добавок к firmware, но это уже не моя головная боль :D )
.s печатает весь стек, что не всегда удобно...
Про marker сейчас посмотрим...
|
|
|
|
Добавлено: Вт июн 23, 2009 15:00 |
|
|
|
|