The NewtApp framework consists of a special collection of protos that are designed to be used together in a layered hierarchy to build a complete application. For more information about the NewtApp protos, refer to Chapter 4, "NewtApp Applications."

Using System Software

1

Most of the routines and application components that comprise the Newton system software reside in ROM, provided in special chips contained in every Newton device. When your application calls a system routine, the operating system executes the appropriate code contained in ROM.

This is different from traditional programming environments where system software routines are accessed by linking a subroutine library with the application code. That approach results in much larger applications and makes it harder to provide new features and fix bugs in the system software.

The ROM-based model used in the Newton provides a simple way for the operating system to substitute the code that is executed in response to a particular system software routine, or to substitute an application component. Instead of executing the ROM-based code for some routine, the operating system might choose to load some substitute code into RAM; when your application calls the routine, the operating system intercepts the call and executes the RAM-based code.

RAM-based code that substitutes for ROM-based code is called a system update. Newton system updates are stored in the storage memory domain, which is persistent storage.

Besides application components, the Newton ROM contains many other objects such as fonts, sounds, pictures, and strings that might be useful to applications. Applications can access these objects by using special references called magicpointers. Magic pointers provide a mechanism for code written in a development system separate from the Newton to reference objects in the Newton ROM or in other packages. Magic pointer references are resolved at run time by the operating system, which substitutes the actual address of the ROM or package object for the magic pointer reference.

Magic pointers are constants defined in Newton Toolkit. For example, the names of all the application components, or protos, are actually magic pointer constants. You can find a list of all the ROM magic pointer constants in the Newton 2.0 Defs file, included with Newton Toolkit.