TweetFollow Us on Twitter

Call Register Routines
Volume Number:1
Issue Number:5
Column Tag:Undocumented procedure

Call register-based Toolbox/OS routines

By Steve Brecher

Macintosh Pascal provides a built-in procedure named Generic that is not documented. Generic permits you to call register-based Toolbox/OS routines. It can also be used to execute any machine language code that you have stored in a Pascal data structure. This article describes the use of the Generic procedure.

In effect, the following procedure is pre-declared:

procedure Generic(InstructionWord :integer;
                  VAR Registers : RegRcd);

“RegRcd” denotes a data structure consisting of 13 32-bit values -- five address register values (A0..A4), followed by eight data register values (D0..D7). The exact type of Registers is immaterial, i.e., you could declare:

var
 Registers : record
   A : array[0..4] of longint;
   D : array[0..7] of longint
  end;

Or in some cases you might prefer something like:

var
 Registers : record
   A0, A1, A2, A3, A4 : ^char;
   D0, D1, D2, D3, D4, D5, D6, D7 : longint
  end;

The register values that you pass to Generic are written to the MC68000 registers. Then the one-word instruction denoted by the InstructionWord argument is executed. Finally, your Registers structure is updated with the (possibly) new values of the MC68000 registers before Generic returns to your program.

Any registers that are not used by the machine language routine you’re invoking do not have to have their corresponding elements in the Registers data structure initialized. The machine language routine will have garbage in those registers (but, since it’s not using them, it won’t care).

Usually, Generic will be used to execute a register-based Toolbox/OS trap. In such cases the value you pass to Generic via the InstructionWord argument is the trap value. Here’s an example routine that resets the modem output port to establish new communications parameters:

type
  DataBitsT = (Five, Seven, Six, Eight);  
                               { ^--sic--^ }
  ParityT = (OddParity, NoParity, EvenParity);
  StopBitsT = (One, OnePointFive, Two);

 function ResetSer (Baud : longint;
         DataBits : DataBitsT;
         Parity : ParityT;
         StopBits : StopBitsT) : boolean;
{returns true if no error, false if modem}
{port hasn’t been opened yet}
{}
 const
   PBControl = $A004; {trap value}
   noErr = 0;
   ModemOutRefNum = -7;
   SerReset = 8;      {CScode}
{}
  var
   ParamBlockRec : record
     Filler : array[0..11] of integer;
     ioRefNum : integer;
     csCode : integer;
     csParam : integer
    end;
   Registers : record
     A : array[0..4] of longint;
     D : array[0..7] of longint
    end;
   serConfig : longint;
 begin {ResetSer}
  with ParamBlockRec do
   begin
    ioRefNum := ModemOutRefNum;
    csCode := SerReset;
    serConfig := trunc(114571.7 / baud -
                                              1.338395)
                 + 1024 * ord(DataBits)
                 + 4096 * (ord(Parity) + 1)
                 + 16384 * (ord(StopBits) + 1);
    csParam := loword(serConfig);
   end;
  Registers.A[0] := ord(@ParamBlockRec);
  Generic(PBControl, Registers);
  ResetSer := (Registers.D[0] = noErr)
 end; {ResetSer}

The InstructionWord argument to Generic does not have to be a trap value, however. It can be any 16-bit MC68000 instruction, as shown in the following example:

 procedure CallCode(VAR Result :integer);
{}
{This example assumes a global integer }
{array named Code which contains a       }
{machine language subroutine that takes}
{one VAR (address) argument on the       }
{stack.  CallCode calls the routine,        }
{passing it the address of the Result     }
{parameter. }
{}
 const
  JsrIndirectA0 = $4E90; { Jsr (A0) }
 var
  Registers : record
    A : array[0..4] of ^integer;
    D : array[0..7] of longint
   end;
  Glue : array[1..4] of integer;
 begin
{ MoveA.L (SP),A0 ;return addr }
  Glue[1] := $2057;
{ Move.L A2,(SP) ;ptr to Result }
  Glue[2] := $2E8A;
{ Move.L A0,-(SP) ;return addr }
  Glue[3] := $2F08;
{ Jmp (A1)        ;to subr in Code array }
  Glue[4] := $4ED1;
  with Registers do
   begin
    A[0] := @Glue[1];
    A[1] := @Code[1];
    A[2] := @Result;
   end;
  {Call Glue routine, which invokes Code}
  {routine...}
  Generic(JsrIndirectA0, Registers);
 end; {CallCode}

Scroll Rectangle Notes

(NOTE: did not appear with above article in MacTutor)

ScrollRect is a QuickDraw routine which scrolls a rectangle. Bits (pixels) scrolled out of the rectangle are lost, and the area near the side of the rectangle opposite to the scroll direction is filled with the current Grafport’s background pattern. [The rectangle defining the area to be scrolled must be larger than the screen object you wish to be moved by this procedure to allow room to be lost at the top.]

A Performance Note

