Jump to content
IGNORED

New GUI for the Atari 8-bit


flashjazzcat

Recommended Posts

Well, that machine can do color at a greater pixel resolution than Ataris can. That said, I don't see the level of interaction you are aiming for.

 

Frankly, it reminds me of a simple DOS tool kit more than a real GUI environment. The most interesting part of this project to me is the "behind the scenes" work being done to actually facilitate GUI applications that can work together, instead of just presenting a structured input layer, as seen in that project.

 

They really should have attached a mouse for the demo too.

 

Color would be nice, but is totally not necessary to get the benefit of a GUI.

 

Another data point here: There is a project to bring a GUI to the Propeller. It's a 32K device, unless somebody adds external memory. Turns out, that is required for a lot of reasons. One of those is the expectation of color, and the sheer size of the video buffer, which takes a big chunk of the 32K, meaning the app has to sit in the external RAM.

 

I'm very intrigued by this project because it's efficient, and the results so far, on a 320 pixel screen exceeded my initial expectations. Well done so far! I am eager to show this off to a few people, just to reset some expectations on what GUI possibilities are in limited environments. You've really done a nice job so far balancing things.

 

Lots of perspective here. It seems to me, after following this for a while, the hard work is in the planning and back end structure. All to easy to go right for the graphics and the expectations that come with that. Realistically, that should be a secondary consideration, after what I've seen.

Edited by potatohead
Link to comment
Share on other sites

Thanks... doesn't seem like a necessary purchase yet, though. :)

 

Would you make a monthly compiled .atr demo of your GUI? :D

Let me explain the situation, since a few people are probably wondering what happened to the demo, mooted just before I spent a month finishing the MyIDE suite. Coming back to the project after a month off has its advantages and disadvantages. The disadvantages:

 

  • The "rhythm" of the project has been interrupted
  • I was living and breathing the code before, and now I'm having to refamiliarize myself with the thousands of lines of code I churned out over a couple of months
  • The demo has been delayed, and the code somehow doesn't seem quite ready for demo release

Adavantages:

 

  • I can now look at things with fresh eyes, and many aspects seem ripe for redesign now, before they cause problems later on
  • I've had time to think and do more research, rather than just blustering into the next phase
  • The demo has been delayed, and the code somehow doesn't seem quite ready for demo release :)

We've already seen how high expectations are, and how scrupulously the demo will be appraised. I want it to be as good as possible.

 

At the very least, there are a couple of bugs to iron out, and it should be possible to bring windows to the front in the demo. At least we're not far from that point.

 

The most interesting part of this project to me is the "behind the scenes" work being done to actually facilitate GUI applications that can work together...

Absolutely. Hopefully this is what will distinguish this project from those that have gone before.

 

They really should have attached a mouse for the demo too.

Certainly: it's the second thing that struck me after the mono-spaced text.

 

Color would be nice, but is totally not necessary to get the benefit of a GUI.

I completely agree, although if it was available at 320px, I would have used it. It's not, but I see that as no great obstacle.

 

I'm very intrigued by this project because it's efficient, and the results so far, on a 320 pixel screen exceeded my initial expectations. Well done so far! I am eager to show this off to a few people, just to reset some expectations on what GUI possibilities are in limited environments. You've really done a nice job so far balancing things.

Thanks.

 

It seems to me, after following this for a while, the hard work is in the planning and back end structure. All to easy to go right for the graphics and the expectations that come with that. Realistically, that should be a secondary consideration, after what I've seen.

This is absolutely correct, and a point which many commentators have missed. Roughly speaking, about ten percent of the existing code deals with drawing things to the screen (partly, of course, because of the fact that objects use redraw "methods", which in turn use common code). I myself was surprised - a few weeks into the project - just how detached one becomes from graphical operations when immersed in large amounts of code whose only interaction with the screen is to send a redraw message to a sub-tree.

Edited by flashjazzcat
Link to comment
Share on other sites

