home *** CD-ROM | disk | FTP | other *** search
/ ARM Club 3 / TheARMClub_PDCD3.iso / hensa / desktop / outlnwimp_1 / !DeskCtrl / !Runimage (.txt) < prev    next >
RISC OS BBC BASIC V Source  |  1995-12-06  |  32KB  |  1,593 lines

  1.   !DeskCtrl version 2
  2.   By Andrew Sellors
  3.   This program is Shareware, see the !Help file for details
  4.   Unregistered version
  5. V_(KJ%,25,0):
  6. N("XOutlineWimp_Configuration")=
  7. Ay(0,3)
  8. Fy(0,3)
  9. N("XOutlineWimp_TextureInfo")=
  10. Ay(0,4)
  11. Fy(0,4)
  12. iy(&400):t%=
  13. O("<DeskCtrl$Dir>.Messages",1):
  14. M(t%,"app.name"),&800,&C8,0):
  15. $+" at line "+
  16. oy(8):
  17. ry(5):
  18. Py(t%):
  19.  I%=0
  20.  a_%?I%
  21. &40082,I%
  22. &400DD,c_%,&4B534154:
  23. O(R$,bJ%,Vu%):
  24.  s%,z%,a%,_$:
  25. a_(s%):
  26. F(1,a$+" "+
  27. B$=R$:
  28. R:z%=_%:
  29. &600E5,,z%,&45555254
  30. &600E5,,z%,0
  31. &2000D,&83,B$,0
  32. s%;V%:
  33.  a%=0
  34. &B,19,s%:
  35. &B,a%,s%:
  36. &B,16,s%:
  37. &B,?(z%+(4*a%)+1),s%:
  38. &B,?(z%+(4*a%)+2),s%:
  39. &B,?(z%+(4*a%)+3),s%:
  40. &B,19,s%:
  41. &B,0,s%:
  42. &B,24,s%:
  43. &B,?(z%+(4*16)+1),s%:
  44. &B,?(z%+(4*16)+2),s%:
  45. &B,?(z%+(4*16)+3),s%:
  46.  a%=1
  47. &B,19,s%:
  48. &B,a%,s%
  49. &B,25,s%:
  50. &B,?(z%+(4*(16+a%))+1),s%:
  51. &B,?(z%+(4*(16+a%))+2),s%:
  52. &B,?(z%+(4*(16+a%))+3),s%:
  53. &2000D,0,s%:
  54. &20008,18,B$,&FED
  55. S(s%+4):
  56. F(1,s$+" "+_$)
  57. a_(s%):
  58.  s%<>0
  59. &2000D,0,s%
  60. D(bJ%,Fu%):
  61.  L_%:
  62. &FED:L_%=
  63. &FF9:
  64.  Fu%=
  65.      L_%=
  66. :L_%=
  67. :=L_%
  68. k(R$,bJ%,Vu%):
  69.  f%,n_%,Hy%:
  70.  yy%,W_%,F_%,P_%,E_%,M_%,jy%:
  71. &FED:f%=
  72. &20005,"WimpPalette "+R$:
  73. ((y%=
  74. ((f%=8)
  75. (f%=1)
  76. (f%=2)))
  77.  e%<>0
  78. W(_y%)
  79. &FF9:n_%=_%:
  80.  j%<>0
  81. &600CF,,n_%:Hy%=n_%!&C:
  82.  Hy%=
  83. F(j%)
  84. 5,"WimpLoadTexture "+R$:
  85. yy%,W_%,F_%,P_%,E_%,M_%,jy%:
  86. x(yy%):
  87. s(W_%):
  88. Y(F_%,P_%,E_%,M_%,jy%)
  89. K_(I%):
  90.  Hy%:Hy%=!I%:
  91. J(Hy%,h%)=
  92. J(Hy%,w%)=
  93. J(Hy%,d%)=
  94. J(Hy%,e%)=
  95. J(Hy%,b%)=
  96. J(Hy%,i%)=
  97. J(Hy%,j%)=
  98. &400C6,,I%:
  99. J(wJ%,Xy%):
  100.  Xy%<>0
  101.  wJ%=
  102. F(Xy%)
  103. H_(lJ%,Vy%):
  104.  Fy%:
  105. _y(Vy%)
  106.  Py%:
  107. Y_(Vy%)
  108.  Cy%:
  109. Ry(Vy%)
  110. C_(B%):A=
  111. P_(B%)
  112. T_(B%)
  113. by(B%)
  114. Hy(B%)
  115. P_(B%):
  116.  B%!4=-1
  117. &600E3,
  118. ($V_%)
  119. T_(B%):
  120.  s_%,Ly%:s_%=!B%:
  121. Q(s_%):
  122. by(B%):
  123.  s_%,Ly%:s_%=!B%:
  124. N(s_%):
  125. Hy(B%):
  126.  W$:W$=
  127. _(B%):
  128. E(w%,2,W$):
  129. &600CF,,_%:
  130.  _%!8
  131. Ty(W$):
  132. &400D4,,
  133. X,py%,ly%
  134. B_(B%):
  135. jy(B%):
  136. fy(B%):
  137.  W%,H%,I%,K%,A$,N_%:H%=!B%:I%=B%!4:K%=B%!24:W%=
  138. H(H%):
  139. __(I%,K%)
  140. uy(I%,K%)
  141. Vy(I%,K%)
  142. uy(x%,ry%):
  143.  Vy%,f%:
  144.  ry%=&D 
  145. 3:Vy%=
  146. A(e%,3)):y%=
  147. M(Fy%,Vy%):y%=
  148. ((y%=
  149. ((f%=8)
  150. (f%=1)
  151. (f%=2)))
  152. 8:Vy%=
  153. A(e%,8)):y%=
  154. M(Py%,Vy%):y%=
  155. ((y%=
  156. ((f%=8)
  157. (f%=1)
  158. (f%=2)))
  159. &D:Vy%=
  160. A(e%,&D)):y%=
  161. M(Cy%,Vy%):y%=
  162. ((y%=
  163. ((f%=8)
  164. (f%=1)
  165. (f%=2)))
  166. &600DC,ry%:
  167. __(x%,ry%):
  168. (x%=19)
  169. (ry%=&D)
  170. &600DC,ry%
  171. Vy(x%,ry%):
  172. (x%=1)
  173. (ry%=&D)
  174. A(b%,1),".")>0
  175. A(b%,1),&FED,
  176. F(1,Y$)
  177. &600DC,ry%
  178. r_(B%):
  179.  W%,H%,I%,T%,A$,N_%,l%,`_%:T%=B%!8:H%=B%!&C:I%=B%!16:W%=
  180. H(H%):l%=(T%=1):`_%=(T%=64):A=
  181. w_(I%,l%)
  182. By(I%,l%)
  183. yy(I%,l%)
  184. wy(I%,l%)
  185. O_(I%,l%,`_%)
  186. Gy(I%,l%)
  187.  fy%:
  188. U_(I%,l%)
  189. A_(I%,l%)
  190. w_(x%,l%):
  191. m(h%,4,2)
  192. m(h%,5,3)
  193. By(x%,l%):
  194.  m%,c%:
  195. A(w%,2)):
  196. Xy(w%,3,
  197. 6:m%=
  198. A(w%,5)):
  199.  m%>0
  200. ,c%=@%:@%=&10202FF:
  201. E(w%,5,
  202. (m%-1)):@%=c%
  203. 7:m%=
  204. A(w%,5)):
  205.  m%<99
  206. ,c%=@%:@%=&10202FF:
  207. E(w%,5,
  208. (m%+1)):@%=c%
  209. &B:m%=
  210. A(w%,&A)):
  211.  m%>0
  212. -c%=@%:@%=&10201FF:
  213. E(w%,&A,
  214. (m%-1)):@%=c%
  215. &C:m%=
  216. A(w%,&A)):
  217.  m%<999
  218. -c%=@%:@%=&10201FF:
  219. E(w%,&A,
  220. (m%+1)):@%=c%
  221. H(w%,26)
  222. H(w%,17)
  223. 20:m%=
  224. A(w%,19)):
  225.  m%>0
  226. 0c%=@%:@%=&10005FF:
  227. E(w%,19,
  228. (m%-1)):@%=c%:
  229. 21:m%=
  230. A(w%,19)):
  231.  m%<&FF 
  232. 0c%=@%:@%=&10005FF:
  233. E(w%,19,
  234. (m%+1)):@%=c%:
  235. yy(x%,l%):
  236.  fJ%,RJ%,_J%:
  237. (x%>=4)
  238. (x%<=&D)
  239. Z(d%,x%)=
  240. A(d%,x%)
  241. ,l%):
  242. 22:fJ%=Ey%:RJ%=`%:_J%=k%:Ey%=2:`%=1:S=
  243. Jy:Ey%=fJ%:`%=RJ%:k%=_J%
  244. wy(x%,l%):
  245.  xJ%:
  246. (x%>=21)
  247. (x%<=40)
  248. W(x%-21):
  249. 17:xJ%=
  250. Z(e%,17):
  251. My(xJ%):
  252. W(_y%)
  253. G_(lJ%):y%=
  254. ey(lJ%):y%=
  255. O_(x%,l%,`_%):
  256.  `_%=
  257. A(b%,1),&FED,&400,b%,0)
  258. A(b%,1),".")>0
  259. A(b%,1),&FED,
  260. F(1,Y$)
  261. Gy(x%,l%):
  262. U_(x%,l%):
  263. E(fy%,9,
  264. P)+" BASIC  "+
  265. T)+" MALLOC")
  266. A_(x%,l%):
  267. Z(j%,2)=
  268. &20005,"WimpTexture 1"
  269. &20005,"WimpTexture 0"
  270. &20005,"WimpKillTexture":
  271. x(0):
  272. Y(0,0,0,0,0):
  273. xy(B%):
  274.  Ly%:
  275. F(1,L$)
  276. (-26)
  277.  u%>0
  278. u%-=1:
  279. Q(u%):
  280. &600E3,E%(u%,n%):
  281. (-&7A)
  282.  u%<Ty%-1
  283. u%+=1:
  284. Q(u%):
  285. &600E3,E%(u%,n%):
  286. (-42)
  287.  n%>0
  288. n%-=1:
  289. N(n%):
  290. &600E3,E%(u%,n%):
  291. (-58)
  292.  n%<xy%-1
  293. n%+=1:
  294. N(n%):
  295. &600E3,E%(u%,n%):
  296. D_(B%):
  297.  B%!16
  298. L_(B%)
  299. &400C1:
  300. Wy(B%)
  301. &400C2:
  302. vy(B%)
  303. dy(B%)
  304. L_(B%):
  305.  B%!20=0
  306. Wy(B%):
  307. I(i_%):$(o_%+36)="deskctrl"
  308. I(EJ%):$(o_%+36)="deskctrl22"
  309. vy(B%):
  310.  aJ%,U$:
  311.  y_%=
  312. 1aJ%=B%!4:U$=
  313. S(B%+28):
  314.  U$="Palette Utility"
  315. -!_%=20:_%!&C=0:_%!16=0:
  316. &400E7,17,_%,aJ%
  317. dy(B%):
  318.  s%,z%,A$,H_%,c%,a%,By%,Gy%,Ny%:
  319.  Tu%:s%=B%!20:H_%=
  320. :z%=_%:
  321. &600E5,,z%,&45555254
  322. &600E5,,z%,0
  323. :c%=@%:@%=&1000FFF:A$="WimpMode "+
  324. (H_%)+
  325. (&A):
  326. &2000C,2,s%,A$,
  327. (A$):@%=c%:A$="Desktop_SetPalette":
  328. &2000C,2,s%,A$,
  329. (A$):
  330.  a%=0
  331. 19:By%=?(z%+(4*a%)+1):Gy%=?(z%+(4*a%)+2):Ny%=?(z%+(4*a%)+3):c%=@%:@%=&10005FF:
  332.  Ny%<=&F 
  333.  A$=" 0"
  334.  A$=" "
  335. !#A$+=
  336. ~(Ny%):
  337.  Gy%<=&F 
  338.  A$+="0"
  339. "#A$+=
  340. ~(Gy%):
  341.  By%<=&F 
  342.  A$+="0"
  343. #eA$+=
  344. ~(By%):@%=c%:
  345. &2000C,2,s%,A$,
  346. (A$):
  347. &2000B,&A,s%:
  348. &2000C,2,s%,K$,
  349. (K$):
  350. &2000B,&A,s%:
  351. 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%=
  352. :Au%=&20000+&496C0:mJ%=&20000+&496C1:rJ%=&20000+&496C2:p_%=&20000+&496CC:y_%=
  353.  E%(&A,35):xy%=0:Ty%=0:n%=0:u%=0:pJ%=
  354. :K_%=
  355. :G_%=0:_y%=0:y%=
  356. B$="!Palette":A=
  357.  g_%:g_%=_%:
  358. &20027,"/<DeskCtrl$Dir>",g_%,256:K$=
  359. S(g_%):
  360. Z_:I$=
  361. M(t%,"msg.notinst"):e$=
  362. M(t%,"msg.noresA"):x$=
  363. M(t%,"msg.noresB"):L$=
  364. M(t%,"msg.nomode"):Y$=
  365. M(t%,"msg.noleaf"):s$=
  366. M(t%,"msg.nosave"):a$=
  367. M(t%,"msg.nowrite"):d$=
  368. M(t%,"msg.noreg"):q$=
  369. M(t%,"txt.none"):
  370.  eJ%,FJ%:EJ%=
  371. V("<DeskCtrl$Dir>.Sprites22"):i_%=
  372. V("<DeskCtrl$Dir>.Sprites"):FJ%=
  373. V("<DeskCtrl$Dir>.BarIcon"):
  374. I(i_%):
  375. u("deskctrl",FJ%,-7,&60000000)
  376. I(EJ%):
  377. u("deskctrl22",FJ%,-7,&60000000)
  378. 6,&A1,&8C,0
  379. ,,eJ%:
  380. `("<DeskCtrl$Dir>.Template3D",5000)
  381. `("<DeskCtrl$Dir>.Templates",&C00)
  382. :fy%=
  383. C("ProgInfo"):
  384. E(fy%,4,
  385. M(t%,"info.version")):
  386. E(fy%,9,
  387. P)+" BASIC  "+
  388. T)+" MALLOC"):
  389.  ZJ%,S$,Yy%,hJ%:
  390.  E$(35):S$=
  391. M(t%,"title.main"):
  392. q(t%,"menu.main",E$(),Yy%):
  393. e(S$,0,E$(),Yy%):
  394. Ky(0,0,fy%):S$=
  395. M(t%,"title.number"):
  396. Q_(S$,1,1):V_%=
  397. E(6):ZJ%=
  398. E(6):$V_%="":$ZJ%="a0-9":
  399. cy(1,0,4,0,V_%,ZJ%,5):
  400. hy(0,2,1):S$=
  401. M(t%,"title.col")
  402. q(t%,"menu.col",E$(),Yy%):
  403. e(S$,2,E$(),Yy%):Ty%=Yy%+1:S$=
  404. M(t%,"title.res"):
  405. &20058,1
  406. ,hJ%:
  407. q(t%,"menu.res"+
  408. (hJ%),E$(),Yy%):
  409. e(S$,3,E$(),Yy%):xy%=Yy%+1:
  410.  h%=0
  411. C("ModePicker"):
  412. h(h%)
  413. :B%=_%:!B%=
  414. F(h%):
  415. &400CB,,B%:
  416. J(h%):h%=
  417. C("ModePicker"):
  418. c(h%,B%!4,B%!8)
  419. E(h%,2,""):
  420. E(h%,3,""):
  421. F(1,L$)
  422.  W$,zJ%,qJ%,my%:
  423.  E,Z,UJ%:
  424.  c%,Ly%:
  425.  w%=0
  426. N("XOutlineWimp_Configuration")=
  427. W$,zJ%,qJ%,my%:w%=
  428. C("OutlineCtrl"):
  429. E(w%,2,W$):E=qJ%/16:c%=@%:@%=&10202FF:
  430. E(w%,5,
  431. (E)):Z=&64*((zJ%/16)/E):@%=&10201FF:
  432. E(w%,&A,
  433. (Z)):@%=c%:
  434. S(w%,16,(1
  435. my%)>0):
  436. S(w%,17,(2
  437. my%)>0):
  438. S(w%,26,(4
  439. my%)>0):UJ%=my%>>3:c%=@%:@%=&10005FF
  440. E(w%,19,
  441. (UJ%)):@%=c%:
  442. B(w%)
  443. :Ly%=
  444. ,J$,I$)
  445.  w%<>0
  446. E(w%,18,
  447. A(w%,19))))
  448.  d%=0
  449. C("Options"):
  450. B(d%)
  451. h(d%)
  452.  x%=4
  453. H(d%,x%):
  454. A(d%,4)
  455. A(d%,5)
  456. A(d%,6)
  457. A(d%,7)
  458. A(d%,8)
  459. A(d%,9)
  460. A(d%,&A)
  461. A(d%,&B)
  462. A(d%,&C)
  463. A(d%,&D)
  464.  e%=0
  465. RFe%=
  466. C("Palette"):
  467. ty:K_%=
  468. My(k%):
  469. S(e%,17,k%):
  470. B(e%):
  471. W(1):
  472.  qy%,Jy%,oJ%,ty%,I_%,l_%,Bu%:
  473.  b%=0
  474. U*b%=
  475. C("SaveBox"):
  476.  B$<>"<Wimp$Scrap>"
  477. E(b%,1,B$)
  478. E(b%,1,"!Palette")
  479.  IJ%,OJ%,oJ%:
  480. n(b%,qy%,Jy%):ty%=IJ%-(qy%/2):I_%=OJ%-(Jy%/2):
  481.  ty%<0
  482.  ty%=0
  483.  I_%<0
  484.  I_%=0
  485. V(l_%,Bu%):
  486. (ty%+qy%)>l_%
  487.  ty%=l_%-qy%
  488. c(b%,ty%,I_%):
  489. Iy(b%,1,-1)
  490.  sy%,Ry%,Zy%:
  491.  i%=0
  492. C("CMOSRAM"):
  493. B(i%)
  494. h(i%)
  495. &20006,&A1,28
  496. ,,Zy%:
  497. &20006,&A1,&8C 
  498. ,,sy%:
  499. &20006,&A1,&BC 
  500. ,,Ry%:
  501. S(i%,2,((Zy%
  502. 2)=2)):
  503. S(i%,3,((Zy%
  504. 8)=8)):
  505. S(i%,4,((sy%
  506. 1)=1)):
  507. S(i%,7,
  508. ((Ry%
  509. &80)=&80)):
  510.  yy%,W_%,F_%,P_%,E_%,M_%,jy%,Ly%:
  511.  j%=0
  512. N("XOutlineWimp_Configuration")=
  513. ,J$,I$)
  514. N("XOutlineWimp_TextureInfo")=
  515. yy%,W_%,F_%,P_%,E_%,M_%,jy%:j%=
  516. C("Textures"):
  517. x(yy%):
  518. s(W_%):
  519. Y(F_%,P_%,E_%,M_%,jy%):
  520. B(j%)
  521. :Ly%=
  522. ,J$,d$)
  523. d(oy%,T_%):
  524.  h%<>0
  525.  oy%=
  526. &600E3,E%(u%,n%)
  527.  T_%=
  528. J_(h%)
  529. y(oy%,T_%):
  530.  qy%,Jy%,Z,E:
  531.  w%<>0
  532.  oy%=
  533. &20005,"WimpFont "+
  534. A(w%,2):E=
  535. A(w%,5)):Jy%=E*16:Z=
  536. A(w%,&A)):qy%=(E*16*(Z/&64)):
  537. &20005,"WimpFontSize "+
  538. (qy%)+" "+
  539. (Jy%):
  540. Z(w%,16)=
  541. &20005,"WimpJustify 1"
  542. &20005,"WimpJustify 0"
  543. Z(w%,17)=
  544. &20005,"WimpUpArrow 1"
  545. &20005,"WimpUpArrow 0"
  546. Z(w%,26)=
  547. &20005,"WimpMiscFont 1"
  548. &20005,"WimpMiscFont 0"
  549. &20005,"WimpNewUpArrow "+
  550. A(w%,19)
  551.  T_%=
  552. J(w%):w%=0
  553. T(oy%,T_%):
  554.  d%<>0
  555.  oy%=
  556. Z(d%,4)
  557.  Ey%=1
  558. Z(d%,5)
  559.  Ey%=2
  560. Z(d%,6)
  561.  Ey%=3
  562. Z(d%,7)
  563.  Ey%=5
  564. Z(d%,8)
  565.  Ey%=4
  566. Z(d%,9)
  567.  `%=1
  568. Z(d%,&A)
  569.  `%=2
  570. Z(d%,&B)
  571.  `%=3
  572. Z(d%,&C)
  573.  `%=5
  574. Z(d%,&D)
  575.  `%=4
  576.  T_%=
  577. J(d%):d%=0
  578.  e%<>0
  579. J(e%):e%=0:
  580.  b%<>0
  581. J(b%):b%=0
  582. r(oy%,T_%):
  583.  Zy%,sy%,Ry%:
  584.  i%<>0
  585.  oy%=
  586. 6,&A1,28
  587. ,,Zy%:
  588. &20006,&A1,&8C 
  589. ,,sy%:
  590. &20006,&A1,&BC 
  591. ,,Ry%:
  592. Z(i%,2)=
  593. Zy%=Zy%
  594. :Zy%=Zy%
  595. Z(i%,3)=
  596. Zy%=Zy%
  597. :Zy%=Zy%
  598. Z(i%,4)=
  599. sy%=sy%
  600. :sy%=sy%
  601. Z(i%,7))=
  602. Ry%=Ry%
  603. :Ry%=Ry%
  604. &20006,&A2,28,Zy%:
  605. &20006,&A2,&8C,sy%:
  606. &20006,&A2,&BC,Ry%
  607.  T_%=
  608. J(i%):i%=0
  609.  j%<>0
  610. J(j%):j%=0
  611. Q(Ay%):
  612.  Wy%:u%=Ay%:
  613.  h%=0
  614.  Wy%=0
  615. Ty%-1:
  616. j(2,Wy%):
  617. i(2,Ay%):
  618. E(h%,2,
  619. I(2,Ay%)):
  620. N(Ay%):
  621.  Wy%:n%=Ay%:
  622.  h%=0
  623.  Wy%=0
  624. xy%-1:
  625. j(3,Wy%):
  626. i(3,Ay%):
  627. E(h%,3,
  628. I(3,Ay%)):
  629.  v%,h_%,a%:v%=
  630.  E%(u%,n%)=-1
  631. -a%=u%-1:
  632. (a%>=0)
  633.  E%(a%,n%)<>-1
  634. h_%=a%:v%=
  635. :a%-=1:
  636. :a%=u%+1:
  637. (a%<Ty%)
  638.  E%(a%,n%)<>-1
  639. h_%=a%:v%=
  640. :a%+=1:
  641. Q(h_%)
  642.  v%,e_%,g%:v%=
  643.  E%(u%,n%)=-1
  644. -g%=n%-1:
  645. (g%>=0)
  646.  E%(u%,g%)<>-1
  647. e_%=g%:v%=
  648. :g%-=1:
  649. :g%=n%+1:
  650. (g%<xy%)
  651.  E%(u%,g%)<>-1
  652. e_%=g%:v%=
  653. :g%+=1:
  654. N(e_%)
  655.  v%,a%,g%,H_%:H_%=
  656. :g%=0:
  657. (g%<xy%)
  658. ):a%=0:
  659. (a%<Ty%)
  660.  E%(a%,g%)=H_%
  661. N(g%):
  662. Q(a%):v%=
  663. :a%+=1:
  664. :g%+=1:
  665. x(yy%):
  666.  yy%=0
  667. E(j%,1,q$)
  668. E(j%,1,
  669. S(yy%))
  670. s(W_%):
  671.  W_%=1
  672. A(j%,2)
  673. H(j%,2)
  674. Y(F_%,P_%,E_%,M_%,jy%):
  675. L(0,45,85,F_%):
  676. L(1,45,85,P_%):
  677. L(2,45,85,E_%):
  678. L(3,45,85,M_%):
  679. L(4,45,85,jy%):
  680. L(Q_%,TJ%,YJ%,sJ%):
  681.  x%,a%,B%:a%=0:B%=_%:
  682.  x%=TJ%+(8*Q_%)
  683. TJ%+(8*Q_%)+7:!B%=
  684. F(j%):B%!4=x%:B%!&C=32:
  685. ((1<<a%)
  686. sJ%)>0
  687. B%!8=32
  688. :B%!8=0
  689. &600CD,,B%:a%+=1:
  690.  x%=YJ%+(8*Q_%)
  691. YJ%+(8*Q_%)+7:!B%=
  692. F(j%):B%!4=x%:B%!&C=32:
  693. ((1<<a%)
  694. sJ%)>0
  695. B%!8=32
  696. :B%!8=0
  697. &600CD,,B%:a%+=1:
  698.  V$,A_%:V$="<DeskCtrl$Dir>.Modes":A_%=0:b_%=&C:
  699. (A_%<>-1)
  700. (b_%=&C):
  701. &2000C,&C,V$,_%,1,A_%,35,0
  702. b_%,,,,A_%:
  703. (A_%<>-1)
  704. (_%!20=&FFA)
  705. R_(V$+"."+$(_%+24))
  706. R_(c$):
  707. &20005,"RMLoad "+c$:
  708.  s%,v%:
  709. &20008,17,"<DeskCtrl$Dir>.Choices"
  710.  v%<>1
  711. &2000D,67,"<DeskCtrl$Dir>.Choices",0
  712.  s%=0
  713. &2000C,4,s%,_%,4:Ey%=!_%:
  714. &2000C,4,s%,_%,4:`%=!_%:
  715. &2000C,4,s%,_%,4:k%=!_%:
  716. &2000D,0,s%:
  717. &2000D,&83,"<DeskCtrl$Dir>.Choices",0
  718.  s%=0
  719. !_%=Ey%:
  720. &2000C,2,s%,_%,4:!_%=`%:
  721. &2000C,2,s%,_%,4:!_%=k%:
  722. &2000C,2,s%,_%,4:
  723. &2000D,0,s%:
  724. &20008,18,"<DeskCtrl$Dir>.Choices",&FFF:
  725. &2001E,4,"PaletteUtil":
  726. &2001E,3,"PaletteUtil":
  727. &600DE,"Desktop"
  728.  a%,g%:
  729.  G$,D$,H$,N$:
  730.  Ky%,Hu%,Wy%:
  731.  Ly%:
  732.  g%=0
  733. xy%-1:H$="m.":N$=
  734. I(3,g%):Wy%=1:
  735. N$,Wy%,1)>=" "):
  736. N$,Wy%,1)<>" "
  737. N$,Wy%,1):Wy%+=1
  738. :Wy%+=1
  739. d(t%,H$,G$)
  740. UKy%=1:
  741.  a%=0
  742. Ty%-1:D$="":
  743. G$,Ky%,1)>=" ")
  744. G$,Ky%,1)<>","):
  745. G$,Ky%,1)<>":"
  746. G$,Ky%,1):Ky%+=1
  747. :Ky%+=1
  748. :Ky%+=1:E%(a%,g%)=
  749. (D$):
  750. F(1,e$+N$+x$):
  751.  a%=0
  752. Ty%:E%(a%,g%)=0:
  753. _y(Vy%):
  754.  c%:c%=@%:@%=&10005FF:
  755. E(e%,3,
  756. B(Fy%))):@%=c%:
  757. t(_y%):
  758. Y_(Vy%):
  759.  c%:c%=@%:@%=&10005FF:
  760. E(e%,8,
  761. B(Py%))):@%=c%:
  762. t(_y%):
  763. Ry(Vy%):
  764.  c%:c%=@%:@%=&10005FF:
  765. E(e%,&D,
  766. B(Cy%))):@%=c%:
  767. t(_y%):
  768. ty:Fy%=
  769. L(e%,4,6,5,0,&FF,1):Py%=
  770. L(e%,9,&B,&A,0,&FF,1):Cy%=
  771. L(e%,&E,16,&F,0,&FF,1):
  772. Z(Fy%):
  773. Z(Py%):
  774. Z(Cy%):
  775. W(a%):
  776.  c%,z%,x_%,B%:_y%=a%:B%=_%:
  777.  a%<=&F 
  778. uc%=@%:@%=&10005FF:
  779. E(e%,44,
  780. (a%)):@%=c%:!B%=
  781. F(e%):B%!4=42:B%!8=((a%
  782. &F)<<28)
  783. 32:B%!&C=-&10000000
  784. &600CD,,B%
  785. :!B%=
  786. F(e%):B%!4=42:B%!8=0:B%!&C=32:
  787. &600CD,,B%:
  788. E(e%,44,"Border")
  789. E(e%,44,"Mouse1")
  790. E(e%,44,"Mouse2")
  791. E(e%,44,"Mouse3")
  792. :z%=_%:
  793. &600E5,,z%,&45555254
  794. &600E5,,z%,0
  795. :x_%=!(z%+(4*a%)):
  796. M(Fy%,(x_%>>8)
  797. &FF):
  798. M(Py%,(x_%>>16)
  799. &FF):
  800. M(Cy%,(x_%>>24)
  801. &FF):
  802. t(a%):
  803.  z%,By%,Gy%,Ny%:By%=
  804. A(e%,3)):Gy%=
  805. A(e%,8)):Ny%=
  806. A(e%,&D)):z%=_%:
  807. &600E5,,z%,&45555254
  808. &600E5,,z%,0
  809. :?(z%+(4*a%)+3)=Ny%:?(z%+(4*a%)+2)=Gy%:?(z%+(4*a%)+1)=By%:?(z%+(4*a%))=0:
  810. &600E4,,z%:
  811.  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
  812. mz%!60=-&F500000:z%!64=&70707000:z%!68=-&F100000:z%!72=-&70000000:z%!76=&F000:
  813. &400E4,,z%:
  814. W(_y%):
  815. My(DJ%):k%=DJ%:
  816.  DJ%=
  817. BFy%!24=16:Py%!24=16:Cy%!24=16:Fy%!20=&F0:Py%!20=&F0:Cy%!20=&F0
  818. :Fy%!24=1:Py%!24=1:Cy%!24=1:Fy%!20=&FF:Py%!20=&FF:Cy%!20=&FF
  819.  By%,Gy%,Ny%:By%=
  820. B(Fy%):Gy%=
  821. B(Py%):Ny%=
  822. B(Cy%):By%=By%>>4:By%=By%<<4:Gy%=Gy%>>4:Gy%=Gy%<<4:Ny%=Ny%>>4:Ny%=Ny%<<4:
  823. M(Fy%,By%):
  824. M(Py%,Gy%):y%=
  825. M(Cy%,Ny%):y%=
  826.  N_%,f%:f%=
  827. Q:N_%=_%:
  828. /!N_%=20:N_%!&C=0:N_%!16=9:
  829. &400E7,17,N_%,0
  830. &60750:
  831. ((f%=8)
  832. (f%=1)
  833. (f%=2))
  834. &600D1,-1,-&3B9ACA00,-&3B9ACA00,&3B9ACA00,&3B9ACA00:
  835.  q%,f%:f%=
  836. Q:q%=_%:
  837. ((f%=8)
  838. (f%=1)
  839. (f%=2))
  840. (e%<>0)
  841. 2!q%=
  842. F(e%):q%!4=42:q%!8=0:q%!&C=0:
  843. &600CD,,q%
  844. my(U$,Iy%,`J%,Wu%):
  845.  Iy%=0
  846.  Iy%=512:
  847.  Iy%<256Iy%=256
  848. <J$=U$:_%=
  849. E(Iy%):
  850. &400C0,`J%,&4B534154,U$,Wu%
  851. t_%,c_%:
  852. u(f$,Uu%,Su%,kJ%):
  853.  B%,k_%:k_%=&C:B%=
  854. 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:
  855. &400C2,kJ%,B%
  856. C(X$):
  857.  D%:D%=
  858. r(X$)):!(!D%+64)=hy%:
  859. py(D%):=D%
  860. J(Xy%):
  861. Dy(Xy%):
  862. Z(Xy%-16):
  863. q(wJ%,z$,
  864.  E$(),
  865.  iJ%):
  866.  Z$,Ay%,ay%,Sy%:Z$=
  867. M(wJ%,z$):ay%=0:Sy%=0:Ay%=0:
  868.  Sy%<
  869. (Z$):
  870. :Sy%+=1:
  871. "/_@<>,",
  872. Z$,Sy%,1))
  873. (Sy%=
  874. (Z$)):
  875. "/_@<>,",
  876. Z$,Sy%,1))
  877. (Sy%<
  878. (Z$)):Sy%+=1:
  879.  Ay%=0
  880. E$(Ay%)=
  881. Z$,ay%,Sy%-ay%-2)
  882.  Sy%>=
  883. E$(Ay%)=
  884. Z$,ay%,Sy%-ay%+1)
  885. :E$(Ay%)=
  886. Z$,ay%,Sy%-ay%-1)
  887. :ay%=Sy%:Ay%+=1:
  888. :iJ%=Ay%-1:
  889. m(Xy%,x%,o%):
  890.  ny%,uy%,S_%,C_%:!_%=
  891. F(Xy%):
  892. &400CB,,_%:ny%=_%!4:uy%=_%!16:!_%=
  893. F(Xy%):_%!4=x%:
  894. &400CE,,_%:S_%=_%!16:C_%=_%!20:
  895. Cy(o%,(S_%+ny%),(C_%+uy%)):
  896. Xy(Xy%,x%,dJ%):
  897.  ny%,uy%,S_%,C_%:!_%=
  898. F(Xy%):
  899. &400CB,,_%:ny%=_%!4:uy%=_%!16:!_%=
  900. F(Xy%):_%!4=x%:
  901. &400CE,,_%:S_%=_%!16:C_%=_%!20:
  902. &400D4,,dJ%,(S_%+ny%),(C_%+uy%):by%=dJ%:py%=S_%+ny%:ly%=C_%+uy%:
  903. S(Xy%,x%,Xu%):
  904.  Xu%=
  905. A(Xy%,x%)
  906. H(Xy%,x%)
  907. `y:`y%=0:iy%=0:Uy%=0:wy%=0:
  908. ly(W$):
  909. &60091,0,0,&280000,0,0,0,0
  910. ,,,`y%,,iy%:Uy%=
  911. E(`y%):wy%=
  912. E(iy%):
  913. (Uy%=0)
  914. (wy%=0)
  915. &60091,0,Uy%,&280000,`y%,wy%,iy%,W$:
  916. Ty(W$):
  917. &60091,0,Uy%,&280000,`y%,wy%,iy%,W$:
  918.  Uy%<>0
  919. Z(Uy%):Uy%=0
  920.  wy%<>0
  921. Z(wy%):wy%=0
  922. _(Nu%):
  923.  B_%:
  924. &600A0,0,Uy%,Nu%,_%,50:B_%=2:
  925. (?(_%+B_%)<>92)
  926. (B_%<50):B_%+=1:
  927. :?(_%+B_%)=0:=
  928. S(_%+2)
  929. X:=Uy%
  930. I(Zu%,jJ%):
  931.  A$,cJ%,O_%:cJ%=!(r%+(4*(Zu%+1))):O_%=(cJ%+28)+(24*jJ%):
  932. (O_%!8
  933. 256)>0
  934. S(O_%!&C)
  935. S(O_%+&C):=A$
  936. d(Qu%,z$,
  937.  r$):
  938. M(Qu%,z$):=
  939. F(Du%,w$):
  940.  B%:B%=_%:!B%=E%:$(B%+4)=w$:?(B%+4+
  941. (w$))=0:
  942. &400DF,B%,1,J$:
  943.  D_%:
  944. &20035,-1,9
  945. ,,D_%:D_%=1<<D_%:=D_%
  946. N(g$):
  947.  V%,CJ%:
  948. &20039,,g$
  949. @    CJ%=
  950. :CJ%=
  951. :=CJ%
  952. V_(M%,T%,P%):
  953.  R%,I%,Q%:
  954. M%=M%
  955. -2:T%=0
  956. ey(G_%):G_%=0
  957.  T%=0
  958. &400C7,M%,_%,,P%
  959. Q%:Q%=Q%+T%:
  960. &400E1,M%,_%,Q%,P%
  961. :I%=_%:
  962. xy(I%):
  963. E_(I%)
  964. K_(I%)
  965.  I%!&C=-2
  966. Q%=I%!8:
  967. S_(!I%)
  968. jy(I%)
  969. B_(I%)
  970. :Q%=0:
  971.  K_%=
  972. w(I%):
  973.  Q%<>0
  974. G_%=Oy%
  975.  Q%=0
  976. r_(I%)
  977. F_(I%)
  978. fy(I%)
  979. C_(I%)
  980. 17,18:
  981. z(I%!16)
  982. z_(I%)
  983. D_(I%)
  984. a(I%!16)
  985. Uy(I%)
  986. w(B%):
  987.  W%,I%,S%,F%,V%,X%,Jy%,Y%:
  988. ((B%!8)
  989. gSW%=
  990. H(B%!&C):I%=B%!16:S%=R_%:F%=
  991.  W%=S%!4
  992. (I%=S%!8
  993. I%=S%!&C 
  994. I%=S%!40)
  995. G_(Oy%):F%=
  996. :V%=!B%:!B%=B%!&C:
  997. &400E0,,B%:V%=V%-B%!4:
  998. &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:
  999. M(S%,V%):Oy%=S%:!B%=!(W%-8):B%!4=S%!8:
  1000. &400CE,,B%
  1001. i^X%=B%!8:V%=B%!16:Jy%=B%!&C:Y%=B%!20:
  1002. Ey(W%,X%,Jy%):
  1003. Ey(W%,V%,Y%):
  1004.  X%,Jy%,V%-X%,Y%-Jy%
  1005. :S%=!S%:
  1006. Sy:R_%=0:Oy%=0:
  1007.  W%,S%,V%,X%,B%:S%=Oy%:W%=S%!4:B%=_%:
  1008. &400CF,,B%:
  1009. ((B%!8)
  1010.  Oy%=0:
  1011. V(X%,V%):
  1012. 0,0,X%,V%:
  1013. V%=!B%:!B%=!(W%-8):
  1014. &400E0,,B%:V%=V%-B%!4:
  1015. &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:
  1016. M(S%,V%):
  1017. Ay(M%,N%):
  1018.  P%:P%=!(r%+4*(M%+1))+36+N%*24:!P%=!P%
  1019. -&400001:
  1020. Fy(M%,N%):
  1021.  P%:P%=!(r%+4*(M%+1))+36+N%*24:!P%=(!P%
  1022. -&400001)
  1023. &400000:
  1024. c_(Y%,S%):
  1025.  P%,D%,A%,B%,C%,E%,F%,G%,H%,I%,J%,K%,L%,M%,N%,O%,Q%,R%,T%,U%,V%,Z%,X%,W%:
  1026.  v$,BJ%,PJ%,uJ%,nJ%,yJ%,gJ%,tJ%:v$="Dynamic memory allocation routines, 
  1027.  Ian Palmer, 1993":
  1028.  Dy%559:SJ%=Y%:r_%=S%:
  1029. &400EC,-1,-1
  1030. zy%:zy%+=&8000
  1031.  Z%=0
  1032. 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
  1033. .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
  1034. 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%
  1035. 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
  1036. .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%
  1037. .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%
  1038. 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:]:
  1039. c(S%):
  1040.  M%,L%,A%,X%,Y%,Z%:M%=0:
  1041. y9A%=
  1042.  Dy%+16:L%=!p%:
  1043.  L%<>0
  1044.  S%-=!(L%-4)-4:!!Z_%=!L%
  1045.  S%<(
  1046. -&800)
  1047.  M%S%-1:!M%=S%-4:
  1048.  L%<>0
  1049.  M%=L%-4:!M%=S%+!(L%-4)
  1050. :A%=zy%:
  1051.  Dy%+16:L%=!p%:
  1052.  L%<>0
  1053.  S%-=!(L%-4)-4:!(!Z_%)=!L%
  1054. &400EC,-1,-1
  1055. X%,Y%,Z%:
  1056.  S%<Z%
  1057. &400EC,X%+S%,Y%
  1058. Z%:M%=X%+&8000:!M%=Z%-X%-4:zy%=Z%+&8000:
  1059.  L%<>0
  1060.  M%=L%-4:!M%=Z%-X%+!(L%-4)
  1061.  M%<>0
  1062.  M%+=4
  1063.  A%,B%,L%,C%,S%,N%,D%:A%=zy%:
  1064.  Dy%+16:B%=!p%:C%=!Z_%:B%-=4:L%=4+!B%:D%=(L%
  1065.  q_%)*q_%:N%=L%-D%:S%=zy%-D%-&8000:
  1066. &400EC,S%,-1
  1067. S%:zy%=S%+&8000:
  1068.  N%>7
  1069. !B%=N%-4:
  1070. !C%=0
  1071. iy(Iy%):Gu%=
  1072. E(Iy%):
  1073. O(P$,Cu%):
  1074.  Iy%,ey%,w_%:
  1075. &41500,,P$
  1076. ,,Iy%:
  1077.  Cu%=0
  1078. 30,6,,,21+
  1079. ,,ey%:w_%=0
  1080. :ey%=
  1081. E(21+
  1082. (P$)):w_%=
  1083. E(Iy%)
  1084. :$(ey%+20)=P$:ey%!16=w_%:
  1085. &41501,ey%,ey%+20,w_%:=ey%
  1086. M(q%,t$):
  1087.  dy%:
  1088. &41502,q%,t$,0,0,0,0,0,0
  1089. ,,dy%:=
  1090. S(dy%)
  1091. D(F%,E%,E$):
  1092.  B%,R%:B%=_%:!B%=E%:$(B%+4)=E$:?(B%+4+
  1093. (E$))=0:
  1094. &400DF,B%,1,J$:
  1095. &400DF,B%,3,J$
  1096.  R%=2
  1097. oy(E%):
  1098.  A%:My%=
  1099. E(4*E%):E%=
  1100. P(My%):
  1101.  A%=0
  1102. 4:!(My%+A%)=0:
  1103.  A%(&a):
  1104.  Iu%16:
  1105.  I%:U_%=0:hy%=0:a_%=
  1106. E(256):
  1107.  I%=0
  1108. &FF:a_%?I%=0:
  1109. ry(N%):
  1110.  A%:::r%=
  1111. E((N%+1)*4):by%=0:py%=0:ly%=0:!r%=N%:
  1112.  A%=1
  1113. N%:!(r%+4*A%)=0:
  1114. M_:z_%=0:C$="":__%=0:vy%=0:Y_%=
  1115. :_%!0=1:_%!4=2:_%!8=3:_%!&C=5:_%!16=6:_%!20=7:_%!24=&80142:_%!28=&80144:_%!32=&80145:_%!36=0:
  1116. ay(_%):
  1117. z(HJ%):
  1118. 1,2,3,5,6,&80144,&80145:=
  1119. z_(q%):
  1120.  Lu%,Iy%,HJ%,XJ%:?(q%+!q%)=0:
  1121.  q%!16
  1122. D(q%!40,
  1123. q%!8<>vy%
  1124. z(q%+44,"<Wimp$Scrap>"):q%!36=-1:q%!&C=q%!8:q%!16=2:!q%=60:
  1125. &400E7,17,q%,q%!4
  1126.  q%!&C=vy%
  1127. fq%!36=__%:q%!&C=q%!8:q%!16=3:
  1128. &400E7,18,q%,q%!20,q%!24:
  1129. S(q%+44),z_%,(q%!36<>-1)):vy%=q%!8:
  1130.  q%!4<>c_%
  1131. D(q%!40,
  1132. Gq%!&C=q%!8:q%!16=4:
  1133. &400E7,17,q%,q%!4:
  1134. S(q%+44)<>"<Wimp$Scrap>"
  1135. S(q%+44),q%!40,XJ%):
  1136.  XJ%=
  1137. 5,"Remove <Wimp$Scrap>"
  1138. D(q%!40,
  1139. @q%!&C=q%!8:q%!16=4:
  1140. &400E7,17,q%,q%!4:
  1141. S(q%+44),q%!40,
  1142. &80145:
  1143.  q%!&C 
  1144. a(HJ%):
  1145. 3,7,&80142:=
  1146. Uy(q%):
  1147.  Ly%:
  1148.  q%!16
  1149.  q%!8=vy%
  1150. S(q%+44)="<Wimp$Scrap>"
  1151. 5,"Remove <Wimp$Scrap>"
  1152. :Ly%=
  1153. ,"Error from "+J$,"Data transfer failed: Receiver died")
  1154. F_(q%):
  1155.  Qy%:
  1156.  t_%>=300
  1157. 6,&A1,28
  1158. ,,Qy%:Qy%=((Qy%
  1159. 2)=2)
  1160. :Qy%=
  1161. &42401
  1162. &400D0,,-1
  1163. :Y_%=
  1164. C$,"."):C$=
  1165. C$,".")+1):
  1166. &400CF,,_%:_%!20=_%!&C:_%!24=_%!16:_%!28=!_%:_%!32=_%!4:_%!36=__%:_%!40=z_%:
  1167. z(_%+44,C$):_%!&C=0:_%!16=1:!_%=44+4*((
  1168. (C$)+4)
  1169. &400E7,18,_%,_%!20,_%!24:vy%=_%!8:
  1170. Py(q%):
  1171. &41504,q%:
  1172.  q%!16>0
  1173. Z(q%!16):
  1174. Z(q%)
  1175. 30,7,,q%
  1176. S(P%):
  1177.  M$:M$="":
  1178. ?P%>31M$+=
  1179. (?P%):P%+=1:
  1180. F(W%):=!(W%-8)
  1181. s:=by%
  1182.  by%=-1
  1183. CM%=!(r%+4*(by%+1)):
  1184. &400CF,,_%:
  1185. (_%!8
  1186. &400D4,,M%,py%,ly%
  1187. E(W%,I%,F$):
  1188.  f_%,u_%,WJ%,GJ%,X_%:!_%=!(W%-8):_%!4=I%:
  1189. &400CE,,_%:
  1190. (_%!24
  1191. (_%!24
  1192. z(_%!28,
  1193. F$,_%!36))
  1194. &400D3,,_%+&80:f_%=_%!&80:u_%=_%!&84:WJ%=_%!&88:GJ%=_%!&8C:X_%=_%!&94:
  1195.  f_%=W%!-8
  1196. u_%=I%
  1197.  X_%>
  1198.  X_%=
  1199. &400D2,f_%,u_%,WJ%,GJ%,-1,X_%
  1200. :_%!8=0:_%!&C=0:
  1201. &400CD,,_%:
  1202. H(H%):
  1203.  E%,A%,F%,P%:E%=
  1204. P(My%):F%=-1:
  1205.  A%=0
  1206. 4:P%=My%!A%:
  1207.  P%<>0
  1208. !(P%-8)=H%
  1209.  F%=P%
  1210. A(W%,I%):!_%=!(W%-8):_%!4=I%:
  1211. &400CE,,_%:
  1212. (_%!24
  1213. (_%!24
  1214. S(_%!28)
  1215. M(S%,V%):
  1216.  B%,X%,F%,T%,Jy%,Y%:
  1217.  V%<S%!16
  1218.  V%=S%!16:
  1219.  V%>S%!20V%=S%!20
  1220.  V%=S%!28
  1221. S%!28=V%:B%=_%:!B%=!((S%!4)-8):B%!4=S%!&C:
  1222. &400CE,,B%:
  1223. &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):
  1224.  X%<0X%=0
  1225. +X%+=S%!32:
  1226.  X%>=F%
  1227.  T%=X%:
  1228.  T%=F%:F%=X%
  1229. 3B%!16=X%:
  1230. &400C2,,B%+4
  1231. X%:S%!&C=X%:
  1232.  X%<S%!40
  1233. B%!4=S%!40:
  1234. &400CE,,B%:B%!40=!B%:B%!44=X%:
  1235. &400CE,,B%+40:B%!4=!B%:
  1236. &400C2,,B%+4
  1237. X%:S%!40=X%:B%!44=!B%:
  1238. &400C2,,B%+44
  1239. X%:S%!&C=X%
  1240. &400D1,!B%,F%-2,Jy%,T%+2,Y%:
  1241. H_(S%,V%):
  1242. H(W%,I%):!_%=!(W%-8):_%!4=I%:_%!8=0:_%!&C=&200000:
  1243. &400CD,,_%:
  1244. Z(W%,I%):!_%=!(W%-8):_%!4=I%:
  1245. &400CE,,_%:
  1246. (_%!24
  1247. &200000)
  1248. A(W%,I%):!_%=!(W%-8):_%!4=I%:_%!8=&200000:_%!&C=&200000:
  1249. &400CD,,_%:
  1250. Yy(P$,gy%,Iy%,Eu%,x%):
  1251.  Qy%,MJ%,m_%,AJ%,j_%,LJ%,QJ%,Q$:!_%=
  1252. F(Eu%):
  1253. &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):
  1254. V(LJ%,QJ%):
  1255.  t_%>=300
  1256. 6,&A1,28
  1257. ,,Qy%:Qy%=((Qy%
  1258. 2)=2)
  1259. :Qy%=
  1260. T_%!0=MJ%:_%!4=AJ%:_%!8=m_%:_%!&C=j_%:Q$="file_":
  1261.  gy%<256Q$+="0":
  1262.  gy%<16Q$+="0"
  1263. &Q$+=
  1264. ~(gy%):
  1265. &42400,&C5,1,Q$,_%,0
  1266. :!_%=0:_%!4=5:_%!8=MJ%:_%!&C=AJ%:_%!16=m_%:_%!20=j_%:_%!24=0:_%!28=0:_%!32=LJ%:_%!36=QJ%:
  1267. &400D0,,_%
  1268. :z_%=gy%:C$=P$:__%=Iy%:Y_%=
  1269.  A%,B%:
  1270.  Dy%+20:A%=!p%:
  1271.  A%+=(
  1272. -&800):
  1273. &400EC,-1,-1
  1274. ,,B%:A%+=B%
  1275.  NJ%,JJ%,v_%:
  1276. 53,-1,4
  1277. ,,NJ%:
  1278. 53,-1,5
  1279. ,,JJ%:v_%=
  1280.  NJ%=JJ%
  1281.  v_%=
  1282. I(Mu%):hy%=Mu%:
  1283. V(P$):
  1284.  dy%,gy%,VJ%,d_%:
  1285. 8,5,P$
  1286. gy%,,VJ%,,d_%;oy%:
  1287.  gy%=1
  1288. &FFF00)=&FF900
  1289. 9dy%=
  1290. E(d_%+4):!dy%=d_%+4:
  1291. 46,265,dy%:
  1292. 46,266,dy%,P$
  1293. 1,"'"+P$+"' is not a sprite file"
  1294. :=dy%
  1295. `(O$,E%):
  1296.  C%,A%,D%,N%,T%,F%,Z%,H%,I%:C%=
  1297.  C%=0
  1298. D(1,&D6,"Can't open template file "+O$)
  1299.  A%=0
  1300. &F:D%=
  1301. :T%=0:Z%=
  1302. E(E%):
  1303.  A%=0
  1304. 23:Z%?A%=
  1305. E(32):!N%=T%:T%=N%:N%!4=Z%!4:
  1306.  A%=0
  1307. &B:F%=?(Z%+&C+A%):
  1308.  F%=0
  1309. ?(Z%+A%+&C)=&D
  1310. :?(Z%+24)=&D:$(N%+16)=
  1311. Y($(Z%+&C))
  1312. !Z%=0:
  1313. #C%:D%=T%:A%=Z%:H%=
  1314. E(256):
  1315. &400D9,,O$:
  1316.  I%=0
  1317. &FF:H%?I%=0:
  1318. E(D%!4):D%!8=N%:
  1319. &400DB,,N%,A%,A%+E%,H%,$(D%+16),0
  1320. ,,C%:F%=4+C%-A%:C%=
  1321. E(F%):D%!&C=C%:
  1322. &400DB,,N%,C%,C%+F%,H%,$(D%+16),0:
  1323. !D%=0
  1324. !D%=U_%:U_%=T%:D%=0:
  1325.  D%=!D%
  1326.  I%=0
  1327.  H%?I%
  1328.  a_%?I%+=1
  1329. :N%!64=hy%:I%=N%!84:
  1330.  I%>0:
  1331. (!(N%+&68+32*I%)
  1332. 259)=258
  1333. !(N%+&70+32*I%)=hy%
  1334. :I%-=1:
  1335. &400DA:
  1336. Z(Z%):
  1337. Z(H%):
  1338. e(F$,N%,A$(),S%):
  1339.  J_%,ky%,A%,B%,C%,P%,M%,o%,E$:N%+=1:o%=!(r%+N%*4):
  1340.  o%=0
  1341. E(32+24*(S%+1)):!(r%+N%*4)=o%
  1342. P(o%)<(32+24*(S%+1))
  1343. w(o%,32+24*(S%+1)):!(r%+N%*4)=o%
  1344. :$o%=F$:o%?
  1345. (F$)=0:o%!&C=&70207:o%!16=&AC:o%!20=44:o%!24=0:M%=
  1346. (F$):
  1347.  A%=0
  1348. S%:E$=A$(A%):B%=0:C%=-1:P%=o%+28+A%*24:ky%=7:J_%=33:
  1349. E$)="@"
  1350.  B%=B%
  1351. 8:E$=
  1352. E$):ky%=3:J_%=&400021
  1353. E$)="/"
  1354.  B%=B%
  1355. 1:E$=
  1356. E$)="_"
  1357.  B%=B%
  1358. 2:E$=
  1359.  A%=S%
  1360.  B%=B%
  1361. E$)="<"
  1362. B%=B%
  1363. 4:!P%=B%:P%!4=C%:P%!8=(ky%
  1364. &FF)*&1000000
  1365. J_%:E$=
  1366. E$):B%=
  1367. E$,">"):C%=
  1368. E$,B%+1)):E$=
  1369. E$,B%-1):$C%=E$:P%!&C=C%:P%!16=-1:P%!20=&FF
  1370. E$)=">"
  1371. |!P%=B%
  1372. 16:P%!8=(ky%
  1373. &FF)*&1000000
  1374. J_%:E$=
  1375. E$):B%=
  1376. E$,"<"):C%=
  1377. E$,B%+1)):C%=!(r%+4*C%):P%!4=C%:E$=
  1378. E$,B%-1):$(P%+&C)=E$
  1379. :!P%=B%:P%!4=C%:P%!8=(ky%
  1380. &FF)*&1000000
  1381. J_%:$(P%+&C)=E$:?(P%+&C+
  1382. (E$))=0
  1383. :o%!16=16*(M%+1):
  1384. Ky(M%,N%,S%):
  1385.  P%:P%=!(r%+4*(M%+1)):!(P%+32+N%*24)=!(S%-8):
  1386. Q_(F$,M%,N%):
  1387.  P%,A%:P%=!(r%+4*(M%+1)):
  1388.  P%=0
  1389.     %P%=
  1390. E(32+24*N%):!(r%+4*(M%+1))=P%
  1391. P(P%)<(32+24*N%)
  1392. w(P%,32+24*N%):!(r%+4*(M%+1))=P%
  1393. :$P%=F$:P%?
  1394. (F$)=0:P%!&C=&70207:P%!16=16*(1+
  1395. (F$)):P%!20=44:P%!24=0:
  1396.  A%=0
  1397. N%-2:!(P%+28+A%*24)=0:
  1398. :!(P%+4+N%*24)=&80:
  1399. E(A%):
  1400.  M%,S%:S%=A%:A%=&C+(A%
  1401. 16)*16:
  1402.  A%<S%
  1403.  A%+=16
  1404.  Dy%:M%=!p%:
  1405.  M%=0
  1406. c(A%+4)
  1407.  M%<>0
  1408.  S%=!(M%-4):
  1409.  S%-A%>&F 
  1410. !(M%-4)=A%:
  1411. Zy(M%+A%,S%-A%)
  1412.  M%=0
  1413. &B,"Can't allocate memory"
  1414. cy(M%,N%,W%,F%,B%,V%,L%):
  1415.  P%:P%=!(r%+4*(M%+1)):
  1416.  P%=0
  1417. 0,"Menu number "+
  1418. (M%)+" undefined"
  1419. !(P%+28+N%*24)=(!(P%+28+N%*24)
  1420. 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%):
  1421.  W%>P%!16
  1422.  P%!16=W%
  1423. hy(M%,N%,S%):
  1424.  P%:P%=!(r%+4*(M%+1)):!(P%+28+N%*24)=!(P%+28+N%*24)
  1425. 16:!(P%+32+N%*24)=!(r%+4*(S%+1)):
  1426. h(W%):
  1427.  B%:B%=_%:!B%=!(W%-8):
  1428. &400CB,,B%:
  1429. &400C5,,B%:
  1430. c(W%,X%,Y%):
  1431.  qy%,Jy%,B%:B%=_%:!B%=!(W%-8):
  1432. &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%:
  1433. &400C5,,B%:
  1434. B(W%):
  1435.  X%,Y%,H%,V%:
  1436. n(W%,H%,V%):
  1437. V(X%,Y%):
  1438. c(W%,(X%-H%)
  1439. 2,(Y%-V%)
  1440. U(C%,F$,E$):
  1441.  B%,R%,F%:B%=_%:F%=17:
  1442.  F%=19
  1443. >!B%=0:$(B%+4)=E$:?(B%+4+
  1444. (E$))=0:
  1445. &400DF,B%,F%,F$
  1446. ,R%:=R%
  1447. n(W%,
  1448.  Y%):
  1449.  B%:B%=_%:!B%=!(W%-8):
  1450. &400CB,,B%:X%=B%!&C-B%!4:Y%=B%!16-B%!8:
  1451.  Y%):
  1452.  F%,P%:
  1453. 53,-1,4
  1454. ,,F%:
  1455. 53,-1,&B 
  1456. ,,P%:X%=P%<<F%:
  1457. 53,-1,5
  1458. ,,F%:
  1459. 53,-1,&C 
  1460. ,,P%:Y%=P%<<F%:
  1461. Iy(W%,I%,X%):
  1462.  X%=-1
  1463. A(W%,I%))
  1464. &400D2,!(W%-8),I%,0,0,-1,X%:
  1465. J_(W%):!_%=!(W%-8):
  1466. &400C6,,_%:
  1467. j(M%,N%):
  1468.  P%:P%=!(r%+4*(M%+1))+28+N%*24:!P%=!P%
  1469. i(M%,N%):
  1470.  P%:P%=!(r%+4*(M%+1))+28+N%*24:!P%=!P%
  1471. B(S%):=S%!28
  1472. L(W%,B%,S%,R%,L%,H%,J%):
  1473.  N%,Q%:Q%=_%:N%=
  1474. E(44):!N%=R_%:R_%=N%:
  1475.  J%<1J%=1
  1476. 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%:
  1477. &400CE,,Q%:N%!32=Q%!8:N%!36=Q%!16:N%!40=R%:=N%
  1478. Z(A%):
  1479.  Dy%+4:L%=!p%:
  1480. (L%+!(L%-4))=zy%
  1481. (4+!(L%-4))>=q_%
  1482. e(P%):
  1483.  W%:W%=
  1484. E(20):!W%=&76C0000:W%!4=0:W%!8=0:W%!&C=0:W%!16=P%:=W%+16
  1485. r(X$):
  1486.  F%,P%:X$=
  1487. Y(X$):F%=0:P%=U_%:
  1488. (F%):
  1489. $(P%+16)=X$
  1490.  F%=P%!8
  1491. P%=!P%:
  1492. py(D%):
  1493.  W%,A%,E%,F%:
  1494. !(D%-8)<>0
  1495. D(1,0,"Trying to create a window that's already there")
  1496. &400C1,,!D%
  1497. W%:!(D%-8)=W%:E%=
  1498. P(My%):F%=-1:
  1499.  A%=0
  1500.  My%!A%=0
  1501.  F%=A%
  1502.  F%=-1
  1503. w(My%,E%+16):F%=E%:
  1504.  A%=E%
  1505. E%+&F 
  1506. 4:My%!A%=0:
  1507. My%!F%=D%:
  1508. Dy(W%):
  1509.  E%,A%:
  1510. (!(W%-16)
  1511. -65536)<>&76C0000
  1512. D(1,0,"Attempt to delete invalid window")
  1513. /2E%=
  1514. P(My%):
  1515.  A%=0
  1516.  W%=My%!A%
  1517.  My%!A%=0
  1518. :!_%=!(W%-8):
  1519. &400C3,,_%:!(W%-8)=0:
  1520. Cy(M%,X%,Y%):by%=M%:py%=X%:ly%=Y%:M%=!(r%+4*(M%+1)):
  1521. &400D4,,M%,X%,Y%:
  1522. E_(I%):
  1523. &400C5,,I%:
  1524. S_(X%):
  1525.  Y%,M%:
  1526. $+" at line "+
  1527. 48M%=
  1528. q:Y%=96+
  1529. f(M%):X%-=16+(
  1530. x(M%)
  1531. Cy(M%,X%,Y%):
  1532. Ey(W%,
  1533.  Y%):
  1534.  B%:B%=_%:!B%=!(W%-8):
  1535. &400CB,,B%:X%=X%-B%!20+B%!4:Y%=B%!16-B%!24+Y%:
  1536. P(P%):=!(P%-4)
  1537. ay(M%):
  1538. &400F6,M%:
  1539. z(P%,M$):$P%=M$:?(P%+
  1540. (M$))=0:
  1541. &400D4,,-1:
  1542. Y(M$):
  1543.  T$,A%,C%,L%:L%=
  1544. (M$):T$="":
  1545.  L%=0
  1546.  A%=1
  1547. L%:C%=
  1548. M$,A%,1)):
  1549.  C%>64
  1550. C%<91
  1551.  C%+=32
  1552. (C%):
  1553.  P%,N%):
  1554.  A%,B%,C%:
  1555.  P%=0
  1556. E(N%):
  1557. >5C%=!(P%-4):B%=N%:N%=&C+(N%
  1558. 16)*16:
  1559.  N%<B%
  1560.  N%+=16
  1561.  N%<=C%
  1562. (C%-N%)>&F 
  1563. !(P%-4)=N%:
  1564. Zy(P%+N%,C%-N%)
  1565. :A%=P%+C%+4:
  1566.  Dy%+8:B%=!p%:A%=0:
  1567.  B%<>0
  1568.  B%=!B%:A%=!(B%-4)
  1569.  B%<>0
  1570. C%+A%+4>=N%
  1571. !!p%=!B%:!(P%-4)=C%+A%+4
  1572. :A%=C%:C%=
  1573. E(N%):
  1574.  C%<>0
  1575. B%=P%:
  1576.  Dy%+&C:
  1577. Z(P%):P%=C%
  1578. &B,"Can't allocate memory"
  1579. Zy(A%,L%):L%=(L%
  1580. 16)*16:
  1581.  L%>0
  1582. !A%=L%-4:A%+=4:
  1583.  Dy%+4
  1584. f(N%):
  1585.  A%,H%,P%:N%+=1:P%=!(r%+4*N%):H%=0:A%=-1:
  1586.  A%+=1:H%+=44:
  1587. (!(P%+A%*24+28)
  1588.  H%+=22
  1589. (!(P%+A%*24+28)
  1590. &80):=H%
  1591. x(N%):
  1592.  P%:P%=!(r%+(N%+1)*4):=P%!16
  1593.