Jump to content
IGNORED

New GUI for the Atari 8-bit


flashjazzcat

Recommended Posts

GEOS screamed at its time and I really wondered, why no comparable GUI has been released on the small A8.

 

In the 80s and the early 90s (and may be still today), GEOS has been the semi-standard OS on the C64, it was very popular as I can say in germany.

There was a large number of professional programs available for GEOS only, so the GUI has been pushed by many companies as they pushed Windows in the 90s.

 

I never used it myself, althru I have a C64 somewhere and I have several emulators able to run GEOS. But it had/has its very large and loyal user-base.

 

GEOS remains the benchmark, IMO. It's absolute quality through and through, and has great application support. We're going places GEOS never went with the A8 GUI, but at the same time we have big boots to fill. Diamond is the closest realization of the same thing on the A8, and that's some way behind GEOS, largely because of the lack of applications. But GEOS, Diamond and the new GUI all belong to the same family: they are full resident frameworks for which one can code applications. GEOS is in fact an operating system, since it has its own DOS, while Diamond and the "new one" sit on top of DOS. SpartaDOS X is also an operating system because one can write applications entirely reliant on the resident libraries it provides, and the hardware is entirely abstracted.

 

That's not to say you can't achieve similar visual effects using other methods and in other languages. If there are other A8 GUIs for which one can write entirely hardware abstracted applications entirely in assembler, I apologize if I've missed them out.

 

There are also other possibilities in Mads:

 

