Hello,

Several years ago (Nov 2012), I tried to get amforth running on an Arduine2560. 
After a LOT of pain I succeded. I wrote the following to the board, and it is 
probably somewhere in the archives. Anyway……I do not know if the issues that 
you are experiencing are the same, but it sure sounds familiar…..



here goes:
----------------------------------------------------------------------------------------
I've been trying to get amforth running on an ARDUINO MEGA 2560. I've been 
using Atmel
Studio 6, and a avr dragon board to do the programming, AND i have been using 
the atmel
provided device programming tool (not avrdude). I have managed to make it all 
work,
though.

Its a pretty ugly hack. I have been studying amforth, and I *think* that I sorta
understand how it works.

Here in a nut shell is what I ended up doing. If you compile the code and try 
to burn it
into the arduino board, it simply will not work. The Atmel software loads the 
lower code
where it belongs, but then it loads the high code waaaaayy up at $3E000, which 
is exactly
what the code tells it to do. I am not conversant enough with the amforth code 
to know how
to make it work up there, and try as I might, I could not find any reference to 
anybody
who had succeeded in doing so. What I ended up doing was this......

I manually orged the high code to $3800. This will work until you want to 
create a new
word, or write to flash, at which point the code locks up because it cannot 
write to that
section of flash from there. In the core word !i-nrww I put a jump to 
DO_STOREI_atmega. I
put a label on the pop yh statement that follows that. I cut the entire 
DO_STOREI_atmega
section out. at the end of the last piece of high section code, (i think it was 
words), I
put an .org $1f000 and pasted the DO_STOREI_atmega code there. After the rcall 
dospm, I
put a jmp back to the pop yh statement that follows that.

Although that, in fact, would have worked, I didn't realize it because the 
process of
burning the code into the arduino involved burning the flash, then the eeprom.
Unfortunately immediately after the flash is burned, the arduino resets, cannot 
find its
brains in the eeprom, and encounters the relocated !i-nrww code which promptly 
erases a
goodly part of the first page of flash.

The solution I ended up with was to place a simple continuously looping 
assembly led
blinky routine immediately after the .org $1f000, with the !i-nrww code 
immediately after
that.

This works. As far as I can see, it is a normal amforth installation. I can 
create new
words, and so far things seem to work.




