Jump to content
IGNORED

New GUI for the Atari 8-bit


flashjazzcat

Recommended Posts

Finally started documenting the kernel as I write it, so here's a small sample:

 

ATARI 8-BIT GUI/GOS KERNEL DOCUMENTATION

 

 

Kernel commands are accessed via the 6602 BRK instruction, with parameters pre-loaded into the CPU registers:

 

LDA #$02 ; receive message from desktop manager only

LDY #< MSGBUFFER ; point Y,X pair at buffer

LDX #> MSGBUFFER

BRK #$08 ; call Message Sleep and Receive

 

BRK causes a software IRQ interrupt and puts the system into the kernel context. In the example above, if a message from process #02 (the desktop manager) is pending for the calling application, it will be placed in the message buffer specified in Y,X. If no message exists, the caller will be put into a sleep state until a message is ready. On return, Y will contain 0 if no message was present (possible if the process was woken up by some other means), or 1 if a message has been retreived and placed in the buffer, in which case A will also contain the sender's process ID.

 

If a kernel function requires more than three parameters, extra arguments may be provided in-line, immediately after the BRK instruction.

 

Many kernel routines run in the IRQ context (and are thus never pre-empted, and therefore do not need to be re-entrant), although some (usually more time consuming) functions re-enable interrupts and use semaphores or periodic disabling of multi-tasking in order to avoid contention problems without increasing interrupt latency.

 

 

 

 

KERNEL MESSAGING FUNCTIONS

 

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

 

Name: Message Send

Command: BRK #$10

Input: A = Receiver process ID

YX = Message buffer address

Outout: Y = Status

1 = Message Send successfully

0 = Message queue is full

2 = Receiver process does not exist

Description: Sends a message to another process. The accumulator should contain the process ID of the receiver, and YX should point to the message. If the message queue is full, you loop while continually attempting to send the message, until such time the function returns a success statsu

 

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

 

Name: Message Receive

Command: BRK #$11

Input: A = Sender process ID

-1 = Check message from any process

xx = Check message only from process xx

YX = Message buffer address

Output: Y = Status (0 = no message available, 1 = message received)

A = Sender process ID (if Y = 1)

Description: Check for a new message from another process. Use this function if you wish to check for messages while performing other tasks. If you have nothing else to do and just want to wait for an incoming message, however, you should use the Message Sleep and Receive command instead.

 

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

 

Name: Message Sleep and Receive

Command: BRK #$12

Input: A = Sender process ID

-1 = Check message from any process

xx = Check message only from process xx

YX = Message buffer address

Output: Y = Status (0 = no message available, 1 = message received)

A = Sender process ID (if Y = 1)

Description: Check for a new message from another process. If there is no message, the calling process will be switched into sleep mode until a message is available. The Y register should still be checked, however, since it is possible that the sleeping process was woken by other means than an incoming message. Use this function to save processor time if the calling process does not need to do anything other than wait for an incoming message.

 

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

You'll notice a strong similarity to the SymbOS documentation. This is intentional, since it follows a similar kernel design. Actual command codes (BRK #$10) are arbitrary at the moment, and will be finalized as I go. Most assemblers don't allow an immediate operand after BRK, so it will be necessary to emply .BYTE or a macro.

 

Hopefully I'll be testing the kernel in a week or so.

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

For me it's very interesting how this is done in 6502! Maybe in the future we can port apps in a meta language quite easy between the A8GUI and SymbOS! :P

 

No less interesting than it would be for me to know how it's done in Z80. :D But seriously, re-implementing a similar system according to the API documentation on a different processor is pretty fascinating, and as you've said before, we learn a lot from implementing things in different ways. Nevetheless, I spent time last week studying the LNG (Lunix; small unix implementation for 6502) sources, and gaining a solid understanding of how that system works too. Of course it's quite different to SymbOS (and to the A8 system), since it doesn't really use a microkernel, but it's helpful to see how others implemented context switches on the 6502. In the dispatcher, I've implemented a priority scheme exactly as you described it to me, and I'm quite excited to see how this will work in actuality. I designed a forward linked list which keeps the process table sorted in highest-lowest task order. I get the feeling the lion's share of the debugging will concern stack-frame problems... bound to be off by one somewhere. :)

