home *** CD-ROM | disk | FTP | other *** search
/ Archive Magazine 1995 / ARCHIVE95.iso / text / hints / volume_02 / issue_12 < prev   
Text File  |  1995-02-16  |  34KB  |  1,257 lines

  1. Å   Archive Bulletin Board Ö This monthæs password is öARCAMò Ö which is
  2. apparently the name of Alan Gloveræs hi-fi system!
  3. 2.12
  4. Å   Arthur 1.2 desktop Ö Nick Furniss has converted the Arthur 1.2
  5. desktop so that it works under RISC-OS. If you are interested, you
  6. should contact him at 87 Moordale Avenue, Bracknell, RG12 1TG.
  7. 2.12
  8. Å   Datachat Modem connections Ö These connect-ions were sent in by P
  9. Carlson who is happily using the Datachat to connect to Prestel.
  10. 2.12
  11.    Archimedes   Datachat
  12. 2.12
  13.    2   5
  14. 2.12
  15.    3   1
  16. 2.12
  17.    5   3
  18. 2.12
  19. Pins 2 & 3 on the Datachat are linked together and pins 1, 6 and 8 are
  20. linked on the Archimedes.
  21. 2.12
  22. Å   First Word Plus Ö Volker Eloesser of West Germany, in response to
  23. Help needed 2.11, p.15, concerning First Word Plus:
  24. 2.12
  25. 1) This sounds as if the printer is configured to a shorter paper length
  26. than the computer. If the computer sends a page which is one line longer
  27. than the configured length, the printer will feed the next full page
  28. after receiving a form-feed command. If the reconfiguration of the
  29. printer does not work, change the FormFeed command in the printer driver
  30. (HEX-file) to a no-operation code, such as É00æ or É*æ and compile a new
  31. CFG-file.
  32. 2.12
  33. 2) Simply close the window by clicking on the close-symbol on the top-
  34. left corner of the text window before printing.
  35. 2.12
  36. Å   First Word Plus word-count Ö The word count in First Word Plus does
  37. not work properly! It counts a word which contains an apostrophe as two
  38. words e.g. Iæm or itæs. This was very embarrassing for one Archive
  39. reader, who insisted to his publisher, that he had written a certain
  40. number of words.
  41. 2.12
  42. Å   Graphic Writer bug Ö If you insert a block marker at the end of a
  43. document, it is possible to scroll past the ÉEndæ point. This is usually
  44. remedied by scrolling back but if you continue editing it is possible to
  45. crash the application by pressing <ctrl><down arrow> followed by <page
  46. down> or <page up>. So be careful.
  47. 2.12
  48. Å   Home Accounts Ö Just a quick comment on Alan Highetæs Home Accounts
  49. review in 2.10 Ö one of his criticisms is that the reporting is limited
  50. to a whole yearæs transactions thus possibly taking up lots of paper;
  51. whilst this is true, report output can, under RISC-OS, be dragged
  52. directly into !EDIT and then you can print bits needed.  Not ideal, but
  53. a solution.
  54. 2.12
  55. Also he says that transactions are deleted after a year Ö this is not
  56. completely true Ö only the last 12 months transactions can be graphed
  57. and edited, but all transactions are kept for viewing in the account/
  58. header windows. Brian Debenham
  59. 2.12
  60. Å   Prolog X Ö We have a hint & tip on öRetaining facts, rules and lists
  61. produced in Prolog Xò written by C.G.Williamson. It was fairly long and
  62. rather technical, so we did not print it. If anyone would like a copy of
  63. this, please send an SAE to Adrian Look at the Archive office. (We have
  64. just received a letter from Jim Davis who says that he would like to
  65. commend Chris for his öbrilliantly simple use of the Prolog built-in
  66. predicates Étellæ and Étoldæ.ò He quotes several learned texts and says
  67. that they all miss Chrisæ simple combination of Étellæ, Élisting(X,Y)æ,
  68. Étoldæ as a method of avoiding the very contrived, but hitherto common,
  69. use of Étellæ and Étoldæ. He believes that Chrisæ expedient will become
  70. standard.) Should we therefore publish Chrisæ comments? Are there many
  71. Prolog users out there? Ed.)
  72. 2.12
  73. Å   QL Reader Ö Brian Oliver points out that there is a problem with
  74. QLreader (Shareware 12) in its drive select. Otherwise it is excellent
  75. and it now works fine with my 5.25ö drive connected to slot :2 after the
  76. following modification. The SYS òADFS_DiscOpö command on line 2750 is
  77. wrong. It should be:-
  78. 2.12
  79. SYS öXADFS_DiscOpò,,(1+List%<<6),
  80. 2.12
  81. Start%+(drive%<<29),bf%,512 TO flags%
  82. 2.12
  83. It is then necessary to set the default drive on line 240 and those for
  84. selection on lines 19740 & 1950.
  85. 2.12
  86. Å   RS423 Archimedes to Beeb Ö J.O.Linton: I have been having trouble
  87. with my RS423 port. My Beeb would listen to my Archimedes but my
  88. Archimedes would not receive data correctly from my Beeb. I have a
  89. fairly early Archimedes so I went to some trouble to get the field
  90. modification done to the serial chip only to find that the fault was
  91. exactly as before. Then my dealer sent me a leaflet from Acorn (Part No.
  92. 0476.033) called ÉUsing the serial portæ in which I found this vital
  93. paragraph:
  94. 2.12
  95. ÉThe Acorn BBC model B uses one stop bit by default, whereas the default
  96. configuration of an Archimedes computer is two stop bits. You are
  97. advised to change the DATA configuration of your Archimedes computer to
  98. 5 if you are using your serial port to pass data to or from a BBC model
  99. B.æ
  100. 2.12
  101. *Configure DATA 5 and Hey Presto Ö it worked!
  102. 2.12
  103. Å   Systemdevs Ö When using the System Devices to send characters to the
  104. printer, the printer ignore character feature is not Éusedæ, and all
  105. characters are sent to the printer Ö including the printer ignore
  106. character. This is very useful for sending an alternative character set
  107. to the printer (if it has a user-defined graphics option) as no
  108. characters will be Éstrippedæ Ö rather like using VDU 1,char with the
  109. VDU drivers. All that needs to be done is give a command similar to:
  110. *COPY UserChars printer: ~C~V. Michael Ben-Gershon
  111. 2.12
  112. Å   Teletext Adaptors Ö Richard House has written some software which
  113. allows the Archimedes to ögrabò teletext pages using the Acorn Teletext
  114. adaptor. If any one is interested, we can put you in touch with him.
  115. 2.12
  116. Herman Stevens from Belgium, says that in order to get the Morley
  117. teletext adaptor to work with RISC-OS, you require: I/O podule, Softæs
  118. öSupportò and öATSò saved on ADFS disc, !65Host copied on the same disc
  119. and !boot file as follows:
  120. 2.12
  121. CLS
  122. 2.12
  123. *DIR !65Host
  124. 2.12
  125. *RMLoad !RunImage
  126. 2.12
  127. *CACHEROM 1 ADFS
  128. 2.12
  129. *CACHEROM 3 SUPPORT
  130. 2.12
  131. *CACHEROM 4 ATS
  132. 2.12
  133. *EMU.
  134. 2.12
  135. By typing öTTEXTò you can start the Support ROM and TELETEXT will start
  136. the ATS ROM.
  137. 2.12
  138. Å   Taxan Multisync wobbles Ö The hint last month was expressed in
  139. rather too technical language. Iæll try again.
  140. 2.12
  141. Look at the p.c.b. from the front of the computer and near the serial
  142. port socket you will see a couple of metal pins sticking up and on the
  143. board alongside it, the inscription öLK2ò. Then over to the left of
  144. that, about in line with the headphone socket is a set of five pairs of
  145. pins inscribed as öPL2ò. It should have a couple of black plastic/metal
  146. sleeves on it. These are spare metal shorting links. Slide one of these
  147. links off (upwards) and put it instead on LK2. That should do the trick.
  148. 2.12
  149. Å   Compressing Text with OS_PrettyPrint Ö Under RISC-OS, the
  150. ÉOS_PrettyPrintæ SWI (c.f. Archive 2.9 p9) has been extended to include
  151. a Édictionaryæ facility. When an ASCII <27> code is encountered, the
  152. next byte will be used to find (and print) a dictionary entry. For
  153. example:
  154. 2.12
  155. Consider the following dictionary:
  156. 2.12
  157. 1)   Hello
  158. 2.12
  159. 2)   this
  160. 2.12
  161. 3)   is
  162. 2.12
  163. 4)   Archie
  164. 2.12
  165. If you send the codes <27><4> to the OS_Pretty Print SWI, tthe text
  166. ÉArchieæ will be printed.
  167. 2.12
  168. The two bytes <27><4> replace the 5 bytes <65> <114><99><104><101> which
  169. we actually want printed. The operating system uses this feature to
  170. compress any strings it might need to print.
  171. 2.12
  172. The structure of a dictionary is shown below:
  173. 2.12
  174. <entry length> }
  175. 2.12
  176. <string>       } repeat
  177. 2.12
  178. <0>            }
  179. 2.12
  180. .
  181. 2.12
  182. .
  183. 2.12
  184. <0>            ; end of of dictionary
  185. 2.12
  186. Therefore to print an OS_PrettyPrint SWI, you must use the following
  187. entry parameters:
  188. 2.12
  189. r0 -> pointer string
  190. 2.12
  191. r1 -> pointer dictionary (0 -> system dictionary)
  192. 2.12
  193. r2 -> special string (printed if dictionary entry zero is accessed)
  194. 2.12
  195.  10 REM >PrettyPrt
  196. 2.12
  197.  20
  198. 2.12
  199.  30 REM ****************************
  200. 2.12
  201.  40 REM * Using the OS_PrettyPrint *
  202. 2.12
  203.  50 REM *   Dictionary Facility    *
  204. 2.12
  205.  60 REM *  by Adrian Philip Look   *
  206. 2.12
  207.  70 REM *    21st August 1989      *
  208. 2.12
  209.  80 REM ****************************
  210. 2.12
  211.  90
  212. 2.12
  213. 100 DIM dictionary% &400:REM allocate
  214. 2.12
  215. some space for the dictionary
  216. 2.12
  217. 110 DIM buffer% 3 : REM allocate some
  218. 2.12
  219.  space for the string
  220. 2.12
  221. 120
  222. 2.12
  223. 130 PROCsetupdictionary :REM make a
  224. 2.12
  225.  user dictionary
  226. 2.12
  227. 140
  228. 2.12
  229. 150 buffer%?0=27 : REM a dictionary
  230. 2.12
  231.  entry follows
  232. 2.12
  233. 160 buffer%?2=0  : REM terminate
  234. 2.12
  235.  OS_PrettyPrint string
  236. 2.12
  237. 170 FOR x%=0 TO 5
  238. 2.12
  239. 180   buffer%?1=x% : REM dictionary
  240. 2.12
  241.  entry x%
  242. 2.12
  243. 190   PRINTæx%;ö : ò;
  244. 2.12
  245. 200   SYS öOS_PrettyPrintò,buffer%,
  246. 2.12
  247. dictionary%,ö<special string>ò +CHR$(0)
  248. 2.12
  249. 210 NEXT x%
  250. 2.12
  251. 220 PRINTÉ
  252. 2.12
  253. 230 END
  254. 2.12
  255. 240
  256. 2.12
  257. 250 DEFPROCsetupdictionary
  258. 2.12
  259. 260 x%=dictionary%
  260. 2.12
  261. 270 READ s$
  262. 2.12
  263. 280 WHILE s$<>ö***ò
  264. 2.12
  265. 290   x%?0=LEN(s$)+2:REM entry length
  266. 2.12
  267. 300   $(x%+1)=s$+CHR$(0) :REM null
  268. 2.12
  269.  terminated string
  270. 2.12
  271. 310   x%+=LEN(s$)+2
  272. 2.12
  273. 320   READ s$
  274. 2.12
  275. 330 ENDWHILE
  276. 2.12
  277. 340 ?x%=0 : REM zero length string to
  278. 2.12
  279.  terminate dictionary
  280. 2.12
  281. 350 ENDPROC
  282. 2.12
  283. 360
  284. 2.12
  285. 370 DATA Hello,this,is,Archie,ö***ò
  286. 2.12
  287.  
  288. 2.12
  289. Å   Copy Options Ö In Archive 2.10 page 15 we said that there were two
  290. new copy options L and N. In fact there are five new options, the other
  291. three being:
  292. 2.12
  293. A Ö Force destination access to same as source
  294. 2.12
  295. S Ö Restamp datestamped files after coping
  296. 2.12
  297. T Ö Only copy the directory structure
  298. 2.12
  299. Å   Filer_OpenDir and Filer_CloseDir (contæd) Ö Gary Atkinson says that
  300. these commands do not use system variables and so the full directory
  301. name must be used every time. This makes life difficult for RISC-OS
  302. applications which want to open a Filer window relative to their present
  303. position on the disc (which may change e.g. hard disc users).
  304. 2.12
  305. Therefore, with this context in mind, Gary has sent in the following
  306. hint which will read the value of a system variable:
  307. 2.12
  308. DIM buffer% 255, temp% 255
  309. 2.12
  310. SYS öOS_CLIò,öFiler_OpenDir ò + FNread_system_variable(öObey$Dirò)
  311. 2.12
  312. END
  313. 2.12
  314. :
  315. 2.12
  316. DEFFNread_system_variable(v$)
  317. 2.12
  318. LOCAL len%,x%
  319. 2.12
  320. $buffer%=v$
  321. 2.12
  322. SYS öOS_ReadVarValò,buffer%,temp%
  323. 2.12
  324. ,255,0,3 TO ,,len%
  325. 2.12
  326. v$=öò
  327. 2.12
  328. FOR x%=0 TO len%-1
  329. 2.12
  330. v$+=CHR$(buffer%?x%)
  331. 2.12
  332. NEXT x%
  333. 2.12
  334. =v$
  335. 2.12
  336. Å   Mode 16, 17 and 24 co-ordinates Ö Under RISC-OS modes 16 and 17 now
  337. support graphics. This means that a resolution of 1056x256 can now be
  338. obtained on a normal monitor. However, it should be noted that the
  339. screen size, in OS co-ordinates, is not 1280x1024 (or even 2048x1024 as
  340. Richard Averill suggested last month) but 2111x1024. In order to convert
  341. between the two sizes you should use the following function:
  342. 2.12
  343. DEFFNconvert2111to1280(x%)
  344. 2.12
  345. =INT(33*(x%+0.5)/20)
  346. 2.12
  347. Å   Modifying !Calc to accept keyboard input Ö In order to modify the
  348. calculator on the Applications Disc 2 to accept keyboard input you must:
  349. 2.12
  350. 1) Leave the desktop and type *BASIC.
  351. 2.12
  352. 2) Mount Applications Disc 2 in drive 0.
  353. 2.12
  354. 3) LOAD ö!Calc.!RunImageò and make the follow-ing modifications:
  355. 2.12
  356.    Add the following lines:
  357. 2.12
  358. 315 WHEN 8 : PROCwndkeyprssd(!q%,
  359. 2.12
  360. q%!24)
  361. 2.12
  362. 750 DEFPROCwndkeyprssd(handle%
  363. 2.12
  364. ,key%) : IF key%>47 AND key%<5 THEN PROCdigit(CHR$(key%))
  365. 2.12
  366. 751 CASE key% OF
  367. 2.12
  368. 752 WHEN 42: PROCoperator(ö*ò)
  369. 2.12
  370. 753 WHEN 43: PROCoperator(ö+ò)
  371. 2.12
  372. 754 WHEN 47: PROCoperator(ö/ò)
  373. 2.12
  374. 755 WHEN 46: PROCpoint
  375. 2.12
  376. 756 WHEN 45: PROCoperator(ö-ò)
  377. 2.12
  378. 757 WHEN 95: PROCoperator(ö-ò)
  379. 2.12
  380. 758 WHEN 61: PROCoperator(ö=ò)
  381. 2.12
  382. 759 ENDCASE
  383. 2.12
  384.    Now renumber the program (just type RENUMBER <return>), and then
  385. type:
  386. 2.12
  387. 855 PROCupdate(calc%,12,-28-32,10
  388. 2.12
  389. *16+12,24):PROCcalc:ENDPROC
  390. 2.12
  391. 105 q%!60=15<<12
  392. 2.12
  393. 4) SAVE ö!Calc.!RunImageò
  394. 2.12
  395.    To use text with the modified calculator just click in the calculator
  396. window (not on an icon) and type away. Note that a caret will not
  397. appear.
  398. 2.12
  399. Å   New CMOS RAM settings for outline fonts Ö When using the outline
  400. font manager (which is supplied with the Acorn DTP) you can set various
  401. font cache thresholds. These thresholds govern which mode of caching is
  402. used i.e. vertical & horizontal subpixeled, cached outlines, anti-
  403. aliased outlines, non-exact font from x90y45, and Éauto-growæ cache.
  404. 2.12
  405. The various thresholds can be set up as follows:
  406. 2.12
  407. *Configure FontSize <n>k ; min size of cache
  408. 2.12
  409. *Configure FontMax  <n>k ; max size of Éauto-growæ cache
  410. 2.12
  411. *Configure FontMax1 <h>  ; max size of non-exact font x90y45
  412. 2.12
  413. *Configure FontMax2 <h>  ; max size of anti-aliased outlines
  414. 2.12
  415. *Configure FontMax3 <h>  ; max size of cached outlines
  416. 2.12
  417. *Configure FontMax4 <w>  ; max size of horizontally-subpixeled font
  418. 2.12
  419. *Configure FontMax5 <h>  ; max size of vertically-subpixeled font
  420. 2.12
  421. where <h> refers to maximum font pixel height (pixel height = point
  422. height * dpi / 72), and <w> to the maximum font pixel width.
  423. 2.12
  424. Some programs may corrupt the CMOS RAM and soil the font cache
  425. thresholds. This may dramatically reduce the efficiency of cached fonts.
  426. Use the *STATUS command to view your currents threshold settings (and
  427. make a note of them just in case the CMOS RAM gets corrupted).
  428. 2.12
  429. Å   New FPE Ö There is a new version of the floating pointer emulator
  430. provided on the Applications Disc 2. If any of your programs use older
  431. versions of the FPE, you should update the module. This is because the
  432. pre 2.60 release versions of the FPE have a bug (a badly formed module
  433. header) which happens to work under Arthur 1.2.
  434. 2.12
  435. Å   New system variable Ö There is a new system variable, called
  436. Font$Path, which tells the Archimedes where anti-aliased fonts can be
  437. found. It has the same syntax as Load$Path and Run$Path. This means that
  438. fonts can be accessed from several different directories e.g. *Set
  439. Font$Path $.Fonts1, $.Fonts2,$.Fonts3 will allow the fonts manager to
  440. access anti-aliased fonts from three directories $.Font1, $.Font2 and
  441. $.Font3. To remain compatible with the earlier versions of the font
  442. manager you can *Set Font$Path <Font$Prefix>.
  443. 2.12
  444. Å   OS_ChangedBox Ö RISC-OS now offers a facility which will keep track
  445. of the areas on the Éscreenæ which have been altered by calls to the VDU
  446. drivers. When enabled, this feature will pro-vide a rectangle (co-
  447. ordinates in pixels from the bottom left-hand corner) of the area on the
  448. Éscreenæ which has been changed. The parameters are:
  449. 2.12
  450. Entry:
  451. 2.12
  452. R0 = 0  -> disable changed box calculations
  453. 2.12
  454.    = 1  -> enable changed box calculations
  455. 2.12
  456.    = 2  -> reset changed box to null rectangle
  457. 2.12
  458.    = -1 -> read changed box info
  459. 2.12
  460. Exit:
  461. 2.12
  462. R0 = old enable state
  463. 2.12
  464. R1 points to a fixed block of 5 words
  465. 2.12
  466.    [R1, #0]  = disable/enable flag
  467. 2.12
  468.    [R1, #4]  = x-coordinate of left edge of box
  469. 2.12
  470.    [R1, #8]  = y-coordinate of bottom edge of box
  471. 2.12
  472.    [R1, #12] = x-coordinate of right edge of box
  473. 2.12
  474.    [R1, #16] = y-coordinate of top edge of box
  475. 2.12
  476. An example program:
  477. 2.12
  478.  10 REM >Changed
  479. 2.12
  480.  20
  481. 2.12
  482.  30 REM *************************
  483. 2.12
  484.  40 REM *  Using OS_ChangedBox  *
  485. 2.12
  486.  50 REM * by Adrian Philip Look *
  487. 2.12
  488.  60 REM *   22nd August 1989    *
  489. 2.12
  490.  70 REM *************************
  491. 2.12
  492.  80
  493. 2.12
  494.  90 MODE 12 : OFF
  495. 2.12
  496. 100
  497. 2.12
  498. 110 PROCenablecalulations
  499. 2.12
  500. 120 PROCresetrectangle
  501. 2.12
  502. 130
  503. 2.12
  504. 140 LINE 400,400,600,600
  505. 2.12
  506. 150 PROCreadbox
  507. 2.12
  508. 160 RECTANGLE FILL 300,300,10,10
  509. 2.12
  510. 170 PROCreadbox
  511. 2.12
  512. 180 RECTANGLE FILL 700,700,30,30
  513. 2.12
  514. 190 PROCreadbox
  515. 2.12
  516. 200 CIRCLE 250,250,200
  517. 2.12
  518. 210 PROCreadbox
  519. 2.12
  520. 220 RECTANGLE 550,450,500,300
  521. 2.12
  522. 230 PROCreadbox
  523. 2.12
  524. 240
  525. 2.12
  526. 250 PROCdisablecalulations : ON
  527. 2.12
  528. 260 PRINT
  529. 2.12
  530. 270 END
  531. 2.12
  532. 280
  533. 2.12
  534. 290 DEFPROCresetrectangle
  535. 2.12
  536. 300 SYS öOS_ChangedBoxò,2
  537. 2.12
  538. 310 ENDPROC
  539. 2.12
  540. 320
  541. 2.12
  542. 330 DEFPROCenablecalulations
  543. 2.12
  544. 340 SYS öOS_ChangedBoxò,1
  545. 2.12
  546. 350 ENDPROC
  547. 2.12
  548. 360
  549. 2.12
  550. 370 DEFPROCdisablecalulations
  551. 2.12
  552. 380 SYS öOS_ChangedBoxò,0
  553. 2.12
  554. 390 ENDPROC
  555. 2.12
  556. 400
  557. 2.12
  558. 410 DEFPROCreadbox
  559. 2.12
  560. 420 PROCdisablecalulations
  561. 2.12
  562. 430 SYS öOS_ChangedBoxò,-1 TO ,data%
  563. 2.12
  564. 440 x0%=data%!4: y0%=data%!8
  565. 2.12
  566. 450 x1%=data%!12 : y1%=data%!16
  567. 2.12
  568. 460
  569. 2.12
  570. 470 PRINTTAB(0,0);öChanged Box
  571. 2.12
  572. Rectangle (in pixels not
  573. 2.12
  574.  OS coords)ö
  575. 2.12
  576. 480 PRINTöleft x:   ò;x0%;ö     ò
  577. 2.12
  578. 490 PRINTöbottom y: ò;y0%;ö     ò
  579. 2.12
  580. 500 PRINTöright x:  ò;x1%;ö     ò
  581. 2.12
  582. 510 PRINTötop y:    ò;y1%;ö     ò
  583. 2.12
  584. 520
  585. 2.12
  586. 530 PRINTÉöpress any key to step
  587. 2.12
  588. through demoö
  589. 2.12
  590. 540 QQ=GET
  591. 2.12
  592. 550 PROCenablecalulations
  593. 2.12
  594. 560 ENDPROC
  595. 2.12
  596. Å   ProArtisan & Artisan upgrades to RISC-OS Ö ProArtisan discs need to
  597. be changed so that they work under RISC-OS. This upgrade avoids the
  598. dreaded öFilecore in useò error, and is available from Clares Micros if
  599. you send them a blank D-formatted disc.
  600. 2.12
  601. Å   RISC-OS printer drivers and Line Feeds Ö If your printer does not
  602. automatically generate line feeds when it receives a carriage return you
  603. can make the RISC printer drivers generate one for you. Once the printer
  604. drive is installed on you must click on the printer icon with the SELECT
  605. button. This will reveal a window which contains an option to convert
  606. single line feeds or carriage returns into a single line feed and
  607. carriage return i.e. CR or LF => CR,LF.
  608. 2.12
  609. If you wish to make this option permanent just select the ÉSave Choicesæ
  610. option on the printer driver menu.
  611. 2.12
  612. Å   RISC-OS will run old WIMP programs (i.e. it emulates the Arthur 1.2
  613. Window Manager) but because the emulation is not complete there are some
  614. anomalies with the sprite handling. (a) selected sprites are rendered
  615. incorrectly (b) sprite are scaled according to the screen mode (this did
  616. not happen before). In practice, however, this affects very few
  617. applications.
  618. 2.12
  619. Å   The *CDIR command for the ADFS, RAMFS, and NETFS now creates
  620. unlocked directories. This means that directories can be renamed, moved
  621. and deleted from the desktop. However, the contents of a directory must
  622. be deleted before the directory itself can be deleted.
  623. 2.12
  624. Å   The Window Manager (RISC-OS) no longer reserves 32k permanent memory
  625. for window definitions, etc but acquires memory from the RMA as it is
  626. needed. This means that some Arthur 1.2 wimp programs may fail to start,
  627. giving a ÉNo room to create windowæ error. This can usually be solved by
  628. increasing the memory allocated to the RMA (by dragging the RMA bar in
  629. the Task Manager) before starting the application.
  630. 2.12
  631. The following hints and tips were sent in by Paul Witheridge
  632. 2.12
  633. Å   Cancelling tasks from the öTask Displayò Ö If you call up the Task
  634. Display by clicking the mouse menu button on the Task Manager Icon at
  635. the right-hand end of the icon bar and then selecting Task Display from
  636. the resulting menu, you will get, among other things, a one line display
  637. for each active task, showing the name of the task and how much memory
  638. it uses.
  639. 2.12
  640. If you position the pointer on that display line and click menu again,
  641. you will see a very similar menu, but this time there is a menu item for
  642. the task in question. This menu item has a sub-menu arrow. If you move
  643. the pointer onto it, you will be rewarded with a sub-menu with a just a
  644. single item, öQuitò. Clicking on this will usually, but not always,
  645. cause the task to terminate.
  646. 2.12
  647. From the programmeræs point of view, the next time the task in question
  648. issues a Wimp_Poll request, it will receive a reason code 18 with a
  649. subordinate code of 8 in the fifth word of the parameter block. It
  650. should interpret this as a directive to terminate.
  651. 2.12
  652. Å   Command files from within an Obey file Ö One of the main differences
  653. between Command files and Obey files is that input from a Command file
  654. can be passed to the OS Command Line Interpreter or to an application,
  655. while input from an Obey file is only passed to the Command Line
  656. Interpreter. This means that when an application program is started up
  657. by a RUN command in an Obey file, the following line of the Obey file
  658. will always be treated as a command and never as input to the appli
  659. cation program. For example if the following is an Obey file:
  660. 2.12
  661. Dir ADFS:$.BasPgms
  662. 2.12
  663. BASIC
  664. 2.12
  665. Dir ADFS:$
  666. 2.12
  667. Then the second DIR command will be executed after quitting from BASIC.
  668. If, instead, the file is a Command file, then as soon as BASIC starts up
  669. it will read the öDir ADFS:$ò as input (and since it does not begin with
  670. an asterisk, it will not understand it and treat it as a mistake).
  671. 2.12
  672. You can use a combination of Obey and Command files to start up an
  673. application program and provide it with an initial set of input data.
  674. This can be very useful, but to be successful, you must know a little
  675. more about what happens when a Command file is executed from within an
  676. Obey file. Consider the following example:
  677. 2.12
  678. | > ObeyFile
  679. 2.12
  680. Echo Output 1 from ObeyFile
  681. 2.12
  682. Exec CmndFile
  683. 2.12
  684. Echo Output 2 from ObeyFile
  685. 2.12
  686. | > CmndFile
  687. 2.12
  688. Echo Output from CmndFile
  689. 2.12
  690. When the Obey file is run, the following output is produced:
  691. 2.12
  692. Output 1 from ObeyFile
  693. 2.12
  694. Output 2 from ObeyFile
  695. 2.12
  696. * | > CmndFile
  697. 2.12
  698. * Echo Output from CmndFile
  699. 2.12
  700. Output from CmndFile
  701. 2.12
  702. From this output, you can see that despite the fact that the öExec
  703. CmndFileò command came between the two öEchoò commands in the Obey file,
  704. the contents of the Command file were not actually executed until the
  705. Obey file was finished with. The Command Line Interpreter obviously
  706. gives precedence to Obey files over Command files. All that the EXEC
  707. command did was to open the Command file for input and assign the system
  708. input stream to it. It did not actually read anything from it. This was
  709. left to the Command Line Interpreter, but it did not resume reading from
  710. the system input stream until it had exhausted the Obey file.
  711. 2.12
  712. Since application programs can take input from a Command file, but not
  713. from an Obey file, an EXEC command can be used within an Obey file to
  714. östackò input ready for an application program. The following example of
  715. an Obey file and a Command file can be used to create a RISC-OS
  716. application for the Basic Editor:
  717. 2.12
  718. | > !BasicEdit.!Run
  719. 2.12
  720. If ö<System$Path>ò = öò then Error 0 System resources cannot be found
  721. RMensure ARMBasicEditor 1.00 RMload System:Modules.BasicEdit
  722. 2.12
  723. Key 2 EDIT .|M
  724. 2.12
  725. Key 4 *QUIT|M
  726. 2.12
  727. Wimpslot -min 100k
  728. 2.12
  729. Exec <Obey$Dir>.!Init
  730. 2.12
  731. Basic -load %*0
  732. 2.12
  733. *| > !BasicEdit.!Init
  734. 2.12
  735. EDIT
  736. 2.12
  737. Both files should reside in a application directory called ö!BasicEditò.
  738. An accompanying ö!spritesò file would be nice, but is not essential
  739. since in its absence, RISC-OS will use the default sprite for an
  740. application.
  741. 2.12
  742. The öExec <Obey$Dir>.!Initò command in the Obey file opens the Command
  743. file and when the following öBasic -load %*0ò command executes, BASIC
  744. reads the contents of the Command file as if it were being entered from
  745. the keyboard.
  746. 2.12
  747. If you double-click on the icon for ö!BasicEditò in a directory viewer,
  748. the Basic Editor is started up ready to create a new program. If you
  749. install ö!BasicEditò on the icon bar using TinyDirs, you can drag the
  750. icon for a BASIC program from a directory viewer to the ö!BasicEditò
  751. icon on the icon bar, which will start up the Basic Editor and load the
  752. program into it ready to edit.
  753. 2.12
  754. The following example consists of an Obey file and a Command file to
  755. start up Twin as an application and to change the default colours used
  756. by twin from white on black to blue on cyan. The contents of the Obey
  757. file, which is the !Run file in the !Twin application directory, are:
  758. 2.12
  759. | > !Twin.!Run
  760. 2.12
  761. WimpSlot -min 100k
  762. 2.12
  763. Load ADFS:%%.Twin 8000
  764. 2.12
  765. Exec <Obey$Dir>.!Init
  766. 2.12
  767. Go 8000 ; %*0
  768. 2.12
  769. and the contents of the Command file, which is named ö!Initò and also
  770. resides in the !Twin directory, are (in the notation used for *BUILD
  771. etc):
  772. 2.12
  773. |!|A|S|@|F|@|@|@|S|A|D|@|@|@
  774. 2.12
  775. The Obey file assumes that Twin resides in the current ADFS library,
  776. refering to it as öADFS:%%ò. öADFSò must be specified in case the ADFS
  777. is not the current filing system and ö%%ò will be replaced by a single
  778. percentage sign by the argument substitution process for Obey files.
  779. Twin is loaded at &8000 because in a RISC-OS multi-tasking environment,
  780. the amount of storage available to start up TWIN is often not enough to
  781. load it at its önormalò load address of &80000 (leading to the dreaded
  782. error message: öNo writeable memory at this addressò). Note that loading
  783. Twin at &8000 leaves no memory for starting up applications from within
  784. Twin. Such applications would normally run at &8000 and utilise the
  785. memory between &8000 and Twinæs normal load address at &80000).
  786. 2.12
  787. The Command file seems to consist of unintelligible hieroglyphics. The
  788. first character (shown as ö|!|Aò) is actually &81 and has the same
  789. effect on Twin as pressing function key one. The remaining eight
  790. characters (shown as ö|S|@|F|@|@|@|S|A|D|@|@|@ò) are equivalent to:
  791. 2.12
  792.    ctrl-S ctrl-@ ctrl-F ctrl-@ ctrl-@ ctrl-@
  793. 2.12
  794.    ctrl-S ctrl-A ctrl-D ctrl-@ ctrl-@ ctrl-@
  795. 2.12
  796. which will have the same effect when read by Twin as the BASIC
  797. statements:
  798. 2.12
  799.    VDU 19,0,5,0,0,0
  800. 2.12
  801.    VDU 19,1,4,0,0,0
  802. 2.12
  803. mapping logical colour zero to physical colour five (cyan) and logical
  804. colour one to physical colour four (blue).
  805. 2.12
  806. As in the case of !BasicEdit, double clicking on the !Twin icon in a
  807. directory viewer will start up Twin without any file loaded, while
  808. installing !Twin on the icon bar via TinyDirs will allow dragging file
  809. icons to the !Twin icon on the icon bar, starting up Twin and loading
  810. the file.
  811. 2.12
  812. Å   Error signalling from within a machine code subroutine called from
  813. BASIC ÖUnder BASIC V version 1.04, it is simple to signal an error
  814. condition from a machine code subroutine by setting the over-flow flag
  815. and loading register zero with a pointer to an error block before
  816. returning to BASIC.
  817. 2.12
  818. Consider these two, almost identical examples:
  819. 2.12
  820. The first assembles and calls a machine code subroutine that points
  821. register zero to an error block (see line 70) and then returns to BASIC
  822. with the overflow flag cleared (see line 80). This program terminates
  823. normally without an error:
  824. 2.12
  825.  10 REM > Example1
  826. 2.12
  827.  20
  828. 2.12
  829.  30 DIM code% 100
  830. 2.12
  831.  40 FOR pass% = 0 TO 3 STEP 3
  832. 2.12
  833.  50 P%=code%
  834. 2.12
  835.  60 [OPT pass%
  836. 2.12
  837.  70 ADR R0,errblk
  838. 2.12
  839.  80 BICS PC,R14,#&10000000
  840. 2.12
  841.  90 .errblk EQUD 99
  842. 2.12
  843. 100 EQUS öI am an error messageò
  844. 2.12
  845. 110 EQUB 0
  846. 2.12
  847. 120 ]:NEXT
  848. 2.12
  849. 130 ON ERROR PROCerror
  850. 2.12
  851. 140 CALL code%
  852. 2.12
  853. 150 END
  854. 2.12
  855. 160 :
  856. 2.12
  857. 170 DEF PROCerror
  858. 2.12
  859. 180 PRINT öNmbr=ò; ERR
  860. 2.12
  861. 190 PRINT öText=ò; REPORT$
  862. 2.12
  863. 200 PRINT öLine=ò; ERL
  864. 2.12
  865. 210 END
  866. 2.12
  867. 220 ENDPROC
  868. 2.12
  869. The second example is exactly the same except that it sets the overflow
  870. flag (see line 80) before returning to BASIC:
  871. 2.12
  872.  10 REM > Example2
  873. 2.12
  874.  20
  875. 2.12
  876.  30 DIM code% 100
  877. 2.12
  878.  40 FOR pass% = 0 TO 3 STEP 3
  879. 2.12
  880.  50 P%=code%
  881. 2.12
  882.  60 [OPT pass%
  883. 2.12
  884.  70 ADR R0,errblk
  885. 2.12
  886.  80 ORRS PC,R14,#&10000000
  887. 2.12
  888.  90 .errblk EQUD 99
  889. 2.12
  890. 100 EQUS öI am an error messageò
  891. 2.12
  892. 110 EQUB 0
  893. 2.12
  894. 120 ]:NEXT
  895. 2.12
  896. 130 ON ERROR PROCerror
  897. 2.12
  898. 140 CALL code%
  899. 2.12
  900. 150 END
  901. 2.12
  902. 160 :
  903. 2.12
  904. 170 DEF PROCerror
  905. 2.12
  906. 180 PRINT öNmbr=ò; ERR
  907. 2.12
  908. 190 PRINT öText=ò; REPORT$
  909. 2.12
  910. 200 PRINT öLine=ò; ERL
  911. 2.12
  912. 210 END
  913. 2.12
  914. 220 ENDPROC
  915. 2.12
  916. In this second case, an error occurs, which is trapped by the ON ERROR
  917. statement (see line 130) and results in the following lines being
  918. printed by PROCerror:
  919. 2.12
  920. Nmbr=99
  921. 2.12
  922. Text=I am an error message
  923. 2.12
  924. Line=140
  925. 2.12
  926. This use of the overflow flag can result in unexpected behaviour from
  927. some programs. For example, if the last SWI call in a machine code
  928. subroutine returns with the overflow flag set, indicating an error
  929. occurred during the execution of the SWI, and this flag is not reset
  930. before the subroutine returns to BASIC, then BASIC will take this as an
  931. error condition. Exactly what happens depends on the contents of
  932. register zero. If it points to a valid error block, then BASICæs error
  933. trapping mechanism will function properly. Otherwise unpredictable
  934. errors (such as an address exception) will happen.
  935. 2.12
  936. Å   New SWI calls in RISC-OS Ö The following program can be used to list
  937. all the SWI calls available in OS. It basically works by calling the
  938. öOS_SWINumberToStringò SWI for all possible SWI numbers and displaying
  939. the returned string. To speed things up it checks to see if the first
  940. SWI in a each chunk of 64 is valid. If not, it ignores the rest of the
  941. chunk. öValidò in this case means that the SWI name is neither
  942. öOS_Undefinedò nor öUserò. SWI names beginning with öXò are also ignored
  943. as duplicates.
  944. 2.12
  945.  10 REM > SWIlist
  946. 2.12
  947.  20 :
  948. 2.12
  949.  30 buflen%=100
  950. 2.12
  951.  40 DIM buffer% buflen%
  952. 2.12
  953.  50 :
  954. 2.12
  955.  60 SYS öOS_SWINumberFromStringò,,
  956. 2.12
  957. öXOS_SWINumberToStringò TO S%
  958. 2.12
  959.  70 :
  960. 2.12
  961.  80 VDU 14
  962. 2.12
  963.  90 :
  964. 2.12
  965. 100 FOR chunk% = 0 TO &80000 STEP 64
  966. 2.12
  967. 110 SYS S%,chunk%,buffer%,buflen%
  968. 2.12
  969.  TO ,swi$;V%
  970. 2.12
  971. 120 IF V%AND1 ELSE IF LEFT$(swi$,1)
  972. 2.12
  973. =öXò ELSE IF swi$ =öUserò ELSE IF swi$<>öOS_Undefinedò PROCchunk
  974. 2.12
  975. 130 NEXT
  976. 2.12
  977. 140 :
  978. 2.12
  979. 150 VDU15
  980. 2.12
  981. 160 :
  982. 2.12
  983. 170 END
  984. 2.12
  985. 180
  986. 2.12
  987. 190 DEFPROCchunk
  988. 2.12
  989. 200 FOR swi% = chunk% TO chunk%+63
  990. 2.12
  991. 210 SYS S%,swi%,buffer%,buflen% TO
  992. 2.12
  993.  ,swi$;V%
  994. 2.12
  995. 220 IF V%AND1 ELSE IF LEFT$(swi$,1)
  996. 2.12
  997. =öXò ELSE IF swi$=öUserò ELSE IF swi$<>öOS_Undefinedò PRINT öSWI number
  998. ò;RIGHT$(ö0000ò+
  999. 2.12
  1000. STR$~swi%,5);ö is ò;swi$
  1001. 2.12
  1002. 230 NEXT
  1003. 2.12
  1004. 240 ENDPROC
  1005. 2.12
  1006. If this program is run, a list of SWIs is generated. Those for the
  1007. FPemulator and ColourTrans will only be listed if the relevant Relocat
  1008. able Module is loaded when SWIlist is run. Those for RamFS will only be
  1009. listed if the RAM disc is configured.
  1010. 2.12
  1011. The program was also run against Arthur 1.2 and by comparing the two
  1012. listings, it was possible to identify those SWIs which appeared in the
  1013. RISC-OS listing but not in that for Arthur. These are presumably new
  1014. SWIs and are listed below.
  1015. 2.12
  1016. 00049   OS_ReadArgs
  1017. 2.12
  1018. 0004A   OS_ReadRAMFsLimits
  1019. 2.12
  1020. 0004B   OS_ClaimDeviceVector
  1021. 2.12
  1022. 0004C   OS_ReleaseDeviceVector
  1023. 2.12
  1024. 0004D   OS_DelinkApplication
  1025. 2.12
  1026. 0004E   OS_RelinkApplication
  1027. 2.12
  1028. 0004F   OS_HeapSort
  1029. 2.12
  1030. 00050   OS_ExitAndDie
  1031. 2.12
  1032. 00051   OS_ReadMemMapInfo
  1033. 2.12
  1034. 00052   OS_ReadMemMapEntries
  1035. 2.12
  1036. 00053   OS_SetMemMapEntries
  1037. 2.12
  1038. 00054   OS_AddCallBack
  1039. 2.12
  1040. 00055   OS_ReadDefaultHandler
  1041. 2.12
  1042. 00056   OS_SetECFOrigin
  1043. 2.12
  1044. 00057   OS_SerialOp
  1045. 2.12
  1046. 00058   OS_ReadSysInfo
  1047. 2.12
  1048. 00059   OS_Confirm
  1049. 2.12
  1050. 0005A   OS_ChangedBox
  1051. 2.12
  1052. 0005B   OS_CRC
  1053. 2.12
  1054. 0005C   OS_ReadDynamicArea
  1055. 2.12
  1056. 0005D   OS_PrintChar
  1057. 2.12
  1058. 000EB   OS_ConvertFixedFileSize
  1059. 2.12
  1060. 000EC   OS_ConvertFileSize
  1061. 2.12
  1062. 00240   IIC_Control
  1063. 2.12
  1064. 40098   Font_ReadColourTable
  1065. 2.12
  1066. 400DE   Wimp_StartTask
  1067. 2.12
  1068. 400DF   Wimp_ReportError
  1069. 2.12
  1070. 400E0   Wimp_GetWindowOutline
  1071. 2.12
  1072. 400E1   Wimp_PollIdle
  1073. 2.12
  1074. 400E2   Wimp_PlotIcon
  1075. 2.12
  1076. 400E3   Wimp_SetMode
  1077. 2.12
  1078. 400E4   Wimp_SetPalette
  1079. 2.12
  1080. 400E5   Wimp_ReadPalette
  1081. 2.12
  1082. 400E6   Wimp_SetColour
  1083. 2.12
  1084. 400E7   Wimp_SendMessage
  1085. 2.12
  1086. 400E8   Wimp_CreateSubMenu
  1087. 2.12
  1088. 400E9   Wimp_SpriteOp
  1089. 2.12
  1090. 400EA   Wimp_BaseOfSprites
  1091. 2.12
  1092. 400EB   Wimp_BlockCopy
  1093. 2.12
  1094. 400EC   Wimp_SlotSize
  1095. 2.12
  1096. 400ED   Wimp_ReadPixTrans
  1097. 2.12
  1098. 400EE   Wimp_ClaimFreeMemory
  1099. 2.12
  1100. 400EF   Wimp_CommandWindow
  1101. 2.12
  1102. 400F0   Wimp_TextColour
  1103. 2.12
  1104. 400F1   Wimp_TransferBlock
  1105. 2.12
  1106. 400F2   Wimp_ReadSysInfo
  1107. 2.12
  1108. 400F3   Wimp_SetFontColours
  1109. 2.12
  1110. 401C7   Sound_QInterface
  1111. 2.12
  1112. 40244   ADFS_Retries
  1113. 2.12
  1114. 40245   ADFS_DescribeDisc
  1115. 2.12
  1116. 40289   Podule_HardwareAddress
  1117. 2.12
  1118. 40540   FileCore_DiscOp
  1119. 2.12
  1120. 40541   FileCore_Create
  1121. 2.12
  1122. 40542   FileCore_Drives
  1123. 2.12
  1124. 40543   FileCore_FreeSpace
  1125. 2.12
  1126. 40544   FileCore_FloppyStructure
  1127. 2.12
  1128. 40545   FileCore_DescribeDisc
  1129. 2.12
  1130. 405C0   Shell_Create
  1131. 2.12
  1132. 405C1   Shell_Destroy
  1133. 2.12
  1134. 406C0   Hourglass_On
  1135. 2.12
  1136. 406C1   Hourglass_Off
  1137. 2.12
  1138. 406C2   Hourglass_Smash
  1139. 2.12
  1140. 406C3   Hourglass_Start
  1141. 2.12
  1142. 406C4   Hourglass_Percentage
  1143. 2.12
  1144. 406C5   Hourglass_LEDs
  1145. 2.12
  1146. 40700   Draw_ProcessPath
  1147. 2.12
  1148. 40701   Draw_ProcessPathFP
  1149. 2.12
  1150. 40702   Draw_Fill
  1151. 2.12
  1152. 40703   Draw_FillFP
  1153. 2.12
  1154. 40704   Draw_Stroke
  1155. 2.12
  1156. 40705   Draw_StrokeFP
  1157. 2.12
  1158. 40706   Draw_StrokePath
  1159. 2.12
  1160. 40707   Draw_StrokePathFP
  1161. 2.12
  1162. 40708   Draw_FlattenPath
  1163. 2.12
  1164. 40709   Draw_FlattenPathFP
  1165. 2.12
  1166. 4070A   Draw_TransformPath
  1167. 2.12
  1168. 4070B   Draw_TransformPathFP
  1169. 2.12
  1170. 40780   RamFS_DiscOp
  1171. 2.12
  1172. 40781   RamFS_NOP
  1173. 2.12
  1174. 40782   RamFS_Drives
  1175. 2.12
  1176. 40783   RamFS_FreeSpace
  1177. 2.12
  1178. 40784   RamFS_NOP
  1179. 2.12
  1180. 40785   RamFS_DescribeDisc
  1181. 2.12
  1182. 40740   ColourTrans_SelectTable
  1183. 2.12
  1184. 40741   ColourTrans_SelectGCOLTable
  1185. 2.12
  1186. 40742   ColourTrans_ReturnGCOL
  1187. 2.12
  1188. 40743   ColourTrans_SetGCOL
  1189. 2.12
  1190. 40744   ColourTrans_ReturnColourNumber
  1191. 2.12
  1192. 40745   ColourTrans_ReturnGCOLForMode
  1193. 2.12
  1194. 40746   ColourTrans_ReturnColourNumber
  1195. 2.12
  1196. ForMode
  1197. 2.12
  1198. 40747   ColourTrans_ReturnOppGCOL
  1199. 2.12
  1200. 40748   ColourTrans_SetOppGCOL
  1201. 2.12
  1202. 40749   ColourTrans_ReturnOppColour
  1203. 2.12
  1204. Number
  1205. 2.12
  1206. 4074A   ColourTrans_ReturnOppGCOLFor
  1207. 2.12
  1208. Mode
  1209. 2.12
  1210. 4074B   ColourTrans_ReturnOppColour
  1211. 2.12
  1212. NumberForMode
  1213. 2.12
  1214. 4074C   ColourTrans_GCOLToColourNumber
  1215. 2.12
  1216. 4074D   ColourTrans_ColourNumberToGCOL
  1217. 2.12
  1218. 4074E   ColourTrans_ReturnFontColours
  1219. 2.12
  1220. 4074F   ColourTrans_SetFontColours
  1221. 2.12
  1222. 40750   ColourTrans_InvalidateCache
  1223. 2.12
  1224. Å   Starting up TinyDirs automatically via the Desktop initialisation
  1225. file Ö Archive 2.10  p 15, refers to the facility whereby the Desktop
  1226. can be caused to run a file of initialisation commands at start-up time.
  1227. One command that can be included in this file is a command to start up
  1228. TinyDirs and automatically install high-use directories or applications
  1229. on the icon bar.
  1230. 2.12
  1231. TinyDirs accepts multiple arguments on the command, separated by blanks.
  1232. So, if you created two application directories for, say, the Basic
  1233. Editor and Twin, you could include the following command in the Desktop
  1234. startup file (assuming that the name of the disc where !TinyDirs,
  1235. !BasicEdit and !Twin all reside is öSysDiscò):
  1236. 2.12
  1237. Run ADFS::SysDisc.$.!TinyDirs ADFS::SysDisc.$.!BasicEdit
  1238. ADFS::SysDisc.$.!Twin
  1239. 2.12
  1240. Although two icons will be installed on the icon bar, only one copy of
  1241. the TinyDirs application is started up. If two separate commands had
  1242. been used:
  1243. 2.12
  1244. Run ADFS::SysDisc.$.!TinyDirs ADFS::SysDisc.$.!BasicEdit
  1245. 2.12
  1246. Run ADFS::SysDisc.$.!TinyDirs ADFS::SysDisc.$.!Twin
  1247. 2.12
  1248. then, although the icon bar would look exactly the same, with the same
  1249. two icons installed, two copies of TinyDirs would have been started up,
  1250. using twice the memory.
  1251. 2.12
  1252. It also seems safe to reduce the memory required by TinyDirs from 32k to
  1253. 24k by altering the WimpSlot command in the !Run file for TinyDirs to
  1254. 2.12
  1255. WimpSlot -min 24k -max 24k
  1256. 2.12
  1257.