After a couple of hours of fiddling I have managed to put together a simple windowing system. It’s modelled after the Amiga way of doing things (predictably), so I’ve got screens, windows and gadgets. All of these inherit from a “Gadget” class that contains basic functionality such as drawing bevelled edges, storing width, height and location of the item, etc.
I initially had the full windows moving around when dragged, but I’ve since switched to the XOR method as it’s so much easier to clean up after it as the stylus moves around - just XOR the same location again and you’re back to the initial state.
Still not sure how I’m going to handle cleaning up after moving windows yet - the current system (redrawing the entire gadget set from the screen downwards) isn’t very practical.