Most of the size difference is ROMs that are built into emulator2001 , eg data statements that are padded by zeros inside the executable making the calculation more like 3,000,000 / 43,000 (just stab in dark)
So, 2/3rd's of the B3D version is taken up with data statements which are not present in the C version. It would have been nice if you could have mentioned this major difference earlier in the thread;)
I agree with your point about bloated individual instructions though. In particular, this
END taking 1.5k is an example of bloat
the program
END
END
END
END
takes 6K that is bloat
the program
END
END
END
END
takes 6K that is bloat
Even if End used 0.1K it's still way too much. Be nice to know what all the space is required for.