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: Erich W. <ew....@na...> - 2020-08-27 19:50:28
|
Hello all, Martin B. found out that the content of the download.zip files is different from the content of the svn checkout. For example ./doc/Makefile is not present. However, the zip file has more files alltogether: $ find releases/6.8 -type f | wc -l 2389 $ find ./amforth-6.8 -type f | wc -l # from download-6.8.zip 2537 So the content is different somehow. Anyone have any insight/ideas? This seems to be an item for the upcoming AmForth weekend, /me thinks ... Cheers, Erich -- May the Forth be with you ... |
|
From: Brian <bkn...@gm...> - 2020-08-16 12:27:16
|
I'm using a butterfly (atmega169) with the latest version, runs great. Brian-in-ohio On 8/16/20 4:49 AM, Malte Frank Gerdes wrote: > Okay, i see. I'll use a bigger controller then. > > > Malte > > > _______________________________________________ > Amforth-devel mailing list for http://amforth.sf.net/ > Amf...@li... > https://lists.sourceforge.net/lists/listinfo/amforth-devel |
|
From: Malte F. G. <mal...@gm...> - 2020-08-16 08:50:09
|
Okay, i see. I'll use a bigger controller then. Malte |
|
From: Tristan W. <ho...@tj...> - 2020-08-15 07:42:46
|
Hi, > Does that mean that it is practically impossible to use amforth on an > atmega8? I would say yes. The ATmega8 has 8K of flash memory. My AmForth 6.8 ATmega328p hex needs ~10K of flash memory. It might be possible to remove words from the current distribution/build so that it would fit into 8K, but then there would be very little flash memory remaining to do anything with. >From a search of the mailing list, 2.7 was the latest version I saw reported as running on an ATmega8. Kind regards, Tristan On 14Aug20 18:33, Malte Frank Gerdes wrote: > Reading the mailing list archive it seems that those errors happen and > most of the time it's difficult to know where they come from. I found > that it is possible to ignore those Overlaps with -O i. Now i get > different errors which at least make sense to me. > > > ../../avr8\macros.asm(94): error: jmp k: Unsupported instruction on ATmega8 > ../../avr8\macros.asm(94): error: jmp k: Unsupported instruction on ATmega8 > ../../avr8\macros.asm(94): error: jmp k: Unsupported instruction on ATmega8 > ../../avr8\macros.asm(94): error: jmp k: Unsupported instruction on ATmega8 > ../../avr8\macros.asm(94): error: jmp k: Unsupported instruction on ATmega8 > ../../avr8\macros.asm(94): error: jmp k: Unsupported instruction on ATmega8 > ../../avr8\macros.asm(94): error: jmp k: Unsupported instruction on ATmega8 > ../../avr8\macros.asm(94): error: jmp k: Unsupported instruction on ATmega8 > ../../avr8\macros.asm(94): error: jmp k: Unsupported instruction on ATmega8 > ../../avr8\macros.asm(94): error: jmp k: Unsupported instruction on ATmega8 > ../../avr8\macros.asm(94): error: jmp k: Unsupported instruction on ATmega8 > ../../avr8\macros.asm(94): error: jmp k: Unsupported instruction on ATmega8 > ../../avr8\macros.asm(94): error: jmp k: Unsupported instruction on ATmega8 > ../../avr8\macros.asm(94): error: jmp k: Unsupported instruction on ATmega8 > ../../avr8\macros.asm(94): error: jmp k: Unsupported instruction on ATmega8 > ../../avr8\macros.asm(94): error: jmp k: Unsupported instruction on ATmega8 > ../../avr8\macros.asm(94): error: jmp k: Unsupported instruction on ATmega8 > ../../avr8\macros.asm(101): error: call k: Unsupported instruction on ATmega8 > ../../avr8\macros.asm(94): error: jmp k: Unsupported instruction on ATmega8 > ../../avr8\amforth.asm(19): error: RWW Segment Overflow, please edit your dict_appl.inc > ../../avr8\macros.asm(101): error: call k: Unsupported instruction on ATmega8 > ../../avr8\words/d-lesszero.asm(14): error: jmp k: Unsupported instruction on ATmega8 > ../../avr8\words/d-lesszero.asm(15): error: jmp k: Unsupported instruction on ATmega8 > > > Looking at the svn history this macro was introduced in 2011, the 4.2 > release at least builds for the atmega8 when the trailing zeroes are > removed from the usart definitions in template.asm. Even then the > resulting resource usage is 118% of available flash memory. > > The dict_appl.inc file used is empty, so i'm not sure what to modify > there, because as i understand it this file is meant to include extra > words. > > Does that mean that it is practically impossible to use amforth on an > atmega8? If not, are there some example projects using it (i haven't > found any)? > > > Malte > > > _______________________________________________ > Amforth-devel mailing list for http://amforth.sf.net/ > Amf...@li... > https://lists.sourceforge.net/lists/listinfo/amforth-devel > |
|
From: Malte F. G. <mal...@gm...> - 2020-08-14 16:34:08
|
Reading the mailing list archive it seems that those errors happen and most of the time it's difficult to know where they come from. I found that it is possible to ignore those Overlaps with -O i. Now i get different errors which at least make sense to me. ../../avr8\macros.asm(94): error: jmp k: Unsupported instruction on ATmega8 ../../avr8\macros.asm(94): error: jmp k: Unsupported instruction on ATmega8 ../../avr8\macros.asm(94): error: jmp k: Unsupported instruction on ATmega8 ../../avr8\macros.asm(94): error: jmp k: Unsupported instruction on ATmega8 ../../avr8\macros.asm(94): error: jmp k: Unsupported instruction on ATmega8 ../../avr8\macros.asm(94): error: jmp k: Unsupported instruction on ATmega8 ../../avr8\macros.asm(94): error: jmp k: Unsupported instruction on ATmega8 ../../avr8\macros.asm(94): error: jmp k: Unsupported instruction on ATmega8 ../../avr8\macros.asm(94): error: jmp k: Unsupported instruction on ATmega8 ../../avr8\macros.asm(94): error: jmp k: Unsupported instruction on ATmega8 ../../avr8\macros.asm(94): error: jmp k: Unsupported instruction on ATmega8 ../../avr8\macros.asm(94): error: jmp k: Unsupported instruction on ATmega8 ../../avr8\macros.asm(94): error: jmp k: Unsupported instruction on ATmega8 ../../avr8\macros.asm(94): error: jmp k: Unsupported instruction on ATmega8 ../../avr8\macros.asm(94): error: jmp k: Unsupported instruction on ATmega8 ../../avr8\macros.asm(94): error: jmp k: Unsupported instruction on ATmega8 ../../avr8\macros.asm(94): error: jmp k: Unsupported instruction on ATmega8 ../../avr8\macros.asm(101): error: call k: Unsupported instruction on ATmega8 ../../avr8\macros.asm(94): error: jmp k: Unsupported instruction on ATmega8 ../../avr8\amforth.asm(19): error: RWW Segment Overflow, please edit your dict_appl.inc ../../avr8\macros.asm(101): error: call k: Unsupported instruction on ATmega8 ../../avr8\words/d-lesszero.asm(14): error: jmp k: Unsupported instruction on ATmega8 ../../avr8\words/d-lesszero.asm(15): error: jmp k: Unsupported instruction on ATmega8 Looking at the svn history this macro was introduced in 2011, the 4.2 release at least builds for the atmega8 when the trailing zeroes are removed from the usart definitions in template.asm. Even then the resulting resource usage is 118% of available flash memory. The dict_appl.inc file used is empty, so i'm not sure what to modify there, because as i understand it this file is meant to include extra words. Does that mean that it is practically impossible to use amforth on an atmega8? If not, are there some example projects using it (i haven't found any)? Malte |
|
From: Malte F. G. <mal...@gm...> - 2020-08-14 12:55:49
|
[Sorry for double posting the question i didn't know that it gets sent automtically after subscribing to the list :(] Thanks for the info, i completely ignored the warnings and didn't search for it, because of the errors. So with your suggestion the warnings are gone, but the Overlap errors are still the same. Malte |
|
From: Martin N. <amf...@mg...> - 2020-08-14 12:33:29
|
In template.asm, a better bet might be: > ; define which usart to use. > .include "drivers/usart.asm" See also: http://amforth.sourceforge.net/TG/recipes/Usart.html On Fri, 14 Aug 2020 13:17:13 +0200 Malte Frank Gerdes <mal...@gm...> wrote: > Hi, > > this is the first time i'm using amforth. I followed > http://amforth.sourceforge.net/UG/linux.html to get amforth and tried > to build the template.hex file for an atmega8. I also tried a > snapshot of r2450, which has the same error. The template.lst file > contains this: > > AVRASM ver. 2.1.52 template.asm Fri Aug 14 13:00:33 2020 > > template.asm(14): Including file '../../avr8\preamble.inc' > ../../avr8\preamble.inc(2): Including file '../../avr8\macros.asm' > ../../avr8\macros.asm(6): Including file '../../avr8\user.inc' > ../../avr8\preamble.inc(6): Including file > '../../avr8/devices/atmega8\device.asm' > ../../avr8/devices/atmega8\device.asm(5): Including file > '../../avr8/Atmel/Appnotes2\m8def.inc' template.asm(53): Including > file '../../avr8\drivers/usart_0.asm' -- Regards, Martin Nicholas. E-mail: mg...@mg.... |
|
From: Malte F. G. <mal...@gm...> - 2020-08-14 11:17:25
|
Hi, this is the first time i'm using amforth. I followed http://amforth.sourceforge.net/UG/linux.html to get amforth and tried to build the template.hex file for an atmega8. I also tried a snapshot of r2450, which has the same error. The template.lst file contains this: AVRASM ver. 2.1.52 template.asm Fri Aug 14 13:00:33 2020 template.asm(14): Including file '../../avr8\preamble.inc' ../../avr8\preamble.inc(2): Including file '../../avr8\macros.asm' ../../avr8\macros.asm(6): Including file '../../avr8\user.inc' ../../avr8\preamble.inc(6): Including file '../../avr8/devices/atmega8\device.asm' ../../avr8/devices/atmega8\device.asm(5): Including file '../../avr8/Atmel/Appnotes2\m8def.inc' template.asm(53): Including file '../../avr8\drivers/usart_0.asm' ../../avr8\drivers/usart_0.asm(1): warning: Use of undefined or forward referenced symbol 'UBRR0L' in .equ/.set ../../avr8\drivers/usart_0.asm(2): warning: Use of undefined or forward referenced symbol 'UBRR0H' in .equ/.set ../../avr8\drivers/usart_0.asm(3): warning: Use of undefined or forward referenced symbol 'UCSR0C' in .equ/.set ../../avr8\drivers/usart_0.asm(4): warning: Use of undefined or forward referenced symbol 'UCSR0B' in .equ/.set ../../avr8\drivers/usart_0.asm(5): warning: Use of undefined or forward referenced symbol 'UCSR0A' in .equ/.set ../../avr8\drivers/usart_0.asm(12): warning: Use of undefined or forward referenced symbol 'RXC0' in .equ/.set ../../avr8\drivers/usart_0.asm(13): warning: Use of undefined or forward referenced symbol 'UDRE0' in .equ/.set ../../avr8\drivers/usart_0.asm(14): warning: Use of undefined or forward referenced symbol 'TXEN0' in .equ/.set ../../avr8\drivers/usart_0.asm(15): warning: Use of undefined or forward referenced symbol 'RXEN0' in .equ/.set ../../avr8\drivers/usart_0.asm(16): warning: Use of undefined or forward referenced symbol 'RXCIE0' in .equ/.set ../../avr8\drivers/usart_0.asm(17): warning: Use of undefined or forward referenced symbol 'UDRIE0' in .equ/.set ../../avr8\drivers/usart_0.asm(32): Including file '../../avr8\drivers/usart_common.asm' ../../avr8\drivers/usart_common.asm(11): Including file '../../avr8\drivers/usart-rx-buffer.asm' ../../avr8\drivers/usart_common.asm(24): Including file '../../avr8\words/usart-tx-poll.asm' ../../avr8\drivers/usart_common.asm(29): Including file '../../avr8\words/ubrr.asm' ../../avr8\drivers/usart_common.asm(30): Including file '../../avr8\words/usart.asm' template.asm(124): Including file '../../avr8\amforth.asm' ../../avr8\amforth.asm(12): Including file '../../avr8\drivers/generic-isr.asm' ../../avr8\amforth.asm(14): Including file '../../avr8\dict/rww.inc' ../../avr8\dict/rww.inc(1): Including file '../../avr8\words/mplus.asm' ../../avr8\dict/rww.inc(2): Including file '../../common\words/ud-star.asm' ../../avr8\dict/rww.inc(3): Including file '../../common\words/umax.asm' ../../avr8\dict/rww.inc(4): Including file '../../common\words/umin.asm' ../../avr8\dict/rww.inc(5): Including file '../../avr8\words/immediate-q.asm' ../../avr8\dict/rww.inc(6): Including file '../../avr8\words/name2flags.asm' ../../avr8\dict/rww.inc(7): Including file '../../avr8\words/1ms.asm' ../../avr8\dict/rww.inc(14): Including file '../../avr8\dict/appl_2k.inc' ../../avr8\dict/appl_2k.inc(1): Including file '../../avr8\words/d-2star.asm' ../../avr8\dict/appl_2k.inc(2): Including file '../../avr8\words/d-2slash.asm' ../../avr8\dict/appl_2k.inc(3): Including file '../../avr8\words/d-plus.asm' ../../avr8\dict/appl_2k.inc(4): Including file '../../avr8\words/d-minus.asm' ../../avr8\dict/appl_2k.inc(5): Including file '../../avr8\words/d-invert.asm' ../../avr8\dict/appl_2k.inc(6): Including file '../../common\words/u-dot.asm' ../../avr8\dict/appl_2k.inc(7): Including file '../../common\words/u-dot-r.asm' ../../avr8\dict/appl_2k.inc(9): Including file '../../common\words/show-wordlist.asm' ../../avr8\dict/appl_2k.inc(10): Including file '../../common\words/words.asm' ../../avr8\dict/appl_2k.inc(11): Including file '../../avr8\dict/interrupt.inc' ../../avr8\dict/interrupt.inc(5): Including file '../../avr8\words/irqcnt.asm' ../../avr8\dict/interrupt.inc(6): Including file '../../avr8\words/int-num.asm' ../../avr8\dict/interrupt.inc(9): Including file '../../avr8\words/int-on.asm' ../../avr8\dict/interrupt.inc(10): Including file '../../avr8\words/int-off.asm' ../../avr8\dict/interrupt.inc(11): Including file '../../avr8\words/int-store.asm' ../../avr8\dict/interrupt.inc(12): Including file '../../avr8\words/int-fetch.asm' ../../avr8\dict/interrupt.inc(13): Including file '../../avr8\words/int-trap.asm' ../../avr8\dict/interrupt.inc(15): Including file '../../avr8\words/isr-exec.asm' ../../avr8\dict/interrupt.inc(16): Including file '../../avr8\words/isr-end.asm' ../../avr8\dict/appl_2k.inc(13): Including file '../../common\words/pick.asm' ../../avr8\dict/appl_2k.inc(14): Including file '../../common\words/dot-quote.asm' ../../avr8\dict/appl_2k.inc(15): Including file '../../common\words/squote.asm' ../../avr8\dict/appl_2k.inc(17): Including file '../../avr8\words/fill.asm' ../../avr8\dict/appl_2k.inc(18): Including file '../../avr8\dict/compiler1.inc' ../../avr8\dict/compiler1.inc(2): Including file '../../avr8\words/newest.asm' ../../avr8\dict/compiler1.inc(3): Including file '../../avr8\words/latest.asm' ../../avr8\dict/compiler1.inc(4): Including file '../../common\words/do-create.asm' ../../avr8\dict/compiler1.inc(5): Including file '../../common\words/backslash.asm' ../../avr8\dict/compiler1.inc(6): Including file '../../common\words/l-paren.asm' ../../avr8\dict/compiler1.inc(8): Including file '../../common\words/compile.asm' ../../avr8\dict/compiler1.inc(9): Including file '../../avr8\words/comma.asm' ../../avr8\dict/compiler1.inc(10): Including file '../../common\words/brackettick.asm' ../../avr8\dict/compiler1.inc(13): Including file '../../common\words/literal.asm' ../../avr8\dict/compiler1.inc(14): Including file '../../common\words/sliteral.asm' ../../avr8\dict/compiler1.inc(15): Including file '../../avr8\words/g-mark.asm' ../../avr8\dict/compiler1.inc(16): Including file '../../avr8\words/g-resolve.asm' ../../avr8\dict/compiler1.inc(17): Including file '../../avr8\words/l_mark.asm' ../../avr8\dict/compiler1.inc(18): Including file '../../avr8\words/l_resolve.asm' ../../avr8\dict/compiler1.inc(20): Including file '../../common\words/ahead.asm' ../../avr8\dict/compiler1.inc(21): Including file '../../common\words/if.asm' ../../avr8\dict/compiler1.inc(22): Including file '../../common\words/else.asm' ../../avr8\dict/compiler1.inc(23): Including file '../../common\words/then.asm' ../../avr8\dict/compiler1.inc(24): Including file '../../common\words/begin.asm' ../../avr8\dict/compiler1.inc(25): Including file '../../common\words/while.asm' ../../avr8\dict/compiler1.inc(26): Including file '../../common\words/repeat.asm' ../../avr8\dict/compiler1.inc(27): Including file '../../common\words/until.asm' ../../avr8\dict/compiler1.inc(28): Including file '../../common\words/again.asm' ../../avr8\dict/compiler1.inc(29): Including file '../../common\words/do.asm' ../../avr8\dict/compiler1.inc(30): Including file '../../common\words/loop.asm' ../../avr8\dict/compiler1.inc(31): Including file '../../common\words/plusloop.asm' ../../avr8\dict/compiler1.inc(32): Including file '../../common\words/leave.asm' ../../avr8\dict/compiler1.inc(33): Including file '../../common\words/qdo.asm' ../../avr8\dict/compiler1.inc(34): Including file '../../common\words/endloop.asm' ../../avr8\dict/compiler1.inc(36): Including file '../../common\words/l-from.asm' ../../avr8\dict/compiler1.inc(37): Including file '../../common\words/to-l.asm' ../../avr8\dict/compiler1.inc(38): Including file '../../avr8\words/lp0.asm' ../../avr8\dict/compiler1.inc(39): Including file '../../avr8\words/lp.asm' ../../avr8\dict/compiler1.inc(41): Including file '../../common\words/create.asm' ../../avr8\dict/compiler1.inc(42): Including file '../../avr8\words/header.asm' ../../avr8\dict/compiler1.inc(43): Including file '../../avr8\words/wlscope.asm' ../../avr8\dict/compiler1.inc(44): Including file '../../common\words/reveal.asm' ../../avr8\dict/compiler1.inc(45): Including file '../../avr8\words/does.asm' ../../avr8\dict/compiler1.inc(46): Including file '../../common\words/colon.asm' ../../avr8\dict/compiler1.inc(47): Including file '../../avr8\words/colon-noname.asm' ../../avr8\dict/compiler1.inc(48): Including file '../../common\words/semicolon.asm' ../../avr8\dict/compiler1.inc(49): Including file '../../common\words/right-bracket.asm' ../../avr8\dict/compiler1.inc(50): Including file '../../common\words/left-bracket.asm' ../../avr8\dict/compiler1.inc(51): Including file '../../common\words/variable.asm' ../../avr8\dict/compiler1.inc(52): Including file '../../common\words/constant.asm' ../../avr8\dict/compiler1.inc(53): Including file '../../avr8\words/user.asm' ../../avr8\dict/compiler1.inc(55): Including file '../../common\words/recurse.asm' ../../avr8\dict/compiler1.inc(56): Including file '../../avr8\words/immediate.asm' ../../avr8\dict/compiler1.inc(58): Including file '../../common\words/bracketchar.asm' ../../avr8\dict/compiler1.inc(59): Including file '../../common\words/abort-string.asm' ../../avr8\dict/compiler1.inc(60): Including file '../../common\words/abort.asm' ../../avr8\dict/compiler1.inc(61): Including file '../../common\words/q-abort.asm' ../../avr8\dict/compiler1.inc(63): Including file '../../common\words/get-stack.asm' ../../avr8\dict/compiler1.inc(64): Including file '../../common\words/set-stack.asm' ../../avr8\dict/compiler1.inc(65): Including file '../../common\words/map-stack.asm' ../../avr8\dict/compiler1.inc(66): Including file '../../avr8\words/get-current.asm' ../../avr8\dict/compiler1.inc(67): Including file '../../common\words/cfg-order.asm' ../../avr8\dict/compiler1.inc(68): Including file '../../common\words/cfg-recognizer.asm' ../../avr8\dict/compiler1.inc(69): Including file '../../avr8\words/compare.asm' ../../avr8\dict/compiler1.inc(70): Including file '../../avr8\words/nfa2lfa.asm' ../../avr8\dict/appl_2k.inc(20): Including file '../../avr8\words/environment.asm' ../../avr8\dict/appl_2k.inc(21): Including file '../../avr8\words/env-wordlists.asm' ../../avr8\dict/appl_2k.inc(22): Including file '../../avr8\words/env-slashpad.asm' ../../avr8\dict/appl_2k.inc(23): Including file '../../common\words/env-slashhold.asm' ../../avr8\dict/appl_2k.inc(24): Including file '../../common\words/env-forthname.asm' ../../avr8\dict/appl_2k.inc(25): Including file '../../common\words/env-forthversion.asm' ../../avr8\dict/appl_2k.inc(26): Including file '../../common\words/env-cpu.asm' ../../avr8\dict/appl_2k.inc(27): Including file '../../avr8\words/env-mcuinfo.asm' ../../avr8\dict/appl_2k.inc(28): Including file '../../common\words/env-usersize.asm' ../../avr8\dict/appl_2k.inc(30): Including file '../../common\words/f_cpu.asm' ../../avr8\dict/appl_2k.inc(31): Including file '../../avr8\words/state.asm' ../../avr8\dict/appl_2k.inc(32): Including file '../../common\words/base.asm' ../../avr8\dict/appl_2k.inc(34): Including file '../../avr8\words/cells.asm' ../../avr8\dict/appl_2k.inc(35): Including file '../../avr8\words/cellplus.asm' ../../avr8\dict/appl_2k.inc(37): Including file '../../common\words/2dup.asm' ../../avr8\dict/appl_2k.inc(38): Including file '../../common\words/2drop.asm' ../../avr8\dict/appl_2k.inc(40): Including file '../../common\words/tuck.asm' ../../avr8\dict/appl_2k.inc(42): Including file '../../common\words/to-in.asm' ../../avr8\dict/appl_2k.inc(43): Including file '../../common\words/pad.asm' ../../avr8\dict/appl_2k.inc(44): Including file '../../common\words/emit.asm' ../../avr8\dict/appl_2k.inc(45): Including file '../../common\words/emitq.asm' ../../avr8\dict/appl_2k.inc(46): Including file '../../common\words/key.asm' ../../avr8\dict/appl_2k.inc(47): Including file '../../common\words/keyq.asm' ../../avr8\dict/appl_2k.inc(49): Including file '../../avr8\words/dp.asm' ../../avr8\dict/appl_2k.inc(50): Including file '../../avr8\words/ehere.asm' ../../avr8\dict/appl_2k.inc(51): Including file '../../avr8\words/here.asm' ../../avr8\dict/appl_2k.inc(52): Including file '../../avr8\words/allot.asm' ../../avr8\dict/appl_2k.inc(54): Including file '../../common\words/bin.asm' ../../avr8\dict/appl_2k.inc(55): Including file '../../common\words/decimal.asm' ../../avr8\dict/appl_2k.inc(56): Including file '../../common\words/hex.asm' ../../avr8\dict/appl_2k.inc(57): Including file '../../common\words/bl.asm' ../../avr8\dict/appl_2k.inc(59): Including file '../../avr8\words/turnkey.asm' ../../avr8\dict/appl_2k.inc(61): Including file '../../avr8\words/slashmod.asm' ../../avr8\dict/appl_2k.inc(62): Including file '../../avr8\words/uslashmod.asm' ../../avr8\dict/appl_2k.inc(63): Including file '../../avr8\words/negate.asm' ../../avr8\dict/appl_2k.inc(64): Including file '../../common\words/slash.asm' ../../avr8\dict/appl_2k.inc(65): Including file '../../common\words/mod.asm' ../../avr8\dict/appl_2k.inc(66): Including file '../../common\words/abs.asm' ../../avr8\dict/appl_2k.inc(67): Including file '../../common\words/min.asm' ../../avr8\dict/appl_2k.inc(68): Including file '../../common\words/max.asm' ../../avr8\dict/appl_2k.inc(69): Including file '../../common\words/within.asm' ../../avr8\dict/appl_2k.inc(71): Including file '../../common\words/to-upper.asm' ../../avr8\dict/appl_2k.inc(72): Including file '../../common\words/to-lower.asm' ../../avr8\dict/appl_2k.inc(74): Including file '../../avr8\words/hld.asm' ../../avr8\dict/appl_2k.inc(75): Including file '../../common\words/hold.asm' ../../avr8\dict/appl_2k.inc(76): Including file '../../common\words/less-sharp.asm' ../../avr8\dict/appl_2k.inc(77): Including file '../../common\words/sharp.asm' ../../avr8\dict/appl_2k.inc(78): Including file '../../common\words/sharp-s.asm' ../../avr8\dict/appl_2k.inc(79): Including file '../../common\words/sharp-greater.asm' ../../avr8\dict/appl_2k.inc(80): Including file '../../common\words/sign.asm' ../../avr8\dict/appl_2k.inc(81): Including file '../../common\words/d-dot-r.asm' ../../avr8\dict/appl_2k.inc(82): Including file '../../common\words/dot-r.asm' ../../avr8\dict/appl_2k.inc(83): Including file '../../common\words/d-dot.asm' ../../avr8\dict/appl_2k.inc(84): Including file '../../common\words/dot.asm' ../../avr8\dict/appl_2k.inc(85): Including file '../../common\words/ud-dot.asm' ../../avr8\dict/appl_2k.inc(86): Including file '../../common\words/ud-dot-r.asm' ../../avr8\dict/appl_2k.inc(87): Including file '../../common\words/ud-slash-mod.asm' ../../avr8\dict/appl_2k.inc(88): Including file '../../common\words/digit-q.asm' ../../avr8\dict/appl_2k.inc(90): Including file '../../avr8\words/do-sliteral.asm' ../../avr8\dict/appl_2k.inc(91): Including file '../../avr8\words/scomma.asm' ../../avr8\dict/appl_2k.inc(92): Including file '../../avr8\words/itype.asm' ../../avr8\dict/appl_2k.inc(93): Including file '../../avr8\words/icount.asm' ../../avr8\dict/appl_2k.inc(94): Including file '../../common\words/cr.asm' ../../avr8\dict/appl_2k.inc(95): Including file '../../common\words/space.asm' ../../avr8\dict/appl_2k.inc(96): Including file '../../common\words/spaces.asm' ../../avr8\dict/appl_2k.inc(97): Including file '../../common\words/type.asm' ../../avr8\dict/appl_2k.inc(98): Including file '../../common\words/tick.asm' ../../avr8\dict/appl_2k.inc(100): Including file '../../common\words/handler.asm' ../../avr8\dict/appl_2k.inc(101): Including file '../../common\words/catch.asm' ../../avr8\dict/appl_2k.inc(102): Including file '../../common\words/throw.asm' ../../avr8\dict/appl_2k.inc(104): Including file '../../common\words/cskip.asm' ../../avr8\dict/appl_2k.inc(105): Including file '../../common\words/cscan.asm' ../../avr8\dict/appl_2k.inc(106): Including file '../../common\words/accept.asm' ../../avr8\dict/appl_2k.inc(107): Including file '../../common\words/refill.asm' ../../avr8\dict/appl_2k.inc(108): Including file '../../common\words/char.asm' ../../avr8\dict/appl_2k.inc(109): Including file '../../common\words/number.asm' ../../avr8\dict/appl_2k.inc(110): Including file '../../common\words/q-sign.asm' ../../avr8\dict/appl_2k.inc(111): Including file '../../common\words/set-base.asm' ../../avr8\dict/appl_2k.inc(112): Including file '../../common\words/to-number.asm' ../../avr8\dict/appl_2k.inc(113): Including file '../../common\words/parse.asm' ../../avr8\dict/appl_2k.inc(114): Including file '../../common\words/source.asm' ../../avr8\dict/appl_2k.inc(115): Including file '../../common\words/slash-string.asm' ../../avr8\dict/appl_2k.inc(116): Including file '../../common\words/parse-name.asm' ../../avr8\dict/appl_2k.inc(117): Including file '../../common\words/find-xt.asm' ../../avr8\dict/appl_2k.inc(119): Including file '../../common\words/quit.asm' ../../avr8\dict/appl_2k.inc(120): Including file '../../common\words/prompt-ok.asm' ../../avr8\dict/appl_2k.inc(121): Including file '../../common\words/prompt-ready.asm' ../../avr8\dict/appl_2k.inc(122): Including file '../../common\words/prompt-error.asm' ../../avr8\dict/appl_2k.inc(123): Including file '../../common\words/prompt-input.asm' ../../avr8\dict/appl_2k.inc(124): Including file '../../avr8\words/pause.asm' ../../avr8\dict/appl_2k.inc(125): Including file '../../avr8\words/cold.asm' ../../avr8\dict/appl_2k.inc(126): Including file '../../common\words/warm.asm' ../../avr8\dict/appl_2k.inc(128): Including file '../../avr8\words/sp0.asm' ../../avr8\dict/appl_2k.inc(129): Including file '../../avr8\words/rp0.asm' ../../avr8\dict/appl_2k.inc(130): Including file '../../common\words/depth.asm' ../../avr8\dict/appl_2k.inc(131): Including file '../../common\words/recognize.asm' ../../avr8\dict/appl_2k.inc(132): Including file '../../avr8\words/forth-recognizer.asm' ../../avr8\dict/appl_2k.inc(133): Including file '../../common\words/interpret.asm' ../../avr8\dict/appl_2k.inc(134): Including file '../../common\words/rec-intnum.asm' ../../avr8\dict/appl_2k.inc(135): Including file '../../common\words/rec-find.asm' ../../avr8\dict/appl_2k.inc(136): Including file '../../common\words/rec-null.asm' ../../avr8\dict/appl_2k.inc(138): Including file '../../common\words/q-stack.asm' ../../avr8\dict/appl_2k.inc(139): Including file '../../common\words/ver.asm' ../../avr8\dict/appl_2k.inc(141): Including file '../../common\words/noop.asm' ../../avr8\dict/appl_2k.inc(142): Including file '../../avr8\words/unused.asm' ../../avr8\dict/appl_2k.inc(144): Including file '../../common\words/to.asm' ../../avr8\dict/appl_2k.inc(145): Including file '../../avr8\words/i-cellplus.asm' ../../avr8\dict/appl_2k.inc(147): Including file '../../avr8\words/edefer-fetch.asm' ../../avr8\dict/appl_2k.inc(148): Including file '../../avr8\words/edefer-store.asm' ../../avr8\dict/appl_2k.inc(149): Including file '../../common\words/rdefer-fetch.asm' ../../avr8\dict/appl_2k.inc(150): Including file '../../common\words/rdefer-store.asm' ../../avr8\dict/appl_2k.inc(151): Including file '../../common\words/udefer-fetch.asm' ../../avr8\dict/appl_2k.inc(152): Including file '../../common\words/udefer-store.asm' ../../avr8\dict/appl_2k.inc(153): Including file '../../common\words/defer-store.asm' ../../avr8\dict/appl_2k.inc(154): Including file '../../common\words/defer-fetch.asm' ../../avr8\dict/appl_2k.inc(155): Including file '../../avr8\words/do-defer.asm' ../../avr8\dict/appl_2k.inc(157): Including file '../../common\words/search-wordlist.asm' ../../avr8\dict/appl_2k.inc(158): Including file '../../common\words/traverse-wordlist.asm' ../../avr8\dict/appl_2k.inc(159): Including file '../../common\words/name2string.asm' ../../avr8\dict/appl_2k.inc(160): Including file '../../avr8\words/nfa2cfa.asm' ../../avr8\dict/appl_2k.inc(161): Including file '../../avr8\words/icompare.asm' ../../avr8\dict/appl_2k.inc(163): Including file '../../common\words/star.asm' ../../avr8\dict/appl_2k.inc(164): Including file '../../avr8\words/j.asm' ../../avr8\dict/appl_2k.inc(166): Including file '../../avr8\words/dabs.asm' ../../avr8\dict/appl_2k.inc(167): Including file '../../avr8\words/dnegate.asm' ../../avr8\dict/appl_2k.inc(168): Including file '../../avr8\words/cmove.asm' ../../avr8\dict/appl_2k.inc(169): Including file '../../common\words/2swap.asm' ../../avr8\dict/appl_2k.inc(171): Including file '../../common\words/tib.asm' ../../avr8\dict/appl_2k.inc(173): Including file '../../avr8\words/init-ram.asm' ../../avr8\dict/appl_2k.inc(174): Including file '../../common\words/bounds.asm' ../../avr8\dict/appl_2k.inc(175): Including file '../../common\words/s-to-d.asm' ../../avr8\dict/appl_2k.inc(176): Including file '../../avr8\words/to-body.asm' ../../avr8\amforth.asm(15): Including file 'dict_appl.inc' dict_appl.inc(13): Including file '../../avr8\dict/compiler2.inc' ../../avr8\dict/compiler2.inc(8): Including file '../../avr8\words/set-current.asm' ../../avr8\dict/compiler2.inc(9): Including file '../../avr8\words/wordlist.asm' ../../avr8\dict/compiler2.inc(11): Including file '../../avr8\words/forth-wordlist.asm' ../../avr8\dict/compiler2.inc(12): Including file '../../avr8\words/code.asm' ../../avr8\dict/compiler2.inc(13): Including file '../../avr8\words/end-code.asm' ../../avr8\dict/compiler2.inc(14): Including file '../../avr8\words/marker.asm' ../../avr8\dict/compiler2.inc(15): Including file '../../common\words/postpone.asm' dict_appl.inc(16): Including file 'words/applturnkey.asm' dict_appl.inc(21): Including file '../../common\words/dot-s.asm' dict_appl.inc(26): Including file 'words/build-info.asm' dict_appl.inc(31): Including file '../../common\words/place.asm' dict_appl.inc(32): Including file '../../common\words/word.asm' ../../avr8\amforth.asm(23): Including file '../../avr8\amforth-interpreter.asm' ../../avr8\amforth-interpreter.asm(4): error: Overlap in .cseg: addr=0xc00 conflicts with 0xbc:0xe90 ../../avr8\amforth-interpreter.asm(5): error: Overlap in .cseg: addr=0xc01 conflicts with 0xbc:0xe90 ../../avr8\amforth-interpreter.asm(6): error: Overlap in .cseg: addr=0xc02 conflicts with 0xbc:0xe90 ../../avr8\amforth-interpreter.asm(7): error: Overlap in .cseg: addr=0xc03 conflicts with 0xbc:0xe90 ../../avr8\amforth-interpreter.asm(10): error: Overlap in .cseg: addr=0xc04 conflicts with 0xbc:0xe90 ../../avr8\amforth-interpreter.asm(11): error: Overlap in .cseg: addr=0xc05 conflicts with 0xbc:0xe90 ../../avr8\amforth-interpreter.asm(13): error: Overlap in .cseg: addr=0xc06 conflicts with 0xbc:0xe90 ../../avr8/devices/atmega8\device.asm(11): error: Overlap in .cseg: addr=0xc07 conflicts with 0xbc:0xe90 ../../avr8/devices/atmega8\device.asm(12): error: Overlap in .cseg: addr=0xc08 conflicts with 0xbc:0xe90 ../../avr8/devices/atmega8\device.asm(13): error: Overlap in .cseg: addr=0xc09 conflicts with 0xbc:0xe90 ../../avr8/devices/atmega8\device.asm(14): error: Overlap in .cseg: addr=0xc0a conflicts with 0xbc:0xe90 ../../avr8\amforth-interpreter.asm(15): error: Overlap in .cseg: addr=0xc0b conflicts with 0xbc:0xe90 ../../avr8\amforth-interpreter.asm(18): error: Overlap in .cseg: addr=0xc0c conflicts with 0xbc:0xe90 ../../avr8/devices/atmega8\device.asm(11): error: Overlap in .cseg: addr=0xc0d conflicts with 0xbc:0xe90 ../../avr8/devices/atmega8\device.asm(12): error: Overlap in .cseg: addr=0xc0e conflicts with 0xbc:0xe90 ../../avr8/devices/atmega8\device.asm(13): error: Overlap in .cseg: addr=0xc0f conflicts with 0xbc:0xe90 ../../avr8/devices/atmega8\device.asm(14): error: Overlap in .cseg: addr=0xc10 conflicts with 0xbc:0xe90 ../../avr8\amforth-interpreter.asm(20): error: Overlap in .cseg: addr=0xc11 conflicts with 0xbc:0xe90 ../../avr8\amforth-interpreter.asm(21): error: Overlap in .cseg: addr=0xc12 conflicts with 0xbc:0xe90 ../../avr8\macros.asm(45): error: Overlap in .cseg: addr=0xc13 conflicts with 0xbc:0xe90 ../../avr8\macros.asm(46): error: Overlap in .cseg: addr=0xc14 conflicts with 0xbc:0xe90 ../../avr8\amforth-interpreter.asm(27): error: Overlap in .cseg: addr=0xc15 conflicts with 0xbc:0xe90 ../../avr8\amforth-interpreter.asm(28): error: Overlap in .cseg: addr=0xc16 conflicts with 0xbc:0xe90 ../../avr8\amforth-interpreter.asm(29): error: Overlap in .cseg: addr=0xc17 conflicts with 0xbc:0xe90 ../../avr8\amforth-interpreter.asm(30): error: Overlap in .cseg: addr=0xc18 conflicts with 0xbc:0xe90 ../../avr8\amforth-interpreter.asm(31): error: Overlap in .cseg: addr=0xc19 conflicts with 0xbc:0xe90 ../../avr8\amforth-interpreter.asm(32): error: Overlap in .cseg: addr=0xc1a conflicts with 0xbc:0xe90 ../../avr8\amforth.asm(24): Including file '../../avr8\dict/nrww.inc' ../../avr8\dict/nrww.inc(4): Including file '../../avr8\words/exit.asm' ../../avr8\words/exit.asm(5): error: Overlap in .cseg: addr=0xc1b conflicts with 0xbc:0xe90 ../../avr8\words/exit.asm(6): error: Overlap in .cseg: addr=0xc1c conflicts with 0xbc:0xe90 ../../avr8\words/exit.asm(6): error: Overlap in .cseg: addr=0xc1d conflicts with 0xbc:0xe90 ../../avr8\words/exit.asm(7): error: Overlap in .cseg: addr=0xc1e conflicts with 0xbc:0xe90 ../../avr8\words/exit.asm(10): error: Overlap in .cseg: addr=0xc1f conflicts with 0xbc:0xe90 ../../avr8\words/exit.asm(12): error: Overlap in .cseg: addr=0xc20 conflicts with 0xbc:0xe90 ../../avr8\words/exit.asm(13): error: Overlap in .cseg: addr=0xc21 conflicts with 0xbc:0xe90 ../../avr8\macros.asm(91): error: Overlap in .cseg: addr=0xc22 conflicts with 0xbc:0xe90 ../../avr8\dict/nrww.inc(5): Including file '../../avr8\words/execute.asm' ../../avr8\words/execute.asm(5): error: Overlap in .cseg: addr=0xc23 conflicts with 0xbc:0xe90 ../../avr8\words/execute.asm(6): error: Overlap in .cseg: addr=0xc24 conflicts with 0xbc:0xe90 ../../avr8\words/execute.asm(6): error: Overlap in .cseg: addr=0xc25 conflicts with 0xbc:0xe90 ../../avr8\words/execute.asm(6): error: Overlap in .cseg: addr=0xc26 conflicts with 0xbc:0xe90 ../../avr8\words/execute.asm(6): error: Overlap in .cseg: addr=0xc27 conflicts with 0xbc:0xe90 ../../avr8\words/execute.asm(7): error: Overlap in .cseg: addr=0xc28 conflicts with 0xbc:0xe90 ../../avr8\words/execute.asm(10): error: Overlap in .cseg: addr=0xc29 conflicts with 0xbc:0xe90 ../../avr8\words/execute.asm(12): error: Overlap in .cseg: addr=0xc2a conflicts with 0xbc:0xe90 ../../avr8\macros.asm(40): error: Overlap in .cseg: addr=0xc2b conflicts with 0xbc:0xe90 ../../avr8\macros.asm(41): error: Overlap in .cseg: addr=0xc2c conflicts with 0xbc:0xe90 ../../avr8\macros.asm(91): error: Overlap in .cseg: addr=0xc2d conflicts with 0xbc:0xe90 ../../avr8\dict/nrww.inc(6): Including file '../../avr8\words/dobranch.asm' ../../avr8\words/dobranch.asm(10): error: Overlap in .cseg: addr=0xc2e conflicts with 0xbc:0xe90 ../../avr8\words/dobranch.asm(12): error: Overlap in .cseg: addr=0xc2f conflicts with 0xbc:0xe90 ../../avr8/devices/atmega8\device.asm(11): error: Overlap in .cseg: addr=0xc30 conflicts with 0xbc:0xe90 ../../avr8/devices/atmega8\device.asm(12): error: Overlap in .cseg: addr=0xc31 conflicts with 0xbc:0xe90 ../../avr8/devices/atmega8\device.asm(13): error: Overlap in .cseg: addr=0xc32 conflicts with 0xbc:0xe90 ../../avr8/devices/atmega8\device.asm(14): error: Overlap in .cseg: addr=0xc33 conflicts with 0xbc:0xe90 ../../avr8\macros.asm(91): error: Overlap in .cseg: addr=0xc34 conflicts with 0xbc:0xe90 ../../avr8\dict/nrww.inc(7): Including file '../../avr8\words/docondbranch.asm' ../../avr8\words/docondbranch.asm(10): error: Overlap in .cseg: addr=0xc35 conflicts with 0xbc:0xe90 ../../avr8\words/docondbranch.asm(12): error: Overlap in .cseg: addr=0xc36 conflicts with 0xbc:0xe90 ../../avr8\macros.asm(40): error: Overlap in .cseg: addr=0xc37 conflicts with 0xbc:0xe90 ../../avr8\macros.asm(41): error: Overlap in .cseg: addr=0xc38 conflicts with 0xbc:0xe90 ../../avr8\words/docondbranch.asm(14): error: Overlap in .cseg: addr=0xc39 conflicts with 0xbc:0xe90 ../../avr8\words/docondbranch.asm(15): error: Overlap in .cseg: addr=0xc3a conflicts with 0xbc:0xe90 ../../avr8\macros.asm(91): error: Overlap in .cseg: addr=0xc3b conflicts with 0xbc:0xe90 ../../avr8\dict/nrww.inc(10): Including file '../../avr8\words/doliteral.asm' ../../avr8\words/doliteral.asm(10): error: Overlap in .cseg: addr=0xc3c conflicts with 0xbc:0xe90 ../../avr8\macros.asm(45): error: Overlap in .cseg: addr=0xc3d conflicts with 0xbc:0xe90 ../../avr8\macros.asm(46): error: Overlap in .cseg: addr=0xc3e conflicts with 0xbc:0xe90 ../../avr8\words/doliteral.asm(13): error: Overlap in .cseg: addr=0xc3f conflicts with 0xbc:0xe90 ../../avr8/devices/atmega8\device.asm(11): error: Overlap in .cseg: addr=0xc40 conflicts with 0xbc:0xe90 ../../avr8/devices/atmega8\device.asm(12): error: Overlap in .cseg: addr=0xc41 conflicts with 0xbc:0xe90 ../../avr8/devices/atmega8\device.asm(13): error: Overlap in .cseg: addr=0xc42 conflicts with 0xbc:0xe90 ../../avr8/devices/atmega8\device.asm(14): error: Overlap in .cseg: addr=0xc43 conflicts with 0xbc:0xe90 ../../avr8\words/doliteral.asm(15): error: Overlap in .cseg: addr=0xc44 conflicts with 0xbc:0xe90 ../../avr8\macros.asm(91): error: Overlap in .cseg: addr=0xc45 conflicts with 0xbc:0xe90 ../../avr8\dict/nrww.inc(11): Including file '../../avr8\words/dovariable.asm' ../../avr8\words/dovariable.asm(10): error: Overlap in .cseg: addr=0xc46 conflicts with 0xbc:0xe90 ../../avr8\macros.asm(45): error: Overlap in .cseg: addr=0xc47 conflicts with 0xbc:0xe90 ../../avr8\macros.asm(46): error: Overlap in .cseg: addr=0xc48 conflicts with 0xbc:0xe90 ../../avr8\words/dovariable.asm(13): error: Overlap in .cseg: addr=0xc49 conflicts with 0xbc:0xe90 ../../avr8\words/dovariable.asm(14): error: Overlap in .cseg: addr=0xc4a conflicts with 0xbc:0xe90 ../../avr8/devices/atmega8\device.asm(11): error: Overlap in .cseg: addr=0xc4b conflicts with 0xbc:0xe90 ../../avr8/devices/atmega8\device.asm(12): error: Overlap in .cseg: addr=0xc4c conflicts with 0xbc:0xe90 ../../avr8/devices/atmega8\device.asm(13): error: Overlap in .cseg: addr=0xc4d conflicts with 0xbc:0xe90 ../../avr8/devices/atmega8\device.asm(14): error: Overlap in .cseg: addr=0xc4e conflicts with 0xbc:0xe90 ../../avr8\macros.asm(91): error: Overlap in .cseg: addr=0xc4f conflicts with 0xbc:0xe90 ../../avr8\dict/nrww.inc(12): Including file '../../avr8\words/doconstant.asm' ../../avr8\words/doconstant.asm(10): error: Overlap in .cseg: addr=0xc50 conflicts with 0xbc:0xe90 ../../avr8\macros.asm(45): error: Overlap in .cseg: addr=0xc51 conflicts with 0xbc:0xe90 ../../avr8\macros.asm(46): error: Overlap in .cseg: addr=0xc52 conflicts with 0xbc:0xe90 ../../avr8\words/doconstant.asm(13): error: Overlap in .cseg: addr=0xc53 conflicts with 0xbc:0xe90 ../../avr8\words/doconstant.asm(14): error: Overlap in .cseg: addr=0xc54 conflicts with 0xbc:0xe90 ../../avr8\macros.asm(91): error: Overlap in .cseg: addr=0xc55 conflicts with 0xbc:0xe90 ../../avr8\dict/nrww.inc(13): Including file '../../avr8\words/douser.asm' ../../avr8\words/douser.asm(10): error: Overlap in .cseg: addr=0xc56 conflicts with 0xbc:0xe90 ../../avr8\macros.asm(45): error: Overlap in .cseg: addr=0xc57 conflicts with 0xbc:0xe90 ../../avr8\macros.asm(46): error: Overlap in .cseg: addr=0xc58 conflicts with 0xbc:0xe90 ../../avr8\words/douser.asm(13): error: Overlap in .cseg: addr=0xc59 conflicts with 0xbc:0xe90 ../../avr8\words/douser.asm(14): error: Overlap in .cseg: addr=0xc5a conflicts with 0xbc:0xe90 ../../avr8/devices/atmega8\device.asm(11): error: Overlap in .cseg: addr=0xc5b conflicts with 0xbc:0xe90 ../../avr8/devices/atmega8\device.asm(12): error: Overlap in .cseg: addr=0xc5c conflicts with 0xbc:0xe90 ../../avr8/devices/atmega8\device.asm(13): error: Overlap in .cseg: addr=0xc5d conflicts with 0xbc:0xe90 ../../avr8/devices/atmega8\device.asm(14): error: Overlap in .cseg: addr=0xc5e conflicts with 0xbc:0xe90 ../../avr8\words/douser.asm(16): error: Overlap in .cseg: addr=0xc5f conflicts with 0xbc:0xe90 ../../avr8\words/douser.asm(17): error: Overlap in .cseg: addr=0xc60 conflicts with 0xbc:0xe90 ../../avr8\macros.asm(91): error: Overlap in .cseg: addr=0xc61 conflicts with 0xbc:0xe90 ../../avr8\dict/nrww.inc(14): Including file '../../avr8\words/do-value.asm' ../../avr8\words/do-value.asm(5): error: Overlap in .cseg: addr=0xc62 conflicts with 0xbc:0xe90 ../../avr8\words/do-value.asm(6): error: Overlap in .cseg: addr=0xc63 conflicts with 0xbc:0xe90 ../../avr8\words/do-value.asm(6): FATAL: Giving up after 100 errors Is the guide i was following outdated and i missed something? Malte |
|
From: Erich W. <ew....@na...> - 2020-08-02 17:32:13
|
Dear AmForthers,
as previously announced I made this weekend the official
AmForth Weekend 2 / 2020-08-01,02
So what happened?
- Commits
r2447: tools/amforth-shell.py ported to python3
the corresponding patch was kindly contributed by Tristan
Williams, thank you!
r2448: added Tristan to contributors list
r2449: tools/amforth-upload.py fixed logic error in
search_and_open_file
Synced website.
- Progress
- both amforth-upload.py and amforth-shell.py are using
"python", which means python2. Since python2 is being
discontinued, these should be ported to python3. Anyone
interested?
[2020-08-01 Sat]
Tristan Williams send a patch to port amforth-shell.py to python3.
This work is committed.
amforth-upload.py remaining ... but see next point.
https://sourceforge.net/p/amforth/mailman/message/37075138/
- amforth-upload.py is broken for me, I use the file from 4.0.
But I have not bothered to find out exactly what breaks on
me/my code.
[2020-08-01 Sat]
Fix attempted, needs someone elso to confirm that it works.
I also attempted to port this script to python3 but failed
miserably :-)
https://sourceforge.net/p/amforth/mailman/message/37075266/
- The refcard generator is broken probably since release 5.6
link to email archive (Martin Nicholas June 2020)
https://sourceforge.net/p/amforth/mailman/message/37047630/
[2020-08-01 Sat]
Mark Roth has contributed a few things to make this work again.
See thread starting here:
https://sourceforge.net/p/amforth/mailman/message/37060533/
and especially here:
https://sourceforge.net/p/amforth/mailman/message/37063662/
Things are more involved, however, see this thread:
https://sourceforge.net/p/amforth/mailman/message/37075410/
- Open Issues
as far as I'm aware:
- WDT (Martin Nicholas) patch
Martin has provided a small patch (.asm) regarding the
startup of the WDT (watch dog timer) on atmega2560
controllers. I have honestly no idea, whether or not this
will break something else, and under which conditions exactly
this is needed.
link to email archive (Martin Nicholas, June 2019)
https://sourceforge.net/p/amforth/mailman/message/36682958/
- Multitasker documentation
This needs to be tested and enhanced in a few ways. It might
be that the current example in the Cookbook section is simply
broken. There have been questions about how to better
populate the task local user area. Maybe this could be
answered by a more complex example. There has been the
question about producing output from a task (not the cmd
loop), its collision with the shared HLD/TAB area, and
possible ways to solve this (semaphores, task local HLD/TAB).
link to email archive (Jan Kromhout Feb 2019)
https://sourceforge.net/p/amforth/mailman/message/36596842/
- " du< " is missing
link to email archive (Martin Nicholas August 2019)
https://sourceforge.net/p/amforth/mailman/message/36748496/
- AmForth Weekend 3
Shall take place on 2020-08-29,30 --- four weeks from now.
Thank you very much for your precious time!
Take care and happy hacking,
Erich
--
May the Forth be with you ...
|
|
From: Erich W. <ew....@na...> - 2020-08-02 14:58:46
|
Hello Tristan, Tristan Williams writes: > Is it possible to build the current AVR AmForth so that it can > co-exist with a bootloader? > > There is a reference in the documentation to changes that would be > required > > http://amforth.sourceforge.net/TG/AVR8.html?highlight=bootloader > > and some older discussions in the mailing list > > https://sourceforge.net/p/amforth/mailman/message/32235234/ > > but nothing since. I was wondering whether this might be a way to use > AmForth with the ATmega32u4 and USB. Someone else asked me the same question more recently ... odd. Well. As far as I understand (anything I wrote below might be only partially correct or even outright wrong): The function, which stores a new value in flash, must reside in the NRWW section of the flash. At least on larger Atmega controllers the size of this section can be changed. atmel_atmega644pa_doc42717.pdf section 27 Bootloader Support Size can be 512, 1024, 2048 to 4096 words (word == 16 Bit, iirc). The size is set with the BOOTSZ[01] fuses in HIGH Fuse Byte. A bootloader needs to reside in NRWW. Then it can read Bytes from /somewhere/ (e.g. serial connection) and write them to flash outside the NRWW section. Writing Flash outside of NRWW needs to account for erasing in blocks, saving and rewriting blocks accordingly, unless writing the new value involves changes from 1 to 0 only (for any individual bit). This makes i! somewhat /interesting/. Currently "i!" lives in the NRWW section together with a number of "core" words, thus overwriting any bootloader that existed on the board. So to make AmForth (or any Forth) coexist with the bootloader, there are at least these options: 1. Forth compiles to RAM only --- normally not what you want. 2. The bootloader living in NRWW exports its "write-to-flash" function as an interface to any interested party outside the bootloader. Most probably such an interface would use a call frame and not the Forth data stack. I have not checked whether there is such a bootloader, which offers this. From the point of view of the bootloader: "you (the user) want to load an application which is rewriting itself? Are you nuts?" I had looked at this many years ago (arduino bootloader) and decided that this was over my head. 3. You could of course write your own bootloader. I have met a person who has done just that. He wrote a small machine monitor, but I'm not aware that he did publish it. Hope this helps, Erich > > Tristan > -- May the Forth be with you ... |
|
From: Tristan W. <ho...@tj...> - 2020-08-02 13:33:42
|
Hello Mark, Erich, AmForthers, Mark - I have chopped and reordered selected parts of your message to form my reply. I hope this is OK. > It seems that the intent of the refcard was to document the things that > are compiled into the system. +1 For me, the scope of the/each refcard is defined by the distribution build for each architecture (AVR8, msp430, etc.). If the refcard script were part of the hex build process then a custom refcard could be a product of the build process also. > Since the Forth source code could be nearly anything AND has to be > uploaded after the hex files are uploaded to the device you are now > entering into the realm of full generated documentation. +1 I think AmForth's documentation is very good, but as Mark's draft 6.8+ refcard pointed out to me, there are words I did not know existed. There is more to AmForth than made it to the existing documentation. Complete, exhaustive and automated documentation would clearly be great, but as has already been noted, doing this across AVR8/msp430/risc-v/arm + various assembler formats + common/uncommon Forth is challenging. As previously mentioned, part of the challenge being agreeing on what a refcard should be. My vote would be to 1. Limit the refcard to the words written in assembler that contribute to the distribution build of the hex files. 2. Limit the refcard improvements for AmForth 6.9 to AVR8 only 3. Take this as an opportunity to review the distribution builds for AVR8 (which words to include) and make the existence and location of the hex files more prominent in the documentation. > I think that we will really need a roadmap to head for v6.9 and more > importantly v7.0. I think the distinction between 6.9 and 7.0 is a very helpful one. My opinion is that AVR8 has been and currently is the core platform for AmForth. From the from the mailing list archive it is certainly the one that generates the most activity. Whilst I probably have more than enough AVR8 development boards in the parts box to see out my list of projects, I think Matthias saw a longer term future for AmForth beyond AVR8. Perhaps answers to these two questions go someway towards defining a roadmap for 7.0 1) which, if any, of the other mcus AmForth can run on do AmForthers think is the one to focus on? 2) is there a desire/will for AmForth on AVR8 to be extended to run on newer AVR8 such as the ATMEGA4809[1] ? Best wishes, Tristan [1] http://ww1.microchip.com/downloads/en/DeviceDoc/ATmega4808-09-DataSheet-DS40002173B.pdf On 02Aug20 09:53, Mark Roth wrote: > On Sat, Aug 1, 2020 at 10:50 PM Erich Wälde <ew....@na...> wrote: > > > thread hijacked intentionally. > > > 'Thar be pirates! > > > > > > today I spent some time trying to understand the "make-refcard*" > > scripts in some detail. > > > > The script works roughly like this: > > > > <snip> > > > - the first three lines are comments expected to produce > > 1. the stack effects (data, return, compile stacks) > > 2. the category to which this word belongs > > 3. a one line description, what this word is supposed to do. > > > > > Indeed. It also happens to be the reason the perl script works so well, as > well as being so easy to break. It's just too rigid. One thing that the > original has as well is that the 4th line needs to be the "VE" or "XT" > part. If it isn't it will fail. That was the reason for poking around with > the 3 prior lines part of the the script and hardwiring it for the first 3 > lines. > > > > > > Now I could commit Marks patches and not look further. However, there > > are several shortcomings with the current state. > > > > Yeah, don't do that. I really just put up the diff as a reference for > someone that knows Perl. At best right now I would say you could replace > the very outdated refcard.html with the one my changes generate. It is an > improvement just because of the age difference (5.5 to 6.8). For the long > term however, this tool needs to either be fixed entirely or replaced with > something that the build system can use. Having a refcard generated > directly from the source tree is fantastic IMHO. > > > > > > - The script will currently only read "one" directory, whereas we have > > several directories with /different/ asm styles! > > - arm/words/ -- gnu asm style > > - avr8/words/ -- avr asm style > > - common/words/ -- avr, msp430 asm style with .if directives > > - msp430/words/ -- msp430 asm style > > - risc-v/words/ -- riscv asm style > > - shared/words/ -- looks like some macro style for generators > > > > - The generated output (LaTeX, ReST) is done with two different > > scripts. > > > > - The generated output does currently not have any indication, on > > which ports a particular word is available. > > > > This gets to the guts of how to march from here (Google's rendition of the > Latin in the title). Each of the flavors could be determined from their > location in the source tree. The additional information would have to be > added to the hash tables and the generation end would have to be made aware > of all this of course. But in those cases it would seem that you would just > end up with a mess of duplication. The script would need to determine if > something exists already then act accordingly. However, what would be > appropriate? How do you deal with differences in the stack effects because > of the platform? It seems that the end user would be better served if they > could just pull up their flavor of refcard and be done with it. As you > mentioned, right now it is the AVR8 refcard. I don't know how different > each platform is since I am personally only concerned with the AVR one. But > there is of course a wider audience out there and each needs to be dealt > with equally. Having individual refcards would seem to align with the way > that the website documents already work for the different platforms > (sections for linux and windows etc) so that is where I'd cast my vote. > > > > - The script will currently not read any forth code. And words like > > "value" or "c," should show up in the refcard as well, shouldn't > > they? And should the refcard not have the information that you have > > to include one of these files: > > : avr8/lib/forth2012/core/c-comma.frt > > : msp430/lib/forth-2012/core/c-comma.frt > > > > I kind of remember that Matthias decided to move some code from the > > pre-assembled form /back/ to pure Forth. This was in order to help > > dealing with the new, additional architectures. > > > > - in the .asm files I would also like to see a pure Forth equivalent > > as a comment. I have missed this in the past already. > > > > It seems that the intent of the refcard was to document the things that > are compiled into the system. Since the Forth source code could be nearly > anything AND has to be uploaded after the hex files are uploaded to the > device you are now entering into the realm of full generated documentation. > In that case it may be better to look into something like Doxygen (or > whatever the kids are using these days) and properly generate all that. Of > course that would take a one time scouring of all the sources to align with > something of that nature. > As for the Forth source in the asm file I'm not sure about that. I think > I'd rather see the .frt file alongside the .asm file. That is just personal > preference though and I can see the value in having them together. It does > seem like it could complicate the build and/or uploading process. > > ;tldnr > Perl script needs to be updated entirely by someone fluent. > Sources need to be properly commented for the refcard/doc generation. > Maybe define the style to be used (indentation, tabs, spaces etc) for the > sources. > Forth source for all the asm files and maybe even some docs for the rules > that go along with that. I did read some things about that in the mailing > list like how the first .dw value is created. > Is there somewhere that explains the asm file format in more detail or is > it just a Forth standard thing? > > That is probably more than enough for now. I'm willing to help where I can > but I think that we will really need a roadmap to head for v6.9 and more > importantly v7.0. Otherwise these talks are just coffee before heading back > to our own private repos. I guess one can't march until one knows which > direction to march in... > > I'm going swimming now. :) All the best. > Mark > > _______________________________________________ > Amforth-devel mailing list for http://amforth.sf.net/ > Amf...@li... > https://lists.sourceforge.net/lists/listinfo/amforth-devel |
|
From: Mark R. <cab...@gm...> - 2020-08-02 06:54:20
|
On Sat, Aug 1, 2020 at 10:50 PM Erich Wälde <ew....@na...> wrote: > thread hijacked intentionally. > 'Thar be pirates! > > today I spent some time trying to understand the "make-refcard*" > scripts in some detail. > > The script works roughly like this: > > <snip> > - the first three lines are comments expected to produce > 1. the stack effects (data, return, compile stacks) > 2. the category to which this word belongs > 3. a one line description, what this word is supposed to do. > > Indeed. It also happens to be the reason the perl script works so well, as well as being so easy to break. It's just too rigid. One thing that the original has as well is that the 4th line needs to be the "VE" or "XT" part. If it isn't it will fail. That was the reason for poking around with the 3 prior lines part of the the script and hardwiring it for the first 3 lines. > > Now I could commit Marks patches and not look further. However, there > are several shortcomings with the current state. > > Yeah, don't do that. I really just put up the diff as a reference for someone that knows Perl. At best right now I would say you could replace the very outdated refcard.html with the one my changes generate. It is an improvement just because of the age difference (5.5 to 6.8). For the long term however, this tool needs to either be fixed entirely or replaced with something that the build system can use. Having a refcard generated directly from the source tree is fantastic IMHO. > > - The script will currently only read "one" directory, whereas we have > several directories with /different/ asm styles! > - arm/words/ -- gnu asm style > - avr8/words/ -- avr asm style > - common/words/ -- avr, msp430 asm style with .if directives > - msp430/words/ -- msp430 asm style > - risc-v/words/ -- riscv asm style > - shared/words/ -- looks like some macro style for generators > > - The generated output (LaTeX, ReST) is done with two different > scripts. > > - The generated output does currently not have any indication, on > which ports a particular word is available. > > This gets to the guts of how to march from here (Google's rendition of the Latin in the title). Each of the flavors could be determined from their location in the source tree. The additional information would have to be added to the hash tables and the generation end would have to be made aware of all this of course. But in those cases it would seem that you would just end up with a mess of duplication. The script would need to determine if something exists already then act accordingly. However, what would be appropriate? How do you deal with differences in the stack effects because of the platform? It seems that the end user would be better served if they could just pull up their flavor of refcard and be done with it. As you mentioned, right now it is the AVR8 refcard. I don't know how different each platform is since I am personally only concerned with the AVR one. But there is of course a wider audience out there and each needs to be dealt with equally. Having individual refcards would seem to align with the way that the website documents already work for the different platforms (sections for linux and windows etc) so that is where I'd cast my vote. > - The script will currently not read any forth code. And words like > "value" or "c," should show up in the refcard as well, shouldn't > they? And should the refcard not have the information that you have > to include one of these files: > : avr8/lib/forth2012/core/c-comma.frt > : msp430/lib/forth-2012/core/c-comma.frt > > I kind of remember that Matthias decided to move some code from the > pre-assembled form /back/ to pure Forth. This was in order to help > dealing with the new, additional architectures. > > - in the .asm files I would also like to see a pure Forth equivalent > as a comment. I have missed this in the past already. > > It seems that the intent of the refcard was to document the things that are compiled into the system. Since the Forth source code could be nearly anything AND has to be uploaded after the hex files are uploaded to the device you are now entering into the realm of full generated documentation. In that case it may be better to look into something like Doxygen (or whatever the kids are using these days) and properly generate all that. Of course that would take a one time scouring of all the sources to align with something of that nature. As for the Forth source in the asm file I'm not sure about that. I think I'd rather see the .frt file alongside the .asm file. That is just personal preference though and I can see the value in having them together. It does seem like it could complicate the build and/or uploading process. ;tldnr Perl script needs to be updated entirely by someone fluent. Sources need to be properly commented for the refcard/doc generation. Maybe define the style to be used (indentation, tabs, spaces etc) for the sources. Forth source for all the asm files and maybe even some docs for the rules that go along with that. I did read some things about that in the mailing list like how the first .dw value is created. Is there somewhere that explains the asm file format in more detail or is it just a Forth standard thing? That is probably more than enough for now. I'm willing to help where I can but I think that we will really need a roadmap to head for v6.9 and more importantly v7.0. Otherwise these talks are just coffee before heading back to our own private repos. I guess one can't march until one knows which direction to march in... I'm going swimming now. :) All the best. Mark |
|
From: Erich W. <ew....@na...> - 2020-08-01 19:51:09
|
thread hijacked intentionally.
Hello Mark,
dear AmForthers,
today I spent some time trying to understand the "make-refcard*"
scripts in some detail.
The script works roughly like this:
- it reads the .asm files in "one" "hard coded" directory
("../common/words").
- for every file the function "readASM" goes to some length to digest
the content.
- the first three lines are comments expected to produce
1. the stack effects (data, return, compile stacks)
2. the category to which this word belongs
3. a one line description, what this word is supposed to do.
- the name of the word is searched for in the '^VE_...' to '^XT_...'
section of the code (^ being the beginning of the line).
- the strings found during this procedure are stored into several
hash-tables, where the XT_LABEL of the word is used as the key into
these tables.
- after all files are digested and the hash-tables are filled
accordingly, the function printLaTeX will walk through these tables
and print their content accordingly.
Mark has spent some time to fix the comment headers and make the
script work again. Thank you for your time!
See thread starting here:
https://sourceforge.net/p/amforth/mailman/message/37060533/
and especially here:
https://sourceforge.net/p/amforth/mailman/message/37063662/
------
Now I could commit Marks patches and not look further. However, there
are several shortcomings with the current state.
- The script will currently only digest AVR style .asm files, whereas
we have different asm styles (see next point).
- The script will currently only read "one" directory, whereas we have
several directories with /different/ asm styles!
- arm/words/ -- gnu asm style
- avr8/words/ -- avr asm style
- common/words/ -- avr, msp430 asm style with .if directives
- msp430/words/ -- msp430 asm style
- risc-v/words/ -- riscv asm style
- shared/words/ -- looks like some macro style for generators
- The generated output (LaTeX, ReST) is done with two different
scripts.
- The generated output does currently not have any indication, on
which ports a particular word is available.
- The script will currently not read any forth code. And words like
"value" or "c," should show up in the refcard as well, shouldn't
they? And should the refcard not have the information that you have
to include one of these files:
: avr8/lib/forth2012/core/c-comma.frt
: msp430/lib/forth-2012/core/c-comma.frt
I kind of remember that Matthias decided to move some code from the
pre-assembled form /back/ to pure Forth. This was in order to help
dealing with the new, additional architectures.
- in the .asm files I would also like to see a pure Forth equivalent
as a comment. I have missed this in the past already.
Apart from that the perl scripts are somewhat clunky and would deserve
some more modern style upgrade. Perl style i.e. I have no interest in
moving anything to Python, as you might guess.
So. Things are a whee bit muddy, unfortunately.
I currently do not see, where we would want to go. What would a good
"Reference Card" look like? Once that becomes clearer, I'm sure there
are ways to get there.
Happy forthing!
Erich,
still undecided on this
--
May the Forth be with you ...
|
|
From: Erich W. <ew....@na...> - 2020-08-01 14:16:47
|
Dear AmForthers,
I had pointed out that I use an old version of amforth-upload.py,
because newer ones did not work for me. So I spent some time with
this.
Short version for "trunk":
The expanded path of the filename given as argument is not passed on
to be opened. Please find two patches below, one for version 4.9,
one for trunk.
The changes fix uploading one or two (hopefully more) files, however,
I have not tested any #include trickery.
So if someone else would please be so kind as to test the patch for
trunk on their environment, it would be much appreciated.
Happy forthing,
Erich
--- the gory details -------------------------------------------------
1.
using md5sum and a little shell acrobatics one can find there are
seven different versions of this script:
a6e355913f567148d6129638d1979dd0 releases/2.7/tools/amforth-upload.py
d98ce0c817fd19cba4474e13b56f566f releases/3.4/tools/amforth-upload.py
c0a6266c243a724da85074fc6a7bc315 releases/4.0/tools/amforth-upload.py
3f6c0a9b8616e4636a2cc9f06d1ede10 releases/4.1/tools/amforth-upload.py
7bee7d2eb669aad5c4b77c93c74d1941 releases/4.7/tools/amforth-upload.py
e8f55df9f17ceb38228ba68270ca019d releases/4.9/tools/amforth-upload.py
faf3f05fbb4126a290d435e83e3e90ee releases/5.7/tools/amforth-upload.py
faf3f05fbb4126a290d435e83e3e90ee trunk/tools/amforth-upload.py
I happen to use the one from release 4.0.
2.
using more shell acrobatics
# --- doit.sh ----------------------------------------------
#!/bin/bash
CONSOLE=/dev/ttyUSB1
TOP=$HOME/Forth/amforth
export R=""
for R in 2.7 3.4 4.0 4.1 4.7 4.9 5.7
do
echo "--- $R ---"
cat <<EOF > ./t_up-${R}.fs
\ Blafasel ${R}
marker --up${R}--
: msg ." this is uploader rev $R" cr ;
msg
EOF
cat ./t_up-${R}.fs
$TOP/releases/$R/tools/amforth-upload.py -v -t $CONSOLE ./t_up-$R.fs
done
# ----------------------------------------------------------
and a controller shows that versions up to and including 4.7 work for
me. This narrows the questionable change down to version 4.8->4.9.
3.
"printf-Style" debugging lead me into function "search_and_open_file".
And into the low-lands of a triple for-loop. Where once the item in
question was found, the loops did not stop. So a "break" in the
innermost loop would fix it. At least for uploading "one" file. Or two
files. I did not test any #include trickery.
#+begin_src diff
ew@ceres:~/eGeek/sourceforge.net/amforth-code/releases/4.9/tools 30 > svn diff --extensions --ignore-space-change
Index: amforth-upload.py
===================================================================
--- amforth-upload.py (revision 2442)
+++ amforth-upload.py (working copy)
@@ -55,6 +55,7 @@
filedirs[f].append([root])
else:
filedirs[f]=[root]
+ break
if len(filedirs[f])==1:
print "using ", f," from", filedirs[f][0]
filehandle = file(os.path.join(filedirs[f][0], f))
#+end_src
This works for the script in Version 4.9. not for trunk!
4.
The script in version "trunk" is even more involved in the same triple
for-loop area. However, it seems the the beautifully crafted filename
is in the end not handed on to open the file.
#+begin_src diff
ew@ceres:~/Forth/atmega2/17_amforth_maint/03_amforth-upload 114 > diff -wu amforth-upload-trunk.py.orig amforth-upload-trunk.py
--- amforth-upload-trunk.py.orig 2020-08-01 15:39:27.148283400 +0200
+++ amforth-upload-trunk.py 2020-08-01 16:04:50.262624068 +0200
@@ -59,9 +59,10 @@
if fpath: filedirs[f].append(fpath)
else:
filedirs[f]=[fpath]
+ break
if len(filedirs[basefilename])==1:
- print "\nusing ", filename," from", filedirs[filename][0]
- filehandle = file(filedirs[filename][0])
+ print "\nusing ", fpath
+ filehandle = file(fpath)
return filehandle
else:
# oops, too many files or no one at all no file found?
#+end_src
Again, I have not tested any #include trickery.
--
May the Forth be with you ...
|
|
From: Erich W. <ew....@na...> - 2020-08-01 07:53:55
|
Hello Tristan, Tristan Williams writes: > Hello, > > I have modified amforth-shell.py to run under python3 and put up a > patch here > > https://tjnw.co.uk/new-shell/doc/ > > as the patch seemed a little too large for a mailing list. Thanks for the patch. Commit r2447 is yours. The patch is nicely readable (even by a mostly python-illiterate maintainer :) and condenses to a few cases of syntax change: - print -> print() - OBJ.has_key(X) -> X in OBJ - except X, e: -> except X as e: - add encode() decode() to character handling I applied the patch mostly verbatim and checked that the line changed in r2443 did not disappear. It didn't :-) This being said, the patch was something short of 300 lines. It is NOT too big for the mailing list. And in fact, the mailing list is our public archive ... so I add the committed version of the patch below for everyones inspiration. > > Best wishes, > Tristan Happy Forthing, Erich --- patch ---------------------------------------------------------------------- ew@ceres:~/eGeek/sourceforge.net/amforth-code/trunk 45 > svn diff -r2446 tools/amforth-shell.py Password: Index: tools/amforth-shell.py =================================================================== --- tools/amforth-shell.py (revision 2446) +++ tools/amforth-shell.py (working copy) @@ -1,4 +1,4 @@ -#!/usr/bin/python +#!/usr/bin/python3 # # pySerial based upload & interpreter interaction module for amforth. # @@ -87,7 +87,7 @@ # # #include <file> # Upload the named <file> before proceeding further. -# +# # #require <file> # Like #include but would skip if <file> was already uploaded # during the shell session. @@ -258,7 +258,7 @@ import re import readline import serial -import StringIO +from io import StringIO import subprocess import sys import traceback @@ -388,7 +388,7 @@ interact_directives = [ "#cd", "#edit", "#require", "#include", "#directive", "#ignore-error", "#error-on-output", "#string-start-word", "#quote-char-word", - "#timeout", "#timeout-next", "#update-words", "#exit", + "#timeout", "#timeout-next", "#update-words", "#exit", "#update-cpu", "#update-files" ] # standard words are usually uppercase, but amforth needs @@ -487,7 +487,7 @@ "EDITOR","STATE","[ELSE]","[IF]","[THEN]", # *** Wordset TOOLS-EXT-obsolescent "FORGET", - # *** Tester wordset + # *** Tester wordset "T{", "}T", ] def __init__(self, serial_port="/dev/amforth", rtscts=False, speed=38400): @@ -511,7 +511,7 @@ self._last_error = () self._last_edited_file = None self._config = BehaviorManager() - if os.environ.has_key("AMFORTH_LIB"): + if "AMFORTH_LIB" in os.environ: self._search_list = os.environ["AMFORTH_LIB"].split(":") else: self._search_list=["."] @@ -592,9 +592,9 @@ except AMForthException: return 1 except KeyboardInterrupt: - print "\nBye bye" - except Exception, e: - print "\n---- Unexpected exception ----" + print( "\nBye bye") + except Exception as e: + print( "\n---- Unexpected exception ----") traceback.print_exc() return 1 finally: @@ -605,10 +605,10 @@ def parse_arg(self): "Argument parsing used when module is used as a script" - parser = argparse.ArgumentParser(description="Interact with AMForth", + parser = argparse.ArgumentParser(description="Interact with AMForth", epilog=""" -The environment variable AMFORTH_LIB can be set with to a colon (:) separated -list of directories that are recursivly searched for file names. If not set, +The environment variable AMFORTH_LIB can be set with to a colon (:) separated +list of directories that are recursivly searched for file names. If not set, the current work directory is used instead. The script assumes to be located in the standard amforth installation under @@ -698,7 +698,7 @@ timeout, False, self.serial_rtscts, None, False) - except serial.SerialException, e: + except serial.SerialException as e: raise AMForthException("Serial port connect failure: %s" % str(e)) def serial_disconnect(self): @@ -728,7 +728,7 @@ try: self.send_line("\n") # Get empty line echo to make sure ready self.read_response() # Throw away the response. - except serial.SerialException, e: + except serial.SerialException as e: self.progress_callback("Error", None, str(e)) raise AMForthException("Failed to get prompt: %s" % str(e)) finally: @@ -745,18 +745,18 @@ fpath=filename self.progress_callback("Information", None, "using "+ filename+" verbatim") else: - if not self._filedirs.has_key(filename): + if not filename in self._filedirs: self.progress_callback("Error", None, "file "+ filename+" not found in search path") raise AMForthException("file " + filename + " not found in search path") if len(self._filedirs[filename])!=1: # oops, too many files or no one at all found? - self.progress_callback("Error", None, "Wrong # of file "+ filename+" found in search path") # add this line above the one below + self.progress_callback("Error", None, "Wrong # of file " + filename + " found in search path") # add this line above the one below raise AMForthException("Wrong # of file occurances: " + filename + " ("+str(len(self._filedirs[filename]))+")\n\t"+"\n\t".join(self._filedirs[filename])) self.progress_callback("Information", None, "using "+ filename+" from"+ self._filedirs[filename][0]) fpath = os.path.join(self._filedirs[filename][0], filename) self._config.push_file(fpath) fdir=os.path.dirname(fpath) - print "**** " + self._config.current_behavior.working_directory + print ("**** " + self._config.current_behavior.working_directory) if os.path.isabs(fdir): dirpath = os.path.normpath(fdir) else: @@ -767,7 +767,7 @@ try: try: self.find_prompt() - except AMForthException, e: + except AMForthException as e: self.progress_callback("Error", None, str(e)) raise if self._amforth_cpu=="": @@ -777,17 +777,17 @@ try: with open(fpath, "r") as f: self._send_file_contents(f) - except (OSError, IOError), e: + except (OSError, IOError) as e: self.progress_callback("Error", None, str(e)) raise AMForthException("Unknown file: " + fpath) self._last_error = () finally: - print "**** " + self._config.current_behavior.working_directory + print ("**** " + self._config.current_behavior.working_directory) self._config.pop_file() self._serialconn.timeout = self._config.current_behavior.timeout try: os.chdir(self._config.current_behavior.working_directory) - except OSError, e: + except OSError as e: errmsg = ("Failed to change to directory '%s': %s" % (self._config.current_behavior.working_directory, str(e))) @@ -806,7 +806,7 @@ self._serialconn.timeout = self._config.current_behavior.timeout try: os.chdir(self._config.current_behavior.working_directory) - except OSError, e: + except OSError as e: errmsg = ("Failed to change to directory '%s': %s" % (self._config.current_behavior.working_directory, str(e))) @@ -829,7 +829,7 @@ directive, directive_arg) = self.preprocess_line(full_line, in_comment, self.upload_directives) - except AMForthException, e: + except AMForthException as e: self._record_error(lineno) self.progress_callback("Error", lineno, full_line) self.progress_callback("Error", None, str(e)) @@ -848,7 +848,7 @@ continue try: self.send_line(line) - except AMForthException, e: + except AMForthException as e: self._record_error(lineno) self.progress_callback("Error", lineno, full_line) self.progress_callback("Error", None, str(e)) @@ -875,7 +875,6 @@ raise AMForthException(errmsg) elif self._log: self._log.write(line + "\n") - else: self.progress_callback("Error", None, response) if not self._config.current_behavior.ignore_errors: @@ -1010,7 +1009,7 @@ elif directive == "#timeout": try: timeout = float(directive_arg) - except ValueError, e: + except ValueError as e: self.progress_callback("Error", None, "Invalid timeout") return self._config.current_file_behavior.timeout = timeout @@ -1017,7 +1016,7 @@ elif directive == "#timeout-next": try: timeout = float(directive_arg) - except ValueError, e: + except ValueError as e: self.progress_callback("Error", None, "Invalid timeout") return behavior = copy.deepcopy(self._config.current_behavior) @@ -1078,14 +1077,15 @@ if self.debug: sys.stderr.write(repr(c)[1:-1]+"->") sys.stderr.flush() - self._serialconn.write(c) + self._serialconn.write(c.encode()) self._serialconn.flush() r = self._serialconn.read(1) # Read echo of character we just sent + r=r.decode() while r and (r != c or (c == '\t' and r != ' ')): if self.debug: sys.stderr.write(repr(r)[1:-1]) sys.stderr.flush() - r = self._serialconn.read(1) + r = self._serialconn.read(1).decode() if not r: raise AMForthException("Input character not echoed.") if self.debug: @@ -1098,7 +1098,7 @@ if self.debug: sys.stderr.write("|r( )") response = "" - r = self._serialconn.read(1) + r = self._serialconn.read(1).decode() while r != "": if self.debug: sys.stderr.write(repr(r)[1:-1]) @@ -1111,7 +1111,7 @@ elif self.amforth_error_cre.search(response) is not None: response = response[:-3] # Don't return prompt in response break - r = self._serialconn.read(1) + r = self._serialconn.read(1).decode() if not response: response = "Timed out waiting for ok response" if self.debug: @@ -1120,9 +1120,9 @@ def print_progress(self, type, lineno, info): if not lineno: - print "|%s=%s" % (type[:1], info) + print("|%s=%s" % (type[:1], info)) else: - print "|%s|%5d|%s" % (type[:1], lineno, info) + print ("|%s|%5d|%s" % (type[:1], lineno, info)) def interact(self): self.progress_callback("Interact", None, @@ -1131,7 +1131,7 @@ self._config.push_file(None) try: self.find_prompt() - except AMForthException, e: + except AMForthException as e: self.progress_callback("Error", None, str(e)) self._config.pop_file() raise @@ -1143,15 +1143,15 @@ prompt="("+self._amforth_cpu+")> " else: prompt="> " - full_line = raw_input(prompt) - except EOFError, e: - print "" + full_line = input(prompt) + except EOFError as e: + print("") break self._config.advance_line() self._serialconn.timeout = self._config.current_behavior.timeout try: os.chdir(self._config.current_behavior.working_directory) - except OSError, e: + except OSError as e: errmsg = ("Failed to change to directory '%s': %s" % (self._config.current_behavior.working_directory, str(e))) @@ -1183,7 +1183,7 @@ elif self._last_edited_file: self.edit_file(self._last_edited_file) else: - print "No file to edit" + print("No file to edit") continue self.handle_common_directives(directive, directive_arg) if directive == "#include" or directive == "#require": @@ -1193,14 +1193,14 @@ continue else: self.send_line(line) - print self.read_response() - except AMForthException, e: - print "Error: " + str(e) + print (self.read_response()) + except AMForthException as e: + print ("Error: " + str(e)) self._config.pop_file() self._serialconn.timeout = self._config.current_behavior.timeout try: os.chdir(self._config.current_behavior.working_directory) - except OSError, e: + except OSError as e: errmsg = ("Failed to change to directory '%s': %s" % (self._config.current_behavior.working_directory, str(e))) @@ -1218,7 +1218,7 @@ ".frt-interact.history") try: readline.read_history_file(histfn) - except IOError, e: + except IOError as e: pass self._update_words() self._update_cpu() @@ -1277,7 +1277,7 @@ # print f fpath=os.path.realpath(os.path.join(root, f)) fpathdir=os.path.dirname(fpath) - if self._filedirs.has_key(f): + if f in self._filedirs: # check for duplicates for d in self._filedirs[f]: if d==fpathdir: @@ -1359,7 +1359,7 @@ try: subprocess.call(cmd) self._last_edited_file = filename - except OSError, e: + except OSError as e: raise AMForthException("Could not start editor: "+self.editor) else: raise AMForthException("No editor specified. Use --editor or EDITOR environment variable") -------------------------------------------------------------------------------- -- May the Forth be with you ... |
|
From: Mark R. <cab...@gm...> - 2020-07-18 07:07:09
|
I corrected a small error in the second diff in build-info.tmpl. There was an extra db padding that wasn't needed since it wasn't a string but a number. I fixed it in the padding.diff link. On Fri, Jul 17, 2020 at 3:17 PM Mark Roth <cab...@gm...> wrote: > I may as well be complete. > http://ipreferpi.eu/DL/padding.diff > > Those are the fixes for the padding warnings while building. Not really > terribly important but better all the way than half-way there. > This one though actually supersedes the other for ud-star.asm and > q-negate.asm since they have a lesser change in the first diff I posted. > Their fixes of adding the ",0" are on lines 12 and 15 respectively and > could just be fixed manually. > > Now I'm really done and the weekend is still half a day away. > > On Fri, Jul 17, 2020 at 1:20 PM Mark Roth <cab...@gm...> wrote: > >> ugh, ignore the ">" at the start of the script lines obviously. I had the >> whole mess quoted so it made a mockery of things. >> >> On Fri, Jul 17, 2020 at 12:40 PM Mark Roth <cab...@gm...> wrote: >> >>> I cleaned up my diff of the svn (amforth-code) and put it up to see if >>> it would be helpful. Be sure to look through the comments on the changed >>> .asm files. In particular the description on abort-string.asm. I'm not >>> seeing the -2 error and that is a set of comments I pulled from an older >>> revision. It can be found here. >>> http://ipreferpi.eu/DL/mywork.diff >>> >>> To build the refcard page using the (mostly) original script I had to >>> resort to dumping the avr8 and common words into a big pile and let the >>> perl voodoo do what it do. So, that is my disclaimer that it is an avr8 >>> AmForth Refcard only. One could use the same technique to make the other >>> flavors as well I suppose. To do that I just made a little helper script >>> that I run from the doc directory. >>> >>> #!/bin/bash >>>> mkdir ../tempwords >>>> cp -r ../common/words ../tempwords >>>> cp -r ../avr8/words ../tempwords >>>> cd ../tools/ ; perl make-refcard-rst ; cd ../doc >>>> make htdocs >>>> #make onlyepub >>>> rm -r ../tempwords >>> >>> >>> It does the trick for me locally anyhow. >>> >>> So that completes my AmForth conversion via AmForth Weekend 1 >>> :P >>> >>> All the best (until the next one), >>> Mark >>> >>> >>> On Thu, Jul 16, 2020 at 11:02 AM Mark Roth <cab...@gm...> wrote: >>> >>>> Of those you see in the list, there are about 20 .asm files that aren't >>>> included in even the 8k core build. I jammed about a dozen of them into my >>>> appl_core dictionary include file just to try and fill it up. Plus of >>>> course the hardware drivers that wouldn't be included anyhow if you don't >>>> need them. I should probably go through my notes and start making patches >>>> for all the files I changed so they can be vetted. I'm sure I made some >>>> errors (or just didn't know from looking at the comments) that would need >>>> to be sorted out. :) >>>> >>>> On Thu, Jul 16, 2020 at 9:53 AM Tristan Williams <ho...@tj...> >>>> wrote: >>>> >>>>> Hello Mark, >>>>> >>>>> Brilliant! There are AmForth words there I hadn't realised it had. >>>>> >>>>> Best wishes, >>>>> Tristan >>>>> >>>>> On 16Jul20 00:49, Mark Roth wrote: >>>>> > It's almost there at least as a page that can temporarily replace the >>>>> > temporary v5.5 one. This is generated from the current svn sources >>>>> and >>>>> > consists of the avr8 and common words directories. I cleaned up as >>>>> many of >>>>> > the files that I could (and those will for sure need some Forth eyes >>>>> on >>>>> > them) by taking info from older versions when the comment block was >>>>> > missing. The entire thing is generated by copying the avr8/words and >>>>> > common/words into a temp directory then running the refcard python >>>>> file >>>>> > against that. You can take a look at it here. >>>>> > http://ipreferpi.eu/htdocs/TG/refcard.html >>>>> > >>>>> > On Mon, Jul 13, 2020 at 10:19 PM Mark Roth <cab...@gm...> >>>>> wrote: >>>>> > >>>>> > > I see there are a few duplicates but I'm not really sure why. Like >>>>> > > RECOGNIZE from recognize.asm. It must have something to do with >>>>> the way the >>>>> > > msp430 header is formatted that is different from other ones since >>>>> it isn't >>>>> > > all of them. I'm sure it is in that voodoo of slashes somewhere... >>>>> > > >>>>> > > all the best, >>>>> > > Mark >>>>> > > >>>>> > >> >>>>> > >> CLIPPED >>>>> > >>>>> > _______________________________________________ >>>>> > Amforth-devel mailing list for http://amforth.sf.net/ >>>>> > Amf...@li... >>>>> > https://lists.sourceforge.net/lists/listinfo/amforth-devel >>>>> > >>>>> >>>>> >>>>> _______________________________________________ >>>>> Amforth-devel mailing list for http://amforth.sf.net/ >>>>> Amf...@li... >>>>> https://lists.sourceforge.net/lists/listinfo/amforth-devel >>>>> >>>> |
|
From: Mark R. <cab...@gm...> - 2020-07-17 12:17:33
|
I may as well be complete. http://ipreferpi.eu/DL/padding.diff Those are the fixes for the padding warnings while building. Not really terribly important but better all the way than half-way there. This one though actually supersedes the other for ud-star.asm and q-negate.asm since they have a lesser change in the first diff I posted. Their fixes of adding the ",0" are on lines 12 and 15 respectively and could just be fixed manually. Now I'm really done and the weekend is still half a day away. On Fri, Jul 17, 2020 at 1:20 PM Mark Roth <cab...@gm...> wrote: > ugh, ignore the ">" at the start of the script lines obviously. I had the > whole mess quoted so it made a mockery of things. > > On Fri, Jul 17, 2020 at 12:40 PM Mark Roth <cab...@gm...> wrote: > >> I cleaned up my diff of the svn (amforth-code) and put it up to see if it >> would be helpful. Be sure to look through the comments on the changed .asm >> files. In particular the description on abort-string.asm. I'm not seeing >> the -2 error and that is a set of comments I pulled from an older revision. >> It can be found here. >> http://ipreferpi.eu/DL/mywork.diff >> >> To build the refcard page using the (mostly) original script I had to >> resort to dumping the avr8 and common words into a big pile and let the >> perl voodoo do what it do. So, that is my disclaimer that it is an avr8 >> AmForth Refcard only. One could use the same technique to make the other >> flavors as well I suppose. To do that I just made a little helper script >> that I run from the doc directory. >> >> #!/bin/bash >>> mkdir ../tempwords >>> cp -r ../common/words ../tempwords >>> cp -r ../avr8/words ../tempwords >>> cd ../tools/ ; perl make-refcard-rst ; cd ../doc >>> make htdocs >>> #make onlyepub >>> rm -r ../tempwords >> >> >> It does the trick for me locally anyhow. >> >> So that completes my AmForth conversion via AmForth Weekend 1 >> :P >> >> All the best (until the next one), >> Mark >> >> >> On Thu, Jul 16, 2020 at 11:02 AM Mark Roth <cab...@gm...> wrote: >> >>> Of those you see in the list, there are about 20 .asm files that aren't >>> included in even the 8k core build. I jammed about a dozen of them into my >>> appl_core dictionary include file just to try and fill it up. Plus of >>> course the hardware drivers that wouldn't be included anyhow if you don't >>> need them. I should probably go through my notes and start making patches >>> for all the files I changed so they can be vetted. I'm sure I made some >>> errors (or just didn't know from looking at the comments) that would need >>> to be sorted out. :) >>> >>> On Thu, Jul 16, 2020 at 9:53 AM Tristan Williams <ho...@tj...> >>> wrote: >>> >>>> Hello Mark, >>>> >>>> Brilliant! There are AmForth words there I hadn't realised it had. >>>> >>>> Best wishes, >>>> Tristan >>>> >>>> On 16Jul20 00:49, Mark Roth wrote: >>>> > It's almost there at least as a page that can temporarily replace the >>>> > temporary v5.5 one. This is generated from the current svn sources and >>>> > consists of the avr8 and common words directories. I cleaned up as >>>> many of >>>> > the files that I could (and those will for sure need some Forth eyes >>>> on >>>> > them) by taking info from older versions when the comment block was >>>> > missing. The entire thing is generated by copying the avr8/words and >>>> > common/words into a temp directory then running the refcard python >>>> file >>>> > against that. You can take a look at it here. >>>> > http://ipreferpi.eu/htdocs/TG/refcard.html >>>> > >>>> > On Mon, Jul 13, 2020 at 10:19 PM Mark Roth <cab...@gm...> >>>> wrote: >>>> > >>>> > > I see there are a few duplicates but I'm not really sure why. Like >>>> > > RECOGNIZE from recognize.asm. It must have something to do with the >>>> way the >>>> > > msp430 header is formatted that is different from other ones since >>>> it isn't >>>> > > all of them. I'm sure it is in that voodoo of slashes somewhere... >>>> > > >>>> > > all the best, >>>> > > Mark >>>> > > >>>> > >> >>>> > >> CLIPPED >>>> > >>>> > _______________________________________________ >>>> > Amforth-devel mailing list for http://amforth.sf.net/ >>>> > Amf...@li... >>>> > https://lists.sourceforge.net/lists/listinfo/amforth-devel >>>> > >>>> >>>> >>>> _______________________________________________ >>>> Amforth-devel mailing list for http://amforth.sf.net/ >>>> Amf...@li... >>>> https://lists.sourceforge.net/lists/listinfo/amforth-devel >>>> >>> |
|
From: Mark R. <cab...@gm...> - 2020-07-17 10:21:04
|
ugh, ignore the ">" at the start of the script lines obviously. I had the whole mess quoted so it made a mockery of things. On Fri, Jul 17, 2020 at 12:40 PM Mark Roth <cab...@gm...> wrote: > I cleaned up my diff of the svn (amforth-code) and put it up to see if it > would be helpful. Be sure to look through the comments on the changed .asm > files. In particular the description on abort-string.asm. I'm not seeing > the -2 error and that is a set of comments I pulled from an older revision. > It can be found here. > http://ipreferpi.eu/DL/mywork.diff > > To build the refcard page using the (mostly) original script I had to > resort to dumping the avr8 and common words into a big pile and let the > perl voodoo do what it do. So, that is my disclaimer that it is an avr8 > AmForth Refcard only. One could use the same technique to make the other > flavors as well I suppose. To do that I just made a little helper script > that I run from the doc directory. > > #!/bin/bash >> mkdir ../tempwords >> cp -r ../common/words ../tempwords >> cp -r ../avr8/words ../tempwords >> cd ../tools/ ; perl make-refcard-rst ; cd ../doc >> make htdocs >> #make onlyepub >> rm -r ../tempwords > > > It does the trick for me locally anyhow. > > So that completes my AmForth conversion via AmForth Weekend 1 > :P > > All the best (until the next one), > Mark > > > On Thu, Jul 16, 2020 at 11:02 AM Mark Roth <cab...@gm...> wrote: > >> Of those you see in the list, there are about 20 .asm files that aren't >> included in even the 8k core build. I jammed about a dozen of them into my >> appl_core dictionary include file just to try and fill it up. Plus of >> course the hardware drivers that wouldn't be included anyhow if you don't >> need them. I should probably go through my notes and start making patches >> for all the files I changed so they can be vetted. I'm sure I made some >> errors (or just didn't know from looking at the comments) that would need >> to be sorted out. :) >> >> On Thu, Jul 16, 2020 at 9:53 AM Tristan Williams <ho...@tj...> wrote: >> >>> Hello Mark, >>> >>> Brilliant! There are AmForth words there I hadn't realised it had. >>> >>> Best wishes, >>> Tristan >>> >>> On 16Jul20 00:49, Mark Roth wrote: >>> > It's almost there at least as a page that can temporarily replace the >>> > temporary v5.5 one. This is generated from the current svn sources and >>> > consists of the avr8 and common words directories. I cleaned up as >>> many of >>> > the files that I could (and those will for sure need some Forth eyes on >>> > them) by taking info from older versions when the comment block was >>> > missing. The entire thing is generated by copying the avr8/words and >>> > common/words into a temp directory then running the refcard python file >>> > against that. You can take a look at it here. >>> > http://ipreferpi.eu/htdocs/TG/refcard.html >>> > >>> > On Mon, Jul 13, 2020 at 10:19 PM Mark Roth <cab...@gm...> >>> wrote: >>> > >>> > > I see there are a few duplicates but I'm not really sure why. Like >>> > > RECOGNIZE from recognize.asm. It must have something to do with the >>> way the >>> > > msp430 header is formatted that is different from other ones since >>> it isn't >>> > > all of them. I'm sure it is in that voodoo of slashes somewhere... >>> > > >>> > > all the best, >>> > > Mark >>> > > >>> > >> >>> > >> CLIPPED >>> > >>> > _______________________________________________ >>> > Amforth-devel mailing list for http://amforth.sf.net/ >>> > Amf...@li... >>> > https://lists.sourceforge.net/lists/listinfo/amforth-devel >>> > >>> >>> >>> _______________________________________________ >>> Amforth-devel mailing list for http://amforth.sf.net/ >>> Amf...@li... >>> https://lists.sourceforge.net/lists/listinfo/amforth-devel >>> >> |
|
From: Mark R. <cab...@gm...> - 2020-07-17 09:40:38
|
I cleaned up my diff of the svn (amforth-code) and put it up to see if it would be helpful. Be sure to look through the comments on the changed .asm files. In particular the description on abort-string.asm. I'm not seeing the -2 error and that is a set of comments I pulled from an older revision. It can be found here. http://ipreferpi.eu/DL/mywork.diff To build the refcard page using the (mostly) original script I had to resort to dumping the avr8 and common words into a big pile and let the perl voodoo do what it do. So, that is my disclaimer that it is an avr8 AmForth Refcard only. One could use the same technique to make the other flavors as well I suppose. To do that I just made a little helper script that I run from the doc directory. #!/bin/bash > mkdir ../tempwords > cp -r ../common/words ../tempwords > cp -r ../avr8/words ../tempwords > cd ../tools/ ; perl make-refcard-rst ; cd ../doc > make htdocs > #make onlyepub > rm -r ../tempwords It does the trick for me locally anyhow. So that completes my AmForth conversion via AmForth Weekend 1 :P All the best (until the next one), Mark On Thu, Jul 16, 2020 at 11:02 AM Mark Roth <cab...@gm...> wrote: > Of those you see in the list, there are about 20 .asm files that aren't > included in even the 8k core build. I jammed about a dozen of them into my > appl_core dictionary include file just to try and fill it up. Plus of > course the hardware drivers that wouldn't be included anyhow if you don't > need them. I should probably go through my notes and start making patches > for all the files I changed so they can be vetted. I'm sure I made some > errors (or just didn't know from looking at the comments) that would need > to be sorted out. :) > > On Thu, Jul 16, 2020 at 9:53 AM Tristan Williams <ho...@tj...> wrote: > >> Hello Mark, >> >> Brilliant! There are AmForth words there I hadn't realised it had. >> >> Best wishes, >> Tristan >> >> On 16Jul20 00:49, Mark Roth wrote: >> > It's almost there at least as a page that can temporarily replace the >> > temporary v5.5 one. This is generated from the current svn sources and >> > consists of the avr8 and common words directories. I cleaned up as many >> of >> > the files that I could (and those will for sure need some Forth eyes on >> > them) by taking info from older versions when the comment block was >> > missing. The entire thing is generated by copying the avr8/words and >> > common/words into a temp directory then running the refcard python file >> > against that. You can take a look at it here. >> > http://ipreferpi.eu/htdocs/TG/refcard.html >> > >> > On Mon, Jul 13, 2020 at 10:19 PM Mark Roth <cab...@gm...> >> wrote: >> > >> > > I see there are a few duplicates but I'm not really sure why. Like >> > > RECOGNIZE from recognize.asm. It must have something to do with the >> way the >> > > msp430 header is formatted that is different from other ones since it >> isn't >> > > all of them. I'm sure it is in that voodoo of slashes somewhere... >> > > >> > > all the best, >> > > Mark >> > > >> > >> >> > >> CLIPPED >> > >> > _______________________________________________ >> > Amforth-devel mailing list for http://amforth.sf.net/ >> > Amf...@li... >> > https://lists.sourceforge.net/lists/listinfo/amforth-devel >> > >> >> >> _______________________________________________ >> Amforth-devel mailing list for http://amforth.sf.net/ >> Amf...@li... >> https://lists.sourceforge.net/lists/listinfo/amforth-devel >> > |
|
From: Mark R. <cab...@gm...> - 2020-07-16 08:03:07
|
Of those you see in the list, there are about 20 .asm files that aren't included in even the 8k core build. I jammed about a dozen of them into my appl_core dictionary include file just to try and fill it up. Plus of course the hardware drivers that wouldn't be included anyhow if you don't need them. I should probably go through my notes and start making patches for all the files I changed so they can be vetted. I'm sure I made some errors (or just didn't know from looking at the comments) that would need to be sorted out. :) On Thu, Jul 16, 2020 at 9:53 AM Tristan Williams <ho...@tj...> wrote: > Hello Mark, > > Brilliant! There are AmForth words there I hadn't realised it had. > > Best wishes, > Tristan > > On 16Jul20 00:49, Mark Roth wrote: > > It's almost there at least as a page that can temporarily replace the > > temporary v5.5 one. This is generated from the current svn sources and > > consists of the avr8 and common words directories. I cleaned up as many > of > > the files that I could (and those will for sure need some Forth eyes on > > them) by taking info from older versions when the comment block was > > missing. The entire thing is generated by copying the avr8/words and > > common/words into a temp directory then running the refcard python file > > against that. You can take a look at it here. > > http://ipreferpi.eu/htdocs/TG/refcard.html > > > > On Mon, Jul 13, 2020 at 10:19 PM Mark Roth <cab...@gm...> wrote: > > > > > I see there are a few duplicates but I'm not really sure why. Like > > > RECOGNIZE from recognize.asm. It must have something to do with the > way the > > > msp430 header is formatted that is different from other ones since it > isn't > > > all of them. I'm sure it is in that voodoo of slashes somewhere... > > > > > > all the best, > > > Mark > > > > > >> > > >> CLIPPED > > > > _______________________________________________ > > Amforth-devel mailing list for http://amforth.sf.net/ > > Amf...@li... > > https://lists.sourceforge.net/lists/listinfo/amforth-devel > > > > > _______________________________________________ > Amforth-devel mailing list for http://amforth.sf.net/ > Amf...@li... > https://lists.sourceforge.net/lists/listinfo/amforth-devel > |
|
From: Tristan W. <ho...@tj...> - 2020-07-16 06:53:28
|
Hello Mark, Brilliant! There are AmForth words there I hadn't realised it had. Best wishes, Tristan On 16Jul20 00:49, Mark Roth wrote: > It's almost there at least as a page that can temporarily replace the > temporary v5.5 one. This is generated from the current svn sources and > consists of the avr8 and common words directories. I cleaned up as many of > the files that I could (and those will for sure need some Forth eyes on > them) by taking info from older versions when the comment block was > missing. The entire thing is generated by copying the avr8/words and > common/words into a temp directory then running the refcard python file > against that. You can take a look at it here. > http://ipreferpi.eu/htdocs/TG/refcard.html > > On Mon, Jul 13, 2020 at 10:19 PM Mark Roth <cab...@gm...> wrote: > > > I see there are a few duplicates but I'm not really sure why. Like > > RECOGNIZE from recognize.asm. It must have something to do with the way the > > msp430 header is formatted that is different from other ones since it isn't > > all of them. I'm sure it is in that voodoo of slashes somewhere... > > > > all the best, > > Mark > > > >> > >> CLIPPED > > _______________________________________________ > Amforth-devel mailing list for http://amforth.sf.net/ > Amf...@li... > https://lists.sourceforge.net/lists/listinfo/amforth-devel > |
|
From: Mark R. <cab...@gm...> - 2020-07-15 21:50:16
|
It's almost there at least as a page that can temporarily replace the temporary v5.5 one. This is generated from the current svn sources and consists of the avr8 and common words directories. I cleaned up as many of the files that I could (and those will for sure need some Forth eyes on them) by taking info from older versions when the comment block was missing. The entire thing is generated by copying the avr8/words and common/words into a temp directory then running the refcard python file against that. You can take a look at it here. http://ipreferpi.eu/htdocs/TG/refcard.html On Mon, Jul 13, 2020 at 10:19 PM Mark Roth <cab...@gm...> wrote: > I see there are a few duplicates but I'm not really sure why. Like > RECOGNIZE from recognize.asm. It must have something to do with the way the > msp430 header is formatted that is different from other ones since it isn't > all of them. I'm sure it is in that voodoo of slashes somewhere... > > all the best, > Mark > >> >> CLIPPED |
|
From: Mark R. <cab...@gm...> - 2020-07-13 20:44:08
|
I do see that the lists don't get properly sorted either. Still very rough... |
|
From: Mark R. <cab...@gm...> - 2020-07-13 19:19:53
|
I see there are a few duplicates but I'm not really sure why. Like
RECOGNIZE from recognize.asm. It must have something to do with the way the
msp430 header is formatted that is different from other ones since it isn't
all of them. I'm sure it is in that voodoo of slashes somewhere...
all the best,
Mark
On Mon, Jul 13, 2020 at 10:09 PM Mark Roth <cab...@gm...> wrote:
> So here is a working hack to make a refcard with both the avr8/works and
> common/words directory. Since I don't even sort of speak Perl I'll leave
> any real fixes to someone who does. However, I made a few notes pointing
> out the things that were the issue before.
> There is still the issue of files that don't have the 3 lines at the top
> of stack effects, category and description. It is easy to see which files
> need to be fixed so they can be scanned correctly. The ones in the
> unclassified group at the end can be a little tougher to find. I had to
> search for <.db "-1"> to find that one in num-constants.asm. Those did fail
> pretty gracefully though.
>
> tl;dnr
> This works in a hackish sort of way. Still work to do but closer now.
>
> ========= START make-refcard-rst ===================
>
> #!/usr/bin/perl
> use strict;
>
> # local hashes
> my %XT;
> my %VOC;
> my %ASM;
> my %USEDBY;
> my %DESCRIPTION;
> my %DSTACK;
> my %RSTACK;
> my %CSTACK;
> my %CATEGORY;
> my %TYPEOF;
>
> my $version="6.9";
>
> my $texdir="../doc/source/TG";
>
> my $asmdir="../common/words";
> my $devasmdir="../avr8/words";
>
> sub readASM {
> my ($filename) = @_;
> open(ASM, $filename) or die ("$filename: $!\n");
> my @ASM = <ASM>;
> close(ASM);
> my $ASM = "";
> my ($lbl, $state, $voc, $xt, $dstack, $rstack, $cstack, $category,
> $typeof);
> my ($line1, $line2, $line3, $description) = ("","","", "");
>
> # Added to try and remove the prevline issues
> # before fixing correctly.
> $line1 = $ASM[0]; # stack--effects
> $line2 = $ASM[1]; # category
> $line3 = $ASM[2]; # description
>
> # From this point on all prevline vars are now:
> # prevline3 is now $line1
> # prevline2 is now $line2
> # prevline1 is now $line3
> # This change is just to clarify that the first three
> # lines have to be the info we are looking for. It was
> # how it worked before but more loosly bound.
>
> foreach my $line (@ASM) {
> chomp($line);
> #
> next if $line=~/\.if/;
> $line =~ s/_VE_HEAD/VE_HEAD/;
> $ASM .= $line;
>
> if($line=~/^VE_(.*):/) {
> # start a new definition
> $ASM = "";
> $lbl = "XT_$1";
> $state = "new_header_found";
> $voc = "(unnamed)";
> $category = "unclassified";
> $dstack = "( -- )";
> $dstack = "($1)" if $line1=~/\([S]?:?([^\)]+)/;
> $rstack = "";
> $rstack = "(R: $1)" if $line1=~/R:\s+([^)]+)\)/;
> $cstack = "";
> $cstack = "(C: $1)" if $line1=~/C:\s+([^)]+)\)/;
> $description = $1 if $line3=~/^;(.*)/;
> if( $line2=~/;(.+)$/) {
> $category = $1;
> }
> next;
> }
>
> if($line=~/^;VE_(.*):/) {
> # start a new definition
> $ASM = "";
> $lbl = "XT_$1";
> $state = "new_header_found";
> $voc = "(hidden)";
> $dstack = $line1;
> $dstack = "( -- )";
> $dstack = "($1)" if $line1=~/\([S]?:?([^\)]+)/;
> $rstack = "";
> $rstack = "R($1)" if $line1=~/R:\s+(.+)\)/;
> $cstack = "";
> $cstack = "(C: $1)" if $line1=~/C:\s+(.+)\)/;
> $description = $1 if $line3=~/^;(.*)/;
> if( $line2=~/;(.+)$/) {
> $category = $1;
> }
> $category = "internal/hidden";
> next;
> }
> if($state =~ /new_header_found/ && $line=~/.dw\s*(.*)/) {
> $state = "new_voc_header";
> next;
> }
> if ($state =~ /new_voc_header/ && $line=~/.db\s*(.*)/) {
> my @voc = split/,/, $1;
> my $i=0;
> $voc = "";
> foreach my $v (@voc) {
> # next if $i++ == 0;
> print "[$v]";
> $voc .= chr(hex($1)) if $v=~/\$([\da-fA-F]+)/;
> $voc .= $1 if $v=~/"(\S+)"/;
> }
> $state = "vocabulary entry found";
> next;
> }
> if($line=~/^XT_(.*)/){
> $state = "xt_found";
> next;
> }
> if($state=~/xt_found/ && $line=~/.dw\s+(\w+)/) {
> $xt = $1;
> $state = "header_complete";
> next;
> }
> if($state =~ /header_complete/) {
> $DSTACK{$lbl} = $dstack;
> $RSTACK{$lbl} = $rstack;
> $CSTACK{$lbl} = $cstack;
>
> $XT{$lbl} = $xt;
> $VOC{$lbl} = $voc;
> $DESCRIPTION{$lbl} = $description;
> push @{$CATEGORY{$category}}, $lbl;
> $state = "parsing_body";
> next;
> }
>
> if($state =~ /parsing_body/) {
> $ASM{$lbl} = $ASM if $ASM=~/\w/;
> }
> }
> }
>
> sub _head {
> my ($title) = @_;
> my ($r);
> open(I, "refcard-head.rst") or die "refcard header not found";
> while(<I>) {
> s/\*VERSION\*/$version/g;
> $r .= $_
> }
> close(I);
> return $r;
> }
>
> sub _foot {
> }
>
> sub printLaTeX {
> my ($title) = @_;
> open(LATEX, ">$texdir/refcard.rst") or die "$!\n";;
> print LATEX _head($title);
> foreach my $category (sort keys %CATEGORY) {
> next if $category=~/^\s*$/;
> next if $category=~/internal/;
>
> print "$category\n";
> my $cattxt = $category;
> $cattxt =~s/\s+(.*)/$1/;
> print LATEX "\n$cattxt\n". "-" x length($cattxt) . "\n\n";
> foreach my $lbl (sort @{$CATEGORY{$category}}) {
> my $xt = $XT{$lbl};
> my $voc = $VOC{$lbl};
> my $shortlbl = substr($lbl, 3);
> my $descr = $DESCRIPTION{$lbl};
>
> my $dstack = $DSTACK{$lbl};
> my $rstack = $RSTACK{$lbl};
> my $cstack = $CSTACK{$lbl};
> my $verbdelim = "|";
> $verbdelim = "/" if $dstack=~/$verbdelim/;
> # print LATEX ".. _ $lbl:\n";
> #$voc =~ s/\\/\\textbackslash/g;
> #$voc =~ s/\#/\\#/g;
> # $voc =~ s/]/{]}/g;
> ##voc =~ s/\[/{[}/g;
> $voc =~ s/\$/\\\$/g;
> #$voc =~ s/_/\\_/g;
> $voc =~ s/"/''/g; # '"
> #$voc =~ s/\+/\\\+/g;
> #$voc =~ s/-/\\-/g;
> #$voc =~ s/\*/\\\*/g;
> $voc =~ s/\\/\\\\/g;
> #$descr =~ s/_/\\_/g;
> print LATEX "* :command:`$voc`\n";
> print LATEX " $dstack\n";
> print LATEX " $rstack\n" unless $rstack =~ /^\s*$/;
> print LATEX " $cstack\n" unless $cstack =~ /^\s*$/;
> print LATEX " $descr\n\n";
>
> }
> print LATEX "\n\n";
> }
> print LATEX _foot();
> }
>
> opendir(CWD, $asmdir);
> foreach (reverse sort readdir(CWD)) {
> next unless -f "$asmdir/$_";
> next unless /(.*).asm$/;
> my $basename = "$asmdir/$_";
> print "$basename\n";
> readASM($basename);
> }
>
> # Adding the second dir to be searched then keeps the
> # sorted lists altogether for the webpage
>
> opendir(CWD, $devasmdir);
> foreach (reverse sort readdir(CWD)) {
> next unless -f "$devasmdir/$_";
> next unless /(.*).asm$/;
> my $basename = "$devasmdir/$_";
> print "$basename\n";
> readASM($basename);
> }
> print "\n";
> printLaTeX($version);
> print "\n";
>
> ========= END make-refcard-rst =====================
>
|
|
From: Mark R. <cab...@gm...> - 2020-07-13 19:09:38
|
So here is a working hack to make a refcard with both the avr8/works and
common/words directory. Since I don't even sort of speak Perl I'll leave
any real fixes to someone who does. However, I made a few notes pointing
out the things that were the issue before.
There is still the issue of files that don't have the 3 lines at the top of
stack effects, category and description. It is easy to see which files need
to be fixed so they can be scanned correctly. The ones in the unclassified
group at the end can be a little tougher to find. I had to search for <.db
"-1"> to find that one in num-constants.asm. Those did fail pretty
gracefully though.
tl;dnr
This works in a hackish sort of way. Still work to do but closer now.
========= START make-refcard-rst ===================
#!/usr/bin/perl
use strict;
# local hashes
my %XT;
my %VOC;
my %ASM;
my %USEDBY;
my %DESCRIPTION;
my %DSTACK;
my %RSTACK;
my %CSTACK;
my %CATEGORY;
my %TYPEOF;
my $version="6.9";
my $texdir="../doc/source/TG";
my $asmdir="../common/words";
my $devasmdir="../avr8/words";
sub readASM {
my ($filename) = @_;
open(ASM, $filename) or die ("$filename: $!\n");
my @ASM = <ASM>;
close(ASM);
my $ASM = "";
my ($lbl, $state, $voc, $xt, $dstack, $rstack, $cstack, $category,
$typeof);
my ($line1, $line2, $line3, $description) = ("","","", "");
# Added to try and remove the prevline issues
# before fixing correctly.
$line1 = $ASM[0]; # stack--effects
$line2 = $ASM[1]; # category
$line3 = $ASM[2]; # description
# From this point on all prevline vars are now:
# prevline3 is now $line1
# prevline2 is now $line2
# prevline1 is now $line3
# This change is just to clarify that the first three
# lines have to be the info we are looking for. It was
# how it worked before but more loosly bound.
foreach my $line (@ASM) {
chomp($line);
#
next if $line=~/\.if/;
$line =~ s/_VE_HEAD/VE_HEAD/;
$ASM .= $line;
if($line=~/^VE_(.*):/) {
# start a new definition
$ASM = "";
$lbl = "XT_$1";
$state = "new_header_found";
$voc = "(unnamed)";
$category = "unclassified";
$dstack = "( -- )";
$dstack = "($1)" if $line1=~/\([S]?:?([^\)]+)/;
$rstack = "";
$rstack = "(R: $1)" if $line1=~/R:\s+([^)]+)\)/;
$cstack = "";
$cstack = "(C: $1)" if $line1=~/C:\s+([^)]+)\)/;
$description = $1 if $line3=~/^;(.*)/;
if( $line2=~/;(.+)$/) {
$category = $1;
}
next;
}
if($line=~/^;VE_(.*):/) {
# start a new definition
$ASM = "";
$lbl = "XT_$1";
$state = "new_header_found";
$voc = "(hidden)";
$dstack = $line1;
$dstack = "( -- )";
$dstack = "($1)" if $line1=~/\([S]?:?([^\)]+)/;
$rstack = "";
$rstack = "R($1)" if $line1=~/R:\s+(.+)\)/;
$cstack = "";
$cstack = "(C: $1)" if $line1=~/C:\s+(.+)\)/;
$description = $1 if $line3=~/^;(.*)/;
if( $line2=~/;(.+)$/) {
$category = $1;
}
$category = "internal/hidden";
next;
}
if($state =~ /new_header_found/ && $line=~/.dw\s*(.*)/) {
$state = "new_voc_header";
next;
}
if ($state =~ /new_voc_header/ && $line=~/.db\s*(.*)/) {
my @voc = split/,/, $1;
my $i=0;
$voc = "";
foreach my $v (@voc) {
# next if $i++ == 0;
print "[$v]";
$voc .= chr(hex($1)) if $v=~/\$([\da-fA-F]+)/;
$voc .= $1 if $v=~/"(\S+)"/;
}
$state = "vocabulary entry found";
next;
}
if($line=~/^XT_(.*)/){
$state = "xt_found";
next;
}
if($state=~/xt_found/ && $line=~/.dw\s+(\w+)/) {
$xt = $1;
$state = "header_complete";
next;
}
if($state =~ /header_complete/) {
$DSTACK{$lbl} = $dstack;
$RSTACK{$lbl} = $rstack;
$CSTACK{$lbl} = $cstack;
$XT{$lbl} = $xt;
$VOC{$lbl} = $voc;
$DESCRIPTION{$lbl} = $description;
push @{$CATEGORY{$category}}, $lbl;
$state = "parsing_body";
next;
}
if($state =~ /parsing_body/) {
$ASM{$lbl} = $ASM if $ASM=~/\w/;
}
}
}
sub _head {
my ($title) = @_;
my ($r);
open(I, "refcard-head.rst") or die "refcard header not found";
while(<I>) {
s/\*VERSION\*/$version/g;
$r .= $_
}
close(I);
return $r;
}
sub _foot {
}
sub printLaTeX {
my ($title) = @_;
open(LATEX, ">$texdir/refcard.rst") or die "$!\n";;
print LATEX _head($title);
foreach my $category (sort keys %CATEGORY) {
next if $category=~/^\s*$/;
next if $category=~/internal/;
print "$category\n";
my $cattxt = $category;
$cattxt =~s/\s+(.*)/$1/;
print LATEX "\n$cattxt\n". "-" x length($cattxt) . "\n\n";
foreach my $lbl (sort @{$CATEGORY{$category}}) {
my $xt = $XT{$lbl};
my $voc = $VOC{$lbl};
my $shortlbl = substr($lbl, 3);
my $descr = $DESCRIPTION{$lbl};
my $dstack = $DSTACK{$lbl};
my $rstack = $RSTACK{$lbl};
my $cstack = $CSTACK{$lbl};
my $verbdelim = "|";
$verbdelim = "/" if $dstack=~/$verbdelim/;
# print LATEX ".. _ $lbl:\n";
#$voc =~ s/\\/\\textbackslash/g;
#$voc =~ s/\#/\\#/g;
# $voc =~ s/]/{]}/g;
##voc =~ s/\[/{[}/g;
$voc =~ s/\$/\\\$/g;
#$voc =~ s/_/\\_/g;
$voc =~ s/"/''/g; # '"
#$voc =~ s/\+/\\\+/g;
#$voc =~ s/-/\\-/g;
#$voc =~ s/\*/\\\*/g;
$voc =~ s/\\/\\\\/g;
#$descr =~ s/_/\\_/g;
print LATEX "* :command:`$voc`\n";
print LATEX " $dstack\n";
print LATEX " $rstack\n" unless $rstack =~ /^\s*$/;
print LATEX " $cstack\n" unless $cstack =~ /^\s*$/;
print LATEX " $descr\n\n";
}
print LATEX "\n\n";
}
print LATEX _foot();
}
opendir(CWD, $asmdir);
foreach (reverse sort readdir(CWD)) {
next unless -f "$asmdir/$_";
next unless /(.*).asm$/;
my $basename = "$asmdir/$_";
print "$basename\n";
readASM($basename);
}
# Adding the second dir to be searched then keeps the
# sorted lists altogether for the webpage
opendir(CWD, $devasmdir);
foreach (reverse sort readdir(CWD)) {
next unless -f "$devasmdir/$_";
next unless /(.*).asm$/;
my $basename = "$devasmdir/$_";
print "$basename\n";
readASM($basename);
}
print "\n";
printLaTeX($version);
print "\n";
========= END make-refcard-rst =====================
|