Jump to content
IGNORED

New GUI for the Atari 8-bit


flashjazzcat

Recommended Posts

I'm not sure that I totally understand what you're getting at... Since we are working with extreme resource limitations, wouldn't it be the least resource intensive to make the scrollbar's slider a fixed size? Sure, proportional slider gadgets look cool, but, really, a cursor with a dot in the middle would serve the purpose of a handle, and do it without taxing the system. Up to you, but if you are running low on resources, if you have a fixed scrollbar width, a fixed slider width, fixed up/down arrow size... then the only thing that varies is the vertical height of the scrollbar. ...but, hey, if you can pull it off, go with the proportional sliders!

The idea is simply to perform some basic math which would usually involve fractional numbers without the fractional results. With four calculations (two of them done with a few bit shifts... sorry - table lookups!), we have a proportionally sized handle. I avoid a fractional result in division by ensuring the dividend is way higher than the divisor. Once we're done calculating, we shink the value back down again and we have fairly accurate result. No FP calculations needed.

 

The code for this is so slight that I think it would be a shame not to have proportional handles. They look better, and are more informative to the user. There's very little overhead in rendering them (when they're dragged, they're "ghosted" anyway). Fast, compact 16 bit div/mul code would save me half an hour or so if anyone wishes to donate some...

 

I do like the NeXTStep slider "dimple" a lot. Another feature of NeXTSteps GUI, that was innovative, was having the Up/Down arrows right next to each other... this was done specifically for ergonomics, to reduce the amount of mouse movement that the user has to do, to achieve a task (much less movement).

There are some great features in NeXTStep. Really, we can tweak till our heart's content when the basic UI is done. It's a mixture of early Mac OS and GEM at the moment, but I don't really want it to slavishly adhere to the precise methods of any existing OS.

 

Here's the

, I wish that there was a higher quality version to show you, but there isn't. One day, I really need to get a Tricked Out NeXT... it really was the pinnacle of interface design. So many great ideas in not only the GUI, but the simplicity of the actual interfacing of applications. Nothing has come close, since. Watch that demo, to see what I mean.

Impressive. It's amazing that Windows was so very far behind, and that Win95 was hailed as such a revolutionary product. In terms of Microsoft, I guess it was. Simplicty is certainly key to our project, although we've got to have the odd bell and whistle (read: zoom rects, proportional handles).

 

Also, if you can scrape up like $60-100.00 USD, get an Apple Messagepad 2100 on ebay, and study it's interface. This was the last Newton, and the closest to perfection that they came. It's the only Apple product that I own, ha. It has a fabulously integrated environment that was designed by guys that were responsible for the LISPmachines, of yesteryear. Extremely intelligent interface design, in that one. Highly recommended. It can do things that no other system does. & it is really more of a "Computing Platform", rather than just some shoddy "handheld device". You won't be disappointed with the Messagepad 2100. You can use this search string:

 

(newton,messagepad) 2100

 

and set it up to email you, if you want to try to get a good deal on one.

 

As I had mentioned, when we were first getting started on this GUI, the Newton is fully documented, and all of the tech/api/programming books are available online. It's a really nice system, and well worth it.

Yep: I still have the Newton UI docs here in my (every growing) collection of research material.

 

The thing is just taking its course. GEM/TOS and the early Apple System are good models because they arrived relatively early on in the GUI era. I suppose we could have gone for something totally radical (tile based interface, no menus, etc), but this seems to be coming together quite nicely. It also has the advantage that anyone who can work Windows will be used to the interface.

 

A good space-saving idea I had today is to farm out the complex controls (such as the multi-line text box) into some kind of DLL module which apps can load only if they need them. 99 per cent of apps will probably get away with single line text entry fields in dialogues, and it seems unnecessary to keep 3-4KB of code in the library which only gets called by the word processor. I think that - taking this approach - the library will stay well within its target code footprint.

 

This also makes sense given that the control set is extensible: a programmer can quite happily code up their own custom objects and controls and hook them into the event handler.

 

