Now go outside and look at the sky.
After a few months of not much time (actually that's still true, I'm just coping better!) I have dug up my unfinished emulation project.
The 68K emulation now knows maybe 75% of the instruction set and my virtual Atari ST runs through a good chunk of the early initialization code, before it currently all blows up in the MFP setup routines. This is of course where things get really hairy - up to now all I've done is I have created a software model of the 68000 CPU and just enough of an environment to load the original TOS roms and to step through the instructions..
Now I will have to create the virtual equivalent of the Atari hardware, and while I'm pretty sure I can ignore much of the original hardware, I will need some basics to get to a working emulation. My goal for now is to have TOS boot all the way, have the GEM desktop come up and to be able to interact with it with the mouse. For that I will really only need the keyboard 6840 ACIA chip to provide mouse and keyboard input and of course a working video system.
There are a number of uncertainties for me around the overall interrupt handling in the ST and it is surprising how deep I had to dig in some of the documentation around the ST and the CPU to figure out some of the details that I had to never even think about back when I was still actively writing machine code on the actual machine. It's funny that in a lot of ways I am now more of an expert on the Atari ST than back when I still had the physical machine on my desk!
As a second step, once the good old green desktop comes up on the screen, I will see if there is a way to load disk images - and I would very much like to avoid having to recreate a software emulation for the Atari disk interface. The 3.5" disk interface was spread over several chips - some of the signals were handled by the sound chip! - and all I remember from the software side was that this was a very cumbersome interface with lots of interrupt polling and register work.
It would actually be even easier to not do the floppy disk interface at all and to just provide the hard disk interface - the AHDI (Atari Hard Disk Interface) is handled by the DMA controller and it has a relatively simple command structure. We will see... first I've got to see some pixels on the screen!