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]

 

Community Search:
MacTech Search:

Software Updates via MacUpdate

ClamXav 2.10 - Virus checker based on Cl...
ClamXav is a popular virus checker for OS X. I have been working on ClamXav for more than 10 years now, and over those years, I have invested a huge amount of my own time and energy into bringing... Read more
Tweetbot 2.4.4 - Popular Twitter client.
Tweetbot is a full-featured OS X Twitter client with a lot of personality. Whether it's the meticulously-crafted interface, sounds and animation, or features like multiple timelines and column views... Read more
Sierra Cache Cleaner 11.0.1 - Clear cach...
Sierra Cache Cleaner is an award-winning general purpose tool for macOS X. SCC makes system maintenance simple with an easy point-and-click interface to many macOS X functions. Novice and expert... Read more
Things 2.8.8 - Elegant personal task man...
Things is a task management solution that helps to organize your tasks in an elegant and intuitive way. Things combines powerful features with simplicity through the use of tags and its intelligent... Read more
Remotix 4.1 - Access all your computers...
Remotix is a fast and powerful application to easily access multiple Macs (and PCs) from your own Mac. Features Complete Apple Screen Sharing support - including Mac OS X login, clipboard... Read more
Airfoil 5.1.2 - Send audio from any app...
Airfoil allows you to send any audio to AirPort Express units, Apple TVs, and even other Macs and PCs, all in sync! It's your audio - everywhere. With Airfoil you can take audio from any... Read more
Firefox 49.0.1 - Fast, safe Web browser.
Firefox offers a fast, safe Web browsing experience. Browse quickly, securely, and effortlessly. With its industry-leading features, Firefox is the choice of Web development professionals and casual... Read more
Default Folder X 5.0.7 - Enhances Open a...
Default Folder X attaches a toolbar to the right side of the Open and Save dialogs in any OS X-native application. The toolbar gives you fast access to various folders and commands. You just click on... Read more
Safari Technology Preview 10.1 - The new...
Safari Technology Preview contains the most recent additions and improvements to WebKit and the latest advances in Safari web technologies. And once installed, you will receive notifications of... Read more
Pinegrow Web Designer 2.94 - Mockup and...
Pinegrow Web Designer is desktop app that lets you mockup and design webpages faster with multi-page editing, CSS and LESS styling, and smart components for Bootstrap, Foundation, Angular JS, and... Read more

3 reasons you need to play Kingdom: New...
Developed by a tag team of indie developers - Thomas "Noio" van den Berg and Marco "Licorice" Bancale - Kingdom is a vibrant medieval fantasy adventure that casts players as a king or queen who must expand their empire by exploring the vasts lands... | Read more »
JoyCity have launched a brand new King o...
Great news for all of you Game of Dice fans out there - JoyCity have just released a brand new limited edition pack with a really cool twist. The premise of Game of Dice is fairly straightforward, asking you to roll dice to navigate your way around... | Read more »
Burly Men at Sea (Games)
Burly Men at Sea 1.0 Device: iOS Universal Category: Games Price: $4.99, Version: 1.0 (iTunes) Description: Burly Men at Sea is a folktale about a trio of large, bearded fishermen who step away from the ordinary to seek adventure. | Read more »
3 tips for catching the gnarliest waves...
Like a wave breaking on the shore, Tidal Rider swept its way onto the App Store charts this week settling firmly in the top 10. It’s a one-touch high score-chaser in which you pull surfing stunts while dodging seagulls and collecting coins. The... | Read more »
The beginner's guide to destroying...
Age of Heroes: Conquest is 5th Planet Games’ all new turn-based multiplayer RPG, full of fantasy exploration, guild building, and treasure hunting. It’s pretty user-friendly as far as these games go, but when you really get down to it, you’ll find... | Read more »
Infinite Tanks (Games)
Infinite Tanks 1.0.0 Device: iOS Universal Category: Games Price: $4.99, Version: 1.0.0 (iTunes) Description: | Read more »
Agatha Christie - The ABC Murders (FULL)...
Agatha Christie - The ABC Murders (FULL) 1.0 Device: iOS Universal Category: Games Price: $6.99, Version: 1.0 (iTunes) Description: Agatha Christie: The ABC Murders Your weapon is your knowledge. Your wits will be put to the ultimate... | Read more »
HeadlessD (Games)
HeadlessD 1.0 Device: iOS Universal Category: Games Price: $.99, Version: 1.0 (iTunes) Description: HeadlessD is hand-painted dungeon crawler with intuitive touch controls and NO in-app purchases. | Read more »
Leaf for Twitter (Social Networking)
Leaf for Twitter 1.0.1 Device: iOS iPhone Category: Social Networking Price: $4.99, Version: 1.0.1 (iTunes) Description: | Read more »
Banner Saga 2 (Games)
Banner Saga 2 1.0 Device: iOS Universal Category: Games Price: $4.99, Version: 1.0 (iTunes) Description: The epic award winning story-based role-playing game continues its emotional journey across a breaking world. Lead your Viking... | Read more »

