Home » Archimedes archive » Archimedes World » archimedes_world_volume_15_issue_1_scp.adf » !Olly_Olly » !Olly/Saver2

!Olly/Saver2

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 » Archimedes World » archimedes_world_volume_15_issue_1_scp.adf » !Olly_Olly
Filename: !Olly/Saver2
Read OK:
File size: 13F5 bytes
Load address: 0000
Exec address: 0000
File contents
    1REM are we debugging?
    2 Debug%=0
    3
    4IF Debug%=0 THEN
    5  ON ERROR:OSCLI "Pointer 1":END
    6 ELSE
    7  ON ERROR:OSCLI "Pointer 1":PROC_Wimp_Error
    8ENDIF
    9
   10REM define memory space
   11 DIM Block% 1024
   12 DIM scalef 16
   13 DIM pixtrans 512
   14 PROCinitmemvars
   15REM initialise wimp task
   16 Task$="Olly Saver"
   17 SYS "Wimp_Initialise",200,&4B534154,Task$ TO ver%,My_id%
   18 Mask%=1   : REM do not respond to poll null events
   19
   20
   21
   22REM Open templates etc
   23 SYS "Wimp_OpenTemplate",,"<Olly$Dir>.ollysave"
   24
   25REM Load window definition
   26 DIM white 255
   27 SYS "Wimp_LoadTemplate",,Block%,white,white+255,-1,"white",0
   28 SYS "Wimp_CreateWindow",,Block% TO white% : REM create window
   29
   30 SYS "Wimp_CloseTemplate"
   31
   32
   33REM turn off the mouse pointer
   34 *Pointer 0
   35 PROCopen(white%) : REM open window
   36REM initialise screen saver variables
   37 PROCreadscreenvars : REM read screen values
   38 IF yeig%>xeig% THEN PROCregsprites("<Olly$Dir>.wherelo") ELSE PROCregsprites("<Olly$Dir>.where")
   39REM read current mouse and key variables
   40 MOUSE X,Y,B:ox=X:oy=Y:ob=B
   41 SYS "OS_Byte",122 TO r0,ok
   42
   43REM Main poll loop
   44 REPEAT
   45  MOUSE mX,mY,mB
   46  SYS "Wimp_Poll",0,Block% TO A%
   47  SYS "OS_Byte",122 TO r0,K
   48  IF ox<>mX:PROCclose(white%):PROClooseblock:OSCLI "Pointer 1":END
   49  IF oy<>Y:PROCclose(white%):PROClooseblock:OSCLI "Pointer 1":END
   50  IF ob<>B:PROCclose(white%):PROClooseblock:OSCLI "Pointer 1":END
   51  IF ok<>K:PROCclose(white%):PROClooseblock:OSCLI "Pointer 1":END
   52  PROCwhereplot
   53 UNTIL FALSE
   54END
   55:
   56DEF PROCwhereplot
   57obd%=0
   58FOR pass%=1 TO 2
   59obj%=RND(270)
   60CASE obj% OF
   61 WHEN 1:obj%=-1
   62 WHEN 2:obj%=-2
   63 OTHERWISE obj%=obj%/10
   64ENDCASE
   65CASE obj% OF
   66 WHEN -2:PROCplott("greybeard",RND(ScreenSize_X%),10,100)
   67 WHEN -1:PROCplott("wally",RND(ScreenSize_X%),10,100)
   68 WHEN  1:PROCplott("bod1",RND(ScreenSize_X%),10,100)
   69 WHEN  2:PROCplott("bod2",RND(ScreenSize_X%),10,100)
   70 WHEN  3:PROCplott("spill",RND(ScreenSize_X%),10,100):IF obd%=0:obd%=1:pass%-=1
   71 WHEN  4:PROCplott("dagger",RND(ScreenSize_X%),10,100):IF obd%=0:obd%=1:pass%-=1
   72 WHEN  5:PROCplott("stone1",RND(ScreenSize_X%),10,100):IF obd%=0:obd%=1:pass%-=1
   73 WHEN  6:PROCplott("stone2",RND(ScreenSize_X%),10,100):IF obd%=0:obd%=1:pass%-=1
   74 WHEN  7:PROCplott("pot",RND(ScreenSize_X%),10,100):IF obd%=0:obd%=1:pass%-=1
   75 WHEN  8:PROCplott("beef",RND(ScreenSize_X%),10,100):IF obd%=0:obd%=1:pass%-=1
   76 WHEN  9:PROCplott("bone",RND(ScreenSize_X%),10,100):IF obd%=0:obd%=1:pass%-=1
   77 WHEN  10:PROCplott("glasses",RND(ScreenSize_X%),10,100):IF obd%=0:obd%=1:pass%-=1
   78 WHEN  11:PROCplott("twig",RND(ScreenSize_X%),10,100):IF obd%=0:obd%=1:pass%-=1
   79 WHEN  12:PROCplott("bod3",RND(ScreenSize_X%),10,100)
   80 WHEN  13:PROCplott("bod4",RND(ScreenSize_X%),10,100)
   81 WHEN  14:PROCplott("bod5",RND(ScreenSize_X%),10,100)
   82 WHEN  15:PROCplott("bod6",RND(ScreenSize_X%),10,100)
   83 WHEN  16:PROCplott("bod7",RND(ScreenSize_X%),10,100)
   84 WHEN  17:PROCplott("bod8",RND(ScreenSize_X%),10,100)
   85 WHEN  18:PROCplott("bod9",RND(ScreenSize_X%),10,100)
   86 WHEN  19:PROCplott("bod10",RND(ScreenSize_X%),10,100)
   87 WHEN  20:f%=RND(3):IF f%=1:PROCplott("bod11",RND(ScreenSize_X%),190,100)
   88 WHEN  21:PROCplott("bod12",RND(ScreenSize_X%),10,100)
   89 WHEN  22:PROCplott("bod13",RND(ScreenSize_X%),10,100)
   90 WHEN  23:PROCplott("bod14",RND(ScreenSize_X%),160,100)
   91 WHEN  24:PROCplott("bod15",RND(ScreenSize_X%),10,100)
   92 WHEN  25:PROCplott("bod16",RND(ScreenSize_X%),10,100)
   93 WHEN  26:PROCplott("bod17",RND(ScreenSize_X%),10,100)
   94ENDCASE
   95NEXT
   96RECTANGLE 0,0,ScreenSize_X%,ScreenSize_Y% TO 0,8
   97ENDPROC
   98:
   99DEF PROCplott(SP$,X%,Y%,scale)
  100d%=RND(2)
  101IF d%=1 THEN SYS "OS_SpriteOp",&100+47,sprites%,SP$
  102scalef!0=scale
  103scalef!4=scale
  104scalef!8=100
  105scalef!12=100
  106SYS "ColourTrans_SelectTable",sprites%,SP$,-1,-1,pixtrans
  107SYS "OS_SpriteOp",&100+52,sprites%,SP$,X%,Y%,&08,scalef,pixtrans
  108ENDPROC
  109:
  110DEF PROCregsprites(S$)
  111max%=0
  112FOR n=0 TO LEN(S$)
  113a$=MID$(S$,n,1)
  114IF a$="." THEN max%=n
  115NEXT
  116path$=LEFT$(S$,max%)
  117fn$=MID$(S$,max%+1)
  118OSCLI "SET File$Path "+path$
  119SYS "OS_File",5,fn$ TO ,,,,spritelen
  120spritelen=spritelen+24
  121PROCallocateblock(spritelen)
  122sprites%=HIMEM
  123sprites%!0=spritelen
  124sprites%!8=16
  125SYS "OS_SpriteOp",&100+9,sprites%
  126SYS &2E,&100+10,sprites%,S$
  127ENDPROC
  128:
  129DEF PROCopen(win%)
  130   !Block%=win%
  131   Block%!28=-1
  132   SYS "Wimp_GetWindowState",,Block%
  133   SYS "Wimp_OpenWindow",,Block%
  134ENDPROC
  135:
  136DEF PROCinitmemvars
  137appsize%=HIMEM-&8000
  138oappsize%=appsize%
  139SYS "OS_ReadMemMapInfo" TO page%
  140ENDPROC
  141:
  142DEF PROCallocateblock(sz%)
  143SYS "Wimp_SlotSize",appsize%+sz%,-1 TO appsize%
  144ENDPROC
  145:
  146DEF PROClooseblock
  147SYS "Wimp_SlotSize",oappsize%,-1
  148appsize%=oappsize%
  149ENDPROC
  150:
  151DEF PROCreadscreenvars
  152xeig%=FNmodevar(-1,4)
  153yeig%=FNmodevar(-1,5)
  154xpixels%=FNmodevar(-1,11)
  155ypixels%=FNmodevar(-1,12)
  156PixToOS_X%=1<<xeig% : REM # OS units that 1 pixel takes
  157PixToOS_Y%=1<<yeig%
  158ScreenSize_X%=(xpixels%+1)*PixToOS_X% : REM screen size in OS units
  159ScreenSize_Y%=(ypixels%+1)*PixToOS_Y%
  160xres=ScreenSize_X%
  161yres=ScreenSize_Y%
  162ENDPROC
  163:
  164DEF FNmodevar(mode%,v%)
  165LOCAL val%
  166SYS "OS_ReadModeVariable",mode%,v% TO ,,val%
  167=val%
  168:
  169DEF PROC_Wimp_Error
  170 LOCAL Error$
  171 !Block%=ERR
  172 Error$ = REPORT$
  173 Error$ += " (internal error code "+STR$ ERL+"). OK To Continue, CANCEL To Abort."
  174 $(Block%+4)=Error$ + CHR$0
  175 SYS "Wimp_ReportError",Block%,%011,Task$ TO ,click%
  176 IF click%=2:END
  177ENDPROC
  178:
  179DEF PROCclose(win%)
  180Block%!0=win%:SYS "Wimp_CloseWindow",,Block%
  181ENDPROC
