реклама на сайте
подробности

 
 
16 страниц V  « < 9 10 11 12 13 > »   
Reply to this topicStart new topic
> А вот бы на FORTH написать..., ;-)
Kopa
сообщение Jun 5 2009, 08:01
Сообщение #151


Знающий
****

Группа: Участник
Сообщений: 598
Регистрация: 22-08-05
Пользователь №: 7 861



Цитата(MrYuran @ Jun 5 2009, 10:38) *
: Pulse ( Addr Mask --)
2DUP OR! FFFF XOR AND! ;
Формирует импульс длительностью 23 мкс при тактировании от DCO (4.8МГц)

Код
FFFF XOR


это INVERT битов
Go to the top of the page
 
+Quote Post
MrYuran
сообщение Jun 5 2009, 08:55
Сообщение #152


Беспросветный оптимист
******

Группа: Свой
Сообщений: 4 640
Регистрация: 26-12-07
Из: Н.Новгород
Пользователь №: 33 646



Цитата(Kopa @ Jun 5 2009, 12:01) *
Код
FFFF XOR

это INVERT битов

Ну , не всё так сразу.
Теперь уже нашёл.
Почти понял, как свои слова добавлять к дистрибу.
Почему-то отдельно описаны реализации в файле core430, а потом упакованы в словарь в файле hilvl430
Наверно, это правильно, но несколько неудобно править сразу в двух местах.
А вообще, паковать форт в ИАРе - неправильно.
Но на первое время сойдёт.

Что я хочу на первом этапе:
(тсз, ближайшая цель)
соорудить простейшее форт-ядро, в котором интерпретатор будет запускаться в отдельном потоке (например, по прерыванию от технологического УАРТа, либо от основного после набора секретной комбинации символов (ахалай-махалай-сим-салавим) плюс пароль).

Вот в этом направлении пока движусь.

Цитата
Почти понял, как свои слова добавлять к дистрибу.
Почему-то отдельно описаны реализации в файле core430, а потом упакованы в словарь в файле hilvl430

Всё, допёр.
в core простые слова, а в hilvl - сложные.
а моё слово не находилось, потому что надо было правильно длину указывать.

Код
: Pulse ( Mask Addr --)
    2DUP OR! >R INVERT R> AND!;

с новыми (асмовыми) определениями OR! и AND! формирует 8-мкс импульс.
Конечно, не 1мк, как на чистом асме, но уже вполне...

###########
такая ещё проблема.
если заливать исходный код, даже на скорости 9600 в конце определения или строки происходит протормаживание интерпретатора (анализ строки, поиск по словарю, компиляция) даже при компиляции в ОЗУ. С флешью к этому надо будет добавить время записи в флешь.
За это время из входного потока может потеряться несколько символов.
Пока выхожу из положения введением ведущих пробелов после каждого определения.
Хотя, если сделать динамический входной буфер и ловить символы по прерываниям, то наверно проблема исчезнет.


--------------------
Программирование делится на системное и бессистемное. ©Моё :)
— а для кого-то БГ — это Bill Gilbert =)
Go to the top of the page
 
+Quote Post
Kopa
сообщение Jun 5 2009, 09:17
Сообщение #153


Знающий
****

Группа: Участник
Сообщений: 598
Регистрация: 22-08-05
Пользователь №: 7 861



Цитата(MrYuran @ Jun 5 2009, 11:43) *
Ну , не всё так сразу.
Теперь уже нашёл.


есть "волшебное" слово WORDS показывающее слова текущего контекста

Цитата(MrYuran @ Jun 5 2009, 11:43) *
А вообще, паковать форт в ИАРе - неправильно.
Но на первое время сойдёт.


можно и не паковать, а использовать только ассемблерsmile.gif


Цитата(MrYuran @ Jun 5 2009, 11:43) *
Что я хочу на первом этапе:
(тсз, ближайшая цель)
соорудить простейшее форт-ядро, в котором интерпретатор будет запускаться в отдельном потоке (например, по прерыванию от технологического УАРТа, либо от основного после набора секретной комбинации символов (ахалай-махалай-сим-салавим) плюс пароль).

Вот в этом направлении пока движусь.


Внутренний ключевые функции софта, при этом, имеет смысл оформить в виде слов
с возможностью на стеке передавать им параметры для интерактивного "тестирования"
аппаратуры.
Go to the top of the page
 
+Quote Post
MrYuran
сообщение Jun 5 2009, 09:24
Сообщение #154


Беспросветный оптимист
******

Группа: Свой
Сообщений: 4 640
Регистрация: 26-12-07
Из: Н.Новгород
Пользователь №: 33 646



Цитата(Kopa @ Jun 5 2009, 13:17) *
Внутренний ключевые функции софта, при этом, имеет смысл оформить в виде слов
с возможностью на стеке передавать им параметры для интерактивного "тестирования"
аппаратуры.