ScrollRect will slow down by a factor of 3 or 4 if the scrolled rectangle includes one or more borders of the current Grafport’s portrect. For fast scrolling, assure that each side of the rectangle passed to ScrollRect is at least two pixels away from a border of the portrect.

A Usage Note

The UpdateRgn parameter (a region handle) passed to ScrollRect enables it to return to you the specification of the region that was vacated by scrolled bits and which ScrollRect filled with the background pattern. (Usually the vacated area will be a sub-rectangle of the scrolled rectangle; but it may be other than rectangular if an odd-shapped visRgn or clipRgn affects the ScrollRect.) The previous contents of the region (i.e., the data structure) are destroyed. If you don’t need to know the specification of the area filled with the background pattern (or if you already know), just allocate a dummy region (using NewRgn) and pass ScrollRect a handle to the dummy region. You can allocate the dummy region once at the beginning of your program; or you can allocate it before each call to ScrollRect and then use DisposRgn after each call to free the memory used by the region data structure.

 

Community Search:
MacTech Search:

Software Updates via MacUpdate

beaTunes 4.6.12 - Organize your music co...
beaTunes is a full-featured music player and organizational tool for music collections. How well organized is your music Library? Are your artists always spelled the same way? Any R.E.M. vs REM?... Read more
Tinderbox 7.0.1 - Store and organize you...
Tinderbox is a personal content management assistant. It stores your notes, ideas, and plans. It can help you organize and understand them. And Tinderbox helps you share ideas through Web journals... Read more
FotoMagico 5.4 - Powerful slideshow crea...
FotoMagico lets you create professional slideshows from your photos and music with just a few, simple mouse clicks. It sports a very clean and intuitive yet powerful user interface. High image... Read more
Direct Mail 4.3.9 - Create and send grea...
Direct Mail is an easy-to-use, fully-featured email marketing app purpose-built for OS X. It lets you create and send great looking email campaigns. Start your newsletter by selecting from a gallery... Read more
Tinderbox 7.0.1 - Store and organize you...
Tinderbox is a personal content management assistant. It stores your notes, ideas, and plans. It can help you organize and understand them. And Tinderbox helps you share ideas through Web journals... Read more
Direct Mail 4.3.9 - Create and send grea...
Direct Mail is an easy-to-use, fully-featured email marketing app purpose-built for OS X. It lets you create and send great looking email campaigns. Start your newsletter by selecting from a gallery... Read more
FotoMagico 5.4 - Powerful slideshow crea...
FotoMagico lets you create professional slideshows from your photos and music with just a few, simple mouse clicks. It sports a very clean and intuitive yet powerful user interface. High image... Read more
beaTunes 4.6.12 - Organize your music co...
beaTunes is a full-featured music player and organizational tool for music collections. How well organized is your music Library? Are your artists always spelled the same way? Any R.E.M. vs REM?... Read more
Spotify 1.0.49.125. - Stream music, crea...
Spotify is a streaming music service that gives you on-demand access to millions of songs. Whether you like driving rock, silky R&B, or grandiose classical music, Spotify's massive catalogue puts... Read more
Eye Candy 7.2.0.50 - 30 professional Pho...
Eye Candy renders realistic effects that are difficult or impossible to achieve in Photoshop alone, such as Fire, Chrome, and the new Lightning. Effects like Animal Fur, Smoke, and Reptile Skin are... Read more

Rollercoaster Tycoon Touch Guide: How to...
| Read more »
Rabbids Crazy Rush Guide: How to unlock...
The Rabbids are back in a new endless running adventure, Rabbids Crazy Rush. It's more ridiculous cartoon craziness as you help the little furballs gather enough fuel (soda) to get to the moon. Sure, it's a silly idea, but everyone has dreams --... | Read more »
Tavern Guardians (Games)
Tavern Guardians 1.0 Device: iOS Universal Category: Games Price: $2.99, Version: 1.0 (iTunes) Description: Tavern Guardians is a Hack-and-Slash action game played in the style of a match-three. You can experience high pace action... | Read more »
Slay your way to glory in idle RPG Endle...
It’s a golden age for idle games on the mobile market, and those addictive little clickers have a new best friend. South Korean developer Ekkorr released Endless Frontier last year, and players have been idling away the hours in the company of its... | Read more »
Tiny Striker: World Football Guide - How...
| Read more »
Good news everyone! Futurama: Worlds of...
Futurama is finding a new home on mobile in TinyCo and Fox Interactive's new game, Futurama: Worlds of Tomorrow. They're really doing it up, bringing on board Futurama creator Matt Groening along with the original cast and writers. TinyCo wants... | Read more »
MUL.MASH.TAB.BA.GAL.GAL (Games)
MUL.MASH.TAB.BA.GAL.GAL 1.0 Device: iOS Universal Category: Games Price: $2.99, Version: 1.0 (iTunes) Description: ENDLESS UPGRADES. CONSTANT DANGER. ANCIENT WISDOM. BOUNCY BALLS. Launch Sale, 40% OFF for a very limited time!!! MUL.... | Read more »
Dungeon Rushers (Games)
Dungeon Rushers 1.0 Device: iOS Universal Category: Games Price: $4.99, Version: 1.0 (iTunes) Description: Dungeon Rushers is a 2D tactical RPG combining dungeon crawler’s gameplay and turn based fights. Manage your team, loot dusty... | Read more »
Blasty Bubs is a colorful Pinball and Br...
QuickByte Games has another arcade treat in the works -- this time it's a mishmash of brick breaking and Pinball mechanics. It's called Blasty Bubs, and it's a top down brickbreaker that has you slinging balls around a board. [Read more] | Read more »
Corsola and Heracross are the new region...
Generation 2 finally launched in Pokémon GO, unleashing a brand new batch of Pokémon into the wild. Even before the update went live people were speculating on how to catch elusive Pokémon like the legendary "dogs", Unknown, and whether or not... | Read more »