� are we debugging?

 Debug%=0

� Debug%=0 �
  � �:� "Pointer 1":�
 �
$  � �:� "Pointer 1":�_Wimp_Error
�
	

� define memory space
 � Block% 1024
 � scalef 16

 � pixtrans 512
 �initmemvars
� initialise wimp task
 Task$="Olly Saver"
; ș "Wimp_Initialise",200,&4B534154,Task$ � ver%,My_id%
5 Mask%=1   : � do not respond to poll null events



� Open templates etc
2 ș "Wimp_OpenTemplate",,"<Olly$Dir>.ollysave"

� Load window definition
 � white 255
@ ș "Wimp_LoadTemplate",,Block%,white,white+255,-1,"white",0
> ș "Wimp_CreateWindow",,Block% � white% : � create window

 ș "Wimp_CloseTemplate"

 
! � turn off the mouse pointer
" *Pointer 0
#" �open(white%) : � open window
$'� initialise screen saver variables
%+ �readscreenvars : � read screen values
&X � yeig%>xeig% � �regsprites("<Olly$Dir>.wherelo") � �regsprites("<Olly$Dir>.where")
'*� read current mouse and key variables
( ȗ X,Y,B:ox=X:oy=Y:ob=B
) ș "OS_Byte",122 � r0,ok
*
+� Main poll loop
, �
-  ȗ mX,mY,mB
."  ș "Wimp_Poll",0,Block% � A%
/  ș "OS_Byte",122 � r0,K
09  � ox<>mX:�close(white%):�looseblock:� "Pointer 1":�
18  � oy<>Y:�close(white%):�looseblock:� "Pointer 1":�
28  � ob<>B:�close(white%):�looseblock:� "Pointer 1":�
38  � ok<>K:�close(white%):�looseblock:� "Pointer 1":�
4  �whereplot
5 � �
6�
7:
8� �whereplot
9
obd%=0
:� pass%=1 � 2
;obj%=�(270)
<
Ȏ obj% �
= � 1:obj%=-1
> � 2:obj%=-2
?  obj%=obj%/10
@�
A
Ȏ obj% �
B5 � -2:�plott("greybeard",�(ScreenSize_X%),10,100)
C1 � -1:�plott("wally",�(ScreenSize_X%),10,100)
D0 �  1:�plott("bod1",�(ScreenSize_X%),10,100)
E0 �  2:�plott("bod2",�(ScreenSize_X%),10,100)
FJ �  3:�plott("spill",�(ScreenSize_X%),10,100):� obd%=0:obd%=1:pass%-=1
GK �  4:�plott("dagger",�(ScreenSize_X%),10,100):� obd%=0:obd%=1:pass%-=1
HK �  5:�plott("stone1",�(ScreenSize_X%),10,100):� obd%=0:obd%=1:pass%-=1
IK �  6:�plott("stone2",�(ScreenSize_X%),10,100):� obd%=0:obd%=1:pass%-=1
JH �  7:�plott("pot",�(ScreenSize_X%),10,100):� obd%=0:obd%=1:pass%-=1
KI �  8:�plott("beef",�(ScreenSize_X%),10,100):� obd%=0:obd%=1:pass%-=1
LI �  9:�plott("bone",�(ScreenSize_X%),10,100):� obd%=0:obd%=1:pass%-=1
MM �  10:�plott("glasses",�(ScreenSize_X%),10,100):� obd%=0:obd%=1:pass%-=1
NJ �  11:�plott("twig",�(ScreenSize_X%),10,100):� obd%=0:obd%=1:pass%-=1
O1 �  12:�plott("bod3",�(ScreenSize_X%),10,100)
P1 �  13:�plott("bod4",�(ScreenSize_X%),10,100)
Q1 �  14:�plott("bod5",�(ScreenSize_X%),10,100)
R1 �  15:�plott("bod6",�(ScreenSize_X%),10,100)
S1 �  16:�plott("bod7",�(ScreenSize_X%),10,100)
T1 �  17:�plott("bod8",�(ScreenSize_X%),10,100)
U1 �  18:�plott("bod9",�(ScreenSize_X%),10,100)
V2 �  19:�plott("bod10",�(ScreenSize_X%),10,100)
WB �  20:f%=�(3):� f%=1:�plott("bod11",�(ScreenSize_X%),190,100)
X2 �  21:�plott("bod12",�(ScreenSize_X%),10,100)
Y2 �  22:�plott("bod13",�(ScreenSize_X%),10,100)
Z3 �  23:�plott("bod14",�(ScreenSize_X%),160,100)
[2 �  24:�plott("bod15",�(ScreenSize_X%),10,100)
\2 �  25:�plott("bod16",�(ScreenSize_X%),10,100)
]2 �  26:�plott("bod17",�(ScreenSize_X%),10,100)
^�
_�
`,ȓ 0,0,ScreenSize_X%,ScreenSize_Y% � 0,8
a�
b:
c� �plott(SP$,X%,Y%,scale)
dd%=�(2)
e2� d%=1 � ș "OS_SpriteOp",&100+47,sprites%,SP$
fscalef!0=scale
gscalef!4=scale
hscalef!8=100
iscalef!12=100
j<ș "ColourTrans_SelectTable",sprites%,SP$,-1,-1,pixtrans
kCș "OS_SpriteOp",&100+52,sprites%,SP$,X%,Y%,&08,scalef,pixtrans
l�
m:
n� �regsprites(S$)
o
max%=0
p� n=0 � �(S$)
qa$=�S$,n,1)
r� a$="." � max%=n
s�
tpath$=�S$,max%)
ufn$=�S$,max%+1)
v� "SET File$Path "+path$
w&ș "OS_File",5,fn$ � ,,,,spritelen
xspritelen=spritelen+24
y�allocateblock(spritelen)
zsprites%=�
{sprites%!0=spritelen
|sprites%!8=16
}$ș "OS_SpriteOp",&100+9,sprites%
~ș &2E,&100+10,sprites%,S$
�
�:
�� �open(win%)
�   !Block%=win%
�   Block%!28=-1
�'   ș "Wimp_GetWindowState",,Block%
�#   ș "Wimp_OpenWindow",,Block%
��
�:
�� �initmemvars
�appsize%=�-&8000
�oappsize%=appsize%
�"ș "OS_ReadMemMapInfo" � page%
��
�:
�� �allocateblock(sz%)
�1ș "Wimp_SlotSize",appsize%+sz%,-1 � appsize%
��
�:
�� �looseblock
�#ș "Wimp_SlotSize",oappsize%,-1
�appsize%=oappsize%
��
�:
�� �readscreenvars
�xeig%=�modevar(-1,4)
�yeig%=�modevar(-1,5)
�xpixels%=�modevar(-1,11)
�ypixels%=�modevar(-1,12)
�9PixToOS_X%=1<<xeig% : � # OS units that 1 pixel takes
�PixToOS_Y%=1<<yeig%
�EScreenSize_X%=(xpixels%+1)*PixToOS_X% : � screen size in OS units
�)ScreenSize_Y%=(ypixels%+1)*PixToOS_Y%
�xres=ScreenSize_X%
�yres=ScreenSize_Y%
��
�:
�� �modevar(mode%,v%)
�
� val%
�.ș "OS_ReadModeVariable",mode%,v% � ,,val%
�	=val%
�:
�� �_Wimp_Error
�
 � Error$
� !Block%=�
� Error$ = �$
�Q Error$ += " (internal error code "+� �+"). OK To Continue, CANCEL To Abort."
� $(Block%+4)=Error$ + �0
�6 ș "Wimp_ReportError",Block%,%011,Task$ � ,click%
� � click%=2:�
��
�:
�� �close(win%)
�/Block%!0=win%:ș "Wimp_CloseWindow",,Block%
��
�
00000000  0d 00 01 17 f4 20 61 72  65 20 77 65 20 64 65 62  |..... are we deb|
00000010  75 67 67 69 6e 67 3f 0d  00 02 0d 20 44 65 62 75  |ugging?.... Debu|
00000020  67 25 3d 30 0d 00 03 04  0d 00 04 10 e7 20 44 65  |g%=0......... De|
00000030  62 75 67 25 3d 30 20 8c  0d 00 05 19 20 20 ee 20  |bug%=0 .....  . |
00000040  85 3a ff 20 22 50 6f 69  6e 74 65 72 20 31 22 3a  |.:. "Pointer 1":|
00000050  e0 0d 00 06 06 20 cc 0d  00 07 24 20 20 ee 20 85  |..... ....$  . .|
00000060  3a ff 20 22 50 6f 69 6e  74 65 72 20 31 22 3a f2  |:. "Pointer 1":.|
00000070  5f 57 69 6d 70 5f 45 72  72 6f 72 0d 00 08 05 cd  |_Wimp_Error.....|
00000080  0d 00 09 04 0d 00 0a 19  f4 20 64 65 66 69 6e 65  |......... define|
00000090  20 6d 65 6d 6f 72 79 20  73 70 61 63 65 0d 00 0b  | memory space...|
000000a0  12 20 de 20 42 6c 6f 63  6b 25 20 31 30 32 34 0d  |. . Block% 1024.|
000000b0  00 0c 10 20 de 20 73 63  61 6c 65 66 20 31 36 0d  |... . scalef 16.|
000000c0  00 0d 13 20 de 20 70 69  78 74 72 61 6e 73 20 35  |... . pixtrans 5|
000000d0  31 32 0d 00 0e 11 20 f2  69 6e 69 74 6d 65 6d 76  |12.... .initmemv|
000000e0  61 72 73 0d 00 0f 1a f4  20 69 6e 69 74 69 61 6c  |ars..... initial|
000000f0  69 73 65 20 77 69 6d 70  20 74 61 73 6b 0d 00 10  |ise wimp task...|
00000100  17 20 54 61 73 6b 24 3d  22 4f 6c 6c 79 20 53 61  |. Task$="Olly Sa|
00000110  76 65 72 22 0d 00 11 3b  20 c8 99 20 22 57 69 6d  |ver"...; .. "Wim|
00000120  70 5f 49 6e 69 74 69 61  6c 69 73 65 22 2c 32 30  |p_Initialise",20|
00000130  30 2c 26 34 42 35 33 34  31 35 34 2c 54 61 73 6b  |0,&4B534154,Task|
00000140  24 20 b8 20 76 65 72 25  2c 4d 79 5f 69 64 25 0d  |$ . ver%,My_id%.|
00000150  00 12 35 20 4d 61 73 6b  25 3d 31 20 20 20 3a 20  |..5 Mask%=1   : |
00000160  f4 20 64 6f 20 6e 6f 74  20 72 65 73 70 6f 6e 64  |. do not respond|
00000170  20 74 6f 20 70 6f 6c 6c  20 6e 75 6c 6c 20 65 76  | to poll null ev|
00000180  65 6e 74 73 0d 00 13 04  0d 00 14 04 0d 00 15 04  |ents............|
00000190  0d 00 16 18 f4 20 4f 70  65 6e 20 74 65 6d 70 6c  |..... Open templ|
000001a0  61 74 65 73 20 65 74 63  0d 00 17 32 20 c8 99 20  |ates etc...2 .. |
000001b0  22 57 69 6d 70 5f 4f 70  65 6e 54 65 6d 70 6c 61  |"Wimp_OpenTempla|
000001c0  74 65 22 2c 2c 22 3c 4f  6c 6c 79 24 44 69 72 3e  |te",,"<Olly$Dir>|
000001d0  2e 6f 6c 6c 79 73 61 76  65 22 0d 00 18 04 0d 00  |.ollysave"......|
000001e0  19 1c f4 20 4c 6f 61 64  20 77 69 6e 64 6f 77 20  |... Load window |
000001f0  64 65 66 69 6e 69 74 69  6f 6e 0d 00 1a 10 20 de  |definition.... .|
00000200  20 77 68 69 74 65 20 32  35 35 0d 00 1b 40 20 c8  | white 255...@ .|
00000210  99 20 22 57 69 6d 70 5f  4c 6f 61 64 54 65 6d 70  |. "Wimp_LoadTemp|
00000220  6c 61 74 65 22 2c 2c 42  6c 6f 63 6b 25 2c 77 68  |late",,Block%,wh|
00000230  69 74 65 2c 77 68 69 74  65 2b 32 35 35 2c 2d 31  |ite,white+255,-1|
00000240  2c 22 77 68 69 74 65 22  2c 30 0d 00 1c 3e 20 c8  |,"white",0...> .|
00000250  99 20 22 57 69 6d 70 5f  43 72 65 61 74 65 57 69  |. "Wimp_CreateWi|
00000260  6e 64 6f 77 22 2c 2c 42  6c 6f 63 6b 25 20 b8 20  |ndow",,Block% . |
00000270  77 68 69 74 65 25 20 3a  20 f4 20 63 72 65 61 74  |white% : . creat|
00000280  65 20 77 69 6e 64 6f 77  0d 00 1d 04 0d 00 1e 1c  |e window........|
00000290  20 c8 99 20 22 57 69 6d  70 5f 43 6c 6f 73 65 54  | .. "Wimp_CloseT|
000002a0  65 6d 70 6c 61 74 65 22  0d 00 1f 04 0d 00 20 04  |emplate"...... .|
000002b0  0d 00 21 20 f4 20 74 75  72 6e 20 6f 66 66 20 74  |..! . turn off t|
000002c0  68 65 20 6d 6f 75 73 65  20 70 6f 69 6e 74 65 72  |he mouse pointer|
000002d0  0d 00 22 0f 20 2a 50 6f  69 6e 74 65 72 20 30 0d  |..". *Pointer 0.|
000002e0  00 23 22 20 f2 6f 70 65  6e 28 77 68 69 74 65 25  |.#" .open(white%|
000002f0  29 20 3a 20 f4 20 6f 70  65 6e 20 77 69 6e 64 6f  |) : . open windo|
00000300  77 0d 00 24 27 f4 20 69  6e 69 74 69 61 6c 69 73  |w..$'. initialis|
00000310  65 20 73 63 72 65 65 6e  20 73 61 76 65 72 20 76  |e screen saver v|
00000320  61 72 69 61 62 6c 65 73  0d 00 25 2b 20 f2 72 65  |ariables..%+ .re|
00000330  61 64 73 63 72 65 65 6e  76 61 72 73 20 3a 20 f4  |adscreenvars : .|
00000340  20 72 65 61 64 20 73 63  72 65 65 6e 20 76 61 6c  | read screen val|
00000350  75 65 73 0d 00 26 58 20  e7 20 79 65 69 67 25 3e  |ues..&X . yeig%>|
00000360  78 65 69 67 25 20 8c 20  f2 72 65 67 73 70 72 69  |xeig% . .regspri|
00000370  74 65 73 28 22 3c 4f 6c  6c 79 24 44 69 72 3e 2e  |tes("<Olly$Dir>.|
00000380  77 68 65 72 65 6c 6f 22  29 20 8b 20 f2 72 65 67  |wherelo") . .reg|
00000390  73 70 72 69 74 65 73 28  22 3c 4f 6c 6c 79 24 44  |sprites("<Olly$D|
000003a0  69 72 3e 2e 77 68 65 72  65 22 29 0d 00 27 2a f4  |ir>.where")..'*.|
000003b0  20 72 65 61 64 20 63 75  72 72 65 6e 74 20 6d 6f  | read current mo|
000003c0  75 73 65 20 61 6e 64 20  6b 65 79 20 76 61 72 69  |use and key vari|
000003d0  61 62 6c 65 73 0d 00 28  1c 20 c8 97 20 58 2c 59  |ables..(. .. X,Y|
000003e0  2c 42 3a 6f 78 3d 58 3a  6f 79 3d 59 3a 6f 62 3d  |,B:ox=X:oy=Y:ob=|
000003f0  42 0d 00 29 1d 20 c8 99  20 22 4f 53 5f 42 79 74  |B..). .. "OS_Byt|
00000400  65 22 2c 31 32 32 20 b8  20 72 30 2c 6f 6b 0d 00  |e",122 . r0,ok..|
00000410  2a 04 0d 00 2b 14 f4 20  4d 61 69 6e 20 70 6f 6c  |*...+.. Main pol|
00000420  6c 20 6c 6f 6f 70 0d 00  2c 06 20 f5 0d 00 2d 11  |l loop..,. ...-.|
00000430  20 20 c8 97 20 6d 58 2c  6d 59 2c 6d 42 0d 00 2e  |  .. mX,mY,mB...|
00000440  22 20 20 c8 99 20 22 57  69 6d 70 5f 50 6f 6c 6c  |"  .. "Wimp_Poll|
00000450  22 2c 30 2c 42 6c 6f 63  6b 25 20 b8 20 41 25 0d  |",0,Block% . A%.|
00000460  00 2f 1d 20 20 c8 99 20  22 4f 53 5f 42 79 74 65  |./.  .. "OS_Byte|
00000470  22 2c 31 32 32 20 b8 20  72 30 2c 4b 0d 00 30 39  |",122 . r0,K..09|
00000480  20 20 e7 20 6f 78 3c 3e  6d 58 3a f2 63 6c 6f 73  |  . ox<>mX:.clos|
00000490  65 28 77 68 69 74 65 25  29 3a f2 6c 6f 6f 73 65  |e(white%):.loose|
000004a0  62 6c 6f 63 6b 3a ff 20  22 50 6f 69 6e 74 65 72  |block:. "Pointer|
000004b0  20 31 22 3a e0 0d 00 31  38 20 20 e7 20 6f 79 3c  | 1":...18  . oy<|
000004c0  3e 59 3a f2 63 6c 6f 73  65 28 77 68 69 74 65 25  |>Y:.close(white%|
000004d0  29 3a f2 6c 6f 6f 73 65  62 6c 6f 63 6b 3a ff 20  |):.looseblock:. |
000004e0  22 50 6f 69 6e 74 65 72  20 31 22 3a e0 0d 00 32  |"Pointer 1":...2|
000004f0  38 20 20 e7 20 6f 62 3c  3e 42 3a f2 63 6c 6f 73  |8  . ob<>B:.clos|
00000500  65 28 77 68 69 74 65 25  29 3a f2 6c 6f 6f 73 65  |e(white%):.loose|
00000510  62 6c 6f 63 6b 3a ff 20  22 50 6f 69 6e 74 65 72  |block:. "Pointer|
00000520  20 31 22 3a e0 0d 00 33  38 20 20 e7 20 6f 6b 3c  | 1":...38  . ok<|
00000530  3e 4b 3a f2 63 6c 6f 73  65 28 77 68 69 74 65 25  |>K:.close(white%|
00000540  29 3a f2 6c 6f 6f 73 65  62 6c 6f 63 6b 3a ff 20  |):.looseblock:. |
00000550  22 50 6f 69 6e 74 65 72  20 31 22 3a e0 0d 00 34  |"Pointer 1":...4|
00000560  10 20 20 f2 77 68 65 72  65 70 6c 6f 74 0d 00 35  |.  .whereplot..5|
00000570  08 20 fd 20 a3 0d 00 36  05 e0 0d 00 37 05 3a 0d  |. . ...6....7.:.|
00000580  00 38 10 dd 20 f2 77 68  65 72 65 70 6c 6f 74 0d  |.8.. .whereplot.|
00000590  00 39 0a 6f 62 64 25 3d  30 0d 00 3a 11 e3 20 70  |.9.obd%=0..:.. p|
000005a0  61 73 73 25 3d 31 20 b8  20 32 0d 00 3b 0f 6f 62  |ass%=1 . 2..;.ob|
000005b0  6a 25 3d b3 28 32 37 30  29 0d 00 3c 0d c8 8e 20  |j%=.(270)..<... |
000005c0  6f 62 6a 25 20 ca 0d 00  3d 10 20 c9 20 31 3a 6f  |obj% ...=. . 1:o|
000005d0  62 6a 25 3d 2d 31 0d 00  3e 10 20 c9 20 32 3a 6f  |bj%=-1..>. . 2:o|
000005e0  62 6a 25 3d 2d 32 0d 00  3f 13 20 7f 20 6f 62 6a  |bj%=-2..?. . obj|
000005f0  25 3d 6f 62 6a 25 2f 31  30 0d 00 40 05 cb 0d 00  |%=obj%/10..@....|
00000600  41 0d c8 8e 20 6f 62 6a  25 20 ca 0d 00 42 35 20  |A... obj% ...B5 |
00000610  c9 20 2d 32 3a f2 70 6c  6f 74 74 28 22 67 72 65  |. -2:.plott("gre|
00000620  79 62 65 61 72 64 22 2c  b3 28 53 63 72 65 65 6e  |ybeard",.(Screen|
00000630  53 69 7a 65 5f 58 25 29  2c 31 30 2c 31 30 30 29  |Size_X%),10,100)|
00000640  0d 00 43 31 20 c9 20 2d  31 3a f2 70 6c 6f 74 74  |..C1 . -1:.plott|
00000650  28 22 77 61 6c 6c 79 22  2c b3 28 53 63 72 65 65  |("wally",.(Scree|
00000660  6e 53 69 7a 65 5f 58 25  29 2c 31 30 2c 31 30 30  |nSize_X%),10,100|
00000670  29 0d 00 44 30 20 c9 20  20 31 3a f2 70 6c 6f 74  |)..D0 .  1:.plot|
00000680  74 28 22 62 6f 64 31 22  2c b3 28 53 63 72 65 65  |t("bod1",.(Scree|
00000690  6e 53 69 7a 65 5f 58 25  29 2c 31 30 2c 31 30 30  |nSize_X%),10,100|
000006a0  29 0d 00 45 30 20 c9 20  20 32 3a f2 70 6c 6f 74  |)..E0 .  2:.plot|
000006b0  74 28 22 62 6f 64 32 22  2c b3 28 53 63 72 65 65  |t("bod2",.(Scree|
000006c0  6e 53 69 7a 65 5f 58 25  29 2c 31 30 2c 31 30 30  |nSize_X%),10,100|
000006d0  29 0d 00 46 4a 20 c9 20  20 33 3a f2 70 6c 6f 74  |)..FJ .  3:.plot|
000006e0  74 28 22 73 70 69 6c 6c  22 2c b3 28 53 63 72 65  |t("spill",.(Scre|
000006f0  65 6e 53 69 7a 65 5f 58  25 29 2c 31 30 2c 31 30  |enSize_X%),10,10|
00000700  30 29 3a e7 20 6f 62 64  25 3d 30 3a 6f 62 64 25  |0):. obd%=0:obd%|
00000710  3d 31 3a 70 61 73 73 25  2d 3d 31 0d 00 47 4b 20  |=1:pass%-=1..GK |
00000720  c9 20 20 34 3a f2 70 6c  6f 74 74 28 22 64 61 67  |.  4:.plott("dag|
00000730  67 65 72 22 2c b3 28 53  63 72 65 65 6e 53 69 7a  |ger",.(ScreenSiz|
00000740  65 5f 58 25 29 2c 31 30  2c 31 30 30 29 3a e7 20  |e_X%),10,100):. |
00000750  6f 62 64 25 3d 30 3a 6f  62 64 25 3d 31 3a 70 61  |obd%=0:obd%=1:pa|
00000760  73 73 25 2d 3d 31 0d 00  48 4b 20 c9 20 20 35 3a  |ss%-=1..HK .  5:|
00000770  f2 70 6c 6f 74 74 28 22  73 74 6f 6e 65 31 22 2c  |.plott("stone1",|
00000780  b3 28 53 63 72 65 65 6e  53 69 7a 65 5f 58 25 29  |.(ScreenSize_X%)|
00000790  2c 31 30 2c 31 30 30 29  3a e7 20 6f 62 64 25 3d  |,10,100):. obd%=|
000007a0  30 3a 6f 62 64 25 3d 31  3a 70 61 73 73 25 2d 3d  |0:obd%=1:pass%-=|
000007b0  31 0d 00 49 4b 20 c9 20  20 36 3a f2 70 6c 6f 74  |1..IK .  6:.plot|
000007c0  74 28 22 73 74 6f 6e 65  32 22 2c b3 28 53 63 72  |t("stone2",.(Scr|
000007d0  65 65 6e 53 69 7a 65 5f  58 25 29 2c 31 30 2c 31  |eenSize_X%),10,1|
000007e0  30 30 29 3a e7 20 6f 62  64 25 3d 30 3a 6f 62 64  |00):. obd%=0:obd|
000007f0  25 3d 31 3a 70 61 73 73  25 2d 3d 31 0d 00 4a 48  |%=1:pass%-=1..JH|
00000800  20 c9 20 20 37 3a f2 70  6c 6f 74 74 28 22 70 6f  | .  7:.plott("po|
00000810  74 22 2c b3 28 53 63 72  65 65 6e 53 69 7a 65 5f  |t",.(ScreenSize_|
00000820  58 25 29 2c 31 30 2c 31  30 30 29 3a e7 20 6f 62  |X%),10,100):. ob|
00000830  64 25 3d 30 3a 6f 62 64  25 3d 31 3a 70 61 73 73  |d%=0:obd%=1:pass|
00000840  25 2d 3d 31 0d 00 4b 49  20 c9 20 20 38 3a f2 70  |%-=1..KI .  8:.p|
00000850  6c 6f 74 74 28 22 62 65  65 66 22 2c b3 28 53 63  |lott("beef",.(Sc|
00000860  72 65 65 6e 53 69 7a 65  5f 58 25 29 2c 31 30 2c  |reenSize_X%),10,|
00000870  31 30 30 29 3a e7 20 6f  62 64 25 3d 30 3a 6f 62  |100):. obd%=0:ob|
00000880  64 25 3d 31 3a 70 61 73  73 25 2d 3d 31 0d 00 4c  |d%=1:pass%-=1..L|
00000890  49 20 c9 20 20 39 3a f2  70 6c 6f 74 74 28 22 62  |I .  9:.plott("b|
000008a0  6f 6e 65 22 2c b3 28 53  63 72 65 65 6e 53 69 7a  |one",.(ScreenSiz|
000008b0  65 5f 58 25 29 2c 31 30  2c 31 30 30 29 3a e7 20  |e_X%),10,100):. |
000008c0  6f 62 64 25 3d 30 3a 6f  62 64 25 3d 31 3a 70 61  |obd%=0:obd%=1:pa|
000008d0  73 73 25 2d 3d 31 0d 00  4d 4d 20 c9 20 20 31 30  |ss%-=1..MM .  10|
000008e0  3a f2 70 6c 6f 74 74 28  22 67 6c 61 73 73 65 73  |:.plott("glasses|
000008f0  22 2c b3 28 53 63 72 65  65 6e 53 69 7a 65 5f 58  |",.(ScreenSize_X|
00000900  25 29 2c 31 30 2c 31 30  30 29 3a e7 20 6f 62 64  |%),10,100):. obd|
00000910  25 3d 30 3a 6f 62 64 25  3d 31 3a 70 61 73 73 25  |%=0:obd%=1:pass%|
00000920  2d 3d 31 0d 00 4e 4a 20  c9 20 20 31 31 3a f2 70  |-=1..NJ .  11:.p|
00000930  6c 6f 74 74 28 22 74 77  69 67 22 2c b3 28 53 63  |lott("twig",.(Sc|
00000940  72 65 65 6e 53 69 7a 65  5f 58 25 29 2c 31 30 2c  |reenSize_X%),10,|
00000950  31 30 30 29 3a e7 20 6f  62 64 25 3d 30 3a 6f 62  |100):. obd%=0:ob|
00000960  64 25 3d 31 3a 70 61 73  73 25 2d 3d 31 0d 00 4f  |d%=1:pass%-=1..O|
00000970  31 20 c9 20 20 31 32 3a  f2 70 6c 6f 74 74 28 22  |1 .  12:.plott("|
00000980  62 6f 64 33 22 2c b3 28  53 63 72 65 65 6e 53 69  |bod3",.(ScreenSi|
00000990  7a 65 5f 58 25 29 2c 31  30 2c 31 30 30 29 0d 00  |ze_X%),10,100)..|
000009a0  50 31 20 c9 20 20 31 33  3a f2 70 6c 6f 74 74 28  |P1 .  13:.plott(|
000009b0  22 62 6f 64 34 22 2c b3  28 53 63 72 65 65 6e 53  |"bod4",.(ScreenS|
000009c0  69 7a 65 5f 58 25 29 2c  31 30 2c 31 30 30 29 0d  |ize_X%),10,100).|
000009d0  00 51 31 20 c9 20 20 31  34 3a f2 70 6c 6f 74 74  |.Q1 .  14:.plott|
000009e0  28 22 62 6f 64 35 22 2c  b3 28 53 63 72 65 65 6e  |("bod5",.(Screen|
000009f0  53 69 7a 65 5f 58 25 29  2c 31 30 2c 31 30 30 29  |Size_X%),10,100)|
00000a00  0d 00 52 31 20 c9 20 20  31 35 3a f2 70 6c 6f 74  |..R1 .  15:.plot|
00000a10  74 28 22 62 6f 64 36 22  2c b3 28 53 63 72 65 65  |t("bod6",.(Scree|
00000a20  6e 53 69 7a 65 5f 58 25  29 2c 31 30 2c 31 30 30  |nSize_X%),10,100|
00000a30  29 0d 00 53 31 20 c9 20  20 31 36 3a f2 70 6c 6f  |)..S1 .  16:.plo|
00000a40  74 74 28 22 62 6f 64 37  22 2c b3 28 53 63 72 65  |tt("bod7",.(Scre|
00000a50  65 6e 53 69 7a 65 5f 58  25 29 2c 31 30 2c 31 30  |enSize_X%),10,10|
00000a60  30 29 0d 00 54 31 20 c9  20 20 31 37 3a f2 70 6c  |0)..T1 .  17:.pl|
00000a70  6f 74 74 28 22 62 6f 64  38 22 2c b3 28 53 63 72  |ott("bod8",.(Scr|
00000a80  65 65 6e 53 69 7a 65 5f  58 25 29 2c 31 30 2c 31  |eenSize_X%),10,1|
00000a90  30 30 29 0d 00 55 31 20  c9 20 20 31 38 3a f2 70  |00)..U1 .  18:.p|
00000aa0  6c 6f 74 74 28 22 62 6f  64 39 22 2c b3 28 53 63  |lott("bod9",.(Sc|
00000ab0  72 65 65 6e 53 69 7a 65  5f 58 25 29 2c 31 30 2c  |reenSize_X%),10,|
00000ac0  31 30 30 29 0d 00 56 32  20 c9 20 20 31 39 3a f2  |100)..V2 .  19:.|
00000ad0  70 6c 6f 74 74 28 22 62  6f 64 31 30 22 2c b3 28  |plott("bod10",.(|
00000ae0  53 63 72 65 65 6e 53 69  7a 65 5f 58 25 29 2c 31  |ScreenSize_X%),1|
00000af0  30 2c 31 30 30 29 0d 00  57 42 20 c9 20 20 32 30  |0,100)..WB .  20|
00000b00  3a 66 25 3d b3 28 33 29  3a e7 20 66 25 3d 31 3a  |:f%=.(3):. f%=1:|
00000b10  f2 70 6c 6f 74 74 28 22  62 6f 64 31 31 22 2c b3  |.plott("bod11",.|
00000b20  28 53 63 72 65 65 6e 53  69 7a 65 5f 58 25 29 2c  |(ScreenSize_X%),|
00000b30  31 39 30 2c 31 30 30 29  0d 00 58 32 20 c9 20 20  |190,100)..X2 .  |
00000b40  32 31 3a f2 70 6c 6f 74  74 28 22 62 6f 64 31 32  |21:.plott("bod12|
00000b50  22 2c b3 28 53 63 72 65  65 6e 53 69 7a 65 5f 58  |",.(ScreenSize_X|
00000b60  25 29 2c 31 30 2c 31 30  30 29 0d 00 59 32 20 c9  |%),10,100)..Y2 .|
00000b70  20 20 32 32 3a f2 70 6c  6f 74 74 28 22 62 6f 64  |  22:.plott("bod|
00000b80  31 33 22 2c b3 28 53 63  72 65 65 6e 53 69 7a 65  |13",.(ScreenSize|
00000b90  5f 58 25 29 2c 31 30 2c  31 30 30 29 0d 00 5a 33  |_X%),10,100)..Z3|
00000ba0  20 c9 20 20 32 33 3a f2  70 6c 6f 74 74 28 22 62  | .  23:.plott("b|
00000bb0  6f 64 31 34 22 2c b3 28  53 63 72 65 65 6e 53 69  |od14",.(ScreenSi|
00000bc0  7a 65 5f 58 25 29 2c 31  36 30 2c 31 30 30 29 0d  |ze_X%),160,100).|
00000bd0  00 5b 32 20 c9 20 20 32  34 3a f2 70 6c 6f 74 74  |.[2 .  24:.plott|
00000be0  28 22 62 6f 64 31 35 22  2c b3 28 53 63 72 65 65  |("bod15",.(Scree|
00000bf0  6e 53 69 7a 65 5f 58 25  29 2c 31 30 2c 31 30 30  |nSize_X%),10,100|
00000c00  29 0d 00 5c 32 20 c9 20  20 32 35 3a f2 70 6c 6f  |)..\2 .  25:.plo|
00000c10  74 74 28 22 62 6f 64 31  36 22 2c b3 28 53 63 72  |tt("bod16",.(Scr|
00000c20  65 65 6e 53 69 7a 65 5f  58 25 29 2c 31 30 2c 31  |eenSize_X%),10,1|
00000c30  30 30 29 0d 00 5d 32 20  c9 20 20 32 36 3a f2 70  |00)..]2 .  26:.p|
00000c40  6c 6f 74 74 28 22 62 6f  64 31 37 22 2c b3 28 53  |lott("bod17",.(S|
00000c50  63 72 65 65 6e 53 69 7a  65 5f 58 25 29 2c 31 30  |creenSize_X%),10|
00000c60  2c 31 30 30 29 0d 00 5e  05 cb 0d 00 5f 05 ed 0d  |,100)..^...._...|
00000c70  00 60 2c c8 93 20 30 2c  30 2c 53 63 72 65 65 6e  |.`,.. 0,0,Screen|
00000c80  53 69 7a 65 5f 58 25 2c  53 63 72 65 65 6e 53 69  |Size_X%,ScreenSi|
00000c90  7a 65 5f 59 25 20 b8 20  30 2c 38 0d 00 61 05 e1  |ze_Y% . 0,8..a..|
00000ca0  0d 00 62 05 3a 0d 00 63  1d dd 20 f2 70 6c 6f 74  |..b.:..c.. .plot|
00000cb0  74 28 53 50 24 2c 58 25  2c 59 25 2c 73 63 61 6c  |t(SP$,X%,Y%,scal|
00000cc0  65 29 0d 00 64 0b 64 25  3d b3 28 32 29 0d 00 65  |e)..d.d%=.(2)..e|
00000cd0  32 e7 20 64 25 3d 31 20  8c 20 c8 99 20 22 4f 53  |2. d%=1 . .. "OS|
00000ce0  5f 53 70 72 69 74 65 4f  70 22 2c 26 31 30 30 2b  |_SpriteOp",&100+|
00000cf0  34 37 2c 73 70 72 69 74  65 73 25 2c 53 50 24 0d  |47,sprites%,SP$.|
00000d00  00 66 12 73 63 61 6c 65  66 21 30 3d 73 63 61 6c  |.f.scalef!0=scal|
00000d10  65 0d 00 67 12 73 63 61  6c 65 66 21 34 3d 73 63  |e..g.scalef!4=sc|
00000d20  61 6c 65 0d 00 68 10 73  63 61 6c 65 66 21 38 3d  |ale..h.scalef!8=|
00000d30  31 30 30 0d 00 69 11 73  63 61 6c 65 66 21 31 32  |100..i.scalef!12|
00000d40  3d 31 30 30 0d 00 6a 3c  c8 99 20 22 43 6f 6c 6f  |=100..j<.. "Colo|
00000d50  75 72 54 72 61 6e 73 5f  53 65 6c 65 63 74 54 61  |urTrans_SelectTa|
00000d60  62 6c 65 22 2c 73 70 72  69 74 65 73 25 2c 53 50  |ble",sprites%,SP|
00000d70  24 2c 2d 31 2c 2d 31 2c  70 69 78 74 72 61 6e 73  |$,-1,-1,pixtrans|
00000d80  0d 00 6b 43 c8 99 20 22  4f 53 5f 53 70 72 69 74  |..kC.. "OS_Sprit|
00000d90  65 4f 70 22 2c 26 31 30  30 2b 35 32 2c 73 70 72  |eOp",&100+52,spr|
00000da0  69 74 65 73 25 2c 53 50  24 2c 58 25 2c 59 25 2c  |ites%,SP$,X%,Y%,|
00000db0  26 30 38 2c 73 63 61 6c  65 66 2c 70 69 78 74 72  |&08,scalef,pixtr|
00000dc0  61 6e 73 0d 00 6c 05 e1  0d 00 6d 05 3a 0d 00 6e  |ans..l....m.:..n|
00000dd0  15 dd 20 f2 72 65 67 73  70 72 69 74 65 73 28 53  |.. .regsprites(S|
00000de0  24 29 0d 00 6f 0a 6d 61  78 25 3d 30 0d 00 70 11  |$)..o.max%=0..p.|
00000df0  e3 20 6e 3d 30 20 b8 20  a9 28 53 24 29 0d 00 71  |. n=0 . .(S$)..q|
00000e00  0f 61 24 3d c1 53 24 2c  6e 2c 31 29 0d 00 72 15  |.a$=.S$,n,1)..r.|
00000e10  e7 20 61 24 3d 22 2e 22  20 8c 20 6d 61 78 25 3d  |. a$="." . max%=|
00000e20  6e 0d 00 73 05 ed 0d 00  74 13 70 61 74 68 24 3d  |n..s....t.path$=|
00000e30  c0 53 24 2c 6d 61 78 25  29 0d 00 75 13 66 6e 24  |.S$,max%)..u.fn$|
00000e40  3d c1 53 24 2c 6d 61 78  25 2b 31 29 0d 00 76 1c  |=.S$,max%+1)..v.|
00000e50  ff 20 22 53 45 54 20 46  69 6c 65 24 50 61 74 68  |. "SET File$Path|
00000e60  20 22 2b 70 61 74 68 24  0d 00 77 26 c8 99 20 22  | "+path$..w&.. "|
00000e70  4f 53 5f 46 69 6c 65 22  2c 35 2c 66 6e 24 20 b8  |OS_File",5,fn$ .|
00000e80  20 2c 2c 2c 2c 73 70 72  69 74 65 6c 65 6e 0d 00  | ,,,,spritelen..|
00000e90  78 1a 73 70 72 69 74 65  6c 65 6e 3d 73 70 72 69  |x.spritelen=spri|
00000ea0  74 65 6c 65 6e 2b 32 34  0d 00 79 1d f2 61 6c 6c  |telen+24..y..all|
00000eb0  6f 63 61 74 65 62 6c 6f  63 6b 28 73 70 72 69 74  |ocateblock(sprit|
00000ec0  65 6c 65 6e 29 0d 00 7a  0e 73 70 72 69 74 65 73  |elen)..z.sprites|
00000ed0  25 3d 93 0d 00 7b 18 73  70 72 69 74 65 73 25 21  |%=...{.sprites%!|
00000ee0  30 3d 73 70 72 69 74 65  6c 65 6e 0d 00 7c 11 73  |0=spritelen..|.s|
00000ef0  70 72 69 74 65 73 25 21  38 3d 31 36 0d 00 7d 24  |prites%!8=16..}$|
00000f00  c8 99 20 22 4f 53 5f 53  70 72 69 74 65 4f 70 22  |.. "OS_SpriteOp"|
00000f10  2c 26 31 30 30 2b 39 2c  73 70 72 69 74 65 73 25  |,&100+9,sprites%|
00000f20  0d 00 7e 1e c8 99 20 26  32 45 2c 26 31 30 30 2b  |..~... &2E,&100+|
00000f30  31 30 2c 73 70 72 69 74  65 73 25 2c 53 24 0d 00  |10,sprites%,S$..|
00000f40  7f 05 e1 0d 00 80 05 3a  0d 00 81 11 dd 20 f2 6f  |.......:..... .o|
00000f50  70 65 6e 28 77 69 6e 25  29 0d 00 82 13 20 20 20  |pen(win%)....   |
00000f60  21 42 6c 6f 63 6b 25 3d  77 69 6e 25 0d 00 83 13  |!Block%=win%....|
00000f70  20 20 20 42 6c 6f 63 6b  25 21 32 38 3d 2d 31 0d  |   Block%!28=-1.|
00000f80  00 84 27 20 20 20 c8 99  20 22 57 69 6d 70 5f 47  |..'   .. "Wimp_G|
00000f90  65 74 57 69 6e 64 6f 77  53 74 61 74 65 22 2c 2c  |etWindowState",,|
00000fa0  42 6c 6f 63 6b 25 0d 00  85 23 20 20 20 c8 99 20  |Block%...#   .. |
00000fb0  22 57 69 6d 70 5f 4f 70  65 6e 57 69 6e 64 6f 77  |"Wimp_OpenWindow|
00000fc0  22 2c 2c 42 6c 6f 63 6b  25 0d 00 86 05 e1 0d 00  |",,Block%.......|
00000fd0  87 05 3a 0d 00 88 12 dd  20 f2 69 6e 69 74 6d 65  |..:..... .initme|
00000fe0  6d 76 61 72 73 0d 00 89  14 61 70 70 73 69 7a 65  |mvars....appsize|
00000ff0  25 3d 93 2d 26 38 30 30  30 0d 00 8a 16 6f 61 70  |%=.-&8000....oap|
00001000  70 73 69 7a 65 25 3d 61  70 70 73 69 7a 65 25 0d  |psize%=appsize%.|
00001010  00 8b 22 c8 99 20 22 4f  53 5f 52 65 61 64 4d 65  |..".. "OS_ReadMe|
00001020  6d 4d 61 70 49 6e 66 6f  22 20 b8 20 70 61 67 65  |mMapInfo" . page|
00001030  25 0d 00 8c 05 e1 0d 00  8d 05 3a 0d 00 8e 19 dd  |%.........:.....|
00001040  20 f2 61 6c 6c 6f 63 61  74 65 62 6c 6f 63 6b 28  | .allocateblock(|
00001050  73 7a 25 29 0d 00 8f 31  c8 99 20 22 57 69 6d 70  |sz%)...1.. "Wimp|
00001060  5f 53 6c 6f 74 53 69 7a  65 22 2c 61 70 70 73 69  |_SlotSize",appsi|
00001070  7a 65 25 2b 73 7a 25 2c  2d 31 20 b8 20 61 70 70  |ze%+sz%,-1 . app|
00001080  73 69 7a 65 25 0d 00 90  05 e1 0d 00 91 05 3a 0d  |size%.........:.|
00001090  00 92 11 dd 20 f2 6c 6f  6f 73 65 62 6c 6f 63 6b  |.... .looseblock|
000010a0  0d 00 93 23 c8 99 20 22  57 69 6d 70 5f 53 6c 6f  |...#.. "Wimp_Slo|
000010b0  74 53 69 7a 65 22 2c 6f  61 70 70 73 69 7a 65 25  |tSize",oappsize%|
000010c0  2c 2d 31 0d 00 94 16 61  70 70 73 69 7a 65 25 3d  |,-1....appsize%=|
000010d0  6f 61 70 70 73 69 7a 65  25 0d 00 95 05 e1 0d 00  |oappsize%.......|
000010e0  96 05 3a 0d 00 97 15 dd  20 f2 72 65 61 64 73 63  |..:..... .readsc|
000010f0  72 65 65 6e 76 61 72 73  0d 00 98 18 78 65 69 67  |reenvars....xeig|
00001100  25 3d a4 6d 6f 64 65 76  61 72 28 2d 31 2c 34 29  |%=.modevar(-1,4)|
00001110  0d 00 99 18 79 65 69 67  25 3d a4 6d 6f 64 65 76  |....yeig%=.modev|
00001120  61 72 28 2d 31 2c 35 29  0d 00 9a 1c 78 70 69 78  |ar(-1,5)....xpix|
00001130  65 6c 73 25 3d a4 6d 6f  64 65 76 61 72 28 2d 31  |els%=.modevar(-1|
00001140  2c 31 31 29 0d 00 9b 1c  79 70 69 78 65 6c 73 25  |,11)....ypixels%|
00001150  3d a4 6d 6f 64 65 76 61  72 28 2d 31 2c 31 32 29  |=.modevar(-1,12)|
00001160  0d 00 9c 39 50 69 78 54  6f 4f 53 5f 58 25 3d 31  |...9PixToOS_X%=1|
00001170  3c 3c 78 65 69 67 25 20  3a 20 f4 20 23 20 4f 53  |<<xeig% : . # OS|
00001180  20 75 6e 69 74 73 20 74  68 61 74 20 31 20 70 69  | units that 1 pi|
00001190  78 65 6c 20 74 61 6b 65  73 0d 00 9d 17 50 69 78  |xel takes....Pix|
000011a0  54 6f 4f 53 5f 59 25 3d  31 3c 3c 79 65 69 67 25  |ToOS_Y%=1<<yeig%|
000011b0  0d 00 9e 45 53 63 72 65  65 6e 53 69 7a 65 5f 58  |...EScreenSize_X|
000011c0  25 3d 28 78 70 69 78 65  6c 73 25 2b 31 29 2a 50  |%=(xpixels%+1)*P|
000011d0  69 78 54 6f 4f 53 5f 58  25 20 3a 20 f4 20 73 63  |ixToOS_X% : . sc|
000011e0  72 65 65 6e 20 73 69 7a  65 20 69 6e 20 4f 53 20  |reen size in OS |
000011f0  75 6e 69 74 73 0d 00 9f  29 53 63 72 65 65 6e 53  |units...)ScreenS|
00001200  69 7a 65 5f 59 25 3d 28  79 70 69 78 65 6c 73 25  |ize_Y%=(ypixels%|
00001210  2b 31 29 2a 50 69 78 54  6f 4f 53 5f 59 25 0d 00  |+1)*PixToOS_Y%..|
00001220  a0 16 78 72 65 73 3d 53  63 72 65 65 6e 53 69 7a  |..xres=ScreenSiz|
00001230  65 5f 58 25 0d 00 a1 16  79 72 65 73 3d 53 63 72  |e_X%....yres=Scr|
00001240  65 65 6e 53 69 7a 65 5f  59 25 0d 00 a2 05 e1 0d  |eenSize_Y%......|
00001250  00 a3 05 3a 0d 00 a4 18  dd 20 a4 6d 6f 64 65 76  |...:..... .modev|
00001260  61 72 28 6d 6f 64 65 25  2c 76 25 29 0d 00 a5 0a  |ar(mode%,v%)....|
00001270  ea 20 76 61 6c 25 0d 00  a6 2e c8 99 20 22 4f 53  |. val%...... "OS|
00001280  5f 52 65 61 64 4d 6f 64  65 56 61 72 69 61 62 6c  |_ReadModeVariabl|
00001290  65 22 2c 6d 6f 64 65 25  2c 76 25 20 b8 20 2c 2c  |e",mode%,v% . ,,|
000012a0  76 61 6c 25 0d 00 a7 09  3d 76 61 6c 25 0d 00 a8  |val%....=val%...|
000012b0  05 3a 0d 00 a9 12 dd 20  f2 5f 57 69 6d 70 5f 45  |.:..... ._Wimp_E|
000012c0  72 72 6f 72 0d 00 aa 0d  20 ea 20 45 72 72 6f 72  |rror.... . Error|
000012d0  24 0d 00 ab 0e 20 21 42  6c 6f 63 6b 25 3d 9f 0d  |$.... !Block%=..|
000012e0  00 ac 10 20 45 72 72 6f  72 24 20 3d 20 f6 24 0d  |... Error$ = .$.|
000012f0  00 ad 51 20 45 72 72 6f  72 24 20 2b 3d 20 22 20  |..Q Error$ += " |
00001300  28 69 6e 74 65 72 6e 61  6c 20 65 72 72 6f 72 20  |(internal error |
00001310  63 6f 64 65 20 22 2b c3  20 9e 2b 22 29 2e 20 4f  |code "+. .+"). O|
00001320  4b 20 54 6f 20 43 6f 6e  74 69 6e 75 65 2c 20 43  |K To Continue, C|
00001330  41 4e 43 45 4c 20 54 6f  20 41 62 6f 72 74 2e 22  |ANCEL To Abort."|
00001340  0d 00 ae 1c 20 24 28 42  6c 6f 63 6b 25 2b 34 29  |.... $(Block%+4)|
00001350  3d 45 72 72 6f 72 24 20  2b 20 bd 30 0d 00 af 36  |=Error$ + .0...6|
00001360  20 c8 99 20 22 57 69 6d  70 5f 52 65 70 6f 72 74  | .. "Wimp_Report|
00001370  45 72 72 6f 72 22 2c 42  6c 6f 63 6b 25 2c 25 30  |Error",Block%,%0|
00001380  31 31 2c 54 61 73 6b 24  20 b8 20 2c 63 6c 69 63  |11,Task$ . ,clic|
00001390  6b 25 0d 00 b0 11 20 e7  20 63 6c 69 63 6b 25 3d  |k%.... . click%=|
000013a0  32 3a e0 0d 00 b1 05 e1  0d 00 b2 05 3a 0d 00 b3  |2:..........:...|
000013b0  12 dd 20 f2 63 6c 6f 73  65 28 77 69 6e 25 29 0d  |.. .close(win%).|
000013c0  00 b4 2f 42 6c 6f 63 6b  25 21 30 3d 77 69 6e 25  |../Block%!0=win%|
000013d0  3a c8 99 20 22 57 69 6d  70 5f 43 6c 6f 73 65 57  |:.. "Wimp_CloseW|
000013e0  69 6e 64 6f 77 22 2c 2c  42 6c 6f 63 6b 25 0d 00  |indow",,Block%..|
000013f0  b5 05 e1 0d ff                                    |.....|
000013f5