Link to comment
Share on other sites

And it's been 3+ years since this comment: "In a year or so, there'll be an API coders without chips on their shoulders can use to write GUI applications for the Atari 8-bit". Hope I didn't make any spelling errors here :-o :-o . Oh well, If I did, I know who's gonna correct them right-away ;)

Edited by atari8warez
Link to comment
Share on other sites

Plus full-stop at the end.

 

T minus 6 months until this project hits the 5 year mark.

It really started in earnest in late 2010, but yeah. I've given up trying to adhere to time frames, since the project's scope has broadened so much (since it was originally envisaged to be a single-task graphic front-end on top of DOS). That, plus the fact that between September 2010 and February of this year I was working on the APT drivers, PBI BIOSes, and partitioning tools I was eventually tasked with developing, and which encompass eight separate pieces of mass storage hardware. But I'm glad things weren't more advanced than they were when Prodatron came along. His interest was a real shot in the arm and resulted in an almost complete re-write of the entire system.

 

As for the times when trolls visited this topic: those incidents are probably best forgotten. What's interesting is that those same people almost certainly own APT mass storage devices, and even if the hardware isn't one of the seven host adapters for which I developed firmware during the past three years, they're nevertheless content to use the partitioning software I also wrote when I could have been progressing the GUI.

  • Like 3
Link to comment
Share on other sites

As for the times when trolls visited this topic: those incidents are probably best forgotten.

 

Just like some trolls visiting other topics like AspeQt, although if we want to forget those "incidents" those trolls should stop trolling, if they're not, then this will go on for another 5+ years ;). And who uses which software is really another story, some of us may have used some software some of the time, others use them ALL the time :grin:

Edited by atari8warez
Link to comment
Share on other sites

Correct, just like "an API coders" should have been "an API coder".....

I'll assume you're correct, and will happily stand corrected, although all I had previously done here was fulfil your request to have the spelling and grammar of post #2530 corrected.

 

Just like some trolls visiting other topics like AspeQt, although if we want to forget those "incidents" those trolls should stop trolling, if they're not, then this will go on for another 5+ years ;). And who uses which software is really another story, some of us may have used some software some of the time, others use them ALL the time :grin:

Most recently, I augmented Mathy's (presumably trolling) advice on improving the shoddy presentation of one dialogue box in Altirra. You simply don't like being corrected, and as a result are trying to claim that the correction I posted in the Aspeqt thread is legitimate reason for you to be disruptive in this thread. This is signature Internet "troll" behaviour. I understand it to be frowned upon by the moderators of some forums.

 

As for who uses which software: I use a slightly modified version of Fatih's last build of Aspeqt, since I found lodging bug reports and feature requests with the project's current curator to be a generally punishing experience, and frustration led me to abandon the recent official builds. I'm happy to take Mathy's word on problems relating to one of the dialogue boxes and offer the benefit of my language skills. Thus, my original point (which was intended to highlight the derisory nature of your latest remarks) stands.

 

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

As for who uses which software: I use a slightly modified version of Fatih's last build of Aspeqt, since I found lodging bug reports and feature requests with the project's current curator to be a generally punishing experience...

 

Very well, stay with whatever version you are happy with. There are enough users, to keep me enthusiastic about further development, who appreciate enhancements to the original version. However your continuing posting on the AspeQt thread, despite your choice of version, simply is a proof of your "trolling" as someone who is not interested in the latest version wouldn't really care about spelling errors on dialog boxes which does not affect him at all.

 

Mathy is at least a "potential" user of the software and has tried it on his computer, and his reporting his findings (hardly trolling), so don't try to drag him into your mess.

 