Price Scanner via MacPrices.net

15-inch Touch Bar MacBook Pros on sale for up...
B&H Photo has the new 2016 15″ Apple Touch Bar MacBook Pros in stock today and on sale for up to $150 off MSRP. Shipping is free, and B&H charges NY sales tax only: - 15″ 2.7GHz Touch Bar... Read more
12-inch Retina MacBooks on sale for $1150, $1...
B&H has 12″ 1.1GHz Retina MacBooks on sale for $150 off MSRP. Shipping is free, and B&H charges NY sales tax only: - 12″ 1.1GHz Space Gray Retina MacBook: $1149 $150 off MSRP - 12″ 1.1GHz... Read more
Apple restocks refurbished 11-inch MacBook Ai...
Apple has Certified Refurbished 11″ MacBook Airs (the latest models recently discontinued by Apple), available for up to $170 off original MSRP. An Apple one-year warranty is included with each... Read more
Apple Park Opens to Employees in April With T...
Apple has announced that Apple Park, the company’s new 175-acre campus, will be ready for employees to begin occupying in April. The process of moving more than 12,000 people will take over six... Read more
Manhattan Neighbors for Safer Telecommunicati...
A new education and advocacy group focused on cell phone and wireless risks, Manhattan Neighbors for Safer Telecommunications, launched today at http://www.ManhattanNeighbors.org. Manhattan... Read more
Portable Dual DisplayPort Monitor Dock Enable...
IOGEAR has announced the launch of its USB-C Dual DisplayPort Monitor Portable Dock (GUC3CMST). The dock enables users to easily connect two DisplayPort monitors to a USB-C or Thunderbolt 3 laptop to... Read more
13-inch 2.7GHz Retina MacBook Pro on sale for...
Amazon.com has restocked the 13″ 2.7GHz/128GB Retina MacBook Pro (MF839LL/A) for $200 off MSRP including free shipping: - 13″ 2.7GHz/128GB Retina MacBook Pro: $1099 $200 off MSRP This model tends to... Read more
Apple’s New iPad Ads Don’t Address Pro Users’...
Apple launched a new tranche of iPad Pro TV ads last week addressing actual queries and challenges from the Twitterverse, albeit using actors for the visuals. That’s great. As an iPad fan and heavy... Read more
Free Verbum Catholic Bible Study App For iOS
The Verbum mobile app runs on Logos’ powerful Bible software and is an advanced resource for mobile Catholic study. The Verbum app surrounds the Bible with the Tradition. Verbum comes with 15 free... Read more
27-inch Apple iMacs on sale for up to $200 of...
B&H Photo has 27″ Apple iMacs on sale for up to $200 off MSRP, each including free shipping plus NY sales tax only: - 27″ 3.3GHz iMac 5K: $2099.99 $200 off MSRP - 27″ 3.2GHz/1TB Fusion iMac 5K: $... Read more

Jobs Board

*Apple* Retail - Multiple Positions- Chicago...
SalesSpecialist - Retail Customer Service and SalesTransform Apple Store visitors into loyal Apple customers. When customers enter the store, you're also the Read more
Manager *Apple* Systems Administration - Pu...
Req ID 3315BR Position Title Manager, Apple Systems Administration Job Description The Manager of Apple Systems Administration oversees the administration and Read more
*Apple* Retail - Multiple Positions - Apple,...
Job Description: Sales Specialist - Retail Customer Service and Sales Transform Apple Store visitors into loyal Apple customers. When customers enter the store, Read more
Manager *Apple* Systems Administration - Pu...
Req ID 3315BR Position Title Manager, Apple Systems Administration Job Description The Manager of Apple Systems Administration oversees the administration and Read more
*Apple* Retail - Multiple Positions - Apple,...
Job Description: Sales Specialist - Retail Customer Service and Sales Transform Apple Store visitors into loyal Apple customers. When customers enter the store, Read more
All contents are Copyright 1984-2011 by Xplain Corporation. All rights reserved. Theme designed by Icreon.