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: <ha...@hu...> - 2007-04-02 14:21:50
|
Joh, if you meant to write 1/100s (10 ms), using Timer0 will work just fine! I had no problems running it at higher speeds, too, with my interrupt handler written in Forth. -Hans 2007/4/2, joe...@t-... <joe...@t-...>: > Hi Matthias, > > what is your proposal to generate a (1/100us) clock (for e.g. the output > of a bit pattern ) in amforth? (as you wrote, the timer int. isn't > usable for such speed) > What speed can I expect when I use the word pause? Is there a guarantee > how often the word > is called per ms? Because the pulses should come in a certain time > distance. > > Best regards > joh > > > -----Original Message----- > > Date: Sun, 01 Apr 2007 11:06:59 +0200 > > Subject: [Amforth-devel] benchmarks ;=) > > From: Matthias Trute > > To: Everything around amforth > > > -----BEGIN PGP SIGNED MESSAGE----- > > Hash: SHA1 > > > > Hi, > > > > I just run a stupid benchmark with the fib word from the blocks > > directory. 24 fib gives the biggest usable number (46368) on amforth. > > > > Running a loop with 100 iterations took roughly 3'30 on an atmega32 at > > 16MHz. The sparring partner I choose is gforth (0.6.2, comes with > > ubuntu) on my 2GHz P4 system. To balance the frequency difference, > > gforth had to run 125 times the 100 loop. That took around 1'30. > > > > What does it tell us? Well, nothing perhaps. Or that amforth executes > > 1 forth "instruction" where gforth has 2, scaled with cpu cycle clock. > > > > Matthias > > -----BEGIN PGP SIGNATURE----- > > Version: GnuPG v1.4.3 (GNU/Linux) > > > > iD8DBQFGD3YzLo3irIddFw4RAibBAKDBc2whzaOQcV33T4GpkI/H0/PGiwCgoSrq > > HLmj7z4xtPYDCrQ9bl0Ps8Q= > > =RK8F > > -----END PGP SIGNATURE----- > > > > > ------------------------------------------------------------------------- > > Take Surveys. Earn Cash. Influence the Future of IT > > Join SourceForge.net's Techsay panel and you'll get the chance to > > share your opinions on IT & business topics through brief surveys-and > > earn cash > > > http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV > > _______________________________________________ > > Amforth-devel mailing list > > Amf...@li... > > https://lists.sourceforge.net/lists/listinfo/amforth-devel > > > > > > > > > ------------------------------------------------------------------------- > Take Surveys. Earn Cash. Influence the Future of IT > Join SourceForge.net's Techsay panel and you'll get the chance to share your > opinions on IT & business topics through brief surveys-and earn cash > http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV > _______________________________________________ > Amforth-devel mailing list > Amf...@li... > https://lists.sourceforge.net/lists/listinfo/amforth-devel > |
From: <joe...@t-...> - 2007-04-02 14:17:17
|
Hi Matthias, what is your proposal to generate a (1/100us) clock (for e.g. the output of a bit pattern ) in amforth? (as you wrote, the timer int. isn't usable for such speed) What speed can I expect when I use the word pause? Is there a guarantee how often the word is called per ms? Because the pulses should come in a certain time distance. Best regards joh -----Original Message----- > Date: Sun, 01 Apr 2007 11:06:59 +0200 > Subject: [Amforth-devel] benchmarks ;=) > From: Matthias Trute > To: Everything around amforth > -----BEGIN PGP SIGNED MESSAGE----- > Hash: SHA1 > > Hi, > > I just run a stupid benchmark with the fib word from the blocks > directory. 24 fib gives the biggest usable number (46368) on amforth. > > Running a loop with 100 iterations took roughly 3'30 on an atmega32 at > 16MHz. The sparring partner I choose is gforth (0.6.2, comes with > ubuntu) on my 2GHz P4 system. To balance the frequency difference, > gforth had to run 125 times the 100 loop. That took around 1'30. > > What does it tell us? Well, nothing perhaps. Or that amforth executes > 1 forth "instruction" where gforth has 2, scaled with cpu cycle clock. > > Matthias > -----BEGIN PGP SIGNATURE----- > Version: GnuPG v1.4.3 (GNU/Linux) > > iD8DBQFGD3YzLo3irIddFw4RAibBAKDBc2whzaOQcV33T4GpkI/H0/PGiwCgoSrq > HLmj7z4xtPYDCrQ9bl0Ps8Q= > =RK8F > -----END PGP SIGNATURE----- > > ------------------------------------------------------------------------- > Take Surveys. Earn Cash. Influence the Future of IT > Join SourceForge.net's Techsay panel and you'll get the chance to > share your opinions on IT & business topics through brief surveys-and > earn cash > http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV > _______________________________________________ > Amforth-devel mailing list > Amf...@li... > https://lists.sourceforge.net/lists/listinfo/amforth-devel > > |
From: Matthias T. <mt...@we...> - 2007-04-01 09:07:12
|
-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 Hi, I just run a stupid benchmark with the fib word from the blocks directory. 24 fib gives the biggest usable number (46368) on amforth. Running a loop with 100 iterations took roughly 3'30 on an atmega32 at 16MHz. The sparring partner I choose is gforth (0.6.2, comes with ubuntu) on my 2GHz P4 system. To balance the frequency difference, gforth had to run 125 times the 100 loop. That took around 1'30. What does it tell us? Well, nothing perhaps. Or that amforth executes 1 forth "instruction" where gforth has 2, scaled with cpu cycle clock. Matthias -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.3 (GNU/Linux) iD8DBQFGD3YzLo3irIddFw4RAibBAKDBc2whzaOQcV33T4GpkI/H0/PGiwCgoSrq HLmj7z4xtPYDCrQ9bl0Ps8Q= =RK8F -----END PGP SIGNATURE----- |
From: Matthias T. <mt...@we...> - 2007-03-30 18:12:43
|
-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 Hi, some IMHO ugly hacks with conditional compiling should eliminate the need of editing source files if switching between linux/mac avra and windows avrasm2.exe (avr Studio). At least the atmega169 (butterfly) and the atmega32 work fine for me. The atmega8 still needs some work regarding the missing jmp instruction (no, a stupid macro does not work). Please do _not_ ask, why .if defined(symbol) .else ; a lot of aliases .endif instead of a more obvious .ifndef symbol.... The optional dictionary is now included on a per-target basis depending on the value of the dict_optional symbol. 0 means do not include, 1 means include it into the lower part (rww section) and 2 means include it into the nrww section of the dictionary. The "bigger" atmegas have enough free space in nrww to keep it there, the smaller ones are simply too small... Please keep in mind that the optional words may be full of errors, since they are not very well tested. Esp. endianess is probably an issue. Have fun Matthias -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.3 (GNU/Linux) iD8DBQFGDVMTLo3irIddFw4RAm6GAJ0cKeDcYw6HRs8oWR5Xdp7fzxxIKwCgmjWh 9DKG3EARR1fTR/m1t1pxJ0Y= =eIF1 -----END PGP SIGNATURE----- |
From: <joe...@t-...> - 2007-03-30 08:19:35
|
Hi pix, -----Original Message----- > Date: Thu, 29 Mar 2007 01:28:25 +0200 > Subject: Re: amforth-upload.py > From: pix > To: "joe...@t-..." > this is probably a dumb question, but does communication normally work > in programs like minicom? my program is assuming that the tty is > already set up with the right speed etc (running minicom will normally > do that for you). > > have you tried uploading a very small, simple file, with perhaps just > a simple definition, rather than a huge file? if you could do this and > send me the file and the result of trying to upload it, that would be > more helpful. > > eg: > > : inc 1 + ; > I appendet the output: of : /usr/bin/python2.3 amforth-upload.py -v blocks/pytest.frt > output.txt because it's long (stays in a loop...) I interrupted after waiting 10s by hitting ^C. The terminal output was: joh@laptop:~/amforth/amforth-1.6$ /usr/bin/python2.3 amforth-upload.py -v blocks/pytest.frt > output.txt processing blocks/pytest.frt sending line: : inc 1 + ; ((thats it)) ((after pressing ^C)) Traceback (most recent call last): File "amforth-upload.py", line 187, in ? main(sys.argv[1:]) File "amforth-upload.py", line 181, in main write_file_flow(in_file,tty_dev) File "amforth-upload.py", line 120, in write_file_flow write_line_flow(line,dest) File "amforth-upload.py", line 55, in write_line_flow i = dest.read(1) KeyboardInterrupt joh@laptop:~/amforth/amforth-1.6$ (minicom was not started, sending by the send.txt script (which was proposed by Matthias) works) greetings joh |
From: Kalus M. <mic...@on...> - 2007-03-28 22:39:09
|
hi. H=E4tte noch jemand lust die kommentare in der Quelle mal mit =20 durchzusehen? Z.B.: unused legt die noch freien flash cells auf den stack, praktisch. : unused ( -- n ) nrww here - ; \ nrww =3D 1C00 f=FCr ATmega169 Der stackkommentar in unused.asm (amforth 1.6) sollte das dann auch =20 so wiedergeben. michael= |
From: Matthias T. <mt...@we...> - 2007-03-18 16:00:52
|
-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 Hans H=FCbner schrieb: > Hi, >=20 > I found that r2-r5 are not unused, as > indicated on the web page oops. corrected. Thanks alot Matthias -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.3 (GNU/Linux) iD8DBQFF/WIqLo3irIddFw4RAhABAJsHpF00pitAWlndpSXetC95qtqoQwCgnh6O /JIZALOKDA8tnhGQBmT00Fk=3D =3De3r1 -----END PGP SIGNATURE----- |
From: <ha...@hu...> - 2007-03-18 09:25:10
|
Hi, I am currently working on a LED matrix driver that will be written in assembler and called from amforth. I need a few registers to keep track of the driver state, and I found that r2-r5 are not unused, as indicated on the web page (http://amforth.sourceforge.net/registerusage.php): .def zerol = r2 .def zeroh = r3 .def upl = r4 .def uph = r5 It'd be good if that could be updated. Thanks, Hans |
From: Marcel D. <mde...@my...> - 2007-03-17 20:54:52
|
Hi Windows users, here is how to assemble amForth 1.3 - 1.5 with Atmel's AVRStudio under Windows! Since I own a evaluation board with an atmega32, all the following hints refer to this controller and its related source files. They should be usable to the other controllers too, by replacing 'mega32' files with 'megaxx' where applicable. As for the moment I have not tested any of them. To build amForth create a new project in AVRStudio, perform the following steps: Select menu item: Project - New Project In the upcoming wizard, select: - Project type: Atmel AVR Assembler - Project name: amForth15 (or whatever you like) - Deselect option: Create initial file - Choose Location: Browse to the path of the amForth source files - Click: NEXT - Select Debug platform: AVR Simulator - Select Device: ATMega32 (or else the target controller you use) - Click: FINISH. AVRStudio creates the new project. In the left pane, right click on the "Sourcefiles" folder, select "Add Files" and select "p16.asm" (or else the main source file for your controller). AVRStudio inserts this file into the Sourcefiles list. Open it with a double click and change the settings for CPU clock and baudrate, if necessary (I use 8 MHz and 19200 bps foe example). Assemble by clicking on the "Assemble" button on the toolbar, or by hitting F7. Assembling the original source files with AVRASM2 in Atmel AvrStudio 4.12 yields the following errors: (numbered 1. to 5.). (You can open the respective source files by double-clicking the error lines. AVRStudio opens the corresponding source file in its editor.) 1. Invalid redifinition of 'RWWSRE' in atmega32.asm (line 16) 2. Invalid redifinition of 'UDR0' in atmega32.asm (line 22) These values are defined in m32def.inc in the first place (file comes with AVRStudio); Resolved by commenting out line 16 in atmega32.asm, by commenting out line 22 in atmega32.asm and by replacing UDR0 with UDR in atmega32.asm and usart.asm source files. (m32def.inc is a system file and must not be altered). Note: A fix should replace UDR0 in atmega32.asm with a new definition (e.g. UDR_0) or replace UDR0 with UDR in amForth sources. References to UDR0 are in: atmega8.asm atmega16.asm atmega32.asm atmega168.frt usart.asm I replaced UDR0 by UDR (24feb07, ok vor amforth 1.3 - 1.5)! 3. Undefined label TWSIaddr in atmega32.asm (line 68) Resolved by changing TWSIaddr into TWIaddr in line 68 4. Overlapping of object code in cseg in usart.asm (line 10) 5. Overlapping of object code in cseg in usart.asm (line 12) Atmels assembler does not accept multiple code sequences for the same address range (imho doing this is bad practice anyway). Resolved by commenting out several lines in usart.asm (lines 6..14) like this: /* .set pc_ = pc .org URXCaddr rjmp usart0_rx_isr .org UDREaddr rjmp usart0_udre_isr .org pc_ */ and by modifying interrupt vectors in atmega32.asm: .org URXCaddr ; USART Receive Complete Interrupt Vector Address rjmp usart0_rx_isr .org UDREaddr ; USART Data Register Empty Interrupt Vector Address rjmp usart0_udre_isr I modestly think the interrrupt vectors belong in atmega32.asm anyway (rather than in usart.asm). The resulting code now assembles with no error and runs on my evaluation board. Important note: in AvrStudio you must explicitly save any changed files before a new build! Corrections above yield the following values (e.a.): EQU URXCaddr 0000001a EQU UDREaddr 0000001c EQU RWWSRE 00000004 EQU UDR 0000000c EQU UDR0 00000000 ; These values seem to be correct. Any feedback welcome! md 24feb07, 17mar07 -- derri |
From: Matthias T. <mt...@we...> - 2007-03-16 13:37:43
|
-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 Hi, I've made a small tool to generate some html from the assembly code. The result against the svn trunk can be read at amforth.sf.net/words. What does it do? It scans all the assembly files and creates a html file for every definition found. This includes most of the "hidden" words too. If a given word looks like from a colon defintion the tokens are reverse compiled to there name and a link to them is generated. This does not very well work for branches however. Please ignore the last exit too. General formatting is, well, not very nice... The last step is a list, by which other words the current word is used. Have fun with it Matthias -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.3 (GNU/Linux) iD8DBQFF+p2XLo3irIddFw4RAmE+AKDNMcPhNy61mB4jEqUIWatuLLZOpwCdGlau DC7W6OBp7AN77+58mr0CbpQ= =fKSC -----END PGP SIGNATURE----- |
From: Ulrich H. <uh...@xl...> - 2007-03-15 23:56:02
|
Hi Joh, amforth's <# # #> do not work with double cell numbers but only with single cell numbers. gforth's work with double cell numbers. So for gforth you either define \ gforth : u.r ( u w -- ) >r 0 <# #s #> r> over - 0 max spaces type ; 5 10 u.r 5 ok or you use the original definition with double precision numbers: \ gforth : ud.r ( d w -- ) >r <# #s #> r> over - 0 max spaces type ; 5. 10 ud.r 5 ok amforth slightly diverges from Standard Forth behavior here. Regards, Ulli Am Mar 15, 2007 um 11:38 PM schrieb joe...@t-...: > > -----Original Message----- >> Date: Thu, 15 Mar 2007 20:34:08 +0100 >> Subject: Re: [Amforth-devel] formated output >> From: Ulrich Hoffmann >> To: Everything around amforth > >>> Is there a possibility in amforth or do I have to make it all >>> by myself (with <# # #> ....) >> >> Hi, >> for right adjusted number output you often find the words .r or u.r >> as in: >> >> \ amforth >> : spaces ( u -- ) ?dup if 0 do space loop then ; >> >> : u.r ( u w -- ) >>> r <# #s #> r> over - 0 max spaces type ; > > That leads to a stack underflow (as tested in gforth) > > >> w specifies the width of the field, where the number is >> displayed right aligned, like this: >> >>> 100 12 u.r >> 100 ok >>> 10 12 u.r >> 10 ok >>> 1 12 u.r >> 1 ok >>> >> > > Thanks for your ideas. > Greetings > joh > > > > ----------------------------------------------------------------------- > -- > Take Surveys. Earn Cash. Influence the Future of IT > Join SourceForge.net's Techsay panel and you'll get the chance to > share your > opinions on IT & business topics through brief surveys-and earn cash > http://www.techsay.com/default.php? > page=join.php&p=sourceforge&CID=DEVDEV > _______________________________________________ > Amforth-devel mailing list > Amf...@li... > https://lists.sourceforge.net/lists/listinfo/amforth-devel > |
From: <joe...@t-...> - 2007-03-15 22:39:03
|
-----Original Message----- > Date: Thu, 15 Mar 2007 20:34:08 +0100 > Subject: Re: [Amforth-devel] formated output > From: Ulrich Hoffmann > To: Everything around amforth > > Is there a possibility in amforth or do I have to make it all > > by myself (with <# # #> ....) > > Hi, > for right adjusted number output you often find the words .r or u.r > as in: > > \ amforth > : spaces ( u -- ) ?dup if 0 do space loop then ; > > : u.r ( u w -- ) > > r <# #s #> r> over - 0 max spaces type ; That leads to a stack underflow (as tested in gforth) > w specifies the width of the field, where the number is > displayed right aligned, like this: > > > 100 12 u.r > 100 ok > > 10 12 u.r > 10 ok > > 1 12 u.r > 1 ok > > > Thanks for your ideas. Greetings joh |
From: <joe...@t-...> - 2007-03-15 22:32:33
|
Hi all, -----Original Message----- > Date: Thu, 15 Mar 2007 17:05:49 +0100 > Subject: Re: [Amforth-devel] formated output > From: Matthias Trute > To: Everything around amforth > emit sends a single character only. Probably you mean . (dot). > This uses the free number format which indeed does not provide > a field width. Yes (dot) was the thing I struggle with. Emit only for the right side of the dump - the ASCII print. > > > Is there a possibility in amforth or do I have to make it all > > by myself (with <# # #> ....) > > What's wrong with " : my. hex <# # # # # #> type" ? should work, I'll try it this weekend. Thank you joh |
From: Ulrich H. <uh...@xl...> - 2007-03-15 19:34:18
|
> Is there a possibility in amforth or do I have to make it all > by myself (with <# # #> ....) Hi, for right adjusted number output you often find the words .r or u.r as in: \ amforth : spaces ( u -- ) ?dup if 0 do space loop then ; : u.r ( u w -- ) >r <# #s #> r> over - 0 max spaces type ; w specifies the width of the field, where the number is displayed right aligned, like this: > 100 12 u.r 100 ok > 10 12 u.r 10 ok > 1 12 u.r 1 ok > Regards, Ulli |
From: Matthias T. <mt...@we...> - 2007-03-15 16:06:14
|
-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 Joerg, > fact that we have not the possibility to EMIT all the numbers > with equal amounts of decimals... emit sends a single character only. Probably you mean . (dot). This uses the free number format which indeed does not provide a field width. > Is there a possibility in amforth or do I have to make it all > by myself (with <# # #> ....) What's wrong with " : my. hex <# # # # # #> type" ? Matthias -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.3 (GNU/Linux) iD8DBQFF+W7dLo3irIddFw4RAjsqAJ9GRKdeaJPHBap/w+piiCvQOT0CnQCfTq7H FDWDJU7hn0Iy7rEouUwKdkY= =6DKV -----END PGP SIGNATURE----- |
From: <joe...@t-...> - 2007-03-15 08:49:03
|
Hi all, I wrote a word dump, to look around in the memory (s). Unfortunately the output is not column by column due the fact that we have not the possibility to EMIT all the numbers with equal amounts of decimals... Is there a possibility in amforth or do I have to make it all by myself (with <# # #> ....) greetings joh |
From: Matthias T. <mt...@we...> - 2007-03-14 07:56:50
|
-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 Hans, Hans H=FCbner schrieb: >=20 > will LEAVE be implemented? will: yes. when: sometimes.... leave has the problem that it will need more work in [+]loop to resolve the (possibly many) jump references it causes. > Or is there a different way to leave a > loop in amforth? not directly. Matthias -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.3 (GNU/Linux) iD8DBQFF96q5Lo3irIddFw4RAgydAJsGDXKqR2oHZkv1K+wH+MrLpM/6KACgqYqc X1dyfyyTdYnzgwDxHL/MLqU=3D =3DONdP -----END PGP SIGNATURE----- |
From: <ha...@hu...> - 2007-03-14 05:55:26
|
Hi, will LEAVE be implemented? Or is there a different way to leave a loop in amforth? -Hans |
From: Matthias T. <mt...@we...> - 2007-03-13 20:07:29
|
-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 Hi Hans, Hans H=FCbner schrieb: > Am 13.03.07 schrieb Hans H=FCbner <ha...@hu...>: >> For fun, I have connected a four digit 7 segment display to my >> ATMEGA32 running at 16 Mhz. The display is multiplexed in two pairs, >> so I need to refresh fast enough to get a stable display. To do so, I >> use TIMER0 with the overflow interrupt mapped to vector three. I >> prescale the timer by 256, thus my interrupt handler is called at >> about 240 Hz. It just works. Also, I have observed no anomalies >> working in immediate mode while my display refresh was active, so I >> could still compile works. What a gas! Great stuff :) >=20 > Just an observation: While compiling, the display flickers. It seems > that IRQs are being disabled during flash programming, which is a good > thing. This is really a good news. In my tests the controller always freezes when the flash gets written. I should re-do the tests... Thanks+Bye Matthias -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.3 (GNU/Linux) iD8DBQFF9wR5Lo3irIddFw4RAn0AAJ4n9ysiK35Hr5tRC3/lanaG05PRRwCZAX6E PDMTYIEDg/N43uA/0bI2Cnc=3D =3DJSRh -----END PGP SIGNATURE----- |
From: <ha...@hu...> - 2007-03-13 19:55:10
|
Am 13.03.07 schrieb Hans H=FCbner <ha...@hu...>: > For fun, I have connected a four digit 7 segment display to my > ATMEGA32 running at 16 Mhz. The display is multiplexed in two pairs, > so I need to refresh fast enough to get a stable display. To do so, I > use TIMER0 with the overflow interrupt mapped to vector three. I > prescale the timer by 256, thus my interrupt handler is called at > about 240 Hz. It just works. Also, I have observed no anomalies > working in immediate mode while my display refresh was active, so I > could still compile works. What a gas! Great stuff :) Just an observation: While compiling, the display flickers. It seems that IRQs are being disabled during flash programming, which is a good thing. Other than that, the timer driven refresh code has now been running for several hours without a hitch. -Hans |
From: <ha...@hu...> - 2007-03-13 17:52:12
|
2007/3/13, Matthias Trute <mt...@we...>: > Hans H=FCbner wrote: > > Also, on the home page under Bugs, "Using timer interrupt may cause > > strange effects." is mentioned. I would like to use a timer to > > refresh my multiplexed LED display, can you let me know what the > > "strange effects" are? > > If the frequency is too high (say 100Hz on a 16MHz controller) the > controller stops responding. And regardless of the frequency you are not > able to use the flash write operation i! and all words using it. I have > no idea why it happens... For fun, I have connected a four digit 7 segment display to my ATMEGA32 running at 16 Mhz. The display is multiplexed in two pairs, so I need to refresh fast enough to get a stable display. To do so, I use TIMER0 with the overflow interrupt mapped to vector three. I prescale the timer by 256, thus my interrupt handler is called at about 240 Hz. It just works. Also, I have observed no anomalies working in immediate mode while my display refresh was active, so I could still compile works. What a gas! Great stuff :) -Hans If anyone's interested: I had to patch devices/atmega32.asm: .org=09OVF0addr ; Overflow0 Interrupt Vector Address rjmp int3_isr \ Ansteuerung der vierstelligen 7-Segment-Anzeige \ Port A =3D> 1. und 3. Stelle \ Port B =3D> 2. und 4. Stelle \ Port C =3D> Bit 0: 1. und 2. Stelle ausw=E4hlen \ Bit 1: 3. und 4. Stelle ausw=E4hlen \ Bit 1 und 3 d=FCrfen nicht gleichzeitig auf 1 gesetzt werden! decimal \ Tabelle f=FCr die Umsetzung von Ziffern in Bits f=FCr die 7-Segment-Anzei= ge create 7seg-digit-map 63 invert , 6 invert , 91 invert , 79 invert , 102 invert , 109 invert , 125 invert , 7 invert , 127 invert , 111 invert , \ Umrechnen einer Ziffer in Bits f=FCr die 7-Segment-Anzeige : 7seg-digit ( n -- m ) 7seg-digit-map 1+ + i@ ; \ Variable f=FCr die aktuell angezeigten Display-Bits 0 variable display 3 allot \ Eine Zahl ins Display-Register schreiben : set-display ( n -- ) 4 0 do 10 /mod loop drop 7seg-digit display 3 + c! 7seg-digit display 2 + c! 7seg-digit display 1 + c! 7seg-digit display c! ; \ Initialisieren der Schnittstelle zum Display : init-display \ Erst mal die Bits so einstellen, da=DF alle LEDs aus sind 255 PORTA c! 255 PORTB c! 0 PORTC c! \ Jetzt die Datenrichtungsregister setzen, so da=DF die entsprechenden Bits alle \ als Ausgang konfiguriert sind. 255 DDRA c! 255 DDRB c! 7 DDRC c! ; \ Aktuell aktive Display-H=E4lfte 0 variable field \ Wechseln der Display-H=E4lfte und anzeigen der passenden Ziffern. Jedes \ Mal, wenn das Wort refresh-display aufgerufen wird, wird wird das Display \ umgeschaltet. Wenn man refresh-display schnell genug hintereinander aufr= uft, \ ergibt sich ein stehendes Bild. : refresh-display ( -- ) 0 PORTC c! field c@ dup if display c@ PORTA c! display 1 + c@ PORTB c! 2 PORTC c! else display 2 + c@ PORTA c! display 3 + c@ PORTB c! 1 PORTC c! then not field c! ; \ Demo f=FCr refresh-display : refresh-display-demo ( -- ) begin refresh-display 1ms key? until key drop ; \ Anzeige aller vier Ziffern im Hintergrund. Die Umschaltung erfolgt \ durch den Timer-Interrupt. : start-display ( -- ) init-display 0 set-display ['] refresh-display 3 intvector ! \ Timer clock =3D> sysclk / 256 4 TCCR0 c! \ Timer0 einschalten 1 TIMSK c! ; : count ( -- ) 10000 0 do i set-display 1ms loop ; |
From: <ha...@hu...> - 2007-03-13 07:23:52
|
2007/3/13, Hans H=FCbner <ha...@hu...>: > On the web page, it is descibed that > > ' mypause 'pause ! > > sets the pause hook to the word mypause. That works just fine from > immediate mode, but not from within another word. How would I achieve > the same thing from within another word? I checked the ANS specification (http://www.taygeta.com/forth/dpans.htm) and found the answer myself, ['] in a word definition does what ' does in immediate mode, so my code now reads : start-display ( -- ) init-display 0 set-display ['] refresh-display 'pause ! ; -Hans |
From: <ha...@hu...> - 2007-03-13 06:56:50
|
Hi Matthias, I have a forth and an amforth question: On the web page, it is descibed that ' mypause 'pause ! sets the pause hook to the word mypause. That works just fine from immediate mode, but not from within another word. How would I achieve the same thing from within another word? Also, on the home page under Bugs, "Using timer interrupt may cause strange effects." is mentioned. I would like to use a timer to refresh my multiplexed LED display, can you let me know what the "strange effects" are? I love amforth! Being able to iteratively develop on the AVR is so much fun! Thanks! Hans |
From: <ha...@hu...> - 2007-03-12 08:33:02
|
2007/3/12, Matthias Trute <mt...@we...>: > > I need to create a lookup table in Flash which will be used to > > translate decimal digits to 7 segment display digits. > > > > In a RAM-based forth, I could write something like > > > > table constant -2 allot Oops, I guess I really meant to write 0 constant table -2 allot > a quick solution would be > > > create table > ok > > 1 , 2 , 3 , 4 , 5 , 6 , > ok > > 1 table + i@ . > 1 ok > > 2 table + i@ . > 2 ok > > 6 table + i@ . > 6 ok So your example creates an array with indices starting at 1 instead of 0, but that will do. Thanks a lot! -Hans |
From: Matthias T. <mt...@we...> - 2007-03-12 07:58:20
|
-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 Hans, > I need to create a lookup table in Flash which will be used to > translate decimal digits to 7 segment display digits. >=20 > In a RAM-based forth, I could write something like >=20 > table constant -2 allot > 63 , 6 , 91 , 79 , 102 , 109 , 125 , 7 , 127 , 111 , >=20 > This would (as far as I understand) a base pointer table that pointed > to the 63, with the other values following. Your code initializes a constant named -2 with the value the word table leaves (or your base value is at least char T). After that it will allocate an unknown amount of space in RAM and finally compiles the values into the dictionary > How would I do this with amforth? As far as I can read from the > source code, allot acts on the heap (RAM) pointer. Is there something > equivalent to allot that acts on the current dictionary pointer? You have to set the dp manually (with e@ and e!) > I would be willing to waste one byte for each entry in the table and us= e > 16 bits for each, but i=B4d like to easily access the base pointer of > the table. a quick solution would be > create table ok > 1 , 2 , 3 , 4 , 5 , 6 , ok > 1 table + i@ . 1 ok > 2 table + i@ . 2 ok > 6 table + i@ . 6 ok > Bye Matthias -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.3 (GNU/Linux) iD8DBQFF9QgVLo3irIddFw4RAg7LAKCRsRMkSPkQPUhc20tbS6TDhj9OvgCgvAO7 +AdlHdBspr32EXMw7NRXYBs=3D =3Dikw9 -----END PGP SIGNATURE----- |