Investigating the problem of the failed simulation of Amforth in simavr I have 
added printing of every read and write operation to the FLASH and to the EEPROM.
Afterwards I've found, that when I define a very simple word:

> : test 12 ;
 ok  
>

It gives the following sequence of writes in the simavr (I attach the whole 
dump in gzipped format, together with bzipped .lst file from compilation,
so it is possible to identify addresses):

AVR_IOCTL_FLASH_SPM 01 Z:1b00 R01:ff01
AVR_IOCTL_FLASH_SPM 01 Z:1b02 R01:003f
AVR_IOCTL_FLASH_SPM 01 Z:1b04 R01:0d73
AVR_IOCTL_FLASH_SPM 01 Z:1b06 R01:3800
AVR_IOCTL_FLASH_SPM 01 Z:1b08 R01:3870
AVR_IOCTL_FLASH_SPM 01 Z:1b0a R01:03be
AVR_IOCTL_FLASH_SPM 01 Z:1b0c R01:381a
AVR_IOCTL_FLASH_SPM 01 Z:1b0e R01:ff04
AVR_IOCTL_FLASH_SPM 01 Z:1b10 R01:ffff
AVR_IOCTL_FLASH_SPM 01 Z:1b12 R01:ffff
AVR_IOCTL_FLASH_SPM 01 Z:1b14 R01:ffff
AVR_IOCTL_FLASH_SPM 01 Z:1b16 R01:ffff
AVR_IOCTL_FLASH_SPM 01 Z:1b18 R01:ffff
AVR_IOCTL_FLASH_SPM 01 Z:1b1a R01:ffff
AVR_IOCTL_FLASH_SPM 01 Z:1b1c R01:ffff
AVR_IOCTL_FLASH_SPM 01 Z:1b1e R01:ffff
AVR_IOCTL_FLASH_SPM 01 Z:1b20 R01:ffff
[...]
eeprom read 0002 : 87
eeprom read 0003 : 0d
eeprom write 0002 <- 88
eeprom write 0003 <- 0d
[...]
AVR_IOCTL_FLASH_SPM 01 Z:1b00 R01:ff01
AVR_IOCTL_FLASH_SPM 01 Z:1b02 R01:003f
AVR_IOCTL_FLASH_SPM 01 Z:1b04 R01:0d73
AVR_IOCTL_FLASH_SPM 01 Z:1b06 R01:3800
AVR_IOCTL_FLASH_SPM 01 Z:1b08 R01:3870
AVR_IOCTL_FLASH_SPM 01 Z:1b0a R01:03be
AVR_IOCTL_FLASH_SPM 01 Z:1b0c R01:381a
AVR_IOCTL_FLASH_SPM 01 Z:1b0e R01:ffff
AVR_IOCTL_FLASH_SPM 01 Z:1b10 R01:6574
AVR_IOCTL_FLASH_SPM 01 Z:1b12 R01:ffff
AVR_IOCTL_FLASH_SPM 01 Z:1b14 R01:ffff
AVR_IOCTL_FLASH_SPM 01 Z:1b16 R01:ffff
AVR_IOCTL_FLASH_SPM 01 Z:1b18 R01:ffff
AVR_IOCTL_FLASH_SPM 01 Z:1b1a R01:ffff
AVR_IOCTL_FLASH_SPM 01 Z:1b1c R01:ffff
AVR_IOCTL_FLASH_SPM 01 Z:1b1e R01:ffff
AVR_IOCTL_FLASH_SPM 01 Z:1b20 R01:ffff
[...]
eeprom read 0002 : 88
eeprom read 0003 : 0d
eeprom write 0002 <- 89
eeprom write 0003 <- 0d
[...]
AVR_IOCTL_FLASH_SPM 01 Z:1b00 R01:ff01
AVR_IOCTL_FLASH_SPM 01 Z:1b02 R01:003f
AVR_IOCTL_FLASH_SPM 01 Z:1b04 R01:0d73
AVR_IOCTL_FLASH_SPM 01 Z:1b06 R01:3800
AVR_IOCTL_FLASH_SPM 01 Z:1b08 R01:3870
AVR_IOCTL_FLASH_SPM 01 Z:1b0a R01:03be
AVR_IOCTL_FLASH_SPM 01 Z:1b0c R01:381a
AVR_IOCTL_FLASH_SPM 01 Z:1b0e R01:ffff
AVR_IOCTL_FLASH_SPM 01 Z:1b10 R01:ffff
AVR_IOCTL_FLASH_SPM 01 Z:1b12 R01:7473
AVR_IOCTL_FLASH_SPM 01 Z:1b14 R01:ffff
AVR_IOCTL_FLASH_SPM 01 Z:1b16 R01:ffff
AVR_IOCTL_FLASH_SPM 01 Z:1b18 R01:ffff
AVR_IOCTL_FLASH_SPM 01 Z:1b1a R01:ffff
AVR_IOCTL_FLASH_SPM 01 Z:1b1c R01:ffff
AVR_IOCTL_FLASH_SPM 01 Z:1b1e R01:ffff
AVR_IOCTL_FLASH_SPM 01 Z:1b20 R01:ffff
[...]
eeprom read 0002 : 89
eeprom read 0003 : 0d
eeprom write 0002 <- 8a
eeprom write 0003 <- 0d
[...]
AVR_IOCTL_FLASH_SPM 01 Z:1b00 R01:ff01
AVR_IOCTL_FLASH_SPM 01 Z:1b02 R01:003f
AVR_IOCTL_FLASH_SPM 01 Z:1b04 R01:0d73
AVR_IOCTL_FLASH_SPM 01 Z:1b06 R01:3800
AVR_IOCTL_FLASH_SPM 01 Z:1b08 R01:3870
AVR_IOCTL_FLASH_SPM 01 Z:1b0a R01:03be
AVR_IOCTL_FLASH_SPM 01 Z:1b0c R01:381a
AVR_IOCTL_FLASH_SPM 01 Z:1b0e R01:ffff
AVR_IOCTL_FLASH_SPM 01 Z:1b10 R01:ffff
AVR_IOCTL_FLASH_SPM 01 Z:1b12 R01:ffff
AVR_IOCTL_FLASH_SPM 01 Z:1b14 R01:3bb6
AVR_IOCTL_FLASH_SPM 01 Z:1b16 R01:ffff
AVR_IOCTL_FLASH_SPM 01 Z:1b18 R01:ffff
AVR_IOCTL_FLASH_SPM 01 Z:1b1a R01:ffff
AVR_IOCTL_FLASH_SPM 01 Z:1b1c R01:ffff
AVR_IOCTL_FLASH_SPM 01 Z:1b1e R01:ffff
AVR_IOCTL_FLASH_SPM 01 Z:1b20 R01:ffff
[...]
eeprom read 0002 : 8a
eeprom read 0003 : 0d
eeprom write 0002 <- 8b
eeprom write 0003 <- 0d
[...]
AVR_IOCTL_FLASH_SPM 01 Z:1b00 R01:ff01
AVR_IOCTL_FLASH_SPM 01 Z:1b02 R01:003f
AVR_IOCTL_FLASH_SPM 01 Z:1b04 R01:0d73
AVR_IOCTL_FLASH_SPM 01 Z:1b06 R01:3800
AVR_IOCTL_FLASH_SPM 01 Z:1b08 R01:3870
AVR_IOCTL_FLASH_SPM 01 Z:1b0a R01:03be
AVR_IOCTL_FLASH_SPM 01 Z:1b0c R01:381a
AVR_IOCTL_FLASH_SPM 01 Z:1b0e R01:ffff
AVR_IOCTL_FLASH_SPM 01 Z:1b10 R01:ffff
AVR_IOCTL_FLASH_SPM 01 Z:1b12 R01:ffff
AVR_IOCTL_FLASH_SPM 01 Z:1b14 R01:ffff
AVR_IOCTL_FLASH_SPM 01 Z:1b16 R01:3800
AVR_IOCTL_FLASH_SPM 01 Z:1b18 R01:ffff
AVR_IOCTL_FLASH_SPM 01 Z:1b1a R01:ffff
AVR_IOCTL_FLASH_SPM 01 Z:1b1c R01:ffff
AVR_IOCTL_FLASH_SPM 01 Z:1b1e R01:ffff
AVR_IOCTL_FLASH_SPM 01 Z:1b20 R01:ffff
[...]
eeprom read 0002 : 8b
eeprom read 0003 : 0d
eeprom write 0002 <- 8c
eeprom write 0003 <- 0d
[...]
AVR_IOCTL_FLASH_SPM 01 Z:1b00 R01:ff01
AVR_IOCTL_FLASH_SPM 01 Z:1b02 R01:003f
AVR_IOCTL_FLASH_SPM 01 Z:1b04 R01:0d73
AVR_IOCTL_FLASH_SPM 01 Z:1b06 R01:3800
AVR_IOCTL_FLASH_SPM 01 Z:1b08 R01:3870
AVR_IOCTL_FLASH_SPM 01 Z:1b0a R01:03be
AVR_IOCTL_FLASH_SPM 01 Z:1b0c R01:381a
AVR_IOCTL_FLASH_SPM 01 Z:1b0e R01:ffff
AVR_IOCTL_FLASH_SPM 01 Z:1b10 R01:ffff
AVR_IOCTL_FLASH_SPM 01 Z:1b12 R01:ffff
AVR_IOCTL_FLASH_SPM 01 Z:1b14 R01:ffff
AVR_IOCTL_FLASH_SPM 01 Z:1b16 R01:ffff
AVR_IOCTL_FLASH_SPM 01 Z:1b18 R01:3837
AVR_IOCTL_FLASH_SPM 01 Z:1b1a R01:ffff
AVR_IOCTL_FLASH_SPM 01 Z:1b1c R01:ffff
AVR_IOCTL_FLASH_SPM 01 Z:1b1e R01:ffff
AVR_IOCTL_FLASH_SPM 01 Z:1b20 R01:ffff
[...]
eeprom read 0002 : 8c
eeprom read 0003 : 0d
eeprom write 0002 <- 8d
eeprom write 0003 <- 0d
[...]
AVR_IOCTL_FLASH_SPM 01 Z:1b00 R01:ff01
AVR_IOCTL_FLASH_SPM 01 Z:1b02 R01:003f
AVR_IOCTL_FLASH_SPM 01 Z:1b04 R01:0d73
AVR_IOCTL_FLASH_SPM 01 Z:1b06 R01:3800
AVR_IOCTL_FLASH_SPM 01 Z:1b08 R01:3870
AVR_IOCTL_FLASH_SPM 01 Z:1b0a R01:03be
AVR_IOCTL_FLASH_SPM 01 Z:1b0c R01:381a
AVR_IOCTL_FLASH_SPM 01 Z:1b0e R01:ffff
AVR_IOCTL_FLASH_SPM 01 Z:1b10 R01:ffff
AVR_IOCTL_FLASH_SPM 01 Z:1b12 R01:ffff
AVR_IOCTL_FLASH_SPM 01 Z:1b14 R01:ffff
AVR_IOCTL_FLASH_SPM 01 Z:1b16 R01:ffff
AVR_IOCTL_FLASH_SPM 01 Z:1b18 R01:ffff
AVR_IOCTL_FLASH_SPM 01 Z:1b1a R01:000c
AVR_IOCTL_FLASH_SPM 01 Z:1b1c R01:ffff
AVR_IOCTL_FLASH_SPM 01 Z:1b1e R01:ffff
AVR_IOCTL_FLASH_SPM 01 Z:1b20 R01:ffff
eeprom read 0002 : 8d
eeprom read 0003 : 0d
eeprom write 0002 <- 8e
eeprom write 0003 <- 0d
[...]
AVR_IOCTL_FLASH_SPM 01 Z:1b00 R01:ff01
AVR_IOCTL_FLASH_SPM 01 Z:1b02 R01:003f
AVR_IOCTL_FLASH_SPM 01 Z:1b04 R01:0d73
AVR_IOCTL_FLASH_SPM 01 Z:1b06 R01:3800
AVR_IOCTL_FLASH_SPM 01 Z:1b08 R01:3870
AVR_IOCTL_FLASH_SPM 01 Z:1b0a R01:03be
AVR_IOCTL_FLASH_SPM 01 Z:1b0c R01:381a
AVR_IOCTL_FLASH_SPM 01 Z:1b0e R01:ffff
AVR_IOCTL_FLASH_SPM 01 Z:1b10 R01:ffff
AVR_IOCTL_FLASH_SPM 01 Z:1b12 R01:ffff
AVR_IOCTL_FLASH_SPM 01 Z:1b14 R01:ffff
AVR_IOCTL_FLASH_SPM 01 Z:1b16 R01:ffff
AVR_IOCTL_FLASH_SPM 01 Z:1b18 R01:ffff
AVR_IOCTL_FLASH_SPM 01 Z:1b1a R01:ffff
AVR_IOCTL_FLASH_SPM 01 Z:1b1c R01:381a
AVR_IOCTL_FLASH_SPM 01 Z:1b1e R01:ffff
AVR_IOCTL_FLASH_SPM 01 Z:1b20 R01:ffff
[...]
eeprom read 0002 : 8e
eeprom read 0003 : 0d
eeprom write 0002 <- 8f
eeprom write 0003 <- 0d
[...]

What's absolutely strange to me, is that definition of single word causes 
eeprom cells 2 and 3 to be rewritten 8 times (?!).
It will result in fast wear of the EEPROM. Maybe the value stored in cells 2 
and 3 of the EEPROM shpuld be stored in RAM (and
recreated after power up by scanning of the FLASH? It should be relatively easy 
to do?)

Additionally (and this is probably the simavr's bug) when new words are 
written, the previoulsy written values are again 0xffff.

Regards,
Wojtek
------------------------------------------------------------------------------
DreamFactory - Open Source REST & JSON Services for HTML5 & Native Apps
OAuth, Users, Roles, SQL, NoSQL, BLOB Storage and External API Access
Free app hosting. Or install the open source package on any LAMP server.
Sign up and see examples for AngularJS, jQuery, Sencha Touch and Native!
http://pubads.g.doubleclick.net/gampad/clk?id=63469471&iu=/4140/ostg.clktrk
_______________________________________________
Amforth-devel mailing list for http://amforth.sf.net/
Amforth-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/amforth-devel

Reply via email to