next up previous
Next: How to generalize Up: No Title Previous: The options for

How to generalize the Tierra interface across platforms

It was agreed that the Tierra frontend should be separated from the Tierra process, and should actually be a separate process. Tierra and the frontend would communicate by whatever mechanism is appropriate to the platform (such as sockets). Matt pointed out that the Mac is not a true multi-tasking system, so it will not be possible to have the frontend as a separate process, but that he can work within the framework by replacing socket calls with function calls.

There was agreement to move to a graphic frontend on all platforms, rather than using a text mode frontend as is presently the case. There was much discussion about how this should be organized, because generally with this type of frontend, the main() function is in the frontend code, and main() includes an event loop from which the body of the program is called. The event loop needs to be able to check for events like keystrokes and take control in the case that events need to be handled. After much discussion is was agreed that we can work within the present structure of the Tierra code by an essentially cosmetic change in which the KEYHIT() function in the life() function is renamed to some more generalized thing like CheckEvents(). Then the FEMenu() function will be altered to be passed an argument describing the event, rather than having FEMenu() call FEGetch() to get the keystroke describing the event.

It was pointed out that the information describing the event would have to allow more than a keystroke. In some cases there would need to be a tag describing the type of event, and then some data characterizing the event.

Thomas S.Ray
Tue Aug 1 12:33:30 JST 1995