projects:430eforth:start
Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
Beide Seiten der vorigen RevisionVorhergehende ÜberarbeitungNächste Überarbeitung | Vorhergehende Überarbeitung | ||
projects:430eforth:start [2020-05-17 17:29] – [The original command list of this Forth] juergenuk | projects:430eforth:start [2022-01-14 04:49] (aktuell) – [TI Launchpad] mka | ||
---|---|---|---|
Zeile 1: | Zeile 1: | ||
- | ====== eForth | + | ====== eForth |
- | There are many eForth variants that Ting did over the years. In the past the TI MSP430 was a good target, as the TI Launchpad was a low-cost option with included programmer. | + | There are many eForth variants that Ting developed |
+ | In the past the TI MSP430 was a good target, as the TI Launchpad was a low-cost option with included programmer. | ||
Zeile 10: | Zeile 11: | ||
{{ : | {{ : | ||
- | Here the documentation of a complete Forth on one page - ok it is a large one, but there is a link to print it as normal A4 pages | + | Here you can find the documentation of a complete Forth on one page |
+ | - ok it is a large one, e.g.A1 size, but there is a link to print it as normal A4 pages | ||
https:// | https:// | ||
{{ : | {{ : | ||
- | [[projects: | + | [[projects: |
- | [[projects: | + | |
+ | [[projects: | ||
| | ||
Hoffentlich bald mehr dazu((Oktober 2016)). | Hoffentlich bald mehr dazu((Oktober 2016)). | ||
Zeile 29: | Zeile 32: | ||
{{ : | {{ : | ||
{{ : | {{ : | ||
+ | |||
+ | Und hier ist Ting's Quelle: {{ : | ||
Zeile 40: | Zeile 45: | ||
**( This part is in English, as the link to this location is shared )** | **( This part is in English, as the link to this location is shared )** | ||
- | How can you simply carry out a few Forth instructions? | + | ===== How can you simply carry out a few Forth instructions? |
- | And understand how Forth works?\\ | + | |
- | OK, the execution of commands online without additional hardware has already been shown elsewhere in this Wiki, in the **A Start With Forth** documentation, | + | And understand how Forth works? |
- | : https:// | + | |
- | and in English\\ | + | OK, the execution of commands online without additional hardware has already been shown elsewhere in this Wiki, in the **A Start With Forth** documentation, |
- | https:// | + | in [[projects: |
+ | [[en: | ||
Zeile 56: | Zeile 62: | ||
But we recently discovered this special eForth version from Ting, which unfortunately had been hidden very well until now. | But we recently discovered this special eForth version from Ting, which unfortunately had been hidden very well until now. | ||
- | Only this Arduino-specific sketch has to be downloaded using the link above and unpacked again. Upload it via the Aruino IDE and you're ready to program in Forth. | + | Only this Arduino-specific sketch has to be downloaded using the link above and unpacked again. |
+ | Upload it via the Aruino IDE and you're ready to program in Forth. | ||
+ | OK you have to get the Terminal software ready as well, but this is easy - all in the next PDF. | ||
+ | |||
+ | We want to make it easy for anybody to try it out. | ||
+ | |||
+ | ===== The "39 Steps" to see HELLO WORLD on your display ===== | ||
+ | |||
+ | |||
+ | So, Juergen sat down and recorded all of the steps necessery, | ||
+ | from switching on the UNO/nano to displaying the usual | ||
+ | **HELLO WORLD.** It turns out to take | ||
+ | {{how_to_get_started_and_control_some_leds_in_forth_v4_a4.pdf|39 Steps}} | ||
+ | |||
+ | And you will end by programming the '' | ||
+ | {{publication2.jpg}} | ||
+ | |||
+ | [[https:// | ||
We soldered the headers on a nano pointing downwards, | We soldered the headers on a nano pointing downwards, | ||
- | and the Arduino nano then fits wonderfully | + | and the Arduino nano then fits wonderfully |
{{arduino_nano_on_breadboard.jpg? | {{arduino_nano_on_breadboard.jpg? | ||
- | For example here a link to a low cost ATmega328P Nano V3 Development Board as example (Geekcreit) if you ned one: | ||
- | **https:// | ||
- | ** | ||
The eForth is loaded as {{projects: | The eForth is loaded as {{projects: | ||
Zeile 78: | Zeile 98: | ||
Download and install a terminal program, if you do not have one already, | Download and install a terminal program, if you do not have one already, | ||
- | e.g. Teraterm or termite, | + | e.g. [[https:// |
and then you are ready to go. | and then you are ready to go. | ||
Set to 115k baud rate. | Set to 115k baud rate. | ||
- | ** https:// | ||
Enter (**CR)** | Enter (**CR)** | ||
Zeile 95: | Zeile 114: | ||
so let’s sort them a bit - {{forth_words_v2_-_simper_ones_at_the_beginning.pdf|sort by function for the easy ones}} - and the more difficult ones at the end. | so let’s sort them a bit - {{forth_words_v2_-_simper_ones_at_the_beginning.pdf|sort by function for the easy ones}} - and the more difficult ones at the end. | ||
+ | **A quick Word Overview is helpful - can be used as a Mug Wraparound - or folded as smaller Version** | ||
And you are ready to go and test some commands, e.g. see what is happening on the stack.\\ | And you are ready to go and test some commands, e.g. see what is happening on the stack.\\ | ||
{{some_examples_part_1.pdf|Here are some examples.}} | {{some_examples_part_1.pdf|Here are some examples.}} | ||
+ | | ||
+ | [[https:// | ||
+ | |||
+ | ===== Some small Examples ===== | ||
+ | |||
+ | The terminal display shows: | ||
+ | 0 0 0 0 ok> | ||
+ | These four zeros show the top 4 values of the Data stack.\\ | ||
+ | |||
+ | With((< | ||
+ | 1 <CR> | ||
+ | 2 <CR> | ||
+ | 3 <CR> | ||
+ | 4 <CR> | ||
+ | it changes to: | ||
+ | 1 2 3 4 ok> | ||
+ | |||
+ | |||
+ | Now try | ||
+ | . <CR> | ||
+ | . <CR> | ||
+ | . <CR> | ||
+ | . <CR> | ||
+ | and the 4 values are displayed and disappear from the stack which is back to: | ||
+ | 0 0 0 0 ok> | ||
+ | |||
+ | |||
+ | ==== The usual HELLO WORLD we can achieve like this: ==== | ||
+ | |||
+ | |||
+ | Define a new Forth Word: | ||
+ | : | ||
+ | '':'' | ||
+ | '' | ||
+ | '' | ||
+ | And ''"'' | ||
+ | Finaly '';'' | ||
+ | |||
+ | And try it out: | ||
+ | |||
+ | hello1 < | ||
+ | |||
+ | and format the output a bit. A few additional CRs will make it better readable: | ||
+ | : HELLO2 | ||
+ | | ||
+ | hello2 <CR> | ||
+ | | ||
+ | HELLO WORLD | ||
+ | |||
+ | |||
+ | |||
+ | ==== And now let us control one Bit in the IO. Here the on-board LED ==== | ||
+ | |||
+ | 20 24 POKE <CR> | ||
+ | \ Will set bit 5 of the port to OUTPUT in the Data Direction Register | ||
+ | \ 20 is the data bit to be stored, and 24 is the DDR Register address in hex | ||
+ | | ||
+ | 20 25 POKE (CR) | ||
+ | \ Will set Bit 5 in the OUTPUT Register to HIGH - LED is on 0 0 1 0 0 0 0 0 | ||
+ | \ 20 is the OUTPUT bit to be stored and 25 in hex is the Output Port Register | ||
+ | | ||
+ | 00 25 POKE (CR) | ||
+ | \ Will set Bit 5 in the OUTPUT Register to LOW - LED is off | ||
+ | \ here 00 is stored in the Output Register | ||
+ | |||
+ | I used this [[http:// | ||
+ | |ATmega328P Datasheet]]. | ||
+ | And for now only page 280 is important, which shows the addresses for the ports, | ||
+ | especially here now those two Port-B-addresses: | ||
+ | *24 HEX is the DDR (DDR = Data Direction Register) to set bits to OUTPUT and | ||
+ | *25 HEX for the OUTPUT Register to set bits to 1 or 0 HIGH or LOW. | ||
+ | |||
+ | **And the relevant file of these examples** | ||
+ | |||
+ | Try out other bits, or other ports, but then you have to add LEDs to the relevant output. | ||
+ | |||
+ | **More to come** | ||
- | **More Examples to be added soon** | ||
===== An important difference between the Arduino IDE and Forth ===== | ===== An important difference between the Arduino IDE and Forth ===== | ||
With Forth we can poke around in all internals using the Forth commands, read and write IOs - even mess up the CPU – so please be careful as you might have to restart the Forth and loose the work done before. | With Forth we can poke around in all internals using the Forth commands, read and write IOs - even mess up the CPU – so please be careful as you might have to restart the Forth and loose the work done before. | ||
And this is done using only 2 commands, added especially to this eForth version: | And this is done using only 2 commands, added especially to this eForth version: | ||
- | **PEEK** | + | |
- | **POKE** | + | *POKE - Overwrite contents at memory location xx with new data yy. |
And if you have now licked blood and have the appropriate know-how and tools, you can flash in the extended version of this eForth - but then the bootloader will be overwritten. | And if you have now licked blood and have the appropriate know-how and tools, you can flash in the extended version of this eForth - but then the bootloader will be overwritten. | ||
Zeile 116: | Zeile 212: | ||
http:// | http:// | ||
- | and the full version where new words are stored permanently in flash memory | + | and the full version where new Words are stored permanently in flash memory |
+ | but then you have to find a way or sombody to flash the hex file - overwriting the Bootloader permanently. | ||
http:// | http:// | ||
+ | |||
+ | or as well as book at | ||
+ | [[https:// | ||
\\ | \\ | ||
\\ | \\ | ||
- | \\ | + | |
- | //This page is work in progress! Last change and more to come as time allows: | + | //This page is work in progress! Last change and more to come as time allows: |
projects/430eforth/start.1589729371.txt.gz · Zuletzt geändert: 2020-05-17 17:29 von juergenuk