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.