Ну да, само собой.
Я пока от возможности дёрнуть ногой по команде прихожу в восторг.

Проходящий мимо коллега смотрит скептически.
Вот если бы писать под МСП на C# и .Net Framework... biggrin.gif

Кстати, куча времени уходит обычно на написание всяческих технологических примочек с кнопочками и окошечками.
а тут - берёшь терминал по вкусу - и вперёд!


--------------------
Программирование делится на системное и бессистемное. ©Моё :)
— а для кого-то БГ — это Bill Gilbert =)
Go to the top of the page
 
+Quote Post
chu
сообщение Jun 5 2009, 09:51
Сообщение #155


Частый гость
**

Группа: Участник
Сообщений: 95
Регистрация: 13-12-07
Пользователь №: 33 246



Цитата(MrYuran @ Jun 5 2009, 15:55) *
Код
: Pulse ( Mask Addr --)
    2DUP OR! >R INVERT R> AND!;

с новыми (асмовыми) определениями OR! и AND! формирует 8-мкс импульс.
Конечно, не 1мк, как на чистом асме, но уже вполне...

Код
:
;C Pulse ( Mask Addr --)
        HEADER  Pulse,5,'Pulse',DOCODE
        DECD   PSP
        MOV     2(PSP),0(PSP)
        AND     @PSP+,0(TOS)
        XOR     @PSP+,0(TOS)
        MOV     @PSP+,TOS
        NEXT


Тоже должно сработать.
Go to the top of the page
 
+Quote Post
Kopa
сообщение Jun 5 2009, 09:57
Сообщение #156


Знающий
****

Группа: Участник
Сообщений: 598
Регистрация: 22-08-05
Пользователь №: 7 861



Цитата(MrYuran @ Jun 5 2009, 12:24) *
Ну да, само собой.
Я пока от возможности дёрнуть ногой по команде прихожу в восторг.


Есть разработки где рисование ladder диаграмм в текстовом редакторе
прямо транслируется в программу на Форт.

Цитата(MrYuran @ Jun 5 2009, 12:24) *
Проходящий мимо коллега смотрит скептически.
Вот если бы писать под МСП на C# и .Net Framework... biggrin.gif


А знаком ли он с частью базовых принципов "экстремального" программирования
когда советуют иметь, как можно меньшие простые объекты с минимальной
необходимой тестируемостью? Меньше понятия слова в языке программирования,
трудно что то придумать.

На Javа и С# есть n-ое количество Форт систем.
и у Java и С# выходной байт код стековый. Далее.
Пишем на них и исполняем или транслируем с помощью JIT код для целевого процессора.
( с возникшими проблемами по скорости и избыточности выходного кода боремся дополнительными
ограничениями по использованию Java и С# языков или как то ещё)

Если посмотреть список контор, при принятии Форт стандарта 94г. то почти все мировые бренды.smile.gif
( но это конечно не аргументы )

Цитата(MrYuran @ Jun 5 2009, 12:24) *
Кстати, куча времени уходит обычно на написание всяческих технологических примочек с кнопочками и окошечками.


Необходимость в лёгких средствах для этого привела к созданию, в рамках spf4,
специализированного библиотечного Форт расширения от ~yz

Цитата(MrYuran @ Jun 5 2009, 12:24) *
а тут - берёшь терминал по вкусу - и вперёд!


Ага.
И даже можно снять видеоролик процесса, при этом smile.gif ( есть и примеры этого )
Go to the top of the page
 
+Quote Post
MrYuran
сообщение Jun 5 2009, 09:57
Сообщение #157


Беспросветный оптимист
******

Группа: Свой
Сообщений: 4 640
Регистрация: 26-12-07
Из: Н.Новгород
Пользователь №: 33 646



CODE
WORDS
Pulse DINT EINT !LEDS COLD .S DUMP U.R WORDS MARKER FLALIGNED ENVIRONMENT?
DEPTH MOVE WITHIN LEAVE +LOOP LOOP ENDLOOP DO L> >L REPEAT WHILE AGAIN UNTIL BE
GIN ELSE THEN IF POSTPONE ['] ; : IMMEDIATE REVEAL HIDE ] [ RECURSE DOES> (DOES>
) CREATE <BUILDS HEADER ( [CHAR] CHAR ' ABORT" ?ABORT ABORT QUIT EVALUATE INTERP
RET ?NUMBER >NUMBER ?SIGN DIGIT? LITERAL FIND IMMED? NFA>CFA NFA>LFA WORD >COUNT
ED /STRING SOURCE IC, I, IALLOT IHERE C, , ALLOT HERE HEX DECIMAL . U. SIGN #> #
S # >DIGIT <# HOLD UD* UD/MOD IWORD ." S" IS" (S") (IS") ITYPE ICOUNT TYPE ACCEP
T UMAX UMIN SPACES SPACE CR COUNT 2OVER 2SWAP 2DUP 2DROP 2! 2@ MIN MAX */ */MOD
MOD / /MOD * FM/MOD SM/REM M* DABS ?DNEGATE DNEGATE ABS ?NEGATE S>D #INIT UINIT
BL TIBSIZE TIB S0 R0 L0 PAD NEWEST IDP LP HP LATEST 'SOURCE DP STATE BASE >IN U0
,NONE !DEST ,DEST ,BRANCH ,EXIT !COLON ,JMP ,CALL ,CF !CF COMPILE, >BODY CHARS
CHAR+ CELLS CELL+ CELL ALIGNED ALIGN KEY? KEY EMIT N= S= SCAN SKIP I->D CMOVE> C
MOVE FILL UM/MOD UM* UNLOOP J I (+loop) (loop) (do) ?branch branch U> U< > < <>
= 0< 0= RSHIFT LSHIFT 2/ 2* >< 1- 1+ NEGATE INVERT XOR OR AND - M+ AND! OR! +! +
D->I IC@ I@ IC! I! FLERASE C! C@ ! @ TUCK RP! RP@ SP! SP@ R@ R> >R NIP ROT OVER
SWAP DROP ?DUP DUP USER CONSTANT VARIABLE EXIT lit EXECUTE
ok

какого-то х.. do и loop в скобках задано...


--------------------
Программирование делится на системное и бессистемное. ©Моё :)
— а для кого-то БГ — это Bill Gilbert =)
Go to the top of the page
 
