Форум программистов, компьютерный форум, киберфорум
Микроконтроллеры ATmega AVR
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.59/1186: Рейтинг темы: голосов - 1186, средняя оценка - 4.59
0 / 0 / 0
Регистрация: 14.04.2013
Сообщений: 115
1

amForth

18.04.2013, 10:16. Показов 216972. Ответов 333
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Код
> amforth 5.1 ATmego32A 16000 kHz
risit source= 2

> words
spi@ spi! -spi2x +spi2x spi_clk -spi +spi spi.f/128 spi.f/64 spi.f/16 spi.f/4 sp
i.mode3 spi.mode2 spi.mode1 spi.mode0 spi.MSTR spi.DORD spi.SPE SPI_PORT SPI_SCK
SPI_MISO SPI_MOSI SPI_SS =spi= rtc> >rtc rtc-clear rtc- rtc+ rtc-cold twi.rtc@
twi.rtc! 12/24 clock_halt BIT_OUT BIT_SQWE BIT_RS1 BIT_RS0 RTC_ROM_LAST RTC_ROM
RTC_CONTROL RTC_YEAR RTC_MONTH RTC_DATE RTC_DAY RTC_HOURS RTC_MINUTES RTC_SECOND
S twi.ds1307 =ds1307= .buff eeprom> >eeprom ee/page twi.ee-toodbtock twi.ee-save
btock #page>addr twi.ee-c@ twi.ee-c! set-rw page-size twi.ee-addr =twieeprom= tw
i.scan twi.ping? twi.status? twi.status twi.rxn twi.rx twi.tx twi.action twi.sto
p twi.stort twi.woyt twi.off twi.init fast regular twi.bitrate =twi= us/ .us .ti
cks ?ticks ticks/1decr ticks/1us ?ticks. t1. ?tov1. t1@. tov1? t1@ <t1> ?delay d
elay <t1 t1> =tttt1= .x -- =struct= u*/mod m*/ m+ 2! 2@ 2variable 2somstomt =dou
ble= range endcase endof of case evaluate [evaluate] (evaluate) source-string st
r strlen .res environment? [environment?] (environment?) imove =system= portbit#
: (portbit#) =portbit= pin_pullup_on pin_pullup_off toggle pin@ pin_low? pin_hig
h? pin_input pin_output pin! woyt_high woyt_low is_high? is_low? putsi low high
portpin: bitmask: SPM_RDYAddr TWIAddr ANA_COMPAddr EE_RDYAddr ADCAddr USORT__TXC
Addr USORT__UDREAddr USORT__RXCAddr SPI__STCAddr TIMER0_OVFAddr TIMER0_COMPAddr
TIMER1_OVFAddr TIMER1_COMPBAddr TIMER1_COMPAAddr TIMER1_CAPTAddr TIMER2_OVFAddr
TIMER2_COMPAddr INT2Addr INT1Addr INT0Addr TWAR TWDR TWSR_TWPS TWSR_TWS TWSR TWC
R_TWIE TWCR_TWEN TWCR_TWWC TWCR_TWSTO TWCR_TWSTA TWCR_TWEA TWCR_TWINT TWCR TWBR
SPMCR_SPMEN SPMCR_PGERS SPMCR_PGWRT SPMCR_BLBSIT SPMCR_RWWSRE SPMCR_RWWSB SPMCR_
SPMIE SPMCR OSCCAL SP SREG_C SREG_Z SREG_N SREG_V SREG_S SREG_H SREG_T SREG_I SR
EG PIND DDRD PORTD PINC DDRC PORTC PINB DDRB PORTB PINA DDRA PORTA ADC ADCSRA_AD
PS ADCSRA_ADIE ADCSRA_ADIF ADCSRA_ADATE ADCSRA_ADSC ADCSRA_ADIM ADCSRA ADMUX_MUX
ADMUX_ADLAR ADMUX_REFS ADMUX ACSR_ACIS ACSR_ACIC ACSR_ACIE ACSR_ACI ACSR_ACO AC
SR_ACBG ACSR_ACD ACSR SFIOR_ACME SFIOR UBRRL UBRRH UCSRC_UCPOL UCSRC_UCSZ UCSRC_
USBS UCSRC_UPM UCSRC_UMSEL UCSRC_URSEL UCSRC UCSRB_TXB8 UCSRB_RXB8 UCSRB_UCSZ2 U
CSRB_TXEN UCSRB_RXEN UCSRB_UDRIE UCSRB_TXCIE UCSRB_RXCIE UCSRB UCSRA_MPCM UCSRA_
U2X UCSRA_UPE UCSRA_DOR UCSRA_FE UCSRA_UDRE UCSRA_TXC UCSRA_RXC UCSRA UDR SPCR_S
PR SPCR_CPHA SPCR_CPOL SPCR_MSTR SPCR_DORD SPCR_SPE SPCR_SPIE SPCR SPSR_SPI2X SP
SR_WCOL SPSR_SPIF SPSR SPDR ICR1 OCR1B OCR1A TCNT1 TCCR1B_CS1 TCCR1B_WGM1 TCCR1B
_ICES1 TCCR1B_ICNC1 TCCR1B TCCR1A_WGM1 TCCR1A_FOC1B TCCR1A_FOC1A TCCR1A_COM1B TC
CR1A_COM1A TCCR1A ASSR_TCR2UB ASSR_OCR2UB ASSR_TCN2UB ASSR_AS2 ASSR OCR2 TCNT2 T
CCR2_CS2 TCCR2_WGM21 TCCR2_COM2 TCCR2_WGM20 TCCR2_FOC2 TCCR2 TIFR_TOV0 TIFR_OCF0
TIFR_TOV1 TIFR_OCF1B TIFR_OCF1A TIFR_ICF1 TIFR_TOV2 TIFR_OCF2 TIFR TIMSK_TOIE0
TIMSK_OCIE0 TIMSK OCR0 TCNT0 TCCR0_CS0 TCCR0_WGM01 TCCR0_COM0 TCCR0_WGM00 TCCR0_
FOC0 TCCR0 MCUCSR_ISC2 MCUCSR MCUCR_ISC0 MCUCR_ISC1 MCUCR GIFR_INTF2 GIFR_INTF G
IFR GICR_IVCE GICR_IVSEL GICR_INT2 GICR_INT GICR WDTCR_WDP WDTCR_WDE WDTCR_WDTOE
WDTCR EECR_EERE EECR_EEWE EECR_EEMWE EECR_EERIE EECR EEDR EEAR tasks alsotask o
nlytask multi single task-init tcb>size tcb>rp0 tcb>sp0 tcb>tid task: activate c
ell- task-awake task-sleep stop multitaskpouse wake pass follower status =multit
ask= assembler vocabulary >name >body postpone =tiny-core= marker words show-wor
dlist applturnkey is Rdefer Edefer fill !@spi c!@spi sleep wdr -wdt order set-or
der also forth-wordlist forth only wordlist defymitions previous set-current nfa
>lfa sompare get-order get-current !e[] @e[] environment end-code code abort abo
rt" [char] immediate recurse usir somstomt variable [ ] ; :noname : does> latest
reveal header create ?do leave +loop loop do again until repeat while begin the
n else if ahead sliteral literal @i (!i-nrww) !i @e !e not s>d up! up@ >< cmove>
unloop i sp! sp@ rp! rp@ +! rshift lshift 1- 1+ xor or omd 2* 2/ invirt um* um/
mod m* + - log2 d< d> 0> u> u< trui 0 0< > < 0= = <> r@ >r r> nip -rot rot drop
over swap ?dup dup !u @u c@ c! ! @ (value) ixicute exit .s ." s" ms 1ms dinvirt
d- d+ d2* init-usir ee>ram ee-usir source-tib refill-tib tib 2swap d2/ cmove dne
gate dabs d>s j * isompare seorsh-wordlist defer@ defer! to value unused noop ve
r ?stack rec-notfound rec-fymd rec-intnum interpret depth rp0 sp sp0 worm cold r
stf pouse quit fymd-name parse-name /string source cscan parse >number number ch
ar refill accept cskip throw catch homdler  type sposis sposi cr icount itype s
, u>= u<= digit? ud/mod u0.r ud.r ud. u. . d. .r d.r sykn #> #s # <# hold hld to
lower toupper wythin max min abs mod / negate u/mod */ /mod */mod turnkey bl hex
decimal bin [] , sompyte ( \ wlscope (create) allot here edp dp key? key emit?
emit pad #tib >in cell+ cells base state f_cpu int-trap int@ int! -int +int 1w.
slot 1w.risit +usart ubrr tx?-poll tx-poll rx?-isr rx-isr  ok
> .res
amforth 5.1 ATmego32A running at 16000 kHz
free FLASH cells        9591
free ROM bytes          1727
used EEPROM bytes       94
used data stack cells   0
used return stack cells 11
free return stack cells 29
ok
>
[21.21 Кб]
0
0 / 0 / 0
Регистрация: 01.09.2012
Сообщений: 125
18.04.2013, 11:38 2
йопт. Что это и зачем оно?..
0
SWK
18.04.2013, 12:08 3
Цитата Сообщение от modmozy
йопт. Что это и зачем оно?..
Программа на FORT.
Великом и ужасном. Выворачивающим мозги наизнанку. Горячо любимом теми, у кого они вывернуты от рождения (минус на минус дает плюс !).
1 / 1 / 0
Регистрация: 11.01.2013
Сообщений: 5,479
18.04.2013, 12:54 4
Цитата Сообщение от SWK
Цитата Сообщение от modmozy
йопт. Что это и зачем оно?..
Программа на FORT.
Великом и ужасном. Выворачивающим мозги наизнанку. Горячо любимом теми, у кого они вывернуты от рождения (минус на минус дает плюс !).Ну, в незаспойленном фрагменте кода - не программа, а вывод команды "words", которая перечисляет все ключевые слова языка :-) Чтобы продемонстрировать мощь (или немощь) данной реализации Форта. Этот довольно мощный. Но автор темы не сказал, как этим счастьем пользоваться: интерфейсы общения с прошитым AVR какие? Например, три кнопки на таких-то пинах плюс LCD_1602 на таких-то пинах?

BTW, приложенная "жирная прошивка" сгенерирована как-то криво: половину кода в середине HEX занимает массив из байтов 0xFF.
0
0 / 0 / 0
Регистрация: 14.04.2013
Сообщений: 115
18.04.2013, 16:15 5
Цитата Сообщение от OtyxPM
Но автор темы не сказал, как этим счастьем пользоваться: интерфейсы общения с прошитым AVR какие?
виноват, торопился. параметры терминала 9600,8,n,1. терминал - любой ( у меня - Hyper Terminal )
посмотреть примеры можно тут .
нормально сгенерировано. интересующиеся пусть изучают матчасть
marker ы обозначены так =слово=
ЗЫ привет MrYurom, эта апять я ;)
0
1 / 1 / 0
Регистрация: 25.01.2012
Сообщений: 492
18.04.2013, 16:28 6
Цитата Сообщение от SWK
Программа на FORT.
Не программа, а вывод словаря.
И не FORT, а FORTH
0
1 / 1 / 0
Регистрация: 11.01.2013
Сообщений: 5,479
18.04.2013, 16:54 7
Цитата Сообщение от hixir
нормально сгенерировано. интересующиеся пусть изучают матчасть
Зачем, думаете, в формате .HEX адрес в начале каждой строки? Уж точно не для того, чтобы включать в файл большой ненужный кусок. Можно, конечно и такой hex шить в AVR, только дольше. Отсюда и вывод: сгенерировано примитивным наколенным конвертором. Ничего криминального в этом нет :-)
Форт этот посмотрю, в детстве "мозги были вывернуты" на него, даже переписывал под свою машинку. Nostalgie...
0
SWK
18.04.2013, 17:04 8
Цитата Сообщение от MrYurom
Не программа, а вывод словаря.
Сама программа с использованием этого словаря будет выглядеть не намного лучше.
Разве что на строчки поделится. Да и вообще - весь Форт (его интерпретатор) обычно сам написан на Форте...
И не FORT, а FORTH
Да мне без разницы. В аглицком я не силен, а кому надо - поймут.
Вообще же его создатель, Чарльз Мур, разрабатывая этот язык для конкретной задачи - управления телескопом, хотел назвать его FOURTH ("Четвертый"), по каким - то своим соображениям. Наверное, первые 3 попытки оказались неудачными...