...I think this is a good demonstration of what we'll end up with in a year or so:

 

 

Only a bit slower and in lower resolution (and without multi-tasking). icon_smile.gif

Edited by flashjazzcat
Link to comment
Share on other sites

Just thought of it... one neat, more Atari specific tweak, might be to be able to have a hot key to bring up a standard Atari Graphics Mode Text-Screen at the bottom of the GUI, using the standard Atari 40 column font on the blue background, sort of like a split screen console CLI, that could be turned on or off with a keypress combo. This way, the user could, at any time, issue a command directly, from a familiar command prompt that would appear to overlay the GUI.

 

also,

 

- The NeXT Dock concept might work very well in your GUI, to save space, since you do have a fixed icon size.

 

- A scrollable "virtual desktop" 2 or 4 times the available screen area might also be very beneficial, considering the resolution that we have to contend with on the Atari, even if the screen didn't scroll around, you could still do it the way that Solaris did it with the CDE (Common Desktop Environment) GUI (buttons to choose a particular desktop, each with it's own thing going on).

 

 

Link to comment
Share on other sites

Just thought of it... one neat, more Atari specific tweak, might be to be able to have a hot key to bring up a standard Atari Graphics Mode Text-Screen at the bottom of the GUI, using the standard Atari 40 column font on the blue background, sort of like a split screen console CLI, that could be turned on or off with a keypress combo. This way, the user could, at any time, issue a command directly, from a familiar command prompt that would appear to overlay the GUI.

Having a windowed command processor (complete with blue PMG overlay) using a small, fixed-width font is something I was going to discuss with Drac030 at a much later stage. One can instance the SDX com processor (it's relocatable), and by redirecting the character output vector, one could make all the CP apps print to the window.

 

Quite apart from SDX, a CLI would be a nice addition.

 

- The NeXT Dock concept might work very well in your GUI, to save space, since you do have a fixed icon size.

 

- A scrollable "virtual desktop" 2 or 4 times the available screen area might also be very beneficial, considering the resolution that we have to contend with on the Atari, even if the screen didn't scroll around, you could still do it the way that Solaris did it with the CDE (Common Desktop Environment) GUI (buttons to choose a particular desktop, each with it's own thing going on).

Yep: we have great freedom with regard to an application launcher. It can be stuck to the menu bar or placed on the desktop. Something to think about later in the project, for sure.

 

I do like the scrollable desktop idea. If not that, mutiple desktops. A very useful addition on such a cramped screen.

Link to comment
Share on other sites

LOL.

 

Back in January, when I was ill for a week and couldn't sleep, I think I checked out everything. Boy, did I do some reading about GUIs... I'd never gone to the thirtieth or fortieth page of Google results before.

 

That Xerox demo reminds me: I need to code up the hourglass mouse pointer... although it hopefully won't be seen that often. icon_smile.gif

 

My friend had a good idea regarding icon labels when I was showing him some of Mr Fish's mock-ups today. Perhaps show only the first few characters of a label until the user clicks on (or hovers over) the icon, at which point the full label would be displayed (much like the Windows tooltip method). This would be a great way of saving space in icon folder view, and on the desktop. No matter if the label text overlays adjacent icons/labels.

Edited by flashjazzcat
Link to comment
Share on other sites

LOL.

 

Back in January, when I was ill for a week and couldn't sleep, I think I checked out everything. Boy, did I do some reading about GUIs... I'd never gone to the thirtieth or fortieth page of Google results before.

 

That Xerox demo reminds me: I need to code up the hourglass mouse pointer... although it hopefully won't be seen that often. icon_smile.gif

Here's

, with much more GUI stuff... the guy has some very annoying accent, and wherever he's from, I never want to go to... ha.

 

Of course, WE know that neither Xerox nor Apple should bitch about "Look & Feel", since Xerox PARC stole a good deal of their interface from Doug Englebart's work at SRI, ha. ...&, Amusingly, Xerox left out a lot of the good parts of Augment... ha.

 

