TweetFollow Us on Twitter

Video
Volume Number:3
Issue Number:5
Column Tag:Assembly Language Lab

Video Independence

By Dan Weston, Macintosh Author

Working With Big Screens

The big screens are here. You've seen them at MacExpo in Boston and elsewhere. Micrographix, E-machine, Radius; the names will soon be more familiar. And now the Macintosh II and custom third party video boards and monitors will soon dominate the Macintosh world. Will your applications run on the big screens?

If you've already been testing your programs on the Lisa/XL, then you probably already know how to work with other screen sizes. But most of us are poking along with a single Mac and we don't get a chance to play with the other members of the Macintosh family.

It's really easy to make sure that your programs will take advantage of the big screens. This short article shows how find out how big the current screen is and how to grow and move your windows so that they can use the whole screen.

How Big is the Screen?

The first thing to do is check the Quickdraw globals for the screenbits.bounds rectangle which gives the bounding rectangle for the whole screen. Quickdraw and the window manager use this rectangle, so you might as well do it too.

GetScreenSize is a short assembly language subroutine that takes a pointer to a rectangle variable and fills it in with the coordinates of screenbits.bounds.

; GetScreenSize.ASM
; This module finds out the size of the screen
; currently installed on your Mac
; It fills in a VAR rectangle with the coordinates 
; of screenbits.bounds

INCLUDE QuickEqu.D

XDEF    GetScreenSize

; Procedure GetScreenSize(VAR r:rect)
GetScreenSize:

r  SET  8 ;offset to rectangle parameter
parambytesSET  4 ; bytes for parameter 
 
LINK    A6,#0    ; no locals 
MOVE.L  r(A6),A1 ; get dest rect
MOVE.L  GrafGlobals(A5),A0; get QD globals
LEAscreenBits+bounds(A0),A0 
 
MOVE.L  (A0)+,(A1)+; move the first part
MOVE.L  (A0)+,(A1)+; move the rest
 
UNLK    A6; get rid of stack frame
MOVE.L  (SP)+,A0 ; return address
ADDA.W  #parambytes,SP    ; strip parameter
JMP(A0) ; return

GetScreenSize uses register A5 to get the pointer to the Quickdraw globals and then offsets into the globals to get at screenbits.bounds. Then it copies the coordinates into the VAR rectangle. If you are using a high level language, then you can probably use an expression like

tempRect := screenbits.bounds;

Dragging a Window all Over Town

Once you have the screen dimensions (top and left of screenbits.bounds are always 0,0) you can use them to guide window dragging and growing. For instance, DragWindow takes a rectangle parameter that delimits the boundaries in which the window may be dragged. A good strategy is to inset our copy of screenbits.bounds by about 20 pixels so that at least part of the window will remain on the screen at all times. Figure 1 shows just how far we can drag a window within the inset screen rectangle. The code for doing this is shown below.

figure 1: DragWindow limits

;-------- DoDrag -------------
DoDrag
; The click was in the drag bar of the window.  Drag it.

; xProcedureGetScreenSize(VAR r:Rect)
PEAtRect(A5); global scratch rect
JSRGetScreenSize
 
;Procedure  InsetRect(VAR r:Rect;dh,dv:INTEGER)
PEAtRect(A5); the rect
MOVE.W  #20,-(SP); dh
MOVE.W  #20,-(SP); dv
_InsetRect

; DragWindow (theWindow:WindowPtr; startPt: Point;             
 boundsRect: Rect);
MOVE.L  WWindow(A5),-(SP) ; Pass window 
MOVE.L  Point(A5),-(SP) ; mouse coordinates
PEAtRect(A5); and boundaries
_DragWindow ; Drag Window 
BRA     NextEvent; Go get next event

Growing As Big as You Can

Another use for the screen boundaries is to govern GrowWindow so that your windows can get as big as the biggest screen. GrowWindow takes a rectangle parameter; the top and left coordinates specify the smallest vertical and horizontal measurements the window can have. I choose 70 for each of these so that even the smallest window will have complete scoll bars, including a thumb, as shown in figure 2.

Figure 2: GrowWindow limits

