Jump to content



20

New GUI for the Atari 8-bit


1661 replies to this topic

#1651 kenjennings ONLINE  

kenjennings

    Chopper Commander

  • 102 posts
  • Me + sio2pc-usb + 70 old floppies
  • Location:Florida, USA

Posted Yesterday, 5:05 PM

View Postflashjazzcat, on Thu May 24, 2012 6:50 AM, said:

View Postvenom4728a, on Wed May 23, 2012 8:48 PM, said:

. . .
Robert

Nice list, although the last one's baffling: why would we call it "Robert"? :D

Ok, instead call it "Bruce" to keep it clear.



#1652 Chilly Willy OFFLINE  

Chilly Willy

    Moonsweeper

  • 316 posts
  • Location:The Land of Enchantment

Posted Yesterday, 5:32 PM

Atari Interface Desktop System - give your Atari AIDS today! :D

#1653 AtariNerd OFFLINE  

AtariNerd

    Dragonstomper

  • 614 posts
  • Location:California

Posted Yesterday, 5:32 PM

Probably something more basic would tend to stick better.

Modern Atari Graphical Interface. or MAGI

or

First Usable Atari Graphical Interface or FUAGI , pronounce like Fuji. ;)

(I'll get my hat.)

or stealing an idea

Graphical Atari Interface OS or GAIOS. ;)

Something along those lines.

Edited by AtariNerd, Yesterday, 6:08 PM.


#1654 ToddUGA OFFLINE  

ToddUGA

    Star Raider

  • 89 posts

Posted Yesterday, 5:53 PM

RetrOS Darn. Already taken. How about AnticOS?

Edited by ToddUGA, Yesterday, 5:58 PM.


#1655 Bryan OFFLINE  

Bryan

    Quadrunner

  • 7,626 posts
  • Cruise Elroy = 4DB7
  • Location:Port St. Lucie, Florida

Posted Yesterday, 6:33 PM

How about the Linux-style recursive acronym? Zing = Zing Is Not GEM.

#1656 bf2k+ OFFLINE  

bf2k+

    Stargunner

  • 1,461 posts
  • Location:Boot Factory BBS 2k+

Posted Yesterday, 8:28 PM

POOF!

#1657 Shawn Jefferson OFFLINE  

Shawn Jefferson

    Stargunner

  • 1,538 posts
  • Location:Victoria, Canada

Posted Yesterday, 10:33 PM

Big Object Oriented BIOS System?


ok, that one was a joke. ;)

#1658 flashjazzcat OFFLINE  

flashjazzcat

    Quadrunner

  • 5,407 posts
  • Jumping through hOOPs...
  • Location:United Kingdom

Posted Today, 2:46 AM

View PostBryan, on Thu May 24, 2012 6:33 PM, said:

How about the Linux-style recursive acronym? Zing = Zing Is Not GEM.

Nice!

View PostShawn Jefferson, on Thu May 24, 2012 10:33 PM, said:

Big Object Oriented BIOS System?

Wife: "Are you still on that laptop? What you doing?" Husband: "Just downloading BOOBS".

Handy!

#1659 GroovyBee OFFLINE  

GroovyBee

    7800 Developer

  • 5,781 posts
  • Busy bee!
  • Location:North, England

Posted Today, 2:54 AM

View PostBryan, on Thu May 24, 2012 6:33 PM, said:

How about the Linux-style recursive acronym? Zing = Zing Is Not GEM.

In EastEnders style it'd be FINX = FINX Is Not X or "thinks".

#1660 atarixle OFFLINE  

atarixle

    Chopper Commander

  • 169 posts
  • Location:Germany

Posted Today, 4:25 AM

just how about "GUI" ... lol ... I was tempted to name my cat "Cat" so call the GUI just "GUI" ... just kidding

#1661 flashjazzcat OFFLINE  

flashjazzcat

    Quadrunner

  • 5,407 posts
  • Jumping through hOOPs...
  • Location:United Kingdom

Posted Today, 5:12 AM

Since this demo application is getting more complex, and it's the first and only application yet written for the GUI, here's a snippet of the main loop and some other bits:

mainloop
	mwa #myevent EventRec
	jsr get_event	; wait for event

	mwa myevent[0].handle object ; set up object handle in advance for those functions which need it
  
	lda myevent[0].what	; see what kind of event we have
	cmp #GUIEventType.WM_SIZE
	bne not_window_sized
	jsr get_client_xywh ; get client position and size and store them
	jsr CalcDocumentSize ; make any necessary changes to document size and scroll bars
	jsr SetDocumentSize
	jmp mainloop

