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: Nathaniel H. <nat...@gm...> - 2009-02-23 03:57:04
|
I'm trying to compile amforth for an atmel168 using ubuntu hardy, amforth trunk, and AvrStudio416 under wine. It fails to compile with this command: "wine ~/avrasm2.exe -I ~/Appnotes/ -I ../../core -e template.hex.eep -l template.hex.lst -m template.hex.map template.asm" The first error was "No newline at the end of noop.asm" and that was easy to fix. These other two errors are more tricky: ../../core\devices/atmega168.asm(2): Including file '/home/hagna/Appnotes/\m168def.inc' ../../core\devices/atmega168.asm(89): error: Use of undefined or forward referenced symbol 'ADCaddr' in .org template.asm(13): info: '../../core\devices/atmega168.asm' included from here template.asm(33): Including file '../../core\amforth.asm' ../../core\amforth.asm(8): error: Overlap in .cseg: addr=0x0 conflicts with 0x0:0x1 template.asm(33): info: '../../core\amforth.asm' included from here The following is the full transcript: wine ~/avrasm2.exe -I ~/Appnotes/ -I ../../core -e template.hex.eep -l template.hex.lst -m template.hex.map template.asm AVRASM: AVR macro assembler 2.1.30 (build 592 Nov 7 2008 12:38:17) Copyright (C) 1995-2008 ATMEL Corporation template.asm(9): Including file '../../core\macros.asm' template.asm(13): Including file '../../core\devices/atmega168.asm' ../../core\devices/atmega168.asm(2): Including file '/home/hagna/Appnotes/\m168def.inc' ../../core\devices/atmega168.asm(89): error: Use of undefined or forward referenced symbol 'ADCaddr' in .org template.asm(13): info: '../../core\devices/atmega168.asm' included from here template.asm(33): Including file '../../core\amforth.asm' ../../core\amforth.asm(8): error: Overlap in .cseg: addr=0x0 conflicts with 0x0:0x1 template.asm(33): info: '../../core\amforth.asm' included from here ../../core\amforth.asm(42): Including file '../../core\drivers/generic-isr.asm' ../../core\amforth.asm(47): Including file '../../core\dict_minimum.inc' ../../core\dict_minimum.inc(2): Including file '../../core\words/f_cpu.asm' ../../core\dict_minimum.inc(3): Including file '../../core\words/state.asm' ../../core\dict_minimum.inc(4): Including file '../../core\words/base.asm' ../../core\dict_minimum.inc(6): Including file '../../core\words/cells.asm' ../../core\dict_minimum.inc(7): Including file '../../core\words/cellplus.asm' ../../core\dict_minimum.inc(9): Including file '../../core\words/g_in.asm' ../../core\dict_minimum.inc(10): Including file '../../core\words/sharptib.asm' ../../core\dict_minimum.inc(11): Including file '../../core\words/tib.asm' ../../core\dict_minimum.inc(12): Including file '../../core\words/tibsize.asm' ../../core\dict_minimum.inc(13): Including file '../../core\words/pad.asm' ../../core\dict_minimum.inc(14): Including file '../../core\words/emit.asm' ../../core\dict_minimum.inc(15): Including file '../../core\words/emitq.asm' ../../core\dict_minimum.inc(16): Including file '../../core\words/key.asm' ../../core\dict_minimum.inc(17): Including file '../../core\words/keyq.asm' ../../core\dict_minimum.inc(18): Including file '../../core\words/slashkey.asm' ../../core\dict_minimum.inc(20): Including file '../../core\words/head.asm' ../../core\dict_minimum.inc(21): Including file '../../core\words/here.asm' ../../core\dict_minimum.inc(22): Including file '../../core\words/allot.asm' ../../core\dict_minimum.inc(24): Including file '../../core\words/docreate.asm' ../../core\dict_minimum.inc(25): Including file '../../core\words/backslash.asm' ../../core\dict_minimum.inc(26): Including file '../../core\words/lparenthesis.asm' ../../core\dict_minimum.inc(28): Including file '../../core\words/compile.asm' ../../core\dict_minimum.inc(29): Including file '../../core\words/comma.asm' ../../core\dict_minimum.inc(30): Including file '../../core\words/brackettick.asm' ../../core\dict_minimum.inc(32): Including file '../../core\words/decimal.asm' ../../core\dict_minimum.inc(33): Including file '../../core\words/hex.asm' ../../core\dict_minimum.inc(34): Including file '../../core\words/bl.asm' ../../core\dict_minimum.inc(35): Including file '../../core\words/edp.asm' ../../core\dict_minimum.inc(36): Including file '../../core\words/heap.asm' ../../core\dict_minimum.inc(37): Including file '../../core\words/turnkey.asm' ../../core\dict_minimum.inc(39): Including file '../../core\words/starslashmod.asm' ../../core\dict_minimum.inc(40): Including file '../../core\words/slashmod.asm' ../../core\dict_minimum.inc(41): Including file '../../core\words/starslash.asm' ../../core\dict_minimum.inc(42): Including file '../../core\words/uslashmod.asm' ../../core\dict_minimum.inc(43): Including file '../../core\words/negate.asm' ../../core\dict_minimum.inc(44): Including file '../../core\words/slash.asm' ../../core\dict_minimum.inc(45): Including file '../../core\words/mod.asm' ../../core\dict_minimum.inc(46): Including file '../../core\words/abs.asm' ../../core\dict_minimum.inc(47): Including file '../../core\words/min.asm' ../../core\dict_minimum.inc(48): Including file '../../core\words/max.asm' ../../core\dict_minimum.inc(49): Including file '../../core\words/within.asm' ../../core\dict_minimum.inc(51): Including file '../../core\words/hld.asm' ../../core\dict_minimum.inc(52): Including file '../../core\words/hold.asm' ../../core\dict_minimum.inc(53): Including file '../../core\words/l_sharp.asm' ../../core\dict_minimum.inc(54): Including file '../../core\words/sharp.asm' ../../core\dict_minimum.inc(55): Including file '../../core\words/sharp_s.asm' ../../core\dict_minimum.inc(56): Including file '../../core\words/sharp_g.asm' ../../core\dict_minimum.inc(57): Including file '../../core\words/sign.asm' ../../core\dict_minimum.inc(58): Including file '../../core\words/ddotr.asm' ../../core\dict_minimum.inc(59): Including file '../../core\words/dotr.asm' ../../core\dict_minimum.inc(60): Including file '../../core\words/ddot.asm' ../../core\dict_minimum.inc(61): Including file '../../core\words/dot.asm' ../../core\dict_minimum.inc(62): Including file '../../core\words/uddot.asm' ../../core\dict_minimum.inc(63): Including file '../../core\words/uddotr.asm' ../../core\dict_minimum.inc(64): Including file '../../core\words/udslashmod.asm' ../../core\dict_minimum.inc(65): Including file '../../core\words/digitq.asm' ../../core\dict_minimum.inc(67): Including file '../../core\words/sliteral.asm' ../../core\dict_minimum.inc(68): Including file '../../core\words/scomma.asm' ../../core\dict_minimum.inc(69): Including file '../../core\words/itype.asm' ../../core\dict_minimum.inc(70): Including file '../../core\words/icount.asm' ../../core\dict_minimum.inc(71): Including file '../../core\words/cr.asm' ../../core\dict_minimum.inc(72): Including file '../../core\words/space.asm' ../../core\dict_minimum.inc(73): Including file '../../core\words/spaces.asm' ../../core\dict_minimum.inc(74): Including file '../../core\words/count.asm' ../../core\dict_minimum.inc(75): Including file '../../core\words/type.asm' ../../core\dict_minimum.inc(76): Including file '../../core\words/tick.asm' ../../core\dict_minimum.inc(78): Including file '../../core\words/handler.asm' ../../core\dict_minimum.inc(79): Including file '../../core\words/catch.asm' ../../core\dict_minimum.inc(80): Including file '../../core\words/throw.asm' ../../core\dict_minimum.inc(82): Including file '../../core\words/char-skip.asm' ../../core\dict_minimum.inc(83): Including file '../../core\words/accept.asm' ../../core\dict_minimum.inc(84): Including file '../../core\words/refill.asm' ../../core\dict_minimum.inc(85): Including file '../../core\words/char.asm' ../../core\dict_minimum.inc(86): Including file '../../core\words/number.asm' ../../core\dict_minimum.inc(87): Including file '../../core\words/parse.asm' ../../core\dict_minimum.inc(88): Including file '../../core\words/char-scan.asm' ../../core\dict_minimum.inc(89): Including file '../../core\words/source.asm' ../../core\dict_minimum.inc(90): Including file '../../core\words/slashstring.asm' ../../core\dict_minimum.inc(92): Including file '../../core\words/word.asm' ../../core\dict_minimum.inc(93): Including file '../../core\words/place.asm' ../../core\dict_minimum.inc(95): Including file '../../core\words/quit.asm' ../../core\dict_minimum.inc(96): Including file '../../core\words/pause.asm' ../../core\dict_minimum.inc(97): Including file '../../core\words/cold.asm' ../../core\dict_minimum.inc(99): Including file '../../core\words/sp0.asm' ../../core\dict_minimum.inc(100): Including file '../../core\words/rp0.asm' ../../core\dict_minimum.inc(101): Including file '../../core\words/depth.asm' ../../core\dict_minimum.inc(102): Including file '../../core\words/interpret.asm' ../../core\dict_minimum.inc(103): Including file '../../core\words/ver.asm' ../../core\dict_minimum.inc(105): Including file '../../core\words/noop.asm' ../../core\dict_minimum.inc(106): Including file '../../core\words/unused.asm' ../../core\dict_minimum.inc(108): Including file '../../core\words/value.asm' ../../core\dict_minimum.inc(109): Including file '../../core\words/to.asm' ../../core\dict_minimum.inc(111): Including file '../../core\words/edefer-fetch.asm' ../../core\dict_minimum.inc(112): Including file '../../core\words/edefer-store.asm' ../../core\dict_minimum.inc(113): Including file '../../core\words/rdefer-fetch.asm' ../../core\dict_minimum.inc(114): Including file '../../core\words/rdefer-store.asm' ../../core\dict_minimum.inc(115): Including file '../../core\words/udefer-fetch.asm' ../../core\dict_minimum.inc(116): Including file '../../core\words/udefer-store.asm' ../../core\dict_minimum.inc(118): Including file '../../core\words/do-defer.asm' ../../core\dict_minimum.inc(119): Including file '../../core\words/find.asm' ../../core\dict_minimum.inc(120): Including file '../../core\words/icompare.asm' ../../core\dict_minimum.inc(121): Including file '../../core\words/defer-store.asm' ../../core\dict_minimum.inc(122): Including file '../../core\words/defer-fetch.asm' ../../core\dict_minimum.inc(124): Including file '../../core\words/star.asm' ../../core\dict_minimum.inc(125): Including file '../../core\words/j.asm' ../../core\dict_minimum.inc(127): Including file '../../core\words/d_to_s.asm' ../../core\dict_minimum.inc(128): Including file '../../core\words/dabs.asm' ../../core\dict_minimum.inc(129): Including file '../../core\words/dnegate.asm' ../../core\dict_minimum.inc(130): Including file '../../core\words/cmove.asm' ../../core\dict_minimum.inc(131): Including file '../../core\words/d-2slash.asm' ../../core\amforth.asm(48): Including file 'dict_appl.inc' dict_appl.inc(4): Including file '../../core\words/d-2star.asm' dict_appl.inc(5): Including file '../../core\words/d-plus.asm' dict_appl.inc(6): Including file '../../core\words/d-minus.asm' dict_appl.inc(7): Including file '../../core\words/d-invert.asm' dict_appl.inc(8): Including file '../../core\words/udot.asm' dict_appl.inc(9): Including file '../../core\words/dot-s.asm' dict_appl.inc(11): Including file '../../core\words/dotstring.asm' dict_appl.inc(12): Including file '../../core\words/squote.asm' dict_appl.inc(14): Including file '../../core\words/words.asm' dict_appl.inc(16): Including file '../../core\words/edefer.asm' dict_appl.inc(17): Including file '../../core\words/rdefer.asm' dict_appl.inc(18): Including file '../../core\words/is.asm' dict_appl.inc(20): Including file '../../core\drivers/usart0.asm' dict_appl.inc(21): Including file '../../core\words/rx0.asm' dict_appl.inc(22): Including file '../../core\words/tx0.asm' dict_appl.inc(23): Including file '../../core\words/usart0.asm' dict_appl.inc(25): Including file 'words/applturnkey.asm' dict_appl.inc(26): Including file '../../core\words/int-store.asm' dict_appl.inc(28): Including file '../../core\dict_compiler.inc' ../../core\dict_compiler.inc(1): Including file '../../core\words/literal.asm' ../../core\dict_compiler.inc(2): Including file '../../core\words/g_mark.asm' ../../core\dict_compiler.inc(3): Including file '../../core\words/g_resolve.asm' ../../core\dict_compiler.inc(4): Including file '../../core\words/l_mark.asm' ../../core\dict_compiler.inc(5): Including file '../../core\words/l_resolve.asm' ../../core\dict_compiler.inc(7): Including file '../../core\words/if.asm' ../../core\dict_compiler.inc(8): Including file '../../core\words/else.asm' ../../core\dict_compiler.inc(9): Including file '../../core\words/then.asm' ../../core\dict_compiler.inc(10): Including file '../../core\words/begin.asm' ../../core\dict_compiler.inc(11): Including file '../../core\words/while.asm' ../../core\dict_compiler.inc(12): Including file '../../core\words/repeat.asm' ../../core\dict_compiler.inc(13): Including file '../../core\words/until.asm' ../../core\dict_compiler.inc(14): Including file '../../core\words/again.asm' ../../core\dict_compiler.inc(15): Including file '../../core\words/do.asm' ../../core\dict_compiler.inc(16): Including file '../../core\words/loop.asm' ../../core\dict_compiler.inc(17): Including file '../../core\words/plusloop.asm' ../../core\dict_compiler.inc(18): Including file '../../core\words/leave.asm' ../../core\dict_compiler.inc(19): Including file '../../core\words/qdo.asm' ../../core\dict_compiler.inc(21): Including file '../../core\words/create.asm' ../../core\dict_compiler.inc(22): Including file '../../core\words/does.asm' ../../core\dict_compiler.inc(23): Including file '../../core\words/colon.asm' ../../core\dict_compiler.inc(24): Including file '../../core\words/colon-noname.asm' ../../core\dict_compiler.inc(25): Including file '../../core\words/semicolon.asm' ../../core\dict_compiler.inc(26): Including file '../../core\words/rightbracket.asm' ../../core\dict_compiler.inc(27): Including file '../../core\words/leftbracket.asm' ../../core\dict_compiler.inc(28): Including file '../../core\words/variable.asm' ../../core\dict_compiler.inc(29): Including file '../../core\words/constant.asm' ../../core\dict_compiler.inc(30): Including file '../../core\words/user.asm' ../../core\dict_compiler.inc(32): Including file '../../core\words/recurse.asm' ../../core\dict_compiler.inc(33): Including file '../../core\words/immediate.asm' ../../core\dict_compiler.inc(35): Including file '../../core\words/bracketchar.asm' ../../core\dict_compiler.inc(36): Including file '../../core\words/abortstring.asm' ../../core\dict_compiler.inc(37): Including file '../../core\words/abort.asm' ../../core\dict_compiler.inc(39): Including file '../../core\words/code.asm' ../../core\dict_compiler.inc(40): Including file '../../core\words/end-code.asm' ../../core\dict_compiler.inc(42): Including file '../../core\words/env-slashhold.asm' ../../core\dict_compiler.inc(43): Including file '../../core\words/environment-q.asm' ../../core\amforth.asm(98): Including file '../../core\dict_core.inc' ../../core\dict_core.inc(3): Including file '../../core\words/int-on.asm' ../../core\dict_core.inc(4): Including file '../../core\words/int-off.asm' ../../core\dict_core.inc(5): Including file '../../core\words/int-restore.asm' ../../core\dict_core.inc(7): Including file '../../core\words/exit.asm' ../../core\dict_core.inc(8): Including file '../../core\words/execute.asm' ../../core\dict_core.inc(9): Including file '../../core\words/dobranch.asm' ../../core\dict_core.inc(10): Including file '../../core\words/docondbranch.asm' ../../core\dict_core.inc(12): Including file '../../core\words/estore.asm' ../../core\dict_core.inc(13): Including file '../../core\words/efetch.asm' ../../core\dict_core.inc(15): Including file '../../core\words/doliteral.asm' ../../core\dict_core.inc(16): Including file '../../core\words/dovariable.asm' ../../core\dict_core.inc(17): Including file '../../core\words/doconstant.asm' ../../core\dict_core.inc(18): Including file '../../core\words/douser.asm' ../../core\dict_core.inc(19): Including file '../../core\words/fetch.asm' ../../core\dict_core.inc(20): Including file '../../core\words/store.asm' ../../core\dict_core.inc(21): Including file '../../core\words/cstore.asm' ../../core\dict_core.inc(22): Including file '../../core\words/cfetch.asm' ../../core\dict_core.inc(24): Including file '../../core\words/dup.asm' ../../core\dict_core.inc(25): Including file '../../core\words/qdup.asm' ../../core\dict_core.inc(26): Including file '../../core\words/swap.asm' ../../core\dict_core.inc(27): Including file '../../core\words/over.asm' ../../core\dict_core.inc(28): Including file '../../core\words/drop.asm' ../../core\dict_core.inc(29): Including file '../../core\words/rot.asm' ../../core\dict_core.inc(32): Including file '../../core\words/r_from.asm' ../../core\dict_core.inc(33): Including file '../../core\words/to_r.asm' ../../core\dict_core.inc(34): Including file '../../core\words/r_fetch.asm' ../../core\dict_core.inc(37): Including file '../../core\words/notequal.asm' ../../core\dict_core.inc(38): Including file '../../core\words/equal.asm' ../../core\dict_core.inc(39): Including file '../../core\words/equalzero.asm' ../../core\dict_core.inc(40): Including file '../../core\words/less.asm' ../../core\dict_core.inc(41): Including file '../../core\words/greater.asm' ../../core\dict_core.inc(42): Including file '../../core\words/lesszero.asm' ../../core\dict_core.inc(43): Including file '../../core\words/zero.asm' ../../core\dict_core.inc(44): Including file '../../core\words/true.asm' ../../core\dict_core.inc(45): Including file '../../core\words/uless.asm' ../../core\dict_core.inc(46): Including file '../../core\words/ugreater.asm' ../../core\dict_core.inc(47): Including file '../../core\words/greaterzero.asm' ../../core\dict_core.inc(48): Including file '../../core\words/d-greater.asm' ../../core\dict_core.inc(49): Including file '../../core\words/d-less.asm' ../../core\dict_core.inc(50): Including file '../../core\words/log2.asm' ../../core\dict_core.inc(51): Including file '../../core\words/minus.asm' ../../core\dict_core.inc(52): Including file '../../core\words/plus.asm' ../../core\dict_core.inc(53): Including file '../../core\words/mstar.asm' ../../core\dict_core.inc(54): Including file '../../core\words/umslashmod.asm' ../../core\dict_core.inc(55): Including file '../../core\words/umstar.asm' ../../core\dict_core.inc(57): Including file '../../core\words/invert.asm' ../../core\dict_core.inc(58): Including file '../../core\words/2slash.asm' ../../core\dict_core.inc(59): Including file '../../core\words/2star.asm' ../../core\dict_core.inc(60): Including file '../../core\words/and.asm' ../../core\dict_core.inc(61): Including file '../../core\words/or.asm' ../../core\dict_core.inc(62): Including file '../../core\words/xor.asm' ../../core\dict_core.inc(64): Including file '../../core\words/1plus.asm' ../../core\dict_core.inc(65): Including file '../../core\words/1minus.asm' ../../core\dict_core.inc(66): Including file '../../core\words/lshift.asm' ../../core\dict_core.inc(67): Including file '../../core\words/rshift.asm' ../../core\dict_core.inc(68): Including file '../../core\words/plusstore.asm' ../../core\dict_core.inc(70): Including file '../../core\words/rpfetch.asm' ../../core\dict_core.inc(71): Including file '../../core\words/rpstore.asm' ../../core\dict_core.inc(72): Including file '../../core\words/spfetch.asm' ../../core\dict_core.inc(73): Including file '../../core\words/spstore.asm' ../../core\dict_core.inc(75): Including file '../../core\words/dodo.asm' ../../core\dict_core.inc(76): Including file '../../core\words/doqdo.asm' ../../core\dict_core.inc(77): Including file '../../core\words/i.asm' ../../core\dict_core.inc(78): Including file '../../core\words/doloop.asm' ../../core\dict_core.inc(79): Including file '../../core\words/doplusloop.asm' ../../core\dict_core.inc(80): Including file '../../core\words/unloop.asm' ../../core\dict_core.inc(83): Including file '../../core\words/ifetch.asm' ../../core\dict_core.inc(84): Including file '../../core\words/istore_nrww.asm' ../../core\dict_core.inc(87): Including file '../../core\words/cmove_g.asm' ../../core\dict_core.inc(88): Including file '../../core\words/byteswap.asm' ../../core\dict_core.inc(89): Including file '../../core\words/up.asm' ../../core\dict_core.inc(90): Including file '../../core\words/s_to_d.asm' ../../core\amforth.asm(99): Including file 'dict_appl_core.inc' Assembly failed, 2 errors, 0 warnings make: *** [template.hex] Error 1 |
From: Kalus M. <mic...@on...> - 2008-12-28 16:04:58
|
HI. Am 28.12.2008 um 15:53 schrieb avr feedback: .. > Arduino Diecimila Ok. But who is "I" ? Michael |
From: avr f. <avr...@gm...> - 2008-12-28 14:53:16
|
Hi, I just got it working and want to share my notes. ----------------- Quickstart: Amforth on Arduino Diecimila --------------------------------------- I recommend using Ubuntu 8.04 or 8.10 for this. If you don't have it. You can install Ubuntu on your computer inside VMWare. 1. Install tools with: "sudo apt-get install subversion wine avra avrdude minicom" 2. Download AVRStudio4 from http://www.atmel.com/dyn/Products/tools_card.asp?tool_id=2725 we need a directory in that installation. Then use Wine to install the exe-file. Needed directory is ~/.wine/drive_c/Program\ Files/Atmel/AVR\ Tools/AvrAssembler/Appnotes. "wine astudio4b623.exe" 3. Checkout Amforth source code from trunk. "svn co https://amforth.svn.sourceforge.net/svnroot/amforth/trunk amforth" Tip #1: Install http://www.arduino.cc/files/arduino-0012-linux.tgz This IDE have a very useful file, that will reveal what parameters avra need to upload the hex file. Look in ~/arduino-0012/hardware/bootloaders/atmega168/Makefile. This file gave me the hint of using "USB=-c stk500v2 -P usb -b 115200" as parameters to avra. I'm AVRISP mkII. Now we have all programs, and all information to compile Amforth. 1. Make copy of ~/amforth/appl/template and use that as a starting point. 2. Remember to adjust the cpu rate with ".equ F_CPU = 16000000" in template.asm 3. Use "sudo make" For a complete change log, look at attached file makefile.diff.txt To communicate with my Amforth on Arduino. I use minicom with these defaults. This is ~/.minicom.dfl ----------8<----------- # Machine-generated file - use setup menu in minicom to change parameters. pu port /dev/ttyUSB0 pu baudrate 9600 pu mini pu rtscts No pu xonxoff Yes ----------8<----------- Now, what's most fascinating about all this. Is that this little cpu, run a language more powerful than anything else I have installed on my regular computer. Happy hacking! And remember, there are no dumb questions. Copy paste friendly quick start ------------------------------------ sudo apt-get install subversion wine avra avrdude minicom firefox http://www.atmel.com/dyn/Products/tools_card.asp?tool_id=2725 wine astudio4b623.exe svn co https://amforth.svn.sourceforge.net/svnroot/amforth/trunk amforth wget http://www.arduino.cc/files/arduino-0012-linux.tgz # (optional) cp -R ~/amforth/appl/template ~/amforth/appl/first cd ~/amforth/appl/first (make changes to template.asm and makefile described in makefile.diff.txt) sudo make |
From: Matthias T. <mt...@we...> - 2008-12-12 19:38:28
|
-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 Ken Staton wrote: > http://staton.us/electronics/remote_IO/code/ftdi_amforth.py Smart tool, and a great idea. May I include it into the source tree? Shame on me: the 0x00 bytes in the patterns are my fault, they should not come accross the line. This is either already repaired or will be repaired RSN. Matthias -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.6 (GNU/Linux) iD8DBQFJQr2u9bEHdGEMFjMRAoUWAKC9CpVLlQJr/7g+7adNqKhGTf3dRwCfdSbh E9ACGqO9qvZtXdo1mFde9So= =/wLy -----END PGP SIGNATURE----- |
From: Ken S. <am...@ih...> - 2008-12-09 05:51:31
|
http://staton.us/electronics/remote_IO/code/ftdi_amforth.py a very terse description of why i wrote my own uploader is here: http://staton.us/electronics/remote_IO/atmega_bit_whacker.html |
From: D N. <dn...@pr...> - 2008-10-21 21:59:42
|
All better now. Thanks! :) |
From: Matthias T. <mt...@we...> - 2008-10-21 07:14:03
|
-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 Hi, > I recently upgraded my win2k from acrobat reader 7 to 9. As a result, > the amforth user's guide no longer displays; I instead get a message > "invalid color space". > > Could someone take a look at this, re-encode the user's guide and > re-post it? Funny to see that adobe does not understand the pdf/a(rchive). Repaired (thanks to OpenOffice.org). Matthias -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.6 (GNU/Linux) iD8DBQFI/YEv9bEHdGEMFjMRAoT4AKDXfQMJTo/IJ/Qb1afADTyPe2K2PwCcDnJE B2anOBIKPbSlN1RToxCK8mk= =OtEa -----END PGP SIGNATURE----- |
From: D N. <dn...@pr...> - 2008-10-21 03:22:24
|
My first attempt to send this got a reply saying "we get spam, so please join the list". I hope this works... I recently upgraded my win2k from acrobat reader 7 to 9. As a result, the amforth user's guide no longer displays; I instead get a message "invalid color space". Could someone take a look at this, re-encode the user's guide and re-post it? Thanks! |
From: Matthias T. <mt...@we...> - 2008-10-03 09:59:08
|
-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 Hi Matt, > Currently just trying to get a simple amforth running on an ATmega8. Will > use a bigger chip in the near future - just want to get this working first. Did you read the User guide? http://amforth.sourceforge.net/amforth-userguide.pdf > I get 3 errors when trying to compile "template.asm" what assembler do you use? > C:\xxx\amforth-2.8_test\core\words/applturnkey.asm(11): error: Undefined In Windows you may use the Atmel Studio itself. Just import the sources, define a project and setup the proper include directory. That's what I do when I compile amforth on windows (once per year or so, I very rarely use the windows OS). > symbol: XT_BAUD0 > symbol: XT_USART0 > symbol: XT_TOUSART0 Make sure that your dict_appl.inc includes the words/baud0.asm and words/usart0.asm files. They define the missing symbols. Matthias -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.6 (GNU/Linux) iD8DBQFI5ezk9bEHdGEMFjMRAj65AJ4/MnuvTUdTzKm6HSOlYLT0Itb77gCgrR2j my1eciyoaq2CTPJKbcCMWhg= =GaYt -----END PGP SIGNATURE----- |
From: Matt E. <mat...@gm...> - 2008-09-30 05:17:45
|
Hi Guys, Currently just trying to get a simple amforth running on an ATmega8. Will use a bigger chip in the near future - just want to get this working first. At this stage have 2.8 (will upgrade after I get this working). I am stuck at the stage of compiling the template.asm in AVR Studio. My assembler skill in combination with AVR studio aren't great (I usually program in C all the time). I get 3 errors when trying to compile "template.asm" C:\xxx\amforth-2.8_test\core\words/applturnkey.asm(11): error: Undefined symbol: XT_BAUD0 C:\xxx\amforth-2.8_test\core\template.asm(49): info: 'C:\xxx\amForth\amforth-2.8_test\core\words/applturnkey.asm' included from here C:\xxx\amforth-2.8_test\core\words/applturnkey.asm(12): error: Undefined symbol: XT_USART0 C:\xxx\amforth-2.8_test\core\template.asm(49): info: 'C:\xxx\amforth-2.8_test\core\words/applturnkey.asm' included from here C:\xxx\amforth-2.8_test\core\words/applturnkey.asm(13): error: Undefined symbol: XT_TOUSART0 C:\xxx\amforth-2.8_test\core\template.asm(49): info: 'C:\xxx\amforth-2.8_test\core\words/applturnkey.asm' included from here I know I am so close to getting this to work. Just want to be able to open the terminal and see amforth running... Please help. Thanks. Matt E |
From: Kalus M. <mic...@on...> - 2008-08-14 20:41:00
|
-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 Hi Dave. maybe this thread is helpfull: http://groups.google.com/group/comp.lang.forth/browse_thread/thread/ 8045e6b5d1043043/8e1084d416820324?lnk=gst&q=ISR# (Search comp.lang.forth for "ISR" - find Elizabeth D. Rather, 26 Jan. 2005, 20:47; "multitasker question": provide multitasker to do interrupt service routines.) The essence is: "In the main multitasker loop, if it goes around fully once with no task active, it sets low power mode. This only takes one instruction, so it's done in the code of the multitasker loop itself, not in any task. The assumption is that an event will generate an interrupt which will wake up the device and then awaken the task responsible for the interrupting device." Michael -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.1 (Darwin) iD8DBQFIpJhEJ3DLQCvSXtcRAnv7AJ0TKu0VH2AMVhKVA6XWyQGTMBr9CgCfclLK eTnOUL3qwXvGafxX6amnYBk= =gjCP -----END PGP SIGNATURE----- |
From: Matthias T. <mt...@we...> - 2008-08-14 08:39:42
|
-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 Dave, > I've been thinking about the problem somewhat, but haven't had time to > code up any alternatives. I did a quick study of a bit vector approach, > where each interrupt maps to a bit in a double cell. While it is quick > and simple to set the bit, I haven't yet found a fast, tight way to > dispatch interrupts off a bit vector in DO_INTERRUPT. That approach work for Atmegas with less than 32 interrupt sources. There are variants with more. Thats why I think that the bitmap is the least better (uhm, well, difficult) way to improve the ISRs. ISRs by nature interrupt at any time. Since the forth inner interpreter is not re-entrant, the handling of the interrupts needs to be synchronized with the DO_NEXT call. In that moment the state of the forth system is well known and needs only a few pointers to be saved/restored. The main task will be therefore to build a way from the asynchronous interrupt to a synchronous forth interrupt. Making the inner interpreter re-entrant is surely possible, but it would need a lot more information to keep (just like a RTOS task or the push/pop giants generated by the gcc). In amforth I tried to avoid such huge (and stupid) things... > Another thought is to simply have ISR return with a RET instead of a > RETI, thus interrupts are still locked out. DO_INTERRUPT would SEI just > before rjmp'ing to DO_EXECUTE. DO_INTERRUPT is already part of the synchronous forth interrupt handling. > And a third idea that I haven't thought about much at all is to > essentially turn 'intcur' into a ring buffer instead of a simple > variable. This should be nearly as quick at dispatching interrupts as > the current scheme and is no fundamental change to the architecture. I > believe this method can preclude nested interrupts, which eliminates a > source of hard to find (hard to sensitize!) interrupt handler bugs. That would indeed solve the problem of lost interrupts. There is only one remaining point (beside coding of course): how long is the buffer? Could be something different (a (return- ?) stack perhaps). It would not solve the problem with the hardware interrupt flags that need to be acknowledged within the "real" interrupt handler (eg the usart flags) however. But it will be definitly better than now. > In any case, I'll need to address interrupts in some way. For my > robotics applications, in addition to timers and serial comms, I want to > track the wheel encoders with a pin change interrupt. These interrupts work similiar to the timer interrupts. They do not need to be acknowledged. I tried them with some push buttons (see the appl/pollin/blocks/hello-world.frt file). Therefore I think, that the major redesign you've outlined at the beginning can still be avoided ;=) > There are 4 of us now in the Homebrew Robotics Club trying out amforth. > It's a very nice fit for our projects. I'm glad (and proud of) to hear. thank you all. Matthias -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.6 (GNU/Linux) iD8DBQFIo+9P9bEHdGEMFjMRAtBzAKDJ7s3vfJtJrb0rqdm1lgfM8GboBACgoFBj fPy25AeihzjZT7tNqDiDJnw= =t3cy -----END PGP SIGNATURE----- |
From: Dave N. <n6...@ar...> - 2008-08-14 06:04:00
|
Matthias Trute wrote: > -----BEGIN PGP SIGNED MESSAGE----- > Hash: SHA1 > > Dave N6NZ schrieb: >> This evening I have been looking at the interrupt system trying to >> understand it. In reading amforth.asm, I see where the current interrupt >> number is stored away in 'intcur' and then interrupts are re-enabled. >> It seems to me that there is a race with multiple simultaneous >> interrupts -- if a second interrupt comes in before the value of >> 'intcur' has been consumed it will be over written and the interrupt >> will have been lost to forth. It seems to me like intcur should be a >> bit mask so that all pending interrupts could be represented, not a >> single interrupt number. Is there something that I am missing? > You hit all points. The interrupt system has been designed to have > access to timer interrupts. Later I extended it to play with other > interrupt sources that sometimes work sometimes dont. To be > honest: I never had the need to implement interrupts beyond the > timers in forth, and now exists an assembler in amforth with > an PS/2 keyboard example so I'm open for suggestions and patches > but not very motivated to implement a new interrupt system myself ;=) OK, thanks for the confirmation of my reading. When digging into a new source code I am always wary of making misguided assumptions. I've been thinking about the problem somewhat, but haven't had time to code up any alternatives. I did a quick study of a bit vector approach, where each interrupt maps to a bit in a double cell. While it is quick and simple to set the bit, I haven't yet found a fast, tight way to dispatch interrupts off a bit vector in DO_INTERRUPT. Another thought is to simply have ISR return with a RET instead of a RETI, thus interrupts are still locked out. DO_INTERRUPT would SEI just before rjmp'ing to DO_EXECUTE. The T but function could be replaced by simply testing the status of the I flag in DO_EXECUTE. Interrupts would be locked out for the duration of the interrupted word, which should be short. This method would require that no other word ever execute an SEI -- a word that needs to lock interrupts needs to deal with the case where interrupts are already disabled -- it would have to save the SREG before any CLI, and then restore the SREG to its previous state instead of doing a blind SEI. This method still allows (as the current method does) nested interrupts. Allowing nested interrupts may not be a good thing. And a third idea that I haven't thought about much at all is to essentially turn 'intcur' into a ring buffer instead of a simple variable. This should be nearly as quick at dispatching interrupts as the current scheme and is no fundamental change to the architecture. I believe this method can preclude nested interrupts, which eliminates a source of hard to find (hard to sensitize!) interrupt handler bugs. In any case, I'll need to address interrupts in some way. For my robotics applications, in addition to timers and serial comms, I want to track the wheel encoders with a pin change interrupt. For now, I will probably write a complete low level pin-change interrupt handler that keeps the encoder counts, and provide forth words to interface to the critical section that contains the counts. In many ways it makes sense to push the robot platform infrastructure down into the forth VM anyway. There are 4 of us now in the Homebrew Robotics Club trying out amforth. It's a very nice fit for our projects. -dave |
From: Matthias T. <mt...@we...> - 2008-08-13 19:17:55
|
-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 Dave N6NZ schrieb: > This evening I have been looking at the interrupt system trying to > understand it. In reading amforth.asm, I see where the current interrupt > number is stored away in 'intcur' and then interrupts are re-enabled. > It seems to me that there is a race with multiple simultaneous > interrupts -- if a second interrupt comes in before the value of > 'intcur' has been consumed it will be over written and the interrupt > will have been lost to forth. It seems to me like intcur should be a > bit mask so that all pending interrupts could be represented, not a > single interrupt number. Is there something that I am missing? You hit all points. The interrupt system has been designed to have access to timer interrupts. Later I extended it to play with other interrupt sources that sometimes work sometimes dont. To be honest: I never had the need to implement interrupts beyond the timers in forth, and now exists an assembler in amforth with an PS/2 keyboard example so I'm open for suggestions and patches but not very motivated to implement a new interrupt system myself ;=) Cheers Matthias -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.6 (GNU/Linux) Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org iD8DBQFIozNu9bEHdGEMFjMRAp1aAJ4sZwhcN8ODxNhknA4oI4Ujh1O71ACdEHeX QCeiNxxDnbnJ8s7jhr3zENM= =FGOu -----END PGP SIGNATURE----- |
From: Dave N. <n6...@ar...> - 2008-08-09 05:56:34
|
Hello, A handful of us in the Silicon Valley Homebrew Robotics club are trying out amforth. We plan to use it in some robotics projects. I have only gotten as far as getting amforth running in a mega168 in my stk500, but so far everything has gone smoothly. I am very impressed so far. My next step is to get some basic motor control and wheel encoder code working. This evening I have been looking at the interrupt system trying to understand it. In reading amforth.asm, I see where the current interrupt number is stored away in 'intcur' and then interrupts are re-enabled. It seems to me that there is a race with multiple simultaneous interrupts -- if a second interrupt comes in before the value of 'intcur' has been consumed it will be over written and the interrupt will have been lost to forth. It seems to me like intcur should be a bit mask so that all pending interrupts could be represented, not a single interrupt number. Is there something that I am missing? Thanks, Dave |
From: Matthias T. <mt...@we...> - 2008-07-27 14:28:27
|
-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 Hi Michael, Kalus Michael wrote: >> HERE, EDP, HEAP and HEAD are now forth VALUEs. > > I object! > > Think twice bevor you go on with this. I did and do think that's a good thing. why? First: code that uses HERE is not portable to amforth at all since HERE (or the information it carries) is and needs to be located in EEPROM. The traditional sequence " ... here @ .. " needs to be rewritten to " .. here e@ .." vs. (new) " .. here .. ". Same work. Second: The new solution needs less code space. A good thing esp on little Atmegas. Third: It simplifies the view on the controller. Now all EEPROM usage is either via Edefer (like turnkey) or VALUE. > HERE gives you an address that is user dependend. If you have an > userarea in amforth, dont make HERE absolute. How is HERE based upon USER? HERE in amforth points to the first free dictionary (flash) cell. All USERs share the same dictionary in the same state, there is no "local" dictionary. > You still will need DP I guess. It should be possible to perform a > task switch with as less variables as possible. Task switches do not worry about HERE. They basically switch user pointer and the stacks. The dictionary is untouched. regarding alloc/free: The use of allocate and free tend to fragment the RAM, so you have to deal with holes and need to combine them if possible. That this is neither easy nor trivial show the countless implementations of malloc for C, each for its own special optimization. It can be done in and for amforth but I doubt that it will be part of the core system. More like the multitasker: a loadable module. The trivial forth allot with negative values to give RAM back to the system is, well, trivial. It has no flexibility but does not need much. > 2) memory allocated from a large pool of unused memory area called > the heap (also called the free store). Since the precise > locationof the allocation is not known in advance, the memory is > accessed indirectly, usually via a reference. I considered this (or a similiar) technique to implement a virtual memory management to make real ANS buffers on systems that do not have enough real RAM. > gforth > > 5.7.3 Heap allocation ... In Gforth, these words are implemented > using the standard C library calls malloc(), free() and resize(). amforth does not have such a comfortable runtime environment. It has to do all by itself. Matthias -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.6 (GNU/Linux) Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org iD8DBQFIjIYL9bEHdGEMFjMRAuRqAJ4mxb+Pl1ElFWc3UyDuEQ6fulNP9ACgioY7 BZmTPJjnEFwWNMdVzasS73M= =I8Ov -----END PGP SIGNATURE----- |
From: Kalus M. <mic...@on...> - 2008-07-27 10:57:35
|
-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 Hi Matthias. > HERE, EDP, HEAP and HEAD are now forth VALUEs. I object! Think twice bevor you go on with this. a) Lets take a look at gforth, which is ANS Forth reference. see dp : dp useraddr <68> @ ; ok see here : here dp @ ; ok HERE gives you an address that is user dependend. If you have an userarea in amforth, dont make HERE absolute. You still will need DP I guess. It should be possible to perform a task switch with as less variables as possible. b) What you had in mind calling the eprom variable HEAP was something like 2) of citation below. Now we want to have standard access to this unuses Ram. You already coded: : PAD ( --add ) HEAP E@ ; : HLD ( --adr ) PAD ; So "heap" is just the name of a pointer in eeprom. This is ok that way. I think it is no good idea to use it as a name for a distinct ram area. So if you want access to an an dedicated ram area, use its name instead, use PAD or HLD. Thats the way it is traditionaly done in forth. May be we should even rename the pointer "heap" to "rampointer" to avoid further confusion about what a heap realy has to be. Now, the standard way to determine the size and location of the rest of unused RAM was named ALLOCATE, FREE and RESIZE (see quotation below). If you do that, you also have to keep track of the use of ram. Maybe you want semaphores holding size and address of ram areas. I dindnt check this. But the idea is: \ ram-semaphor in eeprom indicating use of RAM above PAD and HLD, \ 10 --> adr-of-ram-in-use \ 12 --> size-of-ram-in-use ... (somewhere) pad padsize + 10 e! 0 12 e! ... : allocate ( u -- adr f ) 12 e@ 0= IF 12 e! 10 e@ 0 ELSE 12 e@ THEN ; : free ( adr -- f ) 10 e@ = IF 0 12 e! 0 ELSE 12 e@ THEN ; Since we dont have big ram jet, maybe there is no need to RESIZE an allocated area so far or to allocate mor than one area. Michael <Citations> Maybe you want to take a look at this too: heap is: 1) a specialized tree-based data structure that satisfies the heap property: if B is a child node of A, then key(A) ≥ key(B). http://en.wikipedia.org/wiki/Heap_%28data_structure%29 2) memory allocated from a large pool of unused memory area called the heap (also called the free store). Since the precise location of the allocation is not known in advance, the memory is accessed indirectly, usually via a reference. http://en.wikipedia.org/wiki/Dynamic_memory_allocation gforth 5.7.3 Heap allocation Heap allocation supports deallocation of allocated memory in any order. Dictionary allocation is not affected by it (i.e., it does not end a contiguous region). In Gforth, these words are implemented using the standard C library calls malloc(), free() and resize(). The memory region produced by one invocation of allocate or resize is internally contiguous. There is no contiguity between such a region and any other region (including others allocated from the heap). allocate ( u – a-addr wior ) \ memory “allocate” Allocate u address units of contiguous data space. The initial contents of the data space is undefined. If the allocation is successful, a-addr is the start address of the allocated region and wior is 0. If the allocation fails, a-addr is undefined and wior is a non-zero I/O result code. free ( a-addr – wior ) \ memory “free” Return the region of data space starting at a-addr to the system. The region must originally have been obtained using allocate or resize. If the operational is successful, wior is 0. If the operation fails, wior is a non-zero I/O result code. resize ( a-addr1 u – a-addr2 wior) \ memory “resize” Change the size of the allocated area at a-addr1 to u address units, possibly moving the contents to a different area. a-addr2 is the address of the resulting area. If the operation is successful, wior is 0. If the operation fails, wior is a non-zero I/O result code. If a-addr1 is 0, Gforth’s (but not the Standard) resize allocates u address units. </ciatations> Am 27.07.2008 um 11:35 schrieb Matthias Trute: > -----BEGIN PGP SIGNED MESSAGE----- > Hash: SHA1 > > Bernard Mentink wrote: > >> Sounds great. Bear in mind that the multitask.frt example which >> uses heap, will need to be updated too. I havn't checked for others >> .. > > I hopefully found all. > > Just for the record: HERE, EDP, HEAP and HEAD are now forth VALUEs. > When they are called they give now the current value insted of the > eeprom > address where the value is stored. To change any of them, use the > command > TO ( ... 17 to here ... ). The DP pointer is gone, HERE does its > job now. > > please test now and report ;=) > > Cheers, > Matthias > -----BEGIN PGP SIGNATURE----- > Version: GnuPG v1.4.6 (GNU/Linux) > Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org > > iD8DBQFIjEFo9bEHdGEMFjMRAnaJAJ4uWHOMajeYtVM/J0zWG6gr2VrXpACfVfoh > qqQQAjjLmR78EzdK2nrEymA= > =XLov > -----END PGP SIGNATURE----- > > > ---------------------------------------------------------------------- > --- > 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 -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.1 (Darwin) iD8DBQFIjFSVJ3DLQCvSXtcRAkT2AJsHRMIpOTKXAYxbUAtW0OGSc5QxcACeNKfq LqQ2HzTOKwLFwh5mmMh+45U= =RGRN -----END PGP SIGNATURE----- |
From: Matthias T. <mt...@we...> - 2008-07-27 09:35:35
|
-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 Bernard Mentink wrote: > Sounds great. Bear in mind that the multitask.frt example which > uses heap, will need to be updated too. I havn't checked for others > .. I hopefully found all. Just for the record: HERE, EDP, HEAP and HEAD are now forth VALUEs. When they are called they give now the current value insted of the eeprom address where the value is stored. To change any of them, use the command TO ( ... 17 to here ... ). The DP pointer is gone, HERE does its job now. please test now and report ;=) Cheers, Matthias -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.6 (GNU/Linux) Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org iD8DBQFIjEFo9bEHdGEMFjMRAnaJAJ4uWHOMajeYtVM/J0zWG6gr2VrXpACfVfoh qqQQAjjLmR78EzdK2nrEymA= =XLov -----END PGP SIGNATURE----- |
From: Bernard M. <bme...@gm...> - 2008-07-27 07:57:13
|
Hi Matthias, Sounds great. Bear in mind that the multitask.frt example which uses heap, will need to be updated too. I havn't checked for others .. Cheers, Bernard On Sun, Jul 27, 2008 at 6:43 PM, Matthias Trute <mt...@we...> wrote: > -----BEGIN PGP SIGNED MESSAGE----- > Hash: SHA1 > > Bernard, > Bernard Mentink wrote > > >> please note: heap is not a forth value, it gives only a eeprom > >> cell address. > > > > Hi Matthias, > > > > Shouldn't heap return the address of the top of heap, you can't > > actually use the 4 offset until you use e@ to get the address so it > > should be included in the "heap" word. That would also make it ans > > compatible right? > > HEAP itself is not part of ANS94 / I do not find it there at least. > > Looking at the code that uses HEAP directly, most of them use the > sequence "heap e@" so changing it to a real VALUE should be an > easy task. > > > I realize that if you change "heap" then some words that use heap > > will have to be re-coded .. > > Oh, don't worry too much. "most" code use ALLOT (that is part of ANS). > heap > is pretty much amforth specific. If no-one objects, I'll review most > of the EEPROM > based variables and turn them into real VALUEs. > > : allot heap + to heap ; > > (The sequence could be factored into a word of its own: add-to, , > (comma) has a similiar > code) > > Matthias > -----BEGIN PGP SIGNATURE----- > Version: GnuPG v1.4.6 (GNU/Linux) > Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org > > iD8DBQFIjBko9bEHdGEMFjMRAtwoAJ4sy3AJXIGmDc2Ko/H7Zu/7YphYfwCfWXiB > 2bnBWFDqT7sDzUtjVfK87vo= > =K81d > -----END PGP SIGNATURE----- > > > ------------------------------------------------------------------------- > 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: Matthias T. <mt...@we...> - 2008-07-27 06:43:51
|
-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 Bernard, Bernard Mentink wrote >> please note: heap is not a forth value, it gives only a eeprom >> cell address. > > Hi Matthias, > > Shouldn't heap return the address of the top of heap, you can't > actually use the 4 offset until you use e@ to get the address so it > should be included in the "heap" word. That would also make it ans > compatible right? HEAP itself is not part of ANS94 / I do not find it there at least. Looking at the code that uses HEAP directly, most of them use the sequence "heap e@" so changing it to a real VALUE should be an easy task. > I realize that if you change "heap" then some words that use heap > will have to be re-coded .. Oh, don't worry too much. "most" code use ALLOT (that is part of ANS). heap is pretty much amforth specific. If no-one objects, I'll review most of the EEPROM based variables and turn them into real VALUEs. : allot heap + to heap ; (The sequence could be factored into a word of its own: add-to, , (comma) has a similiar code) Matthias -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.6 (GNU/Linux) Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org iD8DBQFIjBko9bEHdGEMFjMRAtwoAJ4sy3AJXIGmDc2Ko/H7Zu/7YphYfwCfWXiB 2bnBWFDqT7sDzUtjVfK87vo= =K81d -----END PGP SIGNATURE----- |
From: Bernard M. <bme...@gm...> - 2008-07-27 00:42:53
|
>please note: heap is not a forth value, it gives only a eeprom >cell address. Hi Matthias, Shouldn't heap return the address of the top of heap, you can't actually use the 4 offset until you use e@ to get the address so it should be included in the "heap" word. That would also make it ans compatible right? I realize that if you change "heap" then some words that use heap will have to be re-coded .. Cheers, Bernard On Fri, Jul 25, 2008 at 5:21 PM, Matthias Trute <mt...@we...> wrote: > -----BEGIN PGP SIGNED MESSAGE----- > Hash: SHA1 > > Bernard Mentink schrieb: > > > > If this is correct, then should the code line above be : >RAM ( x -- > addr ) > > HEAP e@ 1 CELLS ALLOT TUCK ! ; > > with : tuck swap over ; you are right ;=) > > please note: heap is not a forth value, it gives only a eeprom > cell address. > > Matthias > > -----BEGIN PGP SIGNATURE----- > Version: GnuPG v1.4.6 (GNU/Linux) > Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org > > iD8DBQFIiWLU9bEHdGEMFjMRAqSQAJ9epDtgzM6JaVoVhMLRBombtBpXgACfUxwW > 8wVrcO0fOw15IOJ3sthiwJg= > =EWlX > -----END PGP SIGNATURE----- > > > ------------------------------------------------------------------------- > 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: Matthias T. <mt...@we...> - 2008-07-25 05:21:22
|
-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 Bernard Mentink schrieb: > > If this is correct, then should the code line above be : >RAM ( x -- addr ) > HEAP e@ 1 CELLS ALLOT TUCK ! ; with : tuck swap over ; you are right ;=) please note: heap is not a forth value, it gives only a eeprom cell address. Matthias -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.6 (GNU/Linux) Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org iD8DBQFIiWLU9bEHdGEMFjMRAqSQAJ9epDtgzM6JaVoVhMLRBombtBpXgACfUxwW 8wVrcO0fOw15IOJ3sthiwJg= =EWlX -----END PGP SIGNATURE----- |
From: Bernard M. <bme...@gm...> - 2008-07-24 23:12:38
|
Hi All, I am trying to implement a word that allocates a word on the heap, stores a value in it, and returns it's RAM address. The word is : >RAM ( x -- addr ) HEAP 1 CELLS ALLOT TUCK ! ; The question is regarding amforths implementation of heap and allot. I believe it uses the eeprom to save the address i.e "heap e@" returns the RAM address of the top of heap? If this is correct, then should the code line above be : >RAM ( x -- addr ) HEAP e@ 1 CELLS ALLOT TUCK ! ; Thanks, Bernard Mentink |
From: Bernard M. <bme...@gm...> - 2008-07-24 22:30:27
|
thanks for that, Bernie On Fri, Jul 25, 2008 at 6:35 AM, Matthias Trute <mt...@we...> wrote: > -----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). > > A little amendment: changing the value most probably confuses the > system. in words/refill.asm the default value of 80 is hardcoded (3rd > code line). Change the 80 to TIBSIZE and the configuration settings > will be honored. It is fixed in the repository, but the trunk code > has another change with TIB and SOURCE that is not yet finished (it > works but is ugly and does not all that's intended). > > Matthias > > -----BEGIN PGP SIGNATURE----- > Version: GnuPG v1.4.6 (GNU/Linux) > > iD8DBQFIiMuK9bEHdGEMFjMRAg9jAKDKtflVexyAU+RBLWCCY/FKD6lWPQCgzheq > fC/lYRwOJ9PkoT6+kuwM1ic= > =Oo+/ > -----END PGP SIGNATURE----- > > ------------------------------------------------------------------------- > 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: Matthias T. <mt...@we...> - 2008-07-24 18:35:53
|
-----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). A little amendment: changing the value most probably confuses the system. in words/refill.asm the default value of 80 is hardcoded (3rd code line). Change the 80 to TIBSIZE and the configuration settings will be honored. It is fixed in the repository, but the trunk code has another change with TIB and SOURCE that is not yet finished (it works but is ugly and does not all that's intended). Matthias -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.6 (GNU/Linux) iD8DBQFIiMuK9bEHdGEMFjMRAg9jAKDKtflVexyAU+RBLWCCY/FKD6lWPQCgzheq fC/lYRwOJ9PkoT6+kuwM1ic= =Oo+/ -----END PGP SIGNATURE----- |