Home » Archimedes archive » Acorn User » Acorn User - Shareware Collection (1993).adf » Zap » !Zap/Docs/E-Menu

!Zap/Docs/E-Menu

This website contains an archive of files for the Acorn Electron, BBC Micro, Acorn Archimedes, Commodore 16 and Commodore 64 computers, which Dominic Ford has rescued from his private collection of floppy disks and cassettes.

Some of these files were originally commercial releases in the 1980s and 1990s, but they are now widely available online. I assume that copyright over them is no longer being asserted. If you own the copyright and would like files to be removed, please contact me.

Tape/disk: Home » Archimedes archive » Acorn User » Acorn User - Shareware Collection (1993).adf » Zap
Filename: !Zap/Docs/E-Menu
Read OK:
File size: 0D75 bytes
Load address: 0000
Exec address: 0000
File contents
*************************************************************************
* >E-Menu	Documents zaps internal menu format			*
*************************************************************************

If you are writing your own mode then you may add your own menu off the the
mode menu. The current modes have a writable icon of the form 'text width'
for example.

You are asked to give an offset to a 'zap menu structure' at offset e_menu in
the mode table. This file documents the format of this structure. It is of
the form:

	#&00	Menu name (12)
	#&0C	Menu width (os coords)
	#&10	Module offset of 'update menu code'
	#&14	Menu entries (x n)
		-1 to terminate list of entries
		
Each menu entry is of the form:

	#&00	Flags:	b0-b7	Menu flags as for wimp. ie,
			b0	Display tick
			b1	Dotted line follows
			b2	item writable
			b3	generate warning message
			b7	ignored
			b8-b15	Minimum buffer size for this menu entry.
			b16-b23	Internal use: gives access to a 'memory'.
			b24-b31	Icon colours / 0 for default
	#&04	Submenu pointer:
			0=none
			1-15=internal use : get from memory 1-15
			>16 offset in module of submenu (same structure)
		If the submenu warning bit is set then this gives the module
		offset of the code to be called when the submenu is opened.
	#&08	Index word. This is a 'handle' for this menu entry which is
		passed to the interpret code.
	#&0C	Module offset of the interpret code to call when menu 
		clicked on.
	#&10	Text for this entry (0 terminated string of any length)
	ALIGN before next entry.
	
This structure is relocatable and thus can be stored directly in your mode
extension module. When zap is run, it converts it into a standard wimp menu
with all menu entries being indirected strings. The other values are stored
at negative offsets from the standard wimp structure.

	menu pointer
	#-4	= address of update menu sub
	
	menu entry string buffer pointer
	#-12	= sub to handle submenu creation (if warned)
	#-8	= index word
	#-4	= address of the interpret code to be called when clicked
	
The update menu sub is called when the menu is created to update the 'ticks'
etc. This is called when a menu is created/recreated. The entry/exit
conditions are:

	\E	R0=offset of this menu in previous menu
		R6=format value (opt_format if R8=0)
		R7=flags value (opt_flags if R8=0)
		R8/R9=window (or 0 if called from iconbar menu)
		R10=address of the start of the wimp menu structure
		R11<>your workspace
	\X	You may corrupt R0-R11 VS on error etc
	
The interpret code is called when the menu is clicked on. Adjust clicks etc
are handled automatically. Perform the menu action. The update code will be
called again if the menu is recreated. The entry/exit conditions are:

	\E	R0=offset in previous menu (=R11!-4)
		R1=index word (=R10!-8)
		R2=address of menu item start
		R3=address of previous menu item start
		R6=format value (opt_format if R8=0)
		R7=flags value (opt_flags if R8=0)
		R8/R9=window (or 0 if called from iconbar menu)
		R10=address of text for this menu item
		R11=end of list of menu offsets as returned by the wimp
	\X	You may corrupt R0-R11 VS on error etc
	
The menu warning code is called when the menu warning bit is set and zap gets
a menu warning message. It has entry/exit conditions:

	\E	R8/R9=window (or 0 if called from iconbar menu)
		R11=menu warning block as returned by the wimp
	\X	R1=pointer to submenu/window handle of leaf window

All leaf windows should be warned!
00000000  2a 2a 2a 2a 2a 2a 2a 2a  2a 2a 2a 2a 2a 2a 2a 2a  |****************|
*
00000040  2a 2a 2a 2a 2a 2a 2a 2a  2a 0a 2a 20 3e 45 2d 4d  |*********.* >E-M|
00000050  65 6e 75 09 44 6f 63 75  6d 65 6e 74 73 20 7a 61  |enu.Documents za|
00000060  70 73 20 69 6e 74 65 72  6e 61 6c 20 6d 65 6e 75  |ps internal menu|
00000070  20 66 6f 72 6d 61 74 09  09 09 2a 0a 2a 2a 2a 2a  | format...*.****|
00000080  2a 2a 2a 2a 2a 2a 2a 2a  2a 2a 2a 2a 2a 2a 2a 2a  |****************|
*
000000c0  2a 2a 2a 2a 2a 0a 0a 49  66 20 79 6f 75 20 61 72  |*****..If you ar|
000000d0  65 20 77 72 69 74 69 6e  67 20 79 6f 75 72 20 6f  |e writing your o|
000000e0  77 6e 20 6d 6f 64 65 20  74 68 65 6e 20 79 6f 75  |wn mode then you|
000000f0  20 6d 61 79 20 61 64 64  20 79 6f 75 72 20 6f 77  | may add your ow|
00000100  6e 20 6d 65 6e 75 20 6f  66 66 20 74 68 65 20 74  |n menu off the t|
00000110  68 65 0a 6d 6f 64 65 20  6d 65 6e 75 2e 20 54 68  |he.mode menu. Th|
00000120  65 20 63 75 72 72 65 6e  74 20 6d 6f 64 65 73 20  |e current modes |
00000130  68 61 76 65 20 61 20 77  72 69 74 61 62 6c 65 20  |have a writable |
00000140  69 63 6f 6e 20 6f 66 20  74 68 65 20 66 6f 72 6d  |icon of the form|
00000150  20 27 74 65 78 74 20 77  69 64 74 68 27 0a 66 6f  | 'text width'.fo|
00000160  72 20 65 78 61 6d 70 6c  65 2e 0a 0a 59 6f 75 20  |r example...You |
00000170  61 72 65 20 61 73 6b 65  64 20 74 6f 20 67 69 76  |are asked to giv|
00000180  65 20 61 6e 20 6f 66 66  73 65 74 20 74 6f 20 61  |e an offset to a|
00000190  20 27 7a 61 70 20 6d 65  6e 75 20 73 74 72 75 63  | 'zap menu struc|
000001a0  74 75 72 65 27 20 61 74  20 6f 66 66 73 65 74 20  |ture' at offset |
000001b0  65 5f 6d 65 6e 75 20 69  6e 0a 74 68 65 20 6d 6f  |e_menu in.the mo|
000001c0  64 65 20 74 61 62 6c 65  2e 20 54 68 69 73 20 66  |de table. This f|
000001d0  69 6c 65 20 64 6f 63 75  6d 65 6e 74 73 20 74 68  |ile documents th|
000001e0  65 20 66 6f 72 6d 61 74  20 6f 66 20 74 68 69 73  |e format of this|
000001f0  20 73 74 72 75 63 74 75  72 65 2e 20 49 74 20 69  | structure. It i|
00000200  73 20 6f 66 0a 74 68 65  20 66 6f 72 6d 3a 0a 0a  |s of.the form:..|
00000210  09 23 26 30 30 09 4d 65  6e 75 20 6e 61 6d 65 20  |.#&00.Menu name |
00000220  28 31 32 29 0a 09 23 26  30 43 09 4d 65 6e 75 20  |(12)..#&0C.Menu |
00000230  77 69 64 74 68 20 28 6f  73 20 63 6f 6f 72 64 73  |width (os coords|
00000240  29 0a 09 23 26 31 30 09  4d 6f 64 75 6c 65 20 6f  |)..#&10.Module o|
00000250  66 66 73 65 74 20 6f 66  20 27 75 70 64 61 74 65  |ffset of 'update|
00000260  20 6d 65 6e 75 20 63 6f  64 65 27 0a 09 23 26 31  | menu code'..#&1|
00000270  34 09 4d 65 6e 75 20 65  6e 74 72 69 65 73 20 28  |4.Menu entries (|
00000280  78 20 6e 29 0a 09 09 2d  31 20 74 6f 20 74 65 72  |x n)...-1 to ter|
00000290  6d 69 6e 61 74 65 20 6c  69 73 74 20 6f 66 20 65  |minate list of e|
000002a0  6e 74 72 69 65 73 0a 09  09 0a 45 61 63 68 20 6d  |ntries....Each m|
000002b0  65 6e 75 20 65 6e 74 72  79 20 69 73 20 6f 66 20  |enu entry is of |
000002c0  74 68 65 20 66 6f 72 6d  3a 0a 0a 09 23 26 30 30  |the form:...#&00|
000002d0  09 46 6c 61 67 73 3a 09  62 30 2d 62 37 09 4d 65  |.Flags:.b0-b7.Me|
000002e0  6e 75 20 66 6c 61 67 73  20 61 73 20 66 6f 72 20  |nu flags as for |
000002f0  77 69 6d 70 2e 20 69 65  2c 0a 09 09 09 62 30 09  |wimp. ie,....b0.|
00000300  44 69 73 70 6c 61 79 20  74 69 63 6b 0a 09 09 09  |Display tick....|
00000310  62 31 09 44 6f 74 74 65  64 20 6c 69 6e 65 20 66  |b1.Dotted line f|
00000320  6f 6c 6c 6f 77 73 0a 09  09 09 62 32 09 69 74 65  |ollows....b2.ite|
00000330  6d 20 77 72 69 74 61 62  6c 65 0a 09 09 09 62 33  |m writable....b3|
00000340  09 67 65 6e 65 72 61 74  65 20 77 61 72 6e 69 6e  |.generate warnin|
00000350  67 20 6d 65 73 73 61 67  65 0a 09 09 09 62 37 09  |g message....b7.|
00000360  69 67 6e 6f 72 65 64 0a  09 09 09 62 38 2d 62 31  |ignored....b8-b1|
00000370  35 09 4d 69 6e 69 6d 75  6d 20 62 75 66 66 65 72  |5.Minimum buffer|
00000380  20 73 69 7a 65 20 66 6f  72 20 74 68 69 73 20 6d  | size for this m|
00000390  65 6e 75 20 65 6e 74 72  79 2e 0a 09 09 09 62 31  |enu entry.....b1|
000003a0  36 2d 62 32 33 09 49 6e  74 65 72 6e 61 6c 20 75  |6-b23.Internal u|
000003b0  73 65 3a 20 67 69 76 65  73 20 61 63 63 65 73 73  |se: gives access|
000003c0  20 74 6f 20 61 20 27 6d  65 6d 6f 72 79 27 2e 0a  | to a 'memory'..|
000003d0  09 09 09 62 32 34 2d 62  33 31 09 49 63 6f 6e 20  |...b24-b31.Icon |
000003e0  63 6f 6c 6f 75 72 73 20  2f 20 30 20 66 6f 72 20  |colours / 0 for |
000003f0  64 65 66 61 75 6c 74 0a  09 23 26 30 34 09 53 75  |default..#&04.Su|
00000400  62 6d 65 6e 75 20 70 6f  69 6e 74 65 72 3a 0a 09  |bmenu pointer:..|
00000410  09 09 30 3d 6e 6f 6e 65  0a 09 09 09 31 2d 31 35  |..0=none....1-15|
00000420  3d 69 6e 74 65 72 6e 61  6c 20 75 73 65 20 3a 20  |=internal use : |
00000430  67 65 74 20 66 72 6f 6d  20 6d 65 6d 6f 72 79 20  |get from memory |
00000440  31 2d 31 35 0a 09 09 09  3e 31 36 20 6f 66 66 73  |1-15....>16 offs|
00000450  65 74 20 69 6e 20 6d 6f  64 75 6c 65 20 6f 66 20  |et in module of |
00000460  73 75 62 6d 65 6e 75 20  28 73 61 6d 65 20 73 74  |submenu (same st|
00000470  72 75 63 74 75 72 65 29  0a 09 09 49 66 20 74 68  |ructure)...If th|
00000480  65 20 73 75 62 6d 65 6e  75 20 77 61 72 6e 69 6e  |e submenu warnin|
00000490  67 20 62 69 74 20 69 73  20 73 65 74 20 74 68 65  |g bit is set the|
000004a0  6e 20 74 68 69 73 20 67  69 76 65 73 20 74 68 65  |n this gives the|
000004b0  20 6d 6f 64 75 6c 65 0a  09 09 6f 66 66 73 65 74  | module...offset|
000004c0  20 6f 66 20 74 68 65 20  63 6f 64 65 20 74 6f 20  | of the code to |
000004d0  62 65 20 63 61 6c 6c 65  64 20 77 68 65 6e 20 74  |be called when t|
000004e0  68 65 20 73 75 62 6d 65  6e 75 20 69 73 20 6f 70  |he submenu is op|
000004f0  65 6e 65 64 2e 0a 09 23  26 30 38 09 49 6e 64 65  |ened...#&08.Inde|
00000500  78 20 77 6f 72 64 2e 20  54 68 69 73 20 69 73 20  |x word. This is |
00000510  61 20 27 68 61 6e 64 6c  65 27 20 66 6f 72 20 74  |a 'handle' for t|
00000520  68 69 73 20 6d 65 6e 75  20 65 6e 74 72 79 20 77  |his menu entry w|
00000530  68 69 63 68 20 69 73 0a  09 09 70 61 73 73 65 64  |hich is...passed|
00000540  20 74 6f 20 74 68 65 20  69 6e 74 65 72 70 72 65  | to the interpre|
00000550  74 20 63 6f 64 65 2e 0a  09 23 26 30 43 09 4d 6f  |t code...#&0C.Mo|
00000560  64 75 6c 65 20 6f 66 66  73 65 74 20 6f 66 20 74  |dule offset of t|
00000570  68 65 20 69 6e 74 65 72  70 72 65 74 20 63 6f 64  |he interpret cod|
00000580  65 20 74 6f 20 63 61 6c  6c 20 77 68 65 6e 20 6d  |e to call when m|
00000590  65 6e 75 20 0a 09 09 63  6c 69 63 6b 65 64 20 6f  |enu ...clicked o|
000005a0  6e 2e 0a 09 23 26 31 30  09 54 65 78 74 20 66 6f  |n...#&10.Text fo|
000005b0  72 20 74 68 69 73 20 65  6e 74 72 79 20 28 30 20  |r this entry (0 |
000005c0  74 65 72 6d 69 6e 61 74  65 64 20 73 74 72 69 6e  |terminated strin|
000005d0  67 20 6f 66 20 61 6e 79  20 6c 65 6e 67 74 68 29  |g of any length)|
000005e0  0a 09 41 4c 49 47 4e 20  62 65 66 6f 72 65 20 6e  |..ALIGN before n|
000005f0  65 78 74 20 65 6e 74 72  79 2e 0a 09 0a 54 68 69  |ext entry....Thi|
00000600  73 20 73 74 72 75 63 74  75 72 65 20 69 73 20 72  |s structure is r|
00000610  65 6c 6f 63 61 74 61 62  6c 65 20 61 6e 64 20 74  |elocatable and t|
00000620  68 75 73 20 63 61 6e 20  62 65 20 73 74 6f 72 65  |hus can be store|
00000630  64 20 64 69 72 65 63 74  6c 79 20 69 6e 20 79 6f  |d directly in yo|
00000640  75 72 20 6d 6f 64 65 0a  65 78 74 65 6e 73 69 6f  |ur mode.extensio|
00000650  6e 20 6d 6f 64 75 6c 65  2e 20 57 68 65 6e 20 7a  |n module. When z|
00000660  61 70 20 69 73 20 72 75  6e 2c 20 69 74 20 63 6f  |ap is run, it co|
00000670  6e 76 65 72 74 73 20 69  74 20 69 6e 74 6f 20 61  |nverts it into a|
00000680  20 73 74 61 6e 64 61 72  64 20 77 69 6d 70 20 6d  | standard wimp m|
00000690  65 6e 75 0a 77 69 74 68  20 61 6c 6c 20 6d 65 6e  |enu.with all men|
000006a0  75 20 65 6e 74 72 69 65  73 20 62 65 69 6e 67 20  |u entries being |
000006b0  69 6e 64 69 72 65 63 74  65 64 20 73 74 72 69 6e  |indirected strin|
000006c0  67 73 2e 20 54 68 65 20  6f 74 68 65 72 20 76 61  |gs. The other va|
000006d0  6c 75 65 73 20 61 72 65  20 73 74 6f 72 65 64 0a  |lues are stored.|
000006e0  61 74 20 6e 65 67 61 74  69 76 65 20 6f 66 66 73  |at negative offs|
000006f0  65 74 73 20 66 72 6f 6d  20 74 68 65 20 73 74 61  |ets from the sta|
00000700  6e 64 61 72 64 20 77 69  6d 70 20 73 74 72 75 63  |ndard wimp struc|
00000710  74 75 72 65 2e 0a 0a 09  6d 65 6e 75 20 70 6f 69  |ture....menu poi|
00000720  6e 74 65 72 0a 09 23 2d  34 09 3d 20 61 64 64 72  |nter..#-4.= addr|
00000730  65 73 73 20 6f 66 20 75  70 64 61 74 65 20 6d 65  |ess of update me|
00000740  6e 75 20 73 75 62 0a 09  0a 09 6d 65 6e 75 20 65  |nu sub....menu e|
00000750  6e 74 72 79 20 73 74 72  69 6e 67 20 62 75 66 66  |ntry string buff|
00000760  65 72 20 70 6f 69 6e 74  65 72 0a 09 23 2d 31 32  |er pointer..#-12|
00000770  09 3d 20 73 75 62 20 74  6f 20 68 61 6e 64 6c 65  |.= sub to handle|
00000780  20 73 75 62 6d 65 6e 75  20 63 72 65 61 74 69 6f  | submenu creatio|
00000790  6e 20 28 69 66 20 77 61  72 6e 65 64 29 0a 09 23  |n (if warned)..#|
000007a0  2d 38 09 3d 20 69 6e 64  65 78 20 77 6f 72 64 0a  |-8.= index word.|
000007b0  09 23 2d 34 09 3d 20 61  64 64 72 65 73 73 20 6f  |.#-4.= address o|
000007c0  66 20 74 68 65 20 69 6e  74 65 72 70 72 65 74 20  |f the interpret |
000007d0  63 6f 64 65 20 74 6f 20  62 65 20 63 61 6c 6c 65  |code to be calle|
000007e0  64 20 77 68 65 6e 20 63  6c 69 63 6b 65 64 0a 09  |d when clicked..|
000007f0  0a 54 68 65 20 75 70 64  61 74 65 20 6d 65 6e 75  |.The update menu|
00000800  20 73 75 62 20 69 73 20  63 61 6c 6c 65 64 20 77  | sub is called w|
00000810  68 65 6e 20 74 68 65 20  6d 65 6e 75 20 69 73 20  |hen the menu is |
00000820  63 72 65 61 74 65 64 20  74 6f 20 75 70 64 61 74  |created to updat|
00000830  65 20 74 68 65 20 27 74  69 63 6b 73 27 0a 65 74  |e the 'ticks'.et|
00000840  63 2e 20 54 68 69 73 20  69 73 20 63 61 6c 6c 65  |c. This is calle|
00000850  64 20 77 68 65 6e 20 61  20 6d 65 6e 75 20 69 73  |d when a menu is|
00000860  20 63 72 65 61 74 65 64  2f 72 65 63 72 65 61 74  | created/recreat|
00000870  65 64 2e 20 54 68 65 20  65 6e 74 72 79 2f 65 78  |ed. The entry/ex|
00000880  69 74 0a 63 6f 6e 64 69  74 69 6f 6e 73 20 61 72  |it.conditions ar|
00000890  65 3a 0a 0a 09 5c 45 09  52 30 3d 6f 66 66 73 65  |e:...\E.R0=offse|
000008a0  74 20 6f 66 20 74 68 69  73 20 6d 65 6e 75 20 69  |t of this menu i|
000008b0  6e 20 70 72 65 76 69 6f  75 73 20 6d 65 6e 75 0a  |n previous menu.|
000008c0  09 09 52 36 3d 66 6f 72  6d 61 74 20 76 61 6c 75  |..R6=format valu|
000008d0  65 20 28 6f 70 74 5f 66  6f 72 6d 61 74 20 69 66  |e (opt_format if|
000008e0  20 52 38 3d 30 29 0a 09  09 52 37 3d 66 6c 61 67  | R8=0)...R7=flag|
000008f0  73 20 76 61 6c 75 65 20  28 6f 70 74 5f 66 6c 61  |s value (opt_fla|
00000900  67 73 20 69 66 20 52 38  3d 30 29 0a 09 09 52 38  |gs if R8=0)...R8|
00000910  2f 52 39 3d 77 69 6e 64  6f 77 20 28 6f 72 20 30  |/R9=window (or 0|
00000920  20 69 66 20 63 61 6c 6c  65 64 20 66 72 6f 6d 20  | if called from |
00000930  69 63 6f 6e 62 61 72 20  6d 65 6e 75 29 0a 09 09  |iconbar menu)...|
00000940  52 31 30 3d 61 64 64 72  65 73 73 20 6f 66 20 74  |R10=address of t|
00000950  68 65 20 73 74 61 72 74  20 6f 66 20 74 68 65 20  |he start of the |
00000960  77 69 6d 70 20 6d 65 6e  75 20 73 74 72 75 63 74  |wimp menu struct|
00000970  75 72 65 0a 09 09 52 31  31 3c 3e 79 6f 75 72 20  |ure...R11<>your |
00000980  77 6f 72 6b 73 70 61 63  65 0a 09 5c 58 09 59 6f  |workspace..\X.Yo|
00000990  75 20 6d 61 79 20 63 6f  72 72 75 70 74 20 52 30  |u may corrupt R0|
000009a0  2d 52 31 31 20 56 53 20  6f 6e 20 65 72 72 6f 72  |-R11 VS on error|
000009b0  20 65 74 63 0a 09 0a 54  68 65 20 69 6e 74 65 72  | etc...The inter|
000009c0  70 72 65 74 20 63 6f 64  65 20 69 73 20 63 61 6c  |pret code is cal|
000009d0  6c 65 64 20 77 68 65 6e  20 74 68 65 20 6d 65 6e  |led when the men|
000009e0  75 20 69 73 20 63 6c 69  63 6b 65 64 20 6f 6e 2e  |u is clicked on.|
000009f0  20 41 64 6a 75 73 74 20  63 6c 69 63 6b 73 20 65  | Adjust clicks e|
00000a00  74 63 0a 61 72 65 20 68  61 6e 64 6c 65 64 20 61  |tc.are handled a|
00000a10  75 74 6f 6d 61 74 69 63  61 6c 6c 79 2e 20 50 65  |utomatically. Pe|
00000a20  72 66 6f 72 6d 20 74 68  65 20 6d 65 6e 75 20 61  |rform the menu a|
00000a30  63 74 69 6f 6e 2e 20 54  68 65 20 75 70 64 61 74  |ction. The updat|
00000a40  65 20 63 6f 64 65 20 77  69 6c 6c 20 62 65 0a 63  |e code will be.c|
00000a50  61 6c 6c 65 64 20 61 67  61 69 6e 20 69 66 20 74  |alled again if t|
00000a60  68 65 20 6d 65 6e 75 20  69 73 20 72 65 63 72 65  |he menu is recre|
00000a70  61 74 65 64 2e 20 54 68  65 20 65 6e 74 72 79 2f  |ated. The entry/|
00000a80  65 78 69 74 20 63 6f 6e  64 69 74 69 6f 6e 73 20  |exit conditions |
00000a90  61 72 65 3a 0a 0a 09 5c  45 09 52 30 3d 6f 66 66  |are:...\E.R0=off|
00000aa0  73 65 74 20 69 6e 20 70  72 65 76 69 6f 75 73 20  |set in previous |
00000ab0  6d 65 6e 75 20 28 3d 52  31 31 21 2d 34 29 0a 09  |menu (=R11!-4)..|
00000ac0  09 52 31 3d 69 6e 64 65  78 20 77 6f 72 64 20 28  |.R1=index word (|
00000ad0  3d 52 31 30 21 2d 38 29  0a 09 09 52 32 3d 61 64  |=R10!-8)...R2=ad|
00000ae0  64 72 65 73 73 20 6f 66  20 6d 65 6e 75 20 69 74  |dress of menu it|
00000af0  65 6d 20 73 74 61 72 74  0a 09 09 52 33 3d 61 64  |em start...R3=ad|
00000b00  64 72 65 73 73 20 6f 66  20 70 72 65 76 69 6f 75  |dress of previou|
00000b10  73 20 6d 65 6e 75 20 69  74 65 6d 20 73 74 61 72  |s menu item star|
00000b20  74 0a 09 09 52 36 3d 66  6f 72 6d 61 74 20 76 61  |t...R6=format va|
00000b30  6c 75 65 20 28 6f 70 74  5f 66 6f 72 6d 61 74 20  |lue (opt_format |
00000b40  69 66 20 52 38 3d 30 29  0a 09 09 52 37 3d 66 6c  |if R8=0)...R7=fl|
00000b50  61 67 73 20 76 61 6c 75  65 20 28 6f 70 74 5f 66  |ags value (opt_f|
00000b60  6c 61 67 73 20 69 66 20  52 38 3d 30 29 0a 09 09  |lags if R8=0)...|
00000b70  52 38 2f 52 39 3d 77 69  6e 64 6f 77 20 28 6f 72  |R8/R9=window (or|
00000b80  20 30 20 69 66 20 63 61  6c 6c 65 64 20 66 72 6f  | 0 if called fro|
00000b90  6d 20 69 63 6f 6e 62 61  72 20 6d 65 6e 75 29 0a  |m iconbar menu).|
00000ba0  09 09 52 31 30 3d 61 64  64 72 65 73 73 20 6f 66  |..R10=address of|
00000bb0  20 74 65 78 74 20 66 6f  72 20 74 68 69 73 20 6d  | text for this m|
00000bc0  65 6e 75 20 69 74 65 6d  0a 09 09 52 31 31 3d 65  |enu item...R11=e|
00000bd0  6e 64 20 6f 66 20 6c 69  73 74 20 6f 66 20 6d 65  |nd of list of me|
00000be0  6e 75 20 6f 66 66 73 65  74 73 20 61 73 20 72 65  |nu offsets as re|
00000bf0  74 75 72 6e 65 64 20 62  79 20 74 68 65 20 77 69  |turned by the wi|
00000c00  6d 70 0a 09 5c 58 09 59  6f 75 20 6d 61 79 20 63  |mp..\X.You may c|
00000c10  6f 72 72 75 70 74 20 52  30 2d 52 31 31 20 56 53  |orrupt R0-R11 VS|
00000c20  20 6f 6e 20 65 72 72 6f  72 20 65 74 63 0a 09 0a  | on error etc...|
00000c30  54 68 65 20 6d 65 6e 75  20 77 61 72 6e 69 6e 67  |The menu warning|
00000c40  20 63 6f 64 65 20 69 73  20 63 61 6c 6c 65 64 20  | code is called |
00000c50  77 68 65 6e 20 74 68 65  20 6d 65 6e 75 20 77 61  |when the menu wa|
00000c60  72 6e 69 6e 67 20 62 69  74 20 69 73 20 73 65 74  |rning bit is set|
00000c70  20 61 6e 64 20 7a 61 70  20 67 65 74 73 0a 61 20  | and zap gets.a |
00000c80  6d 65 6e 75 20 77 61 72  6e 69 6e 67 20 6d 65 73  |menu warning mes|
00000c90  73 61 67 65 2e 20 49 74  20 68 61 73 20 65 6e 74  |sage. It has ent|
00000ca0  72 79 2f 65 78 69 74 20  63 6f 6e 64 69 74 69 6f  |ry/exit conditio|
00000cb0  6e 73 3a 0a 0a 09 5c 45  09 52 38 2f 52 39 3d 77  |ns:...\E.R8/R9=w|
00000cc0  69 6e 64 6f 77 20 28 6f  72 20 30 20 69 66 20 63  |indow (or 0 if c|
00000cd0  61 6c 6c 65 64 20 66 72  6f 6d 20 69 63 6f 6e 62  |alled from iconb|
00000ce0  61 72 20 6d 65 6e 75 29  0a 09 09 52 31 31 3d 6d  |ar menu)...R11=m|
00000cf0  65 6e 75 20 77 61 72 6e  69 6e 67 20 62 6c 6f 63  |enu warning bloc|
00000d00  6b 20 61 73 20 72 65 74  75 72 6e 65 64 20 62 79  |k as returned by|
00000d10  20 74 68 65 20 77 69 6d  70 0a 09 5c 58 09 52 31  | the wimp..\X.R1|
00000d20  3d 70 6f 69 6e 74 65 72  20 74 6f 20 73 75 62 6d  |=pointer to subm|
00000d30  65 6e 75 2f 77 69 6e 64  6f 77 20 68 61 6e 64 6c  |enu/window handl|
00000d40  65 20 6f 66 20 6c 65 61  66 20 77 69 6e 64 6f 77  |e of leaf window|
00000d50  0a 0a 41 6c 6c 20 6c 65  61 66 20 77 69 6e 64 6f  |..All leaf windo|
00000d60  77 73 20 73 68 6f 75 6c  64 20 62 65 20 77 61 72  |ws should be war|
00000d70  6e 65 64 21 0a                                    |ned!.|
00000d75