home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
ARM Club 3
/
TheARMClub_PDCD3.iso
/
hensa
/
desktop
/
outlnwimp_1
/
!DeskCtrl
/
!Runimage
(
.txt
)
< prev
next >
Wrap
RISC OS BBC BASIC V Source
|
1995-12-06
|
32KB
|
1,593 lines
!DeskCtrl version 2
By Andrew Sellors
This program is Shareware, see the !Help file for details
Unregistered version
V_(KJ%,25,0):
N("XOutlineWimp_Configuration")=
Ay(0,3)
Fy(0,3)
N("XOutlineWimp_TextureInfo")=
Ay(0,4)
Fy(0,4)
iy(&400):t%=
O("<DeskCtrl$Dir>.Messages",1):
M(t%,"app.name"),&800,&C8,0):
$+" at line "+
oy(8):
ry(5):
Py(t%):
I%=0
a_%?I%
&40082,I%
&400DD,c_%,&4B534154:
O(R$,bJ%,Vu%):
s%,z%,a%,_$:
a_(s%):
F(1,a$+" "+
B$=R$:
R:z%=_%:
&600E5,,z%,&45555254
&600E5,,z%,0
&2000D,&83,B$,0
s%;V%:
a%=0
&B,19,s%:
&B,a%,s%:
&B,16,s%:
&B,?(z%+(4*a%)+1),s%:
&B,?(z%+(4*a%)+2),s%:
&B,?(z%+(4*a%)+3),s%:
&B,19,s%:
&B,0,s%:
&B,24,s%:
&B,?(z%+(4*16)+1),s%:
&B,?(z%+(4*16)+2),s%:
&B,?(z%+(4*16)+3),s%:
a%=1
&B,19,s%:
&B,a%,s%
&B,25,s%:
&B,?(z%+(4*(16+a%))+1),s%:
&B,?(z%+(4*(16+a%))+2),s%:
&B,?(z%+(4*(16+a%))+3),s%:
&2000D,0,s%:
&20008,18,B$,&FED
S(s%+4):
F(1,s$+" "+_$)
a_(s%):
s%<>0
&2000D,0,s%
D(bJ%,Fu%):
L_%:
&FED:L_%=
&FF9:
Fu%=
L_%=
:L_%=
:=L_%
k(R$,bJ%,Vu%):
f%,n_%,Hy%:
yy%,W_%,F_%,P_%,E_%,M_%,jy%:
&FED:f%=
&20005,"WimpPalette "+R$:
((y%=
((f%=8)
(f%=1)
(f%=2)))
e%<>0
W(_y%)
&FF9:n_%=_%:
j%<>0
&600CF,,n_%:Hy%=n_%!&C:
Hy%=
F(j%)
5,"WimpLoadTexture "+R$:
yy%,W_%,F_%,P_%,E_%,M_%,jy%:
x(yy%):
s(W_%):
Y(F_%,P_%,E_%,M_%,jy%)
K_(I%):
Hy%:Hy%=!I%:
J(Hy%,h%)=
J(Hy%,w%)=
J(Hy%,d%)=
J(Hy%,e%)=
J(Hy%,b%)=
J(Hy%,i%)=
J(Hy%,j%)=
&400C6,,I%:
J(wJ%,Xy%):
Xy%<>0
wJ%=
F(Xy%)
H_(lJ%,Vy%):
Fy%:
_y(Vy%)
Py%:
Y_(Vy%)
Cy%:
Ry(Vy%)
C_(B%):A=
P_(B%)
T_(B%)
by(B%)
Hy(B%)
P_(B%):
B%!4=-1
&600E3,
($V_%)
T_(B%):
s_%,Ly%:s_%=!B%:
Q(s_%):
by(B%):
s_%,Ly%:s_%=!B%:
N(s_%):
Hy(B%):
W$:W$=
_(B%):
E(w%,2,W$):
&600CF,,_%:
_%!8
Ty(W$):
&400D4,,
X,py%,ly%
B_(B%):
jy(B%):
fy(B%):
W%,H%,I%,K%,A$,N_%:H%=!B%:I%=B%!4:K%=B%!24:W%=
H(H%):
__(I%,K%)
uy(I%,K%)
Vy(I%,K%)
uy(x%,ry%):
Vy%,f%:
ry%=&D
3:Vy%=
A(e%,3)):y%=
M(Fy%,Vy%):y%=
((y%=
((f%=8)
(f%=1)
(f%=2)))
8:Vy%=
A(e%,8)):y%=
M(Py%,Vy%):y%=
((y%=
((f%=8)
(f%=1)
(f%=2)))
&D:Vy%=
A(e%,&D)):y%=
M(Cy%,Vy%):y%=
((y%=
((f%=8)
(f%=1)
(f%=2)))
&600DC,ry%:
__(x%,ry%):
(x%=19)
(ry%=&D)
&600DC,ry%
Vy(x%,ry%):
(x%=1)
(ry%=&D)
A(b%,1),".")>0
A(b%,1),&FED,
F(1,Y$)
&600DC,ry%
r_(B%):
W%,H%,I%,T%,A$,N_%,l%,`_%:T%=B%!8:H%=B%!&C:I%=B%!16:W%=
H(H%):l%=(T%=1):`_%=(T%=64):A=
w_(I%,l%)
By(I%,l%)
yy(I%,l%)
wy(I%,l%)
O_(I%,l%,`_%)
Gy(I%,l%)
fy%:
U_(I%,l%)
A_(I%,l%)
w_(x%,l%):
m(h%,4,2)
m(h%,5,3)
By(x%,l%):
m%,c%:
A(w%,2)):
Xy(w%,3,
6:m%=
A(w%,5)):
m%>0
,c%=@%:@%=&10202FF:
E(w%,5,
(m%-1)):@%=c%
7:m%=
A(w%,5)):
m%<99
,c%=@%:@%=&10202FF:
E(w%,5,
(m%+1)):@%=c%
&B:m%=
A(w%,&A)):
m%>0
-c%=@%:@%=&10201FF:
E(w%,&A,
(m%-1)):@%=c%
&C:m%=
A(w%,&A)):
m%<999
-c%=@%:@%=&10201FF:
E(w%,&A,
(m%+1)):@%=c%
H(w%,26)
H(w%,17)
20:m%=
A(w%,19)):
m%>0
0c%=@%:@%=&10005FF:
E(w%,19,
(m%-1)):@%=c%:
21:m%=
A(w%,19)):
m%<&FF
0c%=@%:@%=&10005FF:
E(w%,19,
(m%+1)):@%=c%:
yy(x%,l%):
fJ%,RJ%,_J%:
(x%>=4)
(x%<=&D)
Z(d%,x%)=
A(d%,x%)
,l%):
22:fJ%=Ey%:RJ%=`%:_J%=k%:Ey%=2:`%=1:S=
Jy:Ey%=fJ%:`%=RJ%:k%=_J%
wy(x%,l%):
xJ%:
(x%>=21)
(x%<=40)
W(x%-21):
17:xJ%=
Z(e%,17):
My(xJ%):
W(_y%)
G_(lJ%):y%=
ey(lJ%):y%=
O_(x%,l%,`_%):
`_%=
A(b%,1),&FED,&400,b%,0)
A(b%,1),".")>0
A(b%,1),&FED,
F(1,Y$)
Gy(x%,l%):
U_(x%,l%):
E(fy%,9,
P)+" BASIC "+
T)+" MALLOC")
A_(x%,l%):
Z(j%,2)=
&20005,"WimpTexture 1"
&20005,"WimpTexture 0"
&20005,"WimpKillTexture":
x(0):
Y(0,0,0,0,0):
xy(B%):
Ly%:
F(1,L$)
(-26)
u%>0
u%-=1:
Q(u%):
&600E3,E%(u%,n%):
(-&7A)
u%<Ty%-1
u%+=1:
Q(u%):
&600E3,E%(u%,n%):
(-42)
n%>0
n%-=1:
N(n%):
&600E3,E%(u%,n%):
(-58)
n%<xy%-1
n%+=1:
N(n%):
&600E3,E%(u%,n%):
D_(B%):
B%!16
L_(B%)
&400C1:
Wy(B%)
&400C2:
vy(B%)
dy(B%)
L_(B%):
B%!20=0
Wy(B%):
I(i_%):$(o_%+36)="deskctrl"
I(EJ%):$(o_%+36)="deskctrl22"
vy(B%):
aJ%,U$:
y_%=
1aJ%=B%!4:U$=
S(B%+28):
U$="Palette Utility"
-!_%=20:_%!&C=0:_%!16=0:
&400E7,17,_%,aJ%
dy(B%):
s%,z%,A$,H_%,c%,a%,By%,Gy%,Ny%:
Tu%:s%=B%!20:H_%=
:z%=_%:
&600E5,,z%,&45555254
&600E5,,z%,0
:c%=@%:@%=&1000FFF:A$="WimpMode "+
(H_%)+
(&A):
&2000C,2,s%,A$,
(A$):@%=c%:A$="Desktop_SetPalette":
&2000C,2,s%,A$,
(A$):
a%=0
19:By%=?(z%+(4*a%)+1):Gy%=?(z%+(4*a%)+2):Ny%=?(z%+(4*a%)+3):c%=@%:@%=&10005FF:
Ny%<=&F
A$=" 0"
A$=" "
!#A$+=
~(Ny%):
Gy%<=&F
A$+="0"
"#A$+=
~(Gy%):
By%<=&F
A$+="0"
#eA$+=
~(By%):@%=c%:
&2000C,2,s%,A$,
(A$):
&2000B,&A,s%:
&2000C,2,s%,K$,
(K$):
&2000B,&A,s%:
Qy:vJ%=(1<<4)+(1<<5):Pu%=(1<<0)+(1<<4)+(1<<5):KJ%=vJ%:h%=0:w%=0:d%=0:e%=0:b%=0:i%=0:j%=0:Ey%=1:`%=1:k%=
:Au%=&20000+&496C0:mJ%=&20000+&496C1:rJ%=&20000+&496C2:p_%=&20000+&496CC:y_%=
E%(&A,35):xy%=0:Ty%=0:n%=0:u%=0:pJ%=
:K_%=
:G_%=0:_y%=0:y%=
B$="!Palette":A=
g_%:g_%=_%:
&20027,"/<DeskCtrl$Dir>",g_%,256:K$=
S(g_%):
Z_:I$=
M(t%,"msg.notinst"):e$=
M(t%,"msg.noresA"):x$=
M(t%,"msg.noresB"):L$=
M(t%,"msg.nomode"):Y$=
M(t%,"msg.noleaf"):s$=
M(t%,"msg.nosave"):a$=
M(t%,"msg.nowrite"):d$=
M(t%,"msg.noreg"):q$=
M(t%,"txt.none"):
eJ%,FJ%:EJ%=
V("<DeskCtrl$Dir>.Sprites22"):i_%=
V("<DeskCtrl$Dir>.Sprites"):FJ%=
V("<DeskCtrl$Dir>.BarIcon"):
I(i_%):
u("deskctrl",FJ%,-7,&60000000)
I(EJ%):
u("deskctrl22",FJ%,-7,&60000000)
6,&A1,&8C,0
,,eJ%:
`("<DeskCtrl$Dir>.Template3D",5000)
`("<DeskCtrl$Dir>.Templates",&C00)
:fy%=
C("ProgInfo"):
E(fy%,4,
M(t%,"info.version")):
E(fy%,9,
P)+" BASIC "+
T)+" MALLOC"):
ZJ%,S$,Yy%,hJ%:
E$(35):S$=
M(t%,"title.main"):
q(t%,"menu.main",E$(),Yy%):
e(S$,0,E$(),Yy%):
Ky(0,0,fy%):S$=
M(t%,"title.number"):
Q_(S$,1,1):V_%=
E(6):ZJ%=
E(6):$V_%="":$ZJ%="a0-9":
cy(1,0,4,0,V_%,ZJ%,5):
hy(0,2,1):S$=
M(t%,"title.col")
q(t%,"menu.col",E$(),Yy%):
e(S$,2,E$(),Yy%):Ty%=Yy%+1:S$=
M(t%,"title.res"):
&20058,1
,hJ%:
q(t%,"menu.res"+
(hJ%),E$(),Yy%):
e(S$,3,E$(),Yy%):xy%=Yy%+1:
h%=0
C("ModePicker"):
h(h%)
:B%=_%:!B%=
F(h%):
&400CB,,B%:
J(h%):h%=
C("ModePicker"):
c(h%,B%!4,B%!8)
E(h%,2,""):
E(h%,3,""):
F(1,L$)
W$,zJ%,qJ%,my%:
E,Z,UJ%:
c%,Ly%:
w%=0
N("XOutlineWimp_Configuration")=
W$,zJ%,qJ%,my%:w%=
C("OutlineCtrl"):
E(w%,2,W$):E=qJ%/16:c%=@%:@%=&10202FF:
E(w%,5,
(E)):Z=&64*((zJ%/16)/E):@%=&10201FF:
E(w%,&A,
(Z)):@%=c%:
S(w%,16,(1
my%)>0):
S(w%,17,(2
my%)>0):
S(w%,26,(4
my%)>0):UJ%=my%>>3:c%=@%:@%=&10005FF
E(w%,19,
(UJ%)):@%=c%:
B(w%)
:Ly%=
,J$,I$)
w%<>0
E(w%,18,
A(w%,19))))
d%=0
C("Options"):
B(d%)
h(d%)
x%=4
H(d%,x%):
A(d%,4)
A(d%,5)
A(d%,6)
A(d%,7)
A(d%,8)
A(d%,9)
A(d%,&A)
A(d%,&B)
A(d%,&C)
A(d%,&D)
e%=0
RFe%=
C("Palette"):
ty:K_%=
My(k%):
S(e%,17,k%):
B(e%):
W(1):
qy%,Jy%,oJ%,ty%,I_%,l_%,Bu%:
b%=0
U*b%=
C("SaveBox"):
B$<>"<Wimp$Scrap>"
E(b%,1,B$)
E(b%,1,"!Palette")
IJ%,OJ%,oJ%:
n(b%,qy%,Jy%):ty%=IJ%-(qy%/2):I_%=OJ%-(Jy%/2):
ty%<0
ty%=0
I_%<0
I_%=0
V(l_%,Bu%):
(ty%+qy%)>l_%
ty%=l_%-qy%
c(b%,ty%,I_%):
Iy(b%,1,-1)
sy%,Ry%,Zy%:
i%=0
C("CMOSRAM"):
B(i%)
h(i%)
&20006,&A1,28
,,Zy%:
&20006,&A1,&8C
,,sy%:
&20006,&A1,&BC
,,Ry%:
S(i%,2,((Zy%
2)=2)):
S(i%,3,((Zy%
8)=8)):
S(i%,4,((sy%
1)=1)):
S(i%,7,
((Ry%
&80)=&80)):
yy%,W_%,F_%,P_%,E_%,M_%,jy%,Ly%:
j%=0
N("XOutlineWimp_Configuration")=
,J$,I$)
N("XOutlineWimp_TextureInfo")=
yy%,W_%,F_%,P_%,E_%,M_%,jy%:j%=
C("Textures"):
x(yy%):
s(W_%):
Y(F_%,P_%,E_%,M_%,jy%):
B(j%)
:Ly%=
,J$,d$)
d(oy%,T_%):
h%<>0
oy%=
&600E3,E%(u%,n%)
T_%=
J_(h%)
y(oy%,T_%):
qy%,Jy%,Z,E:
w%<>0
oy%=
&20005,"WimpFont "+
A(w%,2):E=
A(w%,5)):Jy%=E*16:Z=
A(w%,&A)):qy%=(E*16*(Z/&64)):
&20005,"WimpFontSize "+
(qy%)+" "+
(Jy%):
Z(w%,16)=
&20005,"WimpJustify 1"
&20005,"WimpJustify 0"
Z(w%,17)=
&20005,"WimpUpArrow 1"
&20005,"WimpUpArrow 0"
Z(w%,26)=
&20005,"WimpMiscFont 1"
&20005,"WimpMiscFont 0"
&20005,"WimpNewUpArrow "+
A(w%,19)
T_%=
J(w%):w%=0
T(oy%,T_%):
d%<>0
oy%=
Z(d%,4)
Ey%=1
Z(d%,5)
Ey%=2
Z(d%,6)
Ey%=3
Z(d%,7)
Ey%=5
Z(d%,8)
Ey%=4
Z(d%,9)
`%=1
Z(d%,&A)
`%=2
Z(d%,&B)
`%=3
Z(d%,&C)
`%=5
Z(d%,&D)
`%=4
T_%=
J(d%):d%=0
e%<>0
J(e%):e%=0:
b%<>0
J(b%):b%=0
r(oy%,T_%):
Zy%,sy%,Ry%:
i%<>0
oy%=
6,&A1,28
,,Zy%:
&20006,&A1,&8C
,,sy%:
&20006,&A1,&BC
,,Ry%:
Z(i%,2)=
Zy%=Zy%
:Zy%=Zy%
Z(i%,3)=
Zy%=Zy%
:Zy%=Zy%
Z(i%,4)=
sy%=sy%
:sy%=sy%
Z(i%,7))=
Ry%=Ry%
:Ry%=Ry%
&20006,&A2,28,Zy%:
&20006,&A2,&8C,sy%:
&20006,&A2,&BC,Ry%
T_%=
J(i%):i%=0
j%<>0
J(j%):j%=0
Q(Ay%):
Wy%:u%=Ay%:
h%=0
Wy%=0
Ty%-1:
j(2,Wy%):
i(2,Ay%):
E(h%,2,
I(2,Ay%)):
N(Ay%):
Wy%:n%=Ay%:
h%=0
Wy%=0
xy%-1:
j(3,Wy%):
i(3,Ay%):
E(h%,3,
I(3,Ay%)):
v%,h_%,a%:v%=
E%(u%,n%)=-1
-a%=u%-1:
(a%>=0)
E%(a%,n%)<>-1
h_%=a%:v%=
:a%-=1:
:a%=u%+1:
(a%<Ty%)
E%(a%,n%)<>-1
h_%=a%:v%=
:a%+=1:
Q(h_%)
v%,e_%,g%:v%=
E%(u%,n%)=-1
-g%=n%-1:
(g%>=0)
E%(u%,g%)<>-1
e_%=g%:v%=
:g%-=1:
:g%=n%+1:
(g%<xy%)
E%(u%,g%)<>-1
e_%=g%:v%=
:g%+=1:
N(e_%)
v%,a%,g%,H_%:H_%=
:g%=0:
(g%<xy%)
):a%=0:
(a%<Ty%)
E%(a%,g%)=H_%
N(g%):
Q(a%):v%=
:a%+=1:
:g%+=1:
x(yy%):
yy%=0
E(j%,1,q$)
E(j%,1,
S(yy%))
s(W_%):
W_%=1
A(j%,2)
H(j%,2)
Y(F_%,P_%,E_%,M_%,jy%):
L(0,45,85,F_%):
L(1,45,85,P_%):
L(2,45,85,E_%):
L(3,45,85,M_%):
L(4,45,85,jy%):
L(Q_%,TJ%,YJ%,sJ%):
x%,a%,B%:a%=0:B%=_%:
x%=TJ%+(8*Q_%)
TJ%+(8*Q_%)+7:!B%=
F(j%):B%!4=x%:B%!&C=32:
((1<<a%)
sJ%)>0
B%!8=32
:B%!8=0
&600CD,,B%:a%+=1:
x%=YJ%+(8*Q_%)
YJ%+(8*Q_%)+7:!B%=
F(j%):B%!4=x%:B%!&C=32:
((1<<a%)
sJ%)>0
B%!8=32
:B%!8=0
&600CD,,B%:a%+=1:
V$,A_%:V$="<DeskCtrl$Dir>.Modes":A_%=0:b_%=&C:
(A_%<>-1)
(b_%=&C):
&2000C,&C,V$,_%,1,A_%,35,0
b_%,,,,A_%:
(A_%<>-1)
(_%!20=&FFA)
R_(V$+"."+$(_%+24))
R_(c$):
&20005,"RMLoad "+c$:
s%,v%:
&20008,17,"<DeskCtrl$Dir>.Choices"
v%<>1
&2000D,67,"<DeskCtrl$Dir>.Choices",0
s%=0
&2000C,4,s%,_%,4:Ey%=!_%:
&2000C,4,s%,_%,4:`%=!_%:
&2000C,4,s%,_%,4:k%=!_%:
&2000D,0,s%:
&2000D,&83,"<DeskCtrl$Dir>.Choices",0
s%=0
!_%=Ey%:
&2000C,2,s%,_%,4:!_%=`%:
&2000C,2,s%,_%,4:!_%=k%:
&2000C,2,s%,_%,4:
&2000D,0,s%:
&20008,18,"<DeskCtrl$Dir>.Choices",&FFF:
&2001E,4,"PaletteUtil":
&2001E,3,"PaletteUtil":
&600DE,"Desktop"
a%,g%:
G$,D$,H$,N$:
Ky%,Hu%,Wy%:
Ly%:
g%=0
xy%-1:H$="m.":N$=
I(3,g%):Wy%=1:
N$,Wy%,1)>=" "):
N$,Wy%,1)<>" "
N$,Wy%,1):Wy%+=1
:Wy%+=1
d(t%,H$,G$)
UKy%=1:
a%=0
Ty%-1:D$="":
G$,Ky%,1)>=" ")
G$,Ky%,1)<>","):
G$,Ky%,1)<>":"
G$,Ky%,1):Ky%+=1
:Ky%+=1
:Ky%+=1:E%(a%,g%)=
(D$):
F(1,e$+N$+x$):
a%=0
Ty%:E%(a%,g%)=0:
_y(Vy%):
c%:c%=@%:@%=&10005FF:
E(e%,3,
B(Fy%))):@%=c%:
t(_y%):
Y_(Vy%):
c%:c%=@%:@%=&10005FF:
E(e%,8,
B(Py%))):@%=c%:
t(_y%):
Ry(Vy%):
c%:c%=@%:@%=&10005FF:
E(e%,&D,
B(Cy%))):@%=c%:
t(_y%):
ty:Fy%=
L(e%,4,6,5,0,&FF,1):Py%=
L(e%,9,&B,&A,0,&FF,1):Cy%=
L(e%,&E,16,&F,0,&FF,1):
Z(Fy%):
Z(Py%):
Z(Cy%):
W(a%):
c%,z%,x_%,B%:_y%=a%:B%=_%:
a%<=&F
uc%=@%:@%=&10005FF:
E(e%,44,
(a%)):@%=c%:!B%=
F(e%):B%!4=42:B%!8=((a%
&F)<<28)
32:B%!&C=-&10000000
&600CD,,B%
:!B%=
F(e%):B%!4=42:B%!8=0:B%!&C=32:
&600CD,,B%:
E(e%,44,"Border")
E(e%,44,"Mouse1")
E(e%,44,"Mouse2")
E(e%,44,"Mouse3")
:z%=_%:
&600E5,,z%,&45555254
&600E5,,z%,0
:x_%=!(z%+(4*a%)):
M(Fy%,(x_%>>8)
&FF):
M(Py%,(x_%>>16)
&FF):
M(Cy%,(x_%>>24)
&FF):
t(a%):
z%,By%,Gy%,Ny%:By%=
A(e%,3)):Gy%=
A(e%,8)):Ny%=
A(e%,&D)):z%=_%:
&600E5,,z%,&45555254
&600E5,,z%,0
:?(z%+(4*a%)+3)=Ny%:?(z%+(4*a%)+2)=Gy%:?(z%+(4*a%)+1)=By%:?(z%+(4*a%))=0:
&600E4,,z%:
z%:z%=_%:z%!0=-&F0F1000:z%!4=-&2F2F3000:z%!8=-&4F4F5000:z%!&C=-&6F6F7000:z%!16=&70707000:z%!20=&50505000:z%!24=&30303000:z%!28=0:z%!32=-&6FC00000:z%!36=&E0E000:z%!40=&C00000:z%!44=&D000:z%!48=-&4F1F2000:z%!52=&805000:z%!56=&B0F000
mz%!60=-&F500000:z%!64=&70707000:z%!68=-&F100000:z%!72=-&70000000:z%!76=&F000:
&400E4,,z%:
W(_y%):
My(DJ%):k%=DJ%:
DJ%=
BFy%!24=16:Py%!24=16:Cy%!24=16:Fy%!20=&F0:Py%!20=&F0:Cy%!20=&F0
:Fy%!24=1:Py%!24=1:Cy%!24=1:Fy%!20=&FF:Py%!20=&FF:Cy%!20=&FF
By%,Gy%,Ny%:By%=
B(Fy%):Gy%=
B(Py%):Ny%=
B(Cy%):By%=By%>>4:By%=By%<<4:Gy%=Gy%>>4:Gy%=Gy%<<4:Ny%=Ny%>>4:Ny%=Ny%<<4:
M(Fy%,By%):
M(Py%,Gy%):y%=
M(Cy%,Ny%):y%=
N_%,f%:f%=
Q:N_%=_%:
/!N_%=20:N_%!&C=0:N_%!16=9:
&400E7,17,N_%,0
&60750:
((f%=8)
(f%=1)
(f%=2))
&600D1,-1,-&3B9ACA00,-&3B9ACA00,&3B9ACA00,&3B9ACA00:
q%,f%:f%=
Q:q%=_%:
((f%=8)
(f%=1)
(f%=2))
(e%<>0)
2!q%=
F(e%):q%!4=42:q%!8=0:q%!&C=0:
&600CD,,q%
my(U$,Iy%,`J%,Wu%):
Iy%=0
Iy%=512:
Iy%<256Iy%=256
<J$=U$:_%=
E(Iy%):
&400C0,`J%,&4B534154,U$,Wu%
t_%,c_%:
u(f$,Uu%,Su%,kJ%):
B%,k_%:k_%=&C:B%=
E(38+k_%+1):o_%=B%:!B%=Su%:B%!4=0:B%!8=0:B%!&C=68:B%!16=68:B%!20=&1700310A:B%!24=B%+36:$(B%+36)=f$:B%!28=Uu%:B%!32=k_%+1:
&400C2,kJ%,B%
C(X$):
D%:D%=
r(X$)):!(!D%+64)=hy%:
py(D%):=D%
J(Xy%):
Dy(Xy%):
Z(Xy%-16):
q(wJ%,z$,
E$(),
iJ%):
Z$,Ay%,ay%,Sy%:Z$=
M(wJ%,z$):ay%=0:Sy%=0:Ay%=0:
Sy%<
(Z$):
:Sy%+=1:
"/_@<>,",
Z$,Sy%,1))
(Sy%=
(Z$)):
"/_@<>,",
Z$,Sy%,1))
(Sy%<
(Z$)):Sy%+=1:
Ay%=0
E$(Ay%)=
Z$,ay%,Sy%-ay%-2)
Sy%>=
E$(Ay%)=
Z$,ay%,Sy%-ay%+1)
:E$(Ay%)=
Z$,ay%,Sy%-ay%-1)
:ay%=Sy%:Ay%+=1:
:iJ%=Ay%-1:
m(Xy%,x%,o%):
ny%,uy%,S_%,C_%:!_%=
F(Xy%):
&400CB,,_%:ny%=_%!4:uy%=_%!16:!_%=
F(Xy%):_%!4=x%:
&400CE,,_%:S_%=_%!16:C_%=_%!20:
Cy(o%,(S_%+ny%),(C_%+uy%)):
Xy(Xy%,x%,dJ%):
ny%,uy%,S_%,C_%:!_%=
F(Xy%):
&400CB,,_%:ny%=_%!4:uy%=_%!16:!_%=
F(Xy%):_%!4=x%:
&400CE,,_%:S_%=_%!16:C_%=_%!20:
&400D4,,dJ%,(S_%+ny%),(C_%+uy%):by%=dJ%:py%=S_%+ny%:ly%=C_%+uy%:
S(Xy%,x%,Xu%):
Xu%=
A(Xy%,x%)
H(Xy%,x%)
`y:`y%=0:iy%=0:Uy%=0:wy%=0:
ly(W$):
&60091,0,0,&280000,0,0,0,0
,,,`y%,,iy%:Uy%=
E(`y%):wy%=
E(iy%):
(Uy%=0)
(wy%=0)
&60091,0,Uy%,&280000,`y%,wy%,iy%,W$:
Ty(W$):
&60091,0,Uy%,&280000,`y%,wy%,iy%,W$:
Uy%<>0
Z(Uy%):Uy%=0
wy%<>0
Z(wy%):wy%=0
_(Nu%):
B_%:
&600A0,0,Uy%,Nu%,_%,50:B_%=2:
(?(_%+B_%)<>92)
(B_%<50):B_%+=1:
:?(_%+B_%)=0:=
S(_%+2)
X:=Uy%
I(Zu%,jJ%):
A$,cJ%,O_%:cJ%=!(r%+(4*(Zu%+1))):O_%=(cJ%+28)+(24*jJ%):
(O_%!8
256)>0
S(O_%!&C)
S(O_%+&C):=A$
d(Qu%,z$,
r$):
M(Qu%,z$):=
F(Du%,w$):
B%:B%=_%:!B%=E%:$(B%+4)=w$:?(B%+4+
(w$))=0:
&400DF,B%,1,J$:
D_%:
&20035,-1,9
,,D_%:D_%=1<<D_%:=D_%
N(g$):
V%,CJ%:
&20039,,g$
@ CJ%=
:CJ%=
:=CJ%
V_(M%,T%,P%):
R%,I%,Q%:
M%=M%
-2:T%=0
ey(G_%):G_%=0
T%=0
&400C7,M%,_%,,P%
Q%:Q%=Q%+T%:
&400E1,M%,_%,Q%,P%
:I%=_%:
xy(I%):
E_(I%)
K_(I%)
I%!&C=-2
Q%=I%!8:
S_(!I%)
jy(I%)
B_(I%)
:Q%=0:
K_%=
w(I%):
Q%<>0
G_%=Oy%
Q%=0
r_(I%)
F_(I%)
fy(I%)
C_(I%)
17,18:
z(I%!16)
z_(I%)
D_(I%)
a(I%!16)
Uy(I%)
w(B%):
W%,I%,S%,F%,V%,X%,Jy%,Y%:
((B%!8)
gSW%=
H(B%!&C):I%=B%!16:S%=R_%:F%=
W%=S%!4
(I%=S%!8
I%=S%!&C
I%=S%!40)
G_(Oy%):F%=
:V%=!B%:!B%=B%!&C:
&400E0,,B%:V%=V%-B%!4:
&400CB,,B%:X%=V%+B%!20:V%=0.5+((S%!20-S%!16)*(X%-S%!32))/(S%!24*(S%!36-S%!32)):V%=S%!16+V%*S%!24:
M(S%,V%):Oy%=S%:!B%=!(W%-8):B%!4=S%!8:
&400CE,,B%
i^X%=B%!8:V%=B%!16:Jy%=B%!&C:Y%=B%!20:
Ey(W%,X%,Jy%):
Ey(W%,V%,Y%):
X%,Jy%,V%-X%,Y%-Jy%
:S%=!S%:
Sy:R_%=0:Oy%=0:
W%,S%,V%,X%,B%:S%=Oy%:W%=S%!4:B%=_%:
&400CF,,B%:
((B%!8)
Oy%=0:
V(X%,V%):
0,0,X%,V%:
V%=!B%:!B%=!(W%-8):
&400E0,,B%:V%=V%-B%!4:
&400CB,,B%:X%=V%+B%!20:V%=0.5+((S%!20-S%!16)*(X%-S%!32))/(S%!24*(S%!36-S%!32)):V%=S%!16+V%*S%!24:
M(S%,V%):
Ay(M%,N%):
P%:P%=!(r%+4*(M%+1))+36+N%*24:!P%=!P%
-&400001:
Fy(M%,N%):
P%:P%=!(r%+4*(M%+1))+36+N%*24:!P%=(!P%
-&400001)
&400000:
c_(Y%,S%):
P%,D%,A%,B%,C%,E%,F%,G%,H%,I%,J%,K%,L%,M%,N%,O%,Q%,R%,T%,U%,V%,Z%,X%,W%:
v$,BJ%,PJ%,uJ%,nJ%,yJ%,gJ%,tJ%:v$="Dynamic memory allocation routines,
Ian Palmer, 1993":
Dy%559:SJ%=Y%:r_%=S%:
&400EC,-1,-1
zy%:zy%+=&8000
Z%=0
2:P%=Dy%:[OPTZ%:B A%:B B%:B C%:B D%:B R%:B W%:.A%:ADR4,cy%:LDR1,[4]:.E%:CMP1,#0:BEQ F%:LDR2,[1,#-4]:CMP2,0:BGE G%:MOV4,1:LDR1,[1]:B E%:.F%:MOV0,#0:ADR1,p%:STR0,[1]:MOVpc,&E:.G%:LDR2,[1]:STR2,[4]:ADR0,p%:STR1,[0]:MOVpc,&E
.B%:LDR5,[0,#-4]:ADD6,5,0:ADD6,6,#4:ADR4,cy%:LDR1,[4]:.H%:CMP1,#0:BEQ I%:LDR2,[1,#-4]:ADD3,2,1:ADD3,3,#4:CMP3,0:BEQ J%:CMP6,1:BEQ K%:CMP1,0:BGT I%:MOV4,1:LDR1,[1]:B H%:.I%:STR0,[4]:STR1,[0]:B L%:.J%:ADD5,5,2:ADD5,5,#4
STR5,[1,#-4]:MOV0,1:LDR1,[1]:CMP6,1:BNE L%:LDR2,[1,#-4]:.K%:ADD5,5,2:ADD5,5,#4:STR5,[0,#-4]:LDR1,[1]:STR1,[0]:STR0,[4]:.L%:ADR1,p%:STR0,[1]:MOVpc,&E:.C%:ADR1,cy%:.M%:LDR2,[1]:CMP2,#0:BEQ N%:CMP2,0:BEQ O%
MOVLT1,2:BLT M%:.N%:MOV1,#0:.O%:ADR0,p%:STR1,[0]:MOVpc,&E:.R%:ADR4,cy%:LDR2,[4]:.T%:CMP2,#0:BEQ U%:LDR3,[2,#-4]:ADD3,3,2:CMP3,0:BEQ V%:MOV4,2:LDR2,[2]:B T%:.U%:MOV2,#0:.V%:ADR1,p%:STR2,[1]:ADR1,Z_%:STR4,[1]:MOVpc,&E
.W%:ADR1,cy%:MOV0,#0:LDR2,[1]:.Y%:CMP2,#0:BEQ S%:LDR3,[2,#-4]:ADD0,0,3:LDR2,[2]:B Y%:.S%:ADR1,p%:STR0,[1]:MOVpc,&E:.D%:STMFD&D!,{8-&A,&E}:CMP0,#0:LDMEQFD&D!,{8-&A,pc}:CMP1,2:LDMEQFD&D!,{8-&A,pc}:BLT nJ%
.BJ%:SUBS0,0,#32:BLT PJ%:LDMIA1!,{3-&A}:STMIA2!,{3-&A}:B BJ%:.PJ%:ADDS0,0,#32:.uJ%:LDMEQFD&D!,{8-&A,pc}:LDR4,[1],#4:STR4,[2],#4:SUBS0,0,#4:B uJ%:.nJ%:ADD1,1,0:ADD2,2,0:.yJ%:SUBS0,0,#32:BLT gJ%:LDMDB1!,{3-&A}:STMDB2!,{3-&A}:B yJ%
wu.gJ%:ADDS0,0,#32:.tJ%:LDMEQFD&D!,{8-&A,pc}:LDR4,[1,#-4]!:STR4,[2,#-4]!:SUBS0,0,#4:B tJ%:.cy%&0:.p%&0:.Z_%&0:]:
c(S%):
M%,L%,A%,X%,Y%,Z%:M%=0:
y9A%=
Dy%+16:L%=!p%:
L%<>0
S%-=!(L%-4)-4:!!Z_%=!L%
S%<(
-&800)
M%S%-1:!M%=S%-4:
L%<>0
M%=L%-4:!M%=S%+!(L%-4)
:A%=zy%:
Dy%+16:L%=!p%:
L%<>0
S%-=!(L%-4)-4:!(!Z_%)=!L%
&400EC,-1,-1
X%,Y%,Z%:
S%<Z%
&400EC,X%+S%,Y%
Z%:M%=X%+&8000:!M%=Z%-X%-4:zy%=Z%+&8000:
L%<>0
M%=L%-4:!M%=Z%-X%+!(L%-4)
M%<>0
M%+=4
A%,B%,L%,C%,S%,N%,D%:A%=zy%:
Dy%+16:B%=!p%:C%=!Z_%:B%-=4:L%=4+!B%:D%=(L%
q_%)*q_%:N%=L%-D%:S%=zy%-D%-&8000:
&400EC,S%,-1
S%:zy%=S%+&8000:
N%>7
!B%=N%-4:
!C%=0
iy(Iy%):Gu%=
E(Iy%):
O(P$,Cu%):
Iy%,ey%,w_%:
&41500,,P$
,,Iy%:
Cu%=0
30,6,,,21+
,,ey%:w_%=0
:ey%=
E(21+
(P$)):w_%=
E(Iy%)
:$(ey%+20)=P$:ey%!16=w_%:
&41501,ey%,ey%+20,w_%:=ey%
M(q%,t$):
dy%:
&41502,q%,t$,0,0,0,0,0,0
,,dy%:=
S(dy%)
D(F%,E%,E$):
B%,R%:B%=_%:!B%=E%:$(B%+4)=E$:?(B%+4+
(E$))=0:
&400DF,B%,1,J$:
&400DF,B%,3,J$
R%=2
oy(E%):
A%:My%=
E(4*E%):E%=
P(My%):
A%=0
4:!(My%+A%)=0:
A%(&a):
Iu%16:
I%:U_%=0:hy%=0:a_%=
E(256):
I%=0
&FF:a_%?I%=0:
ry(N%):
A%:::r%=
E((N%+1)*4):by%=0:py%=0:ly%=0:!r%=N%:
A%=1
N%:!(r%+4*A%)=0:
M_:z_%=0:C$="":__%=0:vy%=0:Y_%=
:_%!0=1:_%!4=2:_%!8=3:_%!&C=5:_%!16=6:_%!20=7:_%!24=&80142:_%!28=&80144:_%!32=&80145:_%!36=0:
ay(_%):
z(HJ%):
1,2,3,5,6,&80144,&80145:=
z_(q%):
Lu%,Iy%,HJ%,XJ%:?(q%+!q%)=0:
q%!16
D(q%!40,
q%!8<>vy%
z(q%+44,"<Wimp$Scrap>"):q%!36=-1:q%!&C=q%!8:q%!16=2:!q%=60:
&400E7,17,q%,q%!4
q%!&C=vy%
fq%!36=__%:q%!&C=q%!8:q%!16=3:
&400E7,18,q%,q%!20,q%!24:
S(q%+44),z_%,(q%!36<>-1)):vy%=q%!8:
q%!4<>c_%
D(q%!40,
Gq%!&C=q%!8:q%!16=4:
&400E7,17,q%,q%!4:
S(q%+44)<>"<Wimp$Scrap>"
S(q%+44),q%!40,XJ%):
XJ%=
5,"Remove <Wimp$Scrap>"
D(q%!40,
@q%!&C=q%!8:q%!16=4:
&400E7,17,q%,q%!4:
S(q%+44),q%!40,
&80145:
q%!&C
a(HJ%):
3,7,&80142:=
Uy(q%):
Ly%:
q%!16
q%!8=vy%
S(q%+44)="<Wimp$Scrap>"
5,"Remove <Wimp$Scrap>"
:Ly%=
,"Error from "+J$,"Data transfer failed: Receiver died")
F_(q%):
Qy%:
t_%>=300
6,&A1,28
,,Qy%:Qy%=((Qy%
2)=2)
:Qy%=
&42401
&400D0,,-1
:Y_%=
C$,"."):C$=
C$,".")+1):
&400CF,,_%:_%!20=_%!&C:_%!24=_%!16:_%!28=!_%:_%!32=_%!4:_%!36=__%:_%!40=z_%:
z(_%+44,C$):_%!&C=0:_%!16=1:!_%=44+4*((
(C$)+4)
&400E7,18,_%,_%!20,_%!24:vy%=_%!8:
Py(q%):
&41504,q%:
q%!16>0
Z(q%!16):
Z(q%)
30,7,,q%
S(P%):
M$:M$="":
?P%>31M$+=
(?P%):P%+=1:
F(W%):=!(W%-8)
s:=by%
by%=-1
CM%=!(r%+4*(by%+1)):
&400CF,,_%:
(_%!8
&400D4,,M%,py%,ly%
E(W%,I%,F$):
f_%,u_%,WJ%,GJ%,X_%:!_%=!(W%-8):_%!4=I%:
&400CE,,_%:
(_%!24
(_%!24
z(_%!28,
F$,_%!36))
&400D3,,_%+&80:f_%=_%!&80:u_%=_%!&84:WJ%=_%!&88:GJ%=_%!&8C:X_%=_%!&94:
f_%=W%!-8
u_%=I%
X_%>
X_%=
&400D2,f_%,u_%,WJ%,GJ%,-1,X_%
:_%!8=0:_%!&C=0:
&400CD,,_%:
H(H%):
E%,A%,F%,P%:E%=
P(My%):F%=-1:
A%=0
4:P%=My%!A%:
P%<>0
!(P%-8)=H%
F%=P%
A(W%,I%):!_%=!(W%-8):_%!4=I%:
&400CE,,_%:
(_%!24
(_%!24
S(_%!28)
M(S%,V%):
B%,X%,F%,T%,Jy%,Y%:
V%<S%!16
V%=S%!16:
V%>S%!20V%=S%!20
V%=S%!28
S%!28=V%:B%=_%:!B%=!((S%!4)-8):B%!4=S%!&C:
&400CE,,B%:
&400C4,,B%:Jy%=B%!&C:Y%=B%!20:F%=B%!16:B%!4=!B%:X%=((V%-S%!16)/(S%!20-S%!16))*(S%!36-S%!32):
X%<0X%=0
+X%+=S%!32:
X%>=F%
T%=X%:
T%=F%:F%=X%
3B%!16=X%:
&400C2,,B%+4
X%:S%!&C=X%:
X%<S%!40
B%!4=S%!40:
&400CE,,B%:B%!40=!B%:B%!44=X%:
&400CE,,B%+40:B%!4=!B%:
&400C2,,B%+4
X%:S%!40=X%:B%!44=!B%:
&400C2,,B%+44
X%:S%!&C=X%
&400D1,!B%,F%-2,Jy%,T%+2,Y%:
H_(S%,V%):
H(W%,I%):!_%=!(W%-8):_%!4=I%:_%!8=0:_%!&C=&200000:
&400CD,,_%:
Z(W%,I%):!_%=!(W%-8):_%!4=I%:
&400CE,,_%:
(_%!24
&200000)
A(W%,I%):!_%=!(W%-8):_%!4=I%:_%!8=&200000:_%!&C=&200000:
&400CD,,_%:
Yy(P$,gy%,Iy%,Eu%,x%):
Qy%,MJ%,m_%,AJ%,j_%,LJ%,QJ%,Q$:!_%=
F(Eu%):
&400CC,,_%:MJ%=_%!4+!(_%+92+32*x%+0):m_%=_%!4+!(_%+92+32*x%+8):AJ%=_%!8+!(_%+92+32*x%+4)+(_%!16-_%!8):j_%=_%!8+!(_%+92+32*x%+&C)+(_%!16-_%!8):
V(LJ%,QJ%):
t_%>=300
6,&A1,28
,,Qy%:Qy%=((Qy%
2)=2)
:Qy%=
T_%!0=MJ%:_%!4=AJ%:_%!8=m_%:_%!&C=j_%:Q$="file_":
gy%<256Q$+="0":
gy%<16Q$+="0"
&Q$+=
~(gy%):
&42400,&C5,1,Q$,_%,0
:!_%=0:_%!4=5:_%!8=MJ%:_%!&C=AJ%:_%!16=m_%:_%!20=j_%:_%!24=0:_%!28=0:_%!32=LJ%:_%!36=QJ%:
&400D0,,_%
:z_%=gy%:C$=P$:__%=Iy%:Y_%=
A%,B%:
Dy%+20:A%=!p%:
A%+=(
-&800):
&400EC,-1,-1
,,B%:A%+=B%
NJ%,JJ%,v_%:
53,-1,4
,,NJ%:
53,-1,5
,,JJ%:v_%=
NJ%=JJ%
v_%=
I(Mu%):hy%=Mu%:
V(P$):
dy%,gy%,VJ%,d_%:
8,5,P$
gy%,,VJ%,,d_%;oy%:
gy%=1
&FFF00)=&FF900
9dy%=
E(d_%+4):!dy%=d_%+4:
46,265,dy%:
46,266,dy%,P$
1,"'"+P$+"' is not a sprite file"
:=dy%
`(O$,E%):
C%,A%,D%,N%,T%,F%,Z%,H%,I%:C%=
C%=0
D(1,&D6,"Can't open template file "+O$)
A%=0
&F:D%=
:T%=0:Z%=
E(E%):
A%=0
23:Z%?A%=
E(32):!N%=T%:T%=N%:N%!4=Z%!4:
A%=0
&B:F%=?(Z%+&C+A%):
F%=0
?(Z%+A%+&C)=&D
:?(Z%+24)=&D:$(N%+16)=
Y($(Z%+&C))
!Z%=0:
#C%:D%=T%:A%=Z%:H%=
E(256):
&400D9,,O$:
I%=0
&FF:H%?I%=0:
E(D%!4):D%!8=N%:
&400DB,,N%,A%,A%+E%,H%,$(D%+16),0
,,C%:F%=4+C%-A%:C%=
E(F%):D%!&C=C%:
&400DB,,N%,C%,C%+F%,H%,$(D%+16),0:
!D%=0
!D%=U_%:U_%=T%:D%=0:
D%=!D%
I%=0
H%?I%
a_%?I%+=1
:N%!64=hy%:I%=N%!84:
I%>0:
(!(N%+&68+32*I%)
259)=258
!(N%+&70+32*I%)=hy%
:I%-=1:
&400DA:
Z(Z%):
Z(H%):
e(F$,N%,A$(),S%):
J_%,ky%,A%,B%,C%,P%,M%,o%,E$:N%+=1:o%=!(r%+N%*4):
o%=0
E(32+24*(S%+1)):!(r%+N%*4)=o%
P(o%)<(32+24*(S%+1))
w(o%,32+24*(S%+1)):!(r%+N%*4)=o%
:$o%=F$:o%?
(F$)=0:o%!&C=&70207:o%!16=&AC:o%!20=44:o%!24=0:M%=
(F$):
A%=0
S%:E$=A$(A%):B%=0:C%=-1:P%=o%+28+A%*24:ky%=7:J_%=33:
E$)="@"
B%=B%
8:E$=
E$):ky%=3:J_%=&400021
E$)="/"
B%=B%
1:E$=
E$)="_"
B%=B%
2:E$=
A%=S%
B%=B%
E$)="<"
B%=B%
4:!P%=B%:P%!4=C%:P%!8=(ky%
&FF)*&1000000
J_%:E$=
E$):B%=
E$,">"):C%=
E$,B%+1)):E$=
E$,B%-1):$C%=E$:P%!&C=C%:P%!16=-1:P%!20=&FF
E$)=">"
|!P%=B%
16:P%!8=(ky%
&FF)*&1000000
J_%:E$=
E$):B%=
E$,"<"):C%=
E$,B%+1)):C%=!(r%+4*C%):P%!4=C%:E$=
E$,B%-1):$(P%+&C)=E$
:!P%=B%:P%!4=C%:P%!8=(ky%
&FF)*&1000000
J_%:$(P%+&C)=E$:?(P%+&C+
(E$))=0
:o%!16=16*(M%+1):
Ky(M%,N%,S%):
P%:P%=!(r%+4*(M%+1)):!(P%+32+N%*24)=!(S%-8):
Q_(F$,M%,N%):
P%,A%:P%=!(r%+4*(M%+1)):
P%=0
%P%=
E(32+24*N%):!(r%+4*(M%+1))=P%
P(P%)<(32+24*N%)
w(P%,32+24*N%):!(r%+4*(M%+1))=P%
:$P%=F$:P%?
(F$)=0:P%!&C=&70207:P%!16=16*(1+
(F$)):P%!20=44:P%!24=0:
A%=0
N%-2:!(P%+28+A%*24)=0:
:!(P%+4+N%*24)=&80:
E(A%):
M%,S%:S%=A%:A%=&C+(A%
16)*16:
A%<S%
A%+=16
Dy%:M%=!p%:
M%=0
c(A%+4)
M%<>0
S%=!(M%-4):
S%-A%>&F
!(M%-4)=A%:
Zy(M%+A%,S%-A%)
M%=0
&B,"Can't allocate memory"
cy(M%,N%,W%,F%,B%,V%,L%):
P%:P%=!(r%+4*(M%+1)):
P%=0
0,"Menu number "+
(M%)+" undefined"
!(P%+28+N%*24)=(!(P%+28+N%*24)
4:!(P%+32+N%*24)=-1:!(P%+36+N%*24)=&7000121:!(P%+40+N%*24)=B%:!(P%+44+N%*24)=V%:!(P%+48+N%*24)=L%:W%=16*(1+W%):
W%>P%!16
P%!16=W%
hy(M%,N%,S%):
P%:P%=!(r%+4*(M%+1)):!(P%+28+N%*24)=!(P%+28+N%*24)
16:!(P%+32+N%*24)=!(r%+4*(S%+1)):
h(W%):
B%:B%=_%:!B%=!(W%-8):
&400CB,,B%:
&400C5,,B%:
c(W%,X%,Y%):
qy%,Jy%,B%:B%=_%:!B%=!(W%-8):
&400CB,,B%:qy%=B%!&C-B%!4:Jy%=B%!16-B%!8:B%!4=X%:B%!8=Y%:B%!&C=X%+qy%:B%!16=Y%+Jy%:
&400C5,,B%:
B(W%):
X%,Y%,H%,V%:
n(W%,H%,V%):
V(X%,Y%):
c(W%,(X%-H%)
2,(Y%-V%)
U(C%,F$,E$):
B%,R%,F%:B%=_%:F%=17:
F%=19
>!B%=0:$(B%+4)=E$:?(B%+4+
(E$))=0:
&400DF,B%,F%,F$
,R%:=R%
n(W%,
Y%):
B%:B%=_%:!B%=!(W%-8):
&400CB,,B%:X%=B%!&C-B%!4:Y%=B%!16-B%!8:
Y%):
F%,P%:
53,-1,4
,,F%:
53,-1,&B
,,P%:X%=P%<<F%:
53,-1,5
,,F%:
53,-1,&C
,,P%:Y%=P%<<F%:
Iy(W%,I%,X%):
X%=-1
A(W%,I%))
&400D2,!(W%-8),I%,0,0,-1,X%:
J_(W%):!_%=!(W%-8):
&400C6,,_%:
j(M%,N%):
P%:P%=!(r%+4*(M%+1))+28+N%*24:!P%=!P%
i(M%,N%):
P%:P%=!(r%+4*(M%+1))+28+N%*24:!P%=!P%
B(S%):=S%!28
L(W%,B%,S%,R%,L%,H%,J%):
N%,Q%:Q%=_%:N%=
E(44):!N%=R_%:R_%=N%:
J%<1J%=1
N%!4=W%:N%!8=B%:N%!&C=S%:N%!16=L%:N%!20=H%:N%!24=J%:N%!28=H%:!Q%=!(W%-8):Q%!4=S%:
&400CE,,Q%:N%!32=Q%!8:N%!36=Q%!16:N%!40=R%:=N%
Z(A%):
Dy%+4:L%=!p%:
(L%+!(L%-4))=zy%
(4+!(L%-4))>=q_%
e(P%):
W%:W%=
E(20):!W%=&76C0000:W%!4=0:W%!8=0:W%!&C=0:W%!16=P%:=W%+16
r(X$):
F%,P%:X$=
Y(X$):F%=0:P%=U_%:
(F%):
$(P%+16)=X$
F%=P%!8
P%=!P%:
py(D%):
W%,A%,E%,F%:
!(D%-8)<>0
D(1,0,"Trying to create a window that's already there")
&400C1,,!D%
W%:!(D%-8)=W%:E%=
P(My%):F%=-1:
A%=0
My%!A%=0
F%=A%
F%=-1
w(My%,E%+16):F%=E%:
A%=E%
E%+&F
4:My%!A%=0:
My%!F%=D%:
Dy(W%):
E%,A%:
(!(W%-16)
-65536)<>&76C0000
D(1,0,"Attempt to delete invalid window")
/2E%=
P(My%):
A%=0
W%=My%!A%
My%!A%=0
:!_%=!(W%-8):
&400C3,,_%:!(W%-8)=0:
Cy(M%,X%,Y%):by%=M%:py%=X%:ly%=Y%:M%=!(r%+4*(M%+1)):
&400D4,,M%,X%,Y%:
E_(I%):
&400C5,,I%:
S_(X%):
Y%,M%:
$+" at line "+
48M%=
q:Y%=96+
f(M%):X%-=16+(
x(M%)
Cy(M%,X%,Y%):
Ey(W%,
Y%):
B%:B%=_%:!B%=!(W%-8):
&400CB,,B%:X%=X%-B%!20+B%!4:Y%=B%!16-B%!24+Y%:
P(P%):=!(P%-4)
ay(M%):
&400F6,M%:
z(P%,M$):$P%=M$:?(P%+
(M$))=0:
&400D4,,-1:
Y(M$):
T$,A%,C%,L%:L%=
(M$):T$="":
L%=0
A%=1
L%:C%=
M$,A%,1)):
C%>64
C%<91
C%+=32
(C%):
P%,N%):
A%,B%,C%:
P%=0
E(N%):
>5C%=!(P%-4):B%=N%:N%=&C+(N%
16)*16:
N%<B%
N%+=16
N%<=C%
(C%-N%)>&F
!(P%-4)=N%:
Zy(P%+N%,C%-N%)
:A%=P%+C%+4:
Dy%+8:B%=!p%:A%=0:
B%<>0
B%=!B%:A%=!(B%-4)
B%<>0
C%+A%+4>=N%
!!p%=!B%:!(P%-4)=C%+A%+4
:A%=C%:C%=
E(N%):
C%<>0
B%=P%:
Dy%+&C:
Z(P%):P%=C%
&B,"Can't allocate memory"
Zy(A%,L%):L%=(L%
16)*16:
L%>0
!A%=L%-4:A%+=4:
Dy%+4
f(N%):
A%,H%,P%:N%+=1:P%=!(r%+4*N%):H%=0:A%=-1:
A%+=1:H%+=44:
(!(P%+A%*24+28)
H%+=22
(!(P%+A%*24+28)
&80):=H%
x(N%):
P%:P%=!(r%+(N%+1)*4):=P%!16