Thanks for the heads up on the PDS. I'll check go check it out. Although on the current project I extremely doubt I'll be jumping ship (... I can almost see the shore as we speak). However on another project, It might certainly be a consideration. How is the optimization of the code it produces?

Also as I said in my previous post, reliability plays a key role in my choice of programming tools. I tend to stick to what works, and usually find work arounds for minor ommisions. Case in point; the lack of string handling ability in PBP I quickly resolved by taking a different approach. At first I was stumped at not being able to set up a string variable that I could later pass to an I2C routine. Of course the solution came in the form of using lookup tables as shown below (printascii would go to a separate print routine for output, in my case a specialized I2C routine).

For y=0 To 255
Gosub mesghello
If ascii = Null Then exit
Gosub printascii
Next y

mesghello: Lookup y,["hello world",Null],ascii
Return

In my 6502 assembler days, I used a routine that would pop the return address off the stack, increment it by 1 to pick up the start of the ascii data to be sent, send the data, and then modify the RTS to return directly following the ascii data (next example).

jsr printascii
.byte "hello world",Null
-- rentry point upon return from printascii routine --

Much simpler, and some what more readable when looking at the source code (the messages appear where used, and not in a later table). However for messages that would be reused several times through out a program, the table approach is preferred in order to save code space. Unfortunately I haven't figured out a similar method that would work either within PBP or as an @asm script (can't pop the stack as far as I know).

I ran a suggestion by the makers of PBP about the possibility of including something like the LCDOUT command maybe in the form "BYTEOUT var{,item...} example:

ascii var byte[255]

BYTEOUT ascii,"hello world",Null
Gosub print ascii


printascii:
For y=0 To 255
If ascii[y] = Null Then Return
Gosub sendascii ' send character by whatever method desired
Next y
Return

This would yield something similar to the 6502 assembly example.

Anyway getting back to the original topic so to speak; picnaut thanks again for your sugestion about PDS.