Перейти к содержанию
    

Форт (Forth) и MSP430 для изучения

Таки извратился :)

: #define :; ok 
#define abc 123; ok
abc . 123 ok

Осталось придумать, кто будет ; дописывать в конце каждой строки

 

Чегт, ещё одна засада!

#define ADC10CTL1_            0x01B2    /* ADC10 Control 1 */ 0X01B2?

Как бы объяснить, что 0x == hex

Может не дописывать ; а дополнительно (принудительно) или POSTPONE ; или [

Для определения 0х проще всего пересобрать Форт систему c изменённым NUMBER определителем, если это

слово не векторизовано. А так, скорее всего, придётся читать в слове входной поток SOURCE TIB >IN или работа со строками и определять 0х и переключившись в шестнадцатиричную систему вводить остаток слова как цифру.

 

P.S. Как то так можно попробовать.

 

Таки извратился :)

: #define :; ok 
#define abc 123; ok
abc . 123 ok

Осталось придумать, кто будет ; дописывать в конце каждой строки

а если так прикинуть?

  : #define POSTPONE; POSTPONE  :;

Изменено пользователем Kopa

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

а если так прикинуть?

  : #define POSTPONE; POSTPONE  :;

 

у, шайтан!

 

: #define postpone; postpone :; ok 
#define abcd 1234 ok 
. 1234 ok 

 

Не, это я поторопился :(

 

abcd ok 
. -5433 ok 
abcd .s <3> 123 ABCD ABCD ok

 

Ну да ладно, хватит наводок на выходные :)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

SP-FORTH - ANS FORTH 94 for Win95/98/Me/NT/2k/XP/Vista
Open source project at http://spf.sf.net
Russian FIG at http://www.forth.org.ru; Started by A.Cherezov
Version 4.20 Build 001 at 21.Jan.2009

>: NUMBER 0 0 2SWAP >NUMBER NIP IF 2DROP FALSE ELSE D>S TRUE THEN;
Ok
>: #define BASE @ HEX CREATE NextWord NUMBER 0= THROW , BASE ! DOES> @;
#define isn't unique ()
Ok
>#define ADC10DTC0_ 0048
Ok
>ADC10DTC0_
Ok ( 72 )
>DUP . HEX .
72 48  Ok
>

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

ok, попробую :)

Слова есть такие:

Из этих слов сначало необходимо убрать "общепринятые" (стандартные) и посмотреть на введённые варианты 4e4th слов.

P.S. Особо посмотреть на работу с разной памятью в контроллере.

 