Price Scanner via MacPrices.net

MacBook Airs on sale for up to $100 off MSRP
B&H Photo has 13″ and 11″ MacBook Airs on sale for up to $100 off MSRP. Shipping is free, and B&H charges NY sales tax only: - 11″ 1.6GHz/128GB MacBook Air: $799 $100 MSRP - 11″ 1.6GHz/256GB... Read more
Apple refurbished 12-inch 128GB iPad Pros ava...
Apple has Certified Refurbished 12″ Apple iPad Pros available for up to $160 off the cost of new iPads. An Apple one-year warranty is included with each model, and shipping is free: - 32GB 12″ iPad... Read more
Phone2Action Unveils New Voter Turnout Techno...
Phone2Action, a leading digital advocacy platform, today launched its Tech to Vote Civic Action Center digital advocacy and communications platform on National Voter Registration Day September 27.... Read more
Apple & Deloitte Team Up to Help Business...
Apple and international professional services firm Deloitte have announced a partnership to help companies quickly and easily transform their workflow dynamics by maximizing the power, ease-of-use,... Read more
Chop Commute – See Traffic and Drive Times on...
Shrewsbury, Massachusetts based Indie developer, InchWest has released Chop Commute 1.61, a Mac app that takes the guesswork out of daily commute by showing real-time traffic and drive times right on... Read more
12-inch 32GB WiFi iPad Pros on sale for $50 o...
B&H Photo has 12″ 32GB WiFi Apple iPad Pros on sale for $50 off MSRP, each including free shipping. B&H charges sales tax in NY only: - 12″ Space Gray 32GB WiFi iPad Pro: $749 $50 off MSRP -... Read more
Recent price drops on refurbished iPad minis...
Apple recently dropped prices on several Certified Refurbished iPad mini 4s and 2s as well as iPad Air 2s. An Apple one-year warranty is included with each model, and shipping is free: - 16GB iPad... Read more
Apple refurbished Mac minis available startin...
Apple has Certified Refurbished Mac minis available starting at $419. Apple’s one-year warranty is included with each mini, and shipping is free: - 1.4GHz Mac mini: $419 $80 off MSRP - 2.6GHz Mac... Read more
13-inch 2.5GHz MacBook Pro available for $928...
Overstock has the 13″ 2.5GHz MacBook Pro available for $927.99 including free shipping. Their price is $171 off MSRP. Read more
Buying McLaren Would Give Apple Instant Car C...
Apple “iCar” rumors have waxed and waned over the years, piquing interest and speculation as to whether Apple is seriously interested in getting into the automotobile business, either in a joint... Read more

Jobs Board

Restaurant Manager (Neighborhood Captain) - A...
…in every aspect of daily operation. WHY YOU'LL LIKE IT: You'll be the Big Apple . You'll solve problems. You'll get to show your ability to handle the stress and Read more
*Apple* Wireless Lead - T-ROC - The Retail O...
…wealth of knowledge in wireless sales and activations to the Beautiful and NEW APPLE Experience store within MACYS.. THIS role, APPLE Wireless Lead, isbrandnewas Read more
Lead *Apple* Advocate - T-ROC - The Retail...
…Company, is proud of its unprecedented relationship with our partner and client, APPLE ,in bringing amazing" APPLE ADVOCATES"to "non" Apple store locations. Read more
*Apple* Advocate - T-ROC - The Retail Outsou...
…Company, is proud of its unprecedented relationship with our partner and client, APPLE ,in bringing amazing" APPLE ADVOCATES"to "non" Apple store locations. Read more
Lead *Apple* Solutions Consultant - Apple (...
# Lead Apple Solutions Consultant Job Number: 51829230 Detroit, Michigan, United States Posted: Sep. 19, 2016 Weekly Hours: 40.00 **Job Summary** The Lead ASC is an Read more
All contents are Copyright 1984-2011 by Xplain Corporation. All rights reserved. Theme designed by Icreon.