Home » Archimedes archive » Acorn User » AU 1998-12.adf » Regulars » StarInfo/Cole/!OneARMed/BASIC1

StarInfo/Cole/!OneARMed/BASIC1

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-12.adf » Regulars
Filename: StarInfo/Cole/!OneARMed/BASIC1
Read OK:
File size: 184E bytes
Load address: 0000
Exec address: 0000
File contents
   10ON ERROR :ON ERROR OFF:MODE 0:PRINT REPORT$;" at line ";ERL:END
   20quit%=FALSE
   30PROCinit
   40WHILE quit%=FALSE
   50PROCpoll
   60ENDWHILE
   70END
   80:
   90DEFPROCpoll
  100SYS "Wimp_PollIdle",(1<<8),block%,TIME+6 TO reason%
  110CASE reason% OF
  120WHEN 0 : MOUSE X,Y,Z
  130         IF finished%=3 THEN PROCscore:finished%=4:PROCprintcurrent
  140         IF finished%=4 AND Y>600 THEN finished%=5
  150         IF finished%=5 AND Y<400 THEN PROCnewroll
  160         IF finished%<3 THEN PROCrollthem:PROCprintcurrent
  170         
  180WHEN 2 : SYS "Wimp_OpenWindow",,block%
  190WHEN 3 : SYS "Wimp_CloseWindow",,block%
  200WHEN 6 : PROCclick(block%!8,block%!12,block%!16)
  210WHEN 9 : PROCmenu(block%!0,block%!4)
  220WHEN 17,18 : CASE block%!16 OF
  230             WHEN 0:quit%=TRUE
  240             ENDCASE
  250ENDCASE
  260ENDPROC
  270:
  280DEFPROCscore
  290IF rolls%!0=rolls%!8 THEN credits%+=35
  300IF rolls%!0=rolls%!8 AND rolls%!8=rolls%!16 THEN credits%+=35
  310ENDPROC
  320:
  330DEFPROCmenu(first%,second%)
  340CASE first% OF
  350WHEN 1:credits%=startwith%:PROCprintcurrent
  360WHEN 2:quit%=TRUE
  370ENDCASE
  380ENDPROC
  390:
  400DEFPROCinit
  410LOCAL loop%,next%,T
  420
  430SYS "OS_ReadMonotonicTime" TO T
  440next%=RND(-T)
  450
  460startwith%=0
  470
  480REM Actually, it look better in mode 13 anyway!
  490REMspext$="22"
  520REMIF MODE<19 THEN spext$=""
  521spext$=""
  530
  531X=OPENIN("<OAB$Dir>.Sprites")
  540sp%=EXT#X+4
  550CLOSE #X
  560DIM sprites% sp%
  570OSCLI("Load <OAB$Dir>.Sprites &"+STR$~(sprites%+4))
  580sprites%!0=sp%
  590
  600REM Now if using low res sprites, convert all the sprites to mode 12
  610IF spext$="" THEN
  620   next%=sprites%+sprites%!8
  630   FOR loop%=1 TO sprites%!4
  640   IF next%!40=27 THEN next%!40=12
  650   next%=next%+(next%!0)
  660   NEXT
  670   ENDIF
  680
  690
  700DIM rolls% 5*4
  710REM 2 words for each roll. First holds current pos, 2nd isnumber to increment
  720FOR loop%=0 TO 5
  730rolls%!(loop%*4)=0
  740NEXT
  750finished%=4
  760
  770credits%=startwith%
  780
  790REM INIT THE WIMP
  800
  810indlen%=2500
  820DIM block% 3000,menu% 120,indblock% indlen%,iconbarspritename% 10
  830thandle%=FNinittask("OneARMed",2)
  840
  850$iconbarspritename%="bigsprite"
  860height%=10
  870IF spext$="" THEN height%=-20
  880iconbar%=FNcreate_icon(-1,0,height%,100,150,&300A+(1<<8),"",iconbarspritename%,sprites%,LEN($iconbarspritename%))
  890PROCopentemplates("<OAB$Dir>.templ",indblock%,indlen%,block%,-1)
  900info%=FNreadtemplate("Info")
  910SYS "Wimp_CloseTemplate"
  920
  930PROCsetupmenu(menu%)
  940PROCprintcurrent
  950
  960ENDPROC
  970DATA "OneARMed",3,0,info%,"Info",0,-1,"Restart",&80,-1,"Quit"
  980:
  990DEFPROCclick(but%,win%,icon%)
 1000IF win%=info% THEN ENDPROC
 1010CASE but% OF
 1020WHEN 2 :PROCshowmenu(!block%-64,FNiconbarmenuheight(menu%),menu%)
 1030OTHERWISE:IF finished%>3 THEN PROCnewroll
 1040ENDCASE
 1050ENDPROC
 1060:
 1070DEFPROCrollthem
 1080finished%=0
 1090FOR loop%=0 TO 2
 1100a%=rolls%!(4*((loop%*2)+1))
 1110b%=rolls%!(4*((loop%*2)))
 1120IF a%>0 THEN b%+=1:a%-=1 ELSE b%=b% AND (NOT1):finished%+=1:REM Ensure even
 1130IF b%>7 THEN b%=0  :REM Roll over
 1140rolls%!(4*((loop%*2)+1))=a%
 1150rolls%!(4*((loop%*2)))=b%
 1160NEXT
 1170ENDPROC
 1180:
 1190DEFPROCprintcurrent
 1200LOCAL l%,off%
 1210off%=16
 1220IF spext$="" THEN off%=32
 1230SYS &2E,60+256,sprites%,"bigsprite",0 TO R0,R1,R2,R3
 1240FOR loop%=0 TO 2
 1250b%=rolls%!(4*((loop%*2)))
 1260spr%=1+(b%DIV 2)
 1270IF (b% AND 1)<>0 THEN
 1280    spr1%=1+((spr%+1) MOD 4)
 1290    spr2%=1+((spr%+3) MOD 4)
 1300    SYS &2E,34+256,sprites%,STR$(spr1%),loop%*16*2,-off%,0
 1310    SYS &2E,34+256,sprites%,STR$(spr2%),loop%*16*2,off%,0
 1320    ELSE
 1330    sp$=STR$(spr%)
 1340    SYS &2E,34+256,sprites%,sp$,loop%*16*2,0,0
 1350    ENDIF
 1360NEXT
 1371GCOL 1
 1372RECTANGLE FILL 0,80,100,64
 1373GCOL 7
 1380l%=LEN(STR$(credits%))
 1400VDU 5
 1401PRINTTAB(0,0);SPC(6-l%);credits%
 1420VDU 4
 1421SYS &2E,R0,R1,R2,R3
 1430
 1440block%!0=-1
 1450block%!4=iconbar%
 1460block%!8=0
 1470block%!12=0
 1480SYS "Wimp_SetIconState",,block%
 1490ENDPROC
 1500:
 1510DEFPROCnewroll
 1520credits%-=10
 1530finished%=0
 1540r%=RND(10)+6
 1550FOR loop%=0 TO 2
 1560rolls%!(4*((loop%*2)+1))=r%*(loop%+1)
 1570NEXT
 1580ENDPROC
 1590:
 1600DEFFNcreate_icon(whan%,ix%,iy%,iw%,ih%,flag%,text$,prt1%,prt2%,ptr3%)
 1610!block%=whan%
 1620block%!4=ix%
 1630block%!8=iy%
 1640block%!12=ix%+iw%
 1650block%!16=iy%+ih%
 1660block%!20=flag%
 1670IF prt1%=0 AND prt2%=0 AND ptr3%=0 THEN
 1680$(block%+24)=text$
 1690ELSE
 1700block%!24=prt1%
 1710block%!28=prt2%
 1720block%!32=ptr3%
 1730ENDIF
 1740SYS "Wimp_CreateIcon",,block% TO ihandle%
 1750=ihandle%
 1760:
 1770REM FNinittask      - Initialises the task.
 1780DEFFNinittask(Iapp$,IRISCOS%)
 1790SYS "Wimp_Initialise",IRISCOS%*100,&4B534154,Iapp$ TO RISCOS%,Thandle%
 1800RISCOS%=RISCOS%/100
 1810app$=Iapp$
 1820ON ERROR : PROCerror(REPORT$+" at line "+STR$ERL):END
 1830=Thandle%
 1840:
 1850DEFPROCopentemplates(filename$,Imaintempind%,Itemplimit%,Iwindowstore%,Ifonts%)
 1860LOCAL loop%
 1870maintempind%=Imaintempind%:templimit%=Itemplimit%:windowstore%=Iwindowstore%:fontspointer%=Ifonts%
 1880SYS "Wimp_OpenTemplate",,filename$
 1890pointer%=maintempind%:next%=0
 1900IF fontspointer%<>-1 THEN FOR loop%=0 TO &100 STPE 4:fontspointer%!loop%=0:NEXT
 1910ENDPROC
 1920
 1930REM   FNreadtemplate(winname$)   - Reads a window definition off the template file.
 1940DEFFNreadtemplate(winname$)
 1950LOCAL name%
 1960DIM name% 11
 1970$name%=winname$
 1980SYS "Wimp_LoadTemplate",,windowstore%,pointer%,maintempind%+templimit%,fontspointer%,name%,next% TO ,,pointer%,,,,next%
 1990IF next%=0 THEN PROCerror("Window definition not found in Template (Identifier="+$name%+").")
 2000SYS "Wimp_CreateWindow",,windowstore% TO windowhandle%
 2010=windowhandle%
 2020
 2030REM PROCopenwindow   - Opens window at front.
 2040DEFPROCopenwindow(windowhandle%,windowstore%)
 2050!windowstore%=windowhandle%
 2060SYS "Wimp_GetWindowState",,windowstore%
 2070!(windowstore%+28)=-1
 2080SYS "Wimp_OpenWindow",,windowstore%
 2090ENDPROC
 2100:
 2110REM FNiconbarmenuheight(menu%)  - Finds height of iconbar menus
 2120DEFFNiconbarmenuheight(menu%)
 2130LOCAL high%
 2140high%=96
 2150loop%=-1:REPEAT:loop%+=1
 2160IF (!(menu%+(loop%*24)+28) AND %10)=%10 THEN high%+=24
 2170high%+=44
 2180UNTIL (!(menu%+(loop%*24)+28) AND %10000000)=%10000000
 2190=high%
 2200:
 2210DEFFNreport(err$,flag%)
 2220!block%=255
 2230name$=app$
 2240IF flag% AND 16 THEN name$="Message from "+name$
 2250$(block%+4)=err$+CHR$0
 2260SYS "Wimp_ReportError",block%,flag%,name$ TO ,errclick%
 2270=errclick%
 2280
 2290REM PROCerror   - To be called when an error occures
 2300DEFPROCerror(a$)
 2310end%=FNreport(a$,%10)
 2320SYS "Wimp_CloseDown"
 2330ENDPROC
 2340:
 2350DEFPROCsetupmenu(menu%)
 2360LOCAL title$,num%,width%,ptr%,item$
 2370READ title$,num%:$menu%=title$
 2380width%=(LEN(title$)-1)*16
 2390menu%!12=&00070207:menu%!20=44:menu%!24=0
 2400ptr%=menu%+28:FOR i%=1 TO num%
 2410READ mflags%,subptr%,item$
 2420!ptr%=mflags%:ptr%!4=subptr%
 2430ptr%!8=&7000021:$(ptr%+12)=item$
 2440a%=(LEN(item$)+1)*16
 2450IF a%>width% width%=a%
 2460ptr%+=24:NEXT
 2470menu%!16=width%
 2480ENDPROC
 2490:
 2500DEFPROCshowmenu(mx%,my%,menu%)
 2510SYS "Wimp_CreateMenu",,menu%,mx%,my%
 2520ENDPROC
 2530
 2540
 2550
 2560
 2570
 2580
 2590

