Author: Dan Strnad & Dave Lyons
Year: 1990
... clarifies MessageByName and provides examples of creating and retrieving a named message.
Apple II
Technical Notes
_____________________________________________________________________________
Developer Technical Support
Apple IIgs
#89: MessageByName--Catchy Messages
Written by: Dan Strnad & Dave Lyons September 1990
This note clarifies MessageByName and provides examples of creating and
retrieving a named message.
_____________________________________________________________________________
Did You Say You Want To Get A Message?
All you have to do is ask. Apple IIgs Toolbox Reference, Volume 3 already
tells you how. Here's what the fine print says: with the createItFlag set to
FALSE and the name of the message you are after in the nameString, you call
MessageByName. What's unclear in the manual is that if the message was found,
no error is returned, the createFlag is returned as FALSE, and messageID
contains the ID you can pass to MessageCenter to retrieve the contents of the
message. Here's an example of MessageByName in use.
The following code creates a named message.
CreateNamedMessage
pha
pha
pea 1 ;create it
pushlong #MsgBlock
_MessageByName ;function $1701
pla
sta myMsgID ;keep the ID if you want
pla ;check the createFlag if
; you want
...
MsgBlock dc.w MsgBlockEnd-MsgBlock
dc.b 28,'XYZ Software:My Cool Product' ;Pascal-style string
... more data goes here
MsgBlockEnd
The following code retrieves the message.
pha
pha
pea 0 ;don't create message
pushlong #MsgBlock
_MessageByName ;function $1701
ply ;keep id of existing
; message
pla ;createFlag (ignore)
bcs noMessage ;carry set if an error
; occurred
pea 2 ;MessageCenter action:GET
phy ;message ID for
; MessageCenter, below
pha
pha ;space for NewHandle
; result
lda #0 ;size of handle (0)
pha
pha
ldx MyID ;ID for empty
phx
pha ;handle attributes (0)
pha
pha ;no special location
_NewHandle
lda 3,s
sta mcHandle+2
lda 1,s
sta mcHandle ;keep a copy of the
; handle for later
_MessageCenter ;takes Action, Msg ID,
; and Handle
lda mcHandle+2
pha
lda mcHandle
pha
phd
tsc
tcd
ldy #2
lda [3],y
tax
lda [3]
sta 3
stx 5
* now read data from the message at [3]
ldy #$xxxx ;index past the name
; string
lda [3],y
...
pld
pla
pla
lda mcHandle+2
pha
lda mcHandle
pha
_DisposeHandle
noMessage ...
mcHandle dc.l 0
myMsgID dc.w 0
MessageByName is available in Tool Locator versions 3.0 and later (System
Software 5.0 and later).
Further Reference
_____________________________________________________________________________
o Apple IIgs Toolbox Reference, Volumes 2-3