Самое простое, без обработки входного потока и "извращений"

 : /* POSTPONE  \ ; 

: #define , POSTPONE ; CREATE DOES> POSTPONE CONSTANT ; \ будет ли и с этим загадка?

0

#define ABC 123

, ;

А так? Для компиляции в тело кода могут быть введены аналоги слов , @

и вероятно стоит использовать слово LITERAL для компиляции чисел со стека внутри слова

Бывает, что тело кода отделяют от заголовков (хранимых отдельно) и связь между частями слова можно установить словами CFA>NFA >BODY

навыки в "боди-билдинге" данной Форт системы могут помочь понять, что не "срослось"

 

P.S. Жаль нет матчасти под рукой, надо идти покупать, заказывать или сделать симулятор МSP430 или приспособить существующий,

а в Proteus-е вроде есть MSP430.

 

Не, это я поторопился :(

Что предсказуемо т.к. создалось пустое слово

 

 

ok, попробую :)

Хотя, полюбому матчасть учить.

Слова есть такие:

Чем помочь с словами?

 

P.S. Можно непосредственно изменить буфер входного потока записав вместо 0х например H с пробелом, при этом

: H HEX ;

Изменено пользователем Kopa

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

прошу пардону, это не флуд, это - "поэтическая минутка" в топик,

графоманское рукоблудие:

\ Thinking Forth
: ЗАДАЧА   СЛОВА ОПИСАНИЯ ПРОБЛЕМЫ;

:yeah:

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

P.S. Жаль нет матчасти под рукой, надо идти покупать, заказывать или сделать симулятор МSP430 или приспособить существующий,

а в Proteus-е вроде есть MSP430.

 

Есть. В коробочке лежат. Могу поделиться, на выбор - MSP430F235 либо MSP430F149, ( 235-х у меня несколько) ( либо отдам оба сразу ).

Но, - ни обвязки ни макетки ни программатора ни коммуникаций. В хорошие руки - не жалко. Ваш выбор.

 

Скачал (через техасских инструментов) какойто iar workbench kickstart ( EW430-5511 ) с ограничением по объёму кода в 4 Кбайт.

Похоже для сборки camelforth430 не годиться. Что делать?

( 30-дневную версию не предлагать: копаться буду долго, и мне не нужна неожиданное "опа!", когда "уже вот-вот" :biggrin: )

 

Или это ограничение только на кодогенерацию компилятора С ? Просветите, темный я.

Изменено пользователем chu

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Есть. В коробочке лежат. Могу поделиться, на выбор - MSP430F235 либо MSP430F149, ( 235-х у меня несколько) ( либо отдам оба сразу ).

Но, - ни обвязки ни макетки ни программатора ни коммуникаций. В хорошие руки - не жалко. Ваш выбор.

Спасибо, но думаю с моими "не совсем прямыми руками" и базовыми знаниями архитектуры MSP430, в данном вопросе, это не выход:)

(пока на столе лежит, по случаю купленный, Atмega 8535)

 

Скачал (через техасских инструментов) какойто iar workbench kickstart ( EW430-5511 ) с ограничением по объёму кода в 4 Кбайт.

Похоже для сборки camelforth430 не годиться. Что делать?

Как вариант, ограничиться объёмом кода Форт ядра в 4 Кбайт:)

А Си обязательно использовать?

Изменено пользователем Kopa

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

(пока на столе лежит, по случаю купленный, Atмega 8535)

8K Flash - маловато будет. Для amforth'a.

Илья на робофоруме на таком http://devicter.ru/goods/Arduino-Nano-V3-ATmega amforth гоняет.

Строит что-то с часами (ds1307), однопроводными http://devicter.ru/goods/sensor-temperatur...chnyj?from=MDg3 ,

rfid считывателем пластиковых карт http://devicter.ru/goods/datchik-schityvan...-kart?from=MDg3

и, кажется GSM модемом. с интересом наблюдаю.

 

А Си обязательно использовать?

Свят-свят, ассемблер, только ассемблер B) Верблюжьи исходники - на асме.

Изменено пользователем chu

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

8K Flash - маловато будет. Для amforth'a.

Для встроенного варианта Форт системы, может быть и мало, но есть ещё кросс-компиляция с "убиранием" в целевом коде

не задействованных слов. (а текущий базис рабочих слов, можно при необходимости и постепенно прошивать) и управление выполнением целевого кода в кросс-среде + использовать не один, а два и более (может и разных), например, контроллеров (варианты их совместного использования можно продумать) кол-во интерфейсов и линий ввода/вывода будет больше и можно распределить "вычилительные" задачи удобно.

 

Свят-свят, ассемблер, только ассемблер B) Верблюжьи исходники - на асме.

Тогда может проще их "пересобрать", например, с использованием SPF4 (с пониманием ассемблерных команд у MSP30 всё неплохо) были вроде

уже сделаны некоторые варианты от Михаила.

Изменено пользователем Kopa

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Тогда может проще их "пересобрать", например, с использованием SPF4 (с пониманием ассемблерных команд у MSP30 всё неплохо)

Да, буду пересобирать camelforth430 сам. Кросс пока не интересует. Интересует полноценная форт-система на кристалле. Аналогичная amforth"у.

Вот MrYuran говорит: нет прерываний. Будем поглядеть что можно сделать. Опять же, round-robin multitasker. А так же встроенный ассемблер. Но это уже кажется невпихуемо. Или впихуемо, но несуразно для 16 Кбайт у F235-го.

Вот, както так, почти "свой" :rolleyes: форт, но не сразу...

Изменено пользователем chu

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Скачал (через техасских инструментов) какойто iar workbench kickstart ( EW430-5511 ) с ограничением по объёму кода в 4 Кбайт.

Похоже для сборки camelforth430 не годиться. Что делать?

( 30-дневную версию не предлагать: копаться буду долго, и мне не нужна неожиданное "опа!", когда "уже вот-вот" :biggrin: )

 

Или это ограничение только на кодогенерацию компилятора С ? Просветите, темный я.

 

Kickstart обязан собирать camelforth430, форт-система на ассемблере, а ограничение по коду только для С. Под эту среду он же и сделан.

The IDE includes a code size limited C-Compiler/Unlimited Assembler/FET Debugger/Simulator. T

 

Прерывания форту ортогональны, вектора в camelforth430 перенесены в RAM и заглушены. Нужно написать свой обработчик на ассемблере. Если есть форт-асссемблер, то можно обработчики ваять прямо в интерпретаторе.

 

ИМХО 16К флеша для MSP430 для забав с фортом более чем достаточно, скорее всего в любом варианте. На меньшее для начала лучше не ориентироваться.

 

В принципе форт-систему можно запустить на IAR и из-под эмулятором, без железки. Терминал в отладчике C-Spy есть, нужно только stdio прикрутить. В ограниченной версии может не выйти из-за ограничений по C.

 

Кросс-компиляция она полезна и для полноценной системы на кристале. Без нее новые слова добавлять только через компиляцию на железке (или ручками делать кросс-компиляцию), а это способ пригодный только для простых случаев, типа обучения.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

ИМХО 16К флеша для MSP430 для забав с фортом более чем достаточно, скорее всего в любом варианте. На меньшее для начала лучше не ориентироваться.

Немного не по теме, но пост показался интересным RetroBSD on Maximite

Первым в запуске удостоился вниманием Форт, после пары игрушек:)

Изменено пользователем Kopa

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А так же встроенный ассемблер.

Имеется в репозитории в виде файла was4.f, а также в виде асм-модуля

 

Ещё у немцев на сайте есть интересные примеры, в т.ч дизасм

 

; This small 430 assembler produces code at IHERE
; WAS means Willems ASsembler for MSP430 and 4E4th

; Complete security by checking for valid registers
; and extended checking on addressing errors
; 4 nibbles form dual opcode | instr. | S-reg. | modes | D-reg.  |
; Single opcode              | 9-bit instruc.   | mode | D/S-reg |
; Conditionals               | 6-bit instr | 10-bit rel. branch |
; Only basic opcodes: 03DE bytes 
; With corrected and shrinked an control structs: 05C0 bytes
; Together with DAS6.F only 0A16 bytes
; When used together with DAS, first compile DAS !!!!

 

DAS - я так понимаю, дизасм.

Вместе с асмом 2,5 кила из оставшихся восьми.

 

Мне проблема на данном этапе видится несколько в другом. Очень мало ОЗУ оставили пользователю, несколько десятков байт.

Без переразметки ничего более-менее путного не создать.

Логично было бы урезать стеки и особенно входной буфер, заодно будет стимул вводить как можно более короткие слова.

 

В качестве лирического отступления:

Принес в выходные платку ланчпада домой, показал 10-летнему сыну, как "мозги для нашего будущего робота".

Несколько строчек в терминале

: зелёный green;
: красный red;
: вкл cset;
: выкл cclr;

красный вкл
зелёный вкл
красный выкл
зелёный выкл

...

красный мигнуть
итд

произвели неизгладимое впечатление: "круто, он учится понимать новые слова!"

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Мне проблема на данном этапе видится несколько в другом. Очень мало ОЗУ оставили пользователю, несколько десятков байт.

Без переразметки ничего более-менее путного не создать.

Логично было бы урезать стеки и особенно входной буфер, заодно будет стимул вводить как можно более короткие слова.

; ----------------------------------------------------------------------
; init430G2553.s43 - reset interupt service routine - MSP430G2553
; ----------------------------------------------------------------------

; CamelForth RAM memory map:
;   UP          User Pointer, 2 bytes
;   UAREA       User area, 32 bytes
;   UAREA+20h   HOLD area, 40 bytes, grows down from end
;   UAREA+48h   PAD buffer, 88 bytes, must follow HOLD area
;   UAREA+A0h   Parameter stack, 128 B, grows down from end
;   UAREA+120h  Return stack, 128 B, grows down from end
;   UAREA+1A0h  TIB Terminal Input Buffer, 88 bytes

Действительно, стеки можно сократить, раза в четыре...

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...