So Motorola apparently never produced the MC6839, a ROM containing position independent 6809 code for implementing (as far as I can see) IEEE 754 Draft 8. Motorola *did* however, release the resulting binary into (from what I understand) the Public Domain [1] but I've yet to find the actual source code, which would solve my current problem.
I'm playing around with the code in an MC6809 emulator [2] and trying to use it (getting my retro-software fix in as it were). It works---not as accurate as today's stuff, but close enough and it supports single and double precision. The current issue I have is with the FMOV opcode (register entry) described as: ------------------------------------------------------------------------------ |Function|Opcode| Register entry conditions | Stack entry conditions ------------------------------------------------------------------------------ | FMOV | $1A | U = precision parameter word| push arg | | | Y -> argument | push precision param word | | | D -> fpcb | push ptr to fpcb | | | X -> result | call FPO9 | | | | pull result ------------------------------------------------------------------------------ For moves, U contains a parameter word describing the size of the source and destination arguments. The bits are as follows, where the size is as defined in the fpcb control byte Bits 0-2 : Destination size Bits 3-7 : unused Bits 8-10 : Source size Bits 11-15: unused It's not clear if U should contain the actual parameter value, or a pointer to the parameter value. It just doesn't seem to work no matter how I code it. Anyone have any clue? -spc (I'm at a loss here ... ) [1] Available in the file fpo9.lzh here https://ftplike.com/browser/os9archive.rtsi.com/OS9/OS9_6X09/PROG/ [2] I wrote one: https://github.com/spc476/mc6809 Not much documentation I'm afraid.