0 / 0 / 0
Регистрация: 14.04.2013
Сообщений: 115
|
|
1 | |
amForth18.04.2013, 10:16. Показов 216972. Ответов 333
Метки нет (Все метки)
Код
> 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 >
0
|
0 / 0 / 0
Регистрация: 01.09.2012
Сообщений: 125
|
|
18.04.2013, 11:38 | 2 |
йопт. Что это и зачем оно?..
0
|
SWK
|
|
18.04.2013, 12:08 | 3 |
Сообщение от modmozy
Великом и ужасном. Выворачивающим мозги наизнанку. Горячо любимом теми, у кого они вывернуты от рождения (минус на минус дает плюс !). |
1 / 1 / 0
Регистрация: 11.01.2013
Сообщений: 5,479
|
|
18.04.2013, 12:54 | 4 |
Сообщение от SWK
Великом и ужасном. Выворачивающим мозги наизнанку. Горячо любимом теми, у кого они вывернуты от рождения (минус на минус дает плюс !).Ну, в незаспойленном фрагменте кода - не программа, а вывод команды "words", которая перечисляет все ключевые слова языка :-) Чтобы продемонстрировать мощь (или немощь) данной реализации Форта. Этот довольно мощный. Но автор темы не сказал, как этим счастьем пользоваться: интерфейсы общения с прошитым AVR какие? Например, три кнопки на таких-то пинах плюс LCD_1602 на таких-то пинах? BTW, приложенная "жирная прошивка" сгенерирована как-то криво: половину кода в середине HEX занимает массив из байтов 0xFF.
0
|
0 / 0 / 0
Регистрация: 14.04.2013
Сообщений: 115
|
|
18.04.2013, 16:15 | 5 |
Сообщение от OtyxPM
посмотреть примеры можно тут . нормально сгенерировано. интересующиеся пусть изучают матчасть marker ы обозначены так =слово= ЗЫ привет MrYurom, эта апять я ;)
0
|
1 / 1 / 0
Регистрация: 25.01.2012
Сообщений: 492
|
|
18.04.2013, 16:28 | 6 |
Сообщение от SWK
И не FORT, а FORTH
0
|
1 / 1 / 0
Регистрация: 11.01.2013
Сообщений: 5,479
|
|
18.04.2013, 16:54 | 7 |
Сообщение от hixir
Форт этот посмотрю, в детстве "мозги были вывернуты" на него, даже переписывал под свою машинку. Nostalgie...
0
|
SWK
|
|
18.04.2013, 17:04 | 8 |
Сообщение от MrYurom
Разве что на строчки поделится. Да и вообще - весь Форт (его интерпретатор) обычно сам написан на Форте... Вообще же его создатель, Чарльз Мур, разрабатывая этот язык для конкретной задачи - управления телескопом, хотел назвать его 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
0
|
SWK
|
|
18.04.2013, 17:38 | 10 |
Сообщение от OtyxPM
Компы и микроконтроллеры - намного сложнее. А - тем более, когда вместо привычных уже в языках высокого уровня набора стандартных операторов для организации циклов, ветвлений, и обработки данных, имеешь некий набор слов, на базе которых надо создавать новые слова, которые потом используются в тексте программы, или для создания опять новых слов, да еще и порядок выполнения необычный, а набор основных базовых операций языка - это конструкции типа "Положить на стек", "Взять верхний элемент стека", "обменять местами два верхних значения стека", и даже простая точка - не просто точка, а целый оператор, - тут у кого хочешь крыша поедет. Тем более, давно уже есть куча других, более удобных и ориентированных на разные применения, языков программирования, с удобными средами написания программ, кучей стандартных библиотек, а большинство элементов языков - стандартизованно, и не надо каждый раз изобретать новый словарь... В общем, я свой выбор в этом вопросе сделал давно, еще четверть века назад. Лично мне - Форт не нужен. |
1 / 1 / 0
Регистрация: 25.01.2012
Сообщений: 492
|
|
18.04.2013, 17:49 | 11 |
Сообщение от SWK
Первые три попытки назывались бейсик, фортран и паскаль :)
0
|
0 / 0 / 0
Регистрация: 22.01.2010
Сообщений: 3,496
|
|
18.04.2013, 17:56 | 12 |
Сообщение от SWK
Сообщение от MrYurom
Хотя, мне кажется (в гугль лезть лениво), что первые три попытки были бейском, сями и фортраном.
0
|
0 / 0 / 0
Регистрация: 14.04.2013
Сообщений: 115
|
|
18.04.2013, 18:34 | 13 |
Сообщение от OtyxPM
Форт этот посмотрю, в детстве "мозги были вывернуты" на него, даже переписывал под свою машинку. Nostalgie... все компилирующие слова ядра размещены в области памяти NRWW
0
|
0 / 0 / 0
Регистрация: 14.04.2013
Сообщений: 115
|
|
18.04.2013, 18:42 | 14 |
Сообщение от SWK
четвертый - потому, что Чак Мур считал его языком четвертого поколения, а те, которые были на тот момент, он считал языками третьего поколения. с тех пор ничего не изменилось.
Сообщение от 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 | |