Kopa 0 16 ноября, 2012 Опубликовано 16 ноября, 2012 (изменено) · Жалоба Таки извратился :) : #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 :; Изменено 16 ноября, 2012 пользователем Kopa Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
MrYuran 29 16 ноября, 2012 Опубликовано 16 ноября, 2012 · Жалоба а если так прикинуть? : #define POSTPONE; POSTPONE :; у, шайтан! : #define postpone; postpone :; ok #define abcd 1234 ok . 1234 ok Не, это я поторопился :( abcd ok . -5433 ok abcd .s <3> 123 ABCD ABCD ok Ну да ладно, хватит наводок на выходные :) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
chu 0 16 ноября, 2012 Опубликовано 16 ноября, 2012 · Жалоба 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 > Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Kopa 0 16 ноября, 2012 Опубликовано 16 ноября, 2012 (изменено) · Жалоба 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 ; Изменено 16 ноября, 2012 пользователем Kopa Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
chu 0 17 ноября, 2012 Опубликовано 17 ноября, 2012 · Жалоба прошу пардону, это не флуд, это - "поэтическая минутка" в топик, графоманское рукоблудие: \ Thinking Forth : ЗАДАЧА СЛОВА ОПИСАНИЯ ПРОБЛЕМЫ; :yeah: Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
chu 0 17 ноября, 2012 Опубликовано 17 ноября, 2012 (изменено) · Жалоба P.S. Жаль нет матчасти под рукой, надо идти покупать, заказывать или сделать симулятор МSP430 или приспособить существующий, а в Proteus-е вроде есть MSP430. Есть. В коробочке лежат. Могу поделиться, на выбор - MSP430F235 либо MSP430F149, ( 235-х у меня несколько) ( либо отдам оба сразу ). Но, - ни обвязки ни макетки ни программатора ни коммуникаций. В хорошие руки - не жалко. Ваш выбор. Скачал (через техасских инструментов) какойто iar workbench kickstart ( EW430-5511 ) с ограничением по объёму кода в 4 Кбайт. Похоже для сборки camelforth430 не годиться. Что делать? ( 30-дневную версию не предлагать: копаться буду долго, и мне не нужна неожиданное "опа!", когда "уже вот-вот" ) Или это ограничение только на кодогенерацию компилятора С ? Просветите, темный я. Изменено 17 ноября, 2012 пользователем chu Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Kopa 0 17 ноября, 2012 Опубликовано 17 ноября, 2012 (изменено) · Жалоба Есть. В коробочке лежат. Могу поделиться, на выбор - MSP430F235 либо MSP430F149, ( 235-х у меня несколько) ( либо отдам оба сразу ). Но, - ни обвязки ни макетки ни программатора ни коммуникаций. В хорошие руки - не жалко. Ваш выбор. Спасибо, но думаю с моими "не совсем прямыми руками" и базовыми знаниями архитектуры MSP430, в данном вопросе, это не выход:) (пока на столе лежит, по случаю купленный, Atмega 8535) Скачал (через техасских инструментов) какойто iar workbench kickstart ( EW430-5511 ) с ограничением по объёму кода в 4 Кбайт. Похоже для сборки camelforth430 не годиться. Что делать? Как вариант, ограничиться объёмом кода Форт ядра в 4 Кбайт:) А Си обязательно использовать? Изменено 17 ноября, 2012 пользователем Kopa Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
chu 0 17 ноября, 2012 Опубликовано 17 ноября, 2012 (изменено) · Жалоба (пока на столе лежит, по случаю купленный, 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) Верблюжьи исходники - на асме. Изменено 17 ноября, 2012 пользователем chu Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Kopa 0 17 ноября, 2012 Опубликовано 17 ноября, 2012 (изменено) · Жалоба 8K Flash - маловато будет. Для amforth'a. Для встроенного варианта Форт системы, может быть и мало, но есть ещё кросс-компиляция с "убиранием" в целевом коде не задействованных слов. (а текущий базис рабочих слов, можно при необходимости и постепенно прошивать) и управление выполнением целевого кода в кросс-среде + использовать не один, а два и более (может и разных), например, контроллеров (варианты их совместного использования можно продумать) кол-во интерфейсов и линий ввода/вывода будет больше и можно распределить "вычилительные" задачи удобно. Свят-свят, ассемблер, только ассемблер B) Верблюжьи исходники - на асме. Тогда может проще их "пересобрать", например, с использованием SPF4 (с пониманием ассемблерных команд у MSP30 всё неплохо) были вроде уже сделаны некоторые варианты от Михаила. Изменено 17 ноября, 2012 пользователем Kopa Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
chu 0 17 ноября, 2012 Опубликовано 17 ноября, 2012 (изменено) · Жалоба Тогда может проще их "пересобрать", например, с использованием SPF4 (с пониманием ассемблерных команд у MSP30 всё неплохо) Да, буду пересобирать camelforth430 сам. Кросс пока не интересует. Интересует полноценная форт-система на кристалле. Аналогичная amforth"у. Вот MrYuran говорит: нет прерываний. Будем поглядеть что можно сделать. Опять же, round-robin multitasker. А так же встроенный ассемблер. Но это уже кажется невпихуемо. Или впихуемо, но несуразно для 16 Кбайт у F235-го. Вот, както так, почти "свой" :rolleyes: форт, но не сразу... Изменено 17 ноября, 2012 пользователем chu Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
SBE 1 17 ноября, 2012 Опубликовано 17 ноября, 2012 · Жалоба Скачал (через техасских инструментов) какойто iar workbench kickstart ( EW430-5511 ) с ограничением по объёму кода в 4 Кбайт. Похоже для сборки camelforth430 не годиться. Что делать? ( 30-дневную версию не предлагать: копаться буду долго, и мне не нужна неожиданное "опа!", когда "уже вот-вот" ) Или это ограничение только на кодогенерацию компилятора С ? Просветите, темный я. 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. Кросс-компиляция она полезна и для полноценной системы на кристале. Без нее новые слова добавлять только через компиляцию на железке (или ручками делать кросс-компиляцию), а это способ пригодный только для простых случаев, типа обучения. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Kopa 0 18 ноября, 2012 Опубликовано 18 ноября, 2012 (изменено) · Жалоба ИМХО 16К флеша для MSP430 для забав с фортом более чем достаточно, скорее всего в любом варианте. На меньшее для начала лучше не ориентироваться. Немного не по теме, но пост показался интересным RetroBSD on Maximite Первым в запуске удостоился вниманием Форт, после пары игрушек:) Изменено 18 ноября, 2012 пользователем Kopa Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
chu 0 19 ноября, 2012 Опубликовано 19 ноября, 2012 (изменено) · Жалоба :bb-offtopic: 2 dynamic-wind :ph34r: seaforth.zip Изменено 19 ноября, 2012 пользователем chu Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
MrYuran 29 19 ноября, 2012 Опубликовано 19 ноября, 2012 · Жалоба А так же встроенный ассемблер. Имеется в репозитории в виде файла 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; красный вкл зелёный вкл красный выкл зелёный выкл ... красный мигнуть итд произвели неизгладимое впечатление: "круто, он учится понимать новые слова!" Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
chu 0 19 ноября, 2012 Опубликовано 19 ноября, 2012 · Жалоба Мне проблема на данном этапе видится несколько в другом. Очень мало ОЗУ оставили пользователю, несколько десятков байт. Без переразметки ничего более-менее путного не создать. Логично было бы урезать стеки и особенно входной буфер, заодно будет стимул вводить как можно более короткие слова. ; ---------------------------------------------------------------------- ; 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 Действительно, стеки можно сократить, раза в четыре... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться