Форт и его ключевые слова

Всё, что касается программирования на старых языках или для старых систем

Форт и его ключевые слова

Сообщение KPG » 01 авг 2026, 09:59

Ключевые слова amForth
> amforth 5.1 ATmega32A 16000 kHz
reset 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_RAM_LAST RTC_RAM
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-loadblock twi.ee-save
block #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.start twi.wait 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 2constant =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! wait_high wait_low is_high? is_low? pulse low high
portpin: bitmask: SPM_RDYAddr TWIAddr ANA_COMPAddr EE_RDYAddr ADCAddr USART__TXC
Addr USART__UDREAddr USART__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_BLBSET 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_ADEN 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 multitaskpause 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 definitions previous set-current nfa
>lfa compare get-order get-current !e[] @e[] environment end-code code abort abo
rt" [char] immediate recurse user constant 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 and 2* 2/ invert um* um/
mod m* + - log2 d< d> 0> u> u< true 0 0< > < 0= = <> r@ >r r> nip -rot rot drop
over swap ?dup dup !u @u c@ c! ! @ (value) execute exit .s ." s" ms 1ms dinvert
d- d+ d2* init-user ee>ram ee-user source-tib refill-tib tib 2swap d2/ cmove dne
gate dabs d>s j * icompare search-wordlist defer@ defer! to value unused noop ve
r ?stack rec-notfound rec-find rec-intnum interpret depth rp0 sp sp0 warm cold r
stf pause quit find-name parse-name /string source cscan parse >number number ch
ar refill accept cskip throw catch handler ' type spaces space cr icount itype s
, u>= u<= digit? ud/mod u0.r ud.r ud. u. . d. .r d.r sign #> #s # <# hold hld to
lower toupper within max min abs mod / negate u/mod */ /mod */mod turnkey bl hex
decimal bin ['] , compile ( \ 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.reset +usart ubrr tx?-poll tx-poll rx?-isr rx-isr ok
> .res
amforth 5.1 ATmega32A running at 16000 kHz
free FLASH cells 9591
free RAM bytes 1727
used EEPROM bytes 94
used data stack cells 0
used return stack cells 11
free return stack cells 29
ok
>

тема про amForth на easyelectronics
Во FlashForth они несколько иные, а уж в Mecrisp, Win32Forth, SP4 Forth, VFX Forth, SwiftForth, iForth, kForth, pForth, gForth ... их не счесть - посмотрите сами или спросите что не понятно.

P.S. Форт-система - тема на Roboforum, где пользователь amForth - chu тоже отметился :)
Последний раз редактировалось KPG 01 авг 2026, 10:20, всего редактировалось 7 раз(а).
KPG
Мастер Даунгрейда
 
Сообщения: 515
Зарегистрирован: 21 окт 2015, 20:53

Вернуться в Программирование

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 3