If I were you, I would stop being dishonest and start worrying about keeping my promises about a "Multitasking, multithreading, GUI OS" which is currently no more than a "window dragging and re-sizing demo" after 5+ years. Those "API coders without chips on their shoulders" are still waiting and getting older by the day and want to program a GUI app, if possible, before arthritis takes a toll on their typing fingers :-o

Edited by atari8warez
Link to comment
Share on other sites

There are enough users... who appreciate enhancements to the original version.

Absolutely. The people doing useful work making it run under Linux and Mac OS X command my admiration. Meanwhile, when one has other irons in the fire, I suppose it's reasonable to take three years to fix folder imaging under SDX.

 

However your continuing posting on the AspeQt thread, despite your choice of version, simply is a proof of your "trolling" as someone who is not interested in the latest version wouldn't really care about spelling errors on dialog boxes which does not affect him at all.

You see, now you're twisting my words to suit the occasion, which really won't do at all. I said I did not USE the most recent "official" builds. I did not say I had no interest in them. Why else would I post details of my (inexpertly implemented) fix for folder imaging under SDX on sourceforge were I not interested in perhaps contributing in some small way? Likewise I keep up with developments on the Aspeqt thread, and I voiced my opinion on the dialogue box Mathy was talking about. But you seem to have taken this personally. Believe me it was not intended so, although in the cold light of Ray, I feel I should have known this would be the outcome, despite the fact I had previously offered advice on some problem you posted in the programming sub-forum, and the advice was received well and without vocalised disquiet.

 

If I were you, I would stop being dishonest and start worrying about keeping your promises about a "Multitasking, multithreading, GUI OS" which is currently no more than a "demo" after 5+ years. Those "API coders without chips on their shoulders" are still waiting and getting older by the day and want to program a GUI app, if possible, before arthritis takes a toll on their typing fingers

Since you have intonated privately that you appreciate the work being done here, it finally dawns on me that your sarcasm and chronological exaggeration are merely the tools of reverse-psychology motivational techniques intended to get me coding at double speed so that I can rise above the misery of derision and humiliation, thus enabling you to write great GUI apps. After all: when you're at rock-bottom, the only way is up! Kind of good cop, bad cop thing going on there. Awesome man - thanks! :)

Edited by flashjazzcat
Link to comment
Share on other sites

 

If I were you, I would stop being dishonest and start worrying about keeping my promises about a "Multitasking, multithreading, GUI OS" which is currently no more than a "window dragging and re-sizing demo" after 5+ years.

 

I recently presented my displeasure at a Kikstarter project where I have paid my money for an unnamed item and the authors have gone past their release date by more than a year because they keep on "wanting to make it that little bit better" although it is essentially finished. It annoyed me so much that after a few drinks, I sent a rant off via email (I never rant normally) and asked them just to release what they had as my money had been taken and I'd not received it. And how many people pass away / move home / lose interest in the meantime?

 

However, in this case I think it is unfair to place that pressure on FJC as nobody has given him any money for what he's doing. When it arrives, it arrives. If it never arrives then it never does. I see plenty of other projects (including my own) which have taken an age to get anywhere. But we're not paid for what we're doing, so we should respect people's time. FJC could have decided to keep it all under wraps (as some do), not telling us anything. But he has showed us what he has been doing and that is nice to see. I bet that a lot of people like charting projects on here.

  • Like 1
Link to comment
Share on other sites

For just a demo, this ROCKS! Anywho, I'm betting we see the finished GUI long before ProjectM. ;)

 

I have no worries that the GUI won't be released (as more than a simple demo). I'm already thinking about the kinds of stuff we'll see using it afterwards. A quick update on the best word processor is almost a given. I'd like to see a devkit with editor based around this. I suppose a simple filemanager will be seen quickly as well. Imagine this OS as the top layer to DOS instead of the plain menu most DOSes use now...

Link to comment
Share on other sites

 