'� � :� � �:� 0:� �$;" at line ";�:�
quit%=�
	�init
(ȕ quit%=�
2	�poll
<�
F�
P:
Z
��poll
d2ș "Wimp_PollIdle",(1<<8),block%,�+6 � reason%
nȎ reason% �
x� 0 : ȗ X,Y,Z
�=         � finished%=3 � �score:finished%=4:�printcurrent
�0         � finished%=4 � Y>600 � finished%=5
�-         � finished%=5 � Y<400 � �newroll
�4         � finished%<3 � �rollthem:�printcurrent
�
         
�&� 2 : ș "Wimp_OpenWindow",,block%
�'� 3 : ș "Wimp_CloseWindow",,block%
�.� 6 : �click(block%!8,block%!12,block%!16)
�"� 9 : �menu(block%!0,block%!4)
�� 17,18 : Ȏ block%!16 �
�             � 0:quit%=�
�             �
��
�
:
��score
"&� rolls%!0=rolls%!8 � credits%+=35
,;� rolls%!0=rolls%!8 � rolls%!8=rolls%!16 � credits%+=35
6�
@:
J��menu(first%,second%)
TȎ first% �
^)� 1:credits%=startwith%:�printcurrent
h� 2:quit%=�
r�
|�
�:
�
��init
�� loop%,next%,T
�
�!ș "OS_ReadMonotonicTime" � T
�next%=�(-T)
�
�startwith%=0
�
�1� Actually, it look better in mode 13 anyway!
��spext$="22"
�IF MODE<19 THEN spext$=""
	
spext$=""

X=�("<OAB$Dir>.Sprites")

sp%=�#X+4
&� #X
0� sprites% sp%
:0�("Load <OAB$Dir>.Sprites &"+�~(sprites%+4))
Dsprites%!0=sp%
N
XF� Now if using low res sprites, convert all the sprites to mode 12
b� spext$="" �
l    next%=sprites%+sprites%!8
v   � loop%=1 � sprites%!4
�"   � next%!40=27 � next%!40=12
�   next%=next%+(next%!0)
�   �
�   �
�
�
�� rolls% 5*4
�O� 2 words for each roll. First holds current pos, 2nd isnumber to increment
�� loop%=0 � 5
�rolls%!(loop%*4)=0
��
�finished%=4
�
credits%=startwith%

� INIT THE WIMP
 
*indlen%=2500
4C� block% 3000,menu% 120,indblock% indlen%,iconbarspritename% 10
>$thandle%=�inittask("OneARMed",2)
H
R#$iconbarspritename%="bigsprite"
\height%=10
f� spext$="" � height%=-20
priconbar%=�create_icon(-1,0,height%,100,150,&300A+(1<<8),"",iconbarspritename%,sprites%,�($iconbarspritename%))
zA�opentemplates("<OAB$Dir>.templ",indblock%,indlen%,block%,-1)
�info%=�readtemplate("Info")
�ș "Wimp_CloseTemplate"
�
��setupmenu(menu%)
��printcurrent
�
��
�>� "OneARMed",3,0,info%,"Info",0,-1,"Restart",&80,-1,"Quit"
�:
���click(but%,win%,icon%)
�� win%=info% � �
�
Ȏ but% �
�>� 2 :�showmenu(!block%-64,�iconbarmenuheight(menu%),menu%)
:� finished%>3 � �newroll
�
�
$:
.��rollthem
8finished%=0
B� loop%=0 � 2
La%=rolls%!(4*((loop%*2)+1))
Vb%=rolls%!(4*((loop%*2)))
`B� a%>0 � b%+=1:a%-=1 � b%=b% � (�1):finished%+=1:� Ensure even
j� b%>7 � b%=0  :� Roll over
trolls%!(4*((loop%*2)+1))=a%
~rolls%!(4*((loop%*2)))=b%
��
��
�:
���printcurrent
�
� l%,off%
�off%=16
�� spext$="" � off%=32
�6ș &2E,60+256,sprites%,"bigsprite",0 � R0,R1,R2,R3
�� loop%=0 � 2
�b%=rolls%!(4*((loop%*2)))
�spr%=1+(b%� 2)
�� (b% � 1)<>0 �
    spr1%=1+((spr%+1) � 4)

    spr2%=1+((spr%+3) � 4)
:    ș &2E,34+256,sprites%,�(spr1%),loop%*16*2,-off%,0
9    ș &2E,34+256,sprites%,�(spr2%),loop%*16*2,off%,0
(	    �
2    sp$=�(spr%)
<1    ș &2E,34+256,sprites%,sp$,loop%*16*2,0,0
F	    �
P�
[� 1
\ȓ Ȑ 0,80,100,64
]� 7
dl%=�(�(credits%))
x� 5
y�0,0);�(6-l%);credits%
�� 4
�ș &2E,R0,R1,R2,R3
�
�block%!0=-1
�block%!4=iconbar%
�block%!8=0
�block%!12=0
�"ș "Wimp_SetIconState",,block%
��
�:
�
��newroll
�credits%-=10
�finished%=0
r%=�(10)+6
� loop%=0 � 2
)rolls%!(4*((loop%*2)+1))=r%*(loop%+1)
"�
,�
6:
@Fݤcreate_icon(whan%,ix%,iy%,iw%,ih%,flag%,text$,prt1%,prt2%,ptr3%)
J!block%=whan%
Tblock%!4=ix%
^block%!8=iy%
hblock%!12=ix%+iw%
rblock%!16=iy%+ih%
|block%!20=flag%
�#� prt1%=0 � prt2%=0 � ptr3%=0 �
�$(block%+24)=text$
��
�block%!24=prt1%
�block%!28=prt2%
�block%!32=ptr3%
��
�+ș "Wimp_CreateIcon",,block% � ihandle%
�
=ihandle%
�:
�-� FNinittask      - Initialises the task.
�ݤinittask(Iapp$,IRISCOS%)
�Hș "Wimp_Initialise",IRISCOS%*100,&4B534154,Iapp$ � RISCOS%,Thandle%
RISCOS%=RISCOS%/100
app$=Iapp$
%� � : �error(�$+" at line "+Þ):�
&
=Thandle%
0:
:N��opentemplates(filename$,Imaintempind%,Itemplimit%,Iwindowstore%,Ifonts%)
D� loop%
Nfmaintempind%=Imaintempind%:templimit%=Itemplimit%:windowstore%=Iwindowstore%:fontspointer%=Ifonts%
X%ș "Wimp_OpenTemplate",,filename$
b!pointer%=maintempind%:next%=0
lI� fontspointer%<>-1 � � loop%=0 � &100 STPE 4:fontspointer%!loop%=0:�
v�
�
�U�   FNreadtemplate(winname$)   - Reads a window definition off the template file.
�ݤreadtemplate(winname$)
�� name%
�� name% 11
�$name%=winname$
�yș "Wimp_LoadTemplate",,windowstore%,pointer%,maintempind%+templimit%,fontspointer%,name%,next% � ,,pointer%,,,,next%
�Z� next%=0 � �error("Window definition not found in Template (Identifier="+$name%+").")
�8ș "Wimp_CreateWindow",,windowstore% � windowhandle%
�=windowhandle%
�
�/� PROCopenwindow   - Opens window at front.
�,��openwindow(windowhandle%,windowstore%)
!windowstore%=windowhandle%
*ș "Wimp_GetWindowState",,windowstore%
!(windowstore%+28)=-1
 &ș "Wimp_OpenWindow",,windowstore%
*�
4:
>A� FNiconbarmenuheight(menu%)  - Finds height of iconbar menus
Hݤiconbarmenuheight(menu%)
R� high%
\high%=96
floop%=-1:�:loop%+=1
p4� (!(menu%+(loop%*24)+28) � %10)=%10 � high%+=24
z
high%+=44
�4� (!(menu%+(loop%*24)+28) � %10000000)=%10000000
�
=high%
�:
�ݤreport(err$,flag%)
�!block%=255
�name$=app$
�.� flag% � 16 � name$="Message from "+name$
�$(block%+4)=err$+�0
�9ș "Wimp_ReportError",block%,flag%,name$ � ,errclick%
�=errclick%
�
�6� PROCerror   - To be called when an error occures
���error(a$)
	end%=�report(a$,%10)
	ș "Wimp_CloseDown"
	�
	$:
	.��setupmenu(menu%)
	8#� title$,num%,width%,ptr%,item$
	B� title$,num%:$menu%=title$
	Lwidth%=(�(title$)-1)*16
	V-menu%!12=&00070207:menu%!20=44:menu%!24=0
	`ptr%=menu%+28:� i%=1 � num%
	j� mflags%,subptr%,item$
	t !ptr%=mflags%:ptr%!4=subptr%
	~$ptr%!8=&7000021:$(ptr%+12)=item$
	�a%=(�(item$)+1)*16
	�� a%>width% width%=a%
	�ptr%+=24:�
	�menu%!16=width%
	��
	�:
	���showmenu(mx%,my%,menu%)
	�'ș "Wimp_CreateMenu",,menu%,mx%,my%
	��
	�
	�
	�





�
00000000  0d 00 0a 27 ee 20 85 20  3a ee 20 85 20 87 3a eb  |...'. . :. . .:.|
00000010  20 30 3a f1 20 f6 24 3b  22 20 61 74 20 6c 69 6e  | 0:. .$;" at lin|
00000020  65 20 22 3b 9e 3a e0 0d  00 14 0b 71 75 69 74 25  |e ";.:.....quit%|
00000030  3d a3 0d 00 1e 09 f2 69  6e 69 74 0d 00 28 0e c8  |=......init..(..|
00000040  95 20 71 75 69 74 25 3d  a3 0d 00 32 09 f2 70 6f  |. quit%=...2..po|
00000050  6c 6c 0d 00 3c 05 ce 0d  00 46 05 e0 0d 00 50 05  |ll..<....F....P.|
00000060  3a 0d 00 5a 0a dd f2 70  6f 6c 6c 0d 00 64 32 c8  |:..Z...poll..d2.|
00000070  99 20 22 57 69 6d 70 5f  50 6f 6c 6c 49 64 6c 65  |. "Wimp_PollIdle|
00000080  22 2c 28 31 3c 3c 38 29  2c 62 6c 6f 63 6b 25 2c  |",(1<<8),block%,|
00000090  91 2b 36 20 b8 20 72 65  61 73 6f 6e 25 0d 00 6e  |.+6 . reason%..n|
000000a0  10 c8 8e 20 72 65 61 73  6f 6e 25 20 ca 0d 00 78  |... reason% ...x|
000000b0  12 c9 20 30 20 3a 20 c8  97 20 58 2c 59 2c 5a 0d  |.. 0 : .. X,Y,Z.|
000000c0  00 82 3d 20 20 20 20 20  20 20 20 20 e7 20 66 69  |..=         . fi|
000000d0  6e 69 73 68 65 64 25 3d  33 20 8c 20 f2 73 63 6f  |nished%=3 . .sco|
000000e0  72 65 3a 66 69 6e 69 73  68 65 64 25 3d 34 3a f2  |re:finished%=4:.|
000000f0  70 72 69 6e 74 63 75 72  72 65 6e 74 0d 00 8c 30  |printcurrent...0|
00000100  20 20 20 20 20 20 20 20  20 e7 20 66 69 6e 69 73  |         . finis|
00000110  68 65 64 25 3d 34 20 80  20 59 3e 36 30 30 20 8c  |hed%=4 . Y>600 .|
00000120  20 66 69 6e 69 73 68 65  64 25 3d 35 0d 00 96 2d  | finished%=5...-|
00000130  20 20 20 20 20 20 20 20  20 e7 20 66 69 6e 69 73  |         . finis|
00000140  68 65 64 25 3d 35 20 80  20 59 3c 34 30 30 20 8c  |hed%=5 . Y<400 .|
00000150  20 f2 6e 65 77 72 6f 6c  6c 0d 00 a0 34 20 20 20  | .newroll...4   |
00000160  20 20 20 20 20 20 e7 20  66 69 6e 69 73 68 65 64  |      . finished|
00000170  25 3c 33 20 8c 20 f2 72  6f 6c 6c 74 68 65 6d 3a  |%<3 . .rollthem:|
00000180  f2 70 72 69 6e 74 63 75  72 72 65 6e 74 0d 00 aa  |.printcurrent...|
00000190  0d 20 20 20 20 20 20 20  20 20 0d 00 b4 26 c9 20  |.         ...&. |
000001a0  32 20 3a 20 c8 99 20 22  57 69 6d 70 5f 4f 70 65  |2 : .. "Wimp_Ope|
000001b0  6e 57 69 6e 64 6f 77 22  2c 2c 62 6c 6f 63 6b 25  |nWindow",,block%|
000001c0  0d 00 be 27 c9 20 33 20  3a 20 c8 99 20 22 57 69  |...'. 3 : .. "Wi|
000001d0  6d 70 5f 43 6c 6f 73 65  57 69 6e 64 6f 77 22 2c  |mp_CloseWindow",|
000001e0  2c 62 6c 6f 63 6b 25 0d  00 c8 2e c9 20 36 20 3a  |,block%..... 6 :|
000001f0  20 f2 63 6c 69 63 6b 28  62 6c 6f 63 6b 25 21 38  | .click(block%!8|
00000200  2c 62 6c 6f 63 6b 25 21  31 32 2c 62 6c 6f 63 6b  |,block%!12,block|
00000210  25 21 31 36 29 0d 00 d2  22 c9 20 39 20 3a 20 f2  |%!16)...". 9 : .|
00000220  6d 65 6e 75 28 62 6c 6f  63 6b 25 21 30 2c 62 6c  |menu(block%!0,bl|
00000230  6f 63 6b 25 21 34 29 0d  00 dc 1c c9 20 31 37 2c  |ock%!4)..... 17,|
00000240  31 38 20 3a 20 c8 8e 20  62 6c 6f 63 6b 25 21 31  |18 : .. block%!1|
00000250  36 20 ca 0d 00 e6 1c 20  20 20 20 20 20 20 20 20  |6 .....         |
00000260  20 20 20 20 c9 20 30 3a  71 75 69 74 25 3d b9 0d  |    . 0:quit%=..|
00000270  00 f0 12 20 20 20 20 20  20 20 20 20 20 20 20 20  |...             |
00000280  cb 0d 00 fa 05 cb 0d 01  04 05 e1 0d 01 0e 05 3a  |...............:|
00000290  0d 01 18 0b dd f2 73 63  6f 72 65 0d 01 22 26 e7  |......score.."&.|
000002a0  20 72 6f 6c 6c 73 25 21  30 3d 72 6f 6c 6c 73 25  | rolls%!0=rolls%|
000002b0  21 38 20 8c 20 63 72 65  64 69 74 73 25 2b 3d 33  |!8 . credits%+=3|
000002c0  35 0d 01 2c 3b e7 20 72  6f 6c 6c 73 25 21 30 3d  |5..,;. rolls%!0=|
000002d0  72 6f 6c 6c 73 25 21 38  20 80 20 72 6f 6c 6c 73  |rolls%!8 . rolls|
000002e0  25 21 38 3d 72 6f 6c 6c  73 25 21 31 36 20 8c 20  |%!8=rolls%!16 . |
000002f0  63 72 65 64 69 74 73 25  2b 3d 33 35 0d 01 36 05  |credits%+=35..6.|
00000300  e1 0d 01 40 05 3a 0d 01  4a 1a dd f2 6d 65 6e 75  |...@.:..J...menu|
00000310  28 66 69 72 73 74 25 2c  73 65 63 6f 6e 64 25 29  |(first%,second%)|
00000320  0d 01 54 0f c8 8e 20 66  69 72 73 74 25 20 ca 0d  |..T... first% ..|
00000330  01 5e 29 c9 20 31 3a 63  72 65 64 69 74 73 25 3d  |.^). 1:credits%=|
00000340  73 74 61 72 74 77 69 74  68 25 3a f2 70 72 69 6e  |startwith%:.prin|
00000350  74 63 75 72 72 65 6e 74  0d 01 68 0f c9 20 32 3a  |tcurrent..h.. 2:|
00000360  71 75 69 74 25 3d b9 0d  01 72 05 cb 0d 01 7c 05  |quit%=...r....|.|
00000370  e1 0d 01 86 05 3a 0d 01  90 0a dd f2 69 6e 69 74  |.....:......init|
00000380  0d 01 9a 13 ea 20 6c 6f  6f 70 25 2c 6e 65 78 74  |..... loop%,next|
00000390  25 2c 54 0d 01 a4 04 0d  01 ae 21 c8 99 20 22 4f  |%,T.......!.. "O|
000003a0  53 5f 52 65 61 64 4d 6f  6e 6f 74 6f 6e 69 63 54  |S_ReadMonotonicT|
000003b0  69 6d 65 22 20 b8 20 54  0d 01 b8 0f 6e 65 78 74  |ime" . T....next|
000003c0  25 3d b3 28 2d 54 29 0d  01 c2 04 0d 01 cc 10 73  |%=.(-T)........s|
000003d0  74 61 72 74 77 69 74 68  25 3d 30 0d 01 d6 04 0d  |tartwith%=0.....|
000003e0  01 e0 31 f4 20 41 63 74  75 61 6c 6c 79 2c 20 69  |..1. Actually, i|
000003f0  74 20 6c 6f 6f 6b 20 62  65 74 74 65 72 20 69 6e  |t look better in|
00000400  20 6d 6f 64 65 20 31 33  20 61 6e 79 77 61 79 21  | mode 13 anyway!|
00000410  0d 01 ea 10 f4 73 70 65  78 74 24 3d 22 32 32 22  |.....spext$="22"|
00000420  0d 02 08 1e f4 49 46 20  4d 4f 44 45 3c 31 39 20  |.....IF MODE<19 |
00000430  54 48 45 4e 20 73 70 65  78 74 24 3d 22 22 0d 02  |THEN spext$=""..|
00000440  09 0d 73 70 65 78 74 24  3d 22 22 0d 02 12 04 0d  |..spext$="".....|
00000450  02 13 1c 58 3d 8e 28 22  3c 4f 41 42 24 44 69 72  |...X=.("<OAB$Dir|
00000460  3e 2e 53 70 72 69 74 65  73 22 29 0d 02 1c 0d 73  |>.Sprites")....s|
00000470  70 25 3d a2 23 58 2b 34  0d 02 26 08 d9 20 23 58  |p%=.#X+4..&.. #X|
00000480  0d 02 30 12 de 20 73 70  72 69 74 65 73 25 20 73  |..0.. sprites% s|
00000490  70 25 0d 02 3a 30 ff 28  22 4c 6f 61 64 20 3c 4f  |p%..:0.("Load <O|
000004a0  41 42 24 44 69 72 3e 2e  53 70 72 69 74 65 73 20  |AB$Dir>.Sprites |
000004b0  26 22 2b c3 7e 28 73 70  72 69 74 65 73 25 2b 34  |&"+.~(sprites%+4|
000004c0  29 29 0d 02 44 12 73 70  72 69 74 65 73 25 21 30  |))..D.sprites%!0|
000004d0  3d 73 70 25 0d 02 4e 04  0d 02 58 46 f4 20 4e 6f  |=sp%..N...XF. No|
000004e0  77 20 69 66 20 75 73 69  6e 67 20 6c 6f 77 20 72  |w if using low r|
000004f0  65 73 20 73 70 72 69 74  65 73 2c 20 63 6f 6e 76  |es sprites, conv|
00000500  65 72 74 20 61 6c 6c 20  74 68 65 20 73 70 72 69  |ert all the spri|
00000510  74 65 73 20 74 6f 20 6d  6f 64 65 20 31 32 0d 02  |tes to mode 12..|
00000520  62 11 e7 20 73 70 65 78  74 24 3d 22 22 20 8c 0d  |b.. spext$="" ..|
00000530  02 6c 20 20 20 20 6e 65  78 74 25 3d 73 70 72 69  |.l    next%=spri|
00000540  74 65 73 25 2b 73 70 72  69 74 65 73 25 21 38 0d  |tes%+sprites%!8.|
00000550  02 76 1d 20 20 20 e3 20  6c 6f 6f 70 25 3d 31 20  |.v.   . loop%=1 |
00000560  b8 20 73 70 72 69 74 65  73 25 21 34 0d 02 80 22  |. sprites%!4..."|
00000570  20 20 20 e7 20 6e 65 78  74 25 21 34 30 3d 32 37  |   . next%!40=27|
00000580  20 8c 20 6e 65 78 74 25  21 34 30 3d 31 32 0d 02  | . next%!40=12..|
00000590  8a 1c 20 20 20 6e 65 78  74 25 3d 6e 65 78 74 25  |..   next%=next%|
000005a0  2b 28 6e 65 78 74 25 21  30 29 0d 02 94 08 20 20  |+(next%!0)....  |
000005b0  20 ed 0d 02 9e 08 20 20  20 cd 0d 02 a8 04 0d 02  | .....   .......|
000005c0  b2 04 0d 02 bc 10 de 20  72 6f 6c 6c 73 25 20 35  |....... rolls% 5|
000005d0  2a 34 0d 02 c6 4f f4 20  32 20 77 6f 72 64 73 20  |*4...O. 2 words |
000005e0  66 6f 72 20 65 61 63 68  20 72 6f 6c 6c 2e 20 46  |for each roll. F|
000005f0  69 72 73 74 20 68 6f 6c  64 73 20 63 75 72 72 65  |irst holds curre|
00000600  6e 74 20 70 6f 73 2c 20  32 6e 64 20 69 73 6e 75  |nt pos, 2nd isnu|
00000610  6d 62 65 72 20 74 6f 20  69 6e 63 72 65 6d 65 6e  |mber to incremen|
00000620  74 0d 02 d0 11 e3 20 6c  6f 6f 70 25 3d 30 20 b8  |t..... loop%=0 .|
00000630  20 35 0d 02 da 16 72 6f  6c 6c 73 25 21 28 6c 6f  | 5....rolls%!(lo|
00000640  6f 70 25 2a 34 29 3d 30  0d 02 e4 05 ed 0d 02 ee  |op%*4)=0........|
00000650  0f 66 69 6e 69 73 68 65  64 25 3d 34 0d 02 f8 04  |.finished%=4....|
00000660  0d 03 02 17 63 72 65 64  69 74 73 25 3d 73 74 61  |....credits%=sta|
00000670  72 74 77 69 74 68 25 0d  03 0c 04 0d 03 16 13 f4  |rtwith%.........|
00000680  20 49 4e 49 54 20 54 48  45 20 57 49 4d 50 0d 03  | INIT THE WIMP..|
00000690  20 04 0d 03 2a 10 69 6e  64 6c 65 6e 25 3d 32 35  | ...*.indlen%=25|
000006a0  30 30 0d 03 34 43 de 20  62 6c 6f 63 6b 25 20 33  |00..4C. block% 3|
000006b0  30 30 30 2c 6d 65 6e 75  25 20 31 32 30 2c 69 6e  |000,menu% 120,in|
000006c0  64 62 6c 6f 63 6b 25 20  69 6e 64 6c 65 6e 25 2c  |dblock% indlen%,|
000006d0  69 63 6f 6e 62 61 72 73  70 72 69 74 65 6e 61 6d  |iconbarspritenam|
000006e0  65 25 20 31 30 0d 03 3e  24 74 68 61 6e 64 6c 65  |e% 10..>$thandle|
000006f0  25 3d a4 69 6e 69 74 74  61 73 6b 28 22 4f 6e 65  |%=.inittask("One|
00000700  41 52 4d 65 64 22 2c 32  29 0d 03 48 04 0d 03 52  |ARMed",2)..H...R|
00000710  23 24 69 63 6f 6e 62 61  72 73 70 72 69 74 65 6e  |#$iconbarspriten|
00000720  61 6d 65 25 3d 22 62 69  67 73 70 72 69 74 65 22  |ame%="bigsprite"|
00000730  0d 03 5c 0e 68 65 69 67  68 74 25 3d 31 30 0d 03  |..\.height%=10..|
00000740  66 1d e7 20 73 70 65 78  74 24 3d 22 22 20 8c 20  |f.. spext$="" . |
00000750  68 65 69 67 68 74 25 3d  2d 32 30 0d 03 70 72 69  |height%=-20..pri|
00000760  63 6f 6e 62 61 72 25 3d  a4 63 72 65 61 74 65 5f  |conbar%=.create_|
00000770  69 63 6f 6e 28 2d 31 2c  30 2c 68 65 69 67 68 74  |icon(-1,0,height|
00000780  25 2c 31 30 30 2c 31 35  30 2c 26 33 30 30 41 2b  |%,100,150,&300A+|
00000790  28 31 3c 3c 38 29 2c 22  22 2c 69 63 6f 6e 62 61  |(1<<8),"",iconba|
000007a0  72 73 70 72 69 74 65 6e  61 6d 65 25 2c 73 70 72  |rspritename%,spr|
000007b0  69 74 65 73 25 2c a9 28  24 69 63 6f 6e 62 61 72  |ites%,.($iconbar|
000007c0  73 70 72 69 74 65 6e 61  6d 65 25 29 29 0d 03 7a  |spritename%))..z|
000007d0  41 f2 6f 70 65 6e 74 65  6d 70 6c 61 74 65 73 28  |A.opentemplates(|
000007e0  22 3c 4f 41 42 24 44 69  72 3e 2e 74 65 6d 70 6c  |"<OAB$Dir>.templ|
000007f0  22 2c 69 6e 64 62 6c 6f  63 6b 25 2c 69 6e 64 6c  |",indblock%,indl|
00000800  65 6e 25 2c 62 6c 6f 63  6b 25 2c 2d 31 29 0d 03  |en%,block%,-1)..|
00000810  84 1f 69 6e 66 6f 25 3d  a4 72 65 61 64 74 65 6d  |..info%=.readtem|
00000820  70 6c 61 74 65 28 22 49  6e 66 6f 22 29 0d 03 8e  |plate("Info")...|
00000830  1b c8 99 20 22 57 69 6d  70 5f 43 6c 6f 73 65 54  |... "Wimp_CloseT|
00000840  65 6d 70 6c 61 74 65 22  0d 03 98 04 0d 03 a2 15  |emplate"........|
00000850  f2 73 65 74 75 70 6d 65  6e 75 28 6d 65 6e 75 25  |.setupmenu(menu%|
00000860  29 0d 03 ac 11 f2 70 72  69 6e 74 63 75 72 72 65  |).....printcurre|
00000870  6e 74 0d 03 b6 04 0d 03  c0 05 e1 0d 03 ca 3e dc  |nt............>.|
00000880  20 22 4f 6e 65 41 52 4d  65 64 22 2c 33 2c 30 2c  | "OneARMed",3,0,|
00000890  69 6e 66 6f 25 2c 22 49  6e 66 6f 22 2c 30 2c 2d  |info%,"Info",0,-|
000008a0  31 2c 22 52 65 73 74 61  72 74 22 2c 26 38 30 2c  |1,"Restart",&80,|
000008b0  2d 31 2c 22 51 75 69 74  22 0d 03 d4 05 3a 0d 03  |-1,"Quit"....:..|
000008c0  de 1c dd f2 63 6c 69 63  6b 28 62 75 74 25 2c 77  |....click(but%,w|
000008d0  69 6e 25 2c 69 63 6f 6e  25 29 0d 03 e8 14 e7 20  |in%,icon%)..... |
000008e0  77 69 6e 25 3d 69 6e 66  6f 25 20 8c 20 e1 0d 03  |win%=info% . ...|
000008f0  f2 0d c8 8e 20 62 75 74  25 20 ca 0d 03 fc 3e c9  |.... but% ....>.|
00000900  20 32 20 3a f2 73 68 6f  77 6d 65 6e 75 28 21 62  | 2 :.showmenu(!b|
00000910  6c 6f 63 6b 25 2d 36 34  2c a4 69 63 6f 6e 62 61  |lock%-64,.iconba|
00000920  72 6d 65 6e 75 68 65 69  67 68 74 28 6d 65 6e 75  |rmenuheight(menu|
00000930  25 29 2c 6d 65 6e 75 25  29 0d 04 06 1e 7f 3a e7  |%),menu%).....:.|
00000940  20 66 69 6e 69 73 68 65  64 25 3e 33 20 8c 20 f2  | finished%>3 . .|
00000950  6e 65 77 72 6f 6c 6c 0d  04 10 05 cb 0d 04 1a 05  |newroll.........|
00000960  e1 0d 04 24 05 3a 0d 04  2e 0e dd f2 72 6f 6c 6c  |...$.:......roll|
00000970  74 68 65 6d 0d 04 38 0f  66 69 6e 69 73 68 65 64  |them..8.finished|
00000980  25 3d 30 0d 04 42 11 e3  20 6c 6f 6f 70 25 3d 30  |%=0..B.. loop%=0|
00000990  20 b8 20 32 0d 04 4c 1f  61 25 3d 72 6f 6c 6c 73  | . 2..L.a%=rolls|
000009a0  25 21 28 34 2a 28 28 6c  6f 6f 70 25 2a 32 29 2b  |%!(4*((loop%*2)+|
000009b0  31 29 29 0d 04 56 1d 62  25 3d 72 6f 6c 6c 73 25  |1))..V.b%=rolls%|
000009c0  21 28 34 2a 28 28 6c 6f  6f 70 25 2a 32 29 29 29  |!(4*((loop%*2)))|
000009d0  0d 04 60 42 e7 20 61 25  3e 30 20 8c 20 62 25 2b  |..`B. a%>0 . b%+|
000009e0  3d 31 3a 61 25 2d 3d 31  20 8b 20 62 25 3d 62 25  |=1:a%-=1 . b%=b%|
000009f0  20 80 20 28 ac 31 29 3a  66 69 6e 69 73 68 65 64  | . (.1):finished|
00000a00  25 2b 3d 31 3a f4 20 45  6e 73 75 72 65 20 65 76  |%+=1:. Ensure ev|
00000a10  65 6e 0d 04 6a 1f e7 20  62 25 3e 37 20 8c 20 62  |en..j.. b%>7 . b|
00000a20  25 3d 30 20 20 3a f4 20  52 6f 6c 6c 20 6f 76 65  |%=0  :. Roll ove|
00000a30  72 0d 04 74 1f 72 6f 6c  6c 73 25 21 28 34 2a 28  |r..t.rolls%!(4*(|
00000a40  28 6c 6f 6f 70 25 2a 32  29 2b 31 29 29 3d 61 25  |(loop%*2)+1))=a%|
00000a50  0d 04 7e 1d 72 6f 6c 6c  73 25 21 28 34 2a 28 28  |..~.rolls%!(4*((|
00000a60  6c 6f 6f 70 25 2a 32 29  29 29 3d 62 25 0d 04 88  |loop%*2)))=b%...|
00000a70  05 ed 0d 04 92 05 e1 0d  04 9c 05 3a 0d 04 a6 12  |...........:....|
00000a80  dd f2 70 72 69 6e 74 63  75 72 72 65 6e 74 0d 04  |..printcurrent..|
00000a90  b0 0d ea 20 6c 25 2c 6f  66 66 25 0d 04 ba 0b 6f  |... l%,off%....o|
00000aa0  66 66 25 3d 31 36 0d 04  c4 19 e7 20 73 70 65 78  |ff%=16..... spex|
00000ab0  74 24 3d 22 22 20 8c 20  6f 66 66 25 3d 33 32 0d  |t$="" . off%=32.|
00000ac0  04 ce 36 c8 99 20 26 32  45 2c 36 30 2b 32 35 36  |..6.. &2E,60+256|
00000ad0  2c 73 70 72 69 74 65 73  25 2c 22 62 69 67 73 70  |,sprites%,"bigsp|
00000ae0  72 69 74 65 22 2c 30 20  b8 20 52 30 2c 52 31 2c  |rite",0 . R0,R1,|
00000af0  52 32 2c 52 33 0d 04 d8  11 e3 20 6c 6f 6f 70 25  |R2,R3..... loop%|
00000b00  3d 30 20 b8 20 32 0d 04  e2 1d 62 25 3d 72 6f 6c  |=0 . 2....b%=rol|
00000b10  6c 73 25 21 28 34 2a 28  28 6c 6f 6f 70 25 2a 32  |ls%!(4*((loop%*2|
00000b20  29 29 29 0d 04 ec 12 73  70 72 25 3d 31 2b 28 62  |)))....spr%=1+(b|
00000b30  25 81 20 32 29 0d 04 f6  13 e7 20 28 62 25 20 80  |%. 2)..... (b% .|
00000b40  20 31 29 3c 3e 30 20 8c  0d 05 00 1e 20 20 20 20  | 1)<>0 .....    |
00000b50  73 70 72 31 25 3d 31 2b  28 28 73 70 72 25 2b 31  |spr1%=1+((spr%+1|
00000b60  29 20 83 20 34 29 0d 05  0a 1e 20 20 20 20 73 70  |) . 4)....    sp|
00000b70  72 32 25 3d 31 2b 28 28  73 70 72 25 2b 33 29 20  |r2%=1+((spr%+3) |
00000b80  83 20 34 29 0d 05 14 3a  20 20 20 20 c8 99 20 26  |. 4)...:    .. &|
00000b90  32 45 2c 33 34 2b 32 35  36 2c 73 70 72 69 74 65  |2E,34+256,sprite|
00000ba0  73 25 2c c3 28 73 70 72  31 25 29 2c 6c 6f 6f 70  |s%,.(spr1%),loop|
00000bb0  25 2a 31 36 2a 32 2c 2d  6f 66 66 25 2c 30 0d 05  |%*16*2,-off%,0..|
00000bc0  1e 39 20 20 20 20 c8 99  20 26 32 45 2c 33 34 2b  |.9    .. &2E,34+|
00000bd0  32 35 36 2c 73 70 72 69  74 65 73 25 2c c3 28 73  |256,sprites%,.(s|
00000be0  70 72 32 25 29 2c 6c 6f  6f 70 25 2a 31 36 2a 32  |pr2%),loop%*16*2|
00000bf0  2c 6f 66 66 25 2c 30 0d  05 28 09 20 20 20 20 cc  |,off%,0..(.    .|
00000c00  0d 05 32 13 20 20 20 20  73 70 24 3d c3 28 73 70  |..2.    sp$=.(sp|
00000c10  72 25 29 0d 05 3c 31 20  20 20 20 c8 99 20 26 32  |r%)..<1    .. &2|
00000c20  45 2c 33 34 2b 32 35 36  2c 73 70 72 69 74 65 73  |E,34+256,sprites|
00000c30  25 2c 73 70 24 2c 6c 6f  6f 70 25 2a 31 36 2a 32  |%,sp$,loop%*16*2|
00000c40  2c 30 2c 30 0d 05 46 09  20 20 20 20 cd 0d 05 50  |,0,0..F.    ...P|
00000c50  05 ed 0d 05 5b 07 e6 20  31 0d 05 5c 15 c8 93 20  |....[.. 1..\... |
00000c60  c8 90 20 30 2c 38 30 2c  31 30 30 2c 36 34 0d 05  |.. 0,80,100,64..|
00000c70  5d 07 e6 20 37 0d 05 64  15 6c 25 3d a9 28 c3 28  |].. 7..d.l%=.(.(|
00000c80  63 72 65 64 69 74 73 25  29 29 0d 05 78 07 ef 20  |credits%))..x.. |
00000c90  35 0d 05 79 1b f1 8a 30  2c 30 29 3b 89 28 36 2d  |5..y...0,0);.(6-|
00000ca0  6c 25 29 3b 63 72 65 64  69 74 73 25 0d 05 8c 07  |l%);credits%....|
00000cb0  ef 20 34 0d 05 8d 16 c8  99 20 26 32 45 2c 52 30  |. 4...... &2E,R0|
00000cc0  2c 52 31 2c 52 32 2c 52  33 0d 05 96 04 0d 05 a0  |,R1,R2,R3.......|
00000cd0  0f 62 6c 6f 63 6b 25 21  30 3d 2d 31 0d 05 aa 15  |.block%!0=-1....|
00000ce0  62 6c 6f 63 6b 25 21 34  3d 69 63 6f 6e 62 61 72  |block%!4=iconbar|
00000cf0  25 0d 05 b4 0e 62 6c 6f  63 6b 25 21 38 3d 30 0d  |%....block%!8=0.|
00000d00  05 be 0f 62 6c 6f 63 6b  25 21 31 32 3d 30 0d 05  |...block%!12=0..|
00000d10  c8 22 c8 99 20 22 57 69  6d 70 5f 53 65 74 49 63  |.".. "Wimp_SetIc|
00000d20  6f 6e 53 74 61 74 65 22  2c 2c 62 6c 6f 63 6b 25  |onState",,block%|
00000d30  0d 05 d2 05 e1 0d 05 dc  05 3a 0d 05 e6 0d dd f2  |.........:......|
00000d40  6e 65 77 72 6f 6c 6c 0d  05 f0 10 63 72 65 64 69  |newroll....credi|
00000d50  74 73 25 2d 3d 31 30 0d  05 fa 0f 66 69 6e 69 73  |ts%-=10....finis|
00000d60  68 65 64 25 3d 30 0d 06  04 0e 72 25 3d b3 28 31  |hed%=0....r%=.(1|
00000d70  30 29 2b 36 0d 06 0e 11  e3 20 6c 6f 6f 70 25 3d  |0)+6..... loop%=|
00000d80  30 20 b8 20 32 0d 06 18  29 72 6f 6c 6c 73 25 21  |0 . 2...)rolls%!|
00000d90  28 34 2a 28 28 6c 6f 6f  70 25 2a 32 29 2b 31 29  |(4*((loop%*2)+1)|
00000da0  29 3d 72 25 2a 28 6c 6f  6f 70 25 2b 31 29 0d 06  |)=r%*(loop%+1)..|
00000db0  22 05 ed 0d 06 2c 05 e1  0d 06 36 05 3a 0d 06 40  |"....,....6.:..@|
00000dc0  46 dd a4 63 72 65 61 74  65 5f 69 63 6f 6e 28 77  |F..create_icon(w|
00000dd0  68 61 6e 25 2c 69 78 25  2c 69 79 25 2c 69 77 25  |han%,ix%,iy%,iw%|
00000de0  2c 69 68 25 2c 66 6c 61  67 25 2c 74 65 78 74 24  |,ih%,flag%,text$|
00000df0  2c 70 72 74 31 25 2c 70  72 74 32 25 2c 70 74 72  |,prt1%,prt2%,ptr|
00000e00  33 25 29 0d 06 4a 11 21  62 6c 6f 63 6b 25 3d 77  |3%)..J.!block%=w|
00000e10  68 61 6e 25 0d 06 54 10  62 6c 6f 63 6b 25 21 34  |han%..T.block%!4|
00000e20  3d 69 78 25 0d 06 5e 10  62 6c 6f 63 6b 25 21 38  |=ix%..^.block%!8|
00000e30  3d 69 79 25 0d 06 68 15  62 6c 6f 63 6b 25 21 31  |=iy%..h.block%!1|
00000e40  32 3d 69 78 25 2b 69 77  25 0d 06 72 15 62 6c 6f  |2=ix%+iw%..r.blo|
00000e50  63 6b 25 21 31 36 3d 69  79 25 2b 69 68 25 0d 06  |ck%!16=iy%+ih%..|
00000e60  7c 13 62 6c 6f 63 6b 25  21 32 30 3d 66 6c 61 67  ||.block%!20=flag|
00000e70  25 0d 06 86 23 e7 20 70  72 74 31 25 3d 30 20 80  |%...#. prt1%=0 .|
00000e80  20 70 72 74 32 25 3d 30  20 80 20 70 74 72 33 25  | prt2%=0 . ptr3%|
00000e90  3d 30 20 8c 0d 06 90 16  24 28 62 6c 6f 63 6b 25  |=0 .....$(block%|
00000ea0  2b 32 34 29 3d 74 65 78  74 24 0d 06 9a 05 cc 0d  |+24)=text$......|
00000eb0  06 a4 13 62 6c 6f 63 6b  25 21 32 34 3d 70 72 74  |...block%!24=prt|
00000ec0  31 25 0d 06 ae 13 62 6c  6f 63 6b 25 21 32 38 3d  |1%....block%!28=|
00000ed0  70 72 74 32 25 0d 06 b8  13 62 6c 6f 63 6b 25 21  |prt2%....block%!|
00000ee0  33 32 3d 70 74 72 33 25  0d 06 c2 05 cd 0d 06 cc  |32=ptr3%........|
00000ef0  2b c8 99 20 22 57 69 6d  70 5f 43 72 65 61 74 65  |+.. "Wimp_Create|
00000f00  49 63 6f 6e 22 2c 2c 62  6c 6f 63 6b 25 20 b8 20  |Icon",,block% . |
00000f10  69 68 61 6e 64 6c 65 25  0d 06 d6 0d 3d 69 68 61  |ihandle%....=iha|
00000f20  6e 64 6c 65 25 0d 06 e0  05 3a 0d 06 ea 2d f4 20  |ndle%....:...-. |
00000f30  46 4e 69 6e 69 74 74 61  73 6b 20 20 20 20 20 20  |FNinittask      |
00000f40  2d 20 49 6e 69 74 69 61  6c 69 73 65 73 20 74 68  |- Initialises th|
00000f50  65 20 74 61 73 6b 2e 0d  06 f4 1e dd a4 69 6e 69  |e task.......ini|
00000f60  74 74 61 73 6b 28 49 61  70 70 24 2c 49 52 49 53  |ttask(Iapp$,IRIS|
00000f70  43 4f 53 25 29 0d 06 fe  48 c8 99 20 22 57 69 6d  |COS%)...H.. "Wim|
00000f80  70 5f 49 6e 69 74 69 61  6c 69 73 65 22 2c 49 52  |p_Initialise",IR|
00000f90  49 53 43 4f 53 25 2a 31  30 30 2c 26 34 42 35 33  |ISCOS%*100,&4B53|
00000fa0  34 31 35 34 2c 49 61 70  70 24 20 b8 20 52 49 53  |4154,Iapp$ . RIS|
00000fb0  43 4f 53 25 2c 54 68 61  6e 64 6c 65 25 0d 07 08  |COS%,Thandle%...|
00000fc0  17 52 49 53 43 4f 53 25  3d 52 49 53 43 4f 53 25  |.RISCOS%=RISCOS%|
00000fd0  2f 31 30 30 0d 07 12 0e  61 70 70 24 3d 49 61 70  |/100....app$=Iap|
00000fe0  70 24 0d 07 1c 25 ee 20  85 20 3a 20 f2 65 72 72  |p$...%. . : .err|
00000ff0  6f 72 28 f6 24 2b 22 20  61 74 20 6c 69 6e 65 20  |or(.$+" at line |
00001000  22 2b c3 9e 29 3a e0 0d  07 26 0d 3d 54 68 61 6e  |"+..):...&.=Than|
00001010  64 6c 65 25 0d 07 30 05  3a 0d 07 3a 4e dd f2 6f  |dle%..0.:..:N..o|
00001020  70 65 6e 74 65 6d 70 6c  61 74 65 73 28 66 69 6c  |pentemplates(fil|
00001030  65 6e 61 6d 65 24 2c 49  6d 61 69 6e 74 65 6d 70  |ename$,Imaintemp|
00001040  69 6e 64 25 2c 49 74 65  6d 70 6c 69 6d 69 74 25  |ind%,Itemplimit%|
00001050  2c 49 77 69 6e 64 6f 77  73 74 6f 72 65 25 2c 49  |,Iwindowstore%,I|
00001060  66 6f 6e 74 73 25 29 0d  07 44 0b ea 20 6c 6f 6f  |fonts%)..D.. loo|
00001070  70 25 0d 07 4e 66 6d 61  69 6e 74 65 6d 70 69 6e  |p%..Nfmaintempin|
00001080  64 25 3d 49 6d 61 69 6e  74 65 6d 70 69 6e 64 25  |d%=Imaintempind%|
00001090  3a 74 65 6d 70 6c 69 6d  69 74 25 3d 49 74 65 6d  |:templimit%=Item|
000010a0  70 6c 69 6d 69 74 25 3a  77 69 6e 64 6f 77 73 74  |plimit%:windowst|
000010b0  6f 72 65 25 3d 49 77 69  6e 64 6f 77 73 74 6f 72  |ore%=Iwindowstor|
000010c0  65 25 3a 66 6f 6e 74 73  70 6f 69 6e 74 65 72 25  |e%:fontspointer%|
000010d0  3d 49 66 6f 6e 74 73 25  0d 07 58 25 c8 99 20 22  |=Ifonts%..X%.. "|
000010e0  57 69 6d 70 5f 4f 70 65  6e 54 65 6d 70 6c 61 74  |Wimp_OpenTemplat|
000010f0  65 22 2c 2c 66 69 6c 65  6e 61 6d 65 24 0d 07 62  |e",,filename$..b|
00001100  21 70 6f 69 6e 74 65 72  25 3d 6d 61 69 6e 74 65  |!pointer%=mainte|
00001110  6d 70 69 6e 64 25 3a 6e  65 78 74 25 3d 30 0d 07  |mpind%:next%=0..|
00001120  6c 49 e7 20 66 6f 6e 74  73 70 6f 69 6e 74 65 72  |lI. fontspointer|
00001130  25 3c 3e 2d 31 20 8c 20  e3 20 6c 6f 6f 70 25 3d  |%<>-1 . . loop%=|
00001140  30 20 b8 20 26 31 30 30  20 53 54 50 45 20 34 3a  |0 . &100 STPE 4:|
00001150  66 6f 6e 74 73 70 6f 69  6e 74 65 72 25 21 6c 6f  |fontspointer%!lo|
00001160  6f 70 25 3d 30 3a ed 0d  07 76 05 e1 0d 07 80 04  |op%=0:...v......|
00001170  0d 07 8a 55 f4 20 20 20  46 4e 72 65 61 64 74 65  |...U.   FNreadte|
00001180  6d 70 6c 61 74 65 28 77  69 6e 6e 61 6d 65 24 29  |mplate(winname$)|
00001190  20 20 20 2d 20 52 65 61  64 73 20 61 20 77 69 6e  |   - Reads a win|
000011a0  64 6f 77 20 64 65 66 69  6e 69 74 69 6f 6e 20 6f  |dow definition o|
000011b0  66 66 20 74 68 65 20 74  65 6d 70 6c 61 74 65 20  |ff the template |
000011c0  66 69 6c 65 2e 0d 07 94  1c dd a4 72 65 61 64 74  |file.......readt|
000011d0  65 6d 70 6c 61 74 65 28  77 69 6e 6e 61 6d 65 24  |emplate(winname$|
000011e0  29 0d 07 9e 0b ea 20 6e  61 6d 65 25 0d 07 a8 0e  |)..... name%....|
000011f0  de 20 6e 61 6d 65 25 20  31 31 0d 07 b2 13 24 6e  |. name% 11....$n|
00001200  61 6d 65 25 3d 77 69 6e  6e 61 6d 65 24 0d 07 bc  |ame%=winname$...|
00001210  79 c8 99 20 22 57 69 6d  70 5f 4c 6f 61 64 54 65  |y.. "Wimp_LoadTe|
00001220  6d 70 6c 61 74 65 22 2c  2c 77 69 6e 64 6f 77 73  |mplate",,windows|
00001230  74 6f 72 65 25 2c 70 6f  69 6e 74 65 72 25 2c 6d  |tore%,pointer%,m|
00001240  61 69 6e 74 65 6d 70 69  6e 64 25 2b 74 65 6d 70  |aintempind%+temp|
00001250  6c 69 6d 69 74 25 2c 66  6f 6e 74 73 70 6f 69 6e  |limit%,fontspoin|
00001260  74 65 72 25 2c 6e 61 6d  65 25 2c 6e 65 78 74 25  |ter%,name%,next%|
00001270  20 b8 20 2c 2c 70 6f 69  6e 74 65 72 25 2c 2c 2c  | . ,,pointer%,,,|
00001280  2c 6e 65 78 74 25 0d 07  c6 5a e7 20 6e 65 78 74  |,next%...Z. next|
00001290  25 3d 30 20 8c 20 f2 65  72 72 6f 72 28 22 57 69  |%=0 . .error("Wi|
000012a0  6e 64 6f 77 20 64 65 66  69 6e 69 74 69 6f 6e 20  |ndow definition |
000012b0  6e 6f 74 20 66 6f 75 6e  64 20 69 6e 20 54 65 6d  |not found in Tem|
000012c0  70 6c 61 74 65 20 28 49  64 65 6e 74 69 66 69 65  |plate (Identifie|
000012d0  72 3d 22 2b 24 6e 61 6d  65 25 2b 22 29 2e 22 29  |r="+$name%+").")|
000012e0  0d 07 d0 38 c8 99 20 22  57 69 6d 70 5f 43 72 65  |...8.. "Wimp_Cre|
000012f0  61 74 65 57 69 6e 64 6f  77 22 2c 2c 77 69 6e 64  |ateWindow",,wind|
00001300  6f 77 73 74 6f 72 65 25  20 b8 20 77 69 6e 64 6f  |owstore% . windo|
00001310  77 68 61 6e 64 6c 65 25  0d 07 da 12 3d 77 69 6e  |whandle%....=win|
00001320  64 6f 77 68 61 6e 64 6c  65 25 0d 07 e4 04 0d 07  |dowhandle%......|
00001330  ee 2f f4 20 50 52 4f 43  6f 70 65 6e 77 69 6e 64  |./. PROCopenwind|
00001340  6f 77 20 20 20 2d 20 4f  70 65 6e 73 20 77 69 6e  |ow   - Opens win|
00001350  64 6f 77 20 61 74 20 66  72 6f 6e 74 2e 0d 07 f8  |dow at front....|
00001360  2c dd f2 6f 70 65 6e 77  69 6e 64 6f 77 28 77 69  |,..openwindow(wi|
00001370  6e 64 6f 77 68 61 6e 64  6c 65 25 2c 77 69 6e 64  |ndowhandle%,wind|
00001380  6f 77 73 74 6f 72 65 25  29 0d 08 02 1f 21 77 69  |owstore%)....!wi|
00001390  6e 64 6f 77 73 74 6f 72  65 25 3d 77 69 6e 64 6f  |ndowstore%=windo|
000013a0  77 68 61 6e 64 6c 65 25  0d 08 0c 2a c8 99 20 22  |whandle%...*.. "|
000013b0  57 69 6d 70 5f 47 65 74  57 69 6e 64 6f 77 53 74  |Wimp_GetWindowSt|
000013c0  61 74 65 22 2c 2c 77 69  6e 64 6f 77 73 74 6f 72  |ate",,windowstor|
000013d0  65 25 0d 08 16 19 21 28  77 69 6e 64 6f 77 73 74  |e%....!(windowst|
000013e0  6f 72 65 25 2b 32 38 29  3d 2d 31 0d 08 20 26 c8  |ore%+28)=-1.. &.|
000013f0  99 20 22 57 69 6d 70 5f  4f 70 65 6e 57 69 6e 64  |. "Wimp_OpenWind|
00001400  6f 77 22 2c 2c 77 69 6e  64 6f 77 73 74 6f 72 65  |ow",,windowstore|
00001410  25 0d 08 2a 05 e1 0d 08  34 05 3a 0d 08 3e 41 f4  |%..*....4.:..>A.|
00001420  20 46 4e 69 63 6f 6e 62  61 72 6d 65 6e 75 68 65  | FNiconbarmenuhe|
00001430  69 67 68 74 28 6d 65 6e  75 25 29 20 20 2d 20 46  |ight(menu%)  - F|
00001440  69 6e 64 73 20 68 65 69  67 68 74 20 6f 66 20 69  |inds height of i|
00001450  63 6f 6e 62 61 72 20 6d  65 6e 75 73 0d 08 48 1e  |conbar menus..H.|
00001460  dd a4 69 63 6f 6e 62 61  72 6d 65 6e 75 68 65 69  |..iconbarmenuhei|
00001470  67 68 74 28 6d 65 6e 75  25 29 0d 08 52 0b ea 20  |ght(menu%)..R.. |
00001480  68 69 67 68 25 0d 08 5c  0c 68 69 67 68 25 3d 39  |high%..\.high%=9|
00001490  36 0d 08 66 17 6c 6f 6f  70 25 3d 2d 31 3a f5 3a  |6..f.loop%=-1:.:|
000014a0  6c 6f 6f 70 25 2b 3d 31  0d 08 70 34 e7 20 28 21  |loop%+=1..p4. (!|
000014b0  28 6d 65 6e 75 25 2b 28  6c 6f 6f 70 25 2a 32 34  |(menu%+(loop%*24|
000014c0  29 2b 32 38 29 20 80 20  25 31 30 29 3d 25 31 30  |)+28) . %10)=%10|
000014d0  20 8c 20 68 69 67 68 25  2b 3d 32 34 0d 08 7a 0d  | . high%+=24..z.|
000014e0  68 69 67 68 25 2b 3d 34  34 0d 08 84 34 fd 20 28  |high%+=44...4. (|
000014f0  21 28 6d 65 6e 75 25 2b  28 6c 6f 6f 70 25 2a 32  |!(menu%+(loop%*2|
00001500  34 29 2b 32 38 29 20 80  20 25 31 30 30 30 30 30  |4)+28) . %100000|
00001510  30 30 29 3d 25 31 30 30  30 30 30 30 30 0d 08 8e  |00)=%10000000...|
00001520  0a 3d 68 69 67 68 25 0d  08 98 05 3a 0d 08 a2 18  |.=high%....:....|
00001530  dd a4 72 65 70 6f 72 74  28 65 72 72 24 2c 66 6c  |..report(err$,fl|
00001540  61 67 25 29 0d 08 ac 0f  21 62 6c 6f 63 6b 25 3d  |ag%)....!block%=|
00001550  32 35 35 0d 08 b6 0e 6e  61 6d 65 24 3d 61 70 70  |255....name$=app|
00001560  24 0d 08 c0 2e e7 20 66  6c 61 67 25 20 80 20 31  |$..... flag% . 1|
00001570  36 20 8c 20 6e 61 6d 65  24 3d 22 4d 65 73 73 61  |6 . name$="Messa|
00001580  67 65 20 66 72 6f 6d 20  22 2b 6e 61 6d 65 24 0d  |ge from "+name$.|
00001590  08 ca 17 24 28 62 6c 6f  63 6b 25 2b 34 29 3d 65  |...$(block%+4)=e|
000015a0  72 72 24 2b bd 30 0d 08  d4 39 c8 99 20 22 57 69  |rr$+.0...9.. "Wi|
000015b0  6d 70 5f 52 65 70 6f 72  74 45 72 72 6f 72 22 2c  |mp_ReportError",|
000015c0  62 6c 6f 63 6b 25 2c 66  6c 61 67 25 2c 6e 61 6d  |block%,flag%,nam|
000015d0  65 24 20 b8 20 2c 65 72  72 63 6c 69 63 6b 25 0d  |e$ . ,errclick%.|
000015e0  08 de 0e 3d 65 72 72 63  6c 69 63 6b 25 0d 08 e8  |...=errclick%...|
000015f0  04 0d 08 f2 36 f4 20 50  52 4f 43 65 72 72 6f 72  |....6. PROCerror|
00001600  20 20 20 2d 20 54 6f 20  62 65 20 63 61 6c 6c 65  |   - To be calle|
00001610  64 20 77 68 65 6e 20 61  6e 20 65 72 72 6f 72 20  |d when an error |
00001620  6f 63 63 75 72 65 73 0d  08 fc 0f dd f2 65 72 72  |occures......err|
00001630  6f 72 28 61 24 29 0d 09  06 18 65 6e 64 25 3d a4  |or(a$)....end%=.|
00001640  72 65 70 6f 72 74 28 61  24 2c 25 31 30 29 0d 09  |report(a$,%10)..|
00001650  10 17 c8 99 20 22 57 69  6d 70 5f 43 6c 6f 73 65  |.... "Wimp_Close|
00001660  44 6f 77 6e 22 0d 09 1a  05 e1 0d 09 24 05 3a 0d  |Down".......$.:.|
00001670  09 2e 16 dd f2 73 65 74  75 70 6d 65 6e 75 28 6d  |.....setupmenu(m|
00001680  65 6e 75 25 29 0d 09 38  23 ea 20 74 69 74 6c 65  |enu%)..8#. title|
00001690  24 2c 6e 75 6d 25 2c 77  69 64 74 68 25 2c 70 74  |$,num%,width%,pt|
000016a0  72 25 2c 69 74 65 6d 24  0d 09 42 1f f3 20 74 69  |r%,item$..B.. ti|
000016b0  74 6c 65 24 2c 6e 75 6d  25 3a 24 6d 65 6e 75 25  |tle$,num%:$menu%|
000016c0  3d 74 69 74 6c 65 24 0d  09 4c 1b 77 69 64 74 68  |=title$..L.width|
000016d0  25 3d 28 a9 28 74 69 74  6c 65 24 29 2d 31 29 2a  |%=(.(title$)-1)*|
000016e0  31 36 0d 09 56 2d 6d 65  6e 75 25 21 31 32 3d 26  |16..V-menu%!12=&|
000016f0  30 30 30 37 30 32 30 37  3a 6d 65 6e 75 25 21 32  |00070207:menu%!2|
00001700  30 3d 34 34 3a 6d 65 6e  75 25 21 32 34 3d 30 0d  |0=44:menu%!24=0.|
00001710  09 60 1f 70 74 72 25 3d  6d 65 6e 75 25 2b 32 38  |.`.ptr%=menu%+28|
00001720  3a e3 20 69 25 3d 31 20  b8 20 6e 75 6d 25 0d 09  |:. i%=1 . num%..|
00001730  6a 1b f3 20 6d 66 6c 61  67 73 25 2c 73 75 62 70  |j.. mflags%,subp|
00001740  74 72 25 2c 69 74 65 6d  24 0d 09 74 20 21 70 74  |tr%,item$..t !pt|
00001750  72 25 3d 6d 66 6c 61 67  73 25 3a 70 74 72 25 21  |r%=mflags%:ptr%!|
00001760  34 3d 73 75 62 70 74 72  25 0d 09 7e 24 70 74 72  |4=subptr%..~$ptr|
00001770  25 21 38 3d 26 37 30 30  30 30 32 31 3a 24 28 70  |%!8=&7000021:$(p|
00001780  74 72 25 2b 31 32 29 3d  69 74 65 6d 24 0d 09 88  |tr%+12)=item$...|
00001790  16 61 25 3d 28 a9 28 69  74 65 6d 24 29 2b 31 29  |.a%=(.(item$)+1)|
000017a0  2a 31 36 0d 09 92 19 e7  20 61 25 3e 77 69 64 74  |*16..... a%>widt|
000017b0  68 25 20 77 69 64 74 68  25 3d 61 25 0d 09 9c 0e  |h% width%=a%....|
000017c0  70 74 72 25 2b 3d 32 34  3a ed 0d 09 a6 13 6d 65  |ptr%+=24:.....me|
000017d0  6e 75 25 21 31 36 3d 77  69 64 74 68 25 0d 09 b0  |nu%!16=width%...|
000017e0  05 e1 0d 09 ba 05 3a 0d  09 c4 1d dd f2 73 68 6f  |......:......sho|
000017f0  77 6d 65 6e 75 28 6d 78  25 2c 6d 79 25 2c 6d 65  |wmenu(mx%,my%,me|
00001800  6e 75 25 29 0d 09 ce 27  c8 99 20 22 57 69 6d 70  |nu%)...'.. "Wimp|
00001810  5f 43 72 65 61 74 65 4d  65 6e 75 22 2c 2c 6d 65  |_CreateMenu",,me|
00001820  6e 75 25 2c 6d 78 25 2c  6d 79 25 0d 09 d8 05 e1  |nu%,mx%,my%.....|
00001830  0d 09 e2 04 0d 09 ec 04  0d 09 f6 04 0d 0a 00 04  |................|
00001840  0d 0a 0a 04 0d 0a 14 04  0d 0a 1e 04 0d ff        |..............|
0000184e