Really, on a whole different level, outside the scope of this project, can you imagine what a dream system would be possible if Augment, Star, Lisa, Classic Mac, Newton, and NeXT interfaces & underlying functionality were merged in all of their glory on a modern multiprocessor Xeon system?! Now THAT would be what a Modern GUI should be. It really is amazing how much innovation was left by the wayside, in the long, drawn out process of stealing evolving the modern computing environment that everyone knows today. ha.

Link to comment
Share on other sites

...My friend had a good idea regarding icon labels when I was showing him some of Mr Fish's mock-ups today. Perhaps show only the first few characters of a label until the user clicks on (or hovers over) the icon, at which point the full label would be displayed (much like the Windows tooltip method). This would be a great way of saving space in icon folder view, and on the desktop. No matter if the label text overlays adjacent icons/labels.

 

Why not just have one single "Status Line" at the bottom, that displays what would normally be in a Tooltip?

 

 

Link to comment
Share on other sites

I like status lines, BTW. It's a consistent place to look for meta-data, and it's light on resources.

 

To me, they are more effective than tool tips are overall. Less sexy though.

 

What is great about them is the overall rapid interactivity, and only one mode context. Either one is worth displaying, or not, and if it's displayed, it's done right away, no fuss.

 

The tool tip has more modes. There is displayed or not, and then there is completely displayed or not, then there are orientation modes, depending on the GUI layout and overall screen position, finally line and formatting modes.

Edited by potatohead
Link to comment
Share on other sites

I know I can't really contribute much to the development of this project, but if you ever need to see a particular tool or feature of NextStep, I'm running it on VMWare and I can make videos for you. Just let me know. :)

 

Yes, that would be great, especially with a good hi-res recording, like you could get, in that scenario. I would say that directory listboxes, and anything with a scrollbar would be a good start. Thanks!

Link to comment
Share on other sites

Good idea looking at other OS'es for help making APP's for your GUI.

Thanks, I've always been into user interfaces, so on one-hand it's largely historical, but, then again, by doing all of this Archeology, we are uncovering many interface & interfacing metaphors & methodologies that would have otherwise been lost to history. In that sense, we are essentially educating, and influencing contemporary computer scientists, who visit this thread.

 

In that respect, it may not bear fruit for years, but, at least it's a centralized knowledge-base for building a GUI, from the ground up, on bare-basic hardware... & that's something that you won't find anywhere else.

 

Flashjazzcat deserves all of the credit, I mean, he's the one doing all of the coding magic. Mr. Fish is creating the bitmaps, and I'm just basically acting as a technical consultant, since I have a wide range of experience with very varied interfaces.

 

Many of the concepts from NLS/Augment, Xerox Alto/Star, Newton, and NeXTStep were incredibly advanced, and would have been lost forever, if it wasn't for eccentric mad scientist like us, lol. Who knows, 5-10 years from now, the people that you meet here on AtariAge could be people that you might be in inclined to start a company with, & work with, once we are past this "Dark Age" of I.T. History. It is all about communication & interaction, with both computers, & with people.

 

...& quite frankly, for now, I would much rather work for free with good people who know their stuff, than work in a Tower of Babel with 100 idiots for 100 dollars an hour. Totally.

 

I'm very thankful to the users here at AtariAge... I have a much higher caliber of friends and colleagues than I could ever hope for, at any company. It is a place that fosters collaborative effort, and real work-ethic. Meaning, you work hard to accomplish something specifically for the love of doing it, and doing it right, rather than for some token salary, that in the end, means nothing. It gives me great personal satisfaction to be amongst other engineers who I can both learn from, and share my knowledge with... to be with people who I respect.

 

All in all, Thanks, Everyone, here at AtariAge, for making this such a special place.

Link to comment
Share on other sites

Well said, and I'd like to echo that sentiment pretty much word for word.

 