However, in this case I think it is unfair to place that pressure on FJC as nobody has given him any money for what he's doing. When it arrives, it arrives. If it never arrives then it never does. I see plenty of other projects (including my own) which have taken an age to get anywhere. But we're not paid for what we're doing, so we should respect people's time. FJC could have decided to keep it all under wraps (as some do), not telling us anything. But he has showed us what he has been doing and that is nice to see. I bet that a lot of people like charting projects on here.

 

I agree with all of the above, but my problem is not about the GUI or how long it may take for him to release it. This whole feud between me and him started long time ago when I (rather honestly) commented on this project and asked a few questions. I've been labeled a "troll" and accused of "discouraging" him. I was simply being "realistic" about a GUI implementation on an Atari 8 bit. I was on his cross-hair ever since :) and been subject to his "trolling" on my own thread. From time to time I return the favor, and today was one of those days. That's all, other then that all the power to him on his project.

Edited by atari8warez
Link to comment
Share on other sites

 

However, in this case I think it is unfair to place that pressure on FJC as nobody has given him any money for what he's doing.

Well, not completely true, i know I donated and didn't mind. I appreciate all FJC has done for the community!

 

Frankly who cares if it takes 10 years to complete. It's not like the platform will be obsolete by then - it already is. It's an enthusiasts project, by and for. All the bickering is doing nothing. Let it go and move on.

Edited by Ripdubski
Link to comment
Share on other sites

When it arrives, it arrives. If it never arrives then it never does. I see plenty of other projects (including my own) which have taken an age to get anywhere. But we're not paid for what we're doing, so we should respect people's time. FJC could have decided to keep it all under wraps (as some do), not telling us anything. But he has showed us what he has been doing and that is nice to see. I bet that a lot of people like charting projects on here.

It will arrive, barring death or serious illness. What's especially ironic is that, since other projects are now complete, GUI code is the only code I'm writing, and I've been doing so every day for the past month or so. But I'm starting to have second thoughts about the suitability of this thread as a means of providing regular progress updates.

 

I agree with all of the above, but my problem is not about the GUI or how long it may take for him to release it. This whole feud between me and him started long time ago when I (rather honestly) commented on this project and asked a few questions. I've been labeled a "troll" and accused of "discouraging" him. I was simply being "realistic" about a GUI implementation on an Atari 8 bit. I was on his cross-hair ever since :) and been subject to his "trolling" on my own thread. From time to time I return the favor, and today was one of those days.

 

Hilarious. I'd encourage interested newcomers to head over to pages 78 and 79 if they want a really good laugh. I won't offer a rebuttal to the rest since anyone capable of reading should be able to assimilate the actual course of events.

 

Well, not completely true, i know I donated and didn't mind. I appreciate all FJC has done for the community!

There is a general rule which is being borne out here. The people who have donated most generously are the last to complain.

 

Frankly who cares if it takes 10 years to complete. It's not like the platform will be obsolete by then - it already is. It's an enthusiasts project, by and for. All the bickering is doing nothing. Let it go and move on.

Quite true. However, it seems as well as genuine interest, I'm attracting the wrong kind of attention here. It do try to let it go over my head, but this thread is - as already observed - long enough already, and sufficiently difficult to navigate without the kind of ridiculous pontificating we have seen over the past day or two. While I am obligated (as if obligation were needed) to complete this project, I am under no obligation to waste time trying to keep this thread on the straight and narrow, so it's probably best - now the API is being written up - that I confine further contributions to those occasions when I need to link to documentation or downloads. It's been a lot of fun blogging as we go, but it perhaps many thread watchers anticipate massive progress with each new post. Interested readers may refer to my website and facebook group, where I at least have some administrative tools to hand. Perhaps a more traditional blog would also be useful to potential developers, and this is something I can set up elsewhere if necessary.

Link to comment
Share on other sites

I'm attracting the wrong kind of attention here.

 

 

Quite the contrary, you are attracting attention elsewhere and make me come over here to answer you. Try not posting on the other thread (unless you have a legitimate reason to do so) and see if I bother you here..... Honest bug reports are always welcome, sniggering comments are not, I can not be more clear than that....

