Home » Archimedes archive » Acorn User » AU 1998-04 A.adf » PD » Avison/!TaskUsage/TestProgs/PollAsm

Avison/!TaskUsage/TestProgs/PollAsm

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 1998-04 A.adf » PD
Filename: Avison/!TaskUsage/TestProgs/PollAsm
Read OK:
File size: 0375 bytes
Load address: 0000
Exec address: 0000
File contents
   10REM  Wimp Poll in a tight Assembler loop if Null Reason Code
   20
   30kb%=64               :REM set to kb for SlotSize
   40
   50END = 1024 * kb%
   60
   70DIM T% 4
   80$T% ="TASK"
   90
  100PROCassemble
  110
  120SYS "Wimp_Initialise",300 ,!T% ,"WimpPoll ASM",0 TO ,task%
  130CALL poll
  140SYS "Wimp_CloseDown",task%
  150
  160END
  170
  180DEF PROCassemble
  190DIM code% 300
  200FOR opt = 0 TO 2 STEP 2
  210P% = code%
  220[OPT opt
  230.poll
  240STMFD     r13!,{r0-r3,r14}
  250
  260ADR       r1,block
  270MOV       r3,#0
  280
  290.again
  300LDR       r0,mask
  310SWI       "Wimp_Poll"
  320CMP       r0,#0               :REM null
  330BEQ       again
  340CMP       r0,#17
  350CMPNE     r0,#18
  360BNE       again
  370LDR       r2,[r1,#16]
  380CMP       r2,#0               :REM Quit message
  390BNE       again
  400
  410LDMFD     r13!,{r0-r3,PC}
  420
  430            REM 98765432109876543210
  440.mask     equd %10011111111111111110
  450.block    EQUD 0
  460]
  470NEXT
  480ENDPROC

>�  Wimp Poll in a tight Assembler loop if Null Reason Code

2kb%=64               :� set to kb for SlotSize
(
2� = 1024 * kb%
<
F
� T% 4
P$T% ="TASK"
Z
d
�assemble
n
x<ș "Wimp_Initialise",300 ,!T% ,"WimpPoll ASM",0 � ,task%
�
� poll
�ș "Wimp_CloseDown",task%
�
��
�
�� �assemble
�� code% 300
�� opt = 0 � 2 � 2
�P% = code%
�[OPT opt
�	.poll
�STMFD     r13!,{r0-r3,r14}
�
ADR       r1,block
MOV       r3,#0

"
.again
,LDR       r0,mask
6SWI       "Wimp_Poll"
@)CMP       r0,#0               :� null
JBEQ       again
TCMP       r0,#17
^CMPNE     r0,#18
hBNE       again
rLDR       r2,[r1,#16]
|1CMP       r2,#0               :� Quit message
�BNE       again
�
�LDMFD     r13!,{r0-r3,PC}
�
�&            � 98765432109876543210
�(.mask     equd %10011111111111111110
�.block    EQUD 0
�]
��
��
�
00000000  0d 00 0a 3e f4 20 20 57  69 6d 70 20 50 6f 6c 6c  |...>.  Wimp Poll|
00000010  20 69 6e 20 61 20 74 69  67 68 74 20 41 73 73 65  | in a tight Asse|
00000020  6d 62 6c 65 72 20 6c 6f  6f 70 20 69 66 20 4e 75  |mbler loop if Nu|
00000030  6c 6c 20 52 65 61 73 6f  6e 20 43 6f 64 65 0d 00  |ll Reason Code..|
00000040  14 04 0d 00 1e 32 6b 62  25 3d 36 34 20 20 20 20  |.....2kb%=64    |
00000050  20 20 20 20 20 20 20 20  20 20 20 3a f4 20 73 65  |           :. se|
00000060  74 20 74 6f 20 6b 62 20  66 6f 72 20 53 6c 6f 74  |t to kb for Slot|
00000070  53 69 7a 65 0d 00 28 04  0d 00 32 12 e0 20 3d 20  |Size..(...2.. = |
00000080  31 30 32 34 20 2a 20 6b  62 25 0d 00 3c 04 0d 00  |1024 * kb%..<...|
00000090  46 0a de 20 54 25 20 34  0d 00 50 0f 24 54 25 20  |F.. T% 4..P.$T% |
000000a0  3d 22 54 41 53 4b 22 0d  00 5a 04 0d 00 64 0d f2  |="TASK"..Z...d..|
000000b0  61 73 73 65 6d 62 6c 65  0d 00 6e 04 0d 00 78 3c  |assemble..n...x<|
000000c0  c8 99 20 22 57 69 6d 70  5f 49 6e 69 74 69 61 6c  |.. "Wimp_Initial|
000000d0  69 73 65 22 2c 33 30 30  20 2c 21 54 25 20 2c 22  |ise",300 ,!T% ,"|
000000e0  57 69 6d 70 50 6f 6c 6c  20 41 53 4d 22 2c 30 20  |WimpPoll ASM",0 |
000000f0  b8 20 2c 74 61 73 6b 25  0d 00 82 0a d6 20 70 6f  |. ,task%..... po|
00000100  6c 6c 0d 00 8c 1d c8 99  20 22 57 69 6d 70 5f 43  |ll...... "Wimp_C|
00000110  6c 6f 73 65 44 6f 77 6e  22 2c 74 61 73 6b 25 0d  |loseDown",task%.|
00000120  00 96 04 0d 00 a0 05 e0  0d 00 aa 04 0d 00 b4 0f  |................|
00000130  dd 20 f2 61 73 73 65 6d  62 6c 65 0d 00 be 0f de  |. .assemble.....|
00000140  20 63 6f 64 65 25 20 33  30 30 0d 00 c8 15 e3 20  | code% 300..... |
00000150  6f 70 74 20 3d 20 30 20  b8 20 32 20 88 20 32 0d  |opt = 0 . 2 . 2.|
00000160  00 d2 0e 50 25 20 3d 20  63 6f 64 65 25 0d 00 dc  |...P% = code%...|
00000170  0c 5b 4f 50 54 20 6f 70  74 0d 00 e6 09 2e 70 6f  |.[OPT opt.....po|
00000180  6c 6c 0d 00 f0 1e 53 54  4d 46 44 20 20 20 20 20  |ll....STMFD     |
00000190  72 31 33 21 2c 7b 72 30  2d 72 33 2c 72 31 34 7d  |r13!,{r0-r3,r14}|
000001a0  0d 00 fa 04 0d 01 04 16  41 44 52 20 20 20 20 20  |........ADR     |
000001b0  20 20 72 31 2c 62 6c 6f  63 6b 0d 01 0e 13 4d 4f  |  r1,block....MO|
000001c0  56 20 20 20 20 20 20 20  72 33 2c 23 30 0d 01 18  |V       r3,#0...|
000001d0  04 0d 01 22 0a 2e 61 67  61 69 6e 0d 01 2c 15 4c  |..."..again..,.L|
000001e0  44 52 20 20 20 20 20 20  20 72 30 2c 6d 61 73 6b  |DR       r0,mask|
000001f0  0d 01 36 19 53 57 49 20  20 20 20 20 20 20 22 57  |..6.SWI       "W|
00000200  69 6d 70 5f 50 6f 6c 6c  22 0d 01 40 29 43 4d 50  |imp_Poll"..@)CMP|
00000210  20 20 20 20 20 20 20 72  30 2c 23 30 20 20 20 20  |       r0,#0    |
00000220  20 20 20 20 20 20 20 20  20 20 20 3a f4 20 6e 75  |           :. nu|
00000230  6c 6c 0d 01 4a 13 42 45  51 20 20 20 20 20 20 20  |ll..J.BEQ       |
00000240  61 67 61 69 6e 0d 01 54  14 43 4d 50 20 20 20 20  |again..T.CMP    |
00000250  20 20 20 72 30 2c 23 31  37 0d 01 5e 14 43 4d 50  |   r0,#17..^.CMP|
00000260  4e 45 20 20 20 20 20 72  30 2c 23 31 38 0d 01 68  |NE     r0,#18..h|
00000270  13 42 4e 45 20 20 20 20  20 20 20 61 67 61 69 6e  |.BNE       again|
00000280  0d 01 72 19 4c 44 52 20  20 20 20 20 20 20 72 32  |..r.LDR       r2|
00000290  2c 5b 72 31 2c 23 31 36  5d 0d 01 7c 31 43 4d 50  |,[r1,#16]..|1CMP|
000002a0  20 20 20 20 20 20 20 72  32 2c 23 30 20 20 20 20  |       r2,#0    |
000002b0  20 20 20 20 20 20 20 20  20 20 20 3a f4 20 51 75  |           :. Qu|
000002c0  69 74 20 6d 65 73 73 61  67 65 0d 01 86 13 42 4e  |it message....BN|
000002d0  45 20 20 20 20 20 20 20  61 67 61 69 6e 0d 01 90  |E       again...|
000002e0  04 0d 01 9a 1d 4c 44 4d  46 44 20 20 20 20 20 72  |.....LDMFD     r|
000002f0  31 33 21 2c 7b 72 30 2d  72 33 2c 50 43 7d 0d 01  |13!,{r0-r3,PC}..|
00000300  a4 04 0d 01 ae 26 20 20  20 20 20 20 20 20 20 20  |.....&          |
00000310  20 20 f4 20 39 38 37 36  35 34 33 32 31 30 39 38  |  . 987654321098|
00000320  37 36 35 34 33 32 31 30  0d 01 b8 28 2e 6d 61 73  |76543210...(.mas|
00000330  6b 20 20 20 20 20 65 71  75 64 20 25 31 30 30 31  |k     equd %1001|
00000340  31 31 31 31 31 31 31 31  31 31 31 31 31 31 31 30  |1111111111111110|
00000350  0d 01 c2 14 2e 62 6c 6f  63 6b 20 20 20 20 45 51  |.....block    EQ|
00000360  55 44 20 30 0d 01 cc 05  5d 0d 01 d6 05 ed 0d 01  |UD 0....].......|
00000370  e0 05 e1 0d ff                                    |.....|
00000375