This is a pretty extraordinary discussion (after all, how often does this stuff get tackled from the absolute ground-up nowadays), and the forum is an extraordinary resource. The collaborative spirit is just incredible, and the collective desire to get things done (and to do them right) is just remarkable.

 

From never having written more than a couple of dozen lines of OOP code (in Microsoft Access VBA, when writing a database app as part of an office admin assignment in my usual line of work) until six weeks ago, I now find myself part way through coding an entire object oriented infrastructure from scratch in assembly language. Certainly, I did a lot of research, but without being able to tap into the expertise and talent on this forum, I don't think I'd have got very far.

 

This "stripping things down to the basics" is quite exciting. I'd rather know how something works right down to the last detail than do - say - an Atari port of GEOS and just change the screen handler code, ignoring all the other stuff which will work on either platform. In that sense, I hope this project is a better education in GUIs and modern software development techniques than any VB/C++ programming course could have been.

 

That said, when I can afford it, I think it would be a good idea for me to get a couple of up-to-date IT qualifications to back up my hobbies. I doubt I'll get that job in IT just because I wrote a GUI for a 30 year old 8-bit computer... although I doubt it can hurt my chances. icon_smile.gif

 

OK... so I don't think the updated demo will be ready within the next few hours. Since I love doing it right, I'm implementing proper class methods this evening, so re-drawing an object will cause all the children and their peers to redraw themselves too (MSG_DRAW being the message most often passed to a widget, although there will be many more once the dialogue controls are coded up). The only things I was really drawing up until now were menus, but now we have a number of window controls, the last of the longhand menu-drawing code is going out of the window (no pun).

 

Yay... worked first time. To draw a menu at OBJECT, we just say:

 

lda #MESSAGE.DRAW
jsr send_message

Send_message calls OBJECT's DRAW method, then goes through all the children and calls their redraw methods too. It doesn't matter what kind of objects are in the tree: they're all handled the same (although naturally each class has its own specific draw method).

 

There's a vector table for all the render routines for the various objects, but I've tentatively chosen to actually load the vector into an object when it is created (accessed via widget.render). The reason for this is that one can then create entirely new custom controls from inside an application without having to hack any vector tables in the library. It will also be possible to change the render code for an existing control (useful perhaps when creating new controls based on existing ones and modifying inherited defaults). The third reason this is useful is that you can have custom event/redraw callbacks on a per-control basis (rather than all controls having to have the same behaviour).

 

One reason MADS is such a wonderful assembler is that it facilitates the coding of these methods in a way which makes total visual sense. Message.draw in the above example in an enumerated constant. So much more elegant than MSG_DRAW, MSG_GET_FOCUS, etc. It's inherently clear - from the MADS syntax - that draw is a value of the type message.

Edited by flashjazzcat
Link to comment
Share on other sites

The best thing that you could do is to document Everything about the program design, with the clarity & thoroughness that you devoted to the Last Word documentation. If you do, you will have the basis for a Thesis paper, regardless of the fact that the implementation was on an Atari. You might want to check out the online curriculums at MIT. They also have a large number of free online non-credit courses, that are very interesting, just for your own edification, as well. Some great stuff there... I mean, where else can you sit in on a class on the design of the space shuttle, taught by the designers themselves? ha. I'm not positive that they have an International credit-based program, but I would presume that they would.

 

Of course, you may have to sell your neighbors to human traffickers or kidney harvesters to afford the tuition there. ha. May be worth a try, anyway. lol.

 