+Quote Post
Rst7
сообщение Jun 5 2009, 10:03
Сообщение #158


Йа моск ;)
******

Группа: Модераторы
Сообщений: 4 345
Регистрация: 7-07-05
Из: Kharkiv-city
Пользователь №: 6 610



Цитата
На Javа и С# есть n-ое количество Форт систем.
и у Java и С# выходной байт код стековый. Далее.
Пишем на них и исполняем или транслируем с помощью JIT код для целевого процессора.


Кстати, о JIT. Почему бы при использовании MSP430 не реализовать это для Форта? Есть же исполнение из RAM.


--------------------
"Практика выше (теоретического) познания, ибо она имеет не только достоинство всеобщности, но и непосредственной действительности." - В.И. Ленин
Go to the top of the page
 
+Quote Post
Kopa
сообщение Jun 5 2009, 10:15
Сообщение #159


Знающий
****

Группа: Участник
Сообщений: 598
Регистрация: 22-08-05
Пользователь №: 7 861



Цитата(MrYuran @ Jun 5 2009, 11:55) *
###########
такая ещё проблема.
...


С обычным терминалом придётся изменить логику внутренней обработки входного потока
или ускорить поиск слов по словарю через хеш функции.
или перейти на более специализированные протоколы посылка - ответ
( для примера в tinyboot так сделано и дополнительно образ в кросс системе синхронизирован
с кодом в устройстве имеется также возможность к ядру компилировать посылаемые байт-коды.)


Цитата(MrYuran @ Jun 5 2009, 12:57) *
какого-то х.. do и loop в скобках задано...


Так обычно обозначают внутренние примитивные слова служащие основой для
стандартных.
Go to the top of the page
 
+Quote Post
MrYuran
сообщение Jun 5 2009, 10:20
Сообщение #160


Беспросветный оптимист
******

Группа: Свой
Сообщений: 4 640
Регистрация: 26-12-07
Из: Н.Новгород
Пользователь №: 33 646



Цитата(chu @ Jun 5 2009, 13:51) *
Код
:
;C Pulse ( Mask Addr --)
        HEADER  Pulse,5,'Pulse',DOCODE
        DECD   PSP
        MOV     2(PSP),0(PSP)
        AND     @PSP+,0(TOS)
        XOR     @PSP+,0(TOS)
        MOV     @PSP+,TOS
        NEXT


Тоже должно сработать.

Это понятно.
Короче, задача номер ноль - инлайн ассемблер (тем более что он намного проще для msp ввиду ортогональной RISC-архитектуры)

Цитата
Так обычно обозначают внутренние примитивные слова служащие основой для
стандартных.

Ага, я уже в комментариях прочитал smile.gif


--------------------
Программирование делится на системное и бессистемное. ©Моё :)
— а для кого-то БГ — это Bill Gilbert =)
Go to the top of the page
 
+Quote Post
Kopa
сообщение Jun 5 2009, 10:32
Сообщение #161


Знающий
****

Группа: Участник
Сообщений: 598
Регистрация: 22-08-05
Пользователь №: 7 861



