On Wed, Jun 30, 2004 at 09:54:08PM -0400, Martin Klingensmith wrote: > 1. Does Wloader work with an 877A Not exactly. One must understand the 16F self programming hierarchy: 1) At the bottom is the simple 16F877 and bretheren (sisteren?). No erase required and can reprogram a single word at a time. 2) Next up is the A version of these parts. In order to speed programming efficiency program memory is written in 4 word blocks. This means a few of things. One is that you have to write 4 consecutive words at a time. The other is that all blocks need to start with addresses ending in 00 binary. One other coming later. 3) Next are the newer 16F88/16F819 parts. In addition to the 16F877A requirements, they also require that memory be erased in 32 word blocks. And program memory cannot be reprogrammed until that erase is done. Now for Wloader this has a few implications: 1) Your application will have issues because of addresses 0-3. And of course all applications use these. The problem are that while the original 16F877 could write locations 0-3 (or actually a saved copy of them ) individually, the others higher up in the hierarchy must write them as a block. The original wloader would write address 0-2 in the save area and address 3 in its original locatation (because wloader itself occupies. But because of the 4 block write requirement, both of these fail badly. 0-2 never get written to the save area (no address 3 to complete the block), and the write to 3 (which does work because the address ends in 11) overwrites addresses 0-2 which as I mentioned are occupied by the bootloader. So you slag wloader and your application can't run. Not good. 2) The serial application (xwisp.py in this case) needs to be constructed to always send 4 word blocks even if some of the locations in the block do not actually have to be written. 3) Let's not even get into the lack of row erase. So Wouter has solved the problem at some point. I'm not sure if he ever released that code. It probably added some restrictions like A jump is required from address 0-3. Then force a 4 word write to the save area and never overwrite the actual bootloader 0-3. BTW have you tried linwload? Woj wrote it quick and dirty several years ago as a C based Linux equivalent to xwisp for wloader. It works. I updated it to be kinder to system resources when waiting. I have the code posted on my page http://www.finitesite.com/d3jsys Maybe you can use it as another test point to see if you can load. Hope this gives you some insight. BAJ -- http://www.piclist.com hint: PICList Posts must start with ONE topic: [PIC]:,[SX]:,[AVR]: ->uP ONLY! [EE]:,[OT]: ->Other [BUY]:,[AD]: ->Ads