create_window(window_title_flag, #88, #70, #144, #60)
create_button(client_handle, #16, #20, #48, button1_text)

 

Is that pretty?

 

And where your libraries are something like

create_window  .proc (.byte object_flags .byte cx .byte cy .byte width, .byte height) .var
...
  rts
  .endp

create_button .proc(.byte parent, .byte cx, .byte cy, .byte width, .word ax) .var
...
  rts
  .endp

 

The generated code is the same. No overhead.

 

Looks very nice indeed. This will work great for applications (in RAM), although not the library code in ROM itself (as I understand the parameters are stored at the head of the procedure code, unless one is using the software stack).

 

And there is more: You can change the program directly via parameter without an extra location by defining the destination of the parameter as location in the executing code (eg.in "MYLABEL AND #00" destination is the 00 as MYLABEL+1)

 

Maybe you can use it. Anyway: Mads is very cool!

 

Great stuff - thanks for those tips. Keep 'em coming, since I'm aware there's a lot about MADS about which non-Polish speakers are simply unaware.

Link to comment
Share on other sites

Looks very nice indeed. This will work great for applications (in RAM), although not the library code in ROM itself (as I understand the parameters are stored at the head of the procedure code, unless one is using the software stack).

 

Great stuff - thanks for those tips. Keep 'em coming, since I'm aware there's a lot about MADS about which non-Polish speakers are simply unaware.

 

I just tested it and it works were you want!

look here:

org $90
cx .ds 1
cy .ds 1
client_handle .ds 1
org $2400
create_button client_handle, #16, #20, #48, button1_text
create_button client_handle, #32, #20, #48, button2_text


button1_text dta d'Hallo'
.db 0
button2_text dta d'Hallo'
.db 0

create_button .proc(.byte parent .byte cx .byte cy .byte width .word lab0+1).var
clc
and cx
adc cy
sta width
lab0 ora $0000
rts
width dta $00
parent dta $00
  .endp

 

 

wich gets to the code

mads 1.9.2 build 21 (21 Jan 11)
Source: C:\c\wudsnprojects161\gedplus2\proc.asm
 1
 2	  org $90
 3 = 0090   cx .ds 1
 4 = 0091   cy .ds 1
 5 = 0092   client_handle .ds 1
 6	  org $2400
 7
 8	  create_button client_handle, #16, #20, #48, button1_text
 8	  MVA CLIENT_HANDLE CREATE_BUTTON.PARENT\ MVA #16 CX\ MVA #20 CY\ MVA #48 CREATE_BUTTON.WIDTH\ MWA BUTTON1_TEXT CREATE_BUTTON.LAB0+1\ JSR CREATE_BUTTON
 8 FFFF> 2400-245A> A5 92 +  MVA CLIENT_HANDLE CREATE_BUTTON.PARENT
 8 2405 A9 10 85 90   MVA #16 CX
 8 2409 A9 14 85 91   MVA #20 CY
 8 240D A9 30 8D 59 24  MVA #48 CREATE_BUTTON.WIDTH
 8 2412 AD 42 24 8D 57 24 +  MWA BUTTON1_TEXT CREATE_BUTTON.LAB0+1
 8 241E 20 4E 24   JSR CREATE_BUTTON
 9	  create_button client_handle, #32, #20, #48, button2_text
 9	  MVA CLIENT_HANDLE CREATE_BUTTON.PARENT\ MVA #32 CX\ MVA #20 CY\ MVA #48 CREATE_BUTTON.WIDTH\ MWA BUTTON2_TEXT CREATE_BUTTON.LAB0+1\ JSR CREATE_BUTTON
 9 2421 A5 92 8D 5A 24  MVA CLIENT_HANDLE CREATE_BUTTON.PARENT
 9 2426 A9 20 85 90   MVA #32 CX
 9 242A A9 14 85 91   MVA #20 CY
 9 242E A9 30 8D 59 24  MVA #48 CREATE_BUTTON.WIDTH
 9 2433 AD 48 24 8D 57 24 +  MWA BUTTON2_TEXT CREATE_BUTTON.LAB0+1
 9 243F 20 4E 24   JSR CREATE_BUTTON
10
11
12
13
14 2442 28 61 6C 6C 6F button1_text dta d'Hallo'
15 2447 00	.db 0
16 2448 28 61 6C 6C 6F button2_text dta d'Hallo'
17 244D 00	.db 0
18
19
20 244E   create_button .proc(.byte parent .byte cx .byte cy .byte width .word lab0+1).var
21 244E 18	clc
22 244F 25 90   and cx
23 2451 65 91   adc cy
24 2453 8D 59 24   sta width
25 2456 05 00  lab0 ora $0000
26 2458 60	rts
27
28 2459 00   width dta $00
29 245A 00   parent dta $00
30
31		.endp

 

That is the same MVA #xx yy as in your code. If yy is in ram it works too. Look the cx above.

You don´t need a software stack for that.

 

I like that very much!

proc.asm

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

I just tested it and it works were you want!

 

Excellent! +10 for that. The fact that the variables don't have to be inline is essential for ROM-based code. Of course, in applications both methods will work. Looks very smart indeed.

 

I like that very much!

 

Me too - thank you! :)

Link to comment
Share on other sites

(as usual, one simple, stupid bug wasted over an hour)

 

Oh, yeah, I absolutely know what you mean! :D :D :D

 

What I was counting bytes in my head, when I wrote my indexed-search-tool before it nearly worked the first time.

Edited by atarixle
Link to comment
Share on other sites

Thinking of using RMT for sounds in this system. Playback code looks pretty economical, although I worry about interference with the Pokey timer interrupts used for the mouse driver. Biggest obstacle is the fact that - despite being a jazz guitarist - I'm no multi-track music editor. Therefore contributions for simple system sounds (bells, burps, buzzers, etc) are welcome. ;)

Link to comment
Share on other sites

Personally, I think that'd be overkill, and maybe short sighted given how I imagine this whole OS might go :)

I'd say implement OS level access to the sound registers and let each app do what it wants, with the OS determining what goes to the actual hardware, so initially say the app in focus has access to the sound hardware.. But cache each apps current state when not in focus to allow you to restore it at a later date..

The OS can then easily override the Apps sounds, on a channel by channel basis, for any immediate bleeps and bloops required for alerting the user to impending doom and/or fuckwittery ;)

Any real hardware is only going to be a jsr (or so) away and it's not like there's a mountain of registers for each voice, and I'd say also allow an app to request exclusive access to a voice so fancy arsed can still work without breaking everything..

Or have each voice used by an app prioritised and then only update those that are assigned physical voices..

That way you can have multiple apps (if you ever multi-tasked) each accessing audio sensibly..

Just my small fraction of an ever declining currency ;)

Link to comment
Share on other sites

I am sure this have been mentioned, but it already looks better than GEM on the ST.

 

:D

 