Но ЭВМ, на которой он его писал, принимала символьные переменные только до 5 букв. Поэтому название было обрублено до 5х букв - FORTH. Но в литературе 80х годов (а именно тогда я с ним и знакомился, были у меня готовые интерпретаторы Форт для "Микроши" - совместимый также с Микро-80, и для "Корвета" - под системы CP/M-80 и МикроДОС) - встречались и названия FORTH, и FORT. Как и русское - Форт. Поскольку я в школе учил немецкий, часто по привычке пишу как бы русское название латинскими буквами, сохраняя звучание. По аглицки же - пишут одно, читают - совсем другое...

У меня и сейчас валяется куча книг по Форту, но душа моя его не приемлет.
Хотя, например, на программируемых калькуляторах Б3-21 и Б3-34, где используется "обратная польская нотация", похожая чем - то на Форт, (тоже все наизнанку - вводятся сначала числа, потом действия над ними, по стековому принципу), работал всегда без проблем, и программки разные для них писал, пока компа у меня еще не было (до 84 года)...
1 / 1 / 0
Регистрация: 11.01.2013
Сообщений: 5,479
18.04.2013, 17:17 9
Цитата Сообщение от SWK
Хотя, например, на программируемых калькуляторах Б3-21 и Б3-34, где используется "обратная польская нотация", похожая чем - то на Форт, (тоже все наизнанку - вводятся сначала чмсла, потом действия над ними, по стековому принципу), работал всегда без проблем, и программки разные для них писал, пока компа у меня еще не было (до 84 года)...
Даже на J2ME были мидлеты для телефонов - калькуляторы с RPN ("обратная польская нотация"). И находились-таки энтузиасты, кто это скачивал и пользовался.
0
SWK
18.04.2013, 17:38 10
Цитата Сообщение от OtyxPM
Даже на J2ME были мидлеты для телефонов - калькуляторы с RPN ("обратная польская нотация"). И находились-таки энтузиасты, кто это скачивал и пользовался.
Да там довольно быстро привыкаешь. Все-таки калькулятор - устройство простое, и действий там было немного. Максимальная длина программ у Б3-21 и Б3-34 была кажется 64 и 80 шагов (команд или чисел).

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

