>The PIC's primary limitations currently fall in two areas as I see it: > >[1] Addressing modes: while the IRP/RP0/RP1 arrangement of the 16Cxx is about > as good as a 14-bit instruction format could allow, it does divide the RAM > of the PIC into rather discrete pieces. Also, the existence of only a > single index register makes operations such as memory-to-memory copying > difficult. Actually, I think this demonstrates one of the advantages of choosing the PIC range. There's a very healthy spread of performance/features from which to select, ranging from the 12C508 to the 17C756. And this is without the mind-numbing plethora of chips that Phillips, for example , have in their 8051 range. The 14-bit core is middle of the range and has only one index register. But the 16-bit core (17Cxx) has two index registers (but doesn't come in anything smaller than a 40-pin dip). If the 0.5k pages of the 12-bit 16C56 are a problem, then use the 2k pages of the 14-bit 16C556. If page swapping is _still_ a nuisance then use the 8k pages of the 17C42. Select almost any PIC and its possible to easily step-up to another PIC that has: more memory; or more I/O; or some A/D; or a UART; or a h/w multiply; etc. What's more, these steps are usually associated with a price increment of about a quarter of a dollar. Go from 0.5k eprom to 1k eprom: add 25c. Go from no data eeprom to 64 bytes of data eeprom: add 25c... This means that device selection is low risk. If you find you're running out of grunt you don't have to do a complete re-design. Conversely, at the beginning of the project you can simply select the 'largest' device in the package size you're using and later on, with the code finished, change down to the nearest fitting chip. ___Bob