A couple of corrections...
> What Falcon does is pad each leading field out with spaces to a
It first removes all trailing spaces for leading string fields and
zeros for leading numeric fields, then pads the field with the
indexPadByte for that field which is either 0x20 (space) or
0x0, depending on the result of the isString() test on the field.
indexPadByte= (isString()) ? ' ' : 0;
> multiple of four bytes
For Falcon, a RUN is six bytes - five bytes of data and one byte
of segment position.