Home » Recent acquisitions » Acorn ADFS disks » adfs_AcornUser_199604.adf » Features » StarInfo/Fletcher/WinMgr/Patch322m

StarInfo/Fletcher/WinMgr/Patch322m

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 » Recent acquisitions » Acorn ADFS disks » adfs_AcornUser_199604.adf » Features
Filename: StarInfo/Fletcher/WinMgr/Patch322m
Read OK:
File size: 036E bytes
Load address: 0000
Exec address: 0000
File contents
In   Module
Out  NModule
Type Module
Max  32k

@ &BE0C
; this replaces code :
; LDR r14,[r2],#32   - get data and increment
; AND r14,r14,#&F000 - leave just button
; TEQ r14,#&F000    <-- this line
; BNE &BDF8          - if not then try again
   B       checkforWI

@ &C29C
; this replaces code :
; MOV r0,r3          - set window handle
; MOV r1,r4          - set icon handle
; MVN r2,#&f0000000  - set x offset
; MVN r5,#0         <-- this line
; BL  &a53c          - is Wimp_SetCaretPosition
   BL      changesetcaret

@ endofcode
.checkforWI
   TEQ     r14,#&F000
   TEQNE   r14,#&E000
   B       &BE10

; changes parameters passed to Wimp_SetCaretPosition internally when
; menu opens
.changesetcaret
   MOV     r2,#1024*16*16 ; 16k (should be enough)
   MOV     r3,#0     ; no y-offset
   MVN     r4,#0     ; flags (-1)
   MVN     r5,#0     ; no index
   MOV     pc,link
00000000  49 6e 20 20 20 4d 6f 64  75 6c 65 0a 4f 75 74 20  |In   Module.Out |
00000010  20 4e 4d 6f 64 75 6c 65  0a 54 79 70 65 20 4d 6f  | NModule.Type Mo|
00000020  64 75 6c 65 0a 4d 61 78  20 20 33 32 6b 0a 0a 40  |dule.Max  32k..@|
00000030  20 26 42 45 30 43 0a 3b  20 74 68 69 73 20 72 65  | &BE0C.; this re|
00000040  70 6c 61 63 65 73 20 63  6f 64 65 20 3a 0a 3b 20  |places code :.; |
00000050  4c 44 52 20 72 31 34 2c  5b 72 32 5d 2c 23 33 32  |LDR r14,[r2],#32|
00000060  20 20 20 2d 20 67 65 74  20 64 61 74 61 20 61 6e  |   - get data an|
00000070  64 20 69 6e 63 72 65 6d  65 6e 74 0a 3b 20 41 4e  |d increment.; AN|
00000080  44 20 72 31 34 2c 72 31  34 2c 23 26 46 30 30 30  |D r14,r14,#&F000|
00000090  20 2d 20 6c 65 61 76 65  20 6a 75 73 74 20 62 75  | - leave just bu|
000000a0  74 74 6f 6e 0a 3b 20 54  45 51 20 72 31 34 2c 23  |tton.; TEQ r14,#|
000000b0  26 46 30 30 30 20 20 20  20 3c 2d 2d 20 74 68 69  |&F000    <-- thi|
000000c0  73 20 6c 69 6e 65 0a 3b  20 42 4e 45 20 26 42 44  |s line.; BNE &BD|
000000d0  46 38 20 20 20 20 20 20  20 20 20 20 2d 20 69 66  |F8          - if|
000000e0  20 6e 6f 74 20 74 68 65  6e 20 74 72 79 20 61 67  | not then try ag|
000000f0  61 69 6e 0a 20 20 20 42  20 20 20 20 20 20 20 63  |ain.   B       c|
00000100  68 65 63 6b 66 6f 72 57  49 0a 0a 40 20 26 43 32  |heckforWI..@ &C2|
00000110  39 43 0a 3b 20 74 68 69  73 20 72 65 70 6c 61 63  |9C.; this replac|
00000120  65 73 20 63 6f 64 65 20  3a 0a 3b 20 4d 4f 56 20  |es code :.; MOV |
00000130  72 30 2c 72 33 20 20 20  20 20 20 20 20 20 20 2d  |r0,r3          -|
00000140  20 73 65 74 20 77 69 6e  64 6f 77 20 68 61 6e 64  | set window hand|
00000150  6c 65 0a 3b 20 4d 4f 56  20 72 31 2c 72 34 20 20  |le.; MOV r1,r4  |
00000160  20 20 20 20 20 20 20 20  2d 20 73 65 74 20 69 63  |        - set ic|
00000170  6f 6e 20 68 61 6e 64 6c  65 0a 3b 20 4d 56 4e 20  |on handle.; MVN |
00000180  72 32 2c 23 26 66 30 30  30 30 30 30 30 20 20 2d  |r2,#&f0000000  -|
00000190  20 73 65 74 20 78 20 6f  66 66 73 65 74 0a 3b 20  | set x offset.; |
000001a0  4d 56 4e 20 72 35 2c 23  30 20 20 20 20 20 20 20  |MVN r5,#0       |
000001b0  20 20 3c 2d 2d 20 74 68  69 73 20 6c 69 6e 65 0a  |  <-- this line.|
000001c0  3b 20 42 4c 20 20 26 61  35 33 63 20 20 20 20 20  |; BL  &a53c     |
000001d0  20 20 20 20 20 2d 20 69  73 20 57 69 6d 70 5f 53  |     - is Wimp_S|
000001e0  65 74 43 61 72 65 74 50  6f 73 69 74 69 6f 6e 0a  |etCaretPosition.|
000001f0  20 20 20 42 4c 20 20 20  20 20 20 63 68 61 6e 67  |   BL      chang|
00000200  65 73 65 74 63 61 72 65  74 0a 0a 40 20 65 6e 64  |esetcaret..@ end|
00000210  6f 66 63 6f 64 65 0a 2e  63 68 65 63 6b 66 6f 72  |ofcode..checkfor|
00000220  57 49 0a 20 20 20 54 45  51 20 20 20 20 20 72 31  |WI.   TEQ     r1|
00000230  34 2c 23 26 46 30 30 30  0a 20 20 20 54 45 51 4e  |4,#&F000.   TEQN|
00000240  45 20 20 20 72 31 34 2c  23 26 45 30 30 30 0a 20  |E   r14,#&E000. |
00000250  20 20 42 20 20 20 20 20  20 20 26 42 45 31 30 0a  |  B       &BE10.|
00000260  0a 3b 20 63 68 61 6e 67  65 73 20 70 61 72 61 6d  |.; changes param|
00000270  65 74 65 72 73 20 70 61  73 73 65 64 20 74 6f 20  |eters passed to |
00000280  57 69 6d 70 5f 53 65 74  43 61 72 65 74 50 6f 73  |Wimp_SetCaretPos|
00000290  69 74 69 6f 6e 20 69 6e  74 65 72 6e 61 6c 6c 79  |ition internally|
000002a0  20 77 68 65 6e 0a 3b 20  6d 65 6e 75 20 6f 70 65  | when.; menu ope|
000002b0  6e 73 0a 2e 63 68 61 6e  67 65 73 65 74 63 61 72  |ns..changesetcar|
000002c0  65 74 0a 20 20 20 4d 4f  56 20 20 20 20 20 72 32  |et.   MOV     r2|
000002d0  2c 23 31 30 32 34 2a 31  36 2a 31 36 20 3b 20 31  |,#1024*16*16 ; 1|
000002e0  36 6b 20 28 73 68 6f 75  6c 64 20 62 65 20 65 6e  |6k (should be en|
000002f0  6f 75 67 68 29 0a 20 20  20 4d 4f 56 20 20 20 20  |ough).   MOV    |
00000300  20 72 33 2c 23 30 20 20  20 20 20 3b 20 6e 6f 20  | r3,#0     ; no |
00000310  79 2d 6f 66 66 73 65 74  0a 20 20 20 4d 56 4e 20  |y-offset.   MVN |
00000320  20 20 20 20 72 34 2c 23  30 20 20 20 20 20 3b 20  |    r4,#0     ; |
00000330  66 6c 61 67 73 20 28 2d  31 29 0a 20 20 20 4d 56  |flags (-1).   MV|
00000340  4e 20 20 20 20 20 72 35  2c 23 30 20 20 20 20 20  |N     r5,#0     |
00000350  3b 20 6e 6f 20 69 6e 64  65 78 0a 20 20 20 4d 4f  |; no index.   MO|
00000360  56 20 20 20 20 20 70 63  2c 6c 69 6e 6b 0a        |V     pc,link.|
0000036e