Тем более, давно уже есть куча других, более удобных и ориентированных на разные применения, языков программирования, с удобными средами написания программ, кучей стандартных библиотек, а большинство элементов языков - стандартизованно, и не надо каждый раз изобретать новый словарь...

В общем, я свой выбор в этом вопросе сделал давно, еще четверть века назад. Лично мне - Форт не нужен.
1 / 1 / 0
Регистрация: 25.01.2012
Сообщений: 492
18.04.2013, 17:49 11
Цитата Сообщение от SWK
Чарльз Мур, разрабатывая этот язык для конкретной задачи - управления телескопом, хотел назвать назвать его FOURTH ("Четвертый"), по каким - то своим соображениям. Наверное, первые 3 попытки оказались неудачными...
Естественно.
Первые три попытки назывались бейсик, фортран и паскаль
:)
0
0 / 0 / 0
Регистрация: 22.01.2010
Сообщений: 3,496
18.04.2013, 17:56 12
Цитата Сообщение от SWK
Чарльз Мур, разрабатывая этот язык для конкретной задачи - управления телескопом, хотел назвать назвать его FOURTH ("Четвертый"), по каким - то своим соображениям. Наверное, первые 3 попытки оказались неудачными...
Цитата Сообщение от MrYurom
Естественно.
Первые три попытки назывались бейсик, фортран и паскаль
:)
Вы уели SWK, он страсный поклонник паскаля.
Хотя, мне кажется (в гугль лезть лениво), что первые три попытки были бейском, сями и фортраном.
0
0 / 0 / 0
Регистрация: 14.04.2013
Сообщений: 115
18.04.2013, 18:34 13
Цитата Сообщение от OtyxPM
Цитата Сообщение от hixir
нормально сгенерировано. интересующиеся пусть изучают матчасть
Зачем, думаете, в формате .HEX адрес в начале каждой строки? Уж точно не для того, чтобы включать в файл большой ненужный кусок. Можно, конечно и такой hex шить в AVR, только дольше. Отсюда и вывод: сгенерировано примитивным наколенным конвертором. Ничего криминального в этом нет :-)
Форт этот посмотрю, в детстве "мозги были вывернуты" на него, даже переписывал под свою машинку. Nostalgie...
все компилирующие слова ядра размещены в области памяти NRWW
core\dict_core.yms
This file lists all amforth words that will be ymstudid in that part of amforths dictionary stored in high
flash memory (also known as the boottooder area or NRWW flash)..
а наколенный конвертер - это AVR Studyo? могу приложить файл листинга из-под нее. надо?
0
0 / 0 / 0
Регистрация: 14.04.2013
Сообщений: 115
18.04.2013, 18:42 14
Цитата Сообщение от SWK
Вообще же его создатель, Чарльз Мур, разрабатывая этот язык для конкретной задачи - управления телескопом, хотел назвать назвать его FOURTH ("Четвертый"), по каким - то своим соображениям. Наверное, первые 3 попытки оказались неудачными...
не только крутил моторчиками, но и осуществлял сбор и предварительную обработку данных.
четвертый - потому, что Чак Мур считал его языком четвертого поколения, а те, которые были на тот момент, он считал
языками третьего поколения. с тех пор ничего не изменилось.
Цитата Сообщение от SWK
тоже все наизнанку
с какой стороны посмотреть
0
0 / 0 / 0
Регистрация: 14.04.2013
Сообщений: 115
18.04.2013, 18:49 15
Цитата Сообщение от SWK
Да мне без разницы.