I tend to agree, with the earlier versions of GEM/TOS anyway. Flashcatjazz has done a great

job. I need to google the desktops from other 8bit OS's, that's where the real comparison lies,

IMHO...

 

EDIT: Hahahaha, just had to point this out - why is it that searching on "8 bit operating system

pictures" brings up so many hits on "Windows 8"?.... :D

Link to comment
Share on other sites

Much as I admire the swivelyness of your monitor, I am very sure it is tomorrow already.

 

In case you hadn't noticed, Jon isn't very good with deadlines -- setting them or meeting them. :)

 

Right! There's nothing else for it. I'm going to have to drive up there and stand over him.

Link to comment
Share on other sites

Much as I admire the swivelyness of your monitor, I am very sure it is tomorrow already.

 

In case you hadn't noticed, Jon isn't very good with deadlines -- setting them or meeting them. :)

 

Right! There's nothing else for it. I'm going to have to drive up there and stand over him.

 

Hold a gun to one of his 1084's, that'll do it.

Link to comment
Share on other sites

Lol, just dawned on me I misread the question ;)

 

What question? :)

 

I am sure this have been mentioned, but it already looks better than GEM on the ST.

 

:D

 

I tend to agree, with the earlier versions of GEM/TOS anyway. Flashcatjazz has done a great

job. I need to google the desktops from other 8bit OS's, that's where the real comparison lies,

IMHO...

 

Well, we might not get much mileage out of comparing like-for-like performance with that of 16-bit operating systems, but I see nothing wrong with aesthetic comparisons to any other system.

 

TOS 2.06, the last version for my Atari STe.

 

post-21964-0-07786100-1337165013_thumb.png

 

NeoDesk...

 

post-21964-0-27615900-1337164993_thumb.png

 

Ours...

 

post-21964-0-21433900-1337164958_thumb.png

 

Our menus...

 

post-21964-0-13756500-1337164983_thumb.png

 

And finally TeraDesk on a Falcon (!).

 

post-21964-0-59981800-1337165021_thumb.jpg

 

Each have their pros and cons. The bigger machines can afford to space things out a little, since they have the benefit of double the A8's screen resolution. I didn't bother posting a shot of GEM in low res. ;)

 

From my reading of the TOS sources, GEM appears to work ostensibly on an 80x25 character grid, hence the window furniture tends to occupy one or more of these cells. This kind of makes sense when you're using a mono-spaced UI font. The A8 GUI still aligns some things (such as windows) to byte boundaries, but in point of fact this is merely convenience since pixel-precise positioning (owing to the way masking and clipping are handled) is no more expensive on pixel boundaries than it is on byte boundaries. The only reason windows snap to byte boundaries is that I haven't bothered making the scroll-bars non-byte aligned, and it may prove unnecessary to do so (after all, it saves a few cycles not shifting things via the LUT).

 

Much as I admire the swivelyness of your monitor, I am very sure it is tomorrow already.

 

In case you hadn't noticed, Jon isn't very good with deadlines -- setting them or meeting them. :)

 

Right! There's nothing else for it. I'm going to have to drive up there and stand over him.

 

Hold a gun to one of his 1084's, that'll do it.

 

Certainly I'm one of Planet Earth's worst time-keepers. However, I'm eccentric so that's my excuse, lol. :)

 

Most wives will testify that "tomorrow" when asserted by the husband actually means some time in the next decade (tiling bathroom, etc). However, the demo will be out long before I get the bathroom done. :D

  • Like 1
Link to comment
Share on other sites

 

Certainly I'm one of Planet Earth's worst time-keepers. However, I'm eccentric so that's my excuse, lol. :)

 

Most wives will testify that "tomorrow" when asserted by the husband actually means some time in the next decade (tiling bathroom, etc). However, the demo will be out long before I get the bathroom done. :D

 

Ah well, at least you have your priorities straight :D

  • Like 1
Link to comment
Share on other sites

 

Each have their pros and cons. The bigger machines can afford to space things out a little, since they have the benefit of double the A8's screen resolution. I didn't bother posting a shot of GEM in low res. ;)

 

 

That's okay, I will. :)

 

post-5822-0-25906700-1337172359_thumb.gif

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