The bottom and right coordinates of the growrect parameter to GrowWindow specify the maximum vertical and horizontal dimensions the window can have. The bottom coordinate of screenbits.bounds, minus about 15 pixels, is good for the maximum height. The maximum width should be wider than the screen, however, to allow for stretching windows partially off the sides of the screen, as many people learned to do with MacWrite. I chose the largest positive integer, $7FFF, for my maximum width. Beware of using negative numbers for this parameter.

Interestingly enough, even though MacWrite will let you make a window much wider than the screen, it seems to have the original Mac screen height hard-coded into its grow routine. E-Machines includes a nice ROM patch with its big screen that lets you hold down the option key while growing a window to override the limits that the underlying program may be trying to impose on window size. The code fragment to grow a window on an arbitrary screen is shown below.

;-----------------  DoGrow  ------------------------
DoGrow:

; first include scroll bar and grow region in update region
BSRInvalidScroll
 
; here is where we actually grow the window
; xProcedureGetScreenSize(VAR r:Rect)
PEAtRect(A5); global scratch rect
JSRGetScreenSize
 
ADD.W #70,tRect+top(A5)   ; 70 pixels high
ADD.W #70,tRect+left(A5)  ; 70 pixels wide
SUB.W #15,tRect+bottom(A5); not too tall
MOVE.W  #$7FFF,tRect+right(A5);extra-wide OK
 
;FUNCTION GrowWindow(theWindow:WindowPtr;startPt:Point;
;   sizeRect:Rect):LONGINT
CLR.L -(SP) ; space for result
MOVE.L  WWindow(A5),-(SP) ; theWindow
MOVE.L  Point(A5),-(SP) ; startPt
PEAtRect(A5); sizeRect
_GrowWindow
MOVE.W  (SP)+,D1 ; new vertical dimension
MOVE.W  (SP)+,D0 ; new horizontal dimension
 
; now draw it to the new size

True Confessions

