You can subscribe to this list here.
| 2006 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
(2) |
Dec
(5) |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 2007 |
Jan
|
Feb
(6) |
Mar
(41) |
Apr
(23) |
May
(11) |
Jun
(2) |
Jul
|
Aug
|
Sep
(9) |
Oct
(2) |
Nov
(1) |
Dec
(1) |
| 2008 |
Jan
(6) |
Feb
(1) |
Mar
(23) |
Apr
(18) |
May
(21) |
Jun
(13) |
Jul
(34) |
Aug
(5) |
Sep
(1) |
Oct
(4) |
Nov
|
Dec
(4) |
| 2009 |
Jan
|
Feb
(5) |
Mar
(5) |
Apr
(10) |
May
(1) |
Jun
(11) |
Jul
(1) |
Aug
|
Sep
|
Oct
(2) |
Nov
(3) |
Dec
(13) |
| 2010 |
Jan
(10) |
Feb
(4) |
Mar
(28) |
Apr
(3) |
May
(38) |
Jun
(22) |
Jul
(92) |
Aug
(154) |
Sep
(218) |
Oct
(45) |
Nov
(20) |
Dec
(1) |
| 2011 |
Jan
(33) |
Feb
(15) |
Mar
(32) |
Apr
(33) |
May
(48) |
Jun
(35) |
Jul
(7) |
Aug
|
Sep
(11) |
Oct
(5) |
Nov
|
Dec
(7) |
| 2012 |
Jan
(56) |
Feb
(11) |
Mar
(6) |
Apr
|
May
(128) |
Jun
(59) |
Jul
(21) |
Aug
(16) |
Sep
(24) |
Oct
(39) |
Nov
(12) |
Dec
(12) |
| 2013 |
Jan
(14) |
Feb
(61) |
Mar
(97) |
Apr
(46) |
May
(13) |
Jun
(23) |
Jul
(12) |
Aug
(25) |
Sep
(9) |
Oct
(81) |
Nov
(73) |
Dec
(45) |
| 2014 |
Jan
(36) |
Feb
(57) |
Mar
(20) |
Apr
(41) |
May
(43) |
Jun
(11) |
Jul
(14) |
Aug
(32) |
Sep
(9) |
Oct
(27) |
Nov
(21) |
Dec
(6) |
| 2015 |
Jan
(14) |
Feb
(23) |
Mar
(1) |
Apr
(19) |
May
(40) |
Jun
(11) |
Jul
(1) |
Aug
(2) |
Sep
(14) |
Oct
(10) |
Nov
(9) |
Dec
(13) |
| 2016 |
Jan
(4) |
Feb
(3) |
Mar
(7) |
Apr
|
May
(4) |
Jun
(13) |
Jul
(8) |
Aug
(3) |
Sep
(4) |
Oct
(1) |
Nov
|
Dec
|
| 2017 |
Jan
(6) |
Feb
(1) |
Mar
(1) |
Apr
(7) |
May
(10) |
Jun
(5) |
Jul
(7) |
Aug
(9) |
Sep
|
Oct
(1) |
Nov
(5) |
Dec
|
| 2018 |
Jan
|
Feb
|
Mar
(5) |
Apr
|
May
|
Jun
(3) |
Jul
(6) |
Aug
|
Sep
(2) |
Oct
(54) |
Nov
(47) |
Dec
(53) |
| 2019 |
Jan
(23) |
Feb
(24) |
Mar
(19) |
Apr
(15) |
May
(5) |
Jun
(34) |
Jul
(9) |
Aug
(9) |
Sep
(3) |
Oct
(2) |
Nov
|
Dec
|
| 2020 |
Jan
|
Feb
|
Mar
(7) |
Apr
(7) |
May
(5) |
Jun
(15) |
Jul
(22) |
Aug
(28) |
Sep
(13) |
Oct
(9) |
Nov
(17) |
Dec
(13) |
| 2021 |
Jan
(5) |
Feb
(1) |
Mar
(1) |
Apr
(9) |
May
(21) |
Jun
(9) |
Jul
|
Aug
(6) |
Sep
(16) |
Oct
|
Nov
(1) |
Dec
(6) |
| 2022 |
Jan
|
Feb
|
Mar
|
Apr
(7) |
May
(6) |
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
| 2023 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
(11) |
Sep
(21) |
Oct
(5) |
Nov
(1) |
Dec
(1) |
| 2024 |
Jan
(1) |
Feb
(4) |
Mar
|
Apr
(7) |
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
(1) |
Nov
|
Dec
|
| 2025 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
(7) |
Sep
(9) |
Oct
|
Nov
(4) |
Dec
|
|
From: Matthias T. <mt...@we...> - 2010-08-09 18:16:29
|
Pito, > Hi, > quite often happens to me that amforth is lost (even reset does not > help) when running a code under development, so I have to reflash > the atmega and upload the whole stuff again. What is the typical > reason for that? My understanding is that unless I (or something) > reprogram(s) the flash or the eeprom, the amforth shall be rock > solid and must return to life when reset. > > Is that because when I loop by accident into flash area it might > happen it runs a directive which does the reflash of the flash? Is > there any mechanism available so we may disable such routines in > order to block accidentaly changing the code? amforth is not rock solid when it comes to code errors, unfortunatly. You can make it more solid when you redefine the store operations using an address checking wrapper, but that will cost runtime performance. And no: I know of no better way but not making errors. "Your" error with the wrong 1. in colon words may serve as an example for really hard work to find such bugs... Matthias |
|
From: Matthias T. <mt...@we...> - 2010-08-09 18:11:44
|
Leon, > Have the word definitions available at > http://amforth.sourceforge.net/words/ been updated to reflect this > change, or are they using the old definitions? They usually reflect the bleeding edge of development but not every subversion commit. Currently it shows the brand new implementation of variable based upon constant... > That makes sense to me, but I'm still interested in definition amforth uses: > > http://amforth.sourceforge.net/words/XT_VARIABLE.html > > Why "(CREATE) COMPILE COMPILE" instead of CREATE? What is (literal) > doing in front of the 2? You'd better read the sources, since the html versions are somewhat broken, the script generating the files tries to make forth code from the assembly sources, with mixed success however.. > Shouldn't sticking (literal) in the The sequence (literal) <number> is a 1:1 translation of a compiled number. Think of it as the number only. The (create) word is a factor from the defining words that makes only a vocabulary entry without an XT or data field. The XT is filled afterwardds by words like : (with the DO_COLON address) or variable/constant (with PFA_DOVARIABLE) etc. A RAM based dictionary would not need to do so, but a flash based one will honor the not necessairy flash re-write that is needed while overwriting the XT. Matthias |
|
From: Matt W. <wi...@gm...> - 2010-08-08 20:38:03
|
> Be careful however. The Jonesforth implementations of > many words are different from the amforth versions. So > do not expect to understand amforth from jonesforth > sources ;=) Of course, the devel and differences are in the details (in this case, most notabl, Harvard vs. Von Neuman). However, once you get a handle on ITC and "writing Forth in assembler", it's possible to dig into the amforth source and understand what's going on. I found Jones one of the gentlest introductions. Matt |
|
From: pito <pi...@vo...> - 2010-08-08 20:09:05
|
The simplest solutiom might be to translate all uppercase letters (A-Z) into lowercase when input or exercised or compiled. That's it. So everything will be lowercase internally. You may use uppercase or lowercase words and it will work. No decisions or flags needed. You then may use sources with Uppercase or lowercase words and it will work. The only "issue" will be the visual representation via WORDS - you will see all lowercase. The formula for the translation is as I wrote - or someting like that.. (:-))). Pito ----- PŮVODNÍ ZPRÁVA ----- Od: "Matthias Trute" <mt...@we...> Komu: "pito" <pi...@vo...> Předmět: Re: [Amforth-devel] amforth - how to make him case Datum: 8.8.2010 - 20:16:59 > Hi Pito, > > > the beauty of the forth implementations like > > amforth or FF on AVR or > > > PIC is that you do not need other suits of > > various supporting tools, > > > just an editor (e.g. teletype or Palm Treo..). > > The ucontroller shall > > > contain everything you need in order to operate > > it.. This is what > > > most younger fans may attract to. > > ACK > > > So a switch between case sensitivness and case > > insensitivness woud > > > be a great feature, as I wrote thre are tons of > > various source codes > > > available. > > And you are typing tons of source code with your > pre treo? Sorry, > that gives you no points. Tons of source code can > be pre-processed > esp. when typing by hand. > > > I am not an avr asm freak so I am not going to > > dig into your code. > > > Moreover you might know the code by heart. There > > must be a simple > > > point you handle single char from input stream - > > when the char c is: > > > > > ((c >= 65) and (c <= 90)) then c = c + 32 ; > > or something like that.. > > you name it: something like that, but not that > one. Technically the > compare words uses two characters at the same > time. I still think about > possible solutions. (maybe a flag for every word > to signal: compare me > case insensitivly?). And which code page(s)? 7bit > ASCII only probably... > > Matthias > > |
|
From: pito <pi...@vo...> - 2010-08-08 19:44:46
|
Hi, quite often happens to me that amforth is lost (even reset does not help) when running a code under development, so I have to reflash the atmega and upload the whole stuff again. What is the typical reason for that? My understanding is that unless I (or something) reprogram(s) the flash or the eeprom, the amforth shall be rock solid and must return to life when reset. Is that because when I loop by accident into flash area it might happen it runs a directive which does the reflash of the flash? Is there any mechanism available so we may disable such routines in order to block accidentaly changing the code? Thanks Pito. |
|
From: pito <pi...@vo...> - 2010-08-08 19:26:27
|
Hi, thanks to Matthias the anycrystal clock works! However, I can observe an interesting phenomenon I do not understand: 1. when I fresh flash atmega and upload the clock: \ count clock 1 second ticks from timer2 overflows: \ any crystal clock 2variable ticker 2variable seconds 262144. 2constant clkpi 1. 2constant d_one1 0. seconds 2! 1. ticker 2! decimal \ overflow2 interupt service routine \ increment tick : tick_isr ticker 2@ clkpi d- ticker 2! ticker 2@ clkpi d< if f_cpu ticker 2@ d+ ticker 2! seconds 2@ d_one1 d+ seconds 2! then ; hex \ enable ticks : +ticks 7 TCCR2 c! ( 111 = f_cpu clock/1024 ) 0 ASSR c! ( source: internal clock = f_cpu) ['] tick_isr TIMER2_OVFAddr int! ( register interupt ) TIMSK c@ 40 or TIMSK c! ( enable timer2 interupt ) ; \ disable ticks : -ticks TIMSK c@ [ 40 invert ff and ] literal and TIMSK c! ( clr Timer 2 ) ; decimal 2. then after first usage of +ticks the second increments by 10 - the clock tick is 10HZ, so the inerrupt runs 10x faster, or something like that !!??!! 3. when I unmark the clock routine and upload it again (no change in code, no flashing of atmega) the clock works fine - 1 second tick, increment by one per second. Any idea? Pito. |
|
From: Leon M. <leo...@gm...> - 2010-08-08 19:24:24
|
Thanks for the reply. As usual, this leads to more questions. > Prior to amforth version 4.0 > here points to the next available location in flash memory and > heap points to the next available location in RAM. > > Starting with version 4.0 > here points to the next RAM location and > dp points to the next flash location Have the word definitions available at http://amforth.sourceforge.net/words/ been updated to reflect this change, or are they using the old definitions? > In a flash based Forth as amforth the definition is more like > : variable > create> > here , \ store addr of next avail. RAM > 2 allot \ allot 2 bytes of RAM > ; That makes sense to me, but I'm still interested in definition amforth uses: http://amforth.sourceforge.net/words/XT_VARIABLE.html Why "(CREATE) COMPILE COMPILE" instead of CREATE? What is (literal) doing in front of the 2? Shouldn't sticking (literal) in the definition be handled by ':' ? I take it that (unnamed) replaces ',' since we want to store the address in flash. Thanks -Leon |
|
From: pito <pi...@vo...> - 2010-08-08 19:12:21
|
Hi, when running the Sieve test (code as per example, 10 times, 8192) my atmega32 clocked at 11,05920MHZ does it in 22 seconds, or 2,2 seconds per DO_PRIME (measured per hand as well): > primes 10 iterations. 1899 primes found, elapsed 22 seconds. ok > However the example states: \ runtime: ATMega644 @ 16MHz 2,3 seconds per DO-PRIME. Based on that a have to get aprox. 3,2sec instead. Can somebody confirm that demo time, just to avoid my confusion whether my code works fine.. Thanks! Pito |
|
From: Matthias T. <mt...@we...> - 2010-08-08 18:07:50
|
Hi Matt, > The best thing you can do in order to understand the inner workings of > amforth (or any other forth), is to look at jonesforth > > http://www.annexia.org/forth > > and then get a copy of Threaded Interpretive Languages. Be careful however. The Jonesforth implementations of many words are different from the amforth versions. So do not expect to understand amforth from jonesforth sources ;=) A prominent example is the difference between variable and constant: in amforth there is no runtime difference, variables are slightly customized constants at definition time. Matthias PS: I did not yet found fixes for the current bugs... still thinking... |
|
From: Matt W. <wi...@gm...> - 2010-08-08 10:58:06
|
The best thing you can do in order to understand the inner workings of amforth (or any other forth), is to look at jonesforth http://www.annexia.org/forth and then get a copy of Threaded Interpretive Languages. I speak from experience. Matt |
|
From: Erich W. <ew....@na...> - 2010-08-08 06:52:11
|
Hi Leon, [Q] Does "here" point to flash or ram? ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Prior to amforth version 4.0 here points to the next available location in flash memory and heap points to the next available location in RAM. Starting with version 4.0 here points to the next RAM location and dp points to the next flash location This is in the release notes of amforth 4.0 on the web page http://amforth.sourceforge.net/ > core: ANS94 mention that HERE points to the data (RAM) region. > Re-introduced DP as the dictionary (Flash) pointer. > HEAP is gone. > Migrate old HEAP to HERE and old HERE to DP. The migration effect is readily visible when comparing the files variable.asm diff -uw releases/3.9/core/words/variable.asm trunk/core/words/variable.asm --- releases/3.9/core/words/variable.asm 2010-06-02 11:33:51.000000000 +0200 +++ trunk/core/words/variable.asm 2010-07-02 21:16:41.000000000 +0200 @@ -12,7 +12,7 @@ .dw XT_DOCREATE .dw XT_COMPILE .dw PFA_DOVARIABLE - .dw XT_HEAP + .dw XT_HERE .dw XT_COMMA .dw XT_DOLITERAL .dw 2 So yes, there is unfortunately confusion and the answer depends on the version of amforth. [Q] How is variable and 2variable supposed to work? ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ "variable" is a location to hold a mutable piece of information. Thus the dicionary entry of a "variable" holds (in flash) a pointer to a RAM location. In a purely RAM based Forth (e.g. gforth) the definition : variable create> 0 , 0 , ; is perfectly adequate, because *everything* is in RAM anyway. In a flash based Forth as amforth the definition is more like : variable create> here , \ store addr of next avail. RAM 2 allot \ allot 2 bytes of RAM ; replacing 2 by 4 allocates 4 bytes indeed. However, the behaviour of the words involved in converting the character input (eg. "100.") into a double cell number must work consistently, too. I'm not an expert at this. The current definition of 2variable (trunk, verion 4.1) is found in trunk/lib/ans94/2x.frt : 2variable here 2 cells allot constant ; the value of "here" is put into a constant (flash) and thus points to the alloted RAM location. No need to use "create>". Nice! BTW that is how you create an array of arbitrary length. here 20 cells allot constant myArray (and yes, here used to be heap before version 4.0) Hope this helps. Cheers, Erich On 08/08/2010 05:17 AM, Leon Maurer wrote: > Would your just take the old definition of variable > (http://amforth.sourceforge.net/words/XT_VARIABLE.html) and replace > the 2 with a 4? > > A more general request: could someone explain how variable works? > > I understand how it works in the system from Staring FORTH, but not this one. > > In addition, I have two more specific (and possibly quite newbish) questions. > > I think some of my confusion is related to HERE. The front page says > it points to RAM. In (at least some of) the documentation of all the > words (http://amforth.sourceforge.net/words/) it looks like it's > pointing to Flash. Which is it? > > Also, why (CREATE) COMPILE COMPILE instead of CREATE? > -Leon > > On Sat, Aug 7, 2010 at 2:57 PM, pito<pi...@vo...> wrote: >> Hi friends, which one is the correct way to define 2variable in >> amforth: >> >> : 2variable here 2 cells allot constant ; >> : 2variable create 0 , 0 , ; >> >> Just to be sure we do not operate within the flash and thus we >> destroy it slowly...Pito. >> >> >> ------------------------------------------------------------------------------ >> This SF.net email is sponsored by >> >> Make an app they can't live without >> Enter the BlackBerry Developer Challenge >> http://p.sf.net/sfu/RIM-dev2dev >> _______________________________________________ >> Amforth-devel mailing list >> Amf...@li... >> https://lists.sourceforge.net/lists/listinfo/amforth-devel >> > > ------------------------------------------------------------------------------ > This SF.net email is sponsored by > > Make an app they can't live without > Enter the BlackBerry Developer Challenge > http://p.sf.net/sfu/RIM-dev2dev > _______________________________________________ > Amforth-devel mailing list > Amf...@li... > https://lists.sourceforge.net/lists/listinfo/amforth-devel |
|
From: Leon M. <leo...@gm...> - 2010-08-08 03:17:55
|
Would your just take the old definition of variable (http://amforth.sourceforge.net/words/XT_VARIABLE.html) and replace the 2 with a 4? A more general request: could someone explain how variable works? I understand how it works in the system from Staring FORTH, but not this one. In addition, I have two more specific (and possibly quite newbish) questions. I think some of my confusion is related to HERE. The front page says it points to RAM. In (at least some of) the documentation of all the words (http://amforth.sourceforge.net/words/) it looks like it's pointing to Flash. Which is it? Also, why (CREATE) COMPILE COMPILE instead of CREATE? -Leon On Sat, Aug 7, 2010 at 2:57 PM, pito <pi...@vo...> wrote: > Hi friends, which one is the correct way to define 2variable in > amforth: > > : 2variable here 2 cells allot constant ; > : 2variable create 0 , 0 , ; > > Just to be sure we do not operate within the flash and thus we > destroy it slowly...Pito. > > > ------------------------------------------------------------------------------ > This SF.net email is sponsored by > > Make an app they can't live without > Enter the BlackBerry Developer Challenge > http://p.sf.net/sfu/RIM-dev2dev > _______________________________________________ > Amforth-devel mailing list > Amf...@li... > https://lists.sourceforge.net/lists/listinfo/amforth-devel > |
|
From: pito <pi...@vo...> - 2010-08-07 21:07:57
|
Matthias, the beauty of the forth implementations like amforth or FF on AVR or PIC is that you do not need other suits of various supporting tools, just an editor (e.g. teletype or Palm Treo..). The ucontroller shall contain everything you need in order to operate it.. This is what most younger fans may attract to. So a switch between case sensitivness and case insensitivness woud be a great feature, as I wrote thre are tons of various source codes available. I am not an avr asm freak so I am not going to dig into your code. Moreover you might know the code by heart. There must be a simple point you handle single char from input stream - when the char c is: ((c >= 65) and (c <= 90)) then c = c + 32 ; or something like that.. Pito. ----- PŮVODNÍ ZPRÁVA ----- Od: "Matthias Trute" <mt...@we...> Komu: "pito" <pi...@vo...> Předmět: Re: [Amforth-devel] amforth - how to make him case Datum: 29.7.2010 - 19:16:48 > Pito, > > > > when you do insist on case sensitivness than do > > make the forth words > > > uppercase... > > Why do you think I insist on case sensitivness? > Case sensitivness > is simpler to implement (take it as an axiom if > you do not believe > it). Its very easy do write a converter in any > language on the PC > side, even windows VBS can do that: > > Dim upper as String = "converted from lowercase" > Console.WriteLine(upper.ToUpper()) > Console.WriteLine(UCase(upper)) > Console.WriteLine(StrConv(upper,VbStrConv.UpperCase)) > not to mention the many unix tools like tr... > > > Who actually needs case sensitive forth?? > > I do and will do so for the next few months, at > least. > > > PS: It is interesting how the creators of such > > nice sw implementations do insist on something, > > which an average > > > user does not understand.. I've tried FlashForth > > recently (have a > > > look on it - a lot of ineresting features you > > may utilise), however > > > the creator does insist on FOR NEXT instead of > > DO LOOP. Frankly, I > > > do not understand that.. > > Thats life. And FF is interesting, indeed. > > > Matthias > > PS: If _you_ insist on case insensitivness, feel > free to send a > patch, that I can consider to include into > amforth. Thats the way Open > Source Software works and thats the reason why I > share amforth with > other people > |
|
From: pito <pi...@vo...> - 2010-08-07 19:57:14
|
Hi friends, which one is the correct way to define 2variable in amforth: : 2variable here 2 cells allot constant ; : 2variable create 0 , 0 , ; Just to be sure we do not operate within the flash and thus we destroy it slowly...Pito. |
|
From: pito <pi...@vo...> - 2010-08-07 19:47:25
|
Hi Matthias, much cooler outside again (:-)). Thanks for the info.Pito. ----- PŮVODNÍ ZPRÁVA ----- Od: "Matthias Trute" <mt...@we...> Komu: "Everything around amforth" <amf...@li...> Předmět: Re: [Amforth-devel] My issue with 2variable in int_isr Datum: 7.8.2010 - 14:02:59 > Hi again, > > > : double1 1. ; > > oops. I meant > > 1. 2constant double1 > > sorry for the confusion > > Matthias > |
|
From: Erich W. <ew....@na...> - 2010-08-07 18:45:22
|
Hello, playing with an duemilanove board (atmega328p). I'm building this from files in amforth/releases/4.0/app/template not from the arduino directory. This setup is big enough to just work (tested on atmega32). So with the following changes to template.asm diff -wu template.asm ../../amforth/releases/4.0/appl/template/template.asm --- template.asm 2010-08-07 20:31:40.000000000 +0200 +++ ../../amforth/releases/4.0/appl/template/template.asm 2010-07-02 21:16:39.000000000 +0200 @@ -12,19 +12,12 @@ ; files include the *def.inc from atmel internally. .include "device.asm" -; fixes for atmega328p -.equ TXEN = TXEN0 -.equ UCSZ0 = UCSZ00 -.equ RXEN = RXEN0 -.equ RXCIE = RXCIE0 - - ; amforth needs two essential parameters ; cpu clock in hertz, 1MHz is factory default -.equ F_CPU = 16000000 +.equ F_CPU = 8000000 ; initial baud rate of terminal -.include "drivers/usart_0.asm" +.include "drivers/usart.asm" .equ BAUD = 9600 .equ USART_B_VALUE = (1<<TXEN) | (1<<RXEN) | (1<<RXCIE) .equ USART_C_VALUE = (3<<UCSZ0) and MCU=atmega328p in makefile, I can successfully build an amforth, upload it to the controller, and talk to it: > ok > ok > ver amforth 4.0 ATmega328P ok > words i@ (i!) 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* + - log 2 d< d> 0> u> u< true 0 0< > < 0= = <> r@ >r r> rot drop over swap ?dup dup c@ c! ! @ execute exit -int +int show-wordlist +usart baud t x? tx rx? rx order get-order get-current environment? environment end-code code abort abort" [char] immediate recurse user constant vari able [ ] ; :noname : does> create ?do leave +loop loop do again until repeat while begin then else if literal int! applturnkey is Rdefer Edefer words s" ." .s u. dinvert d- d+ d2* init-user ee>ram ee-user tib d2/ cmove dnegate dabs d>s j * defer@ defer! icompare find sear ch-wordlist to value unused noop ver ?stack interpret depth rp0 sp sp0 cold pause quit place word /string source cscan parse 2swap >numb er number char refill accept cskip throw catch handler ' type count spaces space cr icount itype s, digit? ud/mod ud.r ud. . d. .r d.r s ign #> #s # <# hold hld within max min abs mod / negate u/mod */ /mod */mod turnkey bl hex decimal bin ['] , compile ( \ allot here edp dp /key key? key emit? emit pad #tib >in cell+ cells base state f_cpu ok HOWEVER, after trying to create a new word, it stops working: > : one 1 ; ?? -13 10 > 1 .s ?? -13 5 > .s ?? -13 3 > .s ?? -13 3 > 1 ok > . ok > depth ?? -13 6 This looks to me like the pointer to the wordlist has gone off into the wild. Comparing template.asm to arduino/duemilanove.asm does not show suspicious differences (see below). More ideas? Erich diff -wu template.asm ../../amforth/releases/4.0/appl/arduino/duemilanove.asm | less --- template.asm 2010-08-07 20:31:40.000000000 +0200 +++ ../../amforth/releases/4.0/appl/arduino/duemilanove.asm 2010-07-02 21:16:37.000000000 +0200 @@ -1,48 +1,23 @@ -; This is a template for an amforth project. -; -; The order of the entries (esp the include order) must not be -; changed since it is very important that the settings are in the -; right order -; -; first is to include the macros from the amforth -; directory .include "macros.asm" - -; include the amforth device definition file. These -; files include the *def.inc from atmel internally. .include "device.asm" -; fixes for atmega328p -.equ TXEN = TXEN0 -.equ UCSZ0 = UCSZ00 -.equ RXEN = RXEN0 -.equ RXCIE = RXCIE0 - + .equ HLDSIZE = $10 ; 16 bit cellsize with binary representation + .equ TIBSIZE = $64 ; 80 characters is one line... + .equ APPUSERSIZE = 0 ; size of application user area -; amforth needs two essential parameters -; cpu clock in hertz, 1MHz is factory default +; cpu clock in hertz .equ F_CPU = 16000000 - -; initial baud rate of terminal +; baud rate of terminal .include "drivers/usart_0.asm" .equ BAUD = 9600 -.equ USART_B_VALUE = (1<<TXEN) | (1<<RXEN) | (1<<RXCIE) -.equ USART_C_VALUE = (3<<UCSZ0) - - -.equ HLDSIZE = $10 ; 16 bit cellsize with binary representation -.equ TIBSIZE = $64 ; ANS94 needs at least 80 characters per line -.equ APPUSERSIZE = 0 ; size of application specific user area in bytes - -; addresses of various data segments -.set here = ramstart ; initial HERE at compile time, grows upward -.set rstackstart = RAMEND ; start address of return stack, grows downward -.set stackstart = RAMEND - 80 ; start address of data stack, grows downward -.equ amforth_interpreter = max_dict_addr ; the same value as NRWW_START_ADDR -; change only if you know what to you do -.equ NUMWORDLISTS = 8 ; number of word lists in the searh order, at least 8 +.equ USART_B_VALUE = (1<<TXEN0) | (1<<RXEN0) | (1<<RXCIE0) +.equ USART_C_VALUE = (1<<UCSZ01) | ( 1<<UCSZ00) -.equ want_fun = 0 ; in case of an error out print an additional line with an caret indicating the error position +.set here = ramstart ; start address of HERE, grows upward +.set rstackstart = RAMEND +.set stackstart = RAMEND - 80 +.set amforth_interpreter = max_dict_addr -; include the whole source tree. +.set NUMWORDLISTS = 8 +.equ want_fun = 0 .include "amforth.asm" |
|
From: Erich W. <ew....@na...> - 2010-08-07 18:35:34
|
Hi folks, using the files in amforth/releases/4.0/appl/template to build a project, the following can be observed atmega32: after editing F_CPU and BAUD settings in template.asm and after editing MCU in makefile the project builds, the resulting hex files can be uploaded to a controller, and creating new words like : one 1 ; works correctly. However, MCU=atmega8 results in an assembly error: make MCU=atmega8 wine ~/wine/AvrAssembler2/avrasm2.exe -I ~/wine/AvrAssembler2/Appnotes2 \ -I ../../amforth/releases/4.0/core -I ../../amforth/releases/4.0/core/devices/atmega8 \ -fI -v0 -e template.eep.hex -l template.lst template.asm ../../amforth/releases/4.0/core/devices/atmega8\device.asm(13): error: Overlap in .cseg: addr=0xb conflicts with 0xb:0xc Assembly failed, 1 errors, 0 warnings make: *** [template.hex] Error 1 A quick look in template.lst did not reveal anything obvious. Ideas? Erich |
|
From: Matthias T. <mt...@we...> - 2010-08-07 12:03:09
|
Hi again, > : double1 1. ; oops. I meant 1. 2constant double1 sorry for the confusion Matthias |
|
From: Matthias T. <mt...@we...> - 2010-08-07 11:56:33
|
Hi Pito, it took quite a while, sorry for that > However with 2variable "seconds" definition: > > decimal > 2variable ticker > 2variable seconds > 262144. 2constant clkpi ( clk per interrupt = 256*prescaler ) > 1. ticker 2! > 0. seconds 2! > \ overflow2 interupt service routine > \ ! not optimised yet > : tick_isr > ticker 2@ clkpi d- ticker 2! > ticker 2@ clkpi d< if f_cpu ticker 2@ d+ ticker 2! > 1. seconds 2@ d+ seconds 2! > then ; > > it crashes in such a way I have to reflash rom to get access to system. > What is the trick here? well, a small bug leads to the error: amforth does not compile double cell numbers into the colon words, only single cell constants. I have no fix yet (still working on it). A workaround is a definition like : double1 1. ; and use of the double1 instead of 1. ... double1 seconds 2@ d+ seconds 2! ... that works for me with your code (without crash and increasing seconds after many tick_isr calls). Matthias |
|
From: <ken...@al...> - 2010-08-04 20:08:30
|
> There must be a better way to see, how much more fits into the > NRWW section. I moved just dict_minimum.inc. It gave me an end address of 0x3f00, so I'm only wasting 256 words. dict_minimum was intended to be in low memory. The amforth User's Manual says, "This file was called dict_low.inc in previous versions of amforth. .... The words included in dict_minimum.inc are stored in the target system in low flash memory." > Something related > to writing flash seems to be broken. Maybe you moved too much to low memory. In the User's Guide it says you should be careful. The amount of high flash memory varies based on the type of AVR device. Some small devices may have so little high flash memory that you won't be able to fit all of the words in this file [dict_core.inc] into the available memory. Should this happen, you may be able to move some of the .include statements from this file into dict_minimum.inc (see below). Note, however, that this must be done carefully, to keep the flash read/write words (at least) in high flash memory. Regards, Ken On Wed, 04 Aug 2010 21:10 +0200, "Erich Waelde" <ew....@na...> wrote: > Hello, > > I can confirm the original problem > > warning: end of .cseg at 0x8ce2 is beyond end of memory at 0x7fff". > for a duemilanove board with a fresh clean checkout of amforth 4.0. > I moved everything after the line > > .include "words/ifetch.asm" > > from dict_appl_core.inc to dict_appl.inc. That makes the warning go > away. There must be a better way to see, how much more fits into the > NRWW section. > > Uploading(*) the resulting files to the board works, setting the fuses as > detailed in the readme.txt gives me a prompt (9600 baud). > > amforth 4.0 ATmega328P ok > > _ > > HOWEVER, compiling a word does stall the controller. Pressing reset gives > a new prompt, but the system is not working any more. Something related > to writing flash seems to be broken. > > (*) uploading is done with a very simple "sp12" parport programmer. > > Cheers, > Erich > > On 08/04/2010 06:16 PM, ken...@al... wrote: > > Hi Andy, > > > > Thanks for your quick response. > > > >> What are you using as your build route/toolchain ? > > |
|
From: Erich W. <ew....@na...> - 2010-08-04 19:27:26
|
Hello, I can confirm the original problem > warning: end of .cseg at 0x8ce2 is beyond end of memory at 0x7fff". for a duemilanove board with a fresh clean checkout of amforth 4.0. I moved everything after the line .include "words/ifetch.asm" from dict_appl_core.inc to dict_appl.inc. That makes the warning go away. There must be a better way to see, how much more fits into the NRWW section. Uploading(*) the resulting files to the board works, setting the fuses as detailed in the readme.txt gives me a prompt (9600 baud). amforth 4.0 ATmega328P ok > _ HOWEVER, compiling a word does stall the controller. Pressing reset gives a new prompt, but the system is not working any more. Something related to writing flash seems to be broken. (*) uploading is done with a very simple "sp12" parport programmer. Cheers, Erich On 08/04/2010 06:16 PM, ken...@al... wrote: > Hi Andy, > > Thanks for your quick response. > >> What are you using as your build route/toolchain ? > |
|
From: <ken...@al...> - 2010-08-04 16:17:01
|
Hi Andy, Thanks for your quick response. > What are you using as your build route/toolchain ? Kubuntu Linux v,9.10 on an AMD 64 bit dual core processor Apache Ant version 1.7.1 compiled on July 2 2010 wine-1.0.1 AVRASM ver. 2.1.42 then I move the .hex files to an old desktop and program the chip using uisp version 20050207 and a very crude Parallel Port programmer from http://www.arduino.cc/en/Hacking/ParallelProgrammer > A second question (sorry got to ask it most folks miss it) did you > program the eeprom ?? Yes. Don't feel bad - I've worked in Tech. Support and have had to ask, "Is it plugged in?". > What fuses did you program ?? None, I left them at the defaults for the duemilanove. > At a guess I would think that the second problem is perhaps related to >the first in that the core code compiles to just under 8k. This should > fit into the memory of a 32k device easily with bags of room to spare. Yes the code is less than 8k. The problem is that there's an .org 0x3800 before the *_core* includes so they go into the NRWW section of eprom. With dict_minimum.inc in the *_core* group of includes, the program overflows memory. > Your base addresses etc would appear to be wrong. Yes, I've spent a lot of time being confused the last couple of days. Atmel seems to use byte addresses sometimes and word (16 bit) addresses others. e.g. with the proper fuses the datasheet says the NRWW section is from 0x3800 to 0x3fff. You will see that the assembly listing goes up to 0x4671 but the error message says, "duemilanove.asm(24): warning: end of .cseg at 0x8ce2 is beyond end of memory at 0x7fff". Two times 0x4671 is 0x8ce2. I am inclined to believe that there may be a problem with my two different serial port adapters since I've consistently had the "amf" symptom since amforth 3.7. However, I have been able to use both serial port adapters to program the BBB using the bootloader. I'm going to try different baud rates just because it's easy and might work. Regards, Ken On Wed, 04 Aug 2010 14:33 +0100, "an...@ki..." <an...@ki...> wrote: > At a guess I would think that the second problem is perhaps related to >the first in that the core code compiles to just under 8k. This should > fit into the memory of a 32k device easily with bags of room to spare. > > Your base addresses etc would appear to be wrong. > > A second question (sorry got to ask it most folks miss it) did you > program the eeprom ?? > > What are you using as your build route/toolchain ?? > > What fuses did you program ?? > > I haven't built the most recent release but will do when I get a mo. Its > on the to-do list. > > Cheers > > Andy Kirby > > > > On 04/08/10 03:41, ken...@al... wrote: > > Hi, > > > > I have tried using both my serial port adapter and my FTDI USB serial > > adapter on amforth 4.0 assembled for the duemilanove. (The board I'm > > actually using is one of the free clones of the arduino with separate > > serial adapters). I have used both minicom under linux and a terminal > > emulator under Windows with nearly the same results. Both of the serial > > adapters have been used successfully for serial programming of the > > arduino. > > > > When minicom starts I see: > > > > > > amforth 4.0 ATmega328P > >> amf > > > > Pressing reset on the Arduino causes another "amf" to be output so I > > get: > > > > > > amforth 4.0 ATmega328P > >> amfamf > > > > There is no response to keyboard input. > > > > Do you have any suggestions on where to start troubleshooting this > > problem? I noticed that the duemilanove is using polling for both input > > and output now. I had the same symptoms with earlier versions using > > interrupts. > > > > Thanks, > > Ken > > > > ------------------------------------------------------------------------------ > > The Palm PDK Hot Apps Program offers developers who use the > > Plug-In Development Kit to bring their C/C++ apps to Palm for a share > > of $1 Million in cash or HP Products. Visit us here for more details: > > http://p.sf.net/sfu/dev2dev-palm > > _______________________________________________ > > Amforth-devel mailing list > > Amf...@li... > > https://lists.sourceforge.net/lists/listinfo/amforth-devel > > > > ------------------------------------------------------------------------------ > The Palm PDK Hot Apps Program offers developers who use the > Plug-In Development Kit to bring their C/C++ apps to Palm for a share > of $1 Million in cash or HP Products. Visit us here for more details: > http://p.sf.net/sfu/dev2dev-palm > _______________________________________________ > Amforth-devel mailing list > Amf...@li... > https://lists.sourceforge.net/lists/listinfo/amforth-devel > |
|
From: <an...@ki...> - 2010-08-04 13:34:01
|
At a guess I would think that the second problem is perhaps related to the first in that the core code compiles to just under 8k. This should fit into the memory of a 32k device easily with bags of room to spare. Your base addresses etc would appear to be wrong. A second question (sorry got to ask it most folks miss it) did you program the eeprom ?? What are you using as your build route/toolchain ?? What fuses did you program ?? I haven't built the most recent release but will do when I get a mo. Its on the to-do list. Cheers Andy Kirby On 04/08/10 03:41, ken...@al... wrote: > Hi, > > I have tried using both my serial port adapter and my FTDI USB serial > adapter on amforth 4.0 assembled for the duemilanove. (The board I'm > actually using is one of the free clones of the arduino with separate > serial adapters). I have used both minicom under linux and a terminal > emulator under Windows with nearly the same results. Both of the serial > adapters have been used successfully for serial programming of the > arduino. > > When minicom starts I see: > > > amforth 4.0 ATmega328P >> amf > > Pressing reset on the Arduino causes another "amf" to be output so I > get: > > > amforth 4.0 ATmega328P >> amfamf > > There is no response to keyboard input. > > Do you have any suggestions on where to start troubleshooting this > problem? I noticed that the duemilanove is using polling for both input > and output now. I had the same symptoms with earlier versions using > interrupts. > > Thanks, > Ken > > ------------------------------------------------------------------------------ > The Palm PDK Hot Apps Program offers developers who use the > Plug-In Development Kit to bring their C/C++ apps to Palm for a share > of $1 Million in cash or HP Products. Visit us here for more details: > http://p.sf.net/sfu/dev2dev-palm > _______________________________________________ > Amforth-devel mailing list > Amf...@li... > https://lists.sourceforge.net/lists/listinfo/amforth-devel > |
|
From: <ken...@al...> - 2010-08-04 02:42:02
|
Hi, I have tried using both my serial port adapter and my FTDI USB serial adapter on amforth 4.0 assembled for the duemilanove. (The board I'm actually using is one of the free clones of the arduino with separate serial adapters). I have used both minicom under linux and a terminal emulator under Windows with nearly the same results. Both of the serial adapters have been used successfully for serial programming of the arduino. When minicom starts I see: amforth 4.0 ATmega328P > amf Pressing reset on the Arduino causes another "amf" to be output so I get: amforth 4.0 ATmega328P > amfamf There is no response to keyboard input. Do you have any suggestions on where to start troubleshooting this problem? I noticed that the duemilanove is using polling for both input and output now. I had the same symptoms with earlier versions using interrupts. Thanks, Ken |
|
From: <ken...@al...> - 2010-08-03 20:52:59
|
Hi, I'm trying amforth v.4.0 on a freeduino, the BBB from Modern Devices in the U.S. uisp gave me an error about an address violation (Sorry, I don't have the exact text.) I looked at dueminanove.lst. It has a Warning, "duemilanove.asm(24): warning: end of .cseg at 0x8ce2 is beyond end of memory at 0x7fff". I moved dict_minimum from dict_appl_core.inc to dict_appl.inc and got rid of the error message. According to the listing, the end of used memory is now 0x3f00 instead of 0x4671. This may not be the best solution for the ATmegas with larger NRWW memory spaces. Thanks for your effort. I'm looking forward to writing forth for this little machine. Ken |