I had always wanted to go there, but when I had money, I was too busy making the money, and when I had time, there was no money. Hate the way that works out. ...BUT... I did, once, have an opportunity to explore the whole of the MIT campus (allegedly, of course, ha)... Lurking Horror-Style... muhaha... one fine evening, that I found myself in Cambridge. I mean, what did they expect when they didn't lock all of the doors, haha. After walking the same halls that Norbert Wiener, and all of the greats walked, in the spooky midnight moonlit glow, and taking in all of the sights of classrooms & labs that people who have invented the modern world have seen, I found myself at a dorm party... & a very cool party it was... they had hundreds of 3 inch strips of garbage bags thumbtacked to the ceiling, dry ice, bizarre lighting, kegs of beer, cool obscure Musique concrète blaring... very hip party. It was particularly neat, because you'd walk up to one crowd & they'd be talking about nanotech, another would be talking about fractal geometry, another would be talking about aerodynamics issues, etc... never have I been to a party like it, before, or since. So that was my MIT Experience, and I'll always cherish it.

 

Just bear in mind that having a degree, from anywhere, is not a guaranteed meal-ticket, in these Stupid-Times that we live in, unfortunately. Personally, since 2001, but particularly, since 2005, I view the entire I.T. Industry as "a machine of infinite complexity held together with bubblegum & duct tape, which somehow continues to work, despite all odds". Mostly, I'm just waiting for the day that it comes to a GRINDING HALT with sand spewing from it's gears... then, I suppose, the stage will be set for everything to be good again. 'Til then, it's kinda like waiting out an extremely bad cold, before you can resume. ha.

Link to comment
Share on other sites

The best thing that you could do is to document Everything about the program design, with the clarity & thoroughness that you devoted to the Last Word documentation.

Sounds like a good idea (documenting the development). I've been keeping a blog here on AA, but it's largely been a slight, retrospective overview of other GUIs on the Atari up till now. But that's more of a diary; I agree that it would form the basis of a good thesis. It could be as thick as the one on thermodynamics that my late uncle wrote. icon_smile.gif

 

The unfortunate fact of the matter is that it's always about the pieces of paper. A good employer - ideally - would take a chance on a potential employee on the basis of his highly relevant spare-time pursuits. But, being realistic, there will still be a lot of implementation-specific C++ stuff I don't know about at the end of all this, and I'll need to study that. I know all about how irrelevant a degree can be: being an aspirational writer at the time, I went and got a degree in the wrong subject (English). Of course, I was told that the subject hardly mattered: a degree in any subject held weight with employers and would influence one's salary scale. Not for me. Naturally I realize that a degree in English from 1995 hardly qualifies one to work in the IT industry, but nor has it opened the door to a career in the admin or teaching field (two areas I'm thoroughly bored with now, in any case). In no position I've ever held has my degree helped increase my pay or prolong the tenure of my contract. I really wish I'd studied something more vocational at the time, but it's easy to say that with hindsight. I wasn't quite as in-touch with the contemporary IT world back in 1992 anyway, despite having just finished an A-Level in Computing Science.

 

The degree itself is also somewhat devalued nowadays, and I don't say this because of any elitist leanings. Gaining access to the degree system should be based on academic achievement; I know this from personal experience, having missed out on a place at the esteemed Newcastle University because I didn't scrape an A in English. Thus I attended the University of Sunderland the following year, a short while after it changed from a Polytechnic, granting the town City status in the process. This seemed to be the start of a the era of the popularised and accessible degree, and at the same time A-Level results seemed to be getting better year on year. Since that "golden era", of course, attending University is no longer free in this country (all I had to do was take out a student loan to supplement my living expenses), and we might see the degree become the preserve of the privileged, which is entirely wrong. Feelings run strong in this country (hence the recent student unrest), but regardless of this the unemployment figures for recent graduates make depressing reading. Perhaps if science subjects become more popular again we'll see an increase in the number of vocationally trained graduates, and I only hope the jobs are there for them when they leave education.

 

In any case: thanks for those links and the advice. It's a good time to think about these issues as the age of forty looms, and the good old Atari provides its biggest challenge yet. icon_smile.gif

 

Maybe somewhat late but why not add this GUI to LUNIX.

 

LUNIX is already a UNIX clone like program for the 6502 and there was an Atari version compiled but that only did work fine on a emulator.

 

http://lng.sourceforge.net/

 

Would be nice to see it modified to use banked memory :-)

 

 