It is really so easy to check the screen size that there is no excuse for not doing it. I am sorry to say that I make the mistake of using hard-coded screen sizes in some of my example programs in The Complete Book of Macintosh Assembly Langauge Programming, Vol I. We all live and learn, I guess. I am preparing a list of other things that could have been better in the book. Some suggestions have already come from readers. I encourage you to send me your comments so that I can keep the material up-to-date through articles like this or maybe with mailings to readers. [Dan Weston's two book series, The Complete Book of Macintosh Assembly Language Programming, Vol. 1 & 2, is a classic and one of the best of all Mac programming books. We recommend it highly. Write to Dan care of MacTutor and we will forward any comments to him. His books are published by Scott Foresman & Co. and available at B. Dalton bookstores. -Ed]

Big Screens Have Big Prices

Anthony J. Oresteen

Batavia, IL

In recent months there have been numerous large screen monitors introduced for the Macintosh. These include the Radius, Big Picture, MegaScreen II, ect. One thing in common with these products is the big price. They all cost about $2000! Similar screens are available for the IBM PC world at half the price, around $999 for screen, PC card and support software. The Wyse WY-700 at 1200 x 800 is one that comes to mind. Somehow I smell a snake here. What are Macintosh buyers getting for the extra $1000? Perhaps we can learn a lesson from "hard disk" history. I'm waiting for the price drop!

[The impact of the Mac II will make alternate screen technologies more acceptable, driving up demand and competition, which will drive down the price. -Ed]

 
AAPL
$441.35
Apple Inc.
+1.69
MSFT
$34.61
Microsoft Corpora
-0.24
GOOG
$889.42
Google Inc.
-17.55

MacTech Search:
Community Search:

Software Updates via MacUpdate

SteerMouse 4.1.6 - Powerful third-party...
SteerMouse is an advanced driver for USB and Bluetooth mice. It also supports Apple Mighty Mouse very well. SteerMouse can assign various functions to buttons that Apple's software does not allow,... Read more
Google Chrome 27.0.1453.93 - Modern and...
Google Chrome is a Web browser by Google, created to be a modern platform for Web pages and applications. It utilizes very fast loading of Web pages and has a V8 engine, which is a custom built... Read more
Labels & Addresses 1.6.5 - Powerful...
Labels & Addresses is a home and office tool for printing all sorts of labels, envelopes, inventory labels, and price tags. Merge-printing capability makes the program a great tool for holiday... Read more
KeyCue 6.5 - Displays all menu shortcut...
KeyCue helps you to use your OS X applications more effectively. Just hold down the Command key for a while - KeyCue comes to help and shows a table of all currently available keyboard shortcuts.... Read more
HoudahSpot 3.7.8 - Advanced front-end fo...
HoudahSpot is a flexible file-search tool based on Apple's powerful Spotlight engine. Keep frequently used files within reach Retrieve the files you didn't know you still had Don't waste time... Read more
Cobook Contacts 1.2.6 - Intelligent addr...
Cobook Contacts is a better address book that makes contact management enjoyable for millions of people every day. Find contacts faster and organize them with tags. Get integrated social profiles... Read more
AppDelete 4.0.7 - Delete your unwanted a...
AppDelete is an uninstaller for Macs that will remove not only applications but also widgets, preference panes, plugins and screensavers along with their associated files. Without AppDelete these... Read more
OnyX 2.6.9 - Maintenance and optimizatio...
OnyX is a multifunctional utility for OS X. It allows you to verify the startup disk and the structure of its System files, to run miscellaneous tasks of system maintenance, to configure the hidden... Read more
Apple iTunes 11.0.3 - Manage your music,...
Apple iTunes lets you organize and play digital music and video on your computer. It can automatically download new music, app, and book purchases across all your devices and computers. And it's a... Read more
Spotify 0.9.0.133. - Stream music, creat...
Spotify is a new way to enjoy music. Simply download and install. Before you know it you'll be singing along to the genre, artist, or song of your choice. With Spotify you are never far away from... Read more

Logitech To Release Wired Keyboard With...
Logitech To Release Wired Keyboard With The Classroom In Mind Posted by Andrew Stevens on May 22nd, 2013 [ permalink ] Logitech has created a wired keyboard for the iPad which | Read more »
Pocket Informant Pro Completely Redesign...
Pocket Informant Pro Completely Redesigns Interface In Latest Update Posted by Andrew Stevens on May 22nd, 2013 [ permalink ] | Read more »
Warhammer 40,000: Armageddon Brings The...
Warhammer 40,000: Armageddon Brings The Second War of Armageddon To iOS, Next Year Posted by Andrew Stevens on May 22nd, 2013 [ permalink ] Strategy game creator, Slitherine, unleashes Armageddon, its firs | Read more »
World of Aircraft MMO Flies Into Action
World of Aircraft MMO Flies Into Action Posted by Andrew Stevens on May 22nd, 2013 [ permalink ] Universal App - Designed for iPhone and iPad | Read more »
iBillionaire Compares Your Stock Market...
iBillionaire Compares Your Stock Market Portfolio To Actual Billionaire Portfolios Posted by Andrew Stevens on May 22nd, 2013 [ | Read more »
Greedy Grub Gets A Nature Filled Gamepla...
Greedy Grub Gets A Nature Filled Gameplay Trailer, Launches This Week Posted by Andrew Stevens on May 22nd, 2013 [ permalink ] Greedy Grub, a fun simulation game based on the work of comic artis | Read more »
OmniPresence Automatic Document Syncing...
OmniPresence Automatic Document Syncing Is Now Available Posted by Andrew Stevens on May 22nd, 2013 [ permalink ] The Omni Group has released OmniPresence, bringing automatic document syncing to OmniGraffle, OmniOutliner, a | Read more »
Zoombies: Animales de la Muerte! Review
Zoombies: Animales de la Muerte! Review By Carter Dotson on May 22nd, 2013 Our Rating: :: FIESTA!iPad Only App - Designed for the iPad Yes, a game about taking on hordes of zombified animals is as good as it sounds.   | Read more »
THX tune-up™ Review
THX tune-up™ Review By Michael Carattini on May 22nd, 2013 Our Rating: :: EASY TV DISPLAY ADJUSTMENTUniversal App - Designed for iPhone and iPad THX tune-up is a fantastic utility that makes it simple and easy to adjust your TV’s... | Read more »
Earth Invasion Episode I: Eclipse Review
Earth Invasion Episode I: Eclipse Review By Campbell Bird on May 22nd, 2013 Our Rating: :: FIGHT OFF THE "BUGS"Universal App - Designed for iPhone and iPad Earth Invasion Episode I: Eclipse is a real-time strategy game that is... | Read more »

Price Scanner via MacPrices.net

Platform Wars: Tablets Triumphant, But Don’t Write...
The Register’s Paul Kunert says it’s finally official – the epic battle of legendary Apple CEO Steve Jobs is finally won, now that he has toppled the PC platform from beyond the grave, in the UK, at... Read more
Apple Tops 100 Most Valuable Global Brands 2013 Su...
MarketingWeek’s Lou Cooper reports that this years BrandZ ranking of the top 100 valuable global brands sees Apple maintain its reign as number one, ahead of Google and IBM in second and third and... Read more
How To Create A 4GB/S RAM Disk In Mac OS X
TekRevue notes that RAM Disks, as the name indicates, are logical storage volumes created using a computers memory (RAM) instead of a traditional hard drive or solid state drive. Back in the day, RAM... Read more
How To Factory Reset On An iPhone or iPad
PC Advisor’s Jim Martin notes that when you come to sell your iPhone or iPad – or even give it to a family member – you should erase all the data and restore it to factory settings to avoid handing... Read more
HGST Launches 1.5TB Capacity in Standard 2.5-inch...
HGST (formerly Hitachi Global Storage Technologies and now a Western Digital company) continues to push technology innovation by offering the highest storage density (MB/mm3) of any hard disk drive (... Read more
iPads with Retina Displays (Apple refurbished) ava...
The Apple Store has Apple Certified Refurbished 4th generation iPads with Retina Displays, Wi-Fi & Cellular, available for $50 off MSRP. Apple’s one-year warranty is included with each iPad, and... Read more
Apple MacBook Orders To Rise 20% Sequentially In 2...
Digitimes’ Aaron Lee and Joseph Tsai say that with Apple ready to release its new MacBook products in the near future, sources from the upstream supply chain have revealed that orders for MacBook... Read more
Trial Production of 5th-Generation iPad To Begin R...
Digitimes’ Max Wang and Adam Hwang report that trial production of Apple’s 5th-generation 9.7-inch iPad will begin soon with volume production to begin in July, and monthly shipments ramping up to 2-... Read more
Dell’s $100 Thumb-Sized Android PC To Ship In July...
9to5google.com says that Dell’s Project Orphelia, a thumb-sized drive that turns any display with an HDMI port into an Android PC, is to start shipping in July at a price of around $100 according to... Read more
MacBook Airs (Apple refurbished) available startin...
 The Apple Store has Apple Certified Refurbished 2012 MacBook AIrs available for up to $240 off MSRP, with models starting at $849. An Apple one-year warranty is included with each model, and... Read more

Jobs Board

Mac/ *Apple* Specialist Needed | Enterp...
Mac/ Apple Specialist Needed | Enterprise iPad Deployment A prominent Robert Half client is seeking out a Mac/ Apple Specialist to assist with an iPad deployment Read more
Class 1 District *Apple* Technician -...
QUALIFICATIONS: High School diploma Associate Degree in Technology preferred. Apple Certified Support Professional Mac OS X 10.5, 10.6, 10.7, 10.8 Apple Certified Read more
*Apple* At-Home Team Manager - Apple (U...
Changing the world is all in a day's work at Apple . If you love innovation, here's your chance to make a career of it. You'll work hard. But the job comes with more than Read more
Class 1 District *Apple* Technician -...
QUALIFICATIONS: High School diploma Associate Degree in Technology preferred. Apple Certified Support Professional Mac OS X 10.5, 10.6, 10.7, 10.8 Apple Certified Read more
*Apple* Infrastructure Engineer II - Ba...
39964 Apple Infrastructure Engineer II Full Time Regular posted 04/22/2013 San Ramon, CA San Francisco, CA Requirements What sets Bank of the West apart from other banks Read more
All contents are Copyright 1984-2011 by Xplain Corporation. All rights reserved. Theme designed by Icreon.