not_window_sized
	cmp #GUIEventType.WM_MOVE
	bne not_window_moved
	jmp mainloop ; nothing to do at the moment
  
not_window_moved
	cmp #GUIEventType.WM_REDRAW
	bne not_window_redraw
	jsr get_client_xywh
	jsr CalcDocumentSize ; we should cache these values to save time here
	jsr render_client
	jmp mainloop
  
not_window_redraw
	cmp #GUIEventType.WM_HSLIDE
	bne not_hscroll
	jsr dohslide
	jmp mainloop
  
not_hscroll
	cmp #GUIEventType.WM_VSLIDE
	bne not_vscroll
	jsr dovslide
	jmp mainloop
  
not_vscroll
	jmp mainloop


dohslide
	jsr get_client_xywh ; save client area position and size
	mwa MyEvent[0].x CXOffs ; get x offset into document
	jsr CalcDocumentSize
	jsr CalcFirstFile
	jsr ClearClientArea
	jsr render_client
	rts
;

dovslide
	mwa MyEvent[0].y CYOffs
	
	rts



	.proc CalcDocumentSize ; work out size of document
	mwa myclienth ptr1
	mwa #10 ptr2
	jsr divword ; get client height div 10
	stax FilesPerColumn
	stax ptr2
	mwa #NUMFILES ptr1
	jsr divword ; work out number of columns
	stax NumColumns
	stax ptr1
	lda ptr4 ; check remainder
	beq NoExtraColumn
	inc NumColumns
	inc ptr1
NoExtraColumn
	mwa #ColumnWidth ptr2
	jsr mulword ; work out pixel width of document
	stax DocumentWidth
	
	rts
	.endp



	.proc SetDocumentSize ; set the document and scrollbar thumb size
	mwa myclienth Height
	mwa DocumentWidth Width
	lda #WindowProp.DOCUMENTSIZE
	jsr winset
	rts
	.endp
	

	.proc CalcFirstFile
	mwa CXOffs ptr1
	mwa #ColumnWidth ptr2
	jsr divword ; get X Offset div Column Width
	stax ptr1
	asl ptr4 ; see if remainder * 2 is greater than column width
	cmp #ColumnWidth
	bcc NoExtraCol
	inc ptr1 ; bump column number
NoExtraCol
	mwa FilesPerColumn ptr2
	jsr mulword
	stax FirstFile
	rts
	.endp
	
	
	.proc ClearClientArea
	mwa myclientx cx
	mwa myclienty cy
	mwa myclientw width
	mwa myclienth height
	jmp clear_box_b
	.endp
	

get_client_xywh
	lda #WindowProp.CLIENT ; get dimensions and position of client area
	jsr winget
	mwa cx myclientx
	mwa cy myclienty
	mwa width myclientw
	mwa height myclienth
	rts
;


get_event_message_xywh
	mwa myevent[0].x cx
	mwa myevent[0].y cy
	mwa myevent[0].width width
	mwa myevent[0].height height
	rts
;



All very rough but I thought it would give some idea of how main loops might look in MADS assembler. It will all be much more intuitive, I think, when PROC calls are used and all the application's code uses paramater passing. CalcDocumentSize is bundles of fun: after a window resize, it figures out how many filenames fit in a column, how many columns there are, and how big the virtual workspace needs to be based on this information. SetDocumentSize then passes these dimensions to the window manager, which scales the horizontal scroll bar to suit. These scroll bars are very tricky to get right, and I'll be making a lot of tweaks over the weekend. It's enormous fun seeing this stuff come together, though. I figure it'll be a real blast writing applications.

#1662 Stephen OFFLINE  

Stephen

    River Patroller

  • 3,240 posts
  • A8 Gear Head
  • Location:Akron, Ohio

Posted Today, 8:05 AM

View PostGroovyBee, on Fri May 25, 2012 2:54 AM, said:

View PostBryan, on Thu May 24, 2012 6:33 PM, said:

How about the Linux-style recursive acronym? Zing = Zing Is Not GEM.

In EastEnders style it'd be FINX = FINX Is Not X or "thinks".
Nice one, innit :)




1 user(s) are reading this topic

0 members, 1 guests, 0 anonymous users