> On May 23, 2021, at 7:02 PM, Michael Picco <mpi...@placerville.me> wrote:
> 
> Thank you for that.
> Reading up on them yields:
> not found ... the position in the input line indicates the system choked on 
> the word 'words'.
> 
> words is part of the flashed system.
> 
> This indicates (to me) that something got corrupted.  I can only wonder if 
> memory got overwritten somehow.  Is there a setting required prior to 
> flashing that I'm failing to set properly?
> 
> Thanks in advance!
> 
> On 5/22/2021 9:51 PM, George Herzog wrote:
>> There are AmForth error codes. Read up on them.
>> 
>> On Sun, May 23, 2021, 12:42 Michael Picco <mpi...@placerville.me> wrote:
>> 
>>> Hello!
>>> 
>>> I seem to have stumbled across an issue.
>>> 
>>> First code I wrote was to blink the LED onboard.  This worked just fine.
>>> Then I went to add 'marker'.  Entered it line-by-line ... got the 'Ok'
>>> after each line.  After adding the last line (semicolon), the board
>>> froze up.  Did a warm boot and then executed 'words' to see what was
>>> there.  It came back with ?? -13 5.
>>> 
>>> What came to mind is perhaps not enough memory is allocated prior to
>>> flashing and I'm overwriting something I shouldn't.
>>> 
>>> Any ideas?
>>> 
>>> Kind regards,
>>> 
>>> Michael
>>> 
>>> On 5/21/2021 1:28 AM, tristan wrote:
>>>> Hi Michael,
>>>> 
>>>> Apologies. My memory is failing me.
>>>> 
>>>> The LED is on D13 for both UNO and MEGA, but D13 is mapped to PB5
>>>> (PORTB bit 5) on the UNO and PB7 (PORTB bit 7) on the MEGA.
>>>> 
>>>> Best wishes,
>>>> Tristan
>>>> 
>>>> 
>>>> On 2021-05-21 08:54, tristan wrote:
>>>>> Hi Michael,
>>>>> 
>>>>>> I do not see the word 'marker' defined. Should it have been part of
>>>>>> the basic system, or do I need to pull it from somewhere?
>>>>> It is not part of the basic system, it is defined in this file.
>>>>> 
>>>>> avr8/lib/forth2012/core-ext/marker.frt
>>>>> 
>>>>> Using marker is efficient/good practice/etc. but it is not a necessary
>>>>> requirement to do below.
>>>>> 
>>>>>> Then I'd like to see about doing something real simple, like turning
>>>>>> an LED on/off.  It's sort of a hardware person's approach to 'Hello
>>>>>> World!'  :)
>>>>> http://amforth.sourceforge.net/TG/recipes/Arduino-HelloWorld.html
>>>>> 
>>>>> IIRC the MEGA and UNO have the built-in led on the same pin (port bit).
>>>>> 
>>>>> The definitions for the chip can be found in this file
>>>>> 
>>>>> avr8/devices/atmega2560/atmega2560.frt
>>>>> 
>>>>> These, or extracts from, will need to be loaded into the basic system.
>>>>> So longer term, being able to load forth definition non-interactively
>>>>> from a file is very useful. There are programs in the tools directory
>>>>> - amforth-shell.py being the one I use.
>>>>> 
>>>>> 
>>>>> Best wishes,
>>>>> Tristan
>>>>> 
>>>>> 
>>>>> 
>>>>> On 2021-05-21 05:25, Michael Picco wrote:
>>>>>> Hello,
>>>>>> 
>>>>>> As mentioned earlier, it's now working.
>>>>>> I do not see the word 'marker' defined.  Should it have been part of
>>>>>> the basic system, or do I need to pull it from somewhere?
>>>>>> Then I'd like to see about doing something real simple, like turning
>>>>>> an LED on/off.  It's sort of a hardware person's approach to 'Hello
>>>>>> World!'  :)
>>>>>> 
>>>>>> Kind regards,
>>>>>> 
>>>>>> Michael
>>>>>> K6MLE
>>>>>> 
>>>>>> 
>>>>>> On 5/20/2021 12:41 PM, Michael Picco wrote:
>>>>>>> I should add the following changes to Craig Lindley's write-up:
>>>>>>> 
>>>>>>> Step 3:
>>>>>>> Under Win10, the correct file location for avrasm2.exe will be:
>>>>>>> c:\Program
>>>>>>> Files(86)\Atmel\Studio\7.0\toolchain\avr8\avrassembler\avrasm2.exe
>>>>>>> 
>>>>>>> Also needed in the work directory isatmega256.asm and m2560def.inc
>>>>>>> 
>>>>>>> The image of the directory structure didn't post to the list, so
>>>>>>> I'm showing it below (my work directory is called
>>>>>>> "amforth-ATmega2560-6.9":
>>>>>>> 
>>>>>>> -- appl
>>>>>>> -- arm
>>>>>>> -- avr8
>>>>>>> -- common
>>>>>>> -- doc
>>>>>>> -- examples
>>>>>>> -- msp430
>>>>>>> -- risc-v
>>>>>>> -- shared
>>>>>>> -- tests
>>>>>>> -- tools
>>>>>>> -- words
>>>>>>> atmega256.asm
>>>>>>> avrasm2.exe
>>>>>>> device.asm (for the 2560)
>>>>>>> device.inc (for the 2560)
>>>>>>> dict_appl.inc
>>>>>>> dict_appl_core.inc
>>>>>>> LICENSE.txt
>>>>>>> m2560def.inc
>>>>>>> make.bat
>>>>>>> readme.txt
>>>>>>> uno.asm
>>>>>>> 
>>>>>>> Hope this helps!
>>>>>>> 
>>>>>>> Kind regards,
>>>>>>> 
>>>>>>> Michael
>>>>>>> K6MLE
>>>>>>> 
>>>>>>> 
>>>>>>> On 5/20/2021 11:56 AM, Michael Picco wrote:
>>>>>>>> Hello All!
>>>>>>>> 
>>>>>>>> I have finally had success!
>>>>>>>> It turns out that the .eep and .hex files I was flashing into the
>>>>>>>> 2560 were corrupted!
>>>>>>>> I followed Craig Lindley's write-up with modifications for the 2560.
>>>>>>>> Changed the make.bat file to read: avrasm2.exe -fI -o
>>>>>>>> atmega2560.hex -e atmega2560.eep -l atmega2560.lst -I
>>>>>>>> g:\amforth-atmega2560\common -I g:\amforth-atmega2560\avr8 -I
>>>>>>>> g:\amforth-atmega2560\avr8\drivers -I include -v0 atmega256.asm
>>>>>>>> 
>>>>>>>> This is the resulting file structure prior to executing make.bat:
>>>>>>>> 
>>>>>>>> The fuse setting in Studio 7 were set as follows:
>>>>>>>> E: 0xFF, H: 0xDC, L:0xFF
>>>>>>>> 
>>>>>>>> Programmed the fuses; set the new files up in Studio 7 for flash
>>>>>>>> and EEPROM; programmed the .hex and .eep files.
>>>>>>>> 
>>>>>>>> Have a nice prompt for "amforth 6.9 ATmega2560 Forthduino" !!!
>>>>>>>> 
>>>>>>>> I'm hoping this exercise might help others.
>>>>>>>> 
>>>>>>>> Kind regards,
>>>>>>>> 
>>>>>>>> Michael
>>>>>>>> K6MLE
>>>>>>>> 
>>>>>>>> On 5/18/2021 8:51 AM, tristan wrote:
>>>>>>>>> Hello Michael,
>>>>>>>>> 
>>>>>>>>> Getting AmForth up and running from archive hex files on a
>>>>>>>>> mega2560 is reasonably straightforward, however, I don't use
>>>>>>>>> Microchip Studio version 7 or win10 so I can't help with this
>>>>>>>>> tool set. I hope you able to translate the macos/linux to your
>>>>>>>>> tools - and if so a write-up would be very welcome!
>>>>>>>>> 
>>>>>>>>> As pointed out you need a programmer (such as usbtiny, usbasp,
>>>>>>>>> avrisp2 etc.) and a program to talk to the programmer (such as
>>>>>>>>> avrdude).
>>>>>>>>> 
>>>>>>>>> Both atmega2560.hex and atmega2560.eep.hex need to be written to
>>>>>>>>> the mega2560's flash/eeprom. Below are the command lines I use
>>>>>>>>> with avrdude
>>>>>>>>> 
>>>>>>>>> avrdude -p m2560 -c usbtiny -U flash:w:atmega2560.hex:i
>>>>>>>>> avrdude -p m2560 -c usbtiny -U eeprom:w:atmega2560.eep.hex:i
>>>>>>>>> 
>>>>>>>>> Flashing these file will overwrite any existing bootloader. It is
>>>>>>>>> worth considering whether you are able to reverse this should you
>>>>>>>>> wish to, before flashing the above files.
>>>>>>>>> 
>>>>>>>>> If your mega2560 is an Arduino style board, and the default fuses
>>>>>>>>> unchanged, then IIRC there is no need to reprogram the fuses.
>>>>>>>>> 
>>>>>>>>> Once the files have been flashed, you should be able to connect
>>>>>>>>> to the mega2560 over serial using 38400 8N1. I use minicom and
>>>>>>>>> amforth-shell.py You will need to identify the name of the serial
>>>>>>>>> device created by the USB to SERIAL chip on your board/setup to
>>>>>>>>> use any serial program.
>>>>>>>>> 
>>>>>>>>> Once connected you have the AmForth interpreter prompt and can
>>>>>>>>> interact, compile new words, and generally use the system.
>>>>>>>>> However, AmForth is modular and not all functionality is
>>>>>>>>> contained in the flashed hex files. For I2C and SPI new words
>>>>>>>>> need to be defined. These definitions are already available
>>>>>>>>> within the archive, but need to be loaded onto a "new" AmForth
>>>>>>>>> system. I find amforth-shell.py very helpful for automating this
>>>>>>>>> process.
>>>>>>>>> 
>>>>>>>>> The cookbook is a great place to see examples of how things can
>>>>>>>>> be done
>>>>>>>>> 
>>>>>>>>> http://amforth.sourceforge.net/TG/Cookbook.html
>>>>>>>>> 
>>>>>>>>> And for I2C, below is very helpful
>>>>>>>>> 
>>>>>>>>> http://amforth.sourceforge.net/TG/recipes/I2C-Generic.html
>>>>>>>>> 
>>>>>>>>> Let us know how you get on.
>>>>>>>>> 
>>>>>>>>> 
>>>>>>>>> Best wishes,
>>>>>>>>> Tristan
>>>>>>>>> 
>>>>>>>>> 
>>>>>>>>> 
>>>>>>>>> On 2021-05-18 14:31, BK Navarette wrote:
>>>>>>>>>> Be careful, the fuse settings particularly the boot size is
>>>>>>>>>> different
>>>>>>>>>> for flash forth vs amforth.
>>>>>>>>>> 
>>>>>>>>>> Brian
>>>>>>>>>> 
>>>>>>>>>> On 5/18/21 5:30 AM, PETREMANN Marc wrote:
>>>>>>>>>>> Hello,
>>>>>>>>>>> I have not used Amforth
>>>>>>>>>>> But the installation mechanisms are the same as for FlashForth:
>>>>>>>>>>> 
>>> https://arduino-forth.com/article/FORTH_FlashForth_installation_installerFlashForth
>>>>>>>>>>> once FORTH is installed, you must write the programs in FORTH
>>>>>>>>>>> language and
>>>>>>>>>>> have them compile by FORTH on the ARDUINO card.
>>>>>>>>>>> FORTH is an interpreter and a compiler. We communicate with
>>>>>>>>>>> FORTH via
>>>>>>>>>>> terminal software:
>>>>>>>>>>> 
>>> https://arduino-forth.com/article/FORTH_FlashForth_installation_teraTerm
>>>>>>>>>>> Unless I'm mistaken, you need an MKII programmer, because you
>>>>>>>>>>> can only
>>>>>>>>>>> inject a .HEX file through this device. This operation
>>>>>>>>>>> overwrites the
>>>>>>>>>>> original bootloader.
>>>>>>>>>>> BR
>>>>>>>>>>> 
>>>>>>>>>>> Le mar. 18 mai 2021 à 06:08, Michael Picco
>>>>>>>>>>> <mpi...@placerville.me> a écrit :
>>>>>>>>>>> 
>>>>>>>>>>>> Hello,
>>>>>>>>>>>> 
>>>>>>>>>>>> I am attempting to use the mega2560 as a nicely featured
>>>>>>>>>>>> development
>>>>>>>>>>>> platform for AmForth-6.9.  The machine I'm using is a Win10
>>>>>>>>>>>> box, with
>>>>>>>>>>>> Microchip Studio version 7 installed.
>>>>>>>>>>>> 
>>>>>>>>>>>> In the zip file, under appl/atmega2561, I notice
>>>>>>>>>>>> atmega256.eep.hex and
>>>>>>>>>>>> atmega256.hex.  The eep.hex file doesn't seem to get
>>>>>>>>>>>> recognized by
>>>>>>>>>>>> Studio 7.  Do I need to rename it to just a ".eep" file?
>>>>>>>>>>>> 
>>>>>>>>>>>> Can I start building the platform by flashing these files into
>>>>>>>>>>>> the
>>>>>>>>>>>> board?  If so, what is the process to add functionality (I2C,
>>>>>>>>>>>> SPI,
>>>>>>>>>>>> etc.)?  As a total newbie!
>>>>>>>>>>>> 
>>>>>>>>>>>> If it's necessary to recompile and create new hex files, the
>>>>>>>>>>>> process is
>>>>>>>>>>>> unclear.  Is it spelled out somewhere such that a beginner can
>>>>>>>>>>>> follow
>>>>>>>>>>>> some basic steps to make the proper file(s)?
>>>>>>>>>>>> 
>>>>>>>>>>>> It is my understanding that both flash and EEPROM need to be
>>>>>>>>>>>> written,
>>>>>>>>>>>> along with the fuses, [E:0xFF, H: 0xDC, L:0xFF]. Do I have
>>>>>>>>>>>> these correct?
>>>>>>>>>>>> 
>>>>>>>>>>>> Once I get this figured out, I'd like to submit a write-up for
>>>>>>>>>>>> newbies
>>>>>>>>>>>> and perhaps draw more users into AmForth.  How might I get
>>>>>>>>>>>> this posted,
>>>>>>>>>>>> when completed?
>>>>>>>>>>>> 
>>>>>>>>>>>> Thank you in advance!
>>>>>>>>>>>> 
>>>>>>>>>>>> Kind regards,
>>>>>>>>>>>> 
>>>>>>>>>>>> Michael
>>>>>>>>>>>> 
>>>>>>>>>>>> 
>>>>>>>>>>>> 
>>>>>>>>>>>> _______________________________________________
>>>>>>>>>>>> Amforth-devel mailing list for http://amforth.sf.net/
>>>>>>>>>>>> Amforth-devel@lists.sourceforge.net
>>>>>>>>>>>> https://lists.sourceforge.net/lists/listinfo/amforth-devel
>>>>>>>>>>>> 
>>>>>>>>>>> _______________________________________________
>>>>>>>>>>> Amforth-devel mailing list for http://amforth.sf.net/
>>>>>>>>>>> Amforth-devel@lists.sourceforge.net
>>>>>>>>>>> https://lists.sourceforge.net/lists/listinfo/amforth-devel
>>>>>>>>>> 
>>>>>>>>>> _______________________________________________
>>>>>>>>>> Amforth-devel mailing list for http://amforth.sf.net/
>>>>>>>>>> Amforth-devel@lists.sourceforge.net
>>>>>>>>>> https://lists.sourceforge.net/lists/listinfo/amforth-devel
>>>>>>>>> 
>>>>>>>>> _______________________________________________
>>>>>>>>> Amforth-devel mailing list for http://amforth.sf.net/
>>>>>>>>> Amforth-devel@lists.sourceforge.net
>>>>>>>>> https://lists.sourceforge.net/lists/listinfo/amforth-devel
>>>>>>>> 
>>>>>>>> 
>>>>>>>> _______________________________________________
>>>>>>>> Amforth-devel mailing list for http://amforth.sf.net/
>>>>>>>> Amforth-devel@lists.sourceforge.net
>>>>>>>> https://lists.sourceforge.net/lists/listinfo/amforth-devel
>>>>>>> 
>>>>>>> 
>>>>>>> 
>>>>>>> _______________________________________________
>>>>>>> Amforth-devel mailing list for http://amforth.sf.net/
>>>>>>> Amforth-devel@lists.sourceforge.net
>>>>>>> https://lists.sourceforge.net/lists/listinfo/amforth-devel
>>>>>> 
>>>>>> 
>>>>>> 
>>>>>> _______________________________________________
>>>>>> Amforth-devel mailing list for http://amforth.sf.net/
>>>>>> Amforth-devel@lists.sourceforge.net
>>>>>> https://lists.sourceforge.net/lists/listinfo/amforth-devel
>>>>> 
>>>>> _______________________________________________
>>>>> Amforth-devel mailing list for http://amforth.sf.net/
>>>>> Amforth-devel@lists.sourceforge.net
>>>>> https://lists.sourceforge.net/lists/listinfo/amforth-devel
>>>> 
>>>> _______________________________________________
>>>> Amforth-devel mailing list for http://amforth.sf.net/
>>>> Amforth-devel@lists.sourceforge.net
>>>> https://lists.sourceforge.net/lists/listinfo/amforth-devel
>>> 
>>> 
>>> 
>>> _______________________________________________
>>> Amforth-devel mailing list for http://amforth.sf.net/
>>> Amforth-devel@lists.sourceforge.net
>>> https://lists.sourceforge.net/lists/listinfo/amforth-devel
>>> 
>> _______________________________________________
>> Amforth-devel mailing list for http://amforth.sf.net/
>> Amforth-devel@lists.sourceforge.net
>> https://lists.sourceforge.net/lists/listinfo/amforth-devel
> 
> 
> 
> 
> _______________________________________________
> Amforth-devel mailing list for http://amforth.sf.net/
> Amforth-devel@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/amforth-devel



_______________________________________________
Amforth-devel mailing list for http://amforth.sf.net/
Amforth-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/amforth-devel

Reply via email to