Edited by atari8warez
Link to comment
Share on other sites

Plus full-stop at the end.

 

Yikes, I was referring to the suggestion box widget ;) I had no idea so much animosity was being held for this amazing project, and in no way meant for a flame war to erupt. I'm really sorry, and will refrain from posting here until a working prototype gets released. You were right, those old threads are best left in the past...

 

Sorry again...

Link to comment
Share on other sites

  • 3 weeks later...

Yikes, I was referring to the suggestion box widget ;) I had no idea so much animosity was being held for this amazing project, and in no way meant for a flame war to erupt. I'm really sorry, and will refrain from posting here until a working prototype gets released.

No need to apologize: it's not your fault if your innocent observations are misconstrued as feed-lines for gauche witticists. ;)

 

Don't have the blog set up yet but the Kernel's 1,200 lines long now has been the most engrossing coding job yet undertaken. Although it's proving futile to speculate on time-frames, I hope to have the kernel working by the end of the month. The approach I'm taking with the stack is to divide it into four frames (of 64 bytes each), and alternately replace the stacks of sleeping tasks with those of ready tasks if the ready task's stack isn't already in the hardware stack. This should minimize stack copying, since ready tasks always tend to have their stacks in-place, while non-ready tasks have their stacks cached out until they become ready again. In those cases where none of the stack frames belong to a sleeping task, the lowest priority ready task's stack will be cached out. With the UI process, file process, desktop and one application running, there'll be no need for any stack copying at all (until one launches a second application).

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

ok,

 

Flashjazzcat has never been anything but honest about not only his intentions, but his output. Full stop.

 

I've watched this thread from day zero, and am amazed what has developed, and as someone who develops and develops on _insanely_ large code bases both for a living, and for long term research, I appreciate the sheer scope of effort involved in not only pulling this off, but pulling this off on a CPU that was never intended to be more than a microcontroller.

 

Flashjazzcat has developed more than a few useful applications for the Atari 8-bit community, for free, mind you, because he wanted them to exist, and because he felt others might want them too. He's decided to take on a project with a potential for an infinitely creeping scope. So this means, that ultimately, this may be a decade long project.

 

I remember a certain dream that an engineer had, to use his Amiga to process video.

 

Prior to doing it, he was a hardware developer for a number of products for the Tandy Color Computer.

 

He saw the Amiga, and immediately had a vision as to what to put on it, and when he told others, professionals included? "YOU'RE CRAZY!" "IT CAN'T BE DONE!"

 

He brought in a friend, to help manage the business side, and brought in a very talented hardware engineer and chip designer to make it happen. They started work, the fall of 1986. Years went by, and as he gave demo after demo, he said "This thing is right around the corner", and he said it enough, that the magazine pundits were starting to wonder if he'd ever complete it, despite seeing the hardware function.

 

It took them five years to bring the board from prototype to mass production, but they did it. So many sleepless nights, and frustrated hangers on either wanted to see this thing, or wanted to see it burn in hell.

 

What they accomplished, was the Video Toaster.

 

So to all of you complaining?

 

SHUT THE FUCK UP.

 

-Thom

  • Like 6
Link to comment
Share on other sites

Right On, Thom! & 100% to pixelmischief!

 

This dude is not only dissing FJC, but he's doing a disservice to everyone who has contributed, in any way, large or small, in helping out here. Personally, I always look forward to anything from FJC or MG66, on Atariage, because both of these guys are representative of the caliber of software & hardware engineers that made the Apollo program happen... back when NASA meant something special.

 

FJC & MG66 are SIGNAL. The other bs is NOISE.

 

Here's to a virtual round of Hacker-Pschorr Weisse to FJC, MG66, Thom, & Pixelmishief. Cheers to Fibrewire, also, for all of his contributions on Atariage; he meant well. A big "Drink up" goes out to all of the other great hackers & enthusiasts here. Throw those empties into the fireplace, and let's hear some more good stories about the Magic. The sh1ttalkers can find another pub.

  • Like 2
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...