(FILECREATED "20-Nov-84 13:49:52" {AZTEC}<TRILLIUM>BIRTHDAY84>RERELEASE>COMPOSITE-ITEMTYPES.;3 92197  

      changes to:  (ITEMTYPES CASCADE.INDICATOR)

      previous date: "19-Nov-84 16:33:22" {AZTEC}<TRILLIUM>BIRTHDAY84>RERELEASE>COMPOSITE-ITEMTYPES.;2
)


(PRETTYCOMPRINT COMPOSITE-ITEMTYPESCOMS)

(RPAQQ COMPOSITE-ITEMTYPESCOMS [(ITEMTYPES BACKLIT.BUTTON BACKLIT.BUTTON.SPECIAL.FEATURE 
					   BLOCK.OF.TEXT BUTTON C+SQ CAPTION CASCADE CASCADE.BUTTON 
					   CASCADE.INDICATOR CASCADE.LIGHT CASCADE.UP.DOWN.BUTTONS 
					   CHANGE.FRAME.BUTTON COMPUTER EXTERNAL.BUTTON 
					   GENERAL.BUTTON HORIZONTAL.BUTTONS ICONIC.BUTTON 
					   ICONIC.INDICATOR INVERTING.CASCADE INVERTING.CASCADE.LIGHT 
					   INVERTING.CASCADE.TWO.BUTTONS 
					   INVERTING.ICONIC.CASCADE.TWO.BUTTONS LINE.OF.TEXT 
					   NUMBER.BUTTON NUMBER.BUTTON.ADD.CELL 
					   NUMBER.BUTTON.ADD.VALUE NUMBER.BUTTON.NEXT.DIGIT 
					   NUMBER.PAD OFFPAGE.BUTTON PRIVATE.DATA.STAMP SEGMENT.LINE 
					   SENSITIVE.REGION.CHANGE.FRAME SET.OF.ICONIC.BUTTONS 
					   SET.OF.LABELLED.BACKLIT.BUTTONS SET.OF.NUMBER.BUTTONS 
					   TOUCH.AREA UP.DOWN.BUTTONS VALUE.BAR VERTICAL.BUTTONS 
					   VERTICAL.BUTTONS.SPECIAL.FEATURE)
	(P (COMPILE.INTERNAL.FNS.IF.NECESSARY))
	(PROP FILETYPE COMPOSITE-ITEMTYPES)
	(DECLARE: DONTEVAL@LOAD DOEVAL@COMPILE DONTCOPY COMPILERVARS (ADDVARS (NLAMA)
									      (NLAML 
									     ACTON.CASCADE.BUTTON 
							     ACTON.BACKLIT.BUTTON.SPECIAL.FEATURE)
									      (LAMA])
(READ.ITEMTYPE BACKLIT.BUTTON 5)
(\TYPE ITEM.TYPE NAME BACKLIT.BUTTON COMMENT  "A general button" KIND COMPOSITE PARAMETERS  ((\TYPE 
PARAMETER NAME PLACEMENT TYPE  (POSITION) DEFAULT  (170 . 170) COMMENT  
"The grid position of the lower left corner of the button" GRID.TYPE  (LOCATION))  (\TYPE PARAMETER 
NAME PICTURE TYPE  (BITMAP.NAME) DEFAULT SIMPLE.BUTTON.BITMAP COMMENT  "The artwork for the button")  
(\TYPE PARAMETER NAME TEXT TYPE  (LIST  (STRING)) DEFAULT  (Button Label) COMMENT  
"The words associated with the button")  (\TYPE PARAMETER NAME TEXT.OFFSET TYPE  (OFFSET.VECTOR  (
PLACEMENT)) DEFAULT  (17 . 17) COMMENT  
"The offset of the words form the lower left corner of the button")  (\TYPE PARAMETER NAME 
HORIZONTAL.ALIGNMENT TYPE  (ONEOF  (LEFT CENTER RIGHT)) DEFAULT CENTER COMMENT  
"Horizontal alignment of text about reference point")  (\TYPE PARAMETER NAME FONT TYPE  (FONT) DEFAULT
 NIL COMMENT  "Font in which to print the label")  (\TYPE PARAMETER NAME VERTICAL.ALIGNMENT TYPE  (
ONEOF  (TOP CENTER BOTTOM)) DEFAULT CENTER COMMENT  
"Vertical alignment of text about the reference point")  (\TYPE PARAMETER NAME CELL TYPE  (CELL) 
DEFAULT CELL.1 COMMENT  "The cell to affect and display")  (\TYPE PARAMETER NAME VALUE TYPE  (CONSTANT
) DEFAULT VALUE.1 COMMENT  "The value to be set and reflected")) SUBITEM.SPECS  ((LABEL BUTTON  (ITEM 
PICTURE  (PLACEMENT  (PTRANSLATE PLACEMENT  (NEW.POSITION  (MINUS BUTTON.BITMAP.EXTRA) 0)))  (BITMAP 
PICTURE)))  (ITEM SENSITIVE.REGION  (PLACEMENT  (BOUNDING.BOX BUTTON))  (ACTION.FORM  (LIST  (QUOTE 
CHANGE.CELL) CELL  (KWOTE VALUE))))  (ITEM BLOCK.OF.TEXT  (PLACEMENT  (PTRANSLATE PLACEMENT 
TEXT.OFFSET))  (LIST.OF.LINES TEXT)  (XALIGNMENT HORIZONTAL.ALIGNMENT)  (YALIGNMENT VERTICAL.ALIGNMENT
)  (FONT FONT)  (OPERATION  (QUOTE INVERT)))  (ITEM LIGHT  (PLACEMENT  (BOUNDING.BOX BUTTON))  (CELL 
CELL)  (REFERENCE.VALUE VALUE))) OTHER  (FNS  ((1 CONVERT.BACKLIT.BUTTON.OFFSETS))) CLASSES  (BUTTON 
COMPOSITE) VERSION 1)
(DEFINEQ

(CONVERT.BACKLIT.BUTTON.OFFSETS
(LAMBDA (ITEM) (* edited: "16-Aug-84 10:07") (CONVERT.GRIDDED.OFFSETSQ ITEM HORIZONTAL.OFFSET 
VERTICAL.OFFSET TEXT.OFFSET)))
)
(READ.ITEMTYPE BACKLIT.BUTTON.SPECIAL.FEATURE 5)
(\TYPE ITEM.TYPE NAME BACKLIT.BUTTON.SPECIAL.FEATURE COMMENT  "A general button" KIND COMPOSITE 
PARAMETERS  ((\TYPE PARAMETER NAME PLACEMENT TYPE  (POSITION) DEFAULT  (170 . 170) COMMENT  
"The grid position of the lower left corner of the button" GRID.TYPE  (LOCATION))  (\TYPE PARAMETER 
NAME PICTURE TYPE  (BITMAP.NAME) DEFAULT SIMPLE.BUTTON.BITMAP COMMENT  "The artwork for the button")  
(\TYPE PARAMETER NAME TEXT TYPE  (LIST  (STRING)) DEFAULT  ("LABEL") COMMENT  
"The words associated with the button")  (\TYPE PARAMETER NAME TEXT.OFFSET TYPE  (OFFSET.VECTOR  (
PLACEMENT)) DEFAULT  (17 . 17) COMMENT  
"The offset of the words form the lower left corner of the button")  (\TYPE PARAMETER NAME 
HORIZONTAL.ALIGNMENT TYPE  (ONEOF  (LEFT CENTER RIGHT)) DEFAULT CENTER COMMENT  
"Horizontal alignment of text")  (\TYPE PARAMETER NAME VERTICAL.ALIGNMENT TYPE  (ONEOF  (TOP CENTER 
BOTTOM)) DEFAULT CENTER COMMENT  "Vertical alignment of text")  (\TYPE PARAMETER NAME FONT TYPE  (FONT
) DEFAULT NIL COMMENT  "The font of the label")  (\TYPE PARAMETER NAME CELL TYPE  (CELL) DEFAULT 
CELL.1 COMMENT  "The cell to affect and display")  (\TYPE PARAMETER NAME VALUE TYPE  (CONSTANT) 
DEFAULT VALUE.1 COMMENT  "The value to be set and reflected")  (\TYPE PARAMETER NAME INITIAL.VALUE 
TYPE  (CONSTANT) DEFAULT VALUE.1 COMMENT  "The value to go back to if your hit when on")) 
SUBITEM.SPECS  ((LABEL BUTTON  (ITEM PICTURE  (PLACEMENT  (PTRANSLATE PLACEMENT  (MINUS 
BUTTON.BITMAP.EXTRA) 0))  (BITMAP PICTURE)))  (ITEM SENSITIVE.REGION  (PLACEMENT  (BOUNDING.BOX BUTTON
))  (ACTION.FORM  (LIST  (QUOTE ACTON.BACKLIT.BUTTON.SPECIAL.FEATURE) CELL VALUE INITIAL.VALUE)))  (
ITEM BLOCK.OF.TEXT  (PLACEMENT  (PTRANSLATE PLACEMENT TEXT.OFFSET))  (LIST.OF.LINES TEXT)  (XALIGNMENT
 HORIZONTAL.ALIGNMENT)  (YALIGNMENT VERTICAL.ALIGNMENT)  (FONT FONT))  (ITEM LIGHT  (PLACEMENT  (
BOUNDING.BOX BUTTON))  (CELL CELL)  (REFERENCE.VALUE VALUE))) OTHER  (FNS  ((ACTON 
ACTON.BACKLIT.BUTTON.SPECIAL.FEATURE)  (1 CONVERT.BACKLIT.BUTTON.SPECIAL.FEATURE.OFFSETS))) CLASSES  (
BUTTON COMPOSITE) VERSION 1)
(DEFINEQ

(ACTON.BACKLIT.BUTTON.SPECIAL.FEATURE
(NLAMBDA (CELL VALUE INITIAL.VALUE) (* DAHJr "15-FEB-82 14:04") (CHANGE.CURRENT.VALUE CELL (COND ((
EQUAL (GET.CURRENT.VALUE CELL) VALUE) INITIAL.VALUE) (T VALUE)))))

(CONVERT.BACKLIT.BUTTON.SPECIAL.FEATURE.OFFSETS
(LAMBDA (ITEM) (* edited: "16-Aug-84 10:07") (CONVERT.GRIDDED.OFFSETSQ ITEM HORIZONTAL.OFFSET 
VERTICAL.OFFSET TEXT.OFFSET)))
)
(READ.ITEMTYPE BLOCK.OF.TEXT 5)
(\TYPE ITEM.TYPE NAME BLOCK.OF.TEXT COMMENT  "A bunch of related lines of text, with alignment" KIND 
COMPOSITE PARAMETERS  ((\TYPE PARAMETER NAME PLACEMENT TYPE  (POSITION) DEFAULT  (100 . 100) COMMENT  
"The reference point of the block")  (\TYPE PARAMETER NAME LIST.OF.LINES TYPE  (LIST  (STRING)) 
DEFAULT  ("Lines of text"  "in a BLOCK.OF.TEXT") COMMENT  "The text lines")  (\TYPE PARAMETER NAME 
XALIGNMENT TYPE  (ONEOF  (LEFT CENTER RIGHT)) DEFAULT LEFT COMMENT  "Horizontal alignment")  (\TYPE 
PARAMETER NAME YALIGNMENT TYPE  (ONEOF  (TOP CENTER BOTTOM)) DEFAULT TOP COMMENT  "Vertical alignment"
)  (\TYPE PARAMETER NAME FONT TYPE  (FONT) DEFAULT  (HELVETICA 10) COMMENT  
"The font in which to print the information")  (\TYPE PARAMETER NAME SOURCE TYPE  (ONEOF  (INPUT 
INVERT MERGE TEXTURE)) DEFAULT INPUT COMMENT  "Source for BITBLT")  (\TYPE PARAMETER NAME OPERATION 
TYPE  (ONEOF  (REPLACE PAINT INVERT ERASE)) DEFAULT REPLACE COMMENT  "Operation for BITBLT")  (\TYPE 
PARAMETER NAME TEXTURE TYPE  (SHADE) DEFAULT 65535 COMMENT  "Texture for BITBLT")  (\TYPE PARAMETER 
NAME FIGURE-COLOR TYPE  (COLOR.NAME) DEFAULT BLACK COMMENT  "The color corresponding to the figure")  
(\TYPE PARAMETER NAME GROUND-COLOR TYPE  (COLOR.NAME) DEFAULT WHITE COMMENT  
"The color corresponding to ground")) SUBITEM.SPECS  ((SELECT YALIGNMENT  (TOP  (FOREACH  (LINE IN 
LIST.OF.LINES)  (I FROM 0) DO  (ITEM LINE.OF.TEXT  (PLACEMENT  (PTRANSLATE PLACEMENT  (NEW.POSITION 0 
 (MINUS  (ITIMES I  (FONT.HEIGHT FONT))))))  (LINE LINE)  (XALIGNMENT XALIGNMENT)  (FONT FONT)  (
SOURCE SOURCE)  (OPERATION OPERATION)  (TEXTURE TEXTURE)  (FIGURE-COLOR FIGURE-COLOR)  (GROUND-COLOR 
GROUND-COLOR))))  (CENTER  (FOREACH  (LINE IN LIST.OF.LINES)  (I FROM 1) DO  (ITEM LINE.OF.TEXT  (
PLACEMENT  (PTRANSLATE PLACEMENT  (NEW.POSITION 0  (IDIFFERENCE  (IQUOTIENT  (ITIMES  (LENGTH 
LIST.OF.LINES)  (FONTPROP FONT  (QUOTE HEIGHT))) 2)  (ITIMES I  (FONTPROP FONT  (QUOTE HEIGHT)))))))  
(LINE LINE)  (XALIGNMENT XALIGNMENT)  (FONT FONT)  (SOURCE SOURCE)  (OPERATION OPERATION)  (TEXTURE 
TEXTURE))))  (BOTTOM  (FOREACH  (LINE IN LIST.OF.LINES)  (I FROM 1) DO  (ITEM LINE.OF.TEXT  (PLACEMENT
  (PTRANSLATE PLACEMENT  (NEW.POSITION 0  (ITIMES  (IDIFFERENCE  (LENGTH LIST.OF.LINES) I)  (FONTPROP 
FONT  (QUOTE HEIGHT))))))  (LINE LINE)  (XALIGNMENT XALIGNMENT)  (FONT FONT)  (SOURCE SOURCE)  (
OPERATION OPERATION)  (TEXTURE TEXTURE)))))) CLASSES  (COMPOSITE))
(READ.ITEMTYPE BUTTON 5)
(\TYPE ITEM.TYPE NAME BUTTON COMMENT  "A general button" KIND COMPOSITE PARAMETERS  ((\TYPE PARAMETER 
NAME PLACEMENT TYPE  (POSITION) DEFAULT  (170 . 170) COMMENT  
"The grid position of the lower left corner of the button" GRID.TYPE  (LOCATION))  (\TYPE PARAMETER 
NAME PICTURE TYPE  (BITMAP.NAME) DEFAULT SIMPLE.BUTTON.BITMAP COMMENT  "The artwork for the button")  
(\TYPE PARAMETER NAME TEXT TYPE  (LIST  (STRING)) DEFAULT  ("Label") COMMENT  
"The words associated with the button")  (\TYPE PARAMETER NAME TEXT.OFFSET TYPE  (OFFSET.VECTOR  (
PLACEMENT)) DEFAULT  (17 . 17) COMMENT  
"The offset of the words form the lower left corner of the button")  (\TYPE PARAMETER NAME ACTION TYPE
  (FORM) DEFAULT  (ACTION.PRINT  "This action is brought to you by a GENERAL.BUTTON") COMMENT  
"The action to be taken when the button is depressed")) SUBITEM.SPECS  ((ITEM GENERAL.BUTTON  (
PLACEMENT PLACEMENT)  (PICTURE PICTURE)  (TEXT TEXT)  (TEXT.OFFSET TEXT.OFFSET)  (ACTION ACTION))) 
CLASSES  (BUTTON COMPOSITE) VERSION 1 OTHER  (FNS  ((1 CONVERT.BUTTON.OFFSETS))))
(DEFINEQ

(CONVERT.BUTTON.OFFSETS
(LAMBDA (ITEM) (* edited: "16-Aug-84 10:07") (CONVERT.GRIDDED.OFFSETSQ ITEM HORIZONTAL.OFFSET 
VERTICAL.OFFSET TEXT.OFFSET)))
)
(READ.ITEMTYPE C+SQ 5)
(\TYPE ITEM.TYPE NAME C+SQ KIND COMPOSITE COMMENT  "<A description of the item.type C+SQ>" PARAMETERS 
 ((\TYPE PARAMETER NAME CIRCLE.PLACEMENT TYPE  (POSITION) DEFAULT  (204 . 156) COMMENT  
"The center of the circle")  (\TYPE PARAMETER NAME CIRCLE.RADIUS TYPE  (INTEGER) DEFAULT 50 COMMENT  
"The radius of the circle")  (\TYPE PARAMETER NAME CIRCLE.BRUSH.SHAPE TYPE  (ONEOF  (ROUND SQUARE 
HORIZONTAL VERTICAL)) DEFAULT ROUND COMMENT  "The brush shpae for drawing")  (\TYPE PARAMETER NAME 
CIRCLE.BRUSH.SIZE TYPE  (INTEGER) DEFAULT 10 COMMENT  "The brush size for drawing")  (\TYPE PARAMETER 
NAME BORDER.THICKNESS TYPE  (INTEGER) DEFAULT 10 COMMENT  "The number of points in the colored edge") 
 (\TYPE PARAMETER NAME BORDER.OPERATION TYPE  (ONEOF  (REPLACE PAINT INVERT ERASE)) DEFAULT PAINT 
COMMENT  "The operation for BITBLT")  (\TYPE PARAMETER NAME BORDER.COLOR TYPE  (SHADE) DEFAULT 33345 
COMMENT  "The color of the edge")) SUBITEM.SPECS  ((ITEM CIRCLE  (PLACEMENT CIRCLE.PLACEMENT)  (RADIUS
 CIRCLE.RADIUS)  (BRUSH.SHAPE CIRCLE.BRUSH.SHAPE)  (BRUSH.SIZE CIRCLE.BRUSH.SIZE))  (ITEM BORDER  (
PLACEMENT  (create REGION LEFT ←  (IDIFFERENCE  (fetch  (POSITION XCOORD) of CIRCLE.PLACEMENT)  (IPLUS
 CIRCLE.BRUSH.SIZE CIRCLE.RADIUS BORDER.THICKNESS)) BOTTOM ←  (IDIFFERENCE  (fetch  (POSITION YCOORD) 
of CIRCLE.PLACEMENT)  (IPLUS CIRCLE.BRUSH.SIZE CIRCLE.RADIUS BORDER.THICKNESS)) WIDTH ←  (ITIMES  (
IPLUS CIRCLE.BRUSH.SIZE CIRCLE.RADIUS BORDER.THICKNESS) 2) HEIGHT ←  (ITIMES  (IPLUS CIRCLE.BRUSH.SIZE
 CIRCLE.RADIUS BORDER.THICKNESS) 2)))  (THICKNESS BORDER.THICKNESS)  (OPERATION BORDER.OPERATION)  (
COLOR BORDER.COLOR))) CLASSES  (COMPOSITE))
(READ.ITEMTYPE CAPTION 5)
(\TYPE ITEM.TYPE NAME CAPTION COMMENT  
"A block of text, positioned (on the grid) at its top left corner" KIND COMPOSITE PARAMETERS  ((\TYPE 
PARAMETER NAME PLACEMENT TYPE  (POSITION) DEFAULT  (170 . 170) COMMENT  
"Top left corner of block of text" GRID.TYPE  (LOCATION))  (\TYPE PARAMETER NAME LIST.OF.LINES TYPE  (
LIST  (STRING)) DEFAULT  ("List of lines"  "in a CAPTION") COMMENT  "The text of the block")  (\TYPE 
PARAMETER NAME FONT TYPE  (FONT) DEFAULT  (HELVETICA 12) COMMENT  
"The font in which the caption is printed")  (\TYPE PARAMETER NAME SOURCE TYPE  (ONEOF  (INPUT INVERT 
MERGE TEXTURE)) DEFAULT INPUT COMMENT  "Source for BITBLT")  (\TYPE PARAMETER NAME OPERATION TYPE  (
ONEOF  (REPLACE PAINT INVERT ERASE)) DEFAULT REPLACE COMMENT  "Operation for BITBLT")  (\TYPE 
PARAMETER NAME TEXTURE TYPE  (SHADE) DEFAULT 65535 COMMENT  "Texture for BITBLT")) SUBITEM.SPECS  ((
ITEM BLOCK.OF.TEXT  (PLACEMENT PLACEMENT)  (LIST.OF.LINES LIST.OF.LINES)  (XALIGNMENT  (QUOTE LEFT))  
(YALIGNMENT  (QUOTE TOP))  (FONT FONT)  (SOURCE SOURCE)  (OPERATION OPERATION)  (TEXTURE TEXTURE))) 
CLASSES  (COMPOSITE))
(READ.ITEMTYPE CASCADE 5)
(\TYPE ITEM.TYPE NAME CASCADE COMMENT  
"A set of backlit buttons which all affect the same cell, thus interacting" KIND COMPOSITE PARAMETERS 
 ((\TYPE PARAMETER NAME PLACEMENT TYPE  (POSITION) DEFAULT  (340 . 255) COMMENT  
"Offset for the whole bunch" GRID.TYPE  (LOCATION))  (\TYPE PARAMETER NAME BUTTONS TYPE  (LIST  (
STRUCTURE  ((TEXT  (LIST  (STRING)))  (VALUE  (CONSTANT))))) DEFAULT  ((("LABEL 1") VALUE.1)  ((
"LABEL 2") VALUE2)) COMMENT  "The buttons themselves")  (\TYPE PARAMETER NAME BUTTON.PICTURE TYPE  (
BITMAP.NAME) DEFAULT SIMPLE.BUTTON.BITMAP COMMENT  "The graphic for the button")  (\TYPE PARAMETER 
NAME INDICATOR.PICTURE TYPE  (BITMAP.NAME) DEFAULT SMALL.SPOT.BITMAP COMMENT  
"The graphic for the indicators")  (\TYPE PARAMETER NAME BUTTON/INDICATOR.SPACING TYPE  (OFFSET.VECTOR
) DEFAULT  (0 . 51) COMMENT  "Spacing between button and bottom indicator")  (\TYPE PARAMETER NAME 
INDICATOR.SPACING TYPE  (OFFSET.VECTOR) DEFAULT  (0 . 34) COMMENT  "Spacing between the indicators")  
(\TYPE PARAMETER NAME TEXT.DISPLACEMENT TYPE  (OFFSET.VECTOR) DEFAULT  (-34 . 17) COMMENT  
"Offset for the text from the indicators")  (\TYPE PARAMETER NAME FONT TYPE  (FONT) DEFAULT  (
HELVETICA 10) COMMENT  "The font for the text")  (\TYPE PARAMETER NAME HORIZONTAL.ALIGNMENT TYPE  (
ONEOF  (LEFT CENTER RIGHT)) DEFAULT LEFT COMMENT  "Horizontal alignment of the text")  (\TYPE 
PARAMETER NAME VERTICAL.ALIGNMENT TYPE  (ONEOF  (TOP CENTER BOTTOM)) DEFAULT TOP COMMENT  
"Vertical alignment of the text")  (\TYPE PARAMETER NAME CONTINUOUS? TYPE  (ONEOF  (YES NO)) DEFAULT 
NO COMMENT  "Whether or not to keep going if the button is held down")  (\TYPE PARAMETER NAME RATE 
TYPE  (INTEGER) DEFAULT 300 COMMENT  "Rate it changes (in milliseconds) if continuous")  (\TYPE 
PARAMETER NAME CELL TYPE  (CELL) DEFAULT CELL.1 COMMENT  "The affected cell")  (\TYPE PARAMETER NAME 
INITIAL.VALUE TYPE  (CONSTANT) DEFAULT VALUE.1 COMMENT  "An initial value for the cell")  (\TYPE 
PARAMETER NAME SHOW.INITIAL.VALUE? TYPE  (ONEOF  (YES NO)) DEFAULT YES COMMENT  
"Whether or not the default is visible - ala 1075")) SUBITEM.SPECS  ((ITEM CASCADE.BUTTON  (PLACEMENT 
PLACEMENT)  (BUTTONS BUTTONS)  (CELL CELL)  (PICTURE BUTTON.PICTURE)  (CONTINUOUS? CONTINUOUS?)  (RATE
 RATE)  (AT.LIMIT  (QUOTE WRAP.AROUND))  (DIRECTION  (QUOTE UP)))  (FOREACH  (BUTTON IN  (COND  ((EQ 
SHOW.INITIAL.VALUE?  (QUOTE YES)) BUTTONS)  (T  (for B in BUTTONS collect B when  (NOT  (EQUAL  (CADR 
B) INITIAL.VALUE))))))  (I FROM 0)  (J FROM 0) DO  (ITEM CASCADE.INDICATOR  (PLACEMENT  (PTRANSLATE 
PLACEMENT  (IPLUS  (ITIMES J  (CAR INDICATOR.SPACING))  (CAR BUTTON/INDICATOR.SPACING))  (IPLUS  (
ITIMES I  (CDR INDICATOR.SPACING))  (CDR BUTTON/INDICATOR.SPACING))))  (BITMAP INDICATOR.PICTURE)  (
TEXT  (CAR BUTTON))  (FONT FONT)  (TEXT.OFFSET TEXT.DISPLACEMENT)  (HORIZONTAL.ALIGNMENT 
HORIZONTAL.ALIGNMENT)  (VERTICAL.ALIGNMENT VERTICAL.ALIGNMENT)  (CELL CELL)  (VALUE  (CADR BUTTON)))) 
 (ITEM INITIALIZATION  (PLACEMENT PLACEMENT)  (ACTION.FORM  (LIST  (QUOTE SET.CELL) CELL INITIAL.VALUE
)))) OTHER  (FNS  ((1 CONVERT.CASCADE.OFFSETS)) BITMAPS  ((SMALL.SPOT.BITMAP  {(READBITMAP)(21 22
"@AOL@@@@"
"@GOO@@@@"
"@OOOH@@@"
"AOOOL@@@"
"COOON@@@"
"GOOOO@@@"
"GOOOO@@@"
"OOOOOH@@"
"OOOOOH@@"
"OOOOOH@@"
"OOOOOH@@"
"OOOOOH@@"
"OOOOOH@@"
"OOOOOH@@"
"OOOOOH@@"
"GOOOO@@@"
"GOOOO@@@"
"COOON@@@"
"AOOOL@@@"
"@OOOH@@@"
"@GOO@@@@"
"@AOL@@@@")}))) CLASSES  (COMPOSITE BUTTON) VERSION 1)
(DEFINEQ

(CONVERT.CASCADE.OFFSETS
(LAMBDA (ITEM) (* edited: "16-Aug-84 10:27") (PROG NIL (CONVERT.GRIDDED.OFFSETSQ ITEM 
BUTTON/INDICATOR.HORIZONTAL.SPACING BUTTON/INDICATOR.SPACING BUTTON/INDICATOR.SPACING) (
CONVERT.GRIDDED.OFFSETSQ ITEM HORIZONTAL.SPACING VERTICAL.SPACING INDICATOR.SPACING) (
CONVERT.GRIDDED.OFFSETSQ ITEM TEXT.DISPLACEMENT TEXT.DISPLACEMENT.↑ TEXT.DISPLACEMENT))))
)
(READ.ITEMTYPE CASCADE.BUTTON 5)
(\TYPE ITEM.TYPE NAME CASCADE.BUTTON COMMENT  
"A small button, with a label on it, which flashes when pushed, and does internal action" KIND 
COMPOSITE PARAMETERS  ((\TYPE PARAMETER NAME PLACEMENT TYPE  (POSITION) DEFAULT  (170 . 170) COMMENT  
"The grid position of the lower left corner of the button" GRID.TYPE  (LOCATION))  (\TYPE PARAMETER 
NAME BUTTONS TYPE  (LIST  (STRUCTURE  ((TEXT  (LIST  (STRING)))  (VALUE  (CONSTANT))))) DEFAULT  (((
"LABEL 1") VALUE.1)  (("LABEL 2") VALUE2)) COMMENT  "The buttons themselves")  (\TYPE PARAMETER NAME 
PICTURE TYPE  (BITMAP.NAME) DEFAULT SIMPLE.BUTTON.BITMAP COMMENT  "The graphic for the button")  (
\TYPE PARAMETER NAME CELL TYPE  (CELL) DEFAULT CELL.1 COMMENT  "The cell changed by the button")  (
\TYPE PARAMETER NAME CONTINUOUS? TYPE  (ONEOF  (YES NO)) DEFAULT NO COMMENT  
"Whether or not to keep going if the button is held down")  (\TYPE PARAMETER NAME RATE TYPE  (INTEGER)
 DEFAULT 300 COMMENT  "Rate it changes (in milliseconds) if continuous")  (\TYPE PARAMETER NAME 
AT.LIMIT TYPE  (ONEOF  (WRAP.AROUND STICK.AT.LIMIT)) DEFAULT WRAP.AROUND COMMENT  
"What to do when it reaches the limit")  (\TYPE PARAMETER NAME DIRECTION TYPE  (ONEOF  (UP DOWN)) 
DEFAULT UP COMMENT  "The direction in which to walk through the BUTTONS list")) SUBITEM.SPECS  ((LABEL
 BUTTON  (ITEM PICTURE  (PLACEMENT  (PTRANSLATE PLACEMENT  (MINUS BUTTON.BITMAP.EXTRA) 0))  (BITMAP 
PICTURE)))  (ITEM FLASHING.SENSITIVE.REGION  (PLACEMENT  (BOUNDING.BOX BUTTON))  (ACTION.FORM  (LIST  
(QUOTE ACTON.CASCADE.BUTTON) BUTTONS CELL  (AND  (EQ CONTINUOUS?  (QUOTE YES)) RATE)  (EQ DIRECTION  (
QUOTE DOWN))  (EQ AT.LIMIT  (QUOTE WRAP.AROUND)))))) OTHER  (FNS  ((ACTON ACTON.CASCADE.BUTTON)  (NIL 
INCREMENT.CASCADE.BUTTON))) CLASSES  (BUTTON COMPOSITE))
(DEFINEQ

(ACTON.CASCADE.BUTTON
(NLAMBDA (BUTTONS CELL RATE DOWN WRAP.AROUND) (* edited: "15-Aug-84 15:04") (INCREMENT.CASCADE.BUTTON 
BUTTONS CELL DOWN WRAP.AROUND) (COND (RATE (do (TRILLIUM.DISMISS RATE) (COND ((MOUSESTATE UP) (RETURN)
)) (INCREMENT.CASCADE.BUTTON BUTTONS CELL DOWN WRAP.AROUND))))))

(INCREMENT.CASCADE.BUTTON
(LAMBDA (BUTTONS CELL DOWN WRAP.AROUND) (* edited: "15-Aug-84 15:08") (PROG (CURRENT.VALUE N NEW.VALUE
) (SETQ N (LENGTH BUTTONS)) (SETQ CURRENT.VALUE (GET.CURRENT.VALUE CELL)) (COND (DOWN (for I from 1 to
 (SUB1 N) as ELEM on BUTTONS when (EQ (CADADR ELEM) CURRENT.VALUE) do (SETQ NEW.VALUE (CADAR ELEM)) (
RETURN) finally (SETQ NEW.VALUE (COND (WRAP.AROUND (CADAR (NTH BUTTONS N))) (T CURRENT.VALUE))))) (T (
for I from 1 to (SUB1 N) as ELEM on BUTTONS when (EQ (CADAR ELEM) CURRENT.VALUE) do (SETQ NEW.VALUE (
CADADR ELEM)) (RETURN) finally (SETQ NEW.VALUE (COND (WRAP.AROUND (CADAR BUTTONS)) (T CURRENT.VALUE)))
))) (CHANGE.CURRENT.VALUE CELL NEW.VALUE))))
)
(READ.ITEMTYPE CASCADE.INDICATOR 5)
(\TYPE ITEM.TYPE NAME CASCADE.INDICATOR COMMENT  "An indicator with associated text" KIND COMPOSITE 
PARAMETERS  ((\TYPE PARAMETER NAME PLACEMENT TYPE  (POSITION) DEFAULT  (170 . 170) COMMENT  
"The grid position of the lower left corner of the light" GRID.TYPE  (LOCATION))  (\TYPE PARAMETER 
NAME BITMAP TYPE  (BITMAP.NAME) DEFAULT SMALL.SPOT.BITMAP COMMENT  "The graphics for the indicator")  
(\TYPE PARAMETER NAME TEXT TYPE  (LIST  (STRING)) DEFAULT  ("Label for Light") COMMENT  
"The text associated with the light")  (\TYPE PARAMETER NAME FONT TYPE  (FONT) DEFAULT  (HELVETICA 10)
 COMMENT  "Font for the label")  (\TYPE PARAMETER NAME TEXT.OFFSET TYPE  (OFFSET.VECTOR  (PLACEMENT)) 
DEFAULT  (51 . 17) COMMENT  "The offset of the words form the lower left corner of the button")  (
\TYPE PARAMETER NAME HORIZONTAL.ALIGNMENT TYPE  (ONEOF  (LEFT CENTER RIGHT)) DEFAULT LEFT COMMENT  
"Horizontal alignment of text about reference point")  (\TYPE PARAMETER NAME VERTICAL.ALIGNMENT TYPE  
(ONEOF  (TOP CENTER BOTTOM)) DEFAULT CENTER COMMENT  
"Vertical alignment of text about the reference point")  (\TYPE PARAMETER NAME CELL TYPE  (CELL) 
DEFAULT CELL.1 COMMENT  "The cell to affect and display")  (\TYPE PARAMETER NAME VALUE TYPE  (CONSTANT
) DEFAULT VALUE.1 COMMENT  "The value to be set and reflected")) SUBITEM.SPECS  ((ITEM INDICATOR  (
PLACEMENT PLACEMENT)  (BITMAP BITMAP)  (CELL CELL)  (REFERENCE.VALUE VALUE))  (ITEM BLOCK.OF.TEXT  (
PLACEMENT  (PTRANSLATE PLACEMENT TEXT.OFFSET))  (LIST.OF.LINES TEXT)  (FONT FONT)  (XALIGNMENT 
HORIZONTAL.ALIGNMENT)  (YALIGNMENT VERTICAL.ALIGNMENT))) CLASSES  (COMPOSITE) VERSION 1 OTHER  (FNS  (
(1 CONVERT.CASCADE.INDICATOR.OFFSETS))))
(DEFINEQ

(CONVERT.CASCADE.INDICATOR.OFFSETS
(LAMBDA (ITEM) (* edited: "16-Aug-84 10:07") (CONVERT.GRIDDED.OFFSETSQ ITEM HORIZONTAL.OFFSET 
VERTICAL.OFFSET TEXT.OFFSET)))
)
(READ.ITEMTYPE CASCADE.LIGHT 5)
(\TYPE ITEM.TYPE NAME CASCADE.LIGHT COMMENT  "A light with associated text" KIND COMPOSITE PARAMETERS 
 ((\TYPE PARAMETER NAME PLACEMENT TYPE  (POSITION) DEFAULT  (170 . 170) COMMENT  
"The grid position of the lower left corner of the light" GRID.TYPE  (LOCATION))  (\TYPE PARAMETER 
NAME TEXT TYPE  (LIST  (STRING)) DEFAULT  (Label for Light) COMMENT  
"The text associated with the light")  (\TYPE PARAMETER NAME TEXT.OFFSET TYPE  (OFFSET.VECTOR  (
PLACEMENT)) DEFAULT  (51 . 17) COMMENT  
"The offset of the words form the lower left corner of the button")  (\TYPE PARAMETER NAME 
HORIZONTAL.ALIGNMENT TYPE  (ONEOF  (LEFT CENTER RIGHT)) DEFAULT  (QUOTE LEFT) COMMENT  
"Horizontal alignment of text about reference point")  (\TYPE PARAMETER NAME VERTICAL.ALIGNMENT TYPE  
(ONEOF  (TOP CENTER BOTTOM)) DEFAULT  (QUOTE CENTER) COMMENT  
"Vertical alignment of text about the reference point")  (\TYPE PARAMETER NAME CELL TYPE  (CELL) 
DEFAULT CELL.1 COMMENT  "The cell to affect and display")  (\TYPE PARAMETER NAME VALUE TYPE  (CONSTANT
) DEFAULT VALUE.1 COMMENT  "The value to be set and reflected")) SUBITEM.SPECS  ((ITEM LIGHT  (
PLACEMENT  (NEW.REGION PLACEMENT 30 30))  (CELL CELL)  (REFERENCE.VALUE VALUE))  (ITEM BLOCK.OF.TEXT  
(PLACEMENT  (TRANSLATE PLACEMENT TEXT.OFFSET))  (LIST.OF.LINES TEXT)  (XALIGNMENT HORIZONTAL.ALIGNMENT
)  (YALIGNMENT VERTICAL.ALIGNMENT))) CLASSES  (COMPOSITE) VERSION 1 OTHER  (FNS  ((1 
CONVERT.CASCADE.LIGHT.OFFSETS))))
(DEFINEQ

(CONVERT.CASCADE.LIGHT.OFFSETS
(LAMBDA (ITEM) (* edited: "16-Aug-84 10:07") (CONVERT.GRIDDED.OFFSETSQ ITEM HORIZONTAL.OFFSET 
VERTICAL.OFFSET TEXT.OFFSET)))
)
(READ.ITEMTYPE CASCADE.UP.DOWN.BUTTONS 5)
(\TYPE ITEM.TYPE NAME CASCADE.UP.DOWN.BUTTONS COMMENT  
"Pair of Up/Down buttons for controlling *.CASCADE.TWO.BUTTONS itemtypes" KIND COMPOSITE PARAMETERS  (
(\TYPE PARAMETER NAME PLACEMENT TYPE  (POSITION) DEFAULT  (170 . 170) COMMENT  
"The location of this item" GRID.TYPE  (LOCATION))  (\TYPE PARAMETER NAME INDICATORS TYPE  (LIST  (
STRUCTURE  ((TEXT  (LIST  (STRING)))  (VALUE  (CONSTANT))))) DEFAULT  ((("LABEL 1") VALUE.1)  ((
"LABEL 2") VALUE.2)  (("LABEL 3") VALUE.3)) COMMENT  
"The lkist of indicator/value pairs that the buttons affect")  (\TYPE PARAMETER NAME CELL TYPE  (CELL)
 DEFAULT CELL.1 COMMENT  "The cell affected")  (\TYPE PARAMETER NAME BUTTON.SPACING TYPE  (
OFFSET.VECTOR) DEFAULT  (0 . 51) COMMENT  "Between buttons")  (\TYPE PARAMETER NAME UP.PICTURE TYPE  (
BITMAP.NAME) DEFAULT UP.BUTTON COMMENT  "Bitmap picture for Up button")  (\TYPE PARAMETER NAME 
DOWN.PICTURE TYPE  (BITMAP.NAME) DEFAULT DOWN.BUTTON COMMENT  "Bitmap picture for Down button")  (
\TYPE PARAMETER NAME CONTINUOUS? TYPE  (ONEOF  (YES NO)) DEFAULT NO COMMENT  
"Whether to keep going if the button is held down")  (\TYPE PARAMETER NAME AT.LIMIT TYPE  (ONEOF  (
STICK.AT.LIMIT WRAP.AROUND)) DEFAULT STICK.AT.LIMIT COMMENT  "What to do when you reach the limit")  (
\TYPE PARAMETER NAME RATE TYPE  (INTEGER) DEFAULT 300 COMMENT  "Delay in milliseconds")) SUBITEM.SPECS
  ((ITEM CASCADE.BUTTON  (PLACEMENT  (PTRANSLATE PLACEMENT BUTTON.SPACING))  (PICTURE UP.PICTURE)  (
BUTTONS INDICATORS)  (CELL CELL)  (DIRECTION  (QUOTE UP))  (CONTINUOUS? CONTINUOUS?)  (AT.LIMIT 
AT.LIMIT)  (RATE RATE))  (ITEM CASCADE.BUTTON  (PLACEMENT PLACEMENT)  (PICTURE DOWN.PICTURE)  (BUTTONS
 INDICATORS)  (CELL CELL)  (DIRECTION  (QUOTE DOWN))  (CONTINUOUS? CONTINUOUS?)  (AT.LIMIT AT.LIMIT)  
(RATE RATE))) OTHER  (FNS  ((1 CONVERT.CASCADE.UP.DOWN.BUTTONS.OFFSETS))) CLASSES  (COMPOSITE BUTTON) 
VERSION 1)
(DEFINEQ

(CONVERT.CASCADE.UP.DOWN.BUTTONS.OFFSETS
(LAMBDA (ITEM) (* edited: "16-Aug-84 12:59") (CONVERT.GRIDDED.OFFSETSQ ITEM HORIZONTAL.SPACING 
VERTICAL.SPACING BUTTON.SPACING)))
)
(READ.ITEMTYPE CHANGE.FRAME.BUTTON 5)
(\TYPE ITEM.TYPE NAME CHANGE.FRAME.BUTTON COMMENT  "A general button" KIND COMPOSITE PARAMETERS  ((
\TYPE PARAMETER NAME PLACEMENT TYPE  (POSITION) DEFAULT  (170 . 170) COMMENT  
"The grid position of the lower left corner of the button" GRID.TYPE  (LOCATION))  (\TYPE PARAMETER 
NAME PICTURE TYPE  (BITMAP.NAME) DEFAULT OFFPAGE.BUTTON.BITMAP COMMENT  "The artwork for the button") 
 (\TYPE PARAMETER NAME LIST.OF.LINES TYPE  (LIST  (STRING)) DEFAULT  ("Push to <frame>") COMMENT  
"The words associated with the button")  (\TYPE PARAMETER NAME TEXT.OFFSET TYPE  (OFFSET.VECTOR  (
PLACEMENT)) DEFAULT  (34 . 51) COMMENT  
"The offset of the words form the lower left corner of the button")  (\TYPE PARAMETER NAME 
HORIZONTAL.ALIGNMENT TYPE  (ONEOF  (LEFT CENTER RIGHT)) DEFAULT CENTER COMMENT  
"Horizontal alignment of text about reference point")  (\TYPE PARAMETER NAME VERTICAL.ALIGNMENT TYPE  
(ONEOF  (TOP CENTER BOTTOM)) DEFAULT BOTTOM COMMENT  
"Vertical alignment of text about the reference point")  (\TYPE PARAMETER NAME FONT TYPE  (FONT) 
DEFAULT NIL COMMENT  "Font in which to print the label")  (\TYPE PARAMETER NAME SOURCE TYPE  (ONEOF  (
INPUT)) DEFAULT INPUT COMMENT  "The source for BITBLT for the labels")  (\TYPE PARAMETER NAME 
OPERATION TYPE  (ONEOF  (REPLACE INVERT PAINT ERASE)) DEFAULT INVERT COMMENT  
"The operation for BITBLT for the labels")  (\TYPE PARAMETER NAME RESPONSE TYPE  (ONEOF  (NONE 
BLACK.WHILE.DEPRESSED INVERTS.WHEN.DEPRESSED)) DEFAULT BLACK.WHILE.DEPRESSED COMMENT  
"The response to being depressed")  (\TYPE PARAMETER NAME STACK.OPERATION TYPE  (ONEOF  (NO.CHANGE 
PUSH POP)) DEFAULT PUSH COMMENT  "How to change the stack of frames")  (\TYPE PARAMETER NAME 
INITIALIZATION TYPE  (ONEOF  (INITIALIZE DO.NOT.INITIALIZE)) DEFAULT INITIALIZE COMMENT  
"Whether or not to do initialization of the frame")  (\TYPE PARAMETER NAME FRAME TYPE  (FRAME) DEFAULT
 NIL COMMENT  "The frame to push to")) SUBITEM.SPECS  ((ITEM GENERAL.BUTTON  (PLACEMENT PLACEMENT)  (
PICTURE PICTURE)  (TEXT LIST.OF.LINES)  (TEXT.OFFSET TEXT.OFFSET)  (HORIZONTAL.ALIGNMENT 
HORIZONTAL.ALIGNMENT)  (VERTICAL.ALIGNMENT VERTICAL.ALIGNMENT)  (FONT FONT)  (SOURCE SOURCE)  (
OPERATION OPERATION)  (RESPONSE RESPONSE)  (ACTION  (BUILD.STACK.OPERATION STACK.OPERATION FRAME 
INITIALIZATION)))) OTHER  (BITMAPS  ((OFFPAGE.BUTTON.BITMAP  {(READBITMAP)(74 40
"OOOOOOOOOOOOOOOOOD@@"
"OOOOOOOOOOOOOOOOOF@@"
"OOOOOOOOOOOOOOOOOG@@"
"N@@@@@@@@@@@@@@@GGH@"
"N@@@@@@@@@@@@@@@GGL@"
"N@@@@@@@@@@@@@@@GGL@"
"N@@@@@@@@@@@@@@@GGL@"
"N@@@@@@@@@@@@@@@GGL@"
"N@@@@@@@@@@@@@@@GGL@"
"N@@@@@@@@@@@@@@@GGL@"
"N@@@@@@@@@@@@@@@GGL@"
"N@@@@@@@@@@@@@@@GGL@"
"N@@@@@@@@@@@@@@@GGL@"
"N@@@@@@@@@@@@@@@GGL@"
"N@@@@@@@@@@@@@@@GGL@"
"N@@@@@@@@@@@@@@@GGL@"
"N@@@@@@@@@@@@@@@GGL@"
"N@@@@@@@@@@@@@@@GGL@"
"N@@@@@@@@@@@@@@@GGL@"
"N@@@@@@@@@@@@@@@GGL@"
"N@@@@@@@@@@@@@@@GGL@"
"N@@@@@@@@@@@@@@@GGL@"
"N@@@@@@@@@@@@@@@GGL@"
"N@@@@@@@@@@@@@@@GGL@"
"N@@@@@@@@@@@@@@@GGL@"
"N@@@@@@@@@@@@@@@GGL@"
"N@@@@@@@@@@@@@@@GGL@"
"N@@@@@@@@@@@@@@@GGL@"
"N@@@@@@@@@@@@@@@GGL@"
"N@@@@@@@@@@@@@@@GGL@"
"N@@@@@@@@@@@@@@@GGL@"
"OOOOOOOOOOOOOOOOOGL@"
"OOOOOOOOOOOOOOOOOGL@"
"OOOOOOOOOOOOOOOOOGL@"
"@@@@@@@@@@@@@@@@@CL@"
"OOOOOOOOOOOOOOOOOAL@"
"GOOOOOOOOOOOOOOOOHL@"
"COOOOOOOOOOOOOOOOLD@"
"AOOOOOOOOOOOOOOOON@@"
"@OOOOOOOOOOOOOOOOO@@")})) FNS  ((1 CONVERT.CHANGE.FRAME.BUTTON.OFFSETS))) CLASSES  (BUTTON COMPOSITE) VERSION 1)
(DEFINEQ

(CONVERT.CHANGE.FRAME.BUTTON.OFFSETS
(LAMBDA (ITEM) (* edited: "16-Aug-84 10:07") (CONVERT.GRIDDED.OFFSETSQ ITEM HORIZONTAL.OFFSET 
VERTICAL.OFFSET TEXT.OFFSET)))
)
(READ.ITEMTYPE COMPUTER 5)
(\TYPE ITEM.TYPE NAME COMPUTER COMMENT  "Adds the values of a list of cells" KIND COMPOSITE PARAMETERS
  ((\TYPE PARAMETER NAME PLACEMENT TYPE  (POSITION) DEFAULT  (170 . 170) COMMENT  
"The location of this item" GRID.TYPE  (LOCATION))  (\TYPE PARAMETER NAME INPUTS TYPE  (LIST  (CELL)) 
DEFAULT  (CELL.1) COMMENT  "The cells upon which to trigger the computation")  (\TYPE PARAMETER NAME 
OUTPUT TYPE  (CELL) DEFAULT CELL.1 COMMENT  "The output cell")  (\TYPE PARAMETER NAME FORMULA TYPE  (
FORM) DEFAULT 1 COMMENT  "Formula for computing the value of the output cell")) SUBITEM.SPECS  ((
FOREACH  (CELL IN INPUTS)  (X FROM 0) DO  (ITEM IMPLICATION  (PLACEMENT  (TRANSLATE PLACEMENT X 0))  (
CELL CELL)  (ACTION.FORM  (LIST  (QUOTE ACTON.COMPUTER)  (KWOTE FORMULA)  (KWOTE OUTPUT)  (KWOTE 
INPUTS)))))) OTHER  (FNS  ((ACTON ACTON.COMPUTER))) CLASSES  (COMPOSITE))
(DEFINEQ

(ACTON.COMPUTER
(LAMBDA (FORMULA OUTPUT.CELL.NAME INPUT.CELL.NAMES) (* edited: "14-JAN-83 15:29") (
CHANGE.CURRENT.VALUE OUTPUT.CELL.NAME (EVALA FORMULA (for CELL in INPUT.CELL.NAMES collect (CONS CELL 
(GET.CURRENT.VALUE CELL)))))))
)
(READ.ITEMTYPE EXTERNAL.BUTTON 5)
(\TYPE ITEM.TYPE NAME EXTERNAL.BUTTON COMMENT  "A button to cause effects in the world" KIND COMPOSITE
 PARAMETERS  ((\TYPE PARAMETER NAME PLACEMENT TYPE  (POSITION) DEFAULT  (170 . 170) COMMENT  
"The grid position of the lower left corner of the button" GRID.TYPE  (LOCATION))  (\TYPE PARAMETER 
NAME PICTURE TYPE  (BITMAP.NAME) DEFAULT EXTERNAL.BUTTON.BITMAP COMMENT  "The artwork for the button")
  (\TYPE PARAMETER NAME LIST.OF.LINES TYPE  (LIST  (STRING)) DEFAULT  ("Effect an action"  
"outside the machine") COMMENT  "The words associated with the button")  (\TYPE PARAMETER NAME 
TEXT.OFFSET TYPE  (OFFSET.VECTOR  (PLACEMENT)) DEFAULT  (34 . 85) COMMENT  
"The offset of the words form the lower left corner of the button")  (\TYPE PARAMETER NAME 
HORIZONTAL.ALIGNMENT TYPE  (ONEOF  (LEFT CENTER RIGHT)) DEFAULT CENTER COMMENT  
"Horizontal alignment of text about reference point")  (\TYPE PARAMETER NAME VERTICAL.ALIGNMENT TYPE  
(ONEOF  (TOP CENTER BOTTOM)) DEFAULT BOTTOM COMMENT  
"Vertical alignment of text about the reference point")  (\TYPE PARAMETER NAME FONT TYPE  (FONT) 
DEFAULT NIL COMMENT  "Font in which to print the label")  (\TYPE PARAMETER NAME SOURCE TYPE  (ONEOF  (
INPUT)) DEFAULT INPUT COMMENT  "The source for BITBLT for the labels")  (\TYPE PARAMETER NAME 
OPERATION TYPE  (ONEOF  (REPLACE INVERT PAINT ERASE)) DEFAULT INVERT COMMENT  
"The operation for BITBLT for the labels")  (\TYPE PARAMETER NAME RESPONSE TYPE  (ONEOF  (NONE 
BLACK.WHILE.DEPRESSED INVERTS.WHEN.DEPRESSED)) DEFAULT BLACK.WHILE.DEPRESSED COMMENT  
"The response to being depressed")  (\TYPE PARAMETER NAME ACTION.FORM TYPE  (FORM) DEFAULT  (
ACTION.PRINT  "Would now go off and affect the outside world") COMMENT  
"The action to be taken when the button is depressed")) SUBITEM.SPECS  ((ITEM GENERAL.BUTTON  (
PLACEMENT PLACEMENT)  (PICTURE PICTURE)  (TEXT LIST.OF.LINES)  (TEXT.OFFSET TEXT.OFFSET)  (
HORIZONTAL.ALIGNMENT HORIZONTAL.ALIGNMENT)  (VERTICAL.ALIGNMENT VERTICAL.ALIGNMENT)  (FONT FONT)  (
SOURCE SOURCE)  (OPERATION OPERATION)  (RESPONSE RESPONSE)  (ACTION ACTION.FORM))) OTHER  (BITMAPS  ((
EXTERNAL.BUTTON.BITMAP  {(READBITMAP)(74 74
"OOOOOOOOOOOOOOOOOD@@"
"OOOOOOOOOOOOOOOOOF@@"
"OOOOOOOOOOOOOOOOOG@@"
"N@@@@@@@@@@@@@@@GGH@"
"N@@@@@@@@@@@@@@@GGL@"
"N@@@@@@@@@@@@@@@GGL@"
"N@@@@@@@@@@@@@@@GGL@"
"N@@@@@@@@@@@@@@@GGL@"
"N@@@@@@@@@@@@@@@GGL@"
"N@@@@@@@@@@@@@@@GGL@"
"N@@@@@@@@@@@@@@@GGL@"
"N@@@@@@@@@@@@@@@GGL@"
"N@@@@@@@@@@@@@@@GGL@"
"N@@@@@@@@@@@@@@@GGL@"
"N@@@@@@@@@@@@@@@GGL@"
"N@@@@@@@@@@@@@@@GGL@"
"N@@@@@@@@@@@@@@@GGL@"
"N@@@@@@@@@@@@@@@GGL@"
"N@@@@@@@@@@@@@@@GGL@"
"N@@@@@@@@@@@@@@@GGL@"
"N@@@@@@@@@@@@@@@GGL@"
"N@@@@@@@@@@@@@@@GGL@"
"N@@@@@@@@@@@@@@@GGL@"
"N@@@@@@@@@@@@@@@GGL@"
"N@@@@@@@@@@@@@@@GGL@"
"N@@@@@@@@@@@@@@@GGL@"
"N@@@@@@@@@@@@@@@GGL@"
"N@@@@@@@@@@@@@@@GGL@"
"N@@@@@@@@@@@@@@@GGL@"
"N@@@@@@@@@@@@@@@GGL@"
"N@@@@@@@@@@@@@@@GGL@"
"N@@@@@@@@@@@@@@@GGL@"
"N@@@@@@@@@@@@@@@GGL@"
"N@@@@@@@@@@@@@@@GGL@"
"N@@@@@@@@@@@@@@@GGL@"
"N@@@@@@@@@@@@@@@GGL@"
"N@@@@@@@@@@@@@@@GGL@"
"N@@@@@@@@@@@@@@@GGL@"
"N@@@@@@@@@@@@@@@GGL@"
"N@@@@@@@@@@@@@@@GGL@"
"N@@@@@@@@@@@@@@@GGL@"
"N@@@@@@@@@@@@@@@GGL@"
"N@@@@@@@@@@@@@@@GGL@"
"N@@@@@@@@@@@@@@@GGL@"
"N@@@@@@@@@@@@@@@GGL@"
"N@@@@@@@@@@@@@@@GGL@"
"N@@@@@@@@@@@@@@@GGL@"
"N@@@@@@@@@@@@@@@GGL@"
"N@@@@@@@@@@@@@@@GGL@"
"N@@@@@@@@@@@@@@@GGL@"
"N@@@@@@@@@@@@@@@GGL@"
"N@@@@@@@@@@@@@@@GGL@"
"N@@@@@@@@@@@@@@@GGL@"
"N@@@@@@@@@@@@@@@GGL@"
"N@@@@@@@@@@@@@@@GGL@"
"N@@@@@@@@@@@@@@@GGL@"
"N@@@@@@@@@@@@@@@GGL@"
"N@@@@@@@@@@@@@@@GGL@"
"N@@@@@@@@@@@@@@@GGL@"
"N@@@@@@@@@@@@@@@GGL@"
"N@@@@@@@@@@@@@@@GGL@"
"N@@@@@@@@@@@@@@@GGL@"
"N@@@@@@@@@@@@@@@GGL@"
"N@@@@@@@@@@@@@@@GGL@"
"N@@@@@@@@@@@@@@@GGL@"
"OOOOOOOOOOOOOOOOOGL@"
"OOOOOOOOOOOOOOOOOGL@"
"OOOOOOOOOOOOOOOOOGL@"
"@@@@@@@@@@@@@@@@@CL@"
"OOOOOOOOOOOOOOOOOAL@"
"GOOOOOOOOOOOOOOOOHL@"
"COOOOOOOOOOOOOOOOLD@"
"AOOOOOOOOOOOOOOOON@@"
"@OOOOOOOOOOOOOOOOO@@")})) FNS  ((1 CONVERT.EXTERNAL.BUTTON.OFFSETS))) CLASSES  (BUTTON COMPOSITE) VERSION 1)
(DEFINEQ

(CONVERT.EXTERNAL.BUTTON.OFFSETS
(LAMBDA (ITEM) (* edited: "16-Aug-84 10:07") (CONVERT.GRIDDED.OFFSETSQ ITEM HORIZONTAL.OFFSET 
VERTICAL.OFFSET TEXT.OFFSET)))
)
(READ.ITEMTYPE GENERAL.BUTTON 5)
(\TYPE ITEM.TYPE NAME GENERAL.BUTTON COMMENT  "A general button" KIND COMPOSITE PARAMETERS  ((\TYPE 
PARAMETER NAME PLACEMENT TYPE  (POSITION) DEFAULT  (170 . 170) COMMENT  
"The grid position of the lower left corner of the button" GRID.TYPE  (LOCATION))  (\TYPE PARAMETER 
NAME PICTURE TYPE  (BITMAP.NAME) DEFAULT SIMPLE.BUTTON.BITMAP COMMENT  "The artwork for the button")  
(\TYPE PARAMETER NAME TEXT TYPE  (LIST  (STRING)) DEFAULT  ("Label") COMMENT  
"The words associated with the button")  (\TYPE PARAMETER NAME TEXT.OFFSET TYPE  (OFFSET.VECTOR  (
PLACEMENT)) DEFAULT  (17 . 17) COMMENT  
"The offset of the words form the lower left corner of the button")  (\TYPE PARAMETER NAME 
HORIZONTAL.ALIGNMENT TYPE  (ONEOF  (LEFT CENTER RIGHT)) DEFAULT CENTER COMMENT  
"Horizontal alignment of text about reference point")  (\TYPE PARAMETER NAME VERTICAL.ALIGNMENT TYPE  
(ONEOF  (TOP CENTER BOTTOM)) DEFAULT CENTER COMMENT  
"Vertical alignment of text about the reference point")  (\TYPE PARAMETER NAME FONT TYPE  (FONT) 
DEFAULT NIL COMMENT  "Font in which to print the label")  (\TYPE PARAMETER NAME SOURCE TYPE  (ONEOF  (
INPUT)) DEFAULT INPUT COMMENT  "The source for BITBLT for the labels")  (\TYPE PARAMETER NAME 
OPERATION TYPE  (ONEOF  (REPLACE INVERT PAINT ERASE)) DEFAULT INVERT COMMENT  
"The operation for BITBLT for the labels")  (\TYPE PARAMETER NAME RESPONSE TYPE  (ONEOF  (NONE 
BLACK.WHILE.DEPRESSED INVERTS.WHEN.DEPRESSED)) DEFAULT BLACK.WHILE.DEPRESSED COMMENT  
"The response to being depressed")  (\TYPE PARAMETER NAME ACTION TYPE  (FORM) DEFAULT  (ACTION.PRINT  
"This action is brought to you by a GENERAL.BUTTON") COMMENT  
"The action to be taken when the button is depressed")) SUBITEM.SPECS  ((LABEL GRAPHIC  (ITEM PICTURE 
 (PLACEMENT  (PTRANSLATE PLACEMENT  (MINUS BUTTON.BITMAP.EXTRA) 0))  (BITMAP PICTURE)))  (SELECT 
RESPONSE  (NONE  (ITEM SENSITIVE.REGION  (PLACEMENT  (BOUNDING.BOX GRAPHIC))  (ACTION.FORM ACTION)))  
(BLACK.WHILE.DEPRESSED  (ITEM FLASHING.SENSITIVE.REGION  (PLACEMENT  (BOUNDING.BOX GRAPHIC))  (
ACTION.FORM ACTION)))  (INVERTS.WHEN.DEPRESSED  (ITEM INVERTING.SENSITIVE.REGION  (PLACEMENT  (
BOUNDING.BOX GRAPHIC))  (ACTION.FORM ACTION))))  (ITEM BLOCK.OF.TEXT  (PLACEMENT  (PTRANSLATE 
PLACEMENT TEXT.OFFSET))  (LIST.OF.LINES TEXT)  (XALIGNMENT HORIZONTAL.ALIGNMENT)  (YALIGNMENT 
VERTICAL.ALIGNMENT)  (FONT FONT)  (OPERATION OPERATION))) OTHER  (BITMAPS  ((SIMPLE.BUTTON.BITMAP  {(
READBITMAP)(40 40
"OOOOOOOOM@@@"
"OOOOOOOOMH@@"
"OOOOOOOOML@@"
"N@@@@@@AMN@@"
"N@@@@@@AMO@@"
"N@@@@@@AMO@@"
"N@@@@@@AMO@@"
"N@@@@@@AMO@@"
"N@@@@@@AMO@@"
"N@@@@@@AMO@@"
"N@@@@@@AMO@@"
"N@@@@@@AMO@@"
"N@@@@@@AMO@@"
"N@@@@@@AMO@@"
"N@@@@@@AMO@@"
"N@@@@@@AMO@@"
"N@@@@@@AMO@@"
"N@@@@@@AMO@@"
"N@@@@@@AMO@@"
"N@@@@@@AMO@@"
"N@@@@@@AMO@@"
"N@@@@@@AMO@@"
"N@@@@@@AMO@@"
"N@@@@@@AMO@@"
"N@@@@@@AMO@@"
"N@@@@@@AMO@@"
"N@@@@@@AMO@@"
"N@@@@@@AMO@@"
"N@@@@@@AMO@@"
"N@@@@@@AMO@@"
"N@@@@@@AMO@@"
"OOOOOOOOMO@@"
"OOOOOOOOMO@@"
"OOOOOOOOMO@@"
"@@@@@@@@@O@@"
"OOOOOOOOLG@@"
"GOOOOOOONC@@"
"COOOOOOOOA@@"
"AOOOOOOOOH@@"
"@OOOOOOOOL@@")})) FNS  ((1 CONVERT.GENERAL.BUTTON.OFFSETS))) CLASSES  (BUTTON COMPOSITE) VERSION 1)
(DEFINEQ

(CONVERT.GENERAL.BUTTON.OFFSETS
(LAMBDA (ITEM) (* edited: "16-Aug-84 10:07") (CONVERT.GRIDDED.OFFSETSQ ITEM HORIZONTAL.OFFSET 
VERTICAL.OFFSET TEXT.OFFSET)))
)
(READ.ITEMTYPE HORIZONTAL.BUTTONS 5)
(\TYPE ITEM.TYPE NAME HORIZONTAL.BUTTONS COMMENT  
"A set of backlit buttons which all affect the same cell, thus interacting" KIND COMPOSITE PARAMETERS 
 ((\TYPE PARAMETER NAME PLACEMENT TYPE  (POSITION) DEFAULT  (340 . 255) COMMENT  
"Offset for the whole bunch" GRID.TYPE  (LOCATION))  (\TYPE PARAMETER NAME BUTTONS TYPE  (LIST  (
STRUCTURE  ((TEXT  (LIST  (STRING)))  (VALUE  (CONSTANT))))) DEFAULT  ((("LABEL 1") VALUE.1)  ((
"LABEL 2") VALUE.2)) COMMENT  "The buttons themselves")  (\TYPE PARAMETER NAME PICTURE TYPE  (
BITMAP.NAME) DEFAULT SIMPLE.BUTTON.BITMAP COMMENT  "The graphic for the buttons")  (\TYPE PARAMETER 
NAME HORIZONTAL.SPACING TYPE  (INTEGER) DEFAULT 51 COMMENT  "Between buttons")  (\TYPE PARAMETER NAME 
TEXT.DISPLACEMENT TYPE  (OFFSET.VECTOR) DEFAULT  (17 . 51) COMMENT  
"Offset for the text from the buttons")  (\TYPE PARAMETER NAME HORIZONTAL.ALIGNMENT TYPE  (ONEOF  (
LEFT CENTER RIGHT)) DEFAULT CENTER COMMENT  "Horizontal alignment of the text")  (\TYPE PARAMETER NAME
 VERTICAL.ALIGNMENT TYPE  (ONEOF  (TOP CENTER BOTTOM)) DEFAULT TOP COMMENT  
"Vertical alignment of the text")  (\TYPE PARAMETER NAME FONT TYPE  (FONT) DEFAULT NIL COMMENT  
"The font in which to print the labels")  (\TYPE PARAMETER NAME CELL TYPE  (CELL) DEFAULT CELL.1 
COMMENT  "The affected cell")  (\TYPE PARAMETER NAME INITIAL.VALUE TYPE  (CONSTANT) DEFAULT VALUE.1 
COMMENT  "An initial value for the cell")) SUBITEM.SPECS  ((ITEM SET.OF.LABELLED.BACKLIT.BUTTONS  (
PLACEMENT PLACEMENT)  (BUTTONS BUTTONS)  (PICTURE PICTURE)  (BUTTON.SPACING  (NEW.POSITION 
HORIZONTAL.SPACING 0))  (TEXT.DISPLACEMENT TEXT.DISPLACEMENT)  (TEXT.DISPLACEMENT.%↑ 
TEXT.DISPLACEMENT.%↑)  (HORIZONTAL.ALIGNMENT HORIZONTAL.ALIGNMENT)  (VERTICAL.ALIGNMENT 
VERTICAL.ALIGNMENT)  (FONT FONT)  (CELL CELL)  (INITIAL.VALUE INITIAL.VALUE))) OTHER  (FNS  ((1 
CONVERT.HORIZONTAL.BUTTONS.OFFSETS))) CLASSES  (BUTTON COMPOSITE) VERSION 1)
(DEFINEQ

(CONVERT.HORIZONTAL.BUTTONS.OFFSETS
(LAMBDA (ITEM) (* edited: "16-Aug-84 10:53") (PROG NIL (CONVERT.GRIDDED.OFFSET ITEM (QUOTE 
HORIZONTAL.SPACING)) (CONVERT.GRIDDED.OFFSETSQ ITEM TEXT.DISPLACEMENT TEXT.DISPLACEMENT.↑ 
TEXT.DISPLACEMENT))))
)
(READ.ITEMTYPE ICONIC.BUTTON 5)
(\TYPE ITEM.TYPE NAME ICONIC.BUTTON COMMENT  "A touch sensitive backlit icon" KIND COMPOSITE 
PARAMETERS  ((\TYPE PARAMETER NAME PLACEMENT TYPE  (POSITION) DEFAULT  (100 . 100) COMMENT  
"The grid position of the lower left corner of the button")  (\TYPE PARAMETER NAME PICTURE TYPE  (
BITMAP.NAME) DEFAULT EXAMPLE.BITMAP COMMENT  "The artwork for the button")  (\TYPE PARAMETER NAME CELL
 TYPE  (CELL) DEFAULT CELL.1 COMMENT  "The cell to affect and display")  (\TYPE PARAMETER NAME VALUE 
TYPE  (CONSTANT) DEFAULT VALUE.1 COMMENT  "The value to be set and reflected")) SUBITEM.SPECS  ((LABEL
 ICON  (ITEM PICTURE  (PLACEMENT PLACEMENT)  (BITMAP PICTURE)))  (ITEM SENSITIVE.REGION  (PLACEMENT  (
BOUNDING.BOX ICON))  (ACTION.FORM  (LIST  (QUOTE CHANGE.CELL) CELL  (KWOTE VALUE))))  (ITEM LIGHT  (
PLACEMENT  (BOUNDING.BOX ICON))  (CELL CELL)  (REFERENCE.VALUE VALUE))) CLASSES  (BUTTON COMPOSITE)  (
QUOTE CLASSES)  (BUTTON))
(READ.ITEMTYPE ICONIC.INDICATOR 5)
(\TYPE ITEM.TYPE NAME ICONIC.INDICATOR COMMENT  "A touch sensitive backlit icon" KIND COMPOSITE 
PARAMETERS  ((\TYPE PARAMETER NAME PLACEMENT TYPE  (POSITION) DEFAULT  (1700 . 1700) COMMENT  
"The grid position of the lower left corner of the button" GRID.TYPE  (LOCATION))  (\TYPE PARAMETER 
NAME PICTURE TYPE  (BITMAP.NAME) DEFAULT EXAMPLE.BITMAP COMMENT  "The artwork for the button")  (\TYPE
 PARAMETER NAME CELL TYPE  (CELL) DEFAULT CELL.1 COMMENT  "The cell to affect and display")  (\TYPE 
PARAMETER NAME VALUE TYPE  (CONSTANT) DEFAULT 1 COMMENT  "The value to be set and reflected")) 
SUBITEM.SPECS  ((LABEL ICON  (ITEM PICTURE  (PLACEMENT PLACEMENT)  (BITMAP PICTURE)))  (ITEM LIGHT  (
PLACEMENT  (BOUNDING.BOX ICON))  (CELL CELL)  (REFERENCE.VALUE VALUE))) CLASSES  (COMPOSITE))
(READ.ITEMTYPE INVERTING.CASCADE 5)
(\TYPE ITEM.TYPE NAME INVERTING.CASCADE COMMENT  "A cascade which lights its indicators" KIND 
COMPOSITE PARAMETERS  ((\TYPE PARAMETER NAME PLACEMENT TYPE  (POSITION) DEFAULT  (340 . 255) COMMENT  
"Offset for the whole bunch" GRID.TYPE  (LOCATION))  (\TYPE PARAMETER NAME BUTTONS TYPE  (LIST  (
STRUCTURE  ((TEXT  (LIST  (STRING)))  (VALUE  (CONSTANT))))) DEFAULT  ((("LABEL 1") VALUE.1)  ((
"LABEL 2") VALUE2)) COMMENT  "The buttons themselves")  (\TYPE PARAMETER NAME BUTTON.PICTURE TYPE  (
BITMAP.NAME) DEFAULT SIMPLE.BUTTON.BITMAP COMMENT  "The graphic for the button")  (\TYPE PARAMETER 
NAME BUTTON/INDICATOR.SPACING TYPE  (INTEGER) DEFAULT 51 COMMENT  
"Spacing between button and bottom indicator")  (\TYPE PARAMETER NAME VERTICAL.SPACING TYPE  (INTEGER)
 DEFAULT 34 COMMENT  "Between buttons")  (\TYPE PARAMETER NAME TEXT.DISPLACEMENT TYPE  (OFFSET.VECTOR)
 DEFAULT  (17 . 17) COMMENT  "Offset for the text")  (\TYPE PARAMETER NAME FONT TYPE  (FONT) DEFAULT  
(HELVETICA 10) COMMENT  "The font for the text")  (\TYPE PARAMETER NAME HORIZONTAL.ALIGNMENT TYPE  (
ONEOF  (LEFT CENTER RIGHT)) DEFAULT CENTER COMMENT  "Horizontal alignment of the text")  (\TYPE 
PARAMETER NAME VERTICAL.ALIGNMENT TYPE  (ONEOF  (TOP CENTER BOTTOM)) DEFAULT CENTER COMMENT  
"Vertical alignment of the text")  (\TYPE PARAMETER NAME CONTINUOUS? TYPE  (ONEOF  (YES NO)) DEFAULT 
NO COMMENT  "Whether or not to keep going if the button is held down")  (\TYPE PARAMETER NAME RATE 
TYPE  (INTEGER) DEFAULT 300 COMMENT  "Rate it changes (in milliseconds) if continuous")  (\TYPE 
PARAMETER NAME CELL TYPE  (CELL) DEFAULT CELL.1 COMMENT  "The affected cell")  (\TYPE PARAMETER NAME 
INITIAL.VALUE TYPE  (CONSTANT) DEFAULT VALUE.1 COMMENT  "An initial value for the cell")  (\TYPE 
PARAMETER NAME SHOW.INITIAL.VALUE? TYPE  (ONEOF  (YES NO)) DEFAULT YES COMMENT  
"Whether or not the default is visible - ala 1075")) SUBITEM.SPECS  ((ITEM CASCADE.BUTTON  (PLACEMENT 
PLACEMENT)  (BUTTONS BUTTONS)  (CELL CELL)  (PICTURE BUTTON.PICTURE)  (CONTINUOUS? CONTINUOUS?)  (RATE
 RATE)  (AT.LIMIT  (QUOTE WRAP.AROUND))  (DIRECTION  (QUOTE UP)))  (FOREACH  (BUTTON IN  (COND  ((EQ 
SHOW.INITIAL.VALUE?  (QUOTE YES)) BUTTONS)  (T  (for B in BUTTONS collect B when  (NOT  (EQUAL  (CADR 
B) INITIAL.VALUE))))))  (I FROM 0) DO  (ITEM INVERTING.CASCADE.LIGHT  (PLACEMENT  (PTRANSLATE 
PLACEMENT 0  (IPLUS  (ITIMES I VERTICAL.SPACING) BUTTON/INDICATOR.SPACING)))  (TEXT  (CAR BUTTON))  (
FONT FONT)  (TEXT.OFFSET TEXT.DISPLACEMENT)  (HORIZONTAL.ALIGNMENT HORIZONTAL.ALIGNMENT)  (
VERTICAL.ALIGNMENT VERTICAL.ALIGNMENT)  (CELL CELL)  (VALUE  (CADR BUTTON))))  (ITEM INITIALIZATION  (
PLACEMENT PLACEMENT)  (ACTION.FORM  (LIST  (QUOTE SET.CELL) CELL INITIAL.VALUE)))) OTHER  (FNS  ((1 
CONVERT.INVERTING.CASCADE.OFFSETS))) CLASSES  (COMPOSITE BUTTON) VERSION 1)
(DEFINEQ

(CONVERT.INVERTING.CASCADE.OFFSETS
(LAMBDA (ITEM) (* edited: "16-Aug-84 12:17") (PROG NIL (CONVERT.GRIDDED.OFFSET ITEM (QUOTE 
VERTICAL.SPACING)) (CONVERT.GRIDDED.OFFSET ITEM (QUOTE BUTTON/INDICATOR.SPACING)) (
CONVERT.GRIDDED.OFFSETSQ ITEM TEXT.DISPLACEMENT TEXT.DISPLACEMENT.↑ TEXT.DISPLACEMENT))))
)
(READ.ITEMTYPE INVERTING.CASCADE.LIGHT 5)
(\TYPE ITEM.TYPE NAME INVERTING.CASCADE.LIGHT COMMENT  "An indicator with associated text" KIND 
COMPOSITE PARAMETERS  ((\TYPE PARAMETER NAME PLACEMENT TYPE  (POSITION) DEFAULT  (170 . 170) COMMENT  
"A reference grid position" GRID.TYPE  (LOCATION))  (\TYPE PARAMETER NAME TEXT TYPE  (LIST  (STRING)) 
DEFAULT  (Label for Light) COMMENT  "The text associated with the light")  (\TYPE PARAMETER NAME FONT 
TYPE  (FONT) DEFAULT  (HELVETICA 10) COMMENT  "The font in which to print the information")  (\TYPE 
PARAMETER NAME TEXT.OFFSET TYPE  (OFFSET.VECTOR  (PLACEMENT)) DEFAULT  (51 . 17) COMMENT  
"The offset of the words form the lower left corner of the button")  (\TYPE PARAMETER NAME 
HORIZONTAL.ALIGNMENT TYPE  (ONEOF  (LEFT CENTER RIGHT)) DEFAULT  (QUOTE LEFT) COMMENT  
"Horizontal alignment of text about reference point")  (\TYPE PARAMETER NAME VERTICAL.ALIGNMENT TYPE  
(ONEOF  (TOP CENTER BOTTOM)) DEFAULT  (QUOTE CENTER) COMMENT  
"Vertical alignment of text about the reference point")  (\TYPE PARAMETER NAME CELL TYPE  (CELL) 
DEFAULT CELL.1 COMMENT  "The cell to affect and display")  (\TYPE PARAMETER NAME VALUE TYPE  (CONSTANT
) DEFAULT VALUE.1 COMMENT  "The value to be set and reflected")) SUBITEM.SPECS  ((LABEL WORDS  (ITEM 
BLOCK.OF.TEXT  (PLACEMENT  (PTRANSLATE PLACEMENT TEXT.OFFSET))  (LIST.OF.LINES TEXT)  (FONT FONT)  (
XALIGNMENT HORIZONTAL.ALIGNMENT)  (YALIGNMENT VERTICAL.ALIGNMENT)))  (ITEM LIGHT  (PLACEMENT  (
BOUNDING.BOX WORDS))  (CELL CELL)  (REFERENCE.VALUE VALUE))) OTHER  (FNS  ((1 
CONVERT.INVERTING.CASCADE.LIGHT.OFFSETS))) CLASSES  (COMPOSITE) VERSION 1)
(DEFINEQ

(CONVERT.INVERTING.CASCADE.LIGHT.OFFSETS
(LAMBDA (ITEM) (* edited: "16-Aug-84 10:07") (CONVERT.GRIDDED.OFFSETSQ ITEM HORIZONTAL.OFFSET 
VERTICAL.OFFSET TEXT.OFFSET)))
)
(READ.ITEMTYPE INVERTING.CASCADE.TWO.BUTTONS 5)
(\TYPE ITEM.TYPE NAME INVERTING.CASCADE.TWO.BUTTONS COMMENT  "A cascade which lights its indicators" 
KIND COMPOSITE PARAMETERS  ((\TYPE PARAMETER NAME PLACEMENT TYPE  (POSITION) DEFAULT  (340 . 255) 
COMMENT  "Offset for the whole bunch" GRID.TYPE  (LOCATION))  (\TYPE PARAMETER NAME BUTTONS TYPE  (
LIST  (STRUCTURE  ((TEXT  (LIST  (STRING)))  (VALUE  (CONSTANT))))) DEFAULT  ((("LABEL 1") 1)  ((
"LABEL 2") 2)  (("LABEL 2") 3)) COMMENT  "The buttons themselves")  (\TYPE PARAMETER NAME 
BUTTON/INDICATOR.SPACING TYPE  (OFFSET.VECTOR) DEFAULT  (0 . 51) COMMENT  
"Spacing between button and bottom indicator")  (\TYPE PARAMETER NAME BUTTON.SPACING TYPE  (
OFFSET.VECTOR) DEFAULT  (51 . 0) COMMENT  "Spacing between the buttons")  (\TYPE PARAMETER NAME 
INDICATOR.SPACING TYPE  (OFFSET.VECTOR) DEFAULT  (0 . 34) COMMENT  "Spacing between indicators")  (
\TYPE PARAMETER NAME UP.PICTURE TYPE  (BITMAP.NAME) DEFAULT UP.BUTTON COMMENT  
"Bitmap picture for Up button")  (\TYPE PARAMETER NAME DOWN.PICTURE TYPE  (BITMAP.NAME) DEFAULT 
DOWN.BUTTON COMMENT  "Bitmap picture for Down button")  (\TYPE PARAMETER NAME CONTINUOUS? TYPE  (ONEOF
  (YES NO)) DEFAULT NO COMMENT  "Whether or not to keep going if the button is held down")  (\TYPE 
PARAMETER NAME RATE TYPE  (INTEGER) DEFAULT 300 COMMENT  
"Rate it changes (in milliseconds) if continuous")  (\TYPE PARAMETER NAME AT.LIMIT TYPE  (ONEOF  (
WRAP.AROUND STICK.AT.LIMIT)) DEFAULT WRAP.AROUND COMMENT  "What to do when you reach the limit")  (
\TYPE PARAMETER NAME FONT TYPE  (FONT) DEFAULT  (HELVETICA 10) COMMENT  
"The font in which to print the information")  (\TYPE PARAMETER NAME TEXT.DISPLACEMENT TYPE  (
OFFSET.VECTOR) DEFAULT  (17 . 17) COMMENT  "Offset for the text")  (\TYPE PARAMETER NAME 
HORIZONTAL.ALIGNMENT TYPE  (ONEOF  (LEFT CENTER RIGHT)) DEFAULT CENTER COMMENT  
"Horizontal alignment of the text")  (\TYPE PARAMETER NAME VERTICAL.ALIGNMENT TYPE  (ONEOF  (TOP 
CENTER BOTTOM)) DEFAULT CENTER COMMENT  "Vertical alignment of the text")  (\TYPE PARAMETER NAME CELL 
TYPE  (CELL) DEFAULT CELL.1 COMMENT  "The affected cell")  (\TYPE PARAMETER NAME INITIAL.VALUE TYPE  (
CONSTANT) DEFAULT VALUE.1 COMMENT  "An initial value for the cell")  (\TYPE PARAMETER NAME 
SHOW.INITIAL.VALUE? TYPE  (ONEOF  (YES NO)) DEFAULT YES COMMENT  
"Whether or not the default is visible - ala 1075")) SUBITEM.SPECS  ((ITEM CASCADE.UP.DOWN.BUTTON  (
PLACEMENT PLACEMENT)  (INDICATORS BUTTONS)  (CELL CELL)  (BUTTON.SPACING BUTTON.SPACING)  (UP.PICTURE 
UP.PICTURE)  (DOWN.PICTURE DOWN.PICTURE)  (CONTINUOUS? CONTINUOUS?)  (AT.LIMIT AT.LIMIT)  (RATE RATE))
  (FOREACH  (BUTTON IN  (COND  ((EQ SHOW.INITIAL.VALUE?  (QUOTE YES)) BUTTONS)  (T  (for B in BUTTONS 
collect B when  (NOT  (EQUAL  (CADR B) INITIAL.VALUE))))))  (I FROM 0) DO  (ITEM 
INVERTING.CASCADE.LIGHT  (PLACEMENT  (PTRANSLATE PLACEMENT  (NEW.POSITION  (IPLUS  (ITIMES I  (CAR 
INDICATOR.SPACING))  (CAR BUTTON/INDICATOR.SPACING))  (IPLUS  (ITIMES I  (CDR INDICATOR.SPACING))  (
CDR BUTTON/INDICATOR.SPACING)))))  (TEXT  (CAR BUTTON))  (FONT FONT)  (TEXT.OFFSET TEXT.DISPLACEMENT) 
 (HORIZONTAL.ALIGNMENT HORIZONTAL.ALIGNMENT)  (VERTICAL.ALIGNMENT VERTICAL.ALIGNMENT)  (CELL CELL)  (
VALUE  (CADR BUTTON))))  (ITEM INITIALIZATION  (PLACEMENT PLACEMENT)  (ACTION.FORM  (LIST  (QUOTE 
SET.CELL) CELL  (KWOTE INITIAL.VALUE))))) OTHER  (FNS  ((1 
CONVERT.INVERTING.CASCADE.TWO.BUTTONS.OFFSETS))) CLASSES  (BUTTON COMPOSITE) VERSION 1)
(DEFINEQ

(CONVERT.INVERTING.CASCADE.TWO.BUTTONS.OFFSETS
(LAMBDA (ITEM) (* edited: "16-Aug-84 12:32") (PROG NIL (CONVERT.GRIDDED.OFFSETSQ ITEM 
BUTTON/INDICATOR.HORIZONTAL.SPACING BUTTON/INDICATOR.SPACING BUTTON/INDICATOR.SPACING) (
CONVERT.GRIDDED.OFFSETSQ ITEM TEXT.DISPLACEMENT TEXT.DISPLACEMENT.↑ TEXT.DISPLACEMENT) (
CONVERT.GRIDDED.OFFSETSQ ITEM HORIZONTAL.SPACING VERTICAL.SPACING INDICATOR.SPACING) (
CONVERT.GRIDDED.OFFSETSQ ITEM HORIZONTAL.BUTTON.SPACING VERTICAL.BUTTON.SPACING BUTTON.SPACING))))
)
(READ.ITEMTYPE INVERTING.ICONIC.CASCADE.TWO.BUTTONS 5)
(\TYPE ITEM.TYPE NAME INVERTING.ICONIC.CASCADE.TWO.BUTTONS COMMENT  
"A cascade which lights its indicators" KIND COMPOSITE PARAMETERS  ((\TYPE PARAMETER NAME PLACEMENT 
TYPE  (POSITION) DEFAULT  (340 . 255) COMMENT  "Offset for the whole bunch" GRID.TYPE  (LOCATION))  (
\TYPE PARAMETER NAME ICONS TYPE  (LIST  (STRUCTURE  ((ICON  (BITMAP.NAME))  (VALUE  (CONSTANT))))) 
DEFAULT  ((SMALL.SPOT.BITMAP 1)  (SMALL.SPOT.BITMAP 2)  (SMALL.SPOT.BITMAP 3)) COMMENT  
"The buttons themselves")  (\TYPE PARAMETER NAME BUTTON/INDICATOR.SPACING TYPE  (OFFSET.VECTOR) 
DEFAULT  (0 . 51) COMMENT  "Spacing between button and bottom indicator")  (\TYPE PARAMETER NAME 
BUTTON.SPACING TYPE  (OFFSET.VECTOR) DEFAULT  (51 . 0) COMMENT  "Spacing between the buttons")  (\TYPE
 PARAMETER NAME UP.PICTURE TYPE  (BITMAP.NAME) DEFAULT UP.BUTTON COMMENT  
"Bitmap picture for Up button")  (\TYPE PARAMETER NAME DOWN.PICTURE TYPE  (BITMAP.NAME) DEFAULT 
DOWN.BUTTON COMMENT  "Bitmap picture for Down button")  (\TYPE PARAMETER NAME INDICATOR.SPACING TYPE  
(OFFSET.VECTOR) DEFAULT  (0 . 34) COMMENT  "Spacing between icons")  (\TYPE PARAMETER NAME CONTINUOUS?
 TYPE  (ONEOF  (YES NO)) DEFAULT NO COMMENT  "Whether or not to keep going if the button is held down"
)  (\TYPE PARAMETER NAME RATE TYPE  (INTEGER) DEFAULT 300 COMMENT  "Delay in milliseconds")  (\TYPE 
PARAMETER NAME AT.LIMIT TYPE  (ONEOF  (WRAP.AROUND STICK.AT.LIMIT)) DEFAULT WRAP.AROUND COMMENT  
"Delay in milliseconds")  (\TYPE PARAMETER NAME CELL TYPE  (CELL) DEFAULT CELL.1 COMMENT  
"The affected cell")  (\TYPE PARAMETER NAME INITIAL.VALUE TYPE  (CONSTANT) DEFAULT VALUE.1 COMMENT  
"An initial value for the cell")  (\TYPE PARAMETER NAME SHOW.INITIAL.VALUE? TYPE  (ONEOF  (YES NO)) 
DEFAULT YES COMMENT  "Whether or not the default is visible - ala 1075")) SUBITEM.SPECS  ((ITEM 
CASCADE.UP.DOWN.BUTTONS  (PLACEMENT PLACEMENT)  (INDICATORS ICONS)  (CELL CELL)  (BUTTON.SPACING 
BUTTON.SPACING)  (UP.PICTURE UP.PICTURE)  (DOWN.PICTURE DOWN.PICTURE)  (CONTINUOUS? CONTINUOUS?)  (
AT.LIMIT AT.LIMIT)  (RATE RATE))  (FOREACH  (ICON IN  (COND  ((EQ SHOW.INITIAL.VALUE?  (QUOTE YES)) 
ICONS)  (T  (for B in ICONS collect B when  (NOT  (EQUAL  (CADR B) INITIAL.VALUE))))))  (I FROM 0) DO 
 (ITEM ICONIC.INDICATOR  (PLACEMENT  (PTRANSLATE PLACEMENT  (NEW.POSITION  (IPLUS  (ITIMES I  (CAR 
INDICATOR.SPACING))  (CAR BUTTON/INDICATOR.SPACING))  (IPLUS  (ITIMES I  (CDR INDICATOR.SPACING))  (
CDR BUTTON/INDICATOR.SPACING)))))  (PICTURE  (CAR ICON))  (CELL CELL)  (VALUE  (CADR ICON))))  (ITEM 
INITIALIZATION  (PLACEMENT PLACEMENT)  (ACTION.FORM  (LIST  (QUOTE SET.CELL) CELL  (KWOTE 
INITIAL.VALUE))))) OTHER  (FNS  ((1 CONVERT.INVERTING.ICONIC.CASCADE.TWO.BUTTONS.OFFSETS))) CLASSES  (
BUTTON COMPOSITE) VERSION 1)
(DEFINEQ

(CONVERT.INVERTING.ICONIC.CASCADE.TWO.BUTTONS.OFFSETS
(LAMBDA (ITEM) (* edited: "16-Aug-84 12:43") (PROG NIL (CONVERT.GRIDDED.OFFSETSQ ITEM 
BUTTON/INDICATOR.HORIZONTAL.SPACING BUTTON/INDICATOR.SPACING BUTTON/INDICATOR.SPACING) (
CONVERT.GRIDDED.OFFSETSQ ITEM HORIZONTAL.SPACING VERTICAL.SPACING INDICATOR.SPACING) (
CONVERT.GRIDDED.OFFSETSQ ITEM HORIZONTAL.BUTTON.SPACING VERTICAL.BUTTON.SPACING BUTTON.SPACING))))
)
(READ.ITEMTYPE LINE.OF.TEXT 5)
(\TYPE ITEM.TYPE NAME LINE.OF.TEXT COMMENT  "A located line of text" KIND COMPOSITE PARAMETERS  ((
\TYPE PARAMETER NAME PLACEMENT TYPE  (POSITION) DEFAULT  (100 . 100) COMMENT  
"The left baseline of the first character of the line")  (\TYPE PARAMETER NAME LINE TYPE  (STRING) 
DEFAULT  "The text of a LINE.OF.TEXT" COMMENT  "The line of text itself")  (\TYPE PARAMETER NAME 
XALIGNMENT TYPE  (ONEOF  (LEFT CENTER RIGHT)) DEFAULT LEFT COMMENT  "Horizontal alignment")  (\TYPE 
PARAMETER NAME FONT TYPE  (FONT) DEFAULT  (GACHA 10) COMMENT  "The font the line is to be printed in")
  (\TYPE PARAMETER NAME SOURCE TYPE  (ONEOF  (INPUT INVERT MERGE TEXTURE)) DEFAULT INPUT COMMENT  
"Source for BITBLT")  (\TYPE PARAMETER NAME OPERATION TYPE  (ONEOF  (REPLACE PAINT INVERT ERASE)) 
DEFAULT REPLACE COMMENT  "Operation for BITBLT")  (\TYPE PARAMETER NAME TEXTURE TYPE  (SHADE) DEFAULT 
65535 COMMENT  "Texture for BITBLT")  (\TYPE PARAMETER NAME FIGURE-COLOR TYPE  (COLOR.NAME) DEFAULT 
BLACK COMMENT  "The color corresponding to the figure")  (\TYPE PARAMETER NAME GROUND-COLOR TYPE  (
COLOR.NAME) DEFAULT WHITE COMMENT  "The color corresponding to ground")) SUBITEM.SPECS  ((EVAL  (
ANALYZE.LINE.OF.TEXT)  (PICTURE))) OTHER  (FNS  ((ANALYZE ANALYZE.LINE.OF.TEXT))) CLASSES  (COMPOSITE)
)
(DEFINEQ

(ANALYZE.LINE.OF.TEXT
(LAMBDA (ITEM) (* HaKo " 6-Aug-84 15:19") (* DAHJr "13-JAN-83 09:11") (PROG ((XCOORD (fetch (POSITION 
XCOORD) of PLACEMENT)) (YCOORD (fetch (POSITION YCOORD) of PLACEMENT)) (FONT.DESCRIPTOR (FIND.FONT 
FONT)) HEIGHT WIDTH DESCENT BITMAP DISPLAY.STREAM TX) (SETQ HEIGHT (FONTPROP FONT.DESCRIPTOR (QUOTE 
HEIGHT))) (SETQ WIDTH (STRINGWIDTH LINE FONT.DESCRIPTOR)) (SETQ DESCENT (FONTPROP FONT.DESCRIPTOR (
QUOTE DESCENT))) (SETQ BITMAP (BITMAPCREATE WIDTH HEIGHT)) (SETQ DISPLAY.STREAM (OR ANALYZE.LOT.DSP (
SETQ ANALYZE.LOT.DSP (DSPCREATE)))) (DSPDESTINATION BITMAP DISPLAY.STREAM) (DSPFONT FONT.DESCRIPTOR 
DISPLAY.STREAM) (DSPXPOSITION 0 DISPLAY.STREAM) (DSPYPOSITION DESCENT DISPLAY.STREAM) (PRIN1 LINE 
DISPLAY.STREAM) (SETQ TX (SELECTQ XALIGNMENT (LEFT XCOORD) (CENTER (IDIFFERENCE XCOORD (IQUOTIENT 
WIDTH 2))) (RIGHT (IDIFFERENCE XCOORD WIDTH)) (SHOULDNT "Unrecognized keyword in ANALYZE.LINE.OF.TEXT"
))) (RETURN (LIST (ITEM.CREATE PICTURE (PLACEMENT (create POSITION XCOORD ← TX YCOORD ← (IDIFFERENCE 
YCOORD DESCENT))) (BITMAP BITMAP) (SOURCE SOURCE) (OPERATION OPERATION) (TEXTURE TEXTURE) (
FIGURE-COLOR FIGURE-COLOR) (GROUND-COLOR GROUND-COLOR)))))))
)
(READ.ITEMTYPE NUMBER.BUTTON 5)
(\TYPE ITEM.TYPE NAME NUMBER.BUTTON COMMENT  
"A small button, with a label on it, which flashes when pushed, and does internal action" KIND 
COMPOSITE PARAMETERS  ((\TYPE PARAMETER NAME PLACEMENT TYPE  (POSITION) DEFAULT  (170 . 170) COMMENT  
"The grid position of the lower left corner of the button" GRID.TYPE  (LOCATION))  (\TYPE PARAMETER 
NAME LABEL TYPE  (STRING) DEFAULT 1 COMMENT  "The words above this button")  (\TYPE PARAMETER NAME 
FONT TYPE  (FONT) DEFAULT NIL COMMENT  "The font for the button label")  (\TYPE PARAMETER NAME CELL 
TYPE  (CELL) DEFAULT CELL.1 COMMENT  "The cell affected by this button")  (\TYPE PARAMETER NAME DIGIT 
TYPE  (INTEGER) DEFAULT 1 COMMENT  "The digit added to the number in the cell")  (\TYPE PARAMETER NAME
 PICTURE TYPE  (BITMAP.NAME) DEFAULT SIMPLE.BUTTON.BITMAP COMMENT  "The graphic for the button")) 
SUBITEM.SPECS  ((LABEL BUTTON  (ITEM PICTURE  (PLACEMENT  (PTRANSLATE PLACEMENT  (MINUS 
BUTTON.BITMAP.EXTRA) 0))  (BITMAP PICTURE)))  (ITEM LINE.OF.TEXT  (PLACEMENT  (PICTURE.CENTER BUTTON))
  (LINE LABEL)  (XALIGNMENT  (QUOTE CENTER))  (FONT FONT))  (ITEM FLASHING.SENSITIVE.REGION  (
PLACEMENT  (BOUNDING.BOX BUTTON))  (ACTION.FORM  (LIST  (QUOTE CHANGE.CELL) CELL  (KWOTE DIGIT))))) 
CLASSES  (BUTTON COMPOSITE)  (QUOTE CLASSES)  (BUTTON))
(READ.ITEMTYPE NUMBER.BUTTON.ADD.CELL 5)
(\TYPE ITEM.TYPE NAME NUMBER.BUTTON.ADD.CELL COMMENT  
"A small button, with a label on it, which flashes when pushed, and does internal action" KIND 
COMPOSITE PARAMETERS  ((\TYPE PARAMETER NAME PLACEMENT TYPE  (POSITION) DEFAULT  (170 . 170) COMMENT  
"The grid position of the lower left corner of the button" GRID.TYPE  (LOCATION))  (\TYPE PARAMETER 
NAME LABEL TYPE  (STRING) DEFAULT 1 COMMENT  "The words above this button")  (\TYPE PARAMETER NAME 
FONT TYPE  (FONT) DEFAULT NIL COMMENT  "The font for the button label")  (\TYPE PARAMETER NAME CELL 
TYPE  (CELL) DEFAULT CELL.1 COMMENT  "The cell affected by this button")  (\TYPE PARAMETER NAME 
HOW.MUCH.TO.ADD.CELL TYPE  (CELL) DEFAULT CELL.1 COMMENT  "The cell affected by this button")  (\TYPE 
PARAMETER NAME ADD.OR.SUBTRACT TYPE  (ONEOF  (ADD SUBTRACT)) DEFAULT ADD COMMENT  "The operation")  (
\TYPE PARAMETER NAME DIGIT TYPE  (INTEGER) DEFAULT 1 COMMENT  
"The digit added to the number in the cell")  (\TYPE PARAMETER NAME PICTURE TYPE  (BITMAP.NAME) 
DEFAULT SIMPLE.BUTTON.BITMAP COMMENT  "The graphic for the button")) SUBITEM.SPECS  ((LABEL BUTTON  (
ITEM PICTURE  (PLACEMENT  (PTRANSLATE PLACEMENT  (NEW.POSITION  (MINUS BUTTON.BITMAP.EXTRA) 0)))  (
BITMAP PICTURE)))  (ITEM LINE.OF.TEXT  (PLACEMENT  (PICTURE.CENTER BUTTON))  (LINE LABEL)  (XALIGNMENT
  (QUOTE CENTER))  (FONT FONT))  (ITEM FLASHING.SENSITIVE.REGION  (PLACEMENT  (BOUNDING.BOX BUTTON))  
(ACTION.FORM  (BQUOTE  (CHANGE.CELL , CELL  (,  (COND  ((EQ ADD.OR.SUBTRACT  (QUOTE ADD))  (QUOTE 
IPLUS))  (T  (QUOTE IDIFFERENCE)))  (CELL.VALUE , CELL)  (CELL.VALUE , HOW.MUCH.TO.ADD.CELL))))))) 
CLASSES  (COMPOSITE))
(READ.ITEMTYPE NUMBER.BUTTON.ADD.VALUE 5)
(\TYPE ITEM.TYPE NAME NUMBER.BUTTON.ADD.VALUE COMMENT  
"A small button, with a label on it, which flashes when pushed, and does internal action" KIND 
COMPOSITE PARAMETERS  ((\TYPE PARAMETER NAME PLACEMENT TYPE  (POSITION) DEFAULT  (170 . 170) COMMENT  
"The grid position of the lower left corner of the button" GRID.TYPE  (LOCATION))  (\TYPE PARAMETER 
NAME LABEL TYPE  (STRING) DEFAULT 1 COMMENT  "The words above this button")  (\TYPE PARAMETER NAME 
FONT TYPE  (FONT) DEFAULT NIL COMMENT  "The font for the button label")  (\TYPE PARAMETER NAME CELL 
TYPE  (CELL) DEFAULT CELL.1 COMMENT  "The cell affected by this button")  (\TYPE PARAMETER NAME DIGIT 
TYPE  (INTEGER) DEFAULT 1 COMMENT  "The digit added to the number in the cell")  (\TYPE PARAMETER NAME
 PICTURE TYPE  (BITMAP.NAME) DEFAULT SIMPLE.BUTTON.BITMAP COMMENT  "The graphic for the button")) 
SUBITEM.SPECS  ((LABEL BUTTON  (ITEM PICTURE  (PLACEMENT  (PTRANSLATE PLACEMENT  (NEW.POSITION  (MINUS
 BUTTON.BITMAP.EXTRA) 0)))  (BITMAP PICTURE)))  (ITEM LINE.OF.TEXT  (PLACEMENT  (PICTURE.CENTER BUTTON
))  (LINE LABEL)  (XALIGNMENT  (QUOTE CENTER))  (FONT FONT))  (ITEM FLASHING.SENSITIVE.REGION  (
PLACEMENT  (BOUNDING.BOX BUTTON))  (ACTION.FORM  (BQUOTE  (CHANGE.CELL , CELL  (IPLUS  (CELL.VALUE , 
CELL) , DIGIT)))))) CLASSES  (COMPOSITE))
(READ.ITEMTYPE NUMBER.BUTTON.NEXT.DIGIT 5)
(\TYPE ITEM.TYPE NAME NUMBER.BUTTON.NEXT.DIGIT COMMENT  
"A small button, with a label on it, which flashes when pushed, and does internal action" KIND 
COMPOSITE PARAMETERS  ((\TYPE PARAMETER NAME PLACEMENT TYPE  (POSITION) DEFAULT  (170 . 170) COMMENT  
"The grid position of the lower left corner of the button" GRID.TYPE  (LOCATION))  (\TYPE PARAMETER 
NAME LABEL TYPE  (STRING) DEFAULT 1 COMMENT  "The words above this button")  (\TYPE PARAMETER NAME 
FONT TYPE  (FONT) DEFAULT NIL COMMENT  "The font for the label")  (\TYPE PARAMETER NAME CELL TYPE  (
CELL) DEFAULT CELL.1 COMMENT  "The cell affected by this button")  (\TYPE PARAMETER NAME DIGIT TYPE  (
INTEGER) DEFAULT 1 COMMENT  "The digit added to the number in the cell")  (\TYPE PARAMETER NAME 
PICTURE TYPE  (BITMAP.NAME) DEFAULT SIMPLE.BUTTON.BITMAP COMMENT  "The graphic for the button")) 
SUBITEM.SPECS  ((LABEL BUTTON  (ITEM PICTURE  (PLACEMENT  (PTRANSLATE PLACEMENT  (NEW.POSITION  (MINUS
 BUTTON.BITMAP.EXTRA) 0)))  (BITMAP PICTURE)))  (ITEM LINE.OF.TEXT  (PLACEMENT  (PICTURE.CENTER BUTTON
))  (LINE LABEL)  (XALIGNMENT  (QUOTE CENTER))  (FONT FONT))  (ITEM FLASHING.SENSITIVE.REGION  (
PLACEMENT  (BOUNDING.BOX BUTTON))  (ACTION.FORM  (LIST  (QUOTE NEXT.DIGIT.CELL) CELL  (KWOTE DIGIT))))
) CLASSES  (BUTTON COMPOSITE)  (QUOTE CLASSES)  (BUTTON))
(READ.ITEMTYPE NUMBER.PAD 5)
(\TYPE ITEM.TYPE NAME NUMBER.PAD COMMENT  "A classic Xerox number pad, putting its value in a cell" 
KIND COMPOSITE PARAMETERS  ((\TYPE PARAMETER NAME PLACEMENT TYPE  (POSITION) DEFAULT  (170 . 170) 
COMMENT  "The lower left corner of the number pad" GRID.TYPE  (LOCATION))  (\TYPE PARAMETER NAME CELL 
TYPE  (CELL) DEFAULT CELL.1 COMMENT  "The cell affected by pushing the pad's buttons")  (\TYPE 
PARAMETER NAME INITIAL.VALUE TYPE  (INTEGER) DEFAULT 1 COMMENT  
"How to initialize the cell when entering the frame")  (\TYPE PARAMETER NAME PICTURE TYPE  (
BITMAP.NAME) DEFAULT SIMPLE.BUTTON.BITMAP COMMENT  "The graphic for the button")  (\TYPE PARAMETER 
NAME FONT TYPE  (FONT) DEFAULT  (GACHA 10) COMMENT  "The font for the button labels")  (\TYPE 
PARAMETER NAME BORDER.THICKNESS TYPE  (INTEGER) DEFAULT 2 COMMENT  
"The thickness in screen points of the border")  (\TYPE PARAMETER NAME BORDER.COLOR TYPE  (SHADE) 
DEFAULT 65535 COMMENT  "The color of the border")  (\TYPE PARAMETER NAME PRINT.FONT TYPE  (FONT) 
DEFAULT  (HELVETICA 10) COMMENT  "The font of the print region")  (\TYPE PARAMETER NAME PRINT.MARGIN 
TYPE  (INTEGER) DEFAULT 2 COMMENT  "The margin of the printing region")  (\TYPE PARAMETER NAME 
PRINT.BACKGROUND TYPE  (SHADE) DEFAULT 0 COMMENT  "The background of the printing region")  (\TYPE 
PARAMETER NAME PRINT.SOURCE TYPE  (ONEOF  (INPUT INVERT MERGE TEXTURE)) DEFAULT INPUT COMMENT  
"How the texture is combined with the print")  (\TYPE PARAMETER NAME PRINT.OPERATION TYPE  (ONEOF  (
REPLACE PAINT INVERT ERASE)) DEFAULT REPLACE COMMENT  "How the print is combined with the background")
) SUBITEM.SPECS  ((ITEM VALUE.BAR  (PLACEMENT  (NEW.REGION  (PTRANSLATE PLACEMENT 0 204) 136 34))  (
CELL CELL)  (XALIGNMENT  (QUOTE CENTER))  (YALIGNMENT  (QUOTE CENTER))  (FONT PRINT.FONT)  (
BORDER.THICKNESS BORDER.THICKNESS)  (BORDER.COLOR BORDER.COLOR)  (PRINT.MARGIN PRINT.MARGIN)  (
PRINT.BACKGROUND PRINT.BACKGROUND)  (PRINT.SOURCE PRINT.SOURCE)  (PRINT.OPERATION PRINT.OPERATION))  (
ITEM INITIALIZATION  (PLACEMENT PLACEMENT)  (ACTION.FORM  (LIST  (QUOTE SET.CELL) CELL  (KWOTE 
INITIAL.VALUE))))  (ITEM NUMBER.BUTTON.NEXT.DIGIT  (LABEL 1)  (PLACEMENT  (TRANSLATE PLACEMENT 0 9))  
(CELL CELL)  (DIGIT 1)  (PICTURE PICTURE)  (FONT FONT))  (ITEM NUMBER.BUTTON.NEXT.DIGIT  (LABEL 2)  (
PLACEMENT  (TRANSLATE PLACEMENT 3 9))  (CELL CELL)  (DIGIT 2)  (PICTURE PICTURE)  (FONT FONT))  (ITEM 
NUMBER.BUTTON.NEXT.DIGIT  (LABEL 3)  (PLACEMENT  (TRANSLATE PLACEMENT 6 9))  (CELL CELL)  (DIGIT 3)  (
PICTURE PICTURE)  (FONT FONT))  (ITEM NUMBER.BUTTON.NEXT.DIGIT  (LABEL 4)  (PLACEMENT  (TRANSLATE 
PLACEMENT 0 6))  (CELL CELL)  (DIGIT 4)  (PICTURE PICTURE)  (FONT FONT))  (ITEM 
NUMBER.BUTTON.NEXT.DIGIT  (LABEL 5)  (PLACEMENT  (TRANSLATE PLACEMENT 3 6))  (CELL CELL)  (DIGIT 5)  (
PICTURE PICTURE)  (FONT FONT))  (ITEM NUMBER.BUTTON.NEXT.DIGIT  (LABEL 6)  (PLACEMENT  (TRANSLATE 
PLACEMENT 6 6))  (CELL CELL)  (DIGIT 6)  (PICTURE PICTURE)  (FONT FONT))  (ITEM 
NUMBER.BUTTON.NEXT.DIGIT  (LABEL 7)  (PLACEMENT  (TRANSLATE PLACEMENT 0 3))  (CELL CELL)  (DIGIT 7)  (
PICTURE PICTURE)  (FONT FONT))  (ITEM NUMBER.BUTTON.NEXT.DIGIT  (LABEL 8)  (PLACEMENT  (TRANSLATE 
PLACEMENT 3 3))  (CELL CELL)  (DIGIT 8)  (PICTURE PICTURE)  (FONT FONT))  (ITEM 
NUMBER.BUTTON.NEXT.DIGIT  (LABEL 9)  (PLACEMENT  (TRANSLATE PLACEMENT 6 3))  (CELL CELL)  (DIGIT 9)  (
PICTURE PICTURE)  (FONT FONT))  (ITEM GENERAL.BUTTON  (TEXT  (QUOTE  ("")))  (PLACEMENT PLACEMENT)  (
ACTION  (LIST  (QUOTE ACTION.DONOTHING)))  (PICTURE PICTURE)  (FONT FONT))  (ITEM 
NUMBER.BUTTON.NEXT.DIGIT  (LABEL 0)  (PLACEMENT  (TRANSLATE PLACEMENT 3 0))  (CELL CELL)  (DIGIT 0)  (
PICTURE PICTURE)  (FONT FONT))  (ITEM NUMBER.BUTTON  (LABEL  "C")  (PLACEMENT  (TRANSLATE PLACEMENT 6 
0))  (CELL CELL)  (DIGIT 0)  (PICTURE PICTURE)  (FONT FONT))) CLASSES  (BUTTON COMPOSITE)  (QUOTE 
CLASSES)  (BUTTON))
(READ.ITEMTYPE OFFPAGE.BUTTON 5)
(\TYPE ITEM.TYPE NAME OFFPAGE.BUTTON COMMENT  "A general button" KIND COMPOSITE PARAMETERS  ((\TYPE 
PARAMETER NAME PLACEMENT TYPE  (POSITION) DEFAULT  (170 . 170) COMMENT  
"The grid position of the lower left corner of the button" GRID.TYPE  (LOCATION))  (\TYPE PARAMETER 
NAME PICTURE TYPE  (BITMAP.NAME) DEFAULT OFFPAGE.BUTTON.BITMAP COMMENT  "The artwork for the button") 
 (\TYPE PARAMETER NAME LIST.OF.LINES TYPE  (LIST  (STRING)) DEFAULT  ("Return") COMMENT  
"The words associated with the button")  (\TYPE PARAMETER NAME TEXT.OFFSET TYPE  (OFFSET.VECTOR  (
PLACEMENT)) DEFAULT  (34 . 51) COMMENT  
"The offset of the words form the lower left corner of the button")  (\TYPE PARAMETER NAME 
HORIZONTAL.ALIGNMENT TYPE  (ONEOF  (LEFT CENTER RIGHT)) DEFAULT CENTER COMMENT  
"Horizontal alignment of text about reference point")  (\TYPE PARAMETER NAME VERTICAL.ALIGNMENT TYPE  
(ONEOF  (TOP CENTER BOTTOM)) DEFAULT BOTTOM COMMENT  
"Vertical alignment of text about the reference point")  (\TYPE PARAMETER NAME FONT TYPE  (FONT) 
DEFAULT NIL COMMENT  "Font in which to print the label")  (\TYPE PARAMETER NAME SOURCE TYPE  (ONEOF  (
INPUT)) DEFAULT INPUT COMMENT  "The source for BITBLT for the labels")  (\TYPE PARAMETER NAME 
OPERATION TYPE  (ONEOF  (REPLACE INVERT PAINT ERASE)) DEFAULT INVERT COMMENT  
"The operation for BITBLT for the labels")  (\TYPE PARAMETER NAME RESPONSE TYPE  (ONEOF  (NONE 
BLACK.WHILE.DEPRESSED INVERTS.WHEN.DEPRESSED)) DEFAULT BLACK.WHILE.DEPRESSED COMMENT  
"The response to being depressed")  (\TYPE PARAMETER NAME ACTION.FORM TYPE  (FORM) DEFAULT  (FRAME.POP
) COMMENT  "Action: (FRAME.PUSH frame), (FRAME.POP frame/NIL) or (FRAME.GOTO frame)")) SUBITEM.SPECS  
((ITEM GENERAL.BUTTON  (PLACEMENT PLACEMENT)  (PICTURE PICTURE)  (TEXT LIST.OF.LINES)  (TEXT.OFFSET 
TEXT.OFFSET)  (HORIZONTAL.ALIGNMENT HORIZONTAL.ALIGNMENT)  (VERTICAL.ALIGNMENT VERTICAL.ALIGNMENT)  (
FONT FONT)  (SOURCE SOURCE)  (OPERATION OPERATION)  (RESPONSE RESPONSE)  (ACTION ACTION.FORM))) OTHER 
 (FNS  ((1 CONVERT.OFFPAGE.BUTTON.OFFSETS))) CLASSES  (BUTTON COMPOSITE) VERSION 1)
(DEFINEQ

(CONVERT.OFFPAGE.BUTTON.OFFSETS
(LAMBDA (ITEM) (* edited: "16-Aug-84 10:07") (CONVERT.GRIDDED.OFFSETSQ ITEM HORIZONTAL.OFFSET 
VERTICAL.OFFSET TEXT.OFFSET)))
)
(READ.ITEMTYPE PRIVATE.DATA.STAMP 5)
(\TYPE ITEM.TYPE NAME PRIVATE.DATA.STAMP COMMENT  
"A bitmap that looks like a Xerox Private Data Stamp, which can be added to the screen as artwrok" 
KIND COMPOSITE PARAMETERS  ((\TYPE PARAMETER NAME PLACEMENT TYPE  (POSITION) DEFAULT  (100 . 100) 
COMMENT  "The lower left corner of the bitmap")  (\TYPE PARAMETER NAME STAMP.SIZE TYPE  (ONEOF  (SMALL
 LARGE)) DEFAULT SMALL COMMENT  "Whether the private data stamp is large or small")  (\TYPE PARAMETER 
NAME SOURCE TYPE  (ONEOF  (INPUT INVERT MERGE TEXTURE)) DEFAULT INPUT COMMENT  "Source for BITBLT")  (
\TYPE PARAMETER NAME OPERATION TYPE  (ONEOF  (REPLACE PAINT INVERT ERASE)) DEFAULT REPLACE COMMENT  
"Operation for BITBLT")  (\TYPE PARAMETER NAME TEXTURE TYPE  (SHADE) DEFAULT 65535 COMMENT  
"Texture for BITBLT")  (\TYPE PARAMETER NAME FIGURE-COLOR TYPE  (COLOR.NAME) DEFAULT BLACK COMMENT  
"The color corresponding to the figure")  (\TYPE PARAMETER NAME GROUND-COLOR TYPE  (COLOR.NAME) 
DEFAULT WHITE COMMENT  "The color corresponding to ground")) SUBITEM.SPECS  ((ITEM PICTURE  (PLACEMENT
 PLACEMENT)  (BITMAP  (COND  ((EQ STAMP.SIZE  (QUOTE LARGE))  (QUOTE PRIVATE.DATA.STAMP.LARGE))  (T  (
QUOTE PRIVATE.DATA.STAMP.SMALL))))  (SOURCE SOURCE)  (OPERATION OPERATION)  (TEXTURE TEXTURE)  (
FIGURE-COLOR FIGURE-COLOR)  (GROUND-COLOR GROUND-COLOR))) OTHER  (BITMAPS  ((PRIVATE.DATA.STAMP.SMALL 
 {(READBITMAP)(80 40
"OOOOOOOOOOOOOOOOOOOO"
"H@@@@@@@@@@@@@@@@@@A"
"KOOOOOOOOOOOOOOOOOOM"
"J@@@@@@@@@@@@@@@@@@E"
"J@@@@@@@@@@@@@@@@@@E"
"J@@@@@@@@@@@@@@@@@@E"
"J@@@GO@@@@@@@@@@@@@E"
"J@@BOOL@@@@@@@@@@@@E"
"J@@NOOMH@DB@@@@@@@@E"
"J@AOGOKL@BDFBIHHH@@E"
"J@COGOKN@AHICJDE@@@E"
"J@GOKOGO@AHOBBDB@@@E"
"J@OOKOGOHBDHBBDE@@@E"
"J@OOKNOO@DBGBAHHH@@E"
"JACOMNONL@@@@@@@@@@E"
"JALOMMOIL@@@@@@@@@@E"
"JAOCNMNGL@@@H@@@@@@E"
"JCOLNKIONGH@@@@B@@@E"
"JCOO@@GONDDJJBFGC@@E"
"JCOOLAOONDDNIDIBDH@E"
"JCOOLAOONGHHIDGBGH@E"
"JCOOL@OOND@HHHIBD@@E"
"JCOOBCCOND@HHHNKCH@E"
"JCOLOGLON@@@@@@@@@@E"
"JAOCMEOCL@@@@@@@@@@E"
"JANOMEOLL@@@@@@@@@@E"
"JAIOJBOO@GH@B@@@@@@E"
"J@GOJBOOHDDFGC@@@@@E"
"J@OODBOOHDDIBDH@@@@E"
"J@GODAGO@DDGBCH@@@@E"
"J@CNHAGN@DDIBDH@@@@E"
"J@ANH@KL@GHNKGD@@@@E"
"J@@NH@KH@@@@@@@@@@@E"
"J@@@H@J@@@@@@@@@@@@E"
"J@@@GO@@@@@@@@@@@@@E"
"J@@@@@@@@@@@@@@@@@@E"
"J@@@@@@@@@@@@@@@@@@E"
"KOOOOOOOOOOOOOOOOOOM"
"H@@@@@@@@@@@@@@@@@@A"
"OOOOOOOOOOOOOOOOOOOO")})  (PRIVATE.DATA.STAMP.LARGE  {(READBITMAP)(123 72
"@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@"
"COOOOOOOOOOOOOOOOOOOOOOOOOOOOON@"
"B@@@@@@@@@@@@@@@@@@@@@@@@@@@@@B@"
"B@@@@@@@@@@@@@@@@@@@@@@@@@@@@@B@"
"BGOOOOOOOOOOOOOOOOOOOOOOOOOOOOB@"
"BD@@@@@@@@@@@@@@@@@@@@@@@@@@@AB@"
"BD@@@@@@@@@@@@@@@@@@@@@@@@@@@AB@"
"BD@@@@@@@@@@@@@@@@@@@@@@@@@@@AB@"
"BD@@@@@@@@@@@@@@@@@@@@@@@@@@@AB@"
"BD@@@@@@@@@@@@@@@@@@@@@@@@@@@AB@"
"BD@@@@@@@@@@@@@@@@@@@@@@@@@@@AB@"
"BD@@@@@@@@@@@@@@@@@@@@@@@@@@@AB@"
"BD@@@@COOH@@@@@@@@@@@@@@@@@@@AB@"
"BD@@@DOOON@@@@@@@@@@@@@@@@@@@AB@"
"BD@@ALOOONF@@@@@@@@@@@@@@@@@@AB@"
"BD@@CLGOOLGH@@@FAH@@@@@@@@@@@AB@"
"BD@@GNCOOHOL@@@FAH@@@@@@@@@@@AB@"
"BD@@OOCOOION@@@CC@@@@@@@@@@@@AB@"
"BD@AOOAOOAOO@@@ANAOCNGLLL@@@@AB@"
"BD@COOIOOCOOH@@@LCAKFLFLL@@@@AB@"
"BD@GOOHONCOOL@@@LCAK@LFGH@@@@AB@"
"BD@GOOLONGOOL@@ANCOK@LFC@@@@@AB@"
"BD@OOOLGLGOON@@CCC@C@LFGH@@@@AB@"
"BD@OOONGLOOON@@FAKAK@LFLL@@@@AB@"
"BD@OOONGLOOON@@FAIOC@GLLL@@@@AB@"
"BD@AOOOCIOON@@@@@@@@@@@@@@@@@AB@"
"BD@@COOKKOO@@H@@@@@@@@@@@@@@@AB@"
"BDAL@OOICOL@GH@@@@@@@@@@@@@@@AB@"
"BDCO@CN@AO@AOL@@@@@@@@@@@@@@@AB@"
"BDCON@DGLH@OOL@@@@@@@@@@@@@@@AB@"
"BDCOOL@HB@GOOL@@@@@@@@@@@@@@@AB@"
"BDCOOOA@AAOOOL@@@@@@@@@@@@@@@AB@"
"BDCOOOJ@@KOOOL@OL@C@@@@@@@@@@AB@"
"BDCOOOJ@@KOOOL@LF@C@@@@AH@@@@AB@"
"BDCOOOJ@@KOOOL@LF@@@@@@AH@@@@AB@"
"BDCOOOJ@@KOOOL@LFOKFAINCNGL@@AB@"
"BDCOOOB@@IOOOL@LFMKFAKCAHLF@@AB@"
"BDCOOLA@A@GOOL@OLLCCC@CAHLF@@AB@"
"BDCOO@LHBF@OOL@L@LCCCAOAHON@@AB@"
"BDCOHCNDDOHAOL@L@LCABCCAHL@@@AB@"
"BDAL@OODEON@GH@L@LCANCCAHLF@@AB@"
"BDA@CONDDOOHAH@L@LC@LAMHNGL@@AB@"
"BD@@OONDDOON@@@@@@@@@@@@@@@@@AB@"
"BD@COOLDDGOOH@@@@@@@@@@@@@@@@AB@"
"BD@OOOLHBGOON@@@@@@@@@@@@@@@@AB@"
"BDAOOOLHBGOOO@@@@@@@@@@@@@@@@AB@"
"BDAOOOHHBCOOO@@@@@@@@@@@@@@@@AB@"
"BD@OOOI@ACOON@@@@@@@@@@@@@@@@AB@"
"BD@OOOI@ACOON@@@@@@@@@@@@@@@@AB@"
"BD@GOOI@ACOOL@@OL@@@@@@@@@@@@AB@"
"BD@COOB@@IOOH@@LF@@C@@@@@@@@@AB@"
"BD@AOOB@@IOO@@@LC@@C@@@@@@@@@AB@"
"BD@@ONB@@HON@@@LCCLGLO@@@@@@@AB@"
"BD@@GNB@@HOL@@@LCFFCAIH@@@@@@AB@"
"BD@@CNB@@HOH@@@LC@FC@AH@@@@@@AB@"
"BD@@ALD@@DG@@@@LCCNC@OH@@@@@@AB@"
"BD@@@DD@@DD@@@@LCFFCAIH@@@@@@AB@"
"BD@@@@G@AL@@@@@LFFFCAIH@@@@@@AB@"
"BD@@@@@ON@@@@@@OLCKALNL@@@@@@AB@"
"BD@@@@@@@@@@@@@@@@@@@@@@@@@@@AB@"
"BD@@@@@@@@@@@@@@@@@@@@@@@@@@@AB@"
"BD@@@@@@@@@@@@@@@@@@@@@@@@@@@AB@"
"BD@@@@@@@@@@@@@@@@@@@@@@@@@@@AB@"
"BD@@@@@@@@@@@@@@@@@@@@@@@@@@@AB@"
"BD@@@@@@@@@@@@@@@@@@@@@@@@@@@AB@"
"BD@@@@@@@@@@@@@@@@@@@@@@@@@@@AB@"
"BGOOOOOOOOOOOOOOOOOOOOOOOOOOOOB@"
"B@@@@@@@@@@@@@@@@@@@@@@@@@@@@@B@"
"B@@@@@@@@@@@@@@@@@@@@@@@@@@@@@B@"
"COOOOOOOOOOOOOOOOOOOOOOOOOOOOON@"
"@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@"
"@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@")}))) CLASSES  (COMPOSITE))
(READ.ITEMTYPE SEGMENT.LINE 5)
(\TYPE ITEM.TYPE NAME SEGMENT.LINE COMMENT  "A straight line between grid positions" KIND COMPOSITE 
PARAMETERS  ((\TYPE PARAMETER NAME PLACEMENT TYPE  (POSITION2) DEFAULT  (170 170 340 340 NIL) COMMENT 
 "The endpoints of the line" GRID.TYPE  (LOCATION2))  (\TYPE PARAMETER NAME WIDTH TYPE  (INTEGER) 
DEFAULT 4 COMMENT  "The width of the line in screen points")) SUBITEM.SPECS  ((ITEM STRAIGHT.LINE  (
PLACEMENT PLACEMENT)  (WIDTH WIDTH))) CLASSES  (COMPOSITE))
(READ.ITEMTYPE SENSITIVE.REGION.CHANGE.FRAME 5)
(\TYPE ITEM.TYPE NAME SENSITIVE.REGION.CHANGE.FRAME COMMENT  "A general button" KIND COMPOSITE 
PARAMETERS  ((\TYPE PARAMETER NAME PLACEMENT TYPE  (REGION) DEFAULT  (100 100 50 50) COMMENT  
"The bounds of the sensitive region")  (\TYPE PARAMETER NAME STACK.OPERATION TYPE  (ONEOF  (NO.CHANGE 
PUSH POP)) DEFAULT PUSH COMMENT  "How to change the stack of frames")  (\TYPE PARAMETER NAME 
INITIALIZATION TYPE  (ONEOF  (INITIALIZE DO.NOT.INITIALIZE)) DEFAULT INITIALIZE COMMENT  
"Whether or not to do initialization of the frame")  (\TYPE PARAMETER NAME FRAME TYPE  (FRAME) DEFAULT
 BEGIN COMMENT  "The frame to push to")) SUBITEM.SPECS  ((ITEM FLASHING.SENSITIVE.REGION  (PLACEMENT 
PLACEMENT)  (ACTION.FORM  (BUILD.STACK.OPERATION STACK.OPERATION FRAME INITIALIZATION)))) CLASSES  (
COMPOSITE))
(READ.ITEMTYPE SET.OF.ICONIC.BUTTONS 5)
(\TYPE ITEM.TYPE NAME SET.OF.ICONIC.BUTTONS COMMENT  
"A set of backlit icons, each of which is touch-sensitive" KIND COMPOSITE PARAMETERS  ((\TYPE 
PARAMETER NAME PLACEMENT TYPE  (POSITION) DEFAULT  (340 . 255) COMMENT  "Offset for the whole bunch" 
GRID.TYPE  (LOCATION))  (\TYPE PARAMETER NAME BUTTONS TYPE  (LIST  (STRUCTURE  ((ICON  (BITMAP.NAME)) 
 (VALUE  (CONSTANT))))) DEFAULT  ((EXAMPLE.BITMAP VALUE.1)  (EXAMPLE.BITMAP VALUE.2)) COMMENT  
"The buttons themselves")  (\TYPE PARAMETER NAME BUTTON.SPACING TYPE  (OFFSET.VECTOR) DEFAULT  (0 . 30
) COMMENT  "Between buttons")  (\TYPE PARAMETER NAME CELL TYPE  (CELL) DEFAULT CELL.1 COMMENT  
"The affected cell")  (\TYPE PARAMETER NAME INITIAL.VALUE TYPE  (CONSTANT) DEFAULT VALUE.1 COMMENT  
"An initial value for the cell")) SUBITEM.SPECS  ((FOREACH  (B IN BUTTONS)  (I FROM 0 BY 0)  (J FROM 0
 BY 0) DO  (LABEL BUTTON  (ITEM ICONIC.BUTTON  (PLACEMENT  (PTRANSLATE PLACEMENT I J))  (PICTURE  (CAR
 B))  (CELL CELL)  (VALUE  (CADR B))))  (IF  (NOT  (ZEROP  (CAR BUTTON.SPACING))) THEN  (INCREMENT I  
(REGION.WIDTH  (BOUNDING.BOX BUTTON)))  (INCREMENT I  (CAR BUTTON.SPACING)))  (IF  (NOT  (ZEROP  (CDR 
BUTTON.SPACING))) THEN  (INCREMENT J  (REGION.HEIGHT  (BOUNDING.BOX BUTTON)))  (INCREMENT J  (CDR 
BUTTON.SPACING))))  (ITEM INITIALIZATION  (PLACEMENT PLACEMENT)  (ACTION.FORM  (LIST  (QUOTE SET.CELL)
 CELL  (KWOTE INITIAL.VALUE))))) OTHER  (FNS  ((1 CONVERT.SET.OF.ICONIC.BUTTONS.OFFSETS))) CLASSES  (
BUTTON COMPOSITE) VERSION 1)
(DEFINEQ

(CONVERT.SET.OF.ICONIC.BUTTONS.OFFSETS
  [LAMBDA (ITEM)                                             (* PH "22-Aug-84 11:10")
    (CONVERT.NONGRIDDED.OFFSETS ITEM (QUOTE HORIZONTAL.SPACING)
				(QUOTE VERTICAL.SPACING)
				(QUOTE BUTTON.SPACING])
)
(READ.ITEMTYPE SET.OF.LABELLED.BACKLIT.BUTTONS 5)
(\TYPE ITEM.TYPE NAME SET.OF.LABELLED.BACKLIT.BUTTONS COMMENT  
"A set of backlit buttons which all affect the same cell, thus interacting" KIND COMPOSITE PARAMETERS 
 ((\TYPE PARAMETER NAME PLACEMENT TYPE  (POSITION) DEFAULT  (340 . 255) COMMENT  
"Offset for the whole bunch" GRID.TYPE  (LOCATION))  (\TYPE PARAMETER NAME BUTTONS TYPE  (LIST  (
STRUCTURE  ((TEXT  (LIST  (STRING)))  (VALUE  (CONSTANT))))) DEFAULT  ((("LABEL 1") VALUE.1)  ((
"LABEL 2") VALUE.2)) COMMENT  "The buttons themselves")  (\TYPE PARAMETER NAME PICTURE TYPE  (
BITMAP.NAME) DEFAULT SIMPLE.BUTTON.BITMAP COMMENT  "The graphic for the button")  (\TYPE PARAMETER 
NAME BUTTON.SPACING TYPE  (OFFSET.VECTOR) DEFAULT  (0 . 51) COMMENT  "Between buttons")  (\TYPE 
PARAMETER NAME TEXT.DISPLACEMENT TYPE  (OFFSET.VECTOR) DEFAULT  (-34 . 17) COMMENT  
"Offset for the text from the buttons")  (\TYPE PARAMETER NAME HORIZONTAL.ALIGNMENT TYPE  (ONEOF  (
LEFT CENTER RIGHT)) DEFAULT LEFT COMMENT  "Horizontal alignment of the text")  (\TYPE PARAMETER NAME 
VERTICAL.ALIGNMENT TYPE  (ONEOF  (TOP CENTER BOTTOM)) DEFAULT TOP COMMENT  
"Vertical alignment of the text")  (\TYPE PARAMETER NAME FONT TYPE  (FONT) DEFAULT NIL COMMENT  
"The font in which to print the labels")  (\TYPE PARAMETER NAME CELL TYPE  (CELL) DEFAULT CELL.1 
COMMENT  "The affected cell")  (\TYPE PARAMETER NAME INITIAL.VALUE TYPE  (CONSTANT) DEFAULT VALUE.1 
COMMENT  "An initial value for the cell")) SUBITEM.SPECS  ((FOREACH  (BUTTON IN BUTTONS)  (I FROM 0) 
DO  (ITEM BACKLIT.BUTTON  (PLACEMENT  (PTRANSLATE PLACEMENT  (NEW.POSITION  (ITIMES I  (CAR 
BUTTON.SPACING))  (ITIMES I  (CDR BUTTON.SPACING)))))  (PICTURE PICTURE)  (TEXT  (CAR BUTTON))  (
TEXT.OFFSET TEXT.DISPLACEMENT)  (HORIZONTAL.ALIGNMENT HORIZONTAL.ALIGNMENT)  (VERTICAL.ALIGNMENT 
VERTICAL.ALIGNMENT)  (FONT FONT)  (CELL CELL)  (VALUE  (CADR BUTTON))))  (ITEM INITIALIZATION  (
PLACEMENT PLACEMENT)  (ACTION.FORM  (LIST  (QUOTE SET.CELL) CELL  (KWOTE INITIAL.VALUE))))) OTHER  (
FNS  ((1 CONVERT.SET.OF.LABELLED.BACKLIT.BUTTONS.OFFSETS))) CLASSES  (BUTTON COMPOSITE) VERSION 1)
(DEFINEQ

(CONVERT.SET.OF.LABELLED.BACKLIT.BUTTONS.OFFSETS
(LAMBDA (ITEM) (* edited: "16-Aug-84 13:16") (CONVERT.GRIDDED.OFFSETSQ ITEM HORIZONTAL.SPACING 
VERTICAL.SPACING BUTTON.SPACING) (CONVERT.GRIDDED.OFFSETSQ ITEM TEXT.DISPLACEMENT TEXT.DISPLACEMENT.↑ 
TEXT.DISPLACEMENT)))
)
(READ.ITEMTYPE SET.OF.NUMBER.BUTTONS 5)
(\TYPE ITEM.TYPE NAME SET.OF.NUMBER.BUTTONS COMMENT  "A set of buttons which put numbers in a cell" 
KIND COMPOSITE PARAMETERS  ((\TYPE PARAMETER NAME PLACEMENT TYPE  (POSITION) DEFAULT  (340 . 255) 
COMMENT  "Offset for the whole bunch" GRID.TYPE  (LOCATION))  (\TYPE PARAMETER NAME LOWEST.NUMBER TYPE
  (INTEGER) DEFAULT 1 COMMENT  "The lowest number for the buttons")  (\TYPE PARAMETER NAME 
HIGHEST.NUMBER TYPE  (INTEGER) DEFAULT 10 COMMENT  "The lowest number for the buttons")  (\TYPE 
PARAMETER NAME PICTURE TYPE  (BITMAP.NAME) DEFAULT SIMPLE.BUTTON.BITMAP COMMENT  
"The graphic for the button")  (\TYPE PARAMETER NAME BUTTON.SPACING TYPE  (OFFSET.VECTOR) DEFAULT  (0
 . 34) COMMENT  "Between buttons")  (\TYPE PARAMETER NAME TEXT.DISPLACEMENT TYPE  (OFFSET.VECTOR) 
DEFAULT  (17 . 17) COMMENT  "Offset for the text")  (\TYPE PARAMETER NAME HORIZONTAL.ALIGNMENT TYPE  (
ONEOF  (LEFT CENTER RIGHT)) DEFAULT CENTER COMMENT  "Horizontal alignment of the text")  (\TYPE 
PARAMETER NAME VERTICAL.ALIGNMENT TYPE  (ONEOF  (TOP CENTER BOTTOM)) DEFAULT CENTER COMMENT  
"Vertical alignment of the text")  (\TYPE PARAMETER NAME FONT TYPE  (FONT) DEFAULT NIL COMMENT  
"The font in which to print the labels")  (\TYPE PARAMETER NAME CELL TYPE  (CELL) DEFAULT CELL.1 
COMMENT  "The affected cell")  (\TYPE PARAMETER NAME INITIAL.VALUE TYPE  (CONSTANT) DEFAULT 1 COMMENT 
 "An initial value for the cell")) SUBITEM.SPECS  ((FOREACH  (I FROM LOWEST.NUMBER TO HIGHEST.NUMBER) 
DO  (ITEM NUMBER.BUTTON  (PLACEMENT  (PTRANSLATE PLACEMENT  (NEW.POSITION  (ITIMES  (IDIFFERENCE I 
LOWEST.NUMBER)  (CAR BUTTON.SPACING))  (ITIMES  (IDIFFERENCE I LOWEST.NUMBER)  (CDR BUTTON.SPACING))))
)  (PICTURE PICTURE)  (LABEL I)  (FONT FONT)  (CELL CELL)  (DIGIT I)))  (ITEM INITIALIZATION  (
PLACEMENT PLACEMENT)  (ACTION.FORM  (LIST  (QUOTE SET.CELL) CELL  (KWOTE INITIAL.VALUE))))) OTHER  (
FNS  ((1 CONVERT.SET.OF.NUMBER.BUTTONS.OFFSETS))) CLASSES  (COMPOSITE) VERSION 1)
(DEFINEQ

(CONVERT.SET.OF.NUMBER.BUTTONS.OFFSETS
(LAMBDA (ITEM) (* edited: "16-Aug-84 13:16") (CONVERT.GRIDDED.OFFSETSQ ITEM HORIZONTAL.SPACING 
VERTICAL.SPACING BUTTON.SPACING) (CONVERT.GRIDDED.OFFSETSQ ITEM TEXT.DISPLACEMENT TEXT.DISPLACEMENT.↑ 
TEXT.DISPLACEMENT)))
)
(READ.ITEMTYPE TOUCH.AREA 5)
(\TYPE ITEM.TYPE NAME TOUCH.AREA COMMENT  "A bordered sensitive region" KIND COMPOSITE PARAMETERS  ((
\TYPE PARAMETER NAME PLACEMENT TYPE  (REGION) DEFAULT  (100 100 30 30) COMMENT  
"The region of the touch area")  (\TYPE PARAMETER NAME WIDTH TYPE  (INTEGER) DEFAULT 4 COMMENT  
"The width of the shaded border")  (\TYPE PARAMETER NAME SHADE TYPE  (SHADE) DEFAULT 32768 COMMENT  
"The grey shade of the sensitive region")  (\TYPE PARAMETER NAME OPERATION TYPE  (ONEOF  (REPLACE 
PAINT INVERT ERASE)) DEFAULT PAINT COMMENT  "The operation for BITBLT")  (\TYPE PARAMETER NAME ACTION 
TYPE  (FORM) DEFAULT  (ACTION.DONOTHING) COMMENT  "The action to be taken when this region is touched"
)) SUBITEM.SPECS  ((ITEM INVERTING.SENSITIVE.REGION  (PLACEMENT PLACEMENT)  (ACTION.FORM ACTION))  (
ITEM BORDER  (PLACEMENT PLACEMENT)  (THICKNESS WIDTH)  (OPERATION OPERATION)  (COLOR SHADE))) CLASSES 
 (COMPOSITE))
(READ.ITEMTYPE UP.DOWN.BUTTONS 5)
(\TYPE ITEM.TYPE NAME UP.DOWN.BUTTONS COMMENT  "Pair of Up/Down Buttons for Thermometer controls" KIND
 COMPOSITE PARAMETERS  ((\TYPE PARAMETER NAME PLACEMENT TYPE  (POSITION) DEFAULT  (170 . 170) COMMENT 
 "The location of this item" GRID.TYPE  (LOCATION))  (\TYPE PARAMETER NAME CELL TYPE  (CELL) DEFAULT 
CELL.1 COMMENT  "The cell affected")  (\TYPE PARAMETER NAME BUTTON.SPACING TYPE  (OFFSET.VECTOR) 
DEFAULT  (0 . 51) COMMENT  "Between buttons")  (\TYPE PARAMETER NAME UP.PICTURE TYPE  (BITMAP.NAME) 
DEFAULT UP.BUTTON COMMENT  "Bitmap picture for Up button")  (\TYPE PARAMETER NAME DOWN.PICTURE TYPE  (
BITMAP.NAME) DEFAULT DOWN.BUTTON COMMENT  "Bitmap picture for Down button")  (\TYPE PARAMETER NAME 
MAXIMUM TYPE  (INTEGER) DEFAULT 10 COMMENT  "Maximum value of cell")  (\TYPE PARAMETER NAME MINIMUM 
TYPE  (INTEGER) DEFAULT 1 COMMENT  "Minimum value of cell")  (\TYPE PARAMETER NAME INCREMENT TYPE  (
INTEGER) DEFAULT 1 COMMENT  "The step size for each activation")  (\TYPE PARAMETER NAME AT.LIMIT TYPE 
 (ONEOF  (STICK.AT.LIMIT WRAP.AROUND)) DEFAULT STICK.AT.LIMIT COMMENT  
"What to do when you reach the limit")  (\TYPE PARAMETER NAME RATE TYPE  (INTEGER) DEFAULT 300 COMMENT
  "Delay in milliseconds")) SUBITEM.SPECS  ((ITEM GENERAL.BUTTON  (PLACEMENT  (PTRANSLATE PLACEMENT 
BUTTON.SPACING))  (TEXT  (LIST  ""))  (PICTURE UP.PICTURE)  (ACTION  (LIST  (QUOTE INCREASE.CELL)  (
KWOTE CELL) INCREMENT MAXIMUM  (COND  ((EQ AT.LIMIT  (QUOTE STICK.AT.LIMIT)) NIL)  (T MINIMUM)) RATE))
)  (ITEM GENERAL.BUTTON  (PLACEMENT PLACEMENT)  (TEXT  (LIST  ""))  (PICTURE DOWN.PICTURE)  (ACTION  (
LIST  (QUOTE DECREASE.CELL)  (KWOTE CELL) INCREMENT MINIMUM  (COND  ((EQ AT.LIMIT  (QUOTE 
STICK.AT.LIMIT)) NIL)  (T MAXIMUM)) RATE)))) OTHER  (FNS  ((1 CONVERT.UP.DOWN.BUTTONS.OFFSETS)) 
BITMAPS  ((UP.BUTTON  {(READBITMAP)(40 40
"OOOOOOOOM@@@"
"OOOOOOOOMH@@"
"OOOOOOOOML@@"
"N@@@@@@AMN@@"
"N@@@@@@AMO@@"
"N@@@@@@AMO@@"
"N@@@@@@AMO@@"
"N@@@@@@AMO@@"
"N@@@@@@AMO@@"
"N@@@L@@AMO@@"
"N@@AN@@AMO@@"
"N@@CO@@AMO@@"
"N@@GOH@AMO@@"
"N@@OCL@AMO@@"
"N@ANAN@AMO@@"
"N@CL@O@AMO@@"
"N@GH@GHAMO@@"
"N@O@@CLAMO@@"
"NAN@@ANAMO@@"
"NCL@@@OAMO@@"
"NGH@@@GIMO@@"
"NG@@@@CIMO@@"
"NF@@@@AIMO@@"
"ND@@@@@IMO@@"
"N@@@@@@AMO@@"
"N@@@@@@AMO@@"
"N@@@@@@AMO@@"
"N@@@@@@AMO@@"
"N@@@@@@AMO@@"
"N@@@@@@AMO@@"
"N@@@@@@AMO@@"
"OOOOOOOOMO@@"
"OOOOOOOOMO@@"
"OOOOOOOOMO@@"
"@@@@@@@@@O@@"
"OOOOOOOOLG@@"
"GOOOOOOONC@@"
"COOOOOOOOA@@"
"AOOOOOOOOH@@"
"@OOOOOOOOL@@")})  (DOWN.BUTTON  {(READBITMAP)(40 40
"OOOOOOOOM@@@"
"OOOOOOOOMH@@"
"OOOOOOOOML@@"
"N@@@@@@AMN@@"
"N@@@@@@AMO@@"
"N@@@@@@AMO@@"
"N@@@@@@AMO@@"
"N@@@@@@AMO@@"
"N@@@@@@AMO@@"
"N@@@@@@AMO@@"
"ND@@@@@IMO@@"
"NF@@@@AIMO@@"
"NG@@@@CIMO@@"
"NGH@@@GIMO@@"
"NCL@@@OAMO@@"
"NAN@@ANAMO@@"
"N@O@@CLAMO@@"
"N@GH@GHAMO@@"
"N@CL@O@AMO@@"
"N@ANAN@AMO@@"
"N@@OCL@AMO@@"
"N@@GOH@AMO@@"
"N@@CO@@AMO@@"
"N@@AN@@AMO@@"
"N@@@L@@AMO@@"
"N@@@@@@AMO@@"
"N@@@@@@AMO@@"
"N@@@@@@AMO@@"
"N@@@@@@AMO@@"
"N@@@@@@AMO@@"
"N@@@@@@AMO@@"
"OOOOOOOOMO@@"
"OOOOOOOOMO@@"
"OOOOOOOOMO@@"
"@@@@@@@@@O@@"
"OOOOOOOOLG@@"
"GOOOOOOONC@@"
"COOOOOOOOA@@"
"AOOOOOOOOH@@"
"@OOOOOOOOL@@")}))) CLASSES  (COMPOSITE BUTTON) VERSION 1)
(DEFINEQ

(CONVERT.UP.DOWN.BUTTONS.OFFSETS
(LAMBDA (ITEM) (* edited: "16-Aug-84 12:59") (CONVERT.GRIDDED.OFFSETSQ ITEM HORIZONTAL.SPACING 
VERTICAL.SPACING BUTTON.SPACING)))
)
(READ.ITEMTYPE VALUE.BAR 5)
(\TYPE ITEM.TYPE NAME VALUE.BAR COMMENT  "A bordered region through which to view a cell" KIND 
COMPOSITE PARAMETERS  ((\TYPE PARAMETER NAME PLACEMENT TYPE  (REGION) DEFAULT  (170 170 136 34) 
COMMENT  "The boundaries of the viewing area" GRID.TYPE  (GRIDREGION))  (\TYPE PARAMETER NAME CELL 
TYPE  (CELL) DEFAULT CELL.1 COMMENT  "The underlying cell represented by the value bar")  (\TYPE 
PARAMETER NAME XALIGNMENT TYPE  (ONEOF  (LEFT CENTER RIGHT)) DEFAULT CENTER COMMENT  
"Horizontal alignment")  (\TYPE PARAMETER NAME YALIGNMENT TYPE  (ONEOF  (TOP CENTER BOTTOM)) DEFAULT 
CENTER COMMENT  "Vertical alignment")  (\TYPE PARAMETER NAME FONT TYPE  (FONT) DEFAULT  (GACHA 10) 
COMMENT  "The font to print the value in")  (\TYPE PARAMETER NAME BORDER.THICKNESS TYPE  (INTEGER) 
DEFAULT 2 COMMENT  "The thickness in screen points of the border")  (\TYPE PARAMETER NAME BORDER.COLOR
 TYPE  (SHADE) DEFAULT 65535 COMMENT  "The color of the border")  (\TYPE PARAMETER NAME 
BORDER.OPERATION TYPE  (ONEOF  (REPLACE PAINT INVERT ERASE)) DEFAULT REPLACE COMMENT  
"How the border is combined with the screen")  (\TYPE PARAMETER NAME PRINT.MARGIN TYPE  (INTEGER) 
DEFAULT 2 COMMENT  "The margin of the printing region")  (\TYPE PARAMETER NAME PRINT.BACKGROUND TYPE  
(SHADE) DEFAULT 42405 COMMENT  "The background of the printing region")  (\TYPE PARAMETER NAME 
PRINT.SOURCE TYPE  (ONEOF  (INPUT INVERT)) DEFAULT INPUT COMMENT  
"How the texture is combined with the print")  (\TYPE PARAMETER NAME PRINT.OPERATION TYPE  (ONEOF  (
REPLACE PAINT INVERT ERASE)) DEFAULT REPLACE COMMENT  "How the print is combined with the background")
) SUBITEM.SPECS  ((IF  (NEQ BORDER.THICKNESS 0) THEN  (ITEM BORDER  (PLACEMENT PLACEMENT)  (THICKNESS 
BORDER.THICKNESS)  (OPERATION BORDER.OPERATION)  (COLOR BORDER.COLOR)))  (ITEM PRINT.REGION  (
PLACEMENT  (REGION.WITHIN.BORDER PLACEMENT BORDER.THICKNESS))  (CELL CELL)  (XALIGNMENT XALIGNMENT)  (
YALIGNMENT YALIGNMENT)  (FONT FONT)  (MARGIN PRINT.MARGIN)  (BACKGROUND PRINT.BACKGROUND)  (SOURCE 
PRINT.SOURCE)  (OPERATION PRINT.OPERATION))) CLASSES  (COMPOSITE))
(READ.ITEMTYPE VERTICAL.BUTTONS 5)
(\TYPE ITEM.TYPE NAME VERTICAL.BUTTONS COMMENT  
"A set of backlit buttons which all affect the same cell, thus interacting" KIND COMPOSITE PARAMETERS 
 ((\TYPE PARAMETER NAME PLACEMENT TYPE  (POSITION) DEFAULT  (340 . 255) COMMENT  
"Offset for the whole bunch" GRID.TYPE  (LOCATION))  (\TYPE PARAMETER NAME BUTTONS TYPE  (LIST  (
STRUCTURE  ((TEXT  (LIST  (STRING)))  (VALUE  (CONSTANT))))) DEFAULT  ((("LABEL 1") VALUE.1)  ((
"LABEL 2") VALUE2)) COMMENT  "A list of label/value pairs describing the buttons")  (\TYPE PARAMETER 
NAME PICTURE TYPE  (BITMAP.NAME) DEFAULT SIMPLE.BUTTON.BITMAP COMMENT  "The graphic for the buttons") 
 (\TYPE PARAMETER NAME VERTICAL.SPACING TYPE  (INTEGER) DEFAULT 51 COMMENT  "Between buttons")  (\TYPE
 PARAMETER NAME TEXT.DISPLACEMENT TYPE  (OFFSET.VECTOR) DEFAULT  (-34 . 17) COMMENT  
"Offset for the text")  (\TYPE PARAMETER NAME HORIZONTAL.ALIGNMENT TYPE  (ONEOF  (LEFT CENTER RIGHT)) 
DEFAULT LEFT COMMENT  "Horizontal alignment of the text")  (\TYPE PARAMETER NAME VERTICAL.ALIGNMENT 
TYPE  (ONEOF  (TOP CENTER BOTTOM)) DEFAULT TOP COMMENT  "Vertical alignment of the text")  (\TYPE 
PARAMETER NAME FONT TYPE  (FONT) DEFAULT NIL COMMENT  "The font in which to print the labels")  (\TYPE
 PARAMETER NAME CELL TYPE  (CELL) DEFAULT CELL.1 COMMENT  "The affected cell")  (\TYPE PARAMETER NAME 
INITIAL.VALUE TYPE  (CONSTANT) DEFAULT VALUE.1 COMMENT  "An initial value for the cell")) 
SUBITEM.SPECS  ((ITEM SET.OF.LABELLED.BACKLIT.BUTTONS  (PLACEMENT PLACEMENT)  (BUTTONS BUTTONS)  (
PICTURE PICTURE)  (BUTTON.SPACING  (NEW.POSITION 0 VERTICAL.SPACING))  (TEXT.DISPLACEMENT 
TEXT.DISPLACEMENT)  (HORIZONTAL.ALIGNMENT HORIZONTAL.ALIGNMENT)  (VERTICAL.ALIGNMENT 
VERTICAL.ALIGNMENT)  (FONT FONT)  (CELL CELL)  (INITIAL.VALUE INITIAL.VALUE))) OTHER  (FNS  ((1 
CONVERT.VERTICAL.BUTTONS.OFFSETS))) CLASSES  (BUTTON COMPOSITE) VERSION 1)
(DEFINEQ

(CONVERT.VERTICAL.BUTTONS.OFFSETS
(LAMBDA (ITEM) (* edited: "16-Aug-84 13:27") (PROG NIL (CONVERT.GRIDDED.OFFSET ITEM (QUOTE 
VERTICAL.SPACING)) (CONVERT.GRIDDED.OFFSETSQ ITEM TEXT.DISPLACEMENT TEXT.DISPLACEMENT.↑ 
TEXT.DISPLACEMENT))))
)
(READ.ITEMTYPE VERTICAL.BUTTONS.SPECIAL.FEATURE 5)
(\TYPE ITEM.TYPE NAME VERTICAL.BUTTONS.SPECIAL.FEATURE COMMENT  
"A set of backlit buttons which all affect the same cell, thus interacting" KIND COMPOSITE PARAMETERS 
 ((\TYPE PARAMETER NAME PLACEMENT TYPE  (POSITION) DEFAULT  (170 . 170) COMMENT  
"Offset for the whole bunch" GRID.TYPE  (LOCATION))  (\TYPE PARAMETER NAME BUTTONS TYPE  (LIST  (
STRUCTURE  ((TEXT  (LIST  (STRING)))  (VALUE  (CONSTANT))))) DEFAULT  ((("LABEL 1") VALUE.1)  ((
"LABEL 2") VALUE.2)) COMMENT  "The buttons themselves")  (\TYPE PARAMETER NAME NORMAL.FEATURE TYPE  (
CONSTANT) DEFAULT  (SEE INITIAL.VALUE) COMMENT  "The non-special case")  (\TYPE PARAMETER NAME PICTURE
 TYPE  (BITMAP.NAME) DEFAULT SIMPLE.BUTTON.BITMAP COMMENT  "The picture to use for the buttons")  (
\TYPE PARAMETER NAME VERTICAL.SPACING TYPE  (INTEGER) DEFAULT 51 COMMENT  "Between buttons")  (\TYPE 
PARAMETER NAME TEXT.DISPLACEMENT TYPE  (OFFSET.VECTOR) DEFAULT  (-34 . 17) COMMENT  "Offset for text")
  (\TYPE PARAMETER NAME HORIZONTAL.ALIGNMENT TYPE  (ONEOF  (LEFT CENTER RIGHT)) DEFAULT RIGHT COMMENT 
 "Horizontal alignment of label text")  (\TYPE PARAMETER NAME VERTICAL.ALIGNMENT TYPE  (ONEOF  (TOP 
CENTER BOTTOM)) DEFAULT CENTER COMMENT  "Horizontal alignment of label text")  (\TYPE PARAMETER NAME 
FONT TYPE  (FONT) DEFAULT NIL COMMENT  "The font for the labels")  (\TYPE PARAMETER NAME CELL TYPE  (
CELL) DEFAULT CELL.1 COMMENT  "The affected cell")  (\TYPE PARAMETER NAME INITIAL.VALUE TYPE  (
CONSTANT) DEFAULT VALUE.1 COMMENT  "An initial value for the cell")) SUBITEM.SPECS  ((FOREACH  (BUTTON
 IN BUTTONS)  (I FROM 0 BY 0) DO  (IF  (NEQ  (CADR BUTTON) NORMAL.FEATURE) THEN  (ITEM 
BACKLIT.BUTTON.SPECIAL.FEATURE  (PLACEMENT  (PTRANSLATE PLACEMENT 0  (ITIMES I VERTICAL.SPACING)))  (
PICTURE PICTURE)  (TEXT  (CAR BUTTON))  (TEXT.OFFSET TEXT.DISPLACEMENT)  (HORIZONTAL.ALIGNMENT 
HORIZONTAL.ALIGNMENT)  (VERTICAL.ALIGNMENT VERTICAL.ALIGNMENT)  (FONT FONT)  (CELL CELL)  (VALUE  (
CADR BUTTON))  (INITIAL.VALUE NORMAL.FEATURE))  (INCREMENT I)))  (ITEM INITIALIZATION  (PLACEMENT 
PLACEMENT)  (ACTION.FORM  (LIST  (QUOTE SET.CELL) CELL  (KWOTE INITIAL.VALUE))))) OTHER  (FNS  ((1 
CONVERT.VERTICAL.BUTTONS.SPECIAL.FEATURE.OFFSETS))) CLASSES  (BUTTON COMPOSITE) VERSION 1)
(DEFINEQ

(CONVERT.VERTICAL.BUTTONS.SPECIAL.FEATURE.OFFSETS
(LAMBDA (ITEM) (* edited: "16-Aug-84 13:27") (PROG NIL (CONVERT.GRIDDED.OFFSET ITEM (QUOTE 
VERTICAL.SPACING)) (CONVERT.GRIDDED.OFFSETSQ ITEM TEXT.DISPLACEMENT TEXT.DISPLACEMENT.↑ 
TEXT.DISPLACEMENT))))
)
(COMPILE.INTERNAL.FNS.IF.NECESSARY)

(PUTPROPS COMPOSITE-ITEMTYPES FILETYPE DON'TCOMPILE)
(DECLARE: DONTEVAL@LOAD DOEVAL@COMPILE DONTCOPY COMPILERVARS 

(ADDTOVAR NLAMA )

(ADDTOVAR NLAML ACTON.CASCADE.BUTTON ACTON.BACKLIT.BUTTON.SPECIAL.FEATURE)

(ADDTOVAR LAMA )
)
(DECLARE: DONTCOPY
  (FILEMAP (NIL (3491 3664 (CONVERT.BACKLIT.BUTTON.OFFSETS 3501 . 3662)) (5800 6199 (
ACTON.BACKLIT.BUTTON.SPECIAL.FEATURE 5810 . 6018) (CONVERT.BACKLIT.BUTTON.SPECIAL.FEATURE.OFFSETS 6020
 . 6197)) (9760 9925 (CONVERT.BUTTON.OFFSETS 9770 . 9923)) (16223 16616 (CONVERT.CASCADE.OFFSETS 16233
 . 16614)) (18429 19429 (ACTON.CASCADE.BUTTON 18439 . 18735) (INCREMENT.CASCADE.BUTTON 18737 . 19427))
 (21156 21332 (CONVERT.CASCADE.INDICATOR.OFFSETS 21166 . 21330)) (22827 22999 (
CONVERT.CASCADE.LIGHT.OFFSETS 22837 . 22997)) (24927 25114 (CONVERT.CASCADE.UP.DOWN.BUTTONS.OFFSETS 
24937 . 25112)) (28528 28706 (CONVERT.CHANGE.FRAME.BUTTON.OFFSETS 28538 . 28704)) (29600 29849 (
ACTON.COMPUTER 29610 . 29847)) (33828 34002 (CONVERT.EXTERNAL.BUTTON.OFFSETS 33838 . 34000)) (37179 
37352 (CONVERT.GENERAL.BUTTON.OFFSETS 37189 . 37350)) (39306 39562 (CONVERT.HORIZONTAL.BUTTONS.OFFSETS
 39316 . 39560)) (44204 44520 (CONVERT.INVERTING.CASCADE.OFFSETS 44214 . 44518)) (46161 46343 (
CONVERT.INVERTING.CASCADE.LIGHT.OFFSETS 46171 . 46341)) (49830 50343 (
CONVERT.INVERTING.CASCADE.TWO.BUTTONS.OFFSETS 49840 . 50341)) (53156 53587 (
CONVERT.INVERTING.ICONIC.CASCADE.TWO.BUTTONS.OFFSETS 53166 . 53585)) (54904 56104 (
ANALYZE.LINE.OF.TEXT 54914 . 56102)) (67863 68036 (CONVERT.OFFPAGE.BUTTON.OFFSETS 67873 . 68034)) (
75845 76110 (CONVERT.SET.OF.ICONIC.BUTTONS.OFFSETS 75855 . 76108)) (78244 78528 (
CONVERT.SET.OF.LABELLED.BACKLIT.BUTTONS.OFFSETS 78254 . 78526)) (80521 80795 (
CONVERT.SET.OF.NUMBER.BUTTONS.OFFSETS 80531 . 80793)) (84873 85052 (CONVERT.UP.DOWN.BUTTONS.OFFSETS 
84883 . 85050)) (89082 89334 (CONVERT.VERTICAL.BUTTONS.OFFSETS 89092 . 89332)) (91624 91892 (
CONVERT.VERTICAL.BUTTONS.SPECIAL.FEATURE.OFFSETS 91634 . 91890)))))
STOP