Leo Duran wrote a MESSDOS utilty to convert HP41 user code file formats, available on TOS/LibView.cfm?Command=View&ItemID=32
In the Readme.txt file the different formats are described.
The RAW format is described there as
[compiled code] + [1-byte checksum] + [trailer]
In fact V41 use only the [compiled code] or generates only the [compiled code]. Emu42 is compatible with the V41 RAW code. The [1-byte checksum] and [trailer] section is ignored in both emulators. Leo Duran's program accept these also a RAW files where V41 and Emu42 also accepts Leo Duran's RAW format.
Emu42 has two minor modifications of this format:
The [compiled code] can contain more than one GLOBAL_END.
->
LBL "A"
blabla
GLOBAL_END
LBL "B"
blabla
GLOBAL_END
When V41 load such a user code file it load's only the first global label, LBL "B" is ignored.
When V41 see code like
LBL "A"
blabla
LBL "B"
blabla
GLOBAL_END
you have the ability to save the LBL "A" and LBL "B" object on V41. In Emu42 this makes problems when you select more than one global label. In this case the section between LBL "B" and GLOBAL_END would be twice on the user code file. To avoid this Emu42 shows only LBL "A".
Further V41 has a minor bug, it cannot save FOCAL programs like
blabla
LBL "A"
blabla
GLOBAL_END
The part before LBL "A" is ignored. In Emu42 this problem has been solved. V41 has no problems to load the code above.
You don't have to take care about the link fields inside the user code. Both V41 and Emu42 recalculate them during the user code load. This is especially neccessary in Emu42 because you may have more than on global label which aren't together in the source. Second Emu42 is making a PACK and adding some HP-42S specific 00 bytes after numbers at loading, so the link offsets in the source are wrong most times anyway.
Happy implementing,
Christoph
BTW, you should send Leo Duran a copy of your format that he can add it to his Hp41uc.zip program. ;-)