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...> - 2008-07-17 14:42:57
|
-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 Hi, Bernard Mentink wrote: > I don't know if the limitation is in the pearl script for sending to the > device, or in the actual interpreter .... must have a good look at both. Much simpler: It is configurable paramter at build-time. Just edit your application master file and change the value of TIBSIZE to something different (bigger). Matthias -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.6 (GNU/Linux) iD8DBQFIf1pM9bEHdGEMFjMRAhKpAJ4hOBJ4oRO4Cy0M55nCJ3exuXhxywCgjVCb 1BGg6rvqEjjew+blUieo3HM= =rdaJ -----END PGP SIGNATURE----- |
|
From: Bernard M. <bme...@gm...> - 2008-07-17 01:26:42
|
Hi Michael, Yes, thanks for the explaination on how the "]" word was working in this code, it all makes sense now .... I have to get my head around what is happening at compile time and run time with the create/does> words .... By the way everyone, on writing this code and laying out some large FSM tables to use in anger ... I have come across what I think is a bug. When the lines get longer than 80 characters the interpreter does not accept input and misses some of my table .... with modern editors having a much wider column width this is a severe limitation in writing descriptive FSM's as I like to have the "action" word and the "state" word fairly discriptive ..., with the width only 80 wide I am limited to names only 3/4 characters or so with 5 inputs wide for example .. I don't know if the limitation is in the pearl script for sending to the device, or in the actual interpreter .... must have a good look at both. Cheers, Bernard On Thu, Jul 17, 2008 at 10:15 AM, Kalus Michael <mic...@on...> wrote: > Hi Bernard. > > > Am 16.07.2008 um 23:32 schrieb Bernard Mentink: > > > I implemented the "Elegant FSM" version of Julien's code Section > > 3.3 i.e: > > > > The FSM is then defined as > > > > 4 WIDE FSM: > > \ input: | other? | num? | minus? | dp? | > > \ state: --------------------------------------------- > > ( 0 ) DROP >0 EMIT >1 EMIT >1 EMIT >2 > > ( 1 ) DROP >1 EMIT >1 DROP >1 EMIT >2 > > ( 2 ) DROP >2 EMIT >2 DROP >2 DROP >2 ; > > > > > > That seems to me the most readable and flexible of all his examples. > > I have given Mathias the code for including in the Lib. > > Well, so you finaly got used to the ]-trick of FSM: > > I agree, this way to set up the array realy looks good. > > Something like ' drop , ' >0 , .. is uglier. > > :-) > Michael > > > ------------------------------------------------------------------------- > This SF.Net email is sponsored by the Moblin Your Move Developer's > challenge > Build the coolest Linux based applications with Moblin SDK & win great > prizes > Grand prize is a trip for two to an Open Source event anywhere in the world > http://moblin-contest.org/redirect.php?banner_id=100&url=/ > _______________________________________________ > Amforth-devel mailing list > Amf...@li... > https://lists.sourceforge.net/lists/listinfo/amforth-devel > |
|
From: Kalus M. <mic...@on...> - 2008-07-16 22:15:52
|
Hi Bernard. Am 16.07.2008 um 23:32 schrieb Bernard Mentink: > I implemented the "Elegant FSM" version of Julien's code Section > 3.3 i.e: > > The FSM is then defined as > > 4 WIDE FSM: > \ input: | other? | num? | minus? | dp? | > \ state: --------------------------------------------- > ( 0 ) DROP >0 EMIT >1 EMIT >1 EMIT >2 > ( 1 ) DROP >1 EMIT >1 DROP >1 EMIT >2 > ( 2 ) DROP >2 EMIT >2 DROP >2 DROP >2 ; > > > That seems to me the most readable and flexible of all his examples. > I have given Mathias the code for including in the Lib. Well, so you finaly got used to the ]-trick of FSM: I agree, this way to set up the array realy looks good. Something like ' drop , ' >0 , .. is uglier. :-) Michael |
|
From: Bernard M. <bme...@gm...> - 2008-07-16 21:32:27
|
Hi Michael, I implemented the "Elegant FSM" version of Julien's code Section 3.3 i.e: The FSM is then defined as 4 WIDE FSM: \ input: | other? | num? | minus? | dp? | \ state: --------------------------------------------- ( 0 ) DROP >0 EMIT >1 EMIT >1 EMIT >2 ( 1 ) DROP >1 EMIT >1 DROP >1 EMIT >2 ( 2 ) DROP >2 EMIT >2 DROP >2 DROP >2 ; That seems to me the most readable and flexible of all his examples. I have given Mathias the code for including in the Lib. Cheers, Bernard. On Thu, Jul 17, 2008 at 5:16 AM, Kalus Michael <mic...@on...> wrote: > Hi Bernard. > > > Am 15.07.2008 um 03:03 schrieb Bernard Mentink: > > > And lastly, the FSM code is: > > > > : FSM: ( width -- ) CREATE , ] > > DOES> ( n adr -- ) > > TUCK @ mystate @ * + CELLS CELL+ + > > ( adr') PERFORM ; > > > > I notice he enters into compile mode with the "]" word just before > > the > > DOES> word, is that necessary to do with the latest CREATE/DOES code? > > In the meantime I studied Nobles Code (1). Hope I got it right what > he is doing there. > > > This is what the ] does: > > He ceates a defining word called FSM: and during compiletime of FSM: > the ] is compiled into the definition. At runtime of FSM: the ] is > executed. Now this starts compilation of all the words following the > word defined by the defining word until the closing ; enters > execution again. > > > In Nobles example "3.2. A Better FSM" FSM: defines <Fixed.Pt#> and > thereafter compiles the list of execution tokens: > > 4 WIDE FSM: <Fixed.Pt#> ( action# -- ) > \ other num - . \ state > DROP (00) (00) (02) \ 0 > DROP (00) DROP (02) \ 1 > DROP (02) DROP DROP ; \ 2 > > > If you do not want to use that ]-trick, because it makes your program > code more mysterious, you archive the same result this way: > > 4 WIDE FSM: <Fixed.Pt#> ( action# -- ) > \ other num - . \ state > ' DROP , ' (00) , ' (00) , ' (02) , \ 0 > ' DROP , ' (00) , ' DROP , ' (02) , \ 1 > ' DROP , ' (02) , ' DROP , ' DROP , \ 2 > > This way it is more obvious what comes into the array. > > > So the use of ] has nothing to do with the CREATE/DOES Part of > creating a new defining word. ok? > > Michael > > > (1) Finite State Machines in Forth; J. V. Noble > http://dec.bournemouth.ac.uk/forth/jfar/index.html > > > > ------------------------------------------------------------------------- > This SF.Net email is sponsored by the Moblin Your Move Developer's > challenge > Build the coolest Linux based applications with Moblin SDK & win great > prizes > Grand prize is a trip for two to an Open Source event anywhere in the world > http://moblin-contest.org/redirect.php?banner_id=100&url=/ > _______________________________________________ > Amforth-devel mailing list > Amf...@li... > https://lists.sourceforge.net/lists/listinfo/amforth-devel > |
|
From: Alexander G. <ale...@an...> - 2008-07-16 20:41:40
|
>>>>> "Matthias" == Matthias Trute <mt...@we...> writes:
Matthias> -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1
Matthias> Ho Alexander
Matthias> Alexander Guy wrote:
>> Greetings, First of all, thanks to all of the developers for
>> making amforth available; I've found it extremely useful.
Matthias> Thank you, and allow me a simple question: what do you
Matthias> do with amforth?
I've been using it to test automotive engine control units:
http://www.efi101.com/forum/viewtopic.php?t=3619&highlight=simulation
.. specifically I've been generating simulated engine position information, to see how the ECUs react to changes in engine speed.
>> I think I've run into a bug related to u*/mod. It's listed as
>> accepting unsigned values, but (as of amforth v2.8) uses m* for
>> multiplication. Shouldn't it be using um*?
Matthias> The u*/mod currently passes the Hayes Test, but I'll
Matthias> check your fix ASAP, it is too obvious to be ignored ;=)
Great. Thanks.
Alexander
|
|
From: Kalus M. <mic...@on...> - 2008-07-16 20:09:06
|
-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 Hi. Am 16.07.2008 um 21:21 schrieb Matthias Trute: >> I think I've run >> into a bug related to u*/mod. It's listed as accepting unsigned >> values, but (as of amforth v2.8) uses m* for multiplication. >> Shouldn't it be using um*? > > The u*/mod currently passes the Hayes Test, but I'll check your fix > ASAP, it is > too obvious to be ignored ;=) In dpans forth there is no "u*/mod" at all; even gforth has no such word. I wonder how it sneeked into amforth? Michael -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.1 (Darwin) iD8DBQFIflVVJ3DLQCvSXtcRAhvWAKD+CdNr0CQvh1F96xptWTr8feXWrACgovtb fYscooOwVhN4suaBVf/lmog= =3rze -----END PGP SIGNATURE----- |
|
From: Matthias T. <mt...@we...> - 2008-07-16 19:21:09
|
-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 Ho Alexander Alexander Guy wrote: > Greetings, First of all, thanks to all of the developers for making > amforth available; I've found it extremely useful. Thank you, and allow me a simple question: what do you do with amforth? I get only very vage project descriptions, if anything at all; but am very interested what people do with amforth (you can answer me directly, I won't disclose your ideas)... > I think I've run > into a bug related to u*/mod. It's listed as accepting unsigned > values, but (as of amforth v2.8) uses m* for multiplication. > Shouldn't it be using um*? The u*/mod currently passes the Hayes Test, but I'll check your fix ASAP, it is too obvious to be ignored ;=) Matthias -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.6 (GNU/Linux) Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org iD8DBQFIfkol9bEHdGEMFjMRApJKAJ9ITjFy1hbMEL6ddCr/4OSenMT9bgCfYZI/ MDtF1UfDM98AQmDpHH9eofc= =7Jqh -----END PGP SIGNATURE----- |
|
From: Kalus M. <mic...@on...> - 2008-07-16 17:16:18
|
Hi Bernard.
Am 15.07.2008 um 03:03 schrieb Bernard Mentink:
> And lastly, the FSM code is:
>
> : FSM: ( width -- ) CREATE , ]
> DOES> ( n adr -- )
> TUCK @ mystate @ * + CELLS CELL+ +
> ( adr') PERFORM ;
>
> I notice he enters into compile mode with the "]" word just before
> the
> DOES> word, is that necessary to do with the latest CREATE/DOES code?
In the meantime I studied Nobles Code (1). Hope I got it right what
he is doing there.
This is what the ] does:
He ceates a defining word called FSM: and during compiletime of FSM:
the ] is compiled into the definition. At runtime of FSM: the ] is
executed. Now this starts compilation of all the words following the
word defined by the defining word until the closing ; enters
execution again.
In Nobles example "3.2. A Better FSM" FSM: defines <Fixed.Pt#> and
thereafter compiles the list of execution tokens:
4 WIDE FSM: <Fixed.Pt#> ( action# -- )
\ other num - . \ state
DROP (00) (00) (02) \ 0
DROP (00) DROP (02) \ 1
DROP (02) DROP DROP ; \ 2
If you do not want to use that ]-trick, because it makes your program
code more mysterious, you archive the same result this way:
4 WIDE FSM: <Fixed.Pt#> ( action# -- )
\ other num - . \ state
' DROP , ' (00) , ' (00) , ' (02) , \ 0
' DROP , ' (00) , ' DROP , ' (02) , \ 1
' DROP , ' (02) , ' DROP , ' DROP , \ 2
This way it is more obvious what comes into the array.
So the use of ] has nothing to do with the CREATE/DOES Part of
creating a new defining word. ok?
Michael
(1) Finite State Machines in Forth; J. V. Noble
http://dec.bournemouth.ac.uk/forth/jfar/index.html
|
|
From: Ulrich H. <uh...@xl...> - 2008-07-16 09:23:03
|
Hi Mike,
> Hm, what makes the differencce in using
> : perform postpone @ postpone execute ; ( A )
> instead of
> : perform @ execute ; ( B )
> then? Speed?
it has to be either
: perform ( compiling: -- ) ( interpreting: xt -- )
postpone @ postpone execute ;
immediate
or just
: perform ( xt -- ) @ execute ;
The latter is the typical definition.
The first definition compiles code so in principle
could be removed from the final program. This however
is seldomly done as only few Forth systems support
temporary definitions.
Speedwise the first version might be slightly faster as
less nesting is done. However the effect is probably
marginal and not worth the effort....
I personally would define PERFOM only for
porting code. I believe
@ EXECUTE
makes a fine phrase to be writen in source.
If I build data/control structures it will be hidden in
that definition anyway, like:
: Case: ( -- ) Create Does> ( i*x -- j*x ) cells + @ execute ;
Case: choice ' dup , ' swap , ' drop ,
10 0 choice ( dup )
20 1 choise ( swap )
2 choice ( drop ) 2 choice ( drop ) 2 choice ( drop )
F83 has PERFORM implemented in code which might
have the speed advantage.... Benchmarking required.
Regards,
Ulli
Am 16.07.2008 um 10:37 schrieb Kalus Michael:
> Hi Ulli.
>
> Am 16.07.2008 um 08:12 schrieb Ulrich Hoffmann:
>>> Is the solution now to use *: perform postpone @ postpone execute;
>>> *??
>> yes
>
> Hm, what makes the differencce in using
> : perform postpone @ postpone execute ; ( A )
> instead of
> : perform @ execute ; ( B )
> then? Speed?
>
> Looks like Version A acts like an makro compiling @ and EXECUTE into
> your definition, so that at runtime there will be less overhead
> because we skip one NEXT level this way? If speed does not matter
> that much version B will do the same thing?
>
> Michael
>
>
>
> -------------------------------------------------------------------------
> This SF.Net email is sponsored by the Moblin Your Move Developer's
> challenge
> Build the coolest Linux based applications with Moblin SDK & win
> great prizes
> Grand prize is a trip for two to an Open Source event anywhere in
> the world
> http://moblin-contest.org/redirect.php?banner_id=100&url=/
> _______________________________________________
> Amforth-devel mailing list
> Amf...@li...
> https://lists.sourceforge.net/lists/listinfo/amforth-devel
|
|
From: Kalus M. <mic...@on...> - 2008-07-16 08:37:54
|
Hi Ulli. Am 16.07.2008 um 08:12 schrieb Ulrich Hoffmann: >> Is the solution now to use *: perform postpone @ postpone execute; >> *?? > yes Hm, what makes the differencce in using : perform postpone @ postpone execute ; ( A ) instead of : perform @ execute ; ( B ) then? Speed? Looks like Version A acts like an makro compiling @ and EXECUTE into your definition, so that at runtime there will be less overhead because we skip one NEXT level this way? If speed does not matter that much version B will do the same thing? Michael |
|
From: Ulrich H. <uh...@xl...> - 2008-07-16 06:12:49
|
Hi Bernie, Mike, > Is the solution now to use *: perform postpone @ postpone execute; *?? yes In Forth-83 there were two distinct words for user defined compilation: COMPILE for non-immediate words and [COMPILE] for immediate words. However some special Forth systems had immediate words which are non-immediate in typical systems: for example cmForth defines @ as an immediate compiler macro. Thus the use of COMPILE and [COMPILE] was not portable to those systems. POSTPONE tries to hide the immediateness of the compiled word, so POSTPONE @ compiles the correct code whether or not @ is immediate. Interesting enough, if you want to emulate POSTPONE on older systems with COMPILE and [COMPILE] you have to deal with the immediateness of the compiled word in order to hide it... Regards, Ulli Am 15.07.2008 um 23:28 schrieb Bernard Mentink: > Thanks Michael, > > I don't understand German but I get the code, I had found the > definition to > tuck elsewhere, I just wanted to check it was correct. > > Also I am still having trouble with the old style forth in the > definition :*perform compile @ compile execute ; > * > Is the solution now to use *: perform postpone @ postpone execute; *?? > > Cheers, > Bernie > > 2008/7/16 Kalus Michael <mic...@on...>: > >> Guten Abend Bernard. >> >> Am 15.07.2008 um 03:03 schrieb Bernard Mentink: >>> .. does anyone >>> have the definition for "tuck" at hand? >> >> : tuck ( w1 w2 – w2 w1 w2 ) \ core-ext "tuck" >> swap over ; >> >> Beispiel aus gforth: >> >> 11 22 .s >> <2> 11 22 ok >> tuck .s >> <3> 22 11 22 ok >> >> 33 44 .s >> <5> 22 11 22 33 44 ok >> swap over .s >> <6> 22 11 22 44 33 44 ok >> >> Tuck ist nützlich wenn es als code definiert ist, weil die >> Kkombiantion SWAP OVER doch häufiger vorkommt. Ist aber nicht sooo >> dringend das zu implementieren, es sei denn du hättest wirklich sehr >> laufzeitkritischen Code hast. >> >> Grüße, Michael >> ------------------------------------------------------------------------- >> This SF.Net email is sponsored by the Moblin Your Move Developer's >> challenge >> Build the coolest Linux based applications with Moblin SDK & win >> great >> prizes >> Grand prize is a trip for two to an Open Source event anywhere in >> the world >> http://moblin-contest.org/redirect.php?banner_id=100&url=/ >> _______________________________________________ >> Amforth-devel mailing list >> Amf...@li... >> https://lists.sourceforge.net/lists/listinfo/amforth-devel >> > ------------------------------------------------------------------------- > This SF.Net email is sponsored by the Moblin Your Move Developer's > challenge > Build the coolest Linux based applications with Moblin SDK & win > great prizes > Grand prize is a trip for two to an Open Source event anywhere in > the world > http://moblin-contest.org/redirect.php?banner_id=100&url=/ > _______________________________________________ > Amforth-devel mailing list > Amf...@li... > https://lists.sourceforge.net/lists/listinfo/amforth-devel |
|
From: Bernard M. <bme...@gm...> - 2008-07-15 23:15:08
|
Thanks Michael, I got the code working. I used *: perform @ execute ;* , did not need the "compile" word. I also had to tweak the code a bit to take care of atmel 16 bit word addressing, but apart from that it works fine. I will post the code to be included in the library, that is if anyone finds writing state machines useful, I personally use them all the time to make code faster and more readable ...... Cheers, Bernie On Wed, Jul 16, 2008 at 10:37 AM, Kalus Michael <mic...@on...> wrote: > Bernhard. > > Am 15.07.2008 um 03:03 schrieb Bernard Mentink: > > > > > Also, in the FSM code he defines a PERFORM word as: .... : PERFORM > > compile > > @ compile execute ; > > Would the same thing in amForth be: .... : PERFORM defer @ defer > > execute ; > > or do we still use "compile"???? I am a bit > > rusty on what "defer" does. > > > > No idea what ist goin on here. > > I found a definition in former F83 for the 6502 cpu: > > : PERFORM ( ADDR -- ) @ EXECUTE ; > > > gforth doc says: > ...execute performs the semantics represented by the > XT (i.e., for XTs produced with ' the interpretation semantics). > > So: ' swap execute simply does SWAP > > To get an execution vector you can store an XT (execution token) into > a variable and PERFORM this variable with the phrase @ EXECUTE > > > > variable dance > > ' hiphop dance ! > ... > perform dance > ... > ' walz dance ! > ... > perform dance > > > Does this help? Michael > > > > ------------------------------------------------------------------------- > This SF.Net email is sponsored by the Moblin Your Move Developer's > challenge > Build the coolest Linux based applications with Moblin SDK & win great > prizes > Grand prize is a trip for two to an Open Source event anywhere in the world > http://moblin-contest.org/redirect.php?banner_id=100&url=/ > _______________________________________________ > Amforth-devel mailing list > Amf...@li... > https://lists.sourceforge.net/lists/listinfo/amforth-devel > |
|
From: Kalus M. <mic...@on...> - 2008-07-15 22:37:07
|
Bernhard. Am 15.07.2008 um 03:03 schrieb Bernard Mentink: > > Also, in the FSM code he defines a PERFORM word as: .... : PERFORM > compile > @ compile execute ; > Would the same thing in amForth be: .... : PERFORM defer @ defer > execute ; > or do we still use "compile"???? I am a bit > rusty on what "defer" does. > No idea what ist goin on here. I found a definition in former F83 for the 6502 cpu: : PERFORM ( ADDR -- ) @ EXECUTE ; gforth doc says: ...execute performs the semantics represented by the XT (i.e., for XTs produced with ’ the interpretation semantics). So: ' swap execute simply does SWAP To get an execution vector you can store an XT (execution token) into a variable and PERFORM this variable with the phrase @ EXECUTE variable dance ' hiphop dance ! ... perform dance ... ' walz dance ! ... perform dance Does this help? Michael |
|
From: Kalus M. <mic...@on...> - 2008-07-15 22:31:17
|
Hi Bernhard. Am 15.07.2008 um 03:03 schrieb Bernard Mentink: > > : FSM: ( width -- ) CREATE , ] > DOES> ( n adr -- ) > TUCK @ mystate @ * + CELLS CELL+ + > ( adr') PERFORM ; > May be you want to post you quesion on usenet: comp.lang.forth Or you may ask Ulrich Hoffman, he is very familiar with those older forths too. Michael |
|
From: Kalus M. <mic...@on...> - 2008-07-15 21:58:36
|
Hi Bernhard. Am 15.07.2008 um 23:28 schrieb Bernard Mentink: > I don't understand German but I get the code, Oh, did not think of it for a moment, Im sorry. >> Tuck ist nützlich wenn es als code definiert ist, weil die >> Kkombiantion SWAP OVER doch häufiger vorkommt. Ist aber nicht sooo >> dringend das zu implementieren, es sei denn du hättest wirklich sehr >> laufzeitkritischen Code hast. So here it is in English: Tuck i useful if you define it in assember code. It then replaces SWAP OVER so your programm runs faster. Only needed if your program has run time critical code around SWAP OVER phrases. Michael |
|
From: Bernard M. <bme...@gm...> - 2008-07-15 21:28:04
|
Thanks Michael, I don't understand German but I get the code, I had found the definition to tuck elsewhere, I just wanted to check it was correct. Also I am still having trouble with the old style forth in the definition :*perform compile @ compile execute ; * Is the solution now to use *: perform postpone @ postpone execute; *?? Cheers, Bernie 2008/7/16 Kalus Michael <mic...@on...>: > Guten Abend Bernard. > > Am 15.07.2008 um 03:03 schrieb Bernard Mentink: > > .. does anyone > > have the definition for "tuck" at hand? > > : tuck ( w1 w2 – w2 w1 w2 ) \ core-ext "tuck" > swap over ; > > Beispiel aus gforth: > > 11 22 .s > <2> 11 22 ok > tuck .s > <3> 22 11 22 ok > > 33 44 .s > <5> 22 11 22 33 44 ok > swap over .s > <6> 22 11 22 44 33 44 ok > > Tuck ist nützlich wenn es als code definiert ist, weil die > Kkombiantion SWAP OVER doch häufiger vorkommt. Ist aber nicht sooo > dringend das zu implementieren, es sei denn du hättest wirklich sehr > laufzeitkritischen Code hast. > > Grüße, Michael > ------------------------------------------------------------------------- > This SF.Net email is sponsored by the Moblin Your Move Developer's > challenge > Build the coolest Linux based applications with Moblin SDK & win great > prizes > Grand prize is a trip for two to an Open Source event anywhere in the world > http://moblin-contest.org/redirect.php?banner_id=100&url=/ > _______________________________________________ > Amforth-devel mailing list > Amf...@li... > https://lists.sourceforge.net/lists/listinfo/amforth-devel > |
|
From: Kalus M. <mic...@on...> - 2008-07-15 21:12:42
|
Guten Abend Bernard. Am 15.07.2008 um 03:03 schrieb Bernard Mentink: > .. does anyone > have the definition for "tuck" at hand? : tuck ( w1 w2 – w2 w1 w2 ) \ core-ext “tuck” swap over ; Beispiel aus gforth: 11 22 .s <2> 11 22 ok tuck .s <3> 22 11 22 ok 33 44 .s <5> 22 11 22 33 44 ok swap over .s <6> 22 11 22 44 33 44 ok Tuck ist nützlich wenn es als code definiert ist, weil die Kkombiantion SWAP OVER doch häufiger vorkommt. Ist aber nicht sooo dringend das zu implementieren, es sei denn du hättest wirklich sehr laufzeitkritischen Code hast. Grüße, Michael |
|
From: Bernard M. <bme...@gm...> - 2008-07-15 01:03:20
|
Hi All,
I am trying to implement some "finite state machine" code from J. Noble. In
his example code from an older Forth standard, he uses the word TUCK
derived from "under" as ..... : TUCK compile under ;
I cannot find the words tuck or under in amForth core words, does anyone
have the definition for "tuck" at hand?
Also, in the FSM code he defines a PERFORM word as: .... : PERFORM compile
@ compile execute ;
Would the same thing in amForth be: .... : PERFORM defer @ defer execute ;
or do we still use "compile"???? I am a bit
rusty on what "defer" does.
And lastly, the FSM code is:
: FSM: ( width -- ) CREATE , ]
DOES> ( n adr -- )
TUCK @ mystate @ * + CELLS CELL+ +
( adr') PERFORM ;
I notice he enters into compile mode with the "]" word just before the
DOES> word, is that necessary to do with the latest CREATE/DOES code?
Thanks in advance ..
Bernie
|
|
From: Alexander G. <ale...@an...> - 2008-07-14 22:29:55
|
Greetings,
First of all, thanks to all of the developers for making amforth available; I've found it extremely useful. I think I've run into a bug related to u*/mod. It's listed as accepting unsigned values, but (as of amforth v2.8) uses m* for multiplication. Shouldn't it be using um*?
--- a/core/words/ustarslashmod.asm
+++ b/core/words/ustarslashmod.asm
@@ -9,7 +9,7 @@ XT_USTARSLASHMOD:
.dw DO_COLON
PFA_USTARSLASHMOD:
.dw XT_TO_R
- .dw XT_MSTAR
+ .dw XT_UMSTAR
.dw XT_R_FROM
.dw XT_UMSLASHMOD
.dw XT_EXIT
Thanks.
Alexander
|
|
From: Matthias T. <mt...@we...> - 2008-06-27 20:42:33
|
-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 avr feedback wrote: > http://dev.emcelettronica.com/why-avrs-eeprom-will-be-erased-randomly > > I think I will explain my problem with this article and move on. =/ That could be the reason why I sometimes (ok, nearly every time) see the turnkey action (output of VER to the serial line) whilest flashing a new image. Not that it ever did any harm to my code/hardware, but it is funny to see it at all.... But: you should get rid of your problems by re-flashing the hexfiles a second time. The content of the EEPROM is than correct and the default turnkey action does not change EEPROM content. Another solution would be to flash the eeprom content ahead of the flash content (simply change the order for the avrdude call in the Makefile). Please let me know, if this works. There are a few more possible work-arounds e.g. changing the addresses in the .eseg area, but it is rather difficult since the addresses are hard coded in the coresponding words/*.asm files. Matthias PS: despite the current problems, I made a new release... -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.6 (GNU/Linux) iD8DBQFIZVC59bEHdGEMFjMRAimwAJ0VHGXKq/FsDZLXOAf9lvCZ/SDPygCgyxno cUIA8xz3moxGrps6yBXqteg= =8e9j -----END PGP SIGNATURE----- |
|
From: avr f. <avr...@gm...> - 2008-06-24 19:52:53
|
http://dev.emcelettronica.com/why-avrs-eeprom-will-be-erased-randomly I think I will explain my problem with this article and move on. =/ On Mon, Jun 23, 2008 at 12:15 AM, avr feedback <avr...@gm...> wrote: > Ok. First. Thanks for your reply. > > On Sun, Jun 22, 2008 at 10:31 PM, Matthias Trute <mt...@we...> wrote: >> btw: do you have a more usual name? > > Mat > >> > 1. Why is my Arduino losing memory after turning it off. >> Well, RAM contents is usually lost when the power goes off ;=) > > ok, What I was trying to say was. It does not answer my usb-serial > connection after some disconnects and reconnects. :> > It always works after a fresh upload. > >> > It could also be >> > that the internal state is damage. >> What do you mean with "internal state"? There are a few candidates >> for this label. > > After power it off and on, 4-5 times strange things happens. > After a while. Some garbage character appear. Then some more > characters. Usually after a power cycle, trying to bring it back to > known state. Then I lose it totally. So my coding session always ends > with uploading amforth again. Which is a pain. My wish was to never > have to upload amforth again. I can replicate this problem. It always > appear when I connect and disconnect with minicom ~4-5 times. > The garbage characters reminds me of the garbage I saw when I first > had the wrong baud rate. > >> > When I try to connect second time. It's not answering or garbage appear in >> > the terminal. I'm using default fuses. With baudrate 9600. >> What default fuses? Atmel factory defaults or arduino default? > > This is working acceptable, but breaks after reconnecting with mincom > (or ZTerm) ~ > 4-5. Like described. > LFUSE=0x5f HFUSE=0xdf EFUSE=0xf9 > >> If Atmel default, try setting the fuses to maximize the frequency >> since 1MHz with the internal oszillator is usually non-working >> setup. If arduino defaults please let us know what they are. > > I'm trying atmel defaults. I lost my arduino defaults. > > (What does "Start up time PWRDN/RESET 64K CK/ 14 CK + 4,1 ms" mean? > This is kind of cryptic to me.) > >> >> My Atmega168 works fine, but is not part of an arduino ... >> >> br >> Matthias > > Are you using usb? I'm starting to think it is the usb-serial driver I > installed initially. > I hope everyone have patience with my knowledge level.(*noob*) =/ > > /Mat > |
|
From: Bernard M. <bme...@gm...> - 2008-06-23 08:16:21
|
Hi All,
Can someone tell me what step I have missed in initializing one of the 16bit
timers to output on PB5?
-------------------------- code snippet ----------------------------------
marker _pwm_
hex
\ Register defines
37 constant DDRB
4a constant OCR1A
4f constant TCCR1A
4e constant TCCR1B
4c constant TCNT1
4b constant ICR1
57 constant TIMSK
\ bit defines
DDRB 5 portpin: PB5
\ Two useful words
\ or! ors value to contents of RAM address
: or! ( n addr -- ) dup c@ rot or swap c! ;
\ high! is like ! but writes high byte first!
: high! ( n addr -- ) over 8 rshift over 1+ c! c! ;
\ init 16 bit timer1
: +pwm ( n -- ) \ takes a starting freq parameter
PB5 high \ Set OC1A/PB5 for output
0 TCCR1B c! \ stop pwm
dup OCR1A high! \ set TOP
1 rshift ICR1 high! \ duty = 50%
81 TCCR1A c! \ set phase & freq correct mode, OCR1A TOP
12 TCCR1B c! \ divide clk by 8, start pwm
;
----------------------------- end code snippet -----------------------------
The LED that is on that pwm output either lights or is off depending on the
parameter fed to +pwm. I cannot get the light to flash, even with higher
pre-scale settings than shown above. (I don't have access to a scope at the
moment to check if anything at all is happening ..)
Thanks,
Bernie
|
|
From: Bernard M. <bme...@gm...> - 2008-06-23 01:42:41
|
Hi All,
I am having a problem getting the A2D subsytem working on the ATmega128. I
have used a modified version of the lcd.frt supplied, but in use I am
getting a number that is the same returned for all channels, and applying a
voltage to the A2D input has no effect (Port F pins).
If I change the scaler parameter for +adc, then I get different numbers, but
still not reading the inputs. Is there somethink else that connects the pins
to the A2D module, I can't see it in the manual, and the example code
doesn't show any extra setup to configure the pins.
I also note that in the "waitadc" word, I had to wait for ADSR to go low,
not wait for ADIF to go high, as in the example code, otherwise that word
would just hang .. also don't know why the original code starts the a2d
convertor twice?
The code is below, so please have a look and let me know if I am doing
anything incorrect ..
Many Thanks,
Bernard.
PS: The other change I made to the original code "butterfly example" was to
remove references to the VCP pin.
-------------------------------------------------------- Code follows
--------------------------------------------------
\ ADC Routines
---------------------------------------------------------------------------------------------
marker _adc_
hex
\ Register defines
26 constant ADCSRA
25 constant ADCH
24 constant ADCL
27 constant ADMUX
ADCSRA 7 portpin: ADEN
ADCSRA 6 portpin: ADSC
\ Init the ADC sub system
: +adc ( scaler channel -- )
ADMUX c! ( -- scaler )
log2 2 max \ lowest 3 bits but at least 2
1 7 lshift or \ msb
ADCSRA c!
;
\ wait until the adc is finished
: waitadc ( -- )
begin
ADCSRA c@
[ hex ] 40 and 0=
until
;
\ fetch the value of the initialized adc channel
: adc@ ( -- adc )
ADEN high ( -- )
ADSC high \ start converter
waitadc ( -- )
0 ( -- 0 )
8 0 do ( -- n )
ADSC high ( -- n )
waitadc ( -- n )
ADCL c@ ADCH c@ 8 lshift + ( -- n adc_i )
+ ( -- n )
loop ( -- n )
3 rshift ( -- adc )
;
|
|
From: avr f. <avr...@gm...> - 2008-06-22 22:15:39
|
Ok. First. Thanks for your reply. On Sun, Jun 22, 2008 at 10:31 PM, Matthias Trute <mt...@we...> wrote: > btw: do you have a more usual name? Mat > > 1. Why is my Arduino losing memory after turning it off. > Well, RAM contents is usually lost when the power goes off ;=) ok, What I was trying to say was. It does not answer my usb-serial connection after some disconnects and reconnects. :> It always works after a fresh upload. > > It could also be > > that the internal state is damage. > What do you mean with "internal state"? There are a few candidates > for this label. After power it off and on, 4-5 times strange things happens. After a while. Some garbage character appear. Then some more characters. Usually after a power cycle, trying to bring it back to known state. Then I lose it totally. So my coding session always ends with uploading amforth again. Which is a pain. My wish was to never have to upload amforth again. I can replicate this problem. It always appear when I connect and disconnect with minicom ~4-5 times. The garbage characters reminds me of the garbage I saw when I first had the wrong baud rate. > > When I try to connect second time. It's not answering or garbage appear in > > the terminal. I'm using default fuses. With baudrate 9600. > What default fuses? Atmel factory defaults or arduino default? This is working acceptable, but breaks after reconnecting with mincom (or ZTerm) ~ 4-5. Like described. LFUSE=0x5f HFUSE=0xdf EFUSE=0xf9 > If Atmel default, try setting the fuses to maximize the frequency > since 1MHz with the internal oszillator is usually non-working > setup. If arduino defaults please let us know what they are. I'm trying atmel defaults. I lost my arduino defaults. (What does "Start up time PWRDN/RESET 64K CK/ 14 CK + 4,1 ms" mean? This is kind of cryptic to me.) > > My Atmega168 works fine, but is not part of an arduino ... > > br > Matthias Are you using usb? I'm starting to think it is the usb-serial driver I installed initially. I hope everyone have patience with my knowledge level.(*noob*) =/ /Mat |
|
From: Matthias T. <mt...@we...> - 2008-06-22 20:31:21
|
-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 avr feedback wrote: btw: do you have a more usual name? > ok. thanks. :)Now I have a harder question. > 1. Why is my Arduino losing memory after turning it off. Well, RAM contents is usually lost when the power goes off ;=) > It could also be > that the internal state is damage. What do you mean with "internal state"? There are a few candidates for this label. > When I try to connect second time. It's not answering or garbage appear in > the terminal. I'm using default fuses. With baudrate 9600. What default fuses? Atmel factory defaults or arduino default? If Atmel default, try setting the fuses to maximize the frequency since 1MHz with the internal oszillator is usually non-working setup. If arduino defaults please let us know what they are. My Atmega168 works fine, but is not part of an arduino ... > > Background: > This forth image is based on the svn repository. > And uses AVRMacPack to compile. That should not do any harm since assembly is way too low level for optimizers and friends. br Matthias -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.6 (GNU/Linux) Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org iD8DBQFIXraa9bEHdGEMFjMRAtJgAKCkL4A82R/INVipZRXuEHyNzhrJSACgkXMK DHB0nwaZamAH2OJIXEtu/5Q= =bx1h -----END PGP SIGNATURE----- |