Now all you need to do is implement a dispatcher routine. When the dispatcher is in operation, Intuition passes method IDs to it. The dispatcher will either execute code corresponding to the a method ID (the code is usually part of the dispatcher) or delegate processing the method to the superclass (or it can do a little of both). The following fragment provides an example of what a dispatcher for a boopsi class looks like (Note that __saveds (Save DS) is used to insure that register A4 is set up properly for indirect addressing with the SASC compiler): ULONG __saveds dispatchmyTextLabel (Class *cl, Object *o, Msg msg) { struct localObjData *lod; Object *newobj; ULONG retval; switch (msg->MethodID) { /* Create a new object */ case OM_NEW: /* Have our superclass create it. DSM() passes on the * message to the superclass, where msg is the structure * containing the message specific parameters. */ if (newobj = (Object *) DSM (cl, o, msg)) { /* Set the attributes */ setmyTextLabelAttrs(cl, newobj, (struct opSet *) msg); } retval = (ULONG) newobj; break; /* Obtain information on an attribute */ case OM_GET: retval = getmyTextLabelAttrs (cl, o, (struct opGet *) msg); break; /* Set attributes */ case OM_UPDATE: case OM_SET: /* Let the superclass set the attributes that it * knows about. */ retval = DSM (cl, o, msg); /* Set the attributes that we care about */ retval |= setmyTextLabelAttrs (cl, o, (struct opSet *) msg); break; /* Draw the various states that the image supports */ case IM_DRAW: case IM_DRAWFRAME: retval = drawmyTextLabel (cl, o, (struct impDraw *) msg); break; /* Let the superclass handle everything else */ default: retval = (ULONG) DSM (cl, o, msg); break; } return (retval); }