Цитата(Rst7 @ Jun 5 2009, 13:03) *
Кстати, о JIT. Почему бы при использовании MSP430 не реализовать это для Форта? Есть же исполнение из RAM.


Можно, но в общем, вопрос в решении достаточно серьёзный , если не учитывать простые приёмы.
( типа макрооптимизация, дающая хорошие результаты при постоянном введении необходимых
тех или иных правил )
Плюс ресурсы отнимаемые у контроллера. ( у Java и C# это не так просто и вливаний
финансовые могут себе позволить ) Ещё предстоит учесть, что в Форте почти отсутствует понятие
типа данных и в каких то случаях необходимо будет учитывать архитектуру внутреннего
устройства Форт системы. А так это вполне решимая задача

P.S. В классически построенной Форт системе главное достоинство, при выполнении
программой своих функций, компактность полученного кода.


Цитата(MrYuran @ Jun 5 2009, 13:20) *
Короче, задача номер ноль - инлайн ассемблер (тем более что он намного проще для msp ввиду ортогональной RISC-архитектуры)


Просто "сказка", но в отличии от PDP-11 не такая ортогональнаяsmile.gif
хотя и в PDP-11 не всё было необходимое.
Инлай ассемблер можно встроить используя возможности внутреннего существующего Форта и посмотрев
примеры реализаций ( например у приводимого выше Форта для MSP Михаилом на spf4 или другие smile.gif
Част ассемблер в Форт системах обратный, но можно и классический ( один легко следует из другого
статья этого же автора, что и Camel Forth Как написать свой (кросс-)ассемблер
© Brad Rodriguez
Можно сделать и Си подобный синтаксис ассемблераsmile.gif

Сообщение отредактировал Kopa - Jun 5 2009, 11:16
Go to the top of the page
 
+Quote Post
Rst7
сообщение Jun 5 2009, 10:34
Сообщение #162


Йа моск ;)
******

Группа: Модераторы
Сообщений: 4 345
Регистрация: 7-07-05
Из: Kharkiv-city
Пользователь №: 6 610



Цитата
Плюс ресурсы отнимаемые у контроллера.
...
P.S. В классически построенной Форт системе главное достоинство, при выполнении
программой своих функций, компактность полученного кода.


Дык хотя бы самые глубокие циклы JIT'ить на ходу. Можно не весь код.


--------------------
"Практика выше (теоретического) познания, ибо она имеет не только достоинство всеобщности, но и непосредственной действительности." - В.И. Ленин
Go to the top of the page
 
+Quote Post
chu
сообщение Jun 5 2009, 10:36
Сообщение #163


Частый гость
**

Группа: Участник
Сообщений: 95
Регистрация: 13-12-07
Пользователь №: 33 246



Цитата(MrYuran @ Jun 5 2009, 16:57) *
какого-то х.. do и loop в скобках задано...


Доступно изложено в книге Баранова и Ноздрунова " Язык Форт и его реализации"
Глава2. Реализация и расширения
2.3 Стек возвратов и реализация структур управления.

В книге описывается стандарт F83.
Go to the top of the page
 
+Quote Post
MrYuran
сообщение Jun 5 2009, 11:01
Сообщение #164


Беспросветный оптимист
******

Группа: Свой
Сообщений: 4 640
Регистрация: 26-12-07
Из: Н.Новгород
Пользователь №: 33 646



Код
: Pulses ( Mask Addr Num --)                
    0 DO                        
        2DUP                              
        Pulse                        
    LOOP
    2DROP;

2 Pulses формирует 2 импульса 8мкс с периодом 35мкc
08.gif yeah.gif
Сорри за мой мой поросячий восторг, что-то подобное испытываешь, когда начинает пищать первый мультивибратор или программа "хелловорлд" начинает мигать светодиодами... smile.gif


--------------------
Программирование делится на системное и бессистемное. ©Моё :)
— а для кого-то БГ — это Bill Gilbert =)
Go to the top of the page
 
+Quote Post
chu
сообщение Jun 5 2009, 11:10
Сообщение #165


Частый гость
**

Группа: Участник
Сообщений: 95
Регистрация: 13-12-07
Пользователь №: 33 246



Цитата(MrYuran @ Jun 5 2009, 18:01) *
08.gif yeah.gif
Сорри за мой мой поросячий восторг, что-то подобное испытываешь, когда начинает пищать первый мультивибратор или программа "хелловорлд" начинает мигать светодиодами... smile.gif



Здорово! cheers.gif
Go to the top of the page
 
+Quote Post

16 страниц V  « < 9 10 11 12 13 > » 
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 21st July 2025 - 20:00
Рейтинг@Mail.ru


Страница сгенерированна за 0.01538 секунд с 7
ELECTRONIX ©2004-2016