Another nice GUI/OS would be something like this:

 

http://wingsos.org/

 

Very cool....

Very cool links both: I'll have some interesting reading to do this evening. Thanks!

 

flashjazzcat, dunno if this has been asked yet but are you planning on making your GUI o/s compatible with Diamond or similar

 

And how compatible will it be to Atari dos 2/2.5 etc (As i guess you are more into spartados)

The OS won't be compatible with Diamond at all. There are hardly any quality apps written for Diamond, so I wouldn't really be availing myself of a ready-made software library. Also, Diamond's API, object tree, resource structure, etc, are highly simplified and quite under-powered for writing apps flexibly. Now, I know that the whole GUI has to be simplified on the A8, but "Mach OS" (as we're calling it) is completely OOP from the ground up.

 

The same goes for any of the other extant and actively developed GUIs out there. A couple of them are written in Basic anyway, and absolutely none have the kind of API I want to implement.

 

As for DOS 2.5... I see no reason why the GUI won't work with it. I'm keen to avoid the situation of requiring a hard disk or sophisticated filing system. With DOS 2.5, you'll just get a flat filing system and limited storage, but it should still work. Of course SpartaDOS X plus a hard disk (MyIDE plus the SDX driver, for example) would be the ideal "power" system, but I want to make the GUI as accessible as possible (hence the user-editable resources).

Edited by flashjazzcat
  • Like 1
Link to comment
Share on other sites

Might the name be confused (by some) with Mach DOS?

Hmmm... never thought of that. It's a WIP name we were throwing about.

 

It's also the name of an early linux variant that wound up become the basis for one of the Apple OS's.

 

The Mach kernel was developed by researchers at Carnegie Mellon University.

 

Mac OS X is based on Mach, and it has nothing in common with (nor does it have any ties to) the Linux kernel, which employs a monolithic design. The GNU/Linux OS and Mac OS X are similar in that they are both POSIX-compliant OSes that employ a GNU userland. However, that all runs atop their two very dissimilar OS kernels.

Link to comment
Share on other sites

I though AGOS was ok...wasn't that what you started with?

A:GOS originally stood simply for "Atari GOS", then later morphed into meaning "Agis", which is the name of a series of Spartan kings, providing a nice link to the SpartaDOS tradition. It's also a phonetic pun on "A:GOS". The Greek connection also allows us to use the Alpha character on the system menu.

 

I'll speak to Mr Fish about it. It's probably one of the last details we'll decide on. icon_smile.gif

 

Of course, I could also call it "Deborah OS"... the rightful and vastly superior successor to "Lisa". ;)

Edited by flashjazzcat
Link to comment
Share on other sites

Ha, yeah, you beat me to it... "Mach" has already been taken as a name for an OS kernel, long ago, and would only be cause confusion & consternation, if it was also the name of a GUI.

 

Let me ponder some suitable names, for a bit, and I'll post a list that we can use, as a basis for choosing, or creating the best name possible; since this is a very important project, it needs to have a great, well-thought-out name.

 

 

Link to comment
Share on other sites

Might the name be confused (by some) with Mach DOS?

Hmmm... never thought of that. It's a WIP name we were throwing about.

 

It's also the name of an early linux variant that wound up become the basis for one of the Apple OS's.

 

The Mach kernel was developed by researchers at Carnegie Mellon University.

 

Mac OS X is based on Mach, and it has nothing in common with (nor does it have any ties to) the Linux kernel, which employs a monolithic design. The GNU/Linux OS and Mac OS X are similar in that they are both POSIX-compliant OSes that employ a GNU userland. However, that all runs atop their two very dissimilar OS kernels.

 

Ah, thanks for the correction.

 

Of course, I could also call it "Deborah OS"... the rightful and vastly superior successor to "Lisa". ;)

 

Hah yknow I was thinking of a female name as well, also started with hearkening back to Lisa. If 'Deborah' is who I think her to be then for the sake of your future availability I suggest we so honor her.

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...