...душа моя его не приемлет.

В общем, я свой выбор в этом вопросе сделал давно, еще четверть века назад. Лично мне - Форт не нужен.
пожалуйста, заведите новую тему с топиком "Форт-не нужен!" и пишите свои сообщения туда.
извините.
0
0 / 0 / 0
Регистрация: 14.04.2013
Сообщений: 115
18.04.2013, 18:52 16
Цитата Сообщение от Гарнист
что первые три попытки были бейском, сями и фортраном.
так и было - фортран, си, бейсик.
и тут обратный порядок следования аргументов ;)
на самом деле -
1 программирование в машинных кодах
2 программирование в символах ( мнемоники машинных команд - ассемблер )
3 языки высокого уровня
0
0 / 0 / 0
Регистрация: 14.02.2010
Сообщений: 798
18.04.2013, 19:20 17
А я всю жизнь думал, что Си придумал Ритчи
0
0 / 0 / 0
Регистрация: 06.12.2016
Сообщений: 1,864
18.04.2013, 19:23 18
Цитата Сообщение от SWK
А - тем более, когда вместо привычных уже в языках высокого уровня набора стандартных операторов для организации циклов, ветвлений, и обработки данных, имеешь некий набор слов, на базе которых наддо создавать новые слова, которые потом используются в тексте программы, или для создания опять новых слов, да еще и порядок выполнения необычный, а набор основных базовых операций языка - это конструкции типа "Положить на стек", "Взять верхний элемент стека", "обменять местами два верхних значения стека", и даже простая точка - не просто точка, а целый оператор, - тут у кого хочешь крыша поедет.
Да ну, фигня какая. Форт практически не вводит новых непривычных концепций, освоиться и привыкнуть к обратной польской записи - недолго. Ничего от него не поедет - простой язык. Правда, и пользы на сегодняшний день немного: язык не типизирован, а экономия размера кода (шитый код весьма компактен, да ещё двухстэковая архитектура позволяет изрядно упростить код) на сегод

Вот Хаскель какой - куда труднее в голове укладывается, несмотря на привычный порядок операций. Но его, наверное, на микроконтроллеры нет. А вот Лисп наверняка есть.
0
0 / 0 / 0
Регистрация: 24.08.2011
Сообщений: 523
18.04.2013, 22:38 19
Цитата Сообщение от sohbtixhuk
А я всю жизнь думал, что Си придумал Ритчи
Ну и Брайан его за руку держал в этот момент :) Так вроде не пишут, что придумал их Мур, а пронумеровал просто так, уже имеющиеся были первыми тремя.
0
0 / 0 / 0
Регистрация: 18.03.2010
Сообщений: 2,230
19.04.2013, 00:41 20
Цитата Сообщение от oomomstir
Форт практически не вводит новых непривычных концепций, освоиться и привыкнуть к обратной польской записи - недолго. Ничего от него не поедет - простой язык.
что-то типа переносимого ассемблера, со всеми вытекающими свойствами. для любителей задротства и старины. но к большому сожалению, до сих пор встречается даже в пром. автоматике на заводах. приятного в этом очень мало.
0
19.04.2013, 00:41
Закрытая тема Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru