TweetFollow Us on Twitter

Blanking
Volume Number:2
Issue Number:2
Column Tag:Basic School

Asm Utility Speeds Screen Blanking

By Dave Kelly, Engineer, General Dynamics, MacTutor Editorial Board

For those that remember Professor Mac's Screen Pokes presented in the April 1985 issue of MacTutor, we discussed the Macintosh screen and how to poke the screen to all blank. The method presented there was very slow. Until such time as someone comes out with a MS BASIC compiler most routines will be slow. MacTutor now has a call out to anyone that has a complier for MS BASIC to step forward and become famous. Please contact us if you have any information to give us about compiled BASIC.

This month we will provide the alternative screen poke method using a library written in 68000 code. These routines were designed to work with the 512K or 128K versions of the Macintosh, however, the code may be modified to be used with other memory sizes.

If you are unfamiliar with BASIC libraries then we recommend that you refer to the BASIC School article in the November 1985 MacTutor on Building a Machine Language Library routine. (Back issues are available). The listings that follow are assembled in the same manner as discussed in that column.

There are three code routines that you need to be concerned with. The LIBinit.asm (Listing 1) routine may be found on page 44 of the Nov. 85 MacTutor. The second routine stores $FFFFFFFF in all screen locations, thus blacking out the entire screen. The third routine inverts all of the screen locations. We thank Serge Rostan of Pontoise, France for contributing the main code for the invert routine.[If you have some good ideas on Basic, please write Dave care of MacTutor and see them in print. -Ed]

The BlankScreen routine (Listing 2) is accessed by the statement: CALL BlankScreen (memory%) where memory% is the memory of your particular system (i. e. use memory%=512 or memory%=128). This routine works fine for 512K or 128K Macs, but you will have to change the equates for Screen512 and/or Screen128 (see listing 2) in order to accomodate other memory sizes. The equates 'GetNextLibArg', 'IntegerArg' and 'BasicError' are BASIC routines defined in BMLL (Microsoft's Building Machine Language Libraries) which library routines may call. The BlankScreen routine reads the memory% parameter and determines the screen location. Then each location is loaded with $FFFFFFFF and the screen is blank. The routine then returns back to the calling program.

The InvertScreen routine (Listing 3) works much the same as the BlankScreen routine. You may call the routine with the statement: CALL InvertScreen (memory%). The passed integer variable memory% is the same as in the BlankScreen routine. The only difference in this routine is that each memory location is exclusive-ored with the value $FFFFFFFF.

Listing 4 and 5 are the Linker and Resource complier files needed by the MDS system to create the library resource file. See Nov 1985 MacTutor for details on how to us these files.

The Screen Demo program in listing 6 demonstrates the use of the BlankScreen and InvertScreen routines. It is advisable but not mandatory that you hide the cursor using HIDECURSOR before blanking or inverting the screen. The cursor may be turned on again with the SHOWCURSOR statement. If the cursor is not disabled then the 16 X 16 cursor location will not be blanked or inverted properly. These libraries may be used to create special effects in your program such as flashing the screen.

Expanding BASIC using library routines greatly improves the capabilities of your programs. If you have a favorite library routine, please send it to us. We would like to share more libraries with other useful purposes.


LISTING 1
;LIBinit routine (See MacTutor Nov. 1985 pg. 44 for comments)
;save as LIBinit.asm

LIBVER_Result  EQU 6
LIBinit:
 CLR.W  LIBVER_Result(a0)
LIBinitExit:
 MOVEQ  #0,d0
 RTS


LISTING 2
; BASIC BlankScreen Library Source Code
; By Dave Kelly
; MacTutor 1985

;Synopsis:
;CALL BlankScreen (memory%)
;Output:

GetNextLibArg  EQU $2A
IntegerArgEQU  $32
BasicErrorEQU  $42
Screen512 EQU  ((512-128)*1024)+108288
Screen128 EQU  108288

 
 JSR  GetNextLibArg(a5) ;Get the next argument
 JSR  IntegerArg(a5) ;[d3:w] = integer error if arg
 ;can't be forced into an 
 ;integer.
 CMP.W  #128,d3
 BEQ  Do128 ;branch if 128K memory
 CMP.W  #512,d3
 BEQ  Do512 ;branch if 512K memory
Device_Unavailable:
 MOVEQ  #68,d2   ;Device Unavailable error
 JSR  BasicError(a5)
Do512:
 LEA  Screen512,A0
 BRA  Blank
Do128:
 LEA  Screen128,A0
Blank:
 MOVE.W #5472-1,d1 ;setup high screen address
 MOVE.L #$FFFFFFFF,d0;move to d0
Loop:
 MOVE.L d0,(A0)+ ;set screen address to d0
 DBRA d1,Loop
 RTS
GetIntegerVar:
 JSR  GetNextLibArg(a5) ;Get the next argument
 JSR  IntegerArg(a5) ;[d3:w] = integer error if arg
 ;can't be forced into an 
 ;integer
 RTS    
LISTING 3
; BASIC InvertScreen Library Source Code
; By Dave Kelly
; MacTutor 1985
;save InvertScreen.asm

;Synopsis:
;CALL InvertScreen ( memory%)
;Output:

GetNextLibArg  EQU $2A
IntegerArgEQU  $32
BasicErrorEQU  $42
Screen512 EQU  ((512-128)*1024)+108288
Screen128 EQU  108288

 
 BSR  GetIntegerVar;integer arg in [d3:w]
 CMP.W  #128,d3
 BEQ  Do128 ;branch if 128K memory
 CMP.W  #512,d3
 BEQ  Do512 ;branch if 512K memory
Device_Unavailable:
 MOVEQ  #68,d2   ;Device Unavailable error
 JSR  BasicError(a5)
Do512:
 LEA  Screen512,A0
 BRA  Invert
Do128:
 LEA  Screen128,A0
Invert:
 MOVE.W #5472-1,D1
 MOVE.L #$FFFFFFFF,D0
Loop:
 EOR.L  D0,(A0)+
 DBRA D1,Loop
 RTS
GetIntegerVar:
 JSR  GetNextLibArg(a5) ;Get the next argument
 JSR  IntegerArg(a5) ;[d3:w] = integer (error if arg
 ;can't be forced into an 
 ;integer
 RTS    
LISTING 4
;Screen Library Link
;MacTutor 1986

/OUTPUT ScreenLib
LIBinit.Rel
<
InvertScreen.Rel
<
BlankScreen.Rel
$

LISTING 5
ScreenLib.Rsrc
BLIB
TYPE CODE = GNRL
LIBinit,1
.R
ScreenLib CODE 1

TYPE CODE = GNRL
InvertScreen,2
.R
ScreenLib CODE 2

TYPE CODE = GNRL
BlankScreen,3
.R
ScreenLib CODE 3
LISTING 6
'Screen Demo
'By Dave Kelly
'©MacTutor 1986

LIBRARY "Screen Demo"
mem%=128:IF FRE(0)>75000! THEN mem%=512
GOSUB Setmenubar
MENU ON
ON MENU GOSUB menucheck
loop: GOTO loop
menucheck:
    menunumber=MENU(0):IF menunumber<>6 THEN RETURN
    menuitem=MENU(1):MENU
    ON menuitem GOSUB Blank,invert,Flash,Demo,Quit
    Setmenubar:
        MENU RESET  ' Re-do menu bar
        MENU 6,0,1,"Program Menu"
        MENU 6,1,1,"Blank Screen"
        MENU 6,2,1,"Invert Screen"
        MENU 6,3,1,"Flash Screen"
        MENU 6,4,1,"Demo"
        MENU 6,5,1,"Quit"
RETURN
Blank:
HIDECURSOR
CALL BlankScreen(mem%)
SHOWCURSOR
RETURN

invert:
HIDECURSOR
CALL invertScreen(mem%)
SHOWCURSOR
RETURN

Flash:
HIDECURSOR
FOR i=0 TO 100
CALL invertScreen(mem%)
NEXT
SHOWCURSOR
RETURN

Demo:
WINDOW CLOSE 1
GOSUB Blank
WINDOW 1,"",(42,90)-(475,300),3
PRINT "Click here"
WHILE MOUSE(0)<>1:WEND
GOSUB invert
WHILE MOUSE(0)<>1:WEND
GOSUB invert:CLS:GOSUB invert
WINDOW 2,"",(102,140)-(410,240),3
PRINT "Click here"
WHILE MOUSE(0)<>1:WEND
GOSUB invert
WHILE MOUSE(0)<>1:WEND
GOSUB invert:CLS:GOSUB invert
WINDOW 3,"",(152,165)-(360,215),3
PRINT "Click here"
WHILE MOUSE(0)<>1:WEND
GOSUB invert
WHILE MOUSE(0)<>1:WEND
GOSUB invert:CLS:GOSUB invert
GOSUB invert
PRINT SPC(4);"Please make selection":PRINT SPC(5);"from menus above!"
RETURN

Quit:
FOR i=1 TO 4
    WINDOW CLOSE i
NEXT i
MENU RESET:LIBRARY CLOSE
CLS:END
 

Community Search:
MacTech Search:

Software Updates via MacUpdate

Chromium 45.0.2454.85 - Fast and stable...
Chromium is an open-source browser project that aims to build a safer, faster, and more stable way for all Internet users to experience the web. Version 45.0.2454.85: Note: Does not contain the "... Read more
OmniFocus 2.2.5 - GTD task manager with...
OmniFocus helps you manage your tasks the way that you want, freeing you to focus your attention on the things that matter to you most. Capturing tasks and ideas is always a keyboard shortcut away in... Read more
iFFmpeg 5.7.1 - Convert multimedia files...
iFFmpeg is a graphical front-end for FFmpeg, a command-line tool used to convert multimedia files between formats. The command line instructions can be very hard to master/understand, so iFFmpeg does... Read more
VOX 2.6 - Music player that supports man...
VOX is a beautiful music player that supports many filetypes. The beauty is in its simplicity, yet behind the minimal exterior lies a powerful music player with a ton of features and support for all... Read more
Box Sync 4.0.6567 - Online synchronizati...
Box Sync gives you a hard-drive in the Cloud for online storage. Note: You must first sign up to use Box. What if the files you need are on your laptop -- but you're on the road with your iPhone? No... Read more
Carbon Copy Cloner 4.1.4 - Easy-to-use b...
Carbon Copy Cloner backups are better than ordinary backups. Suppose the unthinkable happens while you're under deadline to finish a project: your Mac is unresponsive and all you hear is an ominous,... Read more
OmniGraffle Pro 6.3.1 - Create diagrams,...
OmniGraffle Pro helps you draw beautiful diagrams, family trees, flow charts, org charts, layouts, and (mathematically speaking) any other directed or non-directed graphs. We've had people use... Read more
Monosnap 3.1.2 - Versatile screenshot ut...
Monosnap lets you capture screenshots, share files, and record video and .gifs! Capture: Capture full screen, just part of the screen, or a selected window Make your crop area pixel perfect with... Read more
Alfred 2.7.2 - Quick launcher for apps a...
Alfred is an award-winning productivity application for OS X. Alfred saves you time when you search for files online or on your Mac. Be more productive with hotkeys, keywords, and file actions at... Read more
Microsoft Remote Desktop 8.0.19 - Connec...
With Microsoft Remote Desktop, you can connect to a remote PC and your work resources from almost anywhere. Experience the power of Windows with RemoteFX in a Remote Desktop client designed to help... Read more

We're Sorry to Report that Moonrise...
Moonrise is a very promising-looking, Pokemon-esque monster collecting and battling game that we were really looking forward to reviewing, but unfortunately it looks like that's never going to happen. [Read more] | Read more »
The Latest Update for The Sims FreePlay...
Commerce has gotten a little more active with the newest update for The Sims FreePlay, making Sunset Mall more of a hangout than ever before. [Read more] | Read more »
This Week at 148Apps: August 24-28, 2015
The Apps of August With 148Apps How do you know what apps are worth your time and money? Just look to the review team at 148Apps. We sort through the chaos and find the apps you're looking for. The ones we love become Editor’s Choice, standing out... | Read more »
NASCAR in Real Racing 3? Sure, Why Not?
I have to give Firemonkeys credit - it's very cool of them to add NASCAR to Real Racing 3 via an update rather than making a separate game for it. But that's a different discussion for another time; for now let's sit back and enjoy driving in... | Read more »
The nuyu is an Inexpensive Activity Moni...
Today, Health o Meter nuyu has announced a series of health and fitness-related products, including the aforementioned activity monitor along with a wireless scale. All at a decent pricepoint, no less. [Read more] | Read more »
The Makers of Overkill are Trying Someth...
Craneballs, the studio responsible for the Overkill series, is taking a little break from all that violence (a little break) to bring us Cube Worm - a 3D take on one of the most classic PC/calculator games in existence. [Read more] | Read more »
The Sandbox Welcomes Cutethulu in its La...
Another month, another update to Pixowl's The Sandbox. This time players can say hello to "Cutethulu" - an adorable little rendition of perhaps the most well known (and infamous) of the Elder Gods. [Read more] | Read more »
ReBoard: Revolutionary Keyboard (Utilit...
ReBoard: Revolutionary Keyboard 1.0 Device: iOS Universal Category: Utilities Price: $1.99, Version: 1.0 (iTunes) Description: Do everything within the keyboard without switching apps! If you are in WhatsApp, how do you schedule a... | Read more »
Tiny Empire (Games)
Tiny Empire 1.1.3 Device: iOS Universal Category: Games Price: $2.99, Version: 1.1.3 (iTunes) Description: Launch cannonballs and blow tiny orcs into thousands of pieces in this intuitive fantasy-themed puzzle shooter! Embark on an... | Read more »
Astropad Mini (Productivity)
Astropad Mini 1.0 Device: iOS iPhone Category: Productivity Price: $4.99, Version: 1.0 (iTunes) Description: *** 50% off introductory price! ​*** Get the high-end experience of a Wacom tablet at a fraction of the price with Astropad... | Read more »

Price Scanner via MacPrices.net

eFileCabinet Announces SMB Document Managemen...
Electronic document management (EDM) eFileCabinet, Inc., a hosted solutions provider for small to medium businesses, has announced that its SecureDrawer and eFileCabinet Online services will be... Read more
WaterField Designs Unveils American-Made, All...
San Francisco’s WaterField Designs today unveiled their all-leather Cozmo 2.0 — an elegant attach laptop bag with carefully-designed features to suit any business environment. The Cozmo 2.0 is... Read more
Apple’s 2015 Back to School promotion: Free B...
Purchase a new Mac or iPad at The Apple Store for Education and take up to $300 off MSRP. All teachers, students, and staff of any educational institution qualify for the discount. Shipping is free,... Read more
128GB MacBook Airs on sale for $100 off MSRP,...
B&H Photo has 11″ & 13″ MacBook Airs with 128GB SSDs on sale for $100 off MSRP. Shipping is free, and B&H charges NY sales tax only: - 11″ 1.6GHz/128GB MacBook Air: $799.99, $100 off MSRP... Read more
13-inch 2.5GHz MacBook Pro (refurbished) avai...
The Apple Store has Apple Certified Refurbished 13″ 2.5GHz MacBook Pros available for $829, or $270 off the cost of new models. Apple’s one-year warranty is standard, and shipping is free: - 13″ 2.... Read more
27-inch 3.2GHz iMac on sale for $1679, save $...
B&H Photo has the 27″ 3.2GHz iMac on sale for $1679.99 including free shipping plus NY sales tax only. Their price is $120 off MSRP. Read more
Apple and Cisco Partner to Deliver Fast-Lane...
Apple and Cisco have announced a partnership to create a “fast lane” for iOS business users by optimizing Cisco networks for iOS devices and apps. The alliance integrates iPhone with Cisco enterprise... Read more
Apple offering refurbished 2015 13-inch Retin...
The Apple Store is offering Apple Certified Refurbished 2015 13″ Retina MacBook Pros for up to $270 (15%) off the cost of new models. An Apple one-year warranty is included with each model, and... Read more
Apple refurbished 2015 MacBook Airs available...
The Apple Store has Apple Certified Refurbished 2015 11″ and 13″ MacBook Airs (the latest models), available for up to $180 off the cost of new models. An Apple one-year warranty is included with... Read more
21-inch iMacs on sale for up to $120 off MSRP
B&H Photo has 21″ iMacs on sale for up to $120 off MSRP including free shipping plus NY sales tax only: - 21″ 1.4GHz iMac: $999.99 $100 off - 21″ 2.7GHz iMac: $1199.99 $100 off - 21″ 2.9GHz iMac... Read more

Jobs Board

Simply Mac *Apple* Specialist- Repair Techn...
Simply Mac is the greatest premier retailer of Apple products expertise in North America. We're looking for dedicated individuals to provide personalized service and Read more
Simply Mac *Apple* Specialist- Service Repa...
Simply Mac is the greatest premier retailer of Apple products expertise in North America. We're looking for dedicated individuals to provide personalized service and Read more
*Apple* Desktop Analyst - KDS Staffing (Unit...
…field and consistent professional recruiting achievement. Job Description: Title: Apple Desktop AnalystPosition Type: Full-time PermanentLocation: White Plains, NYHot Read more
Simply Mac- *Apple* Specialist- Store Manag...
Simply Mac is the largest premier retailer for Apple products and solutions. We're looking for dedicated individuals with a passion to simplify and enhance the Read more
*Apple* Evangelist - JAMF Software (United S...
The Apple Evangelist is responsible for building and cultivating strategic relationships with Apple 's small and mid-market business development field teams. This Read more
All contents are Copyright 1984-2011 by Xplain Corporation. All rights reserved. Theme designed by Icreon.