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
|
From: Leon M. <leo...@gm...> - 2010-08-10 02:20:13
|
I think I'm understanding this now, so hopefully one more round of questions will clear everything up. On Mon, Aug 9, 2010 at 1:11 PM, Matthias Trute <mt...@we...> wrote: > 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... The description of HERE reads "address of the next free dictionary cell" -- which sounds like the old version. So is the code bleeding edge but not the comments? http://amforth.sourceforge.net/words/XT_HERE.html > 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.. ... > The sequence (literal) <number> is a 1:1 translation of a > compiled number. Think of it as the number only. So the html is based off the sources, which has definitions that are essentially compiled by hand? But if I were defining VARIABLE interactively, ':' would take care of adding (LITERAL) for me? > 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. Is the "(CREATE) COMPILE COMPILE" in the definition of VARIABLE another artifact of being compiled by hand? If I were defining VARIABLE interactively, I would be able to use CREATE? Thanks again for your patience in answering all of this. -Leon |
From: pito <pi...@vo...> - 2010-08-10 01:33:04
|
Andy, yes, you are right - there is a lot other things to do with amforth development. Of course I am not pushing you or the broad amforth community into any action regarding amforth, it is just a normal discusion.. I am not biased with any forth - as my forth skills are minimal, so my perception what would be nice to have is just a point of view of Mr. XY. I do understand you like it as it is, however I do understand you might be happy to have more than ~few users of it in the future. So as a normal user (who has other options as well) when I take the amforth (or any other forth), firstly I flash the stuff into the chip and then I start tackling the promt, the first thing one does is he/she starts to google and upload ready words into it (examples, libraries, tests, benchmarks, etc.) which are from 99.978% a happy mixture of lowercase and uppercase words. So based on your recommendation one has to start to write his own filters, conversion tools, analysers, transcoders.. with help of VB or python, at best under linux (to fit the amforth lowercase ideology), BTW with the similar issues like Matthias is indicating to me: - what to do with ." HeLLo woRlD" (of course nothing, this shall not be transformed to xxx_case, it is obvious, we talk words only)? My point is the amforth (or pForth, PFForth, FlashForth,....) will not be considered (by 99% of people) from a very moment as the tool for programming a microcontroller today, but as a nice little gadget for playing, learning, evaluating, thinking about forth and related concepts as a representative of stack based machines. Therefore for me, as a guy who was also quite technical long time ago, but now much more customer centric, it means I shall offer (when not performing a l'art pour l'art exercise only) something one may practically use (in the way I described above) from scratch - and to simply google, upload and run a SIEVE WRITTEN IN UPPERCASE ... as normally nobody is able to write (I mean to program) the SIEVE in amforth even in lowercase just to test weather the amforth even works.. This is just my point guys, your mileage may vary... P. ----- PŮVODNÍ ZPRÁVA ----- Od: an...@ki... Komu: amf...@li... Předmět: Re: [Amforth-devel] amforth - how to make him case Datum: 9.8.2010 - 23:35:43 > You won't hear me argue against this view point > because I like it too. > > For the very good technical reasons already > outlined. > > I guess ultimately if the case sensitivity is too > much to live with, > there is always the option of taking a fork and > maintaining it yourself. > Such is the Open Nature of Open Source. > > Alternatively there are many text preprocessing > tools (Unix/Linux) that > will pre-process text into what ever case you > want. Before squirting it > at the Amforth laden micro-controller. > > Case sensitivity is good, leave it be, move on, > their is so much more > that is important to do, this argument is trivial > and unworthy of such > capable individuals. > > Sorry if this posting is offensive, enough > already, vote with your feet. > > > > On 09/08/10 19:18, Matthias Trute wrote: > > Üito, > > > >> The simplest solutiom might be to translate all > >> uppercase letters > >> >> (A-Z) into lowercase when input or exercised or > >> compiled. > >> > > > And what do I do with strings like ." hello > > world " ? > > > Turn it into HELLO WORLD? No way. > > > > and again: _I_ like the case sensitive feature > > very much. > > > > > Matthias > > > > > > ------------------------------------------------------------------------------> > > 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: <an...@ki...> - 2010-08-09 21:35:53
|
You won't hear me argue against this view point because I like it too. For the very good technical reasons already outlined. I guess ultimately if the case sensitivity is too much to live with, there is always the option of taking a fork and maintaining it yourself. Such is the Open Nature of Open Source. Alternatively there are many text preprocessing tools (Unix/Linux) that will pre-process text into what ever case you want. Before squirting it at the Amforth laden micro-controller. Case sensitivity is good, leave it be, move on, their is so much more that is important to do, this argument is trivial and unworthy of such capable individuals. Sorry if this posting is offensive, enough already, vote with your feet. On 09/08/10 19:18, Matthias Trute wrote: > Üito, > >> The simplest solutiom might be to translate all uppercase letters >> (A-Z) into lowercase when input or exercised or compiled. > > And what do I do with strings like ." hello world " ? > Turn it into HELLO WORLD? No way. > > and again: _I_ like the case sensitive feature very much. > > Matthias > > > ------------------------------------------------------------------------------ > 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: Matthias T. <mt...@we...> - 2010-08-09 18:22:46
|
Pito, > > 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.. I do not remember with which version of amforth I run the benchmark. Its long ago, I'm sure. Probably amforth is faster now? I should re-run the benchmark again, it seems un-avoidable.. ;=) Matthias |
From: Matthias T. <mt...@we...> - 2010-08-09 18:18:43
|
Üito, > The simplest solutiom might be to translate all uppercase letters > (A-Z) into lowercase when input or exercised or compiled. And what do I do with strings like ." hello world " ? Turn it into HELLO WORLD? No way. and again: _I_ like the case sensitive feature very much. Matthias |
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 ? > > |