msp430.fth
parent
5991370657
commit
3d7a45e5cd
@ -0,0 +1,110 @@
|
||||
: r! 3 sys ;
|
||||
: r@ 4 sys ;
|
||||
|
||||
: rset dup r@ rot | swap r! ;
|
||||
: rclr dup r@ rot invert & swap r! ;
|
||||
: rtgl dup r@ rot ^ swap r! ;
|
||||
|
||||
16 base !
|
||||
|
||||
: ie1 0000 ;
|
||||
: ifg1 0002 ;
|
||||
: ie2 0001 ;
|
||||
: ifg2 0003 ;
|
||||
: adc10dtc0 0048 ;
|
||||
: adc10dtc1 0049 ;
|
||||
: adc10ae0 004a ;
|
||||
: adc10ctl0 01b0 ;
|
||||
: adc10ctl1 01b2 ;
|
||||
: adc10mem 01b4 ;
|
||||
: adc10sa 01bc ;
|
||||
: dcoctl 0056 ;
|
||||
: bcsctl1 0057 ;
|
||||
: bcsctl2 0058 ;
|
||||
: bcsctl3 0053 ;
|
||||
: cactl1 0059 ;
|
||||
: cactl2 005a ;
|
||||
: capd 005b ;
|
||||
: fctl1 0128 ;
|
||||
: fctl2 012a ;
|
||||
: fctl3 012c ;
|
||||
: p1in 0020 ;
|
||||
: p1out 0021 ;
|
||||
: p1dir 0022 ;
|
||||
: p1ifg 0023 ;
|
||||
: p1ies 0024 ;
|
||||
: p1ie 0025 ;
|
||||
: p1sel 0026 ;
|
||||
: p1sel2 0041 ;
|
||||
: p1ren 0027 ;
|
||||
: p2in 0028 ;
|
||||
: p2out 0029 ;
|
||||
: p2dir 002a ;
|
||||
: p2ifg 002b ;
|
||||
: p2ies 002c ;
|
||||
: p2ie 002d ;
|
||||
: p2sel 002e ;
|
||||
: p2sel2 0042 ;
|
||||
: p2ren 002f ;
|
||||
: p3in 0018 ;
|
||||
: p3out 0019 ;
|
||||
: p3dir 001a ;
|
||||
: p3sel 001b ;
|
||||
: p3sel2 0043 ;
|
||||
: p3ren 0010 ;
|
||||
: ta0iv 012e ;
|
||||
: ta0ctl 0160 ;
|
||||
: ta0cctl0 0162 ;
|
||||
: ta0cctl1 0164 ;
|
||||
: ta0cctl2 0166 ;
|
||||
: ta0r 0170 ;
|
||||
: ta0ccr0 0172 ;
|
||||
: ta0ccr1 0174 ;
|
||||
: ta0ccr2 0176 ;
|
||||
: ta1iv 011e ;
|
||||
: ta1ctl 0180 ;
|
||||
: ta1cctl0 0182 ;
|
||||
: ta1cctl1 0184 ;
|
||||
: ta1cctl2 0186 ;
|
||||
: ta1r 0190 ;
|
||||
: ta1ccr0 0192 ;
|
||||
: ta1ccr1 0194 ;
|
||||
: ta1ccr2 0196 ;
|
||||
: uca0ctl0 0060 ;
|
||||
: uca0ctl1 0061 ;
|
||||
: uca0br0 0062 ;
|
||||
: uca0br1 0063 ;
|
||||
: uca0mctl 0064 ;
|
||||
: uca0stat 0065 ;
|
||||
: uca0rxbuf 0066 ;
|
||||
: uca0txbuf 0067 ;
|
||||
: uca0abctl 005d ;
|
||||
: uca0irtctl 005e ;
|
||||
: uca0irrctl 005f ;
|
||||
: ucb0ctl0 0068 ;
|
||||
: ucb0ctl1 0069 ;
|
||||
: ucb0br0 006a ;
|
||||
: ucb0br1 006b ;
|
||||
: ucb0i2cie 006c ;
|
||||
: ucb0stat 006d ;
|
||||
: ucb0rxbuf 006e ;
|
||||
: ucb0txbuf 006f ;
|
||||
: ucb0i2coa 0118 ;
|
||||
: ucb0i2csa 011a ;
|
||||
: wdtctl 0120 ;
|
||||
: caldco_16mhz 10f8 ;
|
||||
: calbc1_16mhz 10f9 ;
|
||||
: caldco_12mhz 10fa ;
|
||||
: calbc1_12mhz 10fb ;
|
||||
: caldco_8mhz 10fc ;
|
||||
: calbc1_8mhz 10fd ;
|
||||
: caldco_1mhz 10fe ;
|
||||
: calbc1_1mhz 10ff ;
|
||||
: tlv_checksum 10c0 ;
|
||||
: tlv_dco_30_tag 10f6 ;
|
||||
: tlv_dco_30_len 10f7 ;
|
||||
: tlv_adc10_1_tag 10da ;
|
||||
: tlv_adc10_1_len 10db ;
|
||||
|
||||
decimal
|
||||
|
@ -0,0 +1,20 @@
|
||||
# msp430 implementation
|
||||
|
||||
This is the MSP430 port of Alee Forth. It produces a binary that enters a REPL made available on the UART peripheral at 115200 baud. The specific target is MSP430G2553.
|
||||
|
||||
## Building
|
||||
|
||||
1. `make clean` (just in case)
|
||||
2. `make msp430-prep`: Builds `alee` for the host computer and uses it to create an `alee.dat` blob containing bytecode for `forth/core.fth` and `forth/msp430.fth`.
|
||||
3. `make msp430`: Produces `alee-msp430`, a standalone binary for the MSP430 with built-in core and msp430 word-sets.
|
||||
|
||||
The final binary is < 11 kB and provides 150 bytes for user dictionary in RAM (assuming 512 bytes of total RAM).
|
||||
|
||||
## msp430.fth
|
||||
|
||||
The msp430 word-set makes programming for the MSP430 easier:
|
||||
|
||||
* All register names are defined (P1OUT, ADC10MEM, etc.).
|
||||
* `r!` and `r@` to write and read device memory (i.e. registers).
|
||||
* `rset`, `rclr`, `rtgl` work like `r!` but set, clear, or toggle the given value/mask instead.
|
||||
|
Loading…
Reference in New Issue