First demo:
http://www.atari8.co.uk/downloads/gui_10_06_11.zip
Guidelines and notes:
•Run this with BASIC off and no carts present (SDX users use "X GUI.XEX"). You can boot the file with an XEX loader (for example, in an emulator), since it doesn't yet require DOS.
•You need a mouse on port 2.
•Use File->New to open more windows on the desktop. They're all called "C:>*.*" at the moment.
•Use Tools->Hide Mouse to toggle mouse pointer hiding when doing redraws. When the option is ticked, the mouse pointer will disappear and flicker, etc. Personally I can hardly tell the difference performance wise.
•Single-click registering is very slow: this is just a tweaking issue I was too tired to rectify this evening. To bring a back window to the front or use the maximize button (which doesn't toggle yet), you'll need to hold the left button down for a good second.
•You shoudn't need to single-click a back window before dragging its scroll handle or size box, etc, but you do at the moment. This is because I haven't finished the buffered event pipe yet.
•You can't close windows down yet.
•The desktop icons aren't "live" yet (i.e. they don't do anything).
•Don't be surprised if you manage to make a window wrap around and create screen garbage. The boundary checks are rough at the moment.
•The border flash is part of some debug code.
•Please no complaints about full desktop redraws. I'm well aware of what needs to be done. There are no back buffers or any "smart" redraws at the moment. That comes later.
•There are several really terrific bugs just waiting to be discovered.
There's a very odd bug which I need to track down which creates all kinds of problems when new code gets inserted or old code removed. I figure there's some rogue write going on in RAM which does or doesn't upset something important depending on the size of the code. Gonna be fun tracking that one down.
I've probably forgotten to mention some other salient points. Hopefully I'll get some feedback over the weekend.
I optimized the VBL and slashed a load of cycles out of it this evening: it now uses the font renderer bit-shift lookup table to divide MOUSE_X by 8. I also created a lookup table for the dynamic DLI to save doing computations on MOUSE_Y in relation to the display list. This has probably saved several thousand cycles per second.
Lots of changes in the pipeline, so hopefully this will be the first of many regular updates.