A bit of fun before the hard work starts again (I just fixed up those couple of bugs I mentioned, although discerning viewers will note I'm actually still dragging the window behind the front one. This is just an incomplete implementation of focus-shifting).

 

http://www.youtube.com/watch?v=8nA4WaJTc7Y

 

It was MrFish who pointed out that you can actually open more windows with File->New. It's an unintentional side-effect of the way the sample app is coded up (it calls File->New twice to open the windows; naturally logic dictates that if the menus work, File->New will then open up windows, but I had not tried it). There are actually four windows in the video, but one completely and exactly obscures another.

 

MrFish claimed it was difficult to discern the window border components drawing with the emulator slowed down. That's what we like to hear. :) Of course, this brute-force update isn't the way the end-product will work, but it's nice to see how the system chews up those empty windows.

 

It's really nice coming back to this after a month. I'd forgotten how fast the pointer and menus are. But enough fun... back to the hard work.

Edited by flashjazzcat
Link to comment
Share on other sites

One of the archives has the source code and binaries for enhanced speed floating point; I seem to recall years ago "rolling my own" 800xl OS into an EPROM, adding the updated floating point, the Hyper E: screen handler, and removing the international character set (since I'm a North American philistine) to add a hot-key screen dump utility for graphics zero.

Link to comment
Share on other sites

One of the archives has the source code and binaries for enhanced speed floating point

Finding that archive would prove useful for a few other projects (like emulators), as would finding roms for other devices like bit 3. Wasn't there a rom dump project that made all the 3rd party hardware device roms available?

Link to comment
Share on other sites

One of the archives has the source code and binaries for enhanced speed floating point

Finding that archive would prove useful for a few other projects (like emulators), as would finding roms for other devices like bit 3. Wasn't there a rom dump project that made all the 3rd party hardware device roms available?

Here's a fastmath ROM

Fastmath.zip

Link to comment
Share on other sites

The GUI doesn't use the FP ROM routines at all. I perform all calculations using signed 16 bit integers, obtaining and then dispensing with fractional precision using shifting techniques described further back in the thread. It's about as fast as it's gonna get. :)

 

More than monthly videos (which we've had already), I aim to produce monthly demos. :D

Edited by flashjazzcat
Link to comment
Share on other sites

I spent some time in the small hours last night downloading a copy of SymbOS and actually installing it on a CPC emulator. I have to say I was pretty knocked out by it. It makes pretty much everything else look primitive, although it suffers from a terrible lack of applications.

 

Anyway, I wanted to get a feel for it, and it's really nice. I used the WinAPE emulator. Perhaps the thing that struck me most about SymbOS (quite apart from the brilliant pre-emptive multi-tasking) is the beautifully implemented stacking window manager. It evidently maintains a dirty rectangle list, and does a very nice job of updating newly revealed areas of underlying windows and desktop regions when the top window is moved or resized. Relying on redraws, the system requires no background buffer, thus saving a ton of RAM.

 

Now, with regard to the A8 GUI, all the clipping gets done on byte boundaries, which is a bugger when it comes to defining clip regions outside of the borders. The border/drop-shadow is 1px on the top/left side and 2px on the bottom/right edge. A slightly ugly side-effect of adopting a dirty rectangle system here is that the borders of windows would be momentarily overwritten by the underlying graphics until the windows in the foreground redrew themselves (or at least their border).

 

One way around this is to use a huge bitmask, then we can mask out anything we like with absolute pixel precision. If the top window is moved, we can easily and quickly produce a mask revealing just the area of the screen which has been revealed, then draw everything else through it. Of course, no optimisation is possible unless we tell the other windows the approximate dimensions of the hole in the bitmask. But it would do away with the need for rectangle lists altogether.

 

Anyway: I pondered for a while over bi-directional list walking, and came to the conclusion that the best way to ensure the mouse is detected over the last drawn object is to just keep walking the list until the last element. That way, we don't have to have a "last child" pointer and don't have to walk right through the list then start walking back again in the opposite direction. In this GUI, objects in the foreground are near the end of the list (this is rarely of relevance outside the realm of overlapping windows and desktop icons).

 

Anyway - not to sound depressing, but SymbOS took ten years... :sad:

Edited by flashjazzcat
Link to comment
Share on other sites

Have you seen it running on MSX ??? Its even better :)

They even wrote separate graphics driver for gfx9000 MSX addon (http://www.faq.msxnet.org/gfx9000.html).

Its even playing videos and music and some...

Multi tasking like that is really impressive for an 8-bit cpu...

 

But don't worry yourself about 10 year period. You can do it much faster!

 

Just focus on getting one thing working at a time.

Link to comment
Share on other sites

Yes, multi-tasking is so tempting, and I'm trying to design the system so that it will at least be possible to have a crack at this later in the development cycle without doing a complete re-write.

 

Anyway, I've been doing my homework again, and am busy implementing a proper interrupt-driven message pipe, as always with frequent reference to both the GEM AES documentation, and Inside Macintosh. It's really coming together nicely now.

Link to comment
Share on other sites

First off, I didn't see FJC's demo, so I didn't know he was that far along with this. It looks great, btw, very clean design.

 

I hope I'm not stepping on any toes here, for whatever reason. I thought I'd mention FLTK, since it's a good design. FL stands for Fast, Light, if that sways anybody. It is in C++, but we all know that's just C structures with function pointers. I bet FJC could even implement that with MADS or by hand if he had to. C++ was after all designed to tackle this exact problem. It's important for example, to be able to call superclass methods once you've done your own event handling or drawing. This actually makes things *smaller*. An a bare FLTK app compiles to maybe 20K on windows.

 

The other litmus test for a GUI system is how it handles resizing behavior. I rememer trying to do this in Motif at one point, and it turned out to be quite confusing. I think you had to link widgets to other widgets that were adjacent, and do all sorts of magic to do that. Motif suffered from the same problems as X11, it was designed by committee of people trying to impress their bosses with a whole lot of grunt work. This is why so many people were tempted to code their own system. There had to be a better simpler way...

 

FLTK handles resizing pretty implicitly. You only have to specify the resizable area of a window. The widgets in that area will be resized proportionally to the initial dimensions of each widget compared to the window size.. (what was that about FP routines?) The widgets outside the resizable area are moved. So for example, you don't want the scrollbars to resize, just leave 'em outside the resizable area. WHOOP..

 

Other than that, if you go by name recognition, the guy that designed it was behind NeXT.. Wasn't that the only 68040 box ever created? Oh well, who cares I guess, and I'm sure it wasn't.

 

If you're still not convinced, take a look at some sample code from a few toolkits out there. FLTK code is by far the smallest, and cleanest. I looked at wxWidgets, Qt, and GTK. No contest.

 

Oh, one more thing. With all the bloatware out there and all the BS in CS, it's no wonder people go back to an 8 bit machine from the 80's.

Link to comment
Share on other sites

Monospaced 80 column, but using a lot of colour. Not a direct, like-for-like "competitor", of course...

The machine - eBay Auction -- Item Number: 1106848707711?ff3=2&pub=5574883395&toolid=10001&campid=5336500554&customid=&item=110684870771&mpt=[CACHEBUSTER]

---------------------------------------------------------------

Would you make a monthly compiled .atr demo of your GUI? :D

 

/me beats head against wall...

 

that is a B128, NOT a C128...

http://ace128.mirkosoft.sk/requirements.html

 

sloopy.

Link to comment
Share on other sites

its one of their 'business' computers 'Commodore Business Machines', see it has 00 key for currency entry?

 

and the 'π' key is for when your hungry... it produces a pastry food with commonly a fruit filling...

 

also it is equal to 3 (for large values of 3)...

 

 

sloopy.

Link to comment
Share on other sites

its one of their 'business' computers 'Commodore Business Machines', see it has 00 key for currency entry?

 

and the 'π' key is for when your hungry... it produces a pastry food with commonly a fruit filling...

 

also it is equal to 3 (for large values of 3)...

sloopy.

"Which is precisely the sort of thing we need to know...( for instance), do people want fire that can be fitted nasally?", Douglas Adams

 

Yes, it appears that Commodore was on the fast track to the hearts & minds of Business Folk , back in those days. lol.

 

Good one about the cheap pastries, they live on those... big gloppy platters of them /shivers/ uggg, gross.

Edited by UNIXcoffee928
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...