Home » Archimedes archive » Acorn User » AU 1996-12 B.adf » Regulars_2 » StarInfo/Clifford/!Macros/MacroCode/s/ReadIcnSrc

StarInfo/Clifford/!Macros/MacroCode/s/ReadIcnSrc

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 » AU 1996-12 B.adf » Regulars_2
Filename: StarInfo/Clifford/!Macros/MacroCode/s/ReadIcnSrc
Read OK:
File size: 188D bytes
Load address: 0000
Exec address: 0000
File contents
;	********************************************************************
;	s.ReadIcnSrc
;	********************************************************************

	GET	ARM:h.SWINames

	AREA	|ReadIcon$MacroCode|, CODE


;	********************************************************************
;	Workspace layout
;	********************************************************************

			^	0
Task_Handle		#	4
Poll_Block		#	256

Workspace_Needed	*	@


;	********************************************************************
;	Macro code header
;	********************************************************************

	ENTRY

MacroCode_Start
	=	"MCDE"
	DCD	Module_Title		- MacroCode_Start
	DCD	Module_Help		- MacroCode_Start
	DCD	Insert_Module		- MacroCode_Start
	DCD	Delete_Module		- MacroCode_Start
	DCD	Key_Code		- MacroCode_Start


;	********************************************************************
;	Macro code
;	********************************************************************

Insert_Module
	stmfd	r13!, {r14}
	mov	r0, #10
	adr	r1, Module_Start
	swi	XOS_Module
	ldmfd	r13!, {pc}^
Delete_Module
	stmfd	r13!, {r14}
	mov	r0, #4
	adr	r1, Module_Title
	swi	XOS_Module
	ldmfd	r13!, {pc}^

Key_Code
	stmfd	r13!, {r14}
	mov	r0, #3
	swi	XWimp_ReadSysInfo
	ldmvsfd	r13!, {pc}^
	cmp	r0, #1
	ldmnefd	r13!, {pc}^
	str	r0, Grab_Attention
	ldmfd	r13!, {pc}^


;	********************************************************************
;	Module header
;	********************************************************************

	DCD	Module_End - Module_Start
Module_Start
	DCD	Application		- Module_Start
	DCD	Initialise		- Module_Start
	DCD	Finalise		- Module_Start
	DCD	Service			- Module_Start
	DCD	Module_Title		- Module_Start
	DCD	Module_Help		- Module_Start
	DCD	Command_Table		- Module_Start
	DCD	0
	DCD	0
	DCD	0
	DCD	0


;	********************************************************************
;	Module data
;	********************************************************************

Module_Title
	=	"ReadIcon", 0

Module_Help
	=	"ReadIcon", 9
	=	"0.11 (01 Aug 1996)", 0
	ALIGN

Command_Table
	=	"Desktop_ReadIcon", 0
	ALIGN
	DCD	Desktop_ReadIcon	- Module_Start
	=	0, 0, 0, 0
	DCD	Desktop_ReadIcon_Syntax	- Module_Start
	DCD	Desktop_ReadIcon_Help	- Module_Start
	DCD	0

Desktop_ReadIcon_Help
	=	"*Desktop_ReadIcon starts up a task to read the text from icons.", 13
Desktop_ReadIcon_Syntax
	=	"Do not use *Desktop_ReadIcon, use *Desktop instead.", 0
	ALIGN

Text_Variable
	=	"Icon$Text", 0
	ALIGN

Grab_Attention
	DCD	0
Poll_Mask
	DCD	2_10010000001100101110011
Accepted_Messages
	DCD	0
TASK
	=	"TASK"


;	********************************************************************
;	Module code
;	********************************************************************

Initialise
	stmfd	r13!, {r7-r11, r14}
	mov	r0, #6
	mov	r3, #Workspace_Needed
	swi	XOS_Module
	ldmvsfd	r13!, {r7-r11, pc}
	str	r2, [r12, #0]
	mov	r12, r2
	mov	r0, #0
	str	r0, Grab_Attention
	str	r0, [r12, #Task_Handle]
	ldmfd	r13!, {r7-r11, pc}^

Finalise
	stmfd	r13!, {r7-r11, r14}
	ldr	r12, [r12, #0]
	ldr	r0, [r12, #Task_Handle]
	cmp	r0, #0
	ldrgt	r1, TASK
	swigt	XWimp_CloseDown
	mov	r0, #7
	mov	r2, r12
	swi	XOS_Module
	ldmfd	r13!, {r7-r11, pc}^

Service
	cmp	r1, #&27
	cmpne	r1, #&49
	cmpne	r1, #&4A
	movnes	pc, r14
	stmfd	r13!, {r0-r11, r14}
	ldr	r12, [r12, #0]
	cmp	r1, #&27
	moveq	r1, #0
	streq	r1, [r12, #Task_Handle]
	ldmeqfd	r13!, {r0-r11, pc}^
	cmp	r1, #&49
	beq	Service_StartWimp
	cmp	r1, #&4A
	beq	Service_StartedWimp
	ldmfd	r13!, {r0-r11, pc}^
Service_StartWimp
	ldr	r0, [r12, #Task_Handle]
	cmp	r0, #0
	ldmnefd	r13!, {r0-r11, pc}^
	mvn	r0, #0
	str	r0, [r12, #Task_Handle]
	adr	r0, Command_Table
	mov	r1, #0
	add	r13, r13, #8
	ldmfd	r13!, {r2-r11, pc}^
Service_StartedWimp
	ldr	r0, [r12, #Task_Handle]
	cmn	r0, #1
	moveq	r0, #0
	streq	r0, [r12, #Task_Handle]
	ldmfd	r13!, {r0-r11, pc}^

Desktop_ReadIcon
	stmfd	r13!, {r14}
	mov	r2, r0
	mov	r0, #2
	adr	r1, Module_Title
	swi	XOS_Module
	ldmfd	r13!, {pc}^

Application
	ldr	r12, [r12, #0]
	ldr	r0, [r12, #Task_Handle]
	cmp	r0, #0
	ldrgt	r1, TASK
	swigt	XWimp_CloseDown
	movgt	r0, #0
	strgt	r0, [r12, #Task_Handle]
	mov	r0, #300
	ldr	r1, TASK
	adr	r2, Module_Title
	adr	r3, Accepted_Messages
	swi	XWimp_Initialise
	swivs	OS_Exit
	str	r1, [r12, #Task_Handle]
Polling_Loop
	ldr	r0, Poll_Mask
	add	r1, r12, #Poll_Block
	adr	r3, Grab_Attention
	swi	Wimp_Poll
	cmp	r0, #13
	beq	Read_Icon
	cmp	r0, #17
	cmpne	r0, #18
	bne	Polling_Loop
	ldr	r0, [r1, #16]
	cmp	r0, #0
	bne	Polling_Loop
	ldr	r0, [r12, #Task_Handle]
	ldr	r1, TASK
	swi	XWimp_CloseDown
	mov	r0, #0
	str	r0, [r12, #Task_Handle]
	swi	OS_Exit

Read_Icon
	mov	r7, #0
	; pointer to memory claimed from RMA
	add	r1, r12, #Poll_Block
	swi	XWimp_GetPointerInfo
	bvs	Read_Icon_End
	ldr	r8, [r12, #Poll_Block + 12]
	; r8 = window handle
	ldr	r9, [r12, #Poll_Block + 16]
	; r9 = icon handle
	mov	r0, #20
	str	r0, [r12, #Poll_Block + 0]
	mov	r0, #0
	str	r0, [r12, #Poll_Block + 12]
	mov	r0, #19
	mov	r2, r8
	mov	r3, r9
	swi	XWimp_SendMessage
	bvs	Read_Icon_End
	mov	r10, r2
	; r10 = task handle
	str	r8, [r12, #Poll_Block + 0]
	str	r9, [r12, #Poll_Block + 4]
	swi	XWimp_GetIconState
	bvs	Read_Icon_End
	ldr	r0, [r12, #Poll_Block + 8 + 16]
	tst	r0, #1 << 0
	beq	Read_Icon_End
	tst	r0, #1 << 8
	addeq	r1, r12, #Poll_Block + 8 + 20
	moveq	r2, #12
	ldrne	r1, [r12, #Poll_Block + 8 + 20]
	ldrne	r2, [r12, #Poll_Block + 8 + 28]
	cmpne	r10, #0
	blne	Copy_Indirected_Icon
	mov	r0, #0
Count_Icon_Text
	ldrb	r3, [r1, r0]
	cmp	r3, #31
	cmpgt	r2, r0
	addgt	r0, r0, #1
	bgt	Count_Icon_Text
	mov	r2, r0
	adr	r0, Text_Variable
	mov	r3, #0
	mov	r4, #4
	swi	XOS_SetVarVal
	bvs	Read_Icon_End
;	mov	r0, #1
;	mvn	r1, #14
;	mov	r2, #120
;	mov	r3, #1
;	swi	XSound_Control
Read_Icon_End
	cmp	r7, #0
	movne	r0, #7
	movne	r2, r7
	swine	XOS_Module
	mov	r0, #0
	str	r0, Grab_Attention
	b	Polling_Loop
Copy_Indirected_Icon
	mov	r8, r1
	; icon handle not needed any more, so use it to store data pointer
	mov	r9, r2
	; window handle not needed any more, so use it to store buffer size
	mov	r0, #6
	mov	r3, r2
	swi	XOS_Module
	bvs	Read_Icon_End
	mov	r7, r2
	; r7 = pointer to memory from RMA
	mov	r0, r10
	mov	r1, r8
	ldr	r2, [r12, #Task_Handle]
	mov	r3, r7
	mov	r4, r9
	swi	XWimp_TransferBlock
	bvs	Read_Icon_End
	mov	r1, r7
	mov	r2, r9
	movs	pc, r14


Module_End
	END
00000000  3b 09 2a 2a 2a 2a 2a 2a  2a 2a 2a 2a 2a 2a 2a 2a  |;.**************|
00000010  2a 2a 2a 2a 2a 2a 2a 2a  2a 2a 2a 2a 2a 2a 2a 2a  |****************|
*
00000040  2a 2a 2a 2a 2a 2a 0a 3b  09 73 2e 52 65 61 64 49  |******.;.s.ReadI|
00000050  63 6e 53 72 63 0a 3b 09  2a 2a 2a 2a 2a 2a 2a 2a  |cnSrc.;.********|
00000060  2a 2a 2a 2a 2a 2a 2a 2a  2a 2a 2a 2a 2a 2a 2a 2a  |****************|
*
00000090  2a 2a 2a 2a 2a 2a 2a 2a  2a 2a 2a 2a 0a 0a 09 47  |************...G|
000000a0  45 54 09 41 52 4d 3a 68  2e 53 57 49 4e 61 6d 65  |ET.ARM:h.SWIName|
000000b0  73 0a 0a 09 41 52 45 41  09 7c 52 65 61 64 49 63  |s...AREA.|ReadIc|
000000c0  6f 6e 24 4d 61 63 72 6f  43 6f 64 65 7c 2c 20 43  |on$MacroCode|, C|
000000d0  4f 44 45 0a 0a 0a 3b 09  2a 2a 2a 2a 2a 2a 2a 2a  |ODE...;.********|
000000e0  2a 2a 2a 2a 2a 2a 2a 2a  2a 2a 2a 2a 2a 2a 2a 2a  |****************|
*
00000110  2a 2a 2a 2a 2a 2a 2a 2a  2a 2a 2a 2a 0a 3b 09 57  |************.;.W|
00000120  6f 72 6b 73 70 61 63 65  20 6c 61 79 6f 75 74 0a  |orkspace layout.|
00000130  3b 09 2a 2a 2a 2a 2a 2a  2a 2a 2a 2a 2a 2a 2a 2a  |;.**************|
00000140  2a 2a 2a 2a 2a 2a 2a 2a  2a 2a 2a 2a 2a 2a 2a 2a  |****************|
*
00000170  2a 2a 2a 2a 2a 2a 0a 0a  09 09 09 5e 09 30 0a 54  |******.....^.0.T|
00000180  61 73 6b 5f 48 61 6e 64  6c 65 09 09 23 09 34 0a  |ask_Handle..#.4.|
00000190  50 6f 6c 6c 5f 42 6c 6f  63 6b 09 09 23 09 32 35  |Poll_Block..#.25|
000001a0  36 0a 0a 57 6f 72 6b 73  70 61 63 65 5f 4e 65 65  |6..Workspace_Nee|
000001b0  64 65 64 09 2a 09 40 0a  0a 0a 3b 09 2a 2a 2a 2a  |ded.*.@...;.****|
000001c0  2a 2a 2a 2a 2a 2a 2a 2a  2a 2a 2a 2a 2a 2a 2a 2a  |****************|
*
00000200  0a 3b 09 4d 61 63 72 6f  20 63 6f 64 65 20 68 65  |.;.Macro code he|
00000210  61 64 65 72 0a 3b 09 2a  2a 2a 2a 2a 2a 2a 2a 2a  |ader.;.*********|
00000220  2a 2a 2a 2a 2a 2a 2a 2a  2a 2a 2a 2a 2a 2a 2a 2a  |****************|
*
00000250  2a 2a 2a 2a 2a 2a 2a 2a  2a 2a 2a 0a 0a 09 45 4e  |***********...EN|
00000260  54 52 59 0a 0a 4d 61 63  72 6f 43 6f 64 65 5f 53  |TRY..MacroCode_S|
00000270  74 61 72 74 0a 09 3d 09  22 4d 43 44 45 22 0a 09  |tart..=."MCDE"..|
00000280  44 43 44 09 4d 6f 64 75  6c 65 5f 54 69 74 6c 65  |DCD.Module_Title|
00000290  09 09 2d 20 4d 61 63 72  6f 43 6f 64 65 5f 53 74  |..- MacroCode_St|
000002a0  61 72 74 0a 09 44 43 44  09 4d 6f 64 75 6c 65 5f  |art..DCD.Module_|
000002b0  48 65 6c 70 09 09 2d 20  4d 61 63 72 6f 43 6f 64  |Help..- MacroCod|
000002c0  65 5f 53 74 61 72 74 0a  09 44 43 44 09 49 6e 73  |e_Start..DCD.Ins|
000002d0  65 72 74 5f 4d 6f 64 75  6c 65 09 09 2d 20 4d 61  |ert_Module..- Ma|
000002e0  63 72 6f 43 6f 64 65 5f  53 74 61 72 74 0a 09 44  |croCode_Start..D|
000002f0  43 44 09 44 65 6c 65 74  65 5f 4d 6f 64 75 6c 65  |CD.Delete_Module|
00000300  09 09 2d 20 4d 61 63 72  6f 43 6f 64 65 5f 53 74  |..- MacroCode_St|
00000310  61 72 74 0a 09 44 43 44  09 4b 65 79 5f 43 6f 64  |art..DCD.Key_Cod|
00000320  65 09 09 2d 20 4d 61 63  72 6f 43 6f 64 65 5f 53  |e..- MacroCode_S|
00000330  74 61 72 74 0a 0a 0a 3b  09 2a 2a 2a 2a 2a 2a 2a  |tart...;.*******|
00000340  2a 2a 2a 2a 2a 2a 2a 2a  2a 2a 2a 2a 2a 2a 2a 2a  |****************|
*
00000370  2a 2a 2a 2a 2a 2a 2a 2a  2a 2a 2a 2a 2a 0a 3b 09  |*************.;.|
00000380  4d 61 63 72 6f 20 63 6f  64 65 0a 3b 09 2a 2a 2a  |Macro code.;.***|
00000390  2a 2a 2a 2a 2a 2a 2a 2a  2a 2a 2a 2a 2a 2a 2a 2a  |****************|
*
000003d0  2a 0a 0a 49 6e 73 65 72  74 5f 4d 6f 64 75 6c 65  |*..Insert_Module|
000003e0  0a 09 73 74 6d 66 64 09  72 31 33 21 2c 20 7b 72  |..stmfd.r13!, {r|
000003f0  31 34 7d 0a 09 6d 6f 76  09 72 30 2c 20 23 31 30  |14}..mov.r0, #10|
00000400  0a 09 61 64 72 09 72 31  2c 20 4d 6f 64 75 6c 65  |..adr.r1, Module|
00000410  5f 53 74 61 72 74 0a 09  73 77 69 09 58 4f 53 5f  |_Start..swi.XOS_|
00000420  4d 6f 64 75 6c 65 0a 09  6c 64 6d 66 64 09 72 31  |Module..ldmfd.r1|
00000430  33 21 2c 20 7b 70 63 7d  5e 0a 44 65 6c 65 74 65  |3!, {pc}^.Delete|
00000440  5f 4d 6f 64 75 6c 65 0a  09 73 74 6d 66 64 09 72  |_Module..stmfd.r|
00000450  31 33 21 2c 20 7b 72 31  34 7d 0a 09 6d 6f 76 09  |13!, {r14}..mov.|
00000460  72 30 2c 20 23 34 0a 09  61 64 72 09 72 31 2c 20  |r0, #4..adr.r1, |
00000470  4d 6f 64 75 6c 65 5f 54  69 74 6c 65 0a 09 73 77  |Module_Title..sw|
00000480  69 09 58 4f 53 5f 4d 6f  64 75 6c 65 0a 09 6c 64  |i.XOS_Module..ld|
00000490  6d 66 64 09 72 31 33 21  2c 20 7b 70 63 7d 5e 0a  |mfd.r13!, {pc}^.|
000004a0  0a 4b 65 79 5f 43 6f 64  65 0a 09 73 74 6d 66 64  |.Key_Code..stmfd|
000004b0  09 72 31 33 21 2c 20 7b  72 31 34 7d 0a 09 6d 6f  |.r13!, {r14}..mo|
000004c0  76 09 72 30 2c 20 23 33  0a 09 73 77 69 09 58 57  |v.r0, #3..swi.XW|
000004d0  69 6d 70 5f 52 65 61 64  53 79 73 49 6e 66 6f 0a  |imp_ReadSysInfo.|
000004e0  09 6c 64 6d 76 73 66 64  09 72 31 33 21 2c 20 7b  |.ldmvsfd.r13!, {|
000004f0  70 63 7d 5e 0a 09 63 6d  70 09 72 30 2c 20 23 31  |pc}^..cmp.r0, #1|
00000500  0a 09 6c 64 6d 6e 65 66  64 09 72 31 33 21 2c 20  |..ldmnefd.r13!, |
00000510  7b 70 63 7d 5e 0a 09 73  74 72 09 72 30 2c 20 47  |{pc}^..str.r0, G|
00000520  72 61 62 5f 41 74 74 65  6e 74 69 6f 6e 0a 09 6c  |rab_Attention..l|
00000530  64 6d 66 64 09 72 31 33  21 2c 20 7b 70 63 7d 5e  |dmfd.r13!, {pc}^|
00000540  0a 0a 0a 3b 09 2a 2a 2a  2a 2a 2a 2a 2a 2a 2a 2a  |...;.***********|
00000550  2a 2a 2a 2a 2a 2a 2a 2a  2a 2a 2a 2a 2a 2a 2a 2a  |****************|
*
00000580  2a 2a 2a 2a 2a 2a 2a 2a  2a 0a 3b 09 4d 6f 64 75  |*********.;.Modu|
00000590  6c 65 20 68 65 61 64 65  72 0a 3b 09 2a 2a 2a 2a  |le header.;.****|
000005a0  2a 2a 2a 2a 2a 2a 2a 2a  2a 2a 2a 2a 2a 2a 2a 2a  |****************|
*
000005e0  0a 0a 09 44 43 44 09 4d  6f 64 75 6c 65 5f 45 6e  |...DCD.Module_En|
000005f0  64 20 2d 20 4d 6f 64 75  6c 65 5f 53 74 61 72 74  |d - Module_Start|
00000600  0a 4d 6f 64 75 6c 65 5f  53 74 61 72 74 0a 09 44  |.Module_Start..D|
00000610  43 44 09 41 70 70 6c 69  63 61 74 69 6f 6e 09 09  |CD.Application..|
00000620  2d 20 4d 6f 64 75 6c 65  5f 53 74 61 72 74 0a 09  |- Module_Start..|
00000630  44 43 44 09 49 6e 69 74  69 61 6c 69 73 65 09 09  |DCD.Initialise..|
00000640  2d 20 4d 6f 64 75 6c 65  5f 53 74 61 72 74 0a 09  |- Module_Start..|
00000650  44 43 44 09 46 69 6e 61  6c 69 73 65 09 09 2d 20  |DCD.Finalise..- |
00000660  4d 6f 64 75 6c 65 5f 53  74 61 72 74 0a 09 44 43  |Module_Start..DC|
00000670  44 09 53 65 72 76 69 63  65 09 09 09 2d 20 4d 6f  |D.Service...- Mo|
00000680  64 75 6c 65 5f 53 74 61  72 74 0a 09 44 43 44 09  |dule_Start..DCD.|
00000690  4d 6f 64 75 6c 65 5f 54  69 74 6c 65 09 09 2d 20  |Module_Title..- |
000006a0  4d 6f 64 75 6c 65 5f 53  74 61 72 74 0a 09 44 43  |Module_Start..DC|
000006b0  44 09 4d 6f 64 75 6c 65  5f 48 65 6c 70 09 09 2d  |D.Module_Help..-|
000006c0  20 4d 6f 64 75 6c 65 5f  53 74 61 72 74 0a 09 44  | Module_Start..D|
000006d0  43 44 09 43 6f 6d 6d 61  6e 64 5f 54 61 62 6c 65  |CD.Command_Table|
000006e0  09 09 2d 20 4d 6f 64 75  6c 65 5f 53 74 61 72 74  |..- Module_Start|
000006f0  0a 09 44 43 44 09 30 0a  09 44 43 44 09 30 0a 09  |..DCD.0..DCD.0..|
00000700  44 43 44 09 30 0a 09 44  43 44 09 30 0a 0a 0a 3b  |DCD.0..DCD.0...;|
00000710  09 2a 2a 2a 2a 2a 2a 2a  2a 2a 2a 2a 2a 2a 2a 2a  |.***************|
00000720  2a 2a 2a 2a 2a 2a 2a 2a  2a 2a 2a 2a 2a 2a 2a 2a  |****************|
*
00000750  2a 2a 2a 2a 2a 0a 3b 09  4d 6f 64 75 6c 65 20 64  |*****.;.Module d|
00000760  61 74 61 0a 3b 09 2a 2a  2a 2a 2a 2a 2a 2a 2a 2a  |ata.;.**********|
00000770  2a 2a 2a 2a 2a 2a 2a 2a  2a 2a 2a 2a 2a 2a 2a 2a  |****************|
*
000007a0  2a 2a 2a 2a 2a 2a 2a 2a  2a 2a 0a 0a 4d 6f 64 75  |**********..Modu|
000007b0  6c 65 5f 54 69 74 6c 65  0a 09 3d 09 22 52 65 61  |le_Title..=."Rea|
000007c0  64 49 63 6f 6e 22 2c 20  30 0a 0a 4d 6f 64 75 6c  |dIcon", 0..Modul|
000007d0  65 5f 48 65 6c 70 0a 09  3d 09 22 52 65 61 64 49  |e_Help..=."ReadI|
000007e0  63 6f 6e 22 2c 20 39 0a  09 3d 09 22 30 2e 31 31  |con", 9..=."0.11|
000007f0  20 28 30 31 20 41 75 67  20 31 39 39 36 29 22 2c  | (01 Aug 1996)",|
00000800  20 30 0a 09 41 4c 49 47  4e 0a 0a 43 6f 6d 6d 61  | 0..ALIGN..Comma|
00000810  6e 64 5f 54 61 62 6c 65  0a 09 3d 09 22 44 65 73  |nd_Table..=."Des|
00000820  6b 74 6f 70 5f 52 65 61  64 49 63 6f 6e 22 2c 20  |ktop_ReadIcon", |
00000830  30 0a 09 41 4c 49 47 4e  0a 09 44 43 44 09 44 65  |0..ALIGN..DCD.De|
00000840  73 6b 74 6f 70 5f 52 65  61 64 49 63 6f 6e 09 2d  |sktop_ReadIcon.-|
00000850  20 4d 6f 64 75 6c 65 5f  53 74 61 72 74 0a 09 3d  | Module_Start..=|
00000860  09 30 2c 20 30 2c 20 30  2c 20 30 0a 09 44 43 44  |.0, 0, 0, 0..DCD|
00000870  09 44 65 73 6b 74 6f 70  5f 52 65 61 64 49 63 6f  |.Desktop_ReadIco|
00000880  6e 5f 53 79 6e 74 61 78  09 2d 20 4d 6f 64 75 6c  |n_Syntax.- Modul|
00000890  65 5f 53 74 61 72 74 0a  09 44 43 44 09 44 65 73  |e_Start..DCD.Des|
000008a0  6b 74 6f 70 5f 52 65 61  64 49 63 6f 6e 5f 48 65  |ktop_ReadIcon_He|
000008b0  6c 70 09 2d 20 4d 6f 64  75 6c 65 5f 53 74 61 72  |lp.- Module_Star|
000008c0  74 0a 09 44 43 44 09 30  0a 0a 44 65 73 6b 74 6f  |t..DCD.0..Deskto|
000008d0  70 5f 52 65 61 64 49 63  6f 6e 5f 48 65 6c 70 0a  |p_ReadIcon_Help.|
000008e0  09 3d 09 22 2a 44 65 73  6b 74 6f 70 5f 52 65 61  |.=."*Desktop_Rea|
000008f0  64 49 63 6f 6e 20 73 74  61 72 74 73 20 75 70 20  |dIcon starts up |
00000900  61 20 74 61 73 6b 20 74  6f 20 72 65 61 64 20 74  |a task to read t|
00000910  68 65 20 74 65 78 74 20  66 72 6f 6d 20 69 63 6f  |he text from ico|
00000920  6e 73 2e 22 2c 20 31 33  0a 44 65 73 6b 74 6f 70  |ns.", 13.Desktop|
00000930  5f 52 65 61 64 49 63 6f  6e 5f 53 79 6e 74 61 78  |_ReadIcon_Syntax|
00000940  0a 09 3d 09 22 44 6f 20  6e 6f 74 20 75 73 65 20  |..=."Do not use |
00000950  2a 44 65 73 6b 74 6f 70  5f 52 65 61 64 49 63 6f  |*Desktop_ReadIco|
00000960  6e 2c 20 75 73 65 20 2a  44 65 73 6b 74 6f 70 20  |n, use *Desktop |
00000970  69 6e 73 74 65 61 64 2e  22 2c 20 30 0a 09 41 4c  |instead.", 0..AL|
00000980  49 47 4e 0a 0a 54 65 78  74 5f 56 61 72 69 61 62  |IGN..Text_Variab|
00000990  6c 65 0a 09 3d 09 22 49  63 6f 6e 24 54 65 78 74  |le..=."Icon$Text|
000009a0  22 2c 20 30 0a 09 41 4c  49 47 4e 0a 0a 47 72 61  |", 0..ALIGN..Gra|
000009b0  62 5f 41 74 74 65 6e 74  69 6f 6e 0a 09 44 43 44  |b_Attention..DCD|
000009c0  09 30 0a 50 6f 6c 6c 5f  4d 61 73 6b 0a 09 44 43  |.0.Poll_Mask..DC|
000009d0  44 09 32 5f 31 30 30 31  30 30 30 30 30 30 31 31  |D.2_100100000011|
000009e0  30 30 31 30 31 31 31 30  30 31 31 0a 41 63 63 65  |00101110011.Acce|
000009f0  70 74 65 64 5f 4d 65 73  73 61 67 65 73 0a 09 44  |pted_Messages..D|
00000a00  43 44 09 30 0a 54 41 53  4b 0a 09 3d 09 22 54 41  |CD.0.TASK..=."TA|
00000a10  53 4b 22 0a 0a 0a 3b 09  2a 2a 2a 2a 2a 2a 2a 2a  |SK"...;.********|
00000a20  2a 2a 2a 2a 2a 2a 2a 2a  2a 2a 2a 2a 2a 2a 2a 2a  |****************|
*
00000a50  2a 2a 2a 2a 2a 2a 2a 2a  2a 2a 2a 2a 0a 3b 09 4d  |************.;.M|
00000a60  6f 64 75 6c 65 20 63 6f  64 65 0a 3b 09 2a 2a 2a  |odule code.;.***|
00000a70  2a 2a 2a 2a 2a 2a 2a 2a  2a 2a 2a 2a 2a 2a 2a 2a  |****************|
*
00000ab0  2a 0a 0a 49 6e 69 74 69  61 6c 69 73 65 0a 09 73  |*..Initialise..s|
00000ac0  74 6d 66 64 09 72 31 33  21 2c 20 7b 72 37 2d 72  |tmfd.r13!, {r7-r|
00000ad0  31 31 2c 20 72 31 34 7d  0a 09 6d 6f 76 09 72 30  |11, r14}..mov.r0|
00000ae0  2c 20 23 36 0a 09 6d 6f  76 09 72 33 2c 20 23 57  |, #6..mov.r3, #W|
00000af0  6f 72 6b 73 70 61 63 65  5f 4e 65 65 64 65 64 0a  |orkspace_Needed.|
00000b00  09 73 77 69 09 58 4f 53  5f 4d 6f 64 75 6c 65 0a  |.swi.XOS_Module.|
00000b10  09 6c 64 6d 76 73 66 64  09 72 31 33 21 2c 20 7b  |.ldmvsfd.r13!, {|
00000b20  72 37 2d 72 31 31 2c 20  70 63 7d 0a 09 73 74 72  |r7-r11, pc}..str|
00000b30  09 72 32 2c 20 5b 72 31  32 2c 20 23 30 5d 0a 09  |.r2, [r12, #0]..|
00000b40  6d 6f 76 09 72 31 32 2c  20 72 32 0a 09 6d 6f 76  |mov.r12, r2..mov|
00000b50  09 72 30 2c 20 23 30 0a  09 73 74 72 09 72 30 2c  |.r0, #0..str.r0,|
00000b60  20 47 72 61 62 5f 41 74  74 65 6e 74 69 6f 6e 0a  | Grab_Attention.|
00000b70  09 73 74 72 09 72 30 2c  20 5b 72 31 32 2c 20 23  |.str.r0, [r12, #|
00000b80  54 61 73 6b 5f 48 61 6e  64 6c 65 5d 0a 09 6c 64  |Task_Handle]..ld|
00000b90  6d 66 64 09 72 31 33 21  2c 20 7b 72 37 2d 72 31  |mfd.r13!, {r7-r1|
00000ba0  31 2c 20 70 63 7d 5e 0a  0a 46 69 6e 61 6c 69 73  |1, pc}^..Finalis|
00000bb0  65 0a 09 73 74 6d 66 64  09 72 31 33 21 2c 20 7b  |e..stmfd.r13!, {|
00000bc0  72 37 2d 72 31 31 2c 20  72 31 34 7d 0a 09 6c 64  |r7-r11, r14}..ld|
00000bd0  72 09 72 31 32 2c 20 5b  72 31 32 2c 20 23 30 5d  |r.r12, [r12, #0]|
00000be0  0a 09 6c 64 72 09 72 30  2c 20 5b 72 31 32 2c 20  |..ldr.r0, [r12, |
00000bf0  23 54 61 73 6b 5f 48 61  6e 64 6c 65 5d 0a 09 63  |#Task_Handle]..c|
00000c00  6d 70 09 72 30 2c 20 23  30 0a 09 6c 64 72 67 74  |mp.r0, #0..ldrgt|
00000c10  09 72 31 2c 20 54 41 53  4b 0a 09 73 77 69 67 74  |.r1, TASK..swigt|
00000c20  09 58 57 69 6d 70 5f 43  6c 6f 73 65 44 6f 77 6e  |.XWimp_CloseDown|
00000c30  0a 09 6d 6f 76 09 72 30  2c 20 23 37 0a 09 6d 6f  |..mov.r0, #7..mo|
00000c40  76 09 72 32 2c 20 72 31  32 0a 09 73 77 69 09 58  |v.r2, r12..swi.X|
00000c50  4f 53 5f 4d 6f 64 75 6c  65 0a 09 6c 64 6d 66 64  |OS_Module..ldmfd|
00000c60  09 72 31 33 21 2c 20 7b  72 37 2d 72 31 31 2c 20  |.r13!, {r7-r11, |
00000c70  70 63 7d 5e 0a 0a 53 65  72 76 69 63 65 0a 09 63  |pc}^..Service..c|
00000c80  6d 70 09 72 31 2c 20 23  26 32 37 0a 09 63 6d 70  |mp.r1, #&27..cmp|
00000c90  6e 65 09 72 31 2c 20 23  26 34 39 0a 09 63 6d 70  |ne.r1, #&49..cmp|
00000ca0  6e 65 09 72 31 2c 20 23  26 34 41 0a 09 6d 6f 76  |ne.r1, #&4A..mov|
00000cb0  6e 65 73 09 70 63 2c 20  72 31 34 0a 09 73 74 6d  |nes.pc, r14..stm|
00000cc0  66 64 09 72 31 33 21 2c  20 7b 72 30 2d 72 31 31  |fd.r13!, {r0-r11|
00000cd0  2c 20 72 31 34 7d 0a 09  6c 64 72 09 72 31 32 2c  |, r14}..ldr.r12,|
00000ce0  20 5b 72 31 32 2c 20 23  30 5d 0a 09 63 6d 70 09  | [r12, #0]..cmp.|
00000cf0  72 31 2c 20 23 26 32 37  0a 09 6d 6f 76 65 71 09  |r1, #&27..moveq.|
00000d00  72 31 2c 20 23 30 0a 09  73 74 72 65 71 09 72 31  |r1, #0..streq.r1|
00000d10  2c 20 5b 72 31 32 2c 20  23 54 61 73 6b 5f 48 61  |, [r12, #Task_Ha|
00000d20  6e 64 6c 65 5d 0a 09 6c  64 6d 65 71 66 64 09 72  |ndle]..ldmeqfd.r|
00000d30  31 33 21 2c 20 7b 72 30  2d 72 31 31 2c 20 70 63  |13!, {r0-r11, pc|
00000d40  7d 5e 0a 09 63 6d 70 09  72 31 2c 20 23 26 34 39  |}^..cmp.r1, #&49|
00000d50  0a 09 62 65 71 09 53 65  72 76 69 63 65 5f 53 74  |..beq.Service_St|
00000d60  61 72 74 57 69 6d 70 0a  09 63 6d 70 09 72 31 2c  |artWimp..cmp.r1,|
00000d70  20 23 26 34 41 0a 09 62  65 71 09 53 65 72 76 69  | #&4A..beq.Servi|
00000d80  63 65 5f 53 74 61 72 74  65 64 57 69 6d 70 0a 09  |ce_StartedWimp..|
00000d90  6c 64 6d 66 64 09 72 31  33 21 2c 20 7b 72 30 2d  |ldmfd.r13!, {r0-|
00000da0  72 31 31 2c 20 70 63 7d  5e 0a 53 65 72 76 69 63  |r11, pc}^.Servic|
00000db0  65 5f 53 74 61 72 74 57  69 6d 70 0a 09 6c 64 72  |e_StartWimp..ldr|
00000dc0  09 72 30 2c 20 5b 72 31  32 2c 20 23 54 61 73 6b  |.r0, [r12, #Task|
00000dd0  5f 48 61 6e 64 6c 65 5d  0a 09 63 6d 70 09 72 30  |_Handle]..cmp.r0|
00000de0  2c 20 23 30 0a 09 6c 64  6d 6e 65 66 64 09 72 31  |, #0..ldmnefd.r1|
00000df0  33 21 2c 20 7b 72 30 2d  72 31 31 2c 20 70 63 7d  |3!, {r0-r11, pc}|
00000e00  5e 0a 09 6d 76 6e 09 72  30 2c 20 23 30 0a 09 73  |^..mvn.r0, #0..s|
00000e10  74 72 09 72 30 2c 20 5b  72 31 32 2c 20 23 54 61  |tr.r0, [r12, #Ta|
00000e20  73 6b 5f 48 61 6e 64 6c  65 5d 0a 09 61 64 72 09  |sk_Handle]..adr.|
00000e30  72 30 2c 20 43 6f 6d 6d  61 6e 64 5f 54 61 62 6c  |r0, Command_Tabl|
00000e40  65 0a 09 6d 6f 76 09 72  31 2c 20 23 30 0a 09 61  |e..mov.r1, #0..a|
00000e50  64 64 09 72 31 33 2c 20  72 31 33 2c 20 23 38 0a  |dd.r13, r13, #8.|
00000e60  09 6c 64 6d 66 64 09 72  31 33 21 2c 20 7b 72 32  |.ldmfd.r13!, {r2|
00000e70  2d 72 31 31 2c 20 70 63  7d 5e 0a 53 65 72 76 69  |-r11, pc}^.Servi|
00000e80  63 65 5f 53 74 61 72 74  65 64 57 69 6d 70 0a 09  |ce_StartedWimp..|
00000e90  6c 64 72 09 72 30 2c 20  5b 72 31 32 2c 20 23 54  |ldr.r0, [r12, #T|
00000ea0  61 73 6b 5f 48 61 6e 64  6c 65 5d 0a 09 63 6d 6e  |ask_Handle]..cmn|
00000eb0  09 72 30 2c 20 23 31 0a  09 6d 6f 76 65 71 09 72  |.r0, #1..moveq.r|
00000ec0  30 2c 20 23 30 0a 09 73  74 72 65 71 09 72 30 2c  |0, #0..streq.r0,|
00000ed0  20 5b 72 31 32 2c 20 23  54 61 73 6b 5f 48 61 6e  | [r12, #Task_Han|
00000ee0  64 6c 65 5d 0a 09 6c 64  6d 66 64 09 72 31 33 21  |dle]..ldmfd.r13!|
00000ef0  2c 20 7b 72 30 2d 72 31  31 2c 20 70 63 7d 5e 0a  |, {r0-r11, pc}^.|
00000f00  0a 44 65 73 6b 74 6f 70  5f 52 65 61 64 49 63 6f  |.Desktop_ReadIco|
00000f10  6e 0a 09 73 74 6d 66 64  09 72 31 33 21 2c 20 7b  |n..stmfd.r13!, {|
00000f20  72 31 34 7d 0a 09 6d 6f  76 09 72 32 2c 20 72 30  |r14}..mov.r2, r0|
00000f30  0a 09 6d 6f 76 09 72 30  2c 20 23 32 0a 09 61 64  |..mov.r0, #2..ad|
00000f40  72 09 72 31 2c 20 4d 6f  64 75 6c 65 5f 54 69 74  |r.r1, Module_Tit|
00000f50  6c 65 0a 09 73 77 69 09  58 4f 53 5f 4d 6f 64 75  |le..swi.XOS_Modu|
00000f60  6c 65 0a 09 6c 64 6d 66  64 09 72 31 33 21 2c 20  |le..ldmfd.r13!, |
00000f70  7b 70 63 7d 5e 0a 0a 41  70 70 6c 69 63 61 74 69  |{pc}^..Applicati|
00000f80  6f 6e 0a 09 6c 64 72 09  72 31 32 2c 20 5b 72 31  |on..ldr.r12, [r1|
00000f90  32 2c 20 23 30 5d 0a 09  6c 64 72 09 72 30 2c 20  |2, #0]..ldr.r0, |
00000fa0  5b 72 31 32 2c 20 23 54  61 73 6b 5f 48 61 6e 64  |[r12, #Task_Hand|
00000fb0  6c 65 5d 0a 09 63 6d 70  09 72 30 2c 20 23 30 0a  |le]..cmp.r0, #0.|
00000fc0  09 6c 64 72 67 74 09 72  31 2c 20 54 41 53 4b 0a  |.ldrgt.r1, TASK.|
00000fd0  09 73 77 69 67 74 09 58  57 69 6d 70 5f 43 6c 6f  |.swigt.XWimp_Clo|
00000fe0  73 65 44 6f 77 6e 0a 09  6d 6f 76 67 74 09 72 30  |seDown..movgt.r0|
00000ff0  2c 20 23 30 0a 09 73 74  72 67 74 09 72 30 2c 20  |, #0..strgt.r0, |
00001000  5b 72 31 32 2c 20 23 54  61 73 6b 5f 48 61 6e 64  |[r12, #Task_Hand|
00001010  6c 65 5d 0a 09 6d 6f 76  09 72 30 2c 20 23 33 30  |le]..mov.r0, #30|
00001020  30 0a 09 6c 64 72 09 72  31 2c 20 54 41 53 4b 0a  |0..ldr.r1, TASK.|
00001030  09 61 64 72 09 72 32 2c  20 4d 6f 64 75 6c 65 5f  |.adr.r2, Module_|
00001040  54 69 74 6c 65 0a 09 61  64 72 09 72 33 2c 20 41  |Title..adr.r3, A|
00001050  63 63 65 70 74 65 64 5f  4d 65 73 73 61 67 65 73  |ccepted_Messages|
00001060  0a 09 73 77 69 09 58 57  69 6d 70 5f 49 6e 69 74  |..swi.XWimp_Init|
00001070  69 61 6c 69 73 65 0a 09  73 77 69 76 73 09 4f 53  |ialise..swivs.OS|
00001080  5f 45 78 69 74 0a 09 73  74 72 09 72 31 2c 20 5b  |_Exit..str.r1, [|
00001090  72 31 32 2c 20 23 54 61  73 6b 5f 48 61 6e 64 6c  |r12, #Task_Handl|
000010a0  65 5d 0a 50 6f 6c 6c 69  6e 67 5f 4c 6f 6f 70 0a  |e].Polling_Loop.|
000010b0  09 6c 64 72 09 72 30 2c  20 50 6f 6c 6c 5f 4d 61  |.ldr.r0, Poll_Ma|
000010c0  73 6b 0a 09 61 64 64 09  72 31 2c 20 72 31 32 2c  |sk..add.r1, r12,|
000010d0  20 23 50 6f 6c 6c 5f 42  6c 6f 63 6b 0a 09 61 64  | #Poll_Block..ad|
000010e0  72 09 72 33 2c 20 47 72  61 62 5f 41 74 74 65 6e  |r.r3, Grab_Atten|
000010f0  74 69 6f 6e 0a 09 73 77  69 09 57 69 6d 70 5f 50  |tion..swi.Wimp_P|
00001100  6f 6c 6c 0a 09 63 6d 70  09 72 30 2c 20 23 31 33  |oll..cmp.r0, #13|
00001110  0a 09 62 65 71 09 52 65  61 64 5f 49 63 6f 6e 0a  |..beq.Read_Icon.|
00001120  09 63 6d 70 09 72 30 2c  20 23 31 37 0a 09 63 6d  |.cmp.r0, #17..cm|
00001130  70 6e 65 09 72 30 2c 20  23 31 38 0a 09 62 6e 65  |pne.r0, #18..bne|
00001140  09 50 6f 6c 6c 69 6e 67  5f 4c 6f 6f 70 0a 09 6c  |.Polling_Loop..l|
00001150  64 72 09 72 30 2c 20 5b  72 31 2c 20 23 31 36 5d  |dr.r0, [r1, #16]|
00001160  0a 09 63 6d 70 09 72 30  2c 20 23 30 0a 09 62 6e  |..cmp.r0, #0..bn|
00001170  65 09 50 6f 6c 6c 69 6e  67 5f 4c 6f 6f 70 0a 09  |e.Polling_Loop..|
00001180  6c 64 72 09 72 30 2c 20  5b 72 31 32 2c 20 23 54  |ldr.r0, [r12, #T|
00001190  61 73 6b 5f 48 61 6e 64  6c 65 5d 0a 09 6c 64 72  |ask_Handle]..ldr|
000011a0  09 72 31 2c 20 54 41 53  4b 0a 09 73 77 69 09 58  |.r1, TASK..swi.X|
000011b0  57 69 6d 70 5f 43 6c 6f  73 65 44 6f 77 6e 0a 09  |Wimp_CloseDown..|
000011c0  6d 6f 76 09 72 30 2c 20  23 30 0a 09 73 74 72 09  |mov.r0, #0..str.|
000011d0  72 30 2c 20 5b 72 31 32  2c 20 23 54 61 73 6b 5f  |r0, [r12, #Task_|
000011e0  48 61 6e 64 6c 65 5d 0a  09 73 77 69 09 4f 53 5f  |Handle]..swi.OS_|
000011f0  45 78 69 74 0a 0a 52 65  61 64 5f 49 63 6f 6e 0a  |Exit..Read_Icon.|
00001200  09 6d 6f 76 09 72 37 2c  20 23 30 0a 09 3b 20 70  |.mov.r7, #0..; p|
00001210  6f 69 6e 74 65 72 20 74  6f 20 6d 65 6d 6f 72 79  |ointer to memory|
00001220  20 63 6c 61 69 6d 65 64  20 66 72 6f 6d 20 52 4d  | claimed from RM|
00001230  41 0a 09 61 64 64 09 72  31 2c 20 72 31 32 2c 20  |A..add.r1, r12, |
00001240  23 50 6f 6c 6c 5f 42 6c  6f 63 6b 0a 09 73 77 69  |#Poll_Block..swi|
00001250  09 58 57 69 6d 70 5f 47  65 74 50 6f 69 6e 74 65  |.XWimp_GetPointe|
00001260  72 49 6e 66 6f 0a 09 62  76 73 09 52 65 61 64 5f  |rInfo..bvs.Read_|
00001270  49 63 6f 6e 5f 45 6e 64  0a 09 6c 64 72 09 72 38  |Icon_End..ldr.r8|
00001280  2c 20 5b 72 31 32 2c 20  23 50 6f 6c 6c 5f 42 6c  |, [r12, #Poll_Bl|
00001290  6f 63 6b 20 2b 20 31 32  5d 0a 09 3b 20 72 38 20  |ock + 12]..; r8 |
000012a0  3d 20 77 69 6e 64 6f 77  20 68 61 6e 64 6c 65 0a  |= window handle.|
000012b0  09 6c 64 72 09 72 39 2c  20 5b 72 31 32 2c 20 23  |.ldr.r9, [r12, #|
000012c0  50 6f 6c 6c 5f 42 6c 6f  63 6b 20 2b 20 31 36 5d  |Poll_Block + 16]|
000012d0  0a 09 3b 20 72 39 20 3d  20 69 63 6f 6e 20 68 61  |..; r9 = icon ha|
000012e0  6e 64 6c 65 0a 09 6d 6f  76 09 72 30 2c 20 23 32  |ndle..mov.r0, #2|
000012f0  30 0a 09 73 74 72 09 72  30 2c 20 5b 72 31 32 2c  |0..str.r0, [r12,|
00001300  20 23 50 6f 6c 6c 5f 42  6c 6f 63 6b 20 2b 20 30  | #Poll_Block + 0|
00001310  5d 0a 09 6d 6f 76 09 72  30 2c 20 23 30 0a 09 73  |]..mov.r0, #0..s|
00001320  74 72 09 72 30 2c 20 5b  72 31 32 2c 20 23 50 6f  |tr.r0, [r12, #Po|
00001330  6c 6c 5f 42 6c 6f 63 6b  20 2b 20 31 32 5d 0a 09  |ll_Block + 12]..|
00001340  6d 6f 76 09 72 30 2c 20  23 31 39 0a 09 6d 6f 76  |mov.r0, #19..mov|
00001350  09 72 32 2c 20 72 38 0a  09 6d 6f 76 09 72 33 2c  |.r2, r8..mov.r3,|
00001360  20 72 39 0a 09 73 77 69  09 58 57 69 6d 70 5f 53  | r9..swi.XWimp_S|
00001370  65 6e 64 4d 65 73 73 61  67 65 0a 09 62 76 73 09  |endMessage..bvs.|
00001380  52 65 61 64 5f 49 63 6f  6e 5f 45 6e 64 0a 09 6d  |Read_Icon_End..m|
00001390  6f 76 09 72 31 30 2c 20  72 32 0a 09 3b 20 72 31  |ov.r10, r2..; r1|
000013a0  30 20 3d 20 74 61 73 6b  20 68 61 6e 64 6c 65 0a  |0 = task handle.|
000013b0  09 73 74 72 09 72 38 2c  20 5b 72 31 32 2c 20 23  |.str.r8, [r12, #|
000013c0  50 6f 6c 6c 5f 42 6c 6f  63 6b 20 2b 20 30 5d 0a  |Poll_Block + 0].|
000013d0  09 73 74 72 09 72 39 2c  20 5b 72 31 32 2c 20 23  |.str.r9, [r12, #|
000013e0  50 6f 6c 6c 5f 42 6c 6f  63 6b 20 2b 20 34 5d 0a  |Poll_Block + 4].|
000013f0  09 73 77 69 09 58 57 69  6d 70 5f 47 65 74 49 63  |.swi.XWimp_GetIc|
00001400  6f 6e 53 74 61 74 65 0a  09 62 76 73 09 52 65 61  |onState..bvs.Rea|
00001410  64 5f 49 63 6f 6e 5f 45  6e 64 0a 09 6c 64 72 09  |d_Icon_End..ldr.|
00001420  72 30 2c 20 5b 72 31 32  2c 20 23 50 6f 6c 6c 5f  |r0, [r12, #Poll_|
00001430  42 6c 6f 63 6b 20 2b 20  38 20 2b 20 31 36 5d 0a  |Block + 8 + 16].|
00001440  09 74 73 74 09 72 30 2c  20 23 31 20 3c 3c 20 30  |.tst.r0, #1 << 0|
00001450  0a 09 62 65 71 09 52 65  61 64 5f 49 63 6f 6e 5f  |..beq.Read_Icon_|
00001460  45 6e 64 0a 09 74 73 74  09 72 30 2c 20 23 31 20  |End..tst.r0, #1 |
00001470  3c 3c 20 38 0a 09 61 64  64 65 71 09 72 31 2c 20  |<< 8..addeq.r1, |
00001480  72 31 32 2c 20 23 50 6f  6c 6c 5f 42 6c 6f 63 6b  |r12, #Poll_Block|
00001490  20 2b 20 38 20 2b 20 32  30 0a 09 6d 6f 76 65 71  | + 8 + 20..moveq|
000014a0  09 72 32 2c 20 23 31 32  0a 09 6c 64 72 6e 65 09  |.r2, #12..ldrne.|
000014b0  72 31 2c 20 5b 72 31 32  2c 20 23 50 6f 6c 6c 5f  |r1, [r12, #Poll_|
000014c0  42 6c 6f 63 6b 20 2b 20  38 20 2b 20 32 30 5d 0a  |Block + 8 + 20].|
000014d0  09 6c 64 72 6e 65 09 72  32 2c 20 5b 72 31 32 2c  |.ldrne.r2, [r12,|
000014e0  20 23 50 6f 6c 6c 5f 42  6c 6f 63 6b 20 2b 20 38  | #Poll_Block + 8|
000014f0  20 2b 20 32 38 5d 0a 09  63 6d 70 6e 65 09 72 31  | + 28]..cmpne.r1|
00001500  30 2c 20 23 30 0a 09 62  6c 6e 65 09 43 6f 70 79  |0, #0..blne.Copy|
00001510  5f 49 6e 64 69 72 65 63  74 65 64 5f 49 63 6f 6e  |_Indirected_Icon|
00001520  0a 09 6d 6f 76 09 72 30  2c 20 23 30 0a 43 6f 75  |..mov.r0, #0.Cou|
00001530  6e 74 5f 49 63 6f 6e 5f  54 65 78 74 0a 09 6c 64  |nt_Icon_Text..ld|
00001540  72 62 09 72 33 2c 20 5b  72 31 2c 20 72 30 5d 0a  |rb.r3, [r1, r0].|
00001550  09 63 6d 70 09 72 33 2c  20 23 33 31 0a 09 63 6d  |.cmp.r3, #31..cm|
00001560  70 67 74 09 72 32 2c 20  72 30 0a 09 61 64 64 67  |pgt.r2, r0..addg|
00001570  74 09 72 30 2c 20 72 30  2c 20 23 31 0a 09 62 67  |t.r0, r0, #1..bg|
00001580  74 09 43 6f 75 6e 74 5f  49 63 6f 6e 5f 54 65 78  |t.Count_Icon_Tex|
00001590  74 0a 09 6d 6f 76 09 72  32 2c 20 72 30 0a 09 61  |t..mov.r2, r0..a|
000015a0  64 72 09 72 30 2c 20 54  65 78 74 5f 56 61 72 69  |dr.r0, Text_Vari|
000015b0  61 62 6c 65 0a 09 6d 6f  76 09 72 33 2c 20 23 30  |able..mov.r3, #0|
000015c0  0a 09 6d 6f 76 09 72 34  2c 20 23 34 0a 09 73 77  |..mov.r4, #4..sw|
000015d0  69 09 58 4f 53 5f 53 65  74 56 61 72 56 61 6c 0a  |i.XOS_SetVarVal.|
000015e0  09 62 76 73 09 52 65 61  64 5f 49 63 6f 6e 5f 45  |.bvs.Read_Icon_E|
000015f0  6e 64 0a 3b 09 6d 6f 76  09 72 30 2c 20 23 31 0a  |nd.;.mov.r0, #1.|
00001600  3b 09 6d 76 6e 09 72 31  2c 20 23 31 34 0a 3b 09  |;.mvn.r1, #14.;.|
00001610  6d 6f 76 09 72 32 2c 20  23 31 32 30 0a 3b 09 6d  |mov.r2, #120.;.m|
00001620  6f 76 09 72 33 2c 20 23  31 0a 3b 09 73 77 69 09  |ov.r3, #1.;.swi.|
00001630  58 53 6f 75 6e 64 5f 43  6f 6e 74 72 6f 6c 0a 52  |XSound_Control.R|
00001640  65 61 64 5f 49 63 6f 6e  5f 45 6e 64 0a 09 63 6d  |ead_Icon_End..cm|
00001650  70 09 72 37 2c 20 23 30  0a 09 6d 6f 76 6e 65 09  |p.r7, #0..movne.|
00001660  72 30 2c 20 23 37 0a 09  6d 6f 76 6e 65 09 72 32  |r0, #7..movne.r2|
00001670  2c 20 72 37 0a 09 73 77  69 6e 65 09 58 4f 53 5f  |, r7..swine.XOS_|
00001680  4d 6f 64 75 6c 65 0a 09  6d 6f 76 09 72 30 2c 20  |Module..mov.r0, |
00001690  23 30 0a 09 73 74 72 09  72 30 2c 20 47 72 61 62  |#0..str.r0, Grab|
000016a0  5f 41 74 74 65 6e 74 69  6f 6e 0a 09 62 09 50 6f  |_Attention..b.Po|
000016b0  6c 6c 69 6e 67 5f 4c 6f  6f 70 0a 43 6f 70 79 5f  |lling_Loop.Copy_|
000016c0  49 6e 64 69 72 65 63 74  65 64 5f 49 63 6f 6e 0a  |Indirected_Icon.|
000016d0  09 6d 6f 76 09 72 38 2c  20 72 31 0a 09 3b 20 69  |.mov.r8, r1..; i|
000016e0  63 6f 6e 20 68 61 6e 64  6c 65 20 6e 6f 74 20 6e  |con handle not n|
000016f0  65 65 64 65 64 20 61 6e  79 20 6d 6f 72 65 2c 20  |eeded any more, |
00001700  73 6f 20 75 73 65 20 69  74 20 74 6f 20 73 74 6f  |so use it to sto|
00001710  72 65 20 64 61 74 61 20  70 6f 69 6e 74 65 72 0a  |re data pointer.|
00001720  09 6d 6f 76 09 72 39 2c  20 72 32 0a 09 3b 20 77  |.mov.r9, r2..; w|
00001730  69 6e 64 6f 77 20 68 61  6e 64 6c 65 20 6e 6f 74  |indow handle not|
00001740  20 6e 65 65 64 65 64 20  61 6e 79 20 6d 6f 72 65  | needed any more|
00001750  2c 20 73 6f 20 75 73 65  20 69 74 20 74 6f 20 73  |, so use it to s|
00001760  74 6f 72 65 20 62 75 66  66 65 72 20 73 69 7a 65  |tore buffer size|
00001770  0a 09 6d 6f 76 09 72 30  2c 20 23 36 0a 09 6d 6f  |..mov.r0, #6..mo|
00001780  76 09 72 33 2c 20 72 32  0a 09 73 77 69 09 58 4f  |v.r3, r2..swi.XO|
00001790  53 5f 4d 6f 64 75 6c 65  0a 09 62 76 73 09 52 65  |S_Module..bvs.Re|
000017a0  61 64 5f 49 63 6f 6e 5f  45 6e 64 0a 09 6d 6f 76  |ad_Icon_End..mov|
000017b0  09 72 37 2c 20 72 32 0a  09 3b 20 72 37 20 3d 20  |.r7, r2..; r7 = |
000017c0  70 6f 69 6e 74 65 72 20  74 6f 20 6d 65 6d 6f 72  |pointer to memor|
000017d0  79 20 66 72 6f 6d 20 52  4d 41 0a 09 6d 6f 76 09  |y from RMA..mov.|
000017e0  72 30 2c 20 72 31 30 0a  09 6d 6f 76 09 72 31 2c  |r0, r10..mov.r1,|
000017f0  20 72 38 0a 09 6c 64 72  09 72 32 2c 20 5b 72 31  | r8..ldr.r2, [r1|
00001800  32 2c 20 23 54 61 73 6b  5f 48 61 6e 64 6c 65 5d  |2, #Task_Handle]|
00001810  0a 09 6d 6f 76 09 72 33  2c 20 72 37 0a 09 6d 6f  |..mov.r3, r7..mo|
00001820  76 09 72 34 2c 20 72 39  0a 09 73 77 69 09 58 57  |v.r4, r9..swi.XW|
00001830  69 6d 70 5f 54 72 61 6e  73 66 65 72 42 6c 6f 63  |imp_TransferBloc|
00001840  6b 0a 09 62 76 73 09 52  65 61 64 5f 49 63 6f 6e  |k..bvs.Read_Icon|
00001850  5f 45 6e 64 0a 09 6d 6f  76 09 72 31 2c 20 72 37  |_End..mov.r1, r7|
00001860  0a 09 6d 6f 76 09 72 32  2c 20 72 39 0a 09 6d 6f  |..mov.r2, r9..mo|
00001870  76 73 09 70 63 2c 20 72  31 34 0a 0a 0a 4d 6f 64  |vs.pc, r14...Mod|
00001880  75 6c 65 5f 45 6e 64 0a  09 45 4e 44 0a           |ule_End..END.|
0000188d