Home » Archimedes archive » Acorn User » Acorn User - Shareware Collection (1993).adf » ModeView » !ModeView/!RunImage

!ModeView/!RunImage

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 » ModeView
Filename: !ModeView/!RunImage
Read OK:
File size: 05B4 bytes
Load address: 0000
Exec address: 0000
File contents
   10REM > !RunImage
   20:
   30  ON ERROR PRINT REPORT$;" internal error (";ERL;")":END
   40  DIM q% 255
   50  SYS "Wimp_Initialise",200,&4B534154,"Mode View" TO ,ourtask
   60  ON ERROR PROCerror:END
   70  PROCupdatesprite
   80  :
   90  quit%=FALSE
  100  REPEAT
  110   SYS "Wimp_Poll",%1111111111111,q% TO reason%
  120   CASE reason% OF
  130    WHEN 17,18 : PROCreceive(q%)
  140   ENDCASE
  150  UNTIL quit%
  160
  170  IF remove% THEN
  180    *Iconsprites <ModeView$Dir>.Sprites
  190  ENDIF
  200
  210  SYS "Wimp_BaseOfSprites" TO ,ramspr%
  220  SYS "OS_SpriteOp",&13C,ramspr%,"palette" TO R0,R1,R2,R3
  230  SYS "OS_SpriteOp",R0,R1,R2,R3
  240  PROCupdatepaletteicon
  250  SYS "Wimp_CloseDown"
  260END
  270:
  280DEF PROCreceive(b)
  290 CASE b!16 OF
  300  WHEN 0:quit%=TRUE:remove%=TRUE
  310  WHEN &400C1:PROCupdatesprite
  320  WHEN &400C2:remove%=FALSE:quit%=(FNgetzstring(b+28)="Mode View" AND b!4<>ourtask)
  330 ENDCASE
  340ENDPROC
  350:
  360DEFPROCupdatesprite
  370 mode%=MODE
  380 SYS "Wimp_BaseOfSprites" TO ,ramspr%
  390 SYS "OS_SpriteOp",&13C,ramspr%,"palette" TO R0,R1,R2,R3
  400 GCOL 1
  410 RECTANGLEFILL 10,12,42,40
  420 GCOL7
  430 PROCprint(STR$(mode%),44)
  440 SYS "OS_SpriteOp",R0,R1,R2,R3
  450 PROCupdatepaletteicon
  460ENDPROC
  470:
  480DEFPROCprint(a$,y%)
  490VDU5:MOVE 32-LENa$*8,y%:PRINTa$
  500ENDPROC
  510:
  520DEF PROCupdatepaletteicon
  530 !q%=-1 : REM RHS of Icon bar
  540 q%!4=4 : REM Icon 4 ... Max be different on your archimedes use !Spy to find out
  550
  560 q%!8=0 : q%!12=0
  570 SYS "Wimp_SetIconState",,q%
  580ENDPROC
  590:
  600DEFPROCerror
  610 ON ERROR OFF
  620 SYS "Wimp_CloseDown"
  630 PRINT REPORT$;" internal error (";ERL;")"
  640ENDPROC
  650
  660DEF FNgetzstring(ptr)
  670LOCAL p$
  680 p$=""
  690 WHILE ?ptr<>0
  700  p$+=CHR$?ptr:ptr+=1
  710 ENDWHILE
  720=p$

� > !RunImage
:
*  � � � �$;" internal error (";�;")":�
(  � q% 255
2?  ș "Wimp_Initialise",200,&4B534154,"Mode View" � ,ourtask
<  � � �error:�
F  �updatesprite
P  :
Z
  quit%=�
d  �
n1   ș "Wimp_Poll",%1111111111111,q% � reason%
x   Ȏ reason% �
�    � 17,18 : �receive(q%)
�   �
�
  � quit%
�
�  � remove% �
�+    *Iconsprites <ModeView$Dir>.Sprites
�  �
�
�(  ș "Wimp_BaseOfSprites" � ,ramspr%
�;  ș "OS_SpriteOp",&13C,ramspr%,"palette" � R0,R1,R2,R3
�"  ș "OS_SpriteOp",R0,R1,R2,R3
�  �updatepaletteicon
�  ș "Wimp_CloseDown"
�
:
� �receive(b)
" Ȏ b!16 �
,  � 0:quit%=�:remove%=�
6  � &400C1:�updatesprite
@M  � &400C2:remove%=�:quit%=(�getzstring(b+28)="Mode View" � b!4<>ourtask)
J �
T�
^:
h��updatesprite
r mode%=�
|' ș "Wimp_BaseOfSprites" � ,ramspr%
�: ș "OS_SpriteOp",&13C,ramspr%,"palette" � R0,R1,R2,R3
� � 1
� ȓȐ 10,12,42,40
� �7
� �print(�(mode%),44)
�! ș "OS_SpriteOp",R0,R1,R2,R3
� �updatepaletteicon
��
�:
���print(a$,y%)
��5:� 32-�a$*8,y%:�a$
��
�:
� �updatepaletteicon
 !q%=-1 : � RHS of Icon bar
S q%!4=4 : � Icon 4 ... Max be different on your archimedes use !Spy to find out
&
0 q%!8=0 : q%!12=0
: ș "Wimp_SetIconState",,q%
D�
N:
X��error
b
 � � �
l ș "Wimp_CloseDown"
v# � �$;" internal error (";�;")"
��
�
�� �getzstring(ptr)
�� p$
�
 p$=""
� ȕ ?ptr<>0
�  p$+=�?ptr:ptr+=1
� �
�=p$
�
00000000  0d 00 0a 11 f4 20 3e 20  21 52 75 6e 49 6d 61 67  |..... > !RunImag|
00000010  65 0d 00 14 05 3a 0d 00  1e 2a 20 20 ee 20 85 20  |e....:...*  . . |
00000020  f1 20 f6 24 3b 22 20 69  6e 74 65 72 6e 61 6c 20  |. .$;" internal |
00000030  65 72 72 6f 72 20 28 22  3b 9e 3b 22 29 22 3a e0  |error (";.;")":.|
00000040  0d 00 28 0e 20 20 de 20  71 25 20 32 35 35 0d 00  |..(.  . q% 255..|
00000050  32 3f 20 20 c8 99 20 22  57 69 6d 70 5f 49 6e 69  |2?  .. "Wimp_Ini|
00000060  74 69 61 6c 69 73 65 22  2c 32 30 30 2c 26 34 42  |tialise",200,&4B|
00000070  35 33 34 31 35 34 2c 22  4d 6f 64 65 20 56 69 65  |534154,"Mode Vie|
00000080  77 22 20 b8 20 2c 6f 75  72 74 61 73 6b 0d 00 3c  |w" . ,ourtask..<|
00000090  12 20 20 ee 20 85 20 f2  65 72 72 6f 72 3a e0 0d  |.  . . .error:..|
000000a0  00 46 13 20 20 f2 75 70  64 61 74 65 73 70 72 69  |.F.  .updatespri|
000000b0  74 65 0d 00 50 07 20 20  3a 0d 00 5a 0d 20 20 71  |te..P.  :..Z.  q|
000000c0  75 69 74 25 3d a3 0d 00  64 07 20 20 f5 0d 00 6e  |uit%=...d.  ...n|
000000d0  31 20 20 20 c8 99 20 22  57 69 6d 70 5f 50 6f 6c  |1   .. "Wimp_Pol|
000000e0  6c 22 2c 25 31 31 31 31  31 31 31 31 31 31 31 31  |l",%111111111111|
000000f0  31 2c 71 25 20 b8 20 72  65 61 73 6f 6e 25 0d 00  |1,q% . reason%..|
00000100  78 13 20 20 20 c8 8e 20  72 65 61 73 6f 6e 25 20  |x.   .. reason% |
00000110  ca 0d 00 82 1e 20 20 20  20 c9 20 31 37 2c 31 38  |.....    . 17,18|
00000120  20 3a 20 f2 72 65 63 65  69 76 65 28 71 25 29 0d  | : .receive(q%).|
00000130  00 8c 08 20 20 20 cb 0d  00 96 0d 20 20 fd 20 71  |...   .....  . q|
00000140  75 69 74 25 0d 00 a0 04  0d 00 aa 11 20 20 e7 20  |uit%........  . |
00000150  72 65 6d 6f 76 65 25 20  8c 0d 00 b4 2b 20 20 20  |remove% ....+   |
00000160  20 2a 49 63 6f 6e 73 70  72 69 74 65 73 20 3c 4d  | *Iconsprites <M|
00000170  6f 64 65 56 69 65 77 24  44 69 72 3e 2e 53 70 72  |odeView$Dir>.Spr|
00000180  69 74 65 73 0d 00 be 07  20 20 cd 0d 00 c8 04 0d  |ites....  ......|
00000190  00 d2 28 20 20 c8 99 20  22 57 69 6d 70 5f 42 61  |..(  .. "Wimp_Ba|
000001a0  73 65 4f 66 53 70 72 69  74 65 73 22 20 b8 20 2c  |seOfSprites" . ,|
000001b0  72 61 6d 73 70 72 25 0d  00 dc 3b 20 20 c8 99 20  |ramspr%...;  .. |
000001c0  22 4f 53 5f 53 70 72 69  74 65 4f 70 22 2c 26 31  |"OS_SpriteOp",&1|
000001d0  33 43 2c 72 61 6d 73 70  72 25 2c 22 70 61 6c 65  |3C,ramspr%,"pale|
000001e0  74 74 65 22 20 b8 20 52  30 2c 52 31 2c 52 32 2c  |tte" . R0,R1,R2,|
000001f0  52 33 0d 00 e6 22 20 20  c8 99 20 22 4f 53 5f 53  |R3..."  .. "OS_S|
00000200  70 72 69 74 65 4f 70 22  2c 52 30 2c 52 31 2c 52  |priteOp",R0,R1,R|
00000210  32 2c 52 33 0d 00 f0 18  20 20 f2 75 70 64 61 74  |2,R3....  .updat|
00000220  65 70 61 6c 65 74 74 65  69 63 6f 6e 0d 00 fa 19  |epaletteicon....|
00000230  20 20 c8 99 20 22 57 69  6d 70 5f 43 6c 6f 73 65  |  .. "Wimp_Close|
00000240  44 6f 77 6e 22 0d 01 04  05 e0 0d 01 0e 05 3a 0d  |Down".........:.|
00000250  01 18 11 dd 20 f2 72 65  63 65 69 76 65 28 62 29  |.... .receive(b)|
00000260  0d 01 22 0e 20 c8 8e 20  62 21 31 36 20 ca 0d 01  |..". .. b!16 ...|
00000270  2c 1b 20 20 c9 20 30 3a  71 75 69 74 25 3d b9 3a  |,.  . 0:quit%=.:|
00000280  72 65 6d 6f 76 65 25 3d  b9 0d 01 36 1c 20 20 c9  |remove%=...6.  .|
00000290  20 26 34 30 30 43 31 3a  f2 75 70 64 61 74 65 73  | &400C1:.updates|
000002a0  70 72 69 74 65 0d 01 40  4d 20 20 c9 20 26 34 30  |prite..@M  . &40|
000002b0  30 43 32 3a 72 65 6d 6f  76 65 25 3d a3 3a 71 75  |0C2:remove%=.:qu|
000002c0  69 74 25 3d 28 a4 67 65  74 7a 73 74 72 69 6e 67  |it%=(.getzstring|
000002d0  28 62 2b 32 38 29 3d 22  4d 6f 64 65 20 56 69 65  |(b+28)="Mode Vie|
000002e0  77 22 20 80 20 62 21 34  3c 3e 6f 75 72 74 61 73  |w" . b!4<>ourtas|
000002f0  6b 29 0d 01 4a 06 20 cb  0d 01 54 05 e1 0d 01 5e  |k)..J. ...T....^|
00000300  05 3a 0d 01 68 12 dd f2  75 70 64 61 74 65 73 70  |.:..h...updatesp|
00000310  72 69 74 65 0d 01 72 0c  20 6d 6f 64 65 25 3d eb  |rite..r. mode%=.|
00000320  0d 01 7c 27 20 c8 99 20  22 57 69 6d 70 5f 42 61  |..|' .. "Wimp_Ba|
00000330  73 65 4f 66 53 70 72 69  74 65 73 22 20 b8 20 2c  |seOfSprites" . ,|
00000340  72 61 6d 73 70 72 25 0d  01 86 3a 20 c8 99 20 22  |ramspr%...: .. "|
00000350  4f 53 5f 53 70 72 69 74  65 4f 70 22 2c 26 31 33  |OS_SpriteOp",&13|
00000360  43 2c 72 61 6d 73 70 72  25 2c 22 70 61 6c 65 74  |C,ramspr%,"palet|
00000370  74 65 22 20 b8 20 52 30  2c 52 31 2c 52 32 2c 52  |te" . R0,R1,R2,R|
00000380  33 0d 01 90 08 20 e6 20  31 0d 01 9a 15 20 c8 93  |3.... . 1.... ..|
00000390  c8 90 20 31 30 2c 31 32  2c 34 32 2c 34 30 0d 01  |.. 10,12,42,40..|
000003a0  a4 07 20 e6 37 0d 01 ae  18 20 f2 70 72 69 6e 74  |.. .7.... .print|
000003b0  28 c3 28 6d 6f 64 65 25  29 2c 34 34 29 0d 01 b8  |(.(mode%),44)...|
000003c0  21 20 c8 99 20 22 4f 53  5f 53 70 72 69 74 65 4f  |! .. "OS_SpriteO|
000003d0  70 22 2c 52 30 2c 52 31  2c 52 32 2c 52 33 0d 01  |p",R0,R1,R2,R3..|
000003e0  c2 17 20 f2 75 70 64 61  74 65 70 61 6c 65 74 74  |.. .updatepalett|
000003f0  65 69 63 6f 6e 0d 01 cc  05 e1 0d 01 d6 05 3a 0d  |eicon.........:.|
00000400  01 e0 12 dd f2 70 72 69  6e 74 28 61 24 2c 79 25  |.....print(a$,y%|
00000410  29 0d 01 ea 18 ef 35 3a  ec 20 33 32 2d a9 61 24  |).....5:. 32-.a$|
00000420  2a 38 2c 79 25 3a f1 61  24 0d 01 f4 05 e1 0d 01  |*8,y%:.a$.......|
00000430  fe 05 3a 0d 02 08 18 dd  20 f2 75 70 64 61 74 65  |..:..... .update|
00000440  70 61 6c 65 74 74 65 69  63 6f 6e 0d 02 12 1f 20  |paletteicon.... |
00000450  21 71 25 3d 2d 31 20 3a  20 f4 20 52 48 53 20 6f  |!q%=-1 : . RHS o|
00000460  66 20 49 63 6f 6e 20 62  61 72 0d 02 1c 53 20 71  |f Icon bar...S q|
00000470  25 21 34 3d 34 20 3a 20  f4 20 49 63 6f 6e 20 34  |%!4=4 : . Icon 4|
00000480  20 2e 2e 2e 20 4d 61 78  20 62 65 20 64 69 66 66  | ... Max be diff|
00000490  65 72 65 6e 74 20 6f 6e  20 79 6f 75 72 20 61 72  |erent on your ar|
000004a0  63 68 69 6d 65 64 65 73  20 75 73 65 20 21 53 70  |chimedes use !Sp|
000004b0  79 20 74 6f 20 66 69 6e  64 20 6f 75 74 0d 02 26  |y to find out..&|
000004c0  04 0d 02 30 15 20 71 25  21 38 3d 30 20 3a 20 71  |...0. q%!8=0 : q|
000004d0  25 21 31 32 3d 30 0d 02  3a 1f 20 c8 99 20 22 57  |%!12=0..:. .. "W|
000004e0  69 6d 70 5f 53 65 74 49  63 6f 6e 53 74 61 74 65  |imp_SetIconState|
000004f0  22 2c 2c 71 25 0d 02 44  05 e1 0d 02 4e 05 3a 0d  |",,q%..D....N.:.|
00000500  02 58 0b dd f2 65 72 72  6f 72 0d 02 62 0a 20 ee  |.X...error..b. .|
00000510  20 85 20 87 0d 02 6c 18  20 c8 99 20 22 57 69 6d  | . ...l. .. "Wim|
00000520  70 5f 43 6c 6f 73 65 44  6f 77 6e 22 0d 02 76 23  |p_CloseDown"..v#|
00000530  20 f1 20 f6 24 3b 22 20  69 6e 74 65 72 6e 61 6c  | . .$;" internal|
00000540  20 65 72 72 6f 72 20 28  22 3b 9e 3b 22 29 22 0d  | error (";.;")".|
00000550  02 80 05 e1 0d 02 8a 04  0d 02 94 16 dd 20 a4 67  |............. .g|
00000560  65 74 7a 73 74 72 69 6e  67 28 70 74 72 29 0d 02  |etzstring(ptr)..|
00000570  9e 08 ea 20 70 24 0d 02  a8 0a 20 70 24 3d 22 22  |... p$.... p$=""|
00000580  0d 02 b2 0f 20 c8 95 20  3f 70 74 72 3c 3e 30 0d  |.... .. ?ptr<>0.|
00000590  02 bc 16 20 20 70 24 2b  3d bd 3f 70 74 72 3a 70  |...  p$+=.?ptr:p|
000005a0  74 72 2b 3d 31 0d 02 c6  06 20 ce 0d 02 d0 07 3d  |tr+=1.... .....=|
000005b0  70 24 0d ff                                       |p$..|
000005b4