home *** CD-ROM | disk | FTP | other *** search
/ Archive Magazine 1996 / ARCHIVE_96.iso / text / hints / volume_2 < prev    next >
Text File  |  1995-06-25  |  256KB  |  8,037 lines

  1.  
  2. Å   How to wipe a disc clean Ö If you want to wipe a disc completely
  3. clean, you can use *WIPE * ~CFR<return> (Use this command with care Ö
  4. thereæs no going back once youæve pressed <return>!) Ö in other words,
  5. remove files with any name (*), donæt ask for confirmation of each wipe
  6. (~C), force them (F) to be deleted even if they are locked and do it
  7. recursively (R) so that the contents of all directories are deleted.
  8. However, even this drastic measure wonæt allow you to delete a library
  9. directory if one exists. So do a *Lib öò<return> before the *WIPE
  10. command.
  11. 2.1
  12. Å   GammaPlot/System Delta Plus Ö If you have been trying to import SDP
  13. files into GammaPlot and have been unsuccessful, read on╔ Firstly you
  14. have to copy the System Delta Plus software onto your GammaPlot disc.
  15. Then if it still doesnæt work, it will be because you have an older
  16. version of System Delta Plus. Send the original SDP disc back to Minerva
  17. and ask for an up-grade.
  18. 2.1
  19. Å   Mounting problems (sic) Ö Do you find that sometimes it refuses to
  20. respond to a *MOUNT command even if you take the disc out and put it
  21. back in again? Two solutions: type *BYE and then you should find that
  22. *CAT will cause it to access the disc OR if, like me, youæve got *MOUNT
  23. on a function key, just do a *MOUNT with no disc in the drive then
  24. *MOUNT with the new disc in place. If you are in First Word Plus where
  25. you cannot issue star commands anyway, the latter technique should do
  26. the trick since you can achieve the equivalent of *MOUNT by clicking on
  27. the close box (the X) in the file menu. (Just as a matter of interest,
  28. does anyone know why it gets into this state sometimes?)
  29. 2.1
  30. Å   Users of C (and other compiled languages) may find the following
  31. command file useful, as sent in by Peter Linstead. You can put it in the
  32. $ directory of your hard disc and use it when starting a C programming
  33. session. Once you have assigned your current programæs name to NAME
  34. using, for example, *SET NAME MYPROG you can edit the source file by
  35. pressing <f1>. Once out of TWIN, <f2> will compile and link the source
  36. code and <f3> will execute the run code. By using SETMACRO, you can
  37. change the working name with another *SET command without running the
  38. command file again. It assumes that both FPE and TWIN are in the
  39. $.Library.
  40. 2.1
  41. *| > $.Library .C
  42. 2.1
  43. *FPE
  44. 2.1
  45. *DIR $.ARM.BENCH
  46. 2.1
  47. *SETMACRO ALIAS$AUTOT *TWIN
  48. 2.1
  49.  C.<NAME> |M
  50. 2.1
  51. *SETMACRO ALIAS$AUTOC *CC <NAME>
  52. 2.1
  53.  Ö LINK |M
  54. 2.1
  55. *SETMACRO ALIAS$AUTOR *RUN
  56. 2.1
  57. P.<NAME> |M
  58. 2.1
  59. *KEY 1 *AUTOT|M
  60. 2.1
  61. *KEY 2 *AUTOC|M
  62. 2.1
  63. *KEY 3 *AUTOR|M
  64. 2.1
  65. *SET RUN$PATH ,%.,$.ARM.LIBRARY.,@.P.
  66. 2.1
  67. *GOS
  68. 2.1
  69. (I have just reproduced this from Peteræs hand-written letter and I
  70. havenæt got C to try it out on, so I hope Iæve transcribed it correctly.
  71. If it hadnæt been for the postal strike Iæd have sent it to David Wild
  72. first, so please bear with us if you find it is not completely correct.
  73. Ed.)
  74. 2.1
  75. Å   ANSI C Compiler Ö Mike Sherratt writes╔ öOn a very fundamental note╔
  76. The manual is very terse. To compile the demo programs on the distribu
  77. tion diskette Ö Balls64, Sieve and Hello, heed the ReadMe file where it
  78. says ÉRMLoad the FP emulator etc i.e. RMload fpe240æ. Get to the
  79. directory level ÉBenchæ then do:
  80. 2.1
  81. *CC ÖArthur Sieve
  82. 2.1
  83. The spaces are significant, ÉÖæ is minus. The Sieve source file is in
  84. sub-directory Écæ. The executable file is now in sub-directory Épæ.
  85. 2.1
  86. The program can be run from the star prompt by typing *Sieve. The Éc.æ
  87. prefix is embedded (for lack of a better word) in the compiler, so donæt
  88. try to create the prefix!! You are now on the way.
  89. 2.1
  90. This information came thanks to Watford Elec-tronics who used Acornæs
  91. dealer hot-line for me.ö
  92. 2.1
  93. (Because of the postal strike, this has been inserted by the Ed rather
  94. than sending it to David for checking, so hopefully it will be OK!?)
  95. 2.1
  96. Å   Formatting from programs Ö If you want to write a disc copier
  97. program, as we at Archive obviously did for copying the program discs,
  98. you have to find some way to get round the fact that *FORMAT asks for a
  99. keyboard confirmation. We did it by creating a file on the second drive
  100. that consisted of just <Y> and then called that is input from the
  101. program. Ingenious! But then we found the easy (undocumented) way of
  102. doing it:
  103. 2.1
  104. *FORMAT 0 D Y
  105. 2.1
  106. Simple if you know how!
  107. 2.1
  108. Å   Replacement 3.5ö disc drives Ö One reader had to replace his 3.5ò
  109. drive and Acorn could only offer him the official second disc drive up-
  110. grade (which includes a new front facia which he didnæt need) so he
  111. bought an un-cased 3.5ö drive from Matmos Ltd (1 Church Street,
  112. Cuckfield, W.Sussex, RH17 5JZ, 0444Ö414484) for ú59.50 + ú3 carriage +
  113. VAT. This drive was almost a direct fit and only required some judicious
  114. filing of the button slot to complete the replacement.
  115. 2.1
  116. Å   Debugging ARM code listings Ö It is sometimes useful for non-ARM
  117. code specialists who want to type in ARM code program listings to have
  118. Éwayside pointersæ as the code runs to help them debug the program and
  119. find out where they have made typing errors. Adding the occasional SWI
  120. &1nn (where nn is 30 to 39 for number 0 to 9) will print out these
  121. numbers as an indication of how far the program has got. (Better still,
  122. buy the monthly program disc!!! Ed.)
  123. 2.1
  124.  
  125.  
  126.  
  127. Å   Mannisman Tally printers with serial interface Ö Pin connections
  128. are: pins 1, 4 and 6 linked together on the Archimedes, pin 3 to pin 3
  129. on the printer, pin 5 to pin 7 on the printer and pin 8 to both pins 11
  130. and 19 on the printer.
  131. 2.2
  132. Å   SWI öXOS...ò Ö If you are using SWI öXOS...ò commands so that you
  133. can handle your own errors, it will fail if you try to return
  134. immediately after this command to the calling routine. A dummy instruc
  135. tion needs to be inserted before the LDMFD instruction. Presumably a
  136. Éfeatureæ of OS 1.2.
  137. 2.2
  138. Å   Problems with *Memory and *MemoryI Ö If you try to use these two
  139. commands in the debugger with the aim of dumping to printer, you will
  140. find that codes above &7F are not weeded out Ö they are all sent to the
  141. printer regardless which can cause all sorts of problems. The following
  142. program patch will solve the problem.
  143. 2.2
  144.  10 REM> DEBUGPCH
  145. 2.2
  146.  20 REM (C) JW^2 4th OCTOBER 1988
  147. 2.2
  148.  30 DIM A% &270C
  149. 2.2
  150.  40 OSCLIöSAVE Debugged_D 38486A0
  151. 2.2
  152.  +270Cö
  153. 2.2
  154.  50 OSCLIöLOAD Debugged_D ò+STR$~A%
  155. 2.2
  156.  60 FOR F=0 TO 3 STEP 3
  157. 2.2
  158.  70   P%=A%+&2230
  159. 2.2
  160.  80   [
  161. 2.2
  162.  90   OPT F
  163. 2.2
  164. 100   STMDB R13!,{r0-r9 ,R14}
  165. 2.2
  166. 110   .LOOP
  167. 2.2
  168. 120   LDRB  R0,[R9],#1
  169. 2.2
  170. 130   CMP   R0,#&7F
  171. 2.2
  172. 140   MOVHS R0,#&2E
  173. 2.2
  174. 150   CMP   R0,#&1F
  175. 2.2
  176. 160   MOVLS R0,#&2E
  177. 2.2
  178. 170   SWI   öXOS_WriteCò
  179. 2.2
  180. 180   BVS   (LOOP+&35D)
  181. 2.2
  182. 190   SUBS  R2,R2,#1
  183. 2.2
  184. 200   BNE   LOOP
  185. 2.2
  186. 210   ]
  187. 2.2
  188. 220 NEXT
  189. 2.2
  190. 230 OSCLIöSAVE Debugged_D ò+STR$~A%+
  191. 2.2
  192. ö +270Cò
  193. 2.2
  194. 240 OSCLIöSETTYPE Debugged_D &FFAò
  195. 2.2
  196. Å   EDITæs disappearing cursor Ö If you use Éoptionsæ (<shift-f3>), you
  197. can change to a non-flashing cursor which is visible all the time, and
  198. you donæt have to change it each time you switch on the machine because
  199. EDIT stores its options in cmos ram. (Anyone know if thereæs a way to
  200. re-program it to change the colour of the cursor?)
  201. 2.2
  202. Å   Putting sound through the monitor Ö It is perfectly possible to put
  203. the sound output from the 3.5mm stereo jack socket on the Archimedes
  204. through the amplifiers and speaker(s) of both the standard Acorn colour
  205. monitor and also the Phillips CM8833. All you need is a piece of twin
  206. screened cable (though actually I used ordinary thin three core mains
  207. flex which is OK for such a short length) and a 3.5 mm stereo jack plug
  208. (RS Components 274Ö284, ú1.19 for two). The SCART plug connections are
  209. that pin 2 is right audio, 4 is earth and 6 is left audio. The pins
  210. should be numbered, but if not, 2, 4 and 6 are the first three pins
  211. along the long edge of the plug starting from the rectangular end.
  212. 2.2
  213. Three possible problems: firstly, you may find that the SCART plug has
  214. no pins at positions 2, 4 and 6 in which case you will have to buy a new
  215. plug (Tandy N╝ 15Ö7030, ú1.49 each) and re-wire the other connections.
  216. Secondly, you may find that your cable doesnæt fit through the space
  217. available for the cable entry in the SCART plug Ö in which case, some
  218. judicious hacking of the plastic is needed. Finally, if the SCART plug
  219. has got pins at 2, 4 and 6, you may not be able to get at them to solder
  220. onto them. The solution here is to push each of the three pins back out
  221. through the body of the plug, solder them then push them back in again.
  222. It sounds easy but itæs not Ö there are little barbs the stop the pins
  223. being pushed out so you have to try to manipulate these and push the
  224. pins out at the same time Ö OK if you have three hands!
  225. 2.2
  226. The result Ö If the kids want to play Orion at full volume, they can,
  227. but I can turn it back down to a sensible volume when I use the system.
  228. 2.2
  229. Å   Stereo Speakers Ö I recently followed the suggestion in Archive 1.2,
  230. page 7 and purchased the amplified speakers (Model 40-1259E) from a
  231. local Tandy store. Initially I also purchased a couple of mains adaptors
  232. to power each unit but I found that this caused a considerable mains hum
  233. through both speakers. Upon returning to the Tandy store, I was advised
  234. that hum was caused by the mains adaptors not being earthed and, rather
  235. than spending more money on earthed mains adaptors, I exchanged the
  236. original adaptors for re-chargeable batteries which seem to work fine Ö
  237. there are also fewer wires trailing around! Whilst the stereo effect is
  238. very good, there is a problem in that there is no volume control fitted
  239. to these speakers; the suggestion from one of the staff at Tandy was to
  240. wire in two of their öL-Pad Speaker Level Controlsò. Have any other
  241. Archive readers tried this or come up with a different solution?
  242. 2.2
  243. I have found that by amending the *Configure SoundDefault middle
  244. parameter to a lower value than 7, the volume can be reduced, this does
  245. provide some measure of control of sound volume; these parameters can
  246. take a value of 0 to 7 with each unit corresponding to one eighth of the
  247. overall maximum volume (see PRM, page 537).
  248. 2.2
  249. Å   Monitor problems (with solutions!) Ö Fujitsu and MAG 14C Ö The
  250. problem began on the MAG with a distortion of the top few lines of the
  251. display when in a multisync mode. The nature of this problem suggested
  252. that the monitor took several scan lines to lock onto the composite sync
  253. signal fed to it from the Archimedes. It was decided to feed it with
  254. separate vertical (frame) and horizontal (line) sync signals, which
  255. necessitated having to alter the preset links 10 and 11 within the
  256. Archimedes. At present this involves cutting a track (Lk10) and
  257. inserting a link (Lk11), since these links are not brought out on the
  258. normal Molex type links. Having done this modification you need a
  259. *Configure Sync 0 to set ÉVertical sync onlyæ instead of ÉComposite
  260. syncæ to the monitor, otherwise the display rolls (indicating lost frame
  261. sync). This then cured the screen distortion problem but because of the
  262. way Acorn have put Composite/Vertical sync on the green signal, it kills
  263. the green output. With much trepidation this problem was overcome by
  264. disabling Acornæs implementation of this signal by cutting pin 2 of IC
  265. 4. The result is a perfect picture.
  266. 2.2
  267. The Fujitsu monitor problem was much simpler and cured far easier after
  268. the troubles with the MAG.
  269. 2.2
  270. Although the picture quality was very good, there was an excess of
  271. green, even though R39 had been removed (see Archive 1.3 p8) It was
  272. originally thought that some internal adjustment of the green gun was
  273. needed but, with the experience of MAG monitor (and having tried it on
  274. the modified sync signal from the green output) the link changes proved
  275. unnecessary as the monitor worked perfectly happily with composite sync.
  276. Again the result was a perfect picture.
  277. 2.2
  278. Anyone wanting further information on this modi-fication can either
  279. contact Reg Dalton on 0742 487992 (less technical/Evenings only) or
  280. Steve Bass (who did all the work) on 0742 708028 (Daytime) or 0742
  281. 886622 (Evenings).
  282. 2.2
  283. Å   Screen saving from the SCML Teletext adaptor Ö R L Jefferies has
  284. worked out how to dump screens from the SCML Teletext Adaptor. (Pressing
  285. the ÉSæ command option gives an error but SCML have not replied to his
  286. questions about that yet.) He has utilised Robin Newmanæs mode 7 to mode
  287. 9 utility as supplied on program disc 1.10. He copied this into the
  288. library directory on the Teletext disc and then created a mode 7 to mode
  289. 9 screensave module using Neil Strongæs öPrintkey screen dumpò (issues
  290. 1.10 p 45 and 1.11 p 7). Two lines need altering in the source program:
  291. 2.2
  292. line 840 should be changed to cmp r0,#83 and line 920 should be equs
  293. öM7M9 screensave scr<file>ò
  294. 2.2
  295. Note that you should *SETEVAL file XX before you load the öSò key module
  296. and before executing the Teletext module. One small niggle is that Robin
  297. Newmanæs module returns with the cursor ON. Is there an easy way to get
  298. rid of this?
  299. 2.2
  300. Å   Bug in C Ö Karl Strickland writes╔ There appears to be a bug in the
  301. fgets() function in version 1.54A (latest public release) of ANSI C. 
  302. Instead, use the function given below and declare it using
  303. 2.2
  304. char *xfgets (char*,int,FILE*);
  305. 2.2
  306. We have to use xfgets (as opposed to fgets) because the linker gets
  307. confused if it finds the same function declared twice.
  308. 2.2
  309. char* xfgets (char* a,int b,FILE *s)
  310. 2.2
  311. {2 .2
  312.    int c,d;
  313. 2.2
  314.    *a=NULL;     /* Must include STDIO.H */
  315. 2.2
  316.    for (c=0;c<b;c++) {2 .2
  317.       d=fgetc(s);
  318. 2.2
  319.       if (d==EOF)
  320. 2.2
  321.          return NULL;
  322. 2.2
  323.       else
  324. 2.2
  325.          if (d==13)
  326. 2.2
  327.             return a;
  328. 2.2
  329.          else
  330. 2.2
  331.             strncat(a,(char*)&d,1);
  332. 2.2
  333.    }
  334. 2.2
  335.    return a;
  336. 2.2
  337. }
  338. 2.2
  339. Å   A hint for Twin from Bj┐rn Fl┐tten Ö When using Twin to edit large
  340. BASIC programs you can easily run out of memory. (Twin complains by
  341. hanging up the computer when called.) This is because of the inconveni
  342. ent way Twin is called from BASIC. Because Twin works on ASCII files,
  343. BASIC has to expand the current program from tokenised form to ASCII.
  344. This copy is placed on top of the BASIC program and is maybe 20-30%
  345. larger than the original. Then Twin is called and makes a new copy of
  346. the program which it places on top of itself. This means that an
  347. unnecessary lot of memory is used.
  348. 2.2
  349. One solution is to let Twin run from the address of PAGE. This works
  350. because Twin is not loaded into memory before the BASIC program is
  351. expanded. However, you will have to ensure that the BASIC program is
  352. bigger than Twin, if not, Twin will be loaded over the expanded version
  353. of your program.
  354. 2.2
  355. (This unfortunately makes the problem of Twin not releasing some vectors
  356. worse. This means that these vectors will point into the middle of your
  357. BASIC program after exiting from Twin. Use reset after exiting to BASIC 
  358. and then OLD, to cure this.)
  359. 2.2
  360. Å   Problems with (Master) EDIT Ö If you get rubbish when you load up
  361. the EDIT ROM image from the BBC Master into the 6502 emulator, try
  362. loading it with:
  363. 2.2
  364. *65arthur
  365. 2.2
  366. *GO F800
  367. 2.2
  368. *EDIT
  369. 2.2
  370. Å   From Arthur to BASIC Ö If you are in the Arthur supervisor and you
  371. type *Progname where Progname is a BASIC program, it will run the
  372. program and drop you back out into the supervisor (equivalent to *BASIC
  373. Öchain Progname). However, if you *LOAD Progname, it switches to BASIC,
  374. loads the program and gives you back control with a É>æ prompt Ö
  375. equivalent to *BASIC Öload Progname but shorter to type and certainly
  376. easier than *BASIC followed by LOAD öPrognameò. If you do a *SHOW, you
  377. will see the filetype definitions which make sense of it all.
  378. 2.2
  379. Å   Sprites and Sprite Commands Ö Paul White-horn writes╔ The Sprite
  380. Editor on the Welcome disc does not work properly being unable to create
  381. masked sprites (those with a transparent back-ground) or to save shades
  382. of colour that have been set up in the various edit modes. For many
  383. board style games this is not an insuperable difficulty and for chess
  384. and checkers, mode 1 creates reasonably detailed sprites in red, yellow,
  385. black and white.
  386. 2.2
  387. The simplest way of getting your own sprites from the Welcome disc onto
  388. your game or program disc is to *SNEW to wipe out anything that can be
  389. called a sprite in RAM, *SLOAD (by name or number) your sprite or sprite
  390. file into the machine from the Welcome disc (you donæt need to be in the
  391. Sprite Editor to do this), take out the Welcome disc, insert your game
  392. disc, *MOUNT it and *SSAVE (name) the contents of the machineæs RAM.
  393. Whatever sprites you have in RAM at this point will all go into a file
  394. created and named by the *SSAVE command and will be placed on your own
  395. disc.
  396. 2.2
  397. To check that they are all safely installed on your game disc *SNEW
  398. again (to clear RAM) and *SLOAD (name) the sprite(s) you have just
  399. *SSAVEæd on your disc. Now typing *SLIST will bring up a list of ALL the
  400. sprites in RAM which should correspond to the ones you have just
  401. transferred from the Welcome disc. At this point you can rename the
  402. sprites you see listed before you but the syntax for the *SRENAME
  403. command is not as it appears in the User Guide. Type *SRENAME (oldname)
  404. (newname) without commas or other punctuation marks separating the two
  405. names and without any quote marks round the names. This renames sprites
  406. in RAM and if you want these new names preserved on your disc then they
  407. must be *SSAVEæd collectively back to disc and you can  save them with a
  408. different file name if you wish.
  409. 2.2
  410. *SDELETE (name) deletes a sprite in RAM whereas *DELETE (name) deletes a
  411. sprite (or file of sprites) on disc. Having weeded out sprites you donæt
  412. require with *SDELETE it is best to *SSAVE those you do need (possibly
  413. with a new file name) and *SNEW to clear RAM before proceeding further.
  414. This way you will not have rogue sprites lurking in RAM or in files on
  415. your disc where they may be called by default if they have the same name
  416. or number as the new ones.
  417. 2.2
  418. To create files of sprites from different sources you can use *SMERGE
  419. which merges a sprite (or file of same) from disc with those already
  420. installed in RAM. Those coming from disc have priority so if you have
  421. two sprites with the same name or number, the one on the disc will
  422. overpower its namesake in RAM. This command seems a little haphazard on
  423. my 310 especially with sprites which are numbered and occasionally
  424. several tries are needed to make it happen as required.
  425. 2.2
  426. If you intend to choose sprites during the course of your game as a
  427. consequence of numerical operations then it is necessary to use numbers
  428. as names so that they can be called with the VDU command. The VDU call
  429. takes variables with a range between 0 and 255 so make sure your sprites
  430. donæt exceed this range.
  431. 2.2
  432. *SINFO prints the size of the sprite workspace and *SCOPY (oldname)
  433. (newname) copies the named sprite. *SGET picks up a portion of the
  434. screen as a sprite but for details of this see the User Guide.
  435. 2.2
  436. Å   EMR SoundSynth + CC ROM podule Ö There has been a problem of a clash
  437. between EMRæs SoundSynth and Computer Conceptsæ ROM/RAM podule in that
  438. after using SoundSynth, the contents of the RAM filing system disap
  439. peared! (Fortunately, I had a recent backup!) EMR have been looking into
  440. the problem and have sorted it out. If you have had the same problem,
  441. return your disc to EMR and they will replace it öin most cases, free of
  442. chargeò.
  443. 2.2
  444. Å   Loading palette files Ö Here is a simple BASIC program to load a
  445. ö!Paletteò file and set the palette up. The file format really is
  446. simple: 3 bytes are stored for each colour Ö red, green and blue
  447. respectively. This group of 3 bytes is repeated for all 20 colours saved
  448. Ö logical colours 0-15, the border, and mouse colours 1-3.
  449. 2.2
  450.  10 REM >TestPal
  451. 2.2
  452.  20 REM ===> To demonstrate reading a
  453. 2.2
  454.  30 REM ===> Desktop !Palette file
  455. 2.2
  456.  40 REM By John Smith, September 1988
  457. 2.2
  458.  50 REM
  459. 2.2
  460.  60 MODE 12 :REM Any 16-colour mode
  461. 2.2
  462.  will do.
  463. 2.2
  464.  70 :
  465. 2.2
  466.  80 REM Put all 16 colours on screen,
  467. 2.2
  468.  and a 2-colour mouse pointer.
  469. 2.2
  470.  90 FOR x%=0 TO 15
  471. 2.2
  472. 100   GCOL x%
  473. 2.2
  474. 110   RECTANGLE FILL x%*80,0,80,1023
  475. 2.2
  476. 120 NEXT
  477. 2.2
  478. 130 MOUSE ON
  479. 2.2
  480. 140 *POINTER 1
  481. 2.2
  482. 150 PRINTTAB(0,0);öNow press a key to
  483. 2.2
  484.  load the É!Paletteæ fileö
  485. 2.2
  486. 160 dummy=GET
  487. 2.2
  488. 170 :
  489. 2.2
  490. 180 REM Now load the palette file.
  491. 2.2
  492. 190 handle%=OPENIN ö!Paletteò
  493. 2.2
  494. 200 REM Do östandardò colours first.
  495. 2.2
  496. 210 FOR loop%=0 TO 15
  497. 2.2
  498. 220   COLOUR loop%, BGET#handle%,
  499. 2.2
  500.  BGET#handle%, BGET#handle%
  501. 2.2
  502. 230 NEXT
  503. 2.2
  504. 240 :
  505. 2.2
  506. 250 REM Screen Border
  507. 2.2
  508. 260 VDU 19,0,24, BGET#handle%,
  509. 2.2
  510.  BGET#handle%, BGET#handle%
  511. 2.2
  512. 270 :
  513. 2.2
  514. 280 REM Mouse colour 1
  515. 2.2
  516. 290 MOUSE COLOUR 1, BGET#handle%,
  517. 2.2
  518.  BGET#handle%, BGET#handle%
  519. 2.2
  520. 300 MOUSE COLOUR 2, BGET#handle%,
  521. 2.2
  522.  BGET#handle%, BGET#handle%
  523. 2.2
  524. 310 MOUSE COLOUR 3, BGET#handle%,
  525. 2.2
  526.  BGET#handle%, BGET#handle%
  527. 2.2
  528. 320 CLOSE#handle%
  529. 2.2
  530. Å   InterWord to ArcWriter Ö if you have InterWord files from BBC days
  531. and want to transfer them to ArcWriter, look in the First Word Plus
  532. hints below where the transfer to FWP is achieved by transferring first
  533. to ArcWriter.
  534. 2.2
  535. Å   Double-precision to BBC BASIC Ö following on from the floating point
  536. BCD to BBC BASIC conversion program published in Archive 1.11, page 32,
  537. Carl Cepurneek has done a routine which converts from the more efficient
  538. Double-precision reals to BBC BASIC.
  539. 2.2
  540. 10 REM>Carl - FPU number conversion
  541. 2.2
  542. 20 REM BBC BASIC V to FPU memory
  543. 2.2
  544. 30 REM format conversions
  545. 2.2
  546.  40 REM Packed decimal print routine
  547. 2.2
  548.  50
  549. 2.2
  550.  60 REM Carl P.Cepurneek 26 Clyde St
  551. 2.2
  552.  70 REM Parkside, S.A.5063,Australia
  553. 2.2
  554. 100
  555. 2.2
  556. 110 DEFPROCcvt_s(bbc,adr) :REM from
  557. 2.2
  558.  BBC real at |bbc to FP at adr
  559. 2.2
  560. 120 LOCAL exp%,sign%,mant%
  561. 2.2
  562. 130 !adr=0:adr!4=0   :REM clear
  563. 2.2
  564. 140 IF |bbc=0:!adr=0:ENDPROC
  565. 2.2
  566. 150 exp%=(bbc?4)-&80 :REM get
  567. 2.2
  568.  adjusted exponent
  569. 2.2
  570. 160 IFexp%>0 exp%=exp%+126 ELSE exp%=
  571. 2.2
  572. 126-ABS(exp%)
  573. 2.2
  574. 170 !adr=!adr OR exp%<<23:REM set
  575. 2.2
  576.  exponent bits
  577. 2.2
  578. 180 sign%=!bbc AND &80000000
  579. 2.2
  580. :REM isolate sign bit
  581. 2.2
  582. 190 !adr=!adr OR sign%:REM set sign bit
  583. 2.2
  584. 200 mant%=!bbc AND &7FFFFFFF :REM
  585. 2.2
  586.  clear neg bit if set
  587. 2.2
  588. 210 !adr=!adr OR mant%>>>8:REM set
  589. 2.2
  590.  mantissa
  591. 2.2
  592. 220 ENDPROC
  593. 2.2
  594. 230
  595. 2.2
  596. 240 DEFPROCcvt_d(bbc,adr):REM from
  597. 2.2
  598.  real at address bbc
  599. 2.2
  600. 250 LOCAL exp%,sign%,mant%
  601. 2.2
  602. 260 !adr=0:adr!4=0
  603. 2.2
  604. 270 IF |bbc=0:!adr=0:ENDPROC
  605. 2.2
  606. 280 exp%=(bbc?4)-&80 :REM get
  607. 2.2
  608.  adjusted bbc exponent
  609. 2.2
  610. 290 IF exp%>0 exp%=exp%+1022 ELSE exp%
  611. 2.2
  612. =1022-ABS(exp%)
  613. 2.2
  614. 300 !adr=!adr OR exp%<<20
  615. 2.2
  616. 310 sign%=!bbc AND &80000000
  617. 2.2
  618. :REM isolate sign bit
  619. 2.2
  620. 320 !adr=!adr OR sign%:REM set sign bit
  621. 2.2
  622. 330 mant%=!bbc AND &7FFFFFFF
  623. 2.2
  624. :REM clear sign bit set
  625. 2.2
  626. 340 !adr=!adr OR mant%>>>11 :REM set
  627. 2.2
  628.  mantissa msbits
  629. 2.2
  630. 350 mant%=mant%<<21 :REM shift over
  631. 2.2
  632.  low bits
  633. 2.2
  634. 360 adr!4=adr!4 OR mant%  :REM set
  635. 2.2
  636.  mantissa lsbits
  637. 2.2
  638. 370 ENDPROC
  639. 2.2
  640. 380
  641. 2.2
  642. 390 DEFPROCcvt_e(bbc,adr):REM from
  643. 2.2
  644.  BBC real at |bbc
  645. 2.2
  646. 400 LOCAL exp%,sign%,mant%
  647. 2.2
  648. 410 !adr=0:adr!4=0:adr!8=0 :REM clear
  649. 2.2
  650.  destination
  651. 2.2
  652. 420 IF |bbc=0:!adr=0:ENDPROC
  653. 2.2
  654. 430 exp%=(bbc?4)-&80 :REM get
  655. 2.2
  656.  adjusted exponent
  657. 2.2
  658. 440 IFexp%>0 exp%=exp%+16382 ELSE
  659. 2.2
  660.  exp%=16382-ABS(exp%)
  661. 2.2
  662. 450 !adr=!adr OR exp%  :REM set
  663. 2.2
  664.  exponent bits
  665. 2.2
  666. 460 sign%=!bbc AND &80000000  
  667. 2.2
  668. :REM isolate sign bit
  669. 2.2
  670. 470 !adr=!adr OR sign%:REM set sign bit
  671. 2.2
  672. 480 mant%=!bbc OR &80000000  :REM set
  673. 2.2
  674.  top bit (J)
  675. 2.2
  676. 490 adr!4=adr!4 OR mant% :REM set
  677. 2.2
  678.  mantissa
  679. 2.2
  680. 500 ENDPROC
  681. 2.2
  682. 510
  683. 2.2
  684. 520 DEFFNprint_packed(base%)
  685. 2.2
  686. 530 LOCAL ms%,ms$,es%,es$,m%,s%
  687. 2.2
  688. 540 @%=&00001
  689. 2.2
  690. 550 m%=(!base% AND &80000000)>>>31
  691. 2.2
  692. 560 IF m%=0 ms$=ö+ò ELSE ms$=ö-ò
  693. 2.2
  694. 570 PRINT ms$;
  695. 2.2
  696. 580 m%=(!base% AND &F<<8) >>>8
  697. 2.2
  698. 590 PRINT m%;ö.ò;
  699. 2.2
  700. 600 FOR s%=4 TO 0 STEP -4
  701. 2.2
  702. 610   m%=(!base% AND &F<<s%) >>>s%
  703. 2.2
  704. 620   PRINT m%;
  705. 2.2
  706. 630 NEXT
  707. 2.2
  708. 640 FOR w%=4 TO 8 STEP 4
  709. 2.2
  710. 650   FOR s%=28 TO 0 STEP -4
  711. 2.2
  712. 660     m%=(w%!base% AND &F<<s%) >>>s%
  713. 2.2
  714. 670     PRINT m%;
  715. 2.2
  716. 680   NEXT
  717. 2.2
  718. 690 NEXT
  719. 2.2
  720. 700 e%=(!base% AND &40000000)>>>30
  721. 2.2
  722. 710 IF e%=0 es$=ö+ò ELSE es$=ö-ò
  723. 2.2
  724. 720 PRINTö Eò;es$;
  725. 2.2
  726. 730 FOR s%=24 TO 12 STEP -4
  727. 2.2
  728. 740   m%=(!base% AND &F<<s%) >>>s%
  729. 2.2
  730. 750   PRINT m%;
  731. 2.2
  732. 760 NEXT
  733. 2.2
  734. 770 =öò
  735. 2.2
  736. Å   Using 40-track drives Ö If you have a 40 track 5.25ö drive as used
  737. on PC clones, you can use it under the PC emulator but, in native
  738. Archimedes ADFS modes you will have problems. To get round it, format
  739. the disc as normal then, when it goes beyond öFormatting 40ò and starts
  740. clicking as it reaches the end of the travel on the head movement, press
  741. <ctrl-break>. The disc is now formatted, but the free space map and
  742. catalogue have not been installed. This can be done with:
  743. 2.2
  744. DIM buffer% 3072
  745. 2.2
  746. SYSöADFS_DiscOpò,,1,0,buffer%,3072
  747. 2.2
  748. SYSöADFS_DiscOpò,,2,1,buffer%,3072
  749. 2.2
  750. You try this entirely at your own risk! Ed.
  751. 2.2
  752. Å   Problems with ON ERROR LOCAL Ö John Smith says he thinks heæs
  753. discovered a problem when using LOCAL ERROR with ON ERROR LOCAL. It
  754. occurs because ON ERROR LOCAL stores the exact position in the program
  755. structure. The User Guide mentions this with respect to REPEAT...UNTIL
  756. and WHILE...ENDWHILE loops, but it also seems to apply to IF..THEN...
  757. ELSE...ENDIF constructs. Once the error handler has done its job,
  758. processing must continue at the same part in the structure in which the
  759. original error happened. For example,
  760. 2.2
  761. 1000 DEF PROCtest(arg)
  762. 2.2
  763. 1010 LOCAL ERROR
  764. 2.2
  765. 1020 ON ERROR LOCAL PRINT öCanæt
  766. 2.2
  767.  divide by zero Ö try againö
  768. 2.2
  769. 1030 IF arg < 100 THEN
  770. 2.2
  771. 1040 INPUT value
  772. 2.2
  773. 1050 PRINT arg/value
  774. 2.2
  775. 1060 ENDIF
  776. 2.2
  777. 1070 ENDPROC
  778. 2.2
  779. If a value of zero is input, line 1050 will error. As written, the above
  780. code will then print a warning message and effectively execute a öGOTO
  781. 1030ò. At this point, the error handler stack is corrupted. The program
  782. may appear to work without problem, but if any future error should
  783. occur, the program may produce a run-time error something like öAttempt
  784. to exit from badly nested error handlerò or something similar. Occasion
  785. ally, I have even managed to produce the dreaded öAddress Exception
  786. errorò!
  787. 2.2
  788. The solution to this problem is quite simple Ö place the code that could
  789. error together with the relevant error handler in a separate PROCedure.
  790. I have not (yet) had any problems doing this:
  791. 2.2
  792. 1000 DEF PROCtest(arg)
  793. 2.2
  794. 1030 IF arg < 100 THEN
  795. 2.2
  796. 1050 PROCprint(arg)
  797. 2.2
  798. 1060 ENDIF
  799. 2.2
  800. 1070 ENDPROC
  801. 2.2
  802. 2000 DEF PROCprint(arg)
  803. 2.2
  804. 2010 LOCAL ERROR
  805. 2.2
  806. 2020 ON ERROR LOCAL PRINT öCanæt
  807. 2.2
  808.  divide by zero Ö try againö
  809. 2.2
  810. 2040 INPUT value
  811. 2.2
  812. 2050 PRINT arg/value
  813. 2.2
  814. 2060 ENDPROC
  815. 2.2
  816. First Word Plus Hints & Tips
  817. 2.2
  818. Here are a few of the many contributions weæve been sent about First
  819. Word Plus. Weæve got a file of about ten other contributions, so we do
  820. need someone who knows FWP, has a reasonable skill at writing and has a
  821. bit of spare time to field the enquiries, assimilate the hints and tips
  822. and regurgitate something to us each month.
  823. 2.2
  824. Å   First Word Plus startup Ö If you are getting fed up of starting
  825. First Word Plus and finding yourself in lower case, you could *Configure
  826. Nocaps, but that is a nuisance if you do programming and want to start
  827. up in Shiftcaps. The solution is to extend the boot file, adding
  828. *FX202,48.
  829. 2.2
  830. Å   LQ850 with sheetfeeder Ö If youære having problems with this
  831. combination, Acorn say that you should edit the printer driver so that
  832. entry 4 (vertical tab) is commented out by pre-fixing it with a ö*ò.
  833. Also, note that if your printer is doing auto-linefeeds, you should also
  834. edit option 1 to remove the line feed value (A) from the line to leave
  835. just the carriage return (D).
  836. 2.2
  837. Å   Star LC10 Ö (ref. the Help enquiry we had last month) David Francis
  838. says he uses the Epson FX driver successfully with this printer. He has
  839. the dip switches set as follows: 1-1 to 1-8 and 2-1 and 2-4 are all ON
  840. and 2-2 and 2-3 are OFF. The Archimedes is configured to IGNORE 0. With
  841. this setting, the printer prints out the test, including the graphics
  842. part. As set, it also prints under <ctrl-B> as well as with Artisan.
  843. Heæs also tried to change the hex file to get it to work with quadruple
  844. size, but hasnæt succeeded yet.
  845. 2.2
  846. Å   Printer drivers Ö In designing my own printer drivers for both the
  847. Citizen 120D and Star LC-10 printers, I have not come across the problem
  848. noted, but mine were modified from the Epson LX printer driver. There
  849. was an item on the Letters section (page 128) of Octoberæs issue of the
  850. Micro User referring to an apparently similar problem, which the writer
  851. cured by öcommenting outò line &20 of the printer driver. I must admit
  852. that I cannot understand why this should have any effect, but in case it
  853. benefits other Archive readers, I detail below those elements of the
  854. printer drivers I have set up relating to form or line feeds (refer also
  855. to page 227 of the First Word Plus manual):
  856. 2.2
  857. 1D, A Ö Linefeed (N.B. carriage return & linefeed)
  858. 2.2
  859. 1E, C Ö Formfeed (N.B. &C = 12 as mentioned in the article)
  860. 2.2
  861. 1F, 12 Ö Horizontal initialisation (N.B. appears to cancel condensed)
  862. 2.2
  863. 20, 1B, 52, 0 Ö Vertical initialisation (N.B. appears to select USA
  864. characters)
  865. 2.2
  866. A further possible cause of problems may be to do with the printeræs dip
  867. switches, on page 218 of the First Word Plus manual it does state that:
  868. 2.2
  869. Skip over perforation must be DISABLED and Auto linefeed must be
  870. DISABLED
  871. 2.2
  872. Å   Printer Drivers with extended characters Ö Ted Peat has sent in
  873. various bits for FWP which weæve put on the program disc.
  874. 2.2
  875. The printer drivers were written to permit both the Panasonic KXP-1081
  876. and the Diablo-ecs printer to access the same set of extended characters
  877. (those with codes from 160 to 255). The character set of the Archimedes
  878. is also modified to suit.
  879. 2.2
  880. The Diablo-ecs printers use a daisy wheel with a double row of charac
  881. ters, giving 192 in all. The usual ASCII set is supplemented by
  882. characters with codes >128. The description given here applies to the
  883. Éscientificæ wheel containing Greek and mathematical symbols. The KXP-
  884. 1081 can be switched to emulate the IBM Graphics set, which also
  885. includes some Greek letters and some (but not all) useful mathematical
  886. symbols, again with codes >128. There are also some table-drawing
  887. symbols which are replicated several times over, and accented characters
  888. not needed for this application. Since up to 40 user-defined characters
  889. are possible, these redundant characters can be replaced. This then
  890. offers the opportunity to produce matched sets of symbols for the two
  891. printers and the Archimedes.
  892. 2.2
  893. I decided to include the complete Greek alphabet, which involves
  894. duplication of some upper case letters, and (for the KXP-1081 only), one
  895. set of table-drawing symbols. Two other symbols were added: an overline
  896. and backspace. Backspace is entered into the text as a large leftward
  897. pointing arrow-head (stored as character 161), but interpreted by the
  898. printer as a true backspace. One consequence of this, of course, is that
  899. text loses its WYSIWYG property. The advantage, however, is that both
  900. superscripts and subscripts can be attached to the same symbol, and the
  901. overline can be used to write a bar above a character. Since these
  902. peculiar needs are only likely within equations, the loss of on-screen
  903. text formatting is a minor irritation. Another complication was that the
  904. Diablo lost its left margin alignment after a backspace, when printing
  905. in the reverse direction. This option had to be switched off, slowing
  906. the printer down.
  907. 2.2
  908. There were two options for changing the Archi-medes character set. One
  909. was to change the Archi-medes font, to match that desired as far as
  910. possible, and then to redefine characters for the few changes needed.
  911. The most useful character set is that described as BFONT on p. 458 of
  912. the User Guide. To access this you need to *Configure Country Master.
  913. The second way: which is the one I adopted was to redefine all charac
  914. ters from 160 to 255. To do this I added a section to the 1st Word +
  915. loading program (Library.1stWord+ on the program disc).
  916. 2.2
  917. Once this was done, mapping the new character set to the Diabloæs set
  918. was easy: merely rewrite one of the provided Diablo Printer Drivers (in
  919. the hex dir-ectory) by changing the character translation table which
  920. forms the last part of the printer driver text.
  921. 2.2
  922. The KXP-1081 offered more complications. Firstly, it is necessary to
  923. download the redefined character set before loading 1stWordPlus. Another
  924. addition to the loader program, together with a user prompt, took care
  925. of this. Secondly, switching this printer to its IBM Graphics mode
  926. caused comp-lications with graphics printing: all the linefeeds became
  927. doubled! The printer driver codes were therefore expanded so that for
  928. each character the printer was switched into IBM Graphics set, the
  929. character printed, and then switched back to the Epson mode. This sends
  930. seven characters to the printer for every one actually printed. Since
  931. these are only occasional characters, the loss of efficiency is not
  932. important
  933. 2.2
  934. Å   Printer Driver Generator Ö John Smith has sent in, not another
  935. printer driver, but a printer driver generator program. Heæs given it to
  936. be used as public domain software, so we have put it on Shareware disc
  937. number 2. For best results, copy the PDG program onto a copy of the 1st
  938. Word Plus Utilities disk before running it.
  939. 2.2
  940. Å   Tabs and underlining Ö This one is for dum-dums like me, writes
  941. David Crofts, who learn word-processing at the finger tip.
  942. 2.2
  943. Underlining Ö I spent many happy, but frustrating, hours fiddling with
  944. forms to try to sort out under-lining in intervening spaces, till I
  945. discovered that the hated TAB holds the key! (I expect this is obvious
  946. for lots of people, but hold on to the yawns.) I was used to VIEW where
  947. the TAB key worked öprop-erlyò. (It inserted a TAB character, whatever
  948. that was, but it meant that a change in ruler meant a change in layout.)
  949. In FWP the Indent key does this job, except that it puts in a special
  950. stretch space which is fixed in spite of further ruler alterations.
  951. Because of this I had ignored TAB as useless.
  952. 2.2
  953. TAB inserts a set of normal spaces which have to be deleted individually
  954. Ö a nuisance if you are experi-menting with documents. But Ö you can
  955. underline TAB spaces, whereas you canæt underline Indents! And therein
  956. lies the hint!
  957. 2.2
  958. By all means use indents to facilitate experi-mentation but, in the end,
  959. TABs are preferable, where you wish subsequently to underline. If you
  960. have used Indents, then all is not lost, though fiddle is the name of
  961. the game. Turn off Insert, and turn on Underline (f2), then fill in the
  962. spaces with Fixed Space (f10). Then use the mouse or keyboard to
  963. underline the words.
  964. 2.2
  965. e.g. Say you have a form, the head of which is:
  966. 2.2
  967. Name   Address   Telephone
  968. 2.2
  969. the above is the result using Indent, but using TAB you will achieve:
  970. 2.2
  971. Name╩╩╩╩╩╩Address╩╩╩╩╩╩Telephone╩╩╩╩╩
  972. 2.2
  973. Placing a TAB at the appropriate point near the end of the ruler allows
  974. the line to be printed to the same length on each line.
  975. 2.2
  976. Å   InterWord to FWP via ArcWriter Ö This is how Ian Barnes achieves the
  977. transfer:
  978. 2.2
  979.    1.   Transfer file from IW to AW_DOC directory
  980. 2.2
  981.    2.   Run ArcWriter
  982. 2.2
  983.    3.   Press <select> for filing menu
  984. 2.2
  985.    4.   Highlight file x
  986. 2.2
  987.    5.   Press <menu>, select import, flowing, return
  988. 2.2
  989.    6.   Press <select> for filing menu
  990. 2.2
  991.    7.   Press <menu> and select export plus new name
  992. 2.2
  993.    8.   Transfer file to 1WP.doc directory
  994. 2.2
  995.    9.   Run 1WP and open file
  996. 2.2
  997.    10.   Select WPmode from edit menu
  998. 2.2
  999.    11.   Tidy up text by deleting control characters, changing any odd
  1000. letters and inserting returns at line ends to leave a presentable result
  1001. 2.2
  1002. Å   Files from ArcWriter Ö The article by Brian Carroll in Julyæs issue
  1003. of Archive under the heading of öFirst Word Plus Notesò (pages 21-23)
  1004. was very useful together with the program ConvertWP (also on that
  1005. monthæs Magazine disc). Although designed to convert Wordwise Plus
  1006. files, the program works quite well with ArcWriter as well. Briefly the
  1007. procedure to convert ArcWriter files into First Word Plus is as follows:
  1008. 2.2
  1009. 1. From the ÉFilingæ menu in ArcWriter select the ÉExportæ option to
  1010. save the file (e.g. under the name ötestARCò) and then exit from
  1011. ArcWriter.
  1012. 2.2
  1013. 2. Load the ConvertWP program and enter the appropriate Source
  1014. (ötestARCò) and Destination (e.g. ötest1WPò) filenames.
  1015. 2.2
  1016. 3. Load First Word Plus and then the converted file (ötest1WPò).
  1017. 2.2
  1018. 4. Select ÉWPmode onæ from the Edit menu.
  1019. 2.2
  1020. 5. Reformat the whole text by using the Style menu to ÉReformatæ the
  1021. ÉWhole documentæ.
  1022. 2.2
  1023. Odd words may sometimes get missed out of the converted text, possibly
  1024. due to the fact that this data was preceded by ötabsò in ArcWriter.
  1025. 2.2
  1026.  
  1027. Å   Fontsize problems? (Ed. got caught out on this one) With Claresæ
  1028. Sound and Graphics demo, when you start it up, it says it needs 44k of
  1029. fontsize, so I tried to re-configure with fontsize 6 on the basis that 6
  1030. times 8k = 48k. Now, as Iæm sure you will all realise, that didnæt work
  1031. because fontsize is specified in 4k chunks, not 8k or 32k.
  1032. Å   Logotron printer dump Ö Logotron told one of our readers that there
  1033. is no printer dump for their Archimedes Logo. However, our Printkey Dump
  1034. program (issue 1.10, page 45) works fine.
  1035. Å   RX80 dumps for Artisan Ö Clares originally said that Artisan
  1036. wouldnæt dump pictures on an Epson RX-80 and that the FX-80 was the
  1037. Ébase-lineæ printer as far as they were concerned. How-ever, they have
  1038. since produced a Éhelp-sheetæ of the pokes needed to convert the dump to
  1039. an RX-80.
  1040. 2.3
  1041. The gist of the change is as follows;
  1042. 2.3
  1043. If your printer will support CRT mode graphics, (ESC ö*ò,4) then use it.
  1044. If not then use ESC öKò for normal single density bit image mode, but
  1045. CRT mode gives a much better image and less distortion.
  1046. 2.3
  1047. *LOAD ART6 10000
  1048. 2.3
  1049. !&10EC5=&042A1B for CRT or =&4B1B00 for single density
  1050. 2.3
  1051. *SAVE ART6 10000 +12FF
  1052. 2.3
  1053. *SETTYPE ART6 &FF8
  1054. 2.3
  1055. The resultant print produces oval circles(!) but can be triggered from
  1056. Artisan.
  1057. 2.3
  1058. Å   Monochrome displays on the 440 Ö Brian Cowan writes, I was lucky
  1059. enough to have one of the first release of 440æs which I used with one
  1060. of the Acorn colour monitors. I know that the resolution of these
  1061. monitors is nothing fantastic, but it seemed sensible to purchase them
  1062. together; at that stage I was not sure what connection standards were
  1063. used.
  1064. 2.3
  1065. About six months later I had reason to use an ordinary mono monitor on
  1066. the 440, and imagine my horror when I found it did not work. Ordinarily
  1067. I would have sent the computer back to the supplier to have it fixed
  1068. under warranty. However, the machine was in constant use so we decided
  1069. to live with it, using only a colour monitor.
  1070. 2.3
  1071. I now discover that there is nothing wrong with the 440!! When these
  1072. machines leave the factory they are not configured to drive standard
  1073. resolution mono monitors, they are set up for high res monitors. Inside
  1074. the case, on the PCB are some jumpers that must be set according to what
  1075. sort of monochrome monitor you want to drive.
  1076. 2.3
  1077. At the north-west corner of the board is a plug called PL2. I think this
  1078. does nothing except carry some pin connector links. A little further
  1079. southwards on the board are some pins labeled LK13 and LK14. If you want
  1080. to drive a standard resolution monochrome monitor, you must take two
  1081. links from PL2 and place one on LK13 and the other on LK14.
  1082. 2.3
  1083. Connection to a monochrome monitor on 440 machines is through two BNC
  1084. sockets on the back panel. One socket is marked SYNC and the other is
  1085. labeled MONO. For high resolution, both of these are used but for
  1086. standard resolution only the SYNC socket is used. Since this is a BNC
  1087. socket rather than the phono socket on the 300 series, you will have to
  1088. make up or purchase a special lead or a converter.
  1089. 2.3
  1090. For those of you contemplating the purchase of a multisync monitor for
  1091. those extra modes etc. you will be happy to hear that the Archimedes
  1092. connect-ions are the same as those on PC machines. This means that if
  1093. the monitor comes with a lead, it will probably be suitable for the
  1094. Archimedes. This is certainly true for the Taxans that I use. Inciden
  1095. tally, concerning the Taxans, some have rather dull pictures. Has anyone
  1096. tried brightening them up?
  1097. 2.3
  1098. Å   Desktop calculator Ö öThe calculator on my desktop doesnæt respond
  1099. to the keyboard whereas your review of Arthur 1.2 said it did.ò So I
  1100. tried to work the calculator with the keyboard keys myself and it didnæt
  1101. seem to work. Then I realised that it wonæt respond until you enable it
  1102. for keyboard input by clicking on it with the mouse. The top bar then
  1103. goes red and itæs ready to take input from either the main keyboard or
  1104. the numeric pad, delete being the equivalent of clear. Easy when you
  1105. know how.
  1106. 2.3
  1107. Å   Conditional booting. If you have a boot file in the RFS on battery-
  1108. backed RAM, you may want to do some things when you first switch on but
  1109. not every time you do <ctrl-break>. You can achieve this by making it
  1110. conditional on the monotonic timer, i.e. the timer which is initialised
  1111. at switch-on and not reset in any other way. To read this timer, use SYS
  1112. &42 TO T% where T% then gives the time in centiseconds so you can say
  1113. that IF T%<200 (say) then do the switch-on bits and pieces ELSE do the
  1114. <ctrl-break> things.
  1115. 2.3
  1116. Å   CharDes fonts Ö If you have fonts produced by CharDes, you can
  1117. convert them for use on the Archimedes as follows. Enter 65Arthur and
  1118. type
  1119. 2.3
  1120. *spool thin2
  1121. 2.3
  1122. *thin
  1123. 2.3
  1124. *spool
  1125. 2.3
  1126. where thin is the name of the original font file and thin2 is going to
  1127. be the new file. Then use a text editor (such as the Master128æs öEditò)
  1128. and edit out the first and last line (i.e. the *thin and *spool). Then
  1129. resave as thin2 and settype it as &FF7 (BBC font). When you need it,
  1130. just type *thin2. If you do a *SHOW, you will see that the load and run
  1131. actions of a file type &FF7 is to *PRINT it Ö which is just what you
  1132. want.
  1133. 2.3
  1134. Å   Command files Ö In order to disable vdu output during a command file
  1135. e.g. the !boot file, try:
  1136. 2.3
  1137. *echo ||U
  1138. 2.3
  1139. ...
  1140. 2.3
  1141. ...
  1142. 2.3
  1143. *echo ||F
  1144. 2.3
  1145. Two string escape characters are needed (as Iæve explained in a previous
  1146. tip) so that the final command executed is *echo |U
  1147. 2.3
  1148. i.e. <ctrl-U>. This issues a VDU 21 which disables vdu output until a
  1149. VDU 6 is issued <ctrl-F>.
  1150. 2.3
  1151. This is similar to the ECHO OFF command of MS-DOS. Indeed if the string
  1152. used is:
  1153. 2.3
  1154. *echo ||U|H|Hoff
  1155. 2.3
  1156. then all that is visible is öecho offò which explains why nothing else
  1157. is visible to the user and also hides the control code sequence used.
  1158. The öcompiledò string is then *echo |U<8><8>off. One side effect is that
  1159. two line feeds will occur so if this is undesirable a couple of reverse
  1160. line feeds can be incorporated with
  1161. 2.3
  1162. *echo ||U|H|Hoff|K|K
  1163. 2.3
  1164. Note that the use of single string escape characters means that the
  1165. cursor control codes will have immediate effect whereas the <ctrl-U>
  1166. will only be issued when the echo command is executed.
  1167. 2.3
  1168. The double string escape characters are only needed for use with *Build,
  1169. if a text editor is used then only single characters are needed but the
  1170. control codes must be input directly, e.g. so they appear as inverse
  1171. video in TWIN, for those cases where the affect is immediate.
  1172. 2.3
  1173. (Sorry if this sounds a bit confusing but the difference between two and
  1174. one |æs, and when to use which, is an entire discussion point on its
  1175. own. Perhaps this could be a short article Ö it is important whenever
  1176. command files issue messages etc.) Clifford Hoggarth.
  1177. 2.3
  1178. Å   Quick *COPYing and *WIPEing Ö When you enter a wild card *COPY or
  1179. *WIPE on a list of files such as TEST1, TEST2, TEST3, etc. you are
  1180. presented with a list of options at the end of the copy or wipe
  1181. statement
  1182. 2.3
  1183. *COPY :0.TEST* :1.TEST*
  1184. 2.3
  1185. Copy file adfs::0.TEST1 as adfs::1.
  1186. 2.3
  1187. TEST1 (Y/N/Q/A)?
  1188. 2.3
  1189. etc.
  1190. 2.3
  1191. The option Y, N, Q and A mean the following :-
  1192. 2.3
  1193. Y Ö means copy that file
  1194. 2.3
  1195. N Ö means donæt copy that file
  1196. 2.3
  1197. Q Ö means quick copy all file with the wild card specification after and
  1198. including that one with no further confirmation prompts
  1199. 2.3
  1200. A Ö means abort from copying
  1201. 2.3
  1202. The *WIPE option works in a similar manner but deleting.
  1203. 2.3
  1204. Å   Stereo Speakers Ö After reading the hint in Archive 1.2 about adding
  1205. a pair of Tandy amplified speakers, I promptly rushed off Éto townæ.
  1206. They had just run out of stock, because the ú25 price-tag was a special
  1207. offer. However Tandy were very helpful and ordered me a pair which
  1208. arrived within a week and which at ú29.95 are still excellent value.
  1209. However, a set of alkaline batteries was quoted as ú7.95!! Instead, a
  1210. surplus old calculator mains adaptor and two power plugs (30p each from
  1211. a local electronics shop) provided a cheaper source of power. If you
  1212. donæt have a spare one, a new power supply from Rapid Electronics costs
  1213. less than ú4. The magic moment arrived and I switched on! The buzz from
  1214. the speakers was horrific!, but soon drowned by mayhem and destruction
  1215. from Zarch, which in turn was swamped by the dulcet tones of Éher
  1216. ladyshipæ complaining from the other end of the house about the volume!
  1217. 2.3
  1218. Back to the drawing board Ö two capacitors, recovered from an old tape
  1219. recorder smoothed the power supply output and banished the buzz. The
  1220. solution to the lack of volume control was to add two potentiometers.
  1221. Whilst I was at it, I decided to wire the volume controls into a socket,
  1222. so that Zarch could be enjoyed at a reasonable volume late at night
  1223. through a pair of personal stereo headphones as well as through speakers
  1224. at a more civilised hour. An houræs work, a couple of pounds and I now
  1225. have glorious stereo sound, at a reasonable volume!
  1226. 2.3
  1227. The diagrams below show the set up. A twin pot could be used instead of
  1228. two single ones, so that both speakers are controlled from one knob. Any
  1229. value pot from 100 ohms up to about 4.7k ohms will work, but 100 ohms is
  1230. ideal, though 470 ohm pots are easier to obtain. Logarithmic pots are
  1231. best, but linear ones work fine and are again are easier to obtain. The
  1232. big capacitor can be anywhere in the region shown (2500 microfarads/30V)
  1233. Ö the small one takes out the higher frequencies and again its value
  1234. (220 microfarads/16V) is not critical.
  1235. 2.3
  1236. Itæs worth noting that the speakers cut off only after a minute or two
  1237. if there is no sound being produced. Presumably there is a small
  1238. capacitor inside which needs to run down first. Similarly, they need a
  1239. certain minimum signal for a very short time in order for them to switch
  1240. back on. David Kent
  1241. 2.3
  1242. Å   Ultra-cheap sound amplification Ö Maplin Electronics (0702Ö554161)
  1243. have an amazing offer including a pair of walkman-type headphones AND a
  1244. pair of monitor speakers for just ú3.95! I donæt know how good they are,
  1245. but at that price, you canæt go far wrong. (Oh, thereæs a handling
  1246. charge of 50p and a postage charge of 50p Ö still, itæs not bad.)
  1247. 2.3
  1248. Å   View öOCò Command Ö In View B3.0, one of the highlights can be set
  1249. to 27 instead of the normal 128 for underline and 129 for emphasise. In
  1250. doing this, commands may be made directly to the printer as in the
  1251. Wordwise OC command. For example, to set highlight 1 to 27
  1252. 2.3
  1253. <Shift-f8> HT<return> 1 27 <return>
  1254. 2.3
  1255. On pressing <f4> (underline) the next character will be sent to the
  1256. printer as a command, i.e. ShFn4x1(-x1) will turn on NLQ mode (on some
  1257. Epson compatible printers). This system seems to work for most commands,
  1258. but some commands need an ASCII ,1 so to get round this set highlight
  1259. key 2 (emphasise) as 1 and type ShFn4wShFn5 (-x*) to turn on double
  1260. height for example. This does have the disadvantage that things canæt be
  1261. turned on and off in the same line as you have to set highlight 2 back
  1262. to 0 to turn it off.
  1263. 2.3
  1264. Å   Two ARM Code Assembly Macros Ö (Richard Averill) Ö Here are two
  1265. useful macros for use in the BASIC V ARM assembler. They both use the
  1266. same method of loading 32-bit words into a specified register, which is
  1267. detailed below:
  1268. 2.3
  1269. Originally, I had the idea that if I used the following piece of code:
  1270. 2.3
  1271. LDR <reg>, [PC, #-4] !
  1272. 2.3
  1273. EQUD <value>
  1274. 2.3
  1275. then the processor would load the value and jump on to the next
  1276. instruction. However, what actually happens is that the value is loaded
  1277. and the ARM tries to execute the value as an instruction. If the high-
  1278. byte of the value is zero, then this will not cause a problem, but it is
  1279. not advisable to use routines that are not totally water-tight.
  1280. 2.3
  1281. Here is the improved code:
  1282. 2.3
  1283. LDR <reg>, [PC]
  1284. 2.3
  1285. MOV PC, PC
  1286. 2.3
  1287. EQUD <value>
  1288. 2.3
  1289. which only takes one more word of code and works all the time. The MOV
  1290. PC,PC is there to make sure that the ARM executes the instruction that
  1291. is in the pipeline, and not the instruction in <value>.
  1292. 2.3
  1293. Using these ideas, I have developed two useful routines detailed below:
  1294. 2.3
  1295. DEF FNload(reg%, val%)
  1296. 2.3
  1297. [ OPT opt% AND &E
  1298. 2.3
  1299. LDR reg%, [PC]
  1300. 2.3
  1301. MOV PC, PC
  1302. 2.3
  1303. EQUD val%
  1304. 2.3
  1305. ] : =opt%
  1306. 2.3
  1307. DEF FNadr(reg%, adr%)
  1308. 2.3
  1309. [ OPT opt% AND &E
  1310. 2.3
  1311. FNload(reg%, adr%-P%-20)
  1312. 2.3
  1313. ADD reg%, PC, reg%
  1314. 2.3
  1315. ] : =opt%
  1316. 2.3
  1317. As you can see, the macros can be used as any other instruction in the
  1318. assembler as such:
  1319. 2.3
  1320. MOV R0, #123
  1321. 2.3
  1322. FNload(1, &12345678)
  1323. 2.3
  1324. FNadr(2, pointer)
  1325. 2.3
  1326. SWI öOS_Anythingò
  1327. 2.3
  1328. A demonstration program is given (on the program disc) to illustrate the
  1329. use of these macros.
  1330. 2.3
  1331. Å   Running ViewPlot under 65Arthur Ö Richard Averill Ö Listed here are
  1332. the changes needed to make ViewPlot Éharness the power of the Archi
  1333. medes!æ. They will tidy the programs up, allowing ViewPlot to run in any
  1334. mode and to print and save screens. A *Exec file of these changes is
  1335. provided on the monthly disc.
  1336. 2.3
  1337. To use this file, transfer the ViewPlot disc onto ADFS into a directory
  1338. such as ÉViewPlotæ. You can either create a text file of these commands
  1339. (with *Build or a text editor) or you can type the commands in yourself.
  1340. Either way, you should make sure that you are in the ViewPlot directory
  1341. when you try to convert the programs.
  1342. 2.3
  1343. *|Running ViewPlot under 65Arthur.
  1344. 2.3
  1345.  (C) Richard Averill, 1988.
  1346. 2.3
  1347. *BASIC
  1348. 2.3
  1349. LOAD öViewPltò
  1350. 2.3
  1351. 390
  1352. 2.3
  1353. SAVE öViewPltò
  1354. 2.3
  1355. LOAD öV__Dò
  1356. 2.3
  1357. 730 IF M=248 OSCLI(öScreensave Imageò)
  1358. 2.3
  1359. :PROC2(R%)
  1360. 2.3
  1361. SAVE öV__Dò
  1362. 2.3
  1363. LOAD öV__Mò
  1364. 2.3
  1365. 1140 DEF PROC0:VDU 28,0,23,39,5:CLS
  1366. 2.3
  1367. 1190 REPEAT
  1368. 2.3
  1369. 1200 INPUT öEnter screen mode (not
  1370. 2.3
  1371.  text) ? ö M%
  1372. 2.3
  1373. 1210 UNTIL FNcheckmode(M%)=TRUE
  1374. 2.3
  1375. DELETE 1220,1290
  1376. 2.3
  1377. 3000 DEF FNcheckmode(mode%)
  1378. 2.3
  1379. 3010 LOCAL col$,ok%
  1380. 2.3
  1381. 3020 ok%=FALSE
  1382. 2.3
  1383. 3030 IF mode%=0 OR mode%=8 OR mode%=12
  1384. 2.3
  1385.  OR mode%=15 OR mode%=18 OR mode%=19 OR mode%=20 THEN C%=16:ok%=TRUE
  1386. 2.3
  1387. 3040 IF mode%=1 OR mode%=4 OR mode%=9
  1388. 2.3
  1389.  OR mode%=13 THEN C%=32:ok%=TRUE
  1390. 2.3
  1391. 3050 IF mode%=2 OR mode%=5 OR mode%=10
  1392. 2.3
  1393.  THEN C%=64:ok%=TRUE
  1394. 2.3
  1395. 3060
  1396. 2.3
  1397. 3070 col$=ö04ò
  1398. 2.3
  1399. 3080
  1400. 2.3
  1401. 3090 IF mode%=0 OR mode%=4 OR mode%=18
  1402. 2.3
  1403.  THEN col$=ö04ò
  1404. 2.3
  1405. 3100 IF mode%=1 OR mode%=5 OR mode%=8
  1406. 2.3
  1407.  OR mode%=19 THEN col$=ö15ò
  1408. 2.3
  1409. 3110 IF mode%=2 OR mode%=9 OR mode%
  1410. 2.3
  1411. =12 OR mode%=20 OR mode%=10 OR mode%=13 OR mode%=15 THEN col$=ö2ò
  1412. 2.3
  1413. 3120 IF ok%=TRUE THEN OSCLI(öLOAD Colò
  1414. 2.3
  1415.  +col$+ö 2600ò)
  1416. 2.3
  1417. 3130 =ok%
  1418. 2.3
  1419. SAVE öV__Mò
  1420. 2.3
  1421. LOAD öV__Pò
  1422. 2.3
  1423. 250DATA 0,0,0,0,0,0,2,4,4,4,2,16,8,1
  1424. 2.3
  1425. ,16,0,0,0,2,2,16,4,1,16,0,0,0,2,
  1426. 2.3
  1427. 1,16,0,0,0,0,0,0,2,8,2,2,4,4,2,
  1428. 2.3
  1429. 2,16,2,1,16,2,8,2,2,8,2
  1430. 2.3
  1431. 1740DEFPROCJ(b%):e%(b%)=0:ONM%+1GOTO
  1432. 2.3
  1433. 1770,1810,1880,1880,1770,1810,1880, 1880,1810,1880,1880,1880,1880,1880
  1434. 2.3
  1435. ,1880,1880,1880,1880,1880,1770
  1436. 2.3
  1437. ,1810,1880,1880,1770,1770
  1438. 2.3
  1439. 2070DEFPROCE:FORb%=1TO8:e%(b%)=b%?
  1440. 2.3
  1441. (&2608+((a%-1)*2+a%-10)*8-1):ONM%+1
  1442. 2.3
  1443. GOTO 2110,2150,2200,2200,2110,2150,
  1444. 2.3
  1445. 2200,2200,2150,2200,2200,2200,2200, 2200,2200,2200,2200,2200,2200,
  1446. 2.3
  1447. 2110,2150,2200,2200,2150,2150
  1448. 2.3
  1449. SAVE öV__Pò
  1450. 2.3
  1451. Å   Cheap colour monitors Ö Peter Sykes bought a Commodore 1084 monitor
  1452. which seems to be identical to the Phillips 8833 but cheaper. He got his
  1453. from Eazyprint in Staines, Middlesex for ú240, around ú20 less than the
  1454. cheapest he could find the Phillips 8833. (Thereæs an Acorn one for sale
  1455. in the small adæs, but there must be other folk by now who are up-
  1456. grading to multi-syncs and have monitors for sale Ö send in your small
  1457. adæs folks Ö no charge.)
  1458. 2.3
  1459. Å   Use of Archimedes on Econet Ö Copying ADFS format discs to NET and
  1460. vice-versa, no utility is needed as Archimedes has it all built in:-
  1461. 2.3
  1462. *COPY -adfs-$.* -net-$.whatever.* QRC
  1463. 2.3
  1464. Here ADFS is the source, NET is the destination. The Éwhateveræ is the
  1465. chosen destination directory, or directory path (e.g. replace Éwhateveræ
  1466. with Éfred.mary.utilsæ) The * is to indicate all files. The Q indicates
  1467. QUICK copying using all available RAM. This damages resident programs
  1468. but considerabley speeds the copying process. It is also almost
  1469. essential if using early versions of the Econet Software Modules (NETFS,
  1470. ECONET) due to bugs in these which cause ÉNot Listeningæ messages. Later
  1471. versions do not suffer this. The R to indicates recursive copying of
  1472. sub-directories. The C turns OFF confirmation so that copying occurs for
  1473. all files without question.
  1474. 2.3
  1475. Simple modifications to the command line allow copying in the reverse
  1476. direction.
  1477. 2.3
  1478. (This was sent in by Michael Ryan, editor of the Econet User Group
  1479. Magazine (NEUS) which carries regular articles on Archimedes on the
  1480. network (and many less esoteric matters as well). We have also been
  1481. licensed by Acorn to provide free upgrades to Econet software modules
  1482. for those unable to obtain them elsewhere. Econet User Group, Balkeerie
  1483. Cottage, Eassie by Forfar, Angus, DD8 1SR.)
  1484. 2.3
  1485. FWP Hints & Tips
  1486. 2.3
  1487. compiled by Mike Hobart
  1488. 2.3
  1489. Å   Changing default drive Ö those of you with dual drives may want to
  1490. be able to get FWP to default to looking for data on drive 1. To do
  1491. this, all you do is load $.library.1wp and change the line that sets up
  1492. the documents directory to:
  1493. 2.3
  1494. *set FirstWordPlus$Docs :1.$.
  1495. 2.3
  1496. Å   Saving to a fresh disk Ö If you need to save your work onto a fresh
  1497. disk, you may have difficulty in persuading the save to work: you get
  1498. silly messages about the disk being write-protected and directories not
  1499. being present. This is very frustrating if you have just written the
  1500. first chapter of your bestseller. Try öSave as...ò, taking special care
  1501. either to see that you are in the correct directory as specified in the
  1502. directory box at the top of the save window or create a new file in the
  1503. root directory by clicking repeatedly on the X icon until you are left
  1504. with only a ö*ò. Thanks to Peter Tettmar, on whose solution is differ
  1505. ent, but less convenient as you have to anticipate the problem!
  1506. 2.3
  1507. Å   Form feeds in the wrong places Ö Edit your printer driver (the öhexò
  1508. directory one) to inactivate the övertical tab to lineò feature. This is
  1509. done by placing a ö*ò at the beginning of the line (line no 4, which
  1510. should now read *4, 1B,42,80,0,B or near). If you have serious troubles
  1511. with irrational formfeeds, try setting the CONFIGURE IGNORE of the
  1512. battery-backed RAM to prevent the computer ever sending to crucial code
  1513. to the printer. (Thanks to David Adamiak and from him to GST Holdings).
  1514. 2.3
  1515. Å   Use of IBM fonts Ö Steve Jones points out that there can be
  1516. advantages in using the IBM font set, if your printer supports it. The
  1517. monthly disk con-tains his very full instructions and programs. The main
  1518. reason for using the IBM fonts is the availability of certain symbols
  1519. for maths and graphical characters. These can be especially useful for
  1520. designing forms.
  1521. 2.3
  1522. Å   Graphics problems (e.g. that white is printed grey etc.) can be
  1523. cured by preparing the graphics in 1st Word palette. For Artisan, copy
  1524. 1stwordæs Resources.1wp.!palette as artisan.1wppal (or what takes your
  1525. fancy) on the Artisan disk, then boot up Artisan, grab the disk ikon and
  1526. finally select the new palette. The result is not artistic, but a quick
  1527. roller brush over the background with white, followed by the artwork in
  1528. e.g. black produces a picture you can import and have printed correctly.
  1529. The reason this works is that the graphics dump routine in 1st Word
  1530. assumes the use of the programæs own palette, or at least that it is
  1531. trying to produce a paper version of what you see on the screen. It is,
  1532. incidentally, quite an intelligent and quick dump, which checks to see
  1533. if there are pixels to print before printing a line, and issuing a
  1534. linefeed if not.
  1535. 2.3
  1536. Å   Conversion from WWPlus Ö The following hint might be useful to
  1537. people still trying to convert WW+ file to 1WP. The convert program
  1538. published in Archive does a wonderful job. However, I found it a bit
  1539. irksome having to edit out all the ÉUSæs and ÉUEæs etc which are left
  1540. after the program has dealt with the green and white embedded commands.
  1541. (This just goes to show how quickly we start to take things for
  1542. granted!!). I also found that it was impossible to reformat the text to
  1543. a new line length. The latter problem seemed to be that 1WP ended lines
  1544. with &0E, whist converted WW+ files ended with the last letter of the
  1545. last word on the line.
  1546. 2.3
  1547. The solution to both problems is as follows:
  1548. 2.3
  1549. 1   SPOOL out the WW+ file, using Option 8 (This removes all embedded
  1550. commands and centres text and produces indents and TABs)
  1551. 2.3
  1552. 2   Reload the spooled file and use Search & Replace to change all
  1553. double returns to @@ (or any other unused combination of letters)
  1554. 2.3
  1555. 3   Change all of the remaining single returns to <space>-return
  1556. 2.3
  1557. 4   Change all of the @@s (or whatever) to <space>-return-return
  1558. 2.3
  1559. 5   SAVE the modified file using Option 1
  1560. 2.3
  1561. 6   Run the SAVED file through the convert program
  1562. 2.3
  1563. The effect of 2, 3 and 4 is to save the paragraph breaks, but end all of
  1564. the lines with a space. The result is a file with no extra Éremainsæ of
  1565. embedded commands, and which will reformat correctly in First Word Plus.
  1566. 2.3
  1567.  
  1568. H & T are a bit thin on the ground this month because this issue is
  1569. being finished before Christmas so I get some time off and itæs only a
  1570. couple of weeks since I closed the December issue, so not much has come
  1571. in yet. Most of the H & T that we have got were sent in by Anton Carver.
  1572. Thanks Anton!
  1573.  
  1574. 2.4
  1575. Å   Using function keys Ö If you want to get the function keys to
  1576. produce ASCII codes, say, 200, 201, 202 etc, you use *FX 225,200 but
  1577. this only works for keys <f0> (the print key) to <f9>. If you want to
  1578. use <f10> upwards, you need to use *FX 221,200. This also makes <insert>
  1579. into the equivalent of <f13> i.e. it generates, in this case, ASCII 213.
  1580. 2.4
  1581. Å   Troubles with Mitsubishi Drives? Ö Yes, there are problems with some
  1582. of the new 5.25ò Mitsubishi drives with some of the 5.25ò disc inter
  1583. faces, but they can be solved. The problem is the use of pin 2 on the
  1584. interface. It was not used on the BBC micro, but on the new Mitsubishi
  1585. drives it is used for DC interrupt. The solution is to put a little bit
  1586. of masking tape on the edge connector inside the drive mechanism so that
  1587. it doesnæt make contact with the p.c.b. Pin 2 is on the top of the board
  1588. at the outside edge.
  1589. 2.4
  1590. Å   Programmable reset Ö A hang-over from the BBC micro is that if you
  1591. program function key 10, you will find that if you press <reset>,
  1592. function key 10 will be executed! If you donæt know about this, it can
  1593. come as something of a shock, but it could be that you would want to
  1594. make use of it if you were, say, developing a machine code program which
  1595. kept hanging up the machine and forcing you to press <reset>. You could
  1596. program it as *KEY 10 *BASIC|MOLD|MEDIT .|M and it would jump you back
  1597. into editing the program at the point where you were.
  1598. 2.4
  1599. Å   Is it still going? Ö If you are doing some heavy machine code
  1600. programming and want to know if the computer is still working or whether
  1601. you have locked it up completely, try pressing the caps lock and/or
  1602. scroll lock keys and if they are still responding, your computeræs not
  1603. dead yet! The caps and scroll lock LEDæs are controlled by the computer
  1604. in response to the key presses, so if they are working, it tells you
  1605. that the processor is still reponding to interrupts.
  1606. 2.4
  1607. Å   Using ARMBE Ö It is useful to be able to enter ARMBE at the point of
  1608. the last error. Here is a program which sets up function key 4 so that
  1609. it enters ARMBE at the point where the error occurred or, if no error
  1610. then it enters where you were last editing by using öEDIT .ò.
  1611. 2.4
  1612. 10 *set key$edit IF ERL=0 THEN OSCLI (|öKEY 4 *FIXKEY4||mEDIT . ||m|ò)
  1613. ELSE OSCLI(|öKEY 4 *FIXKE Y4||mEDIT |ò + STR$(ERL) + |ö||m |ò)|mMISTAKE
  1614. |m*FX138,0,132|m
  1615. 2.4
  1616. 20 *set alias$fixkey4 set key$4 |<key$edit>
  1617. 2.4
  1618. 30 *fixkey4
  1619. 2.4
  1620. Å   REMæs Ö Although the User Guide says that REM statements are ignored
  1621. by BASIC, this is not completely true in BASIC V. This is because the
  1622. block conditional IF╔THEN╔ELSE╔ ENDIF requires the THEN to be the last
  1623. statement on the line. Adding a REM to the end of the line will change
  1624. the flow of control, thus:
  1625. 2.4
  1626. >LIST
  1627. 2.4
  1628.  10 OK%=TRUE
  1629. 2.4
  1630.  20 IF NOT OK% THEN
  1631. 2.4
  1632.  30   PRINT öWrong!ò
  1633. 2.4
  1634.  40 ELSE
  1635. 2.4
  1636.  50   PRINT öRightò
  1637. 2.4
  1638.  60 ENDIF
  1639. 2.4
  1640. >RUN
  1641. 2.4
  1642. Right
  1643. 2.4
  1644. >LIST
  1645. 2.4
  1646.  10 OK%=TRUE
  1647. 2.4
  1648.  20 IF NOT OK% THEN :REM Danger!
  1649. 2.4
  1650.  30   PRINT öWrong!ò
  1651. 2.4
  1652.  40 ELSE
  1653. 2.4
  1654.  50   PRINT öRightò
  1655. 2.4
  1656.  60 ENDIF
  1657. 2.4
  1658. >RUN
  1659. 2.4
  1660. Wrong!
  1661. 2.4
  1662. Å   MODE3/6 gaps Ö There is an undocumented difference between the way
  1663. that the gaps between lines are coloured in the 25-row modes. In modes 3
  1664. and 6, the gaps are the border colour and in modes 11, 14 and 17, they
  1665. are the background colour.
  1666. 2.4
  1667. By experimenting with SWIöOS_ReadMode Variableò, I discovered that bit 3
  1668. of variable 0 (Modeflags) indicates the condition. If the bit is set to
  1669. 0, the gaps will be background colour and if 1 they are border colour,
  1670. thus:
  1671. 2.4
  1672.  10 For mode%=0 TO 17
  1673. 2.4
  1674.  20   MODE mode%
  1675. 2.4
  1676.  30   VDU 10,0,24,128,0|
  1677. 2.4
  1678.  40   SYSöOS_ReadModeVariableò
  1679. 2.4
  1680. ,MODE,0 TO ,,modeflag%
  1681. 2.4
  1682.  50   PRINT öMode= ò;MODE
  1683. 2.4
  1684.  60   IF (modeflag% AND (1<<3))
  1685. 2.4
  1686. <>0 THEN t$=öBorderò ELSE t$=öBackgroundò
  1687. 2.4
  1688.  70   IF (modeflag% AND (1<<2))
  1689. 2.4
  1690. <>0 THEN t$=öNoò
  1691. 2.4
  1692.  80   PRINT t$;ö gapsò
  1693. 2.4
  1694.  90   wait%=GET
  1695. 2.4
  1696. 100 NEXT
  1697. 2.4
  1698. Å   Auto linefeed Ö Some software packages, like First Word Plus for
  1699. instance, insist that you set your printer so that it does not generate
  1700. auto-matic linefeeds. This means that if you list a BASIC program with
  1701. lines that are longer than the carriage length, the line wraps round and
  1702. is overprinted. To avoid this and the difficulty of fiddling with dip
  1703. switches, use the BASIC command WIDTH before printing. To do this, type
  1704. WIDTH <carriage length> (e.g. WIDTH 80) before printing and WIDTH 0 to
  1705. reset to the default setting after printing.
  1706. 2.4
  1707.  
  1708.  
  1709. Å   How to wipe a disc clean Ö Having explained in H & T in issue 2.1
  1710. how to use *LIBöò and *WIPE * ~C to wipe a disc clean, here is the
  1711. really quick way! Take a blank disc and do a *BACKUP onto the disc to be
  1712. purged Ö takes about 10 seconds all together, even with only a single
  1713. drive!
  1714. 2.5
  1715. Å   Microlink Modem connections Ö We have at last sorted out the
  1716. connections necessary for the Microlink Multispeed modem. The problem is
  1717. that it seems to need two different connections depending on whether you
  1718. are using ArcTerm or Hearsay. Anyway, here are some connections that
  1719. seem to work OK. ArcTerm version first:
  1720. 2.5
  1721. Modem    Computer
  1722. 2.5
  1723. GND   1
  1724. 2.5
  1725.             }╤   5   GND
  1726. 2.5
  1727. GND   7
  1728. 2.5
  1729. RXD   2   ╤   3   TXD
  1730. 2.5
  1731. TXD   3   ╤   2   RXD
  1732. 2.5
  1733. RTS   4   ╤   7   RTS
  1734. 2.5
  1735. CTS   5   ╤   8   CTS
  1736. 2.5
  1737.             6   DSR
  1738. 2.5
  1739. DSR   6   ╤{2 .5
  1740.             1   DCD
  1741. 2.5
  1742. DTR   20   ╤   4   DTR
  1743. 2.5
  1744. Note that the Archimedes DCD is not connected to the modem DCD but to
  1745. the DSR to ensure that it is ON all the time. The modem DCD is only ON
  1746. whilst on-line. Here are the Hearsay connections:
  1747. 2.5
  1748. Modem    Computer
  1749. 2.5
  1750. GND   1  
  1751. 2.5
  1752.           }╤   5   GND
  1753. 2.5
  1754. GND   7
  1755. 2.5
  1756. RXD   2   ╤   3   TXD
  1757. 2.5
  1758. TXD   3   ╤   2   RXD
  1759. 2.5
  1760. RTS   4   ╤   7   RTS
  1761. 2.5
  1762. CTS   5   ╤   6   DSR
  1763. 2.5
  1764. DSR   6 (NC)
  1765. 2.5
  1766. DTR   20 (NC)
  1767. 2.5
  1768. DCD   8   ╤   9   RI
  1769. 2.5
  1770.             1   DCD}
  1771. 2.5
  1772.             4   DTR} linked
  1773. 2.5
  1774.             8   CTS}
  1775. 2.5
  1776. Å   BBC Hard Discs Ö If you have BBC hard discs that use the 1 MHz bus,
  1777. you can run them on the Archimedes under the new 6502 emulator,
  1778. ö65hostò, that comes with RISC-OS. All you do is enter 65host and load
  1779. the BBC 1770 ADFS then, assuming you have an I/O podule, connect the
  1780. hard disc to the 2 MHz bus and away you go.
  1781. 2.5
  1782. (Surely it wouldnæt be too difficult, would it(?), to patch it into the
  1783. existing operating system to make the hard discs accessible in native
  1784. mode instead of limiting it to use with the emulator? Could anyone do
  1785. that for us? Ed.)
  1786. 2.5
  1787. Å   Naff RTC Month Ö If you get this error message when running the
  1788. desktop, the chances are that it is time to change your batteries. Acorn
  1789. suggest changing them once a year.
  1790. 2.5
  1791. Å   Repton 3 Ö first a comment Ö The characters included are exactly the
  1792. same as in the BBC version even though they are mode 9, so it looks like
  1793. mode 5 on the BBC. This is disappointing as the extra resolution and
  1794. colour are wasted unless you redefine the characters Ö a mammoth task as
  1795. there are 768 altogether! (Phil Armstrong, Doncaster)
  1796. 2.5
  1797. Phil also says╔ I redesigned the first 48 characters which took quite
  1798. some time and I did encounter a few problems, namely my maps occasion
  1799. ally were wiped or the start position changed. To get round this
  1800. problem, I examined the data files and found:
  1801. 2.5
  1802. &0000 to &10A0   8 Map definitions and colours for each map
  1803. 2.5
  1804. &10A0 to &70A0   48 character definitions
  1805. 2.5
  1806. So if you lose your maps or wish to copy a character set to another set
  1807. of maps, follow these operations:
  1808. 2.5
  1809. *Load Newdata 10000    load new char-acters as saved by editor
  1810. 2.5
  1811. *Save Char 110A0 170A0   save character set alone
  1812. 2.5
  1813. *Load Olddata 10000   load file contain-ing required maps
  1814. 2.5
  1815. *Load Char 110A0   overlay new character set
  1816. 2.5
  1817. *Save Newfile 10000 170A0   save maps and characters together
  1818. 2.5
  1819. Newfile can then be loaded into the game. Changing characters does not
  1820. seem to affect the competition numbers the game gives you.
  1821. 2.5
  1822. Å   Games on the 440 Ö Many games programs will not run on the 440 if
  1823. the screensize is set above 160k, so you should try *Configure Screen
  1824. size 5 before running the game.
  1825. 2.5
  1826. Å   Pacmania Ö Two avid öPacmaniacsò, Harjit Takshak and Linus Twizell,
  1827. have provided some Pacmania hints:
  1828. 2.5
  1829. Do a *LOAD PACMANIA 10000 then you can set the number of lives with
  1830. ?&102C8 = n (but too many slows the games down) and ?&113D4 = n sets the
  1831. number of points per pill and ?&10234 = n sets the number of credits and
  1832. then CALL &10000 starts off the game.
  1833. 2.5
  1834. Å   GammaPlot Ö It is possible to change the colour of a line on a line
  1835. graph by using the command *SG17,n,128 where n is the GCOL number (e.g.
  1836. 48 = blue). This command can also be used in the Macro mode followed by
  1837. a line with GRAPH (just the graph) or CHART (graph and axis). The colour
  1838. will be saved, along with the graph, to disc.
  1839. 2.5
  1840. Å   Printer problems Ö there have been one or two problems with spurious
  1841. operation of printers, especially with Integrex printers when doing
  1842. graphics dumps. These are caused by timing problems on the Archimedesæ
  1843. parallel port control lines and can be solved by an internal circuit
  1844. board modification that Acorn have recognised as a field change, i.e. if
  1845. you are having problems, go to your local Archimedes dealer and ask if
  1846. he can do field change 2002 for you. (D.I.Y. field changes will void
  1847. your warranty, but if you want details anyway, send us an S.A.E.)
  1848. 2.5
  1849. Å   Conditional booting (cf Archive 2.3, page 13) Philip Colmer says
  1850. that unfortunately *FX200,2 followed by reset is treated as a power-on
  1851. reset so the monotonic clock is reset. Probably a better way is
  1852. SYSöOS_Byteò,253,0,255 TO break% where break% is 0 for soft break, 1 for
  1853. power-on reset and 2 for a hard break Ö a bit more reliable than
  1854. checking a clock value.
  1855. 2.5
  1856. Å   BCPL on ADFS Ö J Laski writes╔ I am a BCPL freak: due to the fact
  1857. that ADFS was not available when it was designed, the ROM system causes
  1858. files to be read/written with OSBGET/PUT rather than OSFILE/OSGBPB;
  1859. also, intermediate files in the compiler and editor use names such as
  1860. Backup$ which ADFS abhors.
  1861. 2.5
  1862. To get round this, patch the routine in the ROM (image disk) FSTYPE
  1863. (G39) always to return 7 (see manual p117). In both BCPLARG and BCPLCCG,
  1864. patch the second static load (LLL) in G1 from öOCODE$$ò to öOCODE!!ò. In
  1865. ED, in G318 patch the static load in G318 about 40 words before the SWL
  1866. near the end of the routine; this can best be found by looking for the
  1867. long forward jump about 30 Cintcodes from the beginning. (N.B. I use an
  1868. extended ED, so have only given rough positions; G318 is the last
  1869. routine called from G1.)
  1870. 2.5
  1871. If you feel you cannot make these changes yourself, and send me a disk
  1872. with proof that you have a legal copy of BCPL and a stamped self-
  1873. addressed mailer, and I will send you a modified version. I would
  1874. appreciate, but do not insist on, any utilities that you think might
  1875. amuse me.
  1876. 2.5
  1877. I am seeking a version of BCPL in ARM code and, if ACORN cannot be
  1878. persuaded to release their version, will do it myself, probably somewhat
  1879. Éadhoclyæ. If you have any views on desirable facilities, I should be
  1880. glad to read them. I shall shareware distribute with a licence fee
  1881. requested. (Dr J Laski, 18 Ebury Street, London, SW1W 0LU.
  1882. 2.5
  1883. Å   öColour Printouts Ö The Easy Wayò  Ö I read with considerable
  1884. interest the article by W R (Basil) Davis on taking 35mm photographs of
  1885. the monitor screen. (Archive 1.9, page 52) I was able to put this to
  1886. practical use recently since I wished to design and produce some
  1887. graphics screens (using GammaPlot) and use these in a conference
  1888. presentation. I did consider using acetates with an overhead projector,
  1889. but decided 35mm slides would be more suitable.
  1890. 2.5
  1891. The following additional comments (which should be read in conjunction
  1892. with the original article) may assist other Archive readers contemplat
  1893. ing taking such pictures:
  1894. 2.5
  1895. 1) Before embarking on photographing any screen displays, it is
  1896. important to remember that any apparently minor öblemishò will be
  1897. magnified considerably if your results are being projected using 35mm
  1898. slides. Careful thought should be given to the screen layout and the
  1899. choice of colours; provided they donæt clash, brighter foreground
  1900. colours are preferable, with black or a dark blue making an ideal
  1901. background. The normal Archimedes text is quite visible when projected
  1902. using 35mm slides; additionally I used a GammaPlot feature to enlarge
  1903. the standard text for titles etc. and, whilst this was quite acceptable
  1904. on a monitor screen, when projected it did appear noticeable öchunkyò.
  1905. Next time I will use the Archimedes special fonts with GammaPlot
  1906. instead.
  1907. 2.5
  1908. 2) In choosing the 35mm film to use, one important consideration may be
  1909. the speed with which you wish the results to be returned to you. Whilst
  1910. most colour print films can be developed overnight or even within an
  1911. hour or so, this is not the case with colour slide films. Most have to
  1912. be sent away for processing and a delay of 10Ö14 days is not untypical.
  1913. If you want colour slide film developed quickly it is best to use (non
  1914. öprocess paidò) Kodak Ektachrome film which good photographic shops
  1915. should get returned to them within 2Ö3 days. There are also a few
  1916. specialist laboratories which offer a 2Ö3 hour service.
  1917. 2.5
  1918. 3) When determining the correct Épeak whiteæ exposure using an automatic
  1919. camera, it is possible for the cameraæs metering system to be too
  1920. sophisticated! I was using a Minolta 7000 AF camera and the exposure
  1921. settings fluctuated quite rapidly as the monitor screen picture was
  1922. scanned and refreshed. Checking the exposure using a different camera
  1923. confirmed the articleæs öif all else failsò assumed exposure settings.
  1924. 2.5
  1925. 4) Focusing may well be perfectly feasible when using a camera with
  1926. auto-focus. I found it best to set the initial focus with a screen
  1927. display visible, rather than a blank screen, and then switch the auto-
  1928. focus off Ö this is because the Minolta 7000 AF system tries to refocus
  1929. after every picture is taken. In setting the combination of shutter
  1930. speed and aperture, it is probably preferable to err towards the slower
  1931. shutter speed/smaller aperture (higher Éfæ number) setting as this will
  1932. increase the Édepth of fieldæ and give a greater safety margin if the
  1933. focusing is not quite right.
  1934. 2.5
  1935. 5) As mentioned in the original article, a sturdy tripod is virtually
  1936. essential and a remote shutter release (or possibly the cameraæs Delayed
  1937. Action feature Ö if fitted) must be used to avoid camera shake and
  1938. consequent blurred pictures. Additionally, switching off the room lights
  1939. when taking the photographs should avoid any extraneous reflections off
  1940. the monitor screen possibly spoiling the finished results.
  1941. 2.5
  1942. 6) If you are using 35mm slides and the results are to be projected
  1943. using a professional (rather than domestic) slide projector, it is
  1944. definitely worthwhile having the slides Églass mountedæ Ö although this
  1945. does increase the cost! This prevents the heat from the projector lamp
  1946. öpoppingò the slide and causing part(s) of it to appear out of focus.
  1947. For those who are interested in further reading on the subject, there is
  1948. an article in January 1989æs issue of BBC Acorn User (pages 81-83) on
  1949. the subject of taking photographs of the computer screen, there is even
  1950. advice on taking pictures of commercial games software.    Rob Brown.
  1951. 2.5
  1952.  
  1953. 2.5
  1954. Å   Willie Stott has sent in a very complete set of facilities for
  1955. support of the Epson LQ series, including a download font designer. This
  1956. will only be of interest to those with the right hardware, but he has
  1957. used a neat idea to get control of any extra facilities that your
  1958. printer supports, but for which First Word Plus has no category. He
  1959. points out that foreign characters can be used as printer definitions.
  1960. The characters with ASCII values between &E0 and &EE appear on the
  1961. bottom line of the character window and you have to do three things:
  1962. 2.5
  1963. a)   Define the character as a suitable message to the printer in the
  1964. character translation table of the hex file, then turn it into a driver.
  1965. 2.5
  1966. b)   Design suitable character definitions (using VDU23,...) to
  1967. represent the action of the printer so that it is added to the compu
  1968. teræs character table when FWP is booted up.
  1969. 2.5
  1970. c)   Include your definitions in the FWP boot file before the *key 1 ...
  1971. line.
  1972. 2.5
  1973. Å   A tip from an unknown writer (maybe Paul knows who to acknowledge Ö
  1974. Sorry, no. Ed.): how would you like to be able to produce a spool file
  1975. of your FWP output? What? Not much!? You may be missing something, as
  1976. you could then move the file to another machine and get a printout via
  1977. that machine, e.g. via an IBM or a mainframe. The trick is to *SET
  1978. PrinterType$4 <spoolfilespec> before booting up FWP. Then select
  1979. önetwork portò from the printer box in FWP. The system variable
  1980. PrinterType$4 holds the pathname for network printer output. The
  1981. <spoolfilespec> needs to include the full adfs:$.filename format.
  1982. 2.5
  1983. Å   Someone besides me is the kind of two-fingered typist that hits
  1984. <ctrl> at the same time as <A>. What should our correspondent do? File
  1985. his fingers down? Stick a piece of rough Velcro on the <ctrl> key? No,
  1986. contact the Archive office and have someone write a module to intercept
  1987. <ctrl-A> and make a beep. The trouble is that when you are just feeling
  1988. bold enough to try to modify a bit of assembler to help a friend, you
  1989. should not choose a keyboard buffer intercept. There is no way to try it
  1990. out safely, or even to get a decent service from the debugger as every
  1991. keypress goes via your duff code. You cannot even type ö*rmkillò
  1992. successfully. The only key which really works is <reset>. Help!! All
  1993. serious programmers out there: where did I go wrong? Why does the IRQ
  1994. stack pointer unwind so fast? P.S. If you can include a <ctrl-f12> =
  1995. swapcase facility in the module, you will win a large öthank youò and a
  1996. small prize for the best solution. You can start with the PrintKey
  1997. module program in Archive1.10, page 45.
  1998. 2.5
  1999. Å   There is a new version of FWP available from Acorn for those whose
  2000. copy does not pause at the ends of each page, even if the flag has been
  2001. correctly set in the printer driver. Return your disk to Customer
  2002. Support, Acorn Computers Ltd., Fulbourn Rd., Cherry Hinton, Cambridge
  2003. CB1 4JN. (Reprinted from BBC Acorn User, Feb æ89, p 10).
  2004. 2.5
  2005. It is rumoured that there is a genuinely new version on its way, perhaps
  2006. to coincide with RISC-OS.
  2007. 2.5
  2008. Å   Johnathan Young has a cure for the FWP buzz (the one which comes out
  2009. of the speaker or down the external audio output, and sounds like the
  2010. onset of tinnitus): boot up and then exit EMRæs sound synth package. A
  2011. bit expensive for silence, but you get the music program free! Has
  2012. anyone an explanation or a better solution?
  2013. 2.5
  2014.  
  2015.  
  2016. Å   Dacom modem connections Ö If you want to connect a Dacom modem to
  2017. the Archimedes, try the following connections:
  2018. 2.6
  2019.  Archimedes   Modem
  2020. 2.6
  2021. 2   ╤   3
  2022. 2.6
  2023. 3   ╤   2
  2024. 2.6
  2025. 5   ╤   7
  2026. 2.6
  2027. 9   ╤   6
  2028. 2.6
  2029. Also link 1, 4 and 8 at the Archimedes end and also 6 to 7. If you are
  2030. using Hearsay 1.04, use the Tandata modem driver, not the Dacom one.
  2031. 2.6
  2032. Å   Easy copying Ö If you have a single drive, try setting
  2033. 2.6
  2034. *set alias$dcopy %0 :0.%0 PQ
  2035. 2.6
  2036. Then you can use, say,
  2037. 2.6
  2038. *dcopy filetocopy
  2039. 2.6
  2040. and this will copy the file öfiletocopyò onto another disc on the same
  2041. drive, prompting for disc changes.
  2042. 2.6
  2043. Å   Easy compacting Ö This could apply to a number of commands, but if
  2044. you want, for example, to compact a disc several times, you can use
  2045. *repeat 6 compact which will do a *compact 6 times if you have previ
  2046. ously set an alias for repeat as follows:
  2047. 2.6
  2048. *set alias$repeat if %0>0 then repeat %0-1 %*1|m if %o>0 then %*1
  2049. 2.6
  2050. Å   Masked Sprites Ö The Welcome Disc Sprite Editor was criticised in
  2051. November 88 Archive as not working properly. It does work properly, well
  2052. almost!
  2053. 2.6
  2054. To create a masked sprite, first draw your sprite as normal, then press
  2055. <shift-f9> (create mask) then select the colour that you want to be
  2056. transparent and fill in any areas that are to be transparent. The
  2057. display will show a hatched effect for that colour.
  2058. 2.6
  2059. To plot a masked sprite, remember that you must use a GCOL 8,0 before
  2060. plotting the sprite.
  2061. 2.6
  2062. Å   Hard disc Backup program Ö Paul Hobbs sent in the following
  2063. improvement to last monthæs hard disc backup program╔ The very useful
  2064. hard disk backup program in Archive 2.5 can, I think, be improved very
  2065. easily by the addition of the following lines after the line PRINT
  2066. CHR$(13);òScanning:  ö;... etc in PROCaction(). It allows a check to be
  2067. made for directories not to be backed up. The full path name should be
  2068. given as in the example below. Quite a few of the directories on my disk
  2069. are backed up on their own floppies and this modification saves a lot of
  2070. time.
  2071. 2.6
  2072. 1621 RESTORE
  2073. 2.6
  2074. 1622 skip=FALSE
  2075. 2.6
  2076. 1623 REPEAT
  2077. 2.6
  2078. 1624   READ nocop$
  2079. 2.6
  2080. 1625   IF LEFT$(dir$,LENnocop$)
  2081. 2.6
  2082. =nocop$ THEN skip=TRUE
  2083. 2.6
  2084. 1626 UNTIL nocop$=ö*** END ***ò
  2085. 2.6
  2086. 1627 IF skip=TRUE THEN ENDPROC
  2087. 2.6
  2088. 7000DATA :4.$.1WP.cfg,:4.$.1WP.doc
  2089. 2.6
  2090. .BAK,:4.$.TMP,:4.$.BBCTelSoft
  2091. 2.6
  2092. 7001DATA :4.$.TMP,:4.$.CPROGGIES,
  2093. 2.6
  2094. :4.$.BACKUP,:4.$.1WP.hex
  2095. 2.6
  2096. 7002DATA ö*** END ***ò
  2097. 2.6
  2098. Å   Hard disc squeek Ö Those who are lucky enough to have hard discs may
  2099. be suffering a continuous high pitched squeal from the drive when the
  2100. machine is switched on. My dealer assured me that it would eventually go
  2101. away, but I lost patience and cured it by lubricating the disc drive
  2102. spindle with WD-40 (or similar). If you remove the disc drive and look
  2103. into the connector end, between the printed circuit board and the drive
  2104. body, you should be able to see a carbon pad mounted on the PCB which
  2105. rubs against the end of the spindle (to earth it and avoid static
  2106. problems). Using an aerosol can fitted with a long tube, a few drops of
  2107. lubricant on this pad will cure the noise. Take care when squirting Ö
  2108. and naturally no responsibility is accepted!
  2109. 2.6
  2110. Å   C routines Ö When using the tmpnam() or tmpfile() routines in the
  2111. ANSI C library, a directory &.Tmp needs to be created on the current
  2112. drive. This is not present on the master floppy, nor is it created by
  2113. the hard disc install procedure (installHD).
  2114. 2.6
  2115. Å   ANSI C command line parameters Ö page 31 of the manual says that
  2116. öArguments to main() are the words of the command line, delimited by
  2117. spacesò, but gives no further information. The parameters are actually
  2118. passed in the same way as the Unix2 environment does Ö for those
  2119. programmers unfamiliar with Unix, the main procedure is called with two
  2120. arguments, which are declared as:
  2121. 2.6
  2122. int main(argc,argv)
  2123. 2.6
  2124. int argc;
  2125. 2.6
  2126. char *argv[];
  2127. 2.6
  2128. {2 .6
  2129.      /* argv[1] points to first
  2130. 2.6
  2131.  parameter
  2132. 2.6
  2133.         argv[2] points to second,
  2134. 2.6
  2135.  etc.
  2136. 2.6
  2137.         Program name is at argv[0] */
  2138. 2.6
  2139. where argc is the number of parameters given (which includes the program
  2140. name, so this will always be at least 1) and argv is an array of
  2141. pointers to the parameters Ö argv[0] is the command name and argv[1] is
  2142. the first parameter. Parameters are normally separated by spaces, but
  2143. quoted strings are passed as one unit. Some programmers prefer to
  2144. declare argv as:
  2145. 2.6
  2146.    char **argv;
  2147. 2.6
  2148. and use it as a pointer to a list of pointers to the arguments.
  2149. 2.6
  2150. Å   BBC Master Edit Ö If you want to use an image of the Edit ROM (the
  2151. Master version) under 65Arthur, you need a *ALPHABET BFONT before
  2152. running it up, otherwise the on-screen help display looks very confus
  2153. ing. This ROM, by the way, uses CMOS byte 8 (öreserved for Acorn useò)
  2154. in which to save the screen mode and help level.
  2155. 2.6
  2156. Å   *COPY without the ÉQæ Ö omitting the Q option when copying a file
  2157. forces Arthur to ignore bad sectors or tracks in a file. This allows you
  2158. to recover screens or text files from corrupted discs If you have a
  2159. single drive and donæt want to perform umpteen swaps then proceed as
  2160. follows:
  2161. 2.6
  2162. *DELETE or *COPY (with Q) the other files until you have room for
  2163. another copy of the bad file.
  2164. 2.6
  2165. Then *COPY :0.filenme :0.BADfilenme ~C~PV
  2166. 2.6
  2167. Å   Orion loading speed Ö To speed up the loading, note that there is
  2168. what appears to be a non fatal bug in the ö$.Orion.Orion_basò program.
  2169. It *sloadæs a sprite file seven times!
  2170. 2.6
  2171.    LOAD ö$.Orion.Orion_basò
  2172. 2.6
  2173. now look round about line 3000 and you will find the *sload command that
  2174. should be outside the FOR/NEXT loop!
  2175. 2.6
  2176. Edit this and then save the program back onto the disc. (The name at the
  2177. top of the program has an extra Énæ at the end which has to be deleted
  2178. from the filename as displayed by the editor if you try to save it with
  2179. <f3>)
  2180. 2.6
  2181. Å   Orion Ö Feel like a laugh? Instead of EDITing ö$.Orion.Orion_basò as
  2182. above, try :
  2183. 2.6
  2184. *con. scr. 20
  2185. 2.6
  2186. *con. spr. 20
  2187. 2.6
  2188. <ctrl-break>
  2189. 2.6
  2190. *DIR Orion
  2191. 2.6
  2192. LOAD öOrion_basò
  2193. 2.6
  2194. 701 *UNSET BJS
  2195. 2.6
  2196. RUN
  2197. 2.6
  2198. Then when you press <space> to load the game you get a marvelous
  2199. digitised laugh! This is apparently a (very clever) part of the
  2200. protection used in the program.
  2201. 2.6
  2202. Å   Extended life for Orion Ö While the instructions are scrolling up
  2203. the screen try pressing <U>, <L>, <C> and <space> together but in that
  2204. order. It then allows you to select a level at which to start the game
  2205. and you will find that you start with 10 lives & 10 smart bombs!
  2206. 2.6
  2207. Å   Zarch cheat Ö you can get into the cheat mode if, when you first
  2208. start up and are sitting on the landing pad, you press <Q>, <T> and <U>
  2209. together but in that order. You may have to try it a few times. Now <L>
  2210. gives you an extra life, <F> refuels (in mid-air) and <D> toggles the
  2211. auto-pilot.
  2212. 2.6
  2213. Å   Zarch Ö Some new landscapes make this game much better. (Program
  2214. NewWorld on monthly program disc or send S.A.E. for listing.) This
  2215. program works with the original protected version of Zarch as long as
  2216. you have screen size to 160k and other sizes to zero. It uses a
  2217. variation of the PRINTKEY program in one of the earlier Archives.
  2218. (PRINTKEY had a bug in it! P%=0:O%=code% OPT 4-7)
  2219. 2.6
  2220. Å   Terramex. For endless lives, with Terramex disc in drive, type:
  2221. 2.6
  2222. *LOAD TERRACODE 9000
  2223. 2.6
  2224. !&CF18=&FAFFDC3E
  2225. 2.6
  2226. !&CF20=&FAFFDC3E
  2227. 2.6
  2228. CALL &9000
  2229. 2.6
  2230. Å   Quazer Ö with the Impact software version of Quazer (which appears
  2231. to be the same as V1.42) type:
  2232. 2.6
  2233. *SETEVAL Quazer%MeatHead 1 -Immortal
  2234. 2.6
  2235. (also try Quazer%Lives, Quazer%Level)
  2236. 2.6
  2237. Then use *Quazer to Run
  2238. 2.6
  2239. Å   OS_FSControl problem Ö David Scott reckons there is a problem with
  2240. the system command for the COUNT operation. The OS_FSControl (&29)
  2241. system command for filing system control with R0 set to 28 (page 262 of
  2242. the Programmers Reference Manual) has a problem which is not apparent
  2243. from the description given.
  2244. 2.6
  2245. If the call is used in a program to obtain values for use by the program
  2246. it is not possible to do this without the information also being printed
  2247. on the screen. This is because bit 8 of the action mask in R3 must be
  2248. set in order to get the correct values returned in R2 and R3.
  2249. 2.6
  2250. The way round this problem is to turn the screen output off using VDU21
  2251. before making the system call and then to turn it back on afterwards
  2252. with VDU6. If a printer is connected then this will also have to be
  2253. temporarily disconnected with VDU3 before and VDU2 after the call.
  2254. 2.6
  2255. Å   Potential Electrocution! (Archive 2.5 p19)  Ö This is a problem with
  2256. most colour monitors. The explanation is as follows... When you turn the
  2257. power off, a static charge forms on the screen surface, creating a
  2258. potential difference of several KV between the monitor chassis and the
  2259. screen surface. If you then pick the monitor up with the screen facing
  2260. your body, the screen is effectively connected to your body, and so the
  2261. potential now exists between you and the monitor chassis, and remains
  2262. there due to the insulating properties of the plastic case. If you then
  2263. touch the chassis via a mounting screw or the rear connector, the
  2264. potential will be discharged, possibly painfully! (I speak from
  2265. experience!)  The answer is to make sure you are touching the chassis
  2266. (e.g. the RGB connector shell) BEFORE picking it up, and keep hold of it
  2267. whilst carrying the monitor. The other answer is to lift and carry it
  2268. with the screen away from you.
  2269. 2.6
  2270. Å   Pipedream on RISC-OS Ö As reported last month, the current version
  2271. of Pipedream DOES work under RISC-OS. All you have to do is *RMKILL
  2272. International to kill the international keyboard. This is because Acorn
  2273. have changed the use of the <alt> key under RISC-OS and Pipedream uses
  2274. this for its drop-down menus.
  2275. 2.6
  2276. Å   PC Emulator problems Ö You may have problems with the computer
  2277. locking up when you are using the PC emulator. This happens sometimes
  2278. when you have a modem connected to the RS423 port which is not switched
  2279. on. I suspect it may be the öunknown IRQ at &00000000ò which Arthur
  2280. manages to cope with but perhaps the PC emulator canÉt. Try keeping the
  2281. modem switched on.
  2282. 2.6
  2283. Å   Stacked bar charts in Gammaplot Ö In Gammaplot it is not possible to
  2284. produce directly östackedò or segmented bar charts such as:-
  2285. 2.6
  2286.  
  2287. 2.6
  2288.  
  2289. 2.6
  2290.  
  2291. 2.6
  2292. Nor is it possible to create directly bar charts with gaps between the
  2293. bars such as-:
  2294. 2.6
  2295.  
  2296. 2.6
  2297.  
  2298. 2.6
  2299.  
  2300. 2.6
  2301. but it is possible to create them indirectly by using a table with (say)
  2302. only 1 in 5 of the values as a non-zero number (i.e. make other gaps by
  2303. introducing zeros in the spreadsheet).
  2304. 2.6
  2305. Multiple bar charts such as:-
  2306. 2.6
  2307.  
  2308. 2.6
  2309.  
  2310. 2.6
  2311.  
  2312. 2.6
  2313.  
  2314. 2.6
  2315. Can be created by producing three (or more) separate graphs from three
  2316. separate spreadsheets and then overlaying one on the other by using
  2317. öDisplay all graphsò and using the öWindow facility to move each (of the
  2318. 3) separately to the desired position. The diagonal lines and any text
  2319. (such as scales or title) is added in öCustomiseò afterwards.
  2320. 2.6
  2321. I know of NO package which produces segmented bar charts. Presenter will
  2322. produce multiple bars directly but without the flexibility of Gamma
  2323. Plot.
  2324. 2.6
  2325. If you had the patience then you could make several different bar charts
  2326. and use the öBlock Moveò facility of öCustomiseò to stack the blocks of
  2327. the bars but it would take time and might be a lot easier in, say,
  2328. Artisan which has a ötransparentò colour for use with its sprites.
  2329. 2.6
  2330. (N.B. Overlaid line graphs and multiple pie charts are very easy in
  2331. Gammaplot.)
  2332. 2.6
  2333.  
  2334. 2.7
  2335. Å   BBC winchester on Archimedes!! Alan Glover says╔ I have got it to
  2336. work on the i/o podule under RISC-OS. Hereæs what you do: from the
  2337. !65Host directory:
  2338. 2.7
  2339. *RMLOAD !RunImage
  2340. 2.7
  2341. *CACHEROM 0 dnfs
  2342. 2.7
  2343. *CACHEROM 1 ARFS
  2344. 2.7
  2345. *CACHEROM 2 <>.ADFS130
  2346. 2.7
  2347. *EMU.
  2348. 2.7
  2349. Note: Must be ADFS 130 Ö i.e. a B/B+ version  and you must find an image
  2350. of this yourself as it is not provided with RISC-OS. To use the
  2351. Archimedesæ ADFS type *ARFS.
  2352. 2.7
  2353. The winchester is connected to the 2 MHz bus (theoretically 1 MHz!) on
  2354. the I/O podule as it would be on a BBC.
  2355. 2.7
  2356. Å   Configuration problems in Art Nouveau Ö If you select ÉConfigure
  2357. machineæ from the opening menu when you have already configured the
  2358. machine, you lose your old configuration when you quit and you are left
  2359. with Art Nouveauæs own configuration. This is because it doesnæt keep
  2360. track of whether you have already configured it. I was lucky Ö I had
  2361. written a program long ago that translates a *SPOOLed *STATUS into a
  2362. load of *Configureæs and I keep a copy of this spool on my hard disc at
  2363. all times. You have been warned. Martyn Lovell.
  2364. 2.7
  2365. Å   Graphic Writer with a Star SG-10 Ö If you can have one complaint
  2366. about Graphic Writer (apart from the manual) itæs the printer support. I
  2367. own a Star SG-10 and am trying to let Graphic Writer use it to the full.
  2368. The Star has an NLQ character set, but this cannot be combined with any
  2369. other text style except underlined. So what I want is to adapt the
  2370. printer driver so that it would normally print NLQ and for the other
  2371. effects resort to draft printing. For this, I used the Printcon program
  2372. and gave the following codes:
  2373. 2.7
  2374. Initialisation:
  2375. 2.7
  2376. ESC ö@ò
  2377. 2.7
  2378. ESC öGò
  2379. 2.7
  2380. ESC ö4ò
  2381. 2.7
  2382. Which resets the printer, turns on double-strike (gives better bold, but
  2383. you may omit it) and NLQ. Make sure the printer is in IBM mode.
  2384. 2.7
  2385. For configuration (leave the rest the same as a FX80):
  2386. 2.7
  2387. Plain:     27,70,27,52
  2388. 2.7
  2389. Bold:      27,53,27,69
  2390. 2.7
  2391. Italic on: ESC öIò,1
  2392. 2.7
  2393. Italic off:ESC öIò,0
  2394. 2.7
  2395. Note that the input routine of the printcon program doesnæt accept two
  2396. öESCò sequences on one line, but it accepts two 27æs. The italic codes
  2397. are different from an FX80. In fact, FX80 compatibility turns out to be
  2398. somewhere in between the öStarò and öIBMò modes of the Star SG-10. The
  2399. trick is the plain and bold codes. When Graphic Writer finds a öBoldò
  2400. code it now also sends an NLQ-off code to the printer, which in effect
  2401. makes the printer print in draft, emphasized and double-strike, the
  2402. latter being already set at initialisation. (Yes, it is confusing, isnæt
  2403. it?!) This makes it possible to mix NLQ, bold and italic-bold in the
  2404. text. However, you canæt use italics or super/subscript without bold.
  2405. These just print in normal NLQ.
  2406. 2.7
  2407. The same method should apply to other printers which canæt do everything
  2408. in NLQ.
  2409. 2.7
  2410. Another tip on Graphic Writer is that you should always make any graphic
  2411. as big as possible, i.e. use the whole graphic area, however small you
  2412. want the picture to be. This makes page composition a lot easier and
  2413. also causes less problems with distortion when rescaling.
  2414. 2.7
  2415. Å   Interrupt module Ö The interrupt module by Steve Hoare (Archive 2.6
  2416. p44) is very useful especially, as he states in his article, with First
  2417. Word Plus for creating directories etc. However there is a problem
  2418. associated with *interrupt 0. This is that the pound key also generates
  2419. ASCII 0 (a bug in OS1.2 I think) which means that every time you type a
  2420. Époundæ, the interrupt module takes over and opens up the OS window.
  2421. However, <ctrl-O> is unused by First Word Plus, so I use *interrupt 15
  2422. instead.
  2423. 2.7
  2424. The module also comes in handy when using a comms program to check on
  2425. filenames, *type logfiles etc, but there is an enhancement that I think
  2426. would make it more useful still. While in the OS window, it is possible
  2427. to type <ctrl-Z> to open up the text window to the full screen which is
  2428. handy, but on exit (in a WIMP program) only the top half of the screen
  2429. is restored. If the source code could be modified to issue a redraw
  2430. request for the whole screen it would be an improvement. Having looked
  2431. at the code, it should be easy to do. Any offers?
  2432. 2.7
  2433. Å   Memory shortage on Logistix and First Word Plus Ö To get round the
  2434. Éout of memoryæ snag which seems to turn up so often with First Word
  2435. Plus and Logistix, if you have the 1.20 PC emulator, use the PC.PC
  2436. startup routine first and then, instead of using the MS.DOS disc, insert
  2437. Logistix instead and <reset>. <Ctrl-break> will then autoboot Logistix
  2438. with a whole 275k of memory free to use.
  2439. 2.7
  2440. Å   Mitsubishi Disc Drives Ö Here are a number of points to bear in
  2441. mind, writes Vic Budd, when adding external disc drives. If, after
  2442. considering these, you feel competent to carry out the work, go ahead.
  2443. If not, it is prudent to entrust the work to an experienced operator to
  2444. avoid frustrations and disappointments.
  2445. 2.7
  2446. There are different circuit board layouts, but the basic checks on the
  2447. drives are the same.
  2448. 2.7
  2449. 1.   Remove link MS if made and change to adjoining position MM.
  2450. 2.7
  2451. 2.   Remove link IU if made and discard it. On some drives there is no
  2452. removable link. However, there is a circuit board foil link, DI, near
  2453. the data cable edge connector, which is connected to pin 2, and this
  2454. should be cut in these instances.
  2455. 2.7
  2456. 3.   Move drive selector link to position 1, 2 or 3 according to which
  2457. command you wish it to respond. (This assumes that the internal drive is
  2458. to be 0).
  2459. 2.7
  2460. 4.   The resistor pack should be in place. On some drives this consists
  2461. of a single plug-in IC type device, whilst on others there is a row of
  2462. DIL pins which should have shorting links inserted.
  2463. 2.7
  2464. 5.   Make sure the data cable is correctly orientated Ö it will need to
  2465. be at 180 degrees compared to the three and a half inch drive
  2466. connectors.
  2467. 2.7
  2468. 6.   If, as I do, you wish to run a second three and a half inch
  2469. external drive and a five and a quarter inch drive, the connecting cable
  2470. will, of course, need to be turned through 180 degrees to connect the
  2471. drives together.
  2472. 2.7
  2473. 7.   If you decide to use the Archimedesæ power supply, check the
  2474. connections carefully before attaching the cable connectors, making
  2475. quite sure you do not get the 12v and 5v leads confused.
  2476. 2.7
  2477. If you do all these things correctly, you too should have no problems
  2478. with the Beebug lead and will be able to access drives A, B and C under
  2479. the PC Emulator, as well as 0,1, and 2 under Énativeæ Archimedes.
  2480. 2.7
  2481. Å   Moving the pointer when it is not linked to the mouse can be greatly
  2482. simplified by using the POINT TO x%,y% command which does exactly what
  2483. is needed (note that you must unlink the pointer from the mouse first
  2484. with MOUSE ON 129). Details are in the User Guide and under HELP POINT.
  2485. Having looked at the relevant part of the PRM, it appeared to be
  2486. impossible to do this, so I decided to have a rummage around in the
  2487. BASIC module. This resulted in the discovery of some undocumented calls!
  2488. Basically these are extensions of OSWORD &15 whereby putting &05 instead
  2489. of &03 at R1+0 causes the pointer position to be set instead of the
  2490. mouse position (see PRM p.133). Also, values of &04 and &06 appear to
  2491. read the mouse and pointer positions respectively, though the code to
  2492. read the mouse position contains a fatal bug in Arthur 1.2 and cannot be
  2493. used! In theory it might be possible to patch it with a copy of the
  2494. UtilityModule in RAM but this module refuses to be RMKILLed. Martin
  2495. Simmons
  2496. 2.7
  2497. Å   Problems with *UP Ö If you are having problems (as expressed in the
  2498. Help Section last month) with *UP or the use of ^ in a pathname, it is
  2499. probably because of a bug in the ADFS. The problem occurs when a
  2500. directory is renamed. The ADFS does not seem to keep track of it
  2501. properly. The solution, apparently, is to do a *COMPACT on the disc.
  2502. 2.7
  2503. Å   Repton 3 again (Philip Armstrong) Ö Iæve got a few more comments on
  2504. Repton 3. Firstly I hope that no one saved the new characters and maps
  2505. onto the original disc. I have found that occasionally, the maps have
  2506. been corrupted and thus rendered impossible. If you find a screen that
  2507. you canæt do then check it with the original version. For those people
  2508. that canæt get to grips with the array of different characters, create a
  2509. second disc with all the files using a standard set of characters. This
  2510. makes the screens easier to complete. I have included on the monthly
  2511. program disc, the new characters that I use. They are not brilliant, but
  2512. a distinct improvement on the original set. Superior Software only state
  2513. that characters and maps cannot be used for commercial exploitation, so
  2514. it is OK for us to distribute in this way. There is also a simple
  2515. program to merge maps and my characters. Also, if you cannot stand the
  2516. tune that accompanies the loading program of Repton, then change *tune1
  2517. to *tune0 in the öconfigò file.
  2518. 2.7
  2519. Here is a list of Passwords for Repton 3. Sorry itæs not complete, but I
  2520. do have other things to do. If anyone can do screen E of WORK
  2521. (p=scratch), Iæd be pleased to hear from them because it looks imposs
  2522. ible and I have checked it against the original. I suspect a transporter
  2523. has been defined wrongly.
  2524. 2.7
  2525. A   Prelude   B   Rescind   C   Periwig   D   Mortify      E   Forsake  
  2526. F   Gratify   G   Thistle   H   Spangle
  2527. 2.7
  2528. A   Toccata   B   Nocturn   C   Liberal   D   Inspect      E   Delight  
  2529. F   Botanic   G   Vitriol   H   Sacking
  2530. 2.7
  2531. A   Finale   B   Yardarm   C   Zealous   D   Without      E   Aviator  
  2532. F   Elderly   G   Juniper   H   Crimson
  2533. 2.7
  2534. A   America   B   Herbage   C   Kitchen   D   Outcast      E   Quarter  
  2535. F   Untwine   G   Tremble   H   Strange
  2536. 2.7
  2537. A   Arctic   B   Kinetic   C   Gondola   D   Lozenge      E   Rotunda  
  2538. F   Frontal   G   Younger    H
  2539. 2.7
  2540. A   Orient   B   Organic   C   Armhole   D   Visible   E   Neglect   F  
  2541. Biplane   G   H
  2542. 2.7
  2543. A   Oceans   B   Distain   C   Mundane   D   Eclipse   E   Warning   F  
  2544. G   H
  2545. 2.7
  2546. A   Africa   B   Quickly   C   Zigzags   D   Closely   E   Panoply   F  
  2547. Bonfire   G   H
  2548. 2.7
  2549. A   Baby   B   Startle   C   Measles   D   Granite   E   WhimperF  
  2550. Cushion   G   Alimony   H   Utensil
  2551. 2.7
  2552. A   School   B   Qualify   C   Knicker   D   Dynamic   E   Tendril   F  
  2553. Lanyard   G   Vinegar   H   Yaskmak
  2554. 2.7
  2555. A   Teenage   B   Eternal   C   Whisper   D   Feather   E   Rhubarb   F  
  2556. Jasmine   G   H  
  2557. 2.7
  2558. A   Work   B   Inverse   C   Parapet   D   Elegant   E   Scratch   F   G 
  2559.  H  
  2560. 2.7
  2561. A   Oap   B   Jackdaw   C   Rupture   D   Archery   E   Figment   F  
  2562. Natural   G   Tonight   H   Brigade
  2563. 2.7
  2564. A   Prehist   B   Dormant   C   Mineral   D   Varnish   E   Dashpot   F  
  2565. Lobelia   G   Upright   H  
  2566. 2.7
  2567. A   Egypt   B   Lobster   C   Tabloid   D   Achieve   E   Gristle   F  
  2568. Deceive   G   Scalpel   H  
  2569. 2.7
  2570. A   Victori   B   Earnest   C   Pervade   D   Violent   E   Bashful   F  
  2571. Magnify   G   Wrought   H   Horizon
  2572. 2.7
  2573. A   Now   B   Charity   C   Funeral   D   Justify   E   Naughty   F  
  2574. Isolate   G   Radical   H  
  2575. 2.7
  2576. A   Future   B   Primate   C   Mustang   D   Iterate   E   F   G   H  
  2577. 2.7
  2578. Å   Shared C Library Ö Users of release 2 of ANSI C might like to know
  2579. how to use the Shared C Library which is included on the disc but which
  2580. does not seem to be documented in the User Guide. Normally, the AOF
  2581. file, generated by compiling the C source, is linked with the C ANSI
  2582. library file, $.ARM.CLib.O.AnsiLib. This produces an image file which
  2583. can be executed directly by *RUNning it. This image file tends to be
  2584. quite long as large port-ions of the C ANSI library are incorporated in
  2585. it.
  2586. 2.7
  2587. On the C disc, is a file called $.Library.CLib which contains the C ANSI
  2588. library in the form of a relocatable module. The interface between the
  2589. user program and this Shared C Library module is a small file called
  2590. $.ARM.CLib.O.Stubs which simply defines each ANSI library function as a
  2591. SWI which is then recognised by the library module.
  2592. 2.7
  2593. As an example of the use, try the following. Mount your working copy of
  2594. the C disc and enter directory $.ARM.CBench. Now compile the source file
  2595. C.HelloW using the -c option so as not to invoke the linker:
  2596. 2.7
  2597. *CC HelloW -c
  2598. 2.7
  2599. Now link the resulting AOF file with the Stubs library:
  2600. 2.7
  2601. *Link -o HelloW O.HelloW $.ARM.CLib.O.Stubs
  2602. 2.7
  2603. Next load the Shared C Library module:
  2604. 2.7
  2605. *RMLoad $.Library.CLib
  2606. 2.7
  2607. And finally run the program:
  2608. 2.7
  2609. *Run HelloW
  2610. 2.7
  2611. Note that an image file generated in this way is not truly stand-alone
  2612. as it needs the Shared C Library module to be loaded in order for it to
  2613. run (but then again many programs need the Floating Point Emulator to be
  2614. loaded in order to run). A big advantage is that the image file is very
  2615. much smaller than it would be if it had been linked with the ANSI
  2616. library in the normal way. One can envisage several C programs multi
  2617. tasking under RISC-OS, sharing the resources of the Shared C Library.
  2618. 2.7
  2619. It should be noted that the Arthur-specific functions declared in the
  2620. ArthurLib header file are not incorporated in the Shared C Library. If
  2621. your program uses these functions you must include
  2622. $.ARM.CLib.O.ArthurLib at the linking stage. So try the following:
  2623. 2.7
  2624. *CC Balls64 -c
  2625. 2.7
  2626. *Link -o Balls64 O.Balls64 $.ARM.CLib.O.Stubs $.ARM.CLib.O.ArthurLib
  2627. 2.7
  2628. *Run Balls64
  2629. 2.7
  2630. Provided the Shared C Library module is loaded, the program should run
  2631. normally. John Morley
  2632. 2.7
  2633. Å   Sprite Animation Ö There have been many articles relating to the use
  2634. of Sprites on the Archimedes. These have covered the use of PLOT &ED,X,Y
  2635. to display a Sprite in its defined colours at point (X,Y) and the use of
  2636. a Mask to allow a background to appear through the Éunusedæ parts of a
  2637. sprite. They have also shown the use of Exclusive OR plotting using GCOL
  2638. 11,0 to allow the sprite to be moved over any coloured background.
  2639. 2.7
  2640. The EOR solution to this last problem, of moving a multi-coloured sprite
  2641. over a multi-coloured background, does work, but unless a great deal of
  2642. thought is given to palette selection, the sprite does not retain its
  2643. defined colour during movement.
  2644. 2.7
  2645. Many games will require the facility to define a sprite in specified
  2646. colours, with a mask and to move it still retaining those colours rather
  2647. than those produced by EOR.
  2648. 2.7
  2649. A solution is to use the standard Move/Display/Erase in a loop but not
  2650. to use EOR. The following algorithm does this :
  2651. 2.7
  2652. 1   Define the sprite ÉMySpriteæ with a mask (using SEDIT on the Welcome
  2653. Disk).
  2654. 2.7
  2655. 2   Determine the size of ÉMySpriteæ. This may be known but a SYS call
  2656. does it for you.
  2657. 2.7
  2658. LOOP
  2659. 2.7
  2660. 3   Determine the position where ÉMySpriteæ is to be plotted.
  2661. 2.7
  2662. 4   Grab a sprite ÉTempæ from the screen at this position the same size
  2663. as ÉMySpriteæ.
  2664. 2.7
  2665. 5   Plot ÉMySpriteæ with the mask.
  2666. 2.7
  2667. 6   Plot the grabbed sprite ÉTempæ to ERASE ÉMyspriteæ.
  2668. 2.7
  2669. ENDLOOP
  2670. 2.7
  2671. The following program demonstrates this :
  2672. 2.7
  2673.  10 REM > SpritePlot
  2674. 2.7
  2675.  20 REM Copyright Ian Smith
  2676. 2.7
  2677.  30 REM March 1989
  2678. 2.7
  2679.  40
  2680. 2.7
  2681.  50 REM An example program to show
  2682. 2.7
  2683.  the use of sprites moving
  2684. 2.7
  2685.  60 REM across a multi coloured
  2686. 2.7
  2687.  background by grabbing an area
  2688. 2.7
  2689.  70 REM of screen as a sprite and
  2690. 2.7
  2691.  then using it to overwrite the
  2692. 2.7
  2693.  80 REM moving sprite.
  2694. 2.7
  2695.  90
  2696. 2.7
  2697. 100 MODE 15  :REM Works in other
  2698. 2.7
  2699.  modes
  2700. 2.7
  2701. 110 T$=öTempò  : REM Will be the
  2702. 2.7
  2703.  sprite grabbed from screen
  2704. 2.7
  2705. 120 M$=öMySpriteò  : REM A masked
  2706. 2.7
  2707.  sprite created with SEDIT
  2708. 2.7
  2709. 130 *SLOAD !Sprites
  2710. 2.7
  2711. 140
  2712. 2.7
  2713. 150 SYS &2E,40,,T$ TO ,,,W,H :REM
  2714. 2.7
  2715.  Find size of sprite to grab
  2716. 2.7
  2717. 160       : REM W)idth and H)eight
  2718. 2.7
  2719. 170 PROCDrawBackground  : REM Draw
  2720. 2.7
  2721.  a Multicoloured background
  2722. 2.7
  2723. 180 PROCTitle:REM and put titles on
  2724. 2.7
  2725. 190
  2726. 2.7
  2727. 200 REPEAT
  2728. 2.7
  2729. 210  REM ****** MOVE ******
  2730. 2.7
  2731. 220  MOUSE X,Y,B
  2732. 2.7
  2733. 230  SYS &2E,16,,T$,1,X,Y,X+W*2,
  2734. 2.7
  2735. Y+H*4  : REM Grab sprite
  2736. 2.7
  2737.  from screen
  2738. 2.7
  2739. 240
  2740. 2.7
  2741. 250  OSCLI(öSCHOOSE ò + M$ ) :REM
  2742. 2.7
  2743.  Select original sprite
  2744. 2.7
  2745. 260
  2746. 2.7
  2747. 270  REM ****** DISPLAY ******
  2748. 2.7
  2749. 280  GCOL 8,0 :REM Now plot it with
  2750. 2.7
  2751.  its mask
  2752. 2.7
  2753. 290  PLOT &ED, X,Y   :REM at the
  2754. 2.7
  2755.  mouse position
  2756. 2.7
  2757. 300  PLOT &ED,900,800  : REM and
  2758. 2.7
  2759.  display it in rectangle
  2760. 2.7
  2761. 310
  2762. 2.7
  2763. 320  WAIT:WAIT  : REM Synchronise
  2764. 2.7
  2765.  output
  2766. 2.7
  2767. 330
  2768. 2.7
  2769. 340  OSCLI(öSCHOOSE ò + T$) :REM
  2770. 2.7
  2771.  Now plot the grabbed sprite
  2772. 2.7
  2773. 350
  2774. 2.7
  2775. 360  REM ****** ERASE ******
  2776. 2.7
  2777. 370  GCOL 0,0
  2778. 2.7
  2779. 380  PLOT &ED,X,Y : REM at the same
  2780. 2.7
  2781.  place
  2782. 2.7
  2783. 390  PLOT &ED,1000,800  :REM and in
  2784. 2.7
  2785.  its rectangle
  2786. 2.7
  2787. 400 UNTIL B=7      : REM 3 buttons
  2788. 2.7
  2789.  terminates
  2790. 2.7
  2791. 410 END
  2792. 2.7
  2793. 420
  2794. 2.7
  2795. 430 DEF PROCDrawBackground
  2796. 2.7
  2797. 440 GCOL 3 : RECTANGLE FILL 0,0,
  2798. 2.7
  2799. 300,300 : REM Just a
  2800. 2.7
  2801.  couple of
  2802. 2.7
  2803. 450 GCOL 4 : RECTANGLE FILL 50,50,
  2804. 2.7
  2805. 50,50 : REM rectangles and
  2806. 2.7
  2807. 460 GCOL 12:CIRCLE FILL 800,400,200
  2808. 2.7
  2809. : REM circles
  2810. 2.7
  2811. 470 GCOL 5 :CIRCLE FILL 600,300,100
  2812. 2.7
  2813. 480 OSCLI(öSCHOOSE ò + M$)
  2814. 2.7
  2815. 490 PLOT &ED,75,90 : REM and the
  2816. 2.7
  2817.  sprite
  2818. 2.7
  2819. 500 ENDPROC
  2820. 2.7
  2821. 510
  2822. 2.7
  2823. 520 DEF PROCTitle
  2824. 2.7
  2825. 530 GCOL 1
  2826. 2.7
  2827. 540 RECTANGLE 900-2,800-4,W*2+4,
  2828. 2.7
  2829. H*4+8 :REM Draw rectangles
  2830. 2.7
  2831. 550 RECTANGLE 1000-2,800-4,W*2+4,
  2832. 2.7
  2833. H*4+8 : REM in which sprites
  2834. 2.7
  2835. 560 PRINT TAB(53,2);öS P R I T E Sò
  2836. 2.7
  2837.   : REM are displayed
  2838. 2.7
  2839. 570 PRINT TAB(52,3);öoriginal
  2840. 2.7
  2841.  grabbedö
  2842. 2.7
  2843. 580 PRINT TAB(0,1);öSPRITE
  2844. 2.7
  2845. DEMONSTRATION : use mouse
  2846. 2.7
  2847.  to move spriteö
  2848. 2.7
  2849. 590 ENDPROC
  2850. 2.7
  2851. Comments on the program
  2852. 2.7
  2853. PROCDrawBackgound sets up a background to move over.
  2854. 2.7
  2855. PROCTitle puts text and a couple of rectangles on the screen
  2856. 2.7
  2857. 150   uses a SYS call to find the Width and Height of ÉMySpriteæ. This
  2858. is needed so that the right size ÉTempæ can be grabbed. (See PRM pp
  2859. 429,433.)
  2860. 2.7
  2861. 230   grabs the sprite from the screen using a SYS call. Note the *2 and
  2862. *4 to compensate for screen MODE 15. Youæll need to change this for
  2863. other resolution modes.
  2864. 2.7
  2865. 250   selects ÉMySpriteæ
  2866. 2.7
  2867. 280   selects the Mask Plot option GCOL 8.
  2868. 2.7
  2869. 290   plots the sprite at the Mouse selected point
  2870. 2.7
  2871. 300   plots the sprite in a rectangle to show its original colours.
  2872. 2.7
  2873. 340   selects ÉTempæ
  2874. 2.7
  2875. 380   plots ÉTempæ effectively erasing ÉMySpriteæ
  2876. 2.7
  2877. 390   plots ÉTempæ in its rectangle. The effect of 390 has an interest
  2878. ing side-effect. When you run the program move the sprite over the
  2879. rectangle! See what happens!
  2880. 2.7
  2881. The program ÉSpritePlotæ and the sprite file É!Spritesæ are on this
  2882. monthæs disk but you can use the program by keying it in and also
  2883. creating a masked sprite in mode 15 using SEDIT and saved as !SPRITES.
  2884. 2.7
  2885. The program can obviously be modified to run in other modes. The flicker
  2886. on the sprite could be removed by modifying the program to plot only if
  2887. the mouse has been moved. Ian Smith
  2888. 2.7
  2889. Å   Star-Trader Cheats Ö Here are some ideas and cheats for
  2890. ÉStarTraderæ. It is an excellent game, all the more impressive when you
  2891. consider it is written in BASIC!
  2892. 2.7
  2893. Load the main game and enter the EDIT editor. (The main game file is
  2894. É$.Resouces.StarTrader. StarTraderæ.) You can alter as many as the
  2895. following as you like to make the game a bit easier to get into;
  2896. 2.7
  2897. Line 290 change to: SUN=1 for a SunBurst
  2898. 2.7
  2899.    DEATH=1 for a DeathBlossom
  2900. 2.7
  2901.    CELL=1 for a super energy cell
  2902. 2.7
  2903.    ENG=3 for the most powerful engines (Note ENG=2 & ENG=1 are available
  2904. as well)
  2905. 2.7
  2906.    NUMPT=10 for the number of photon torpedoes. Having 10 doesnæt spoil
  2907. the display!
  2908. 2.7
  2909. Line 390 change CRD to the number of credits you want (STDA is the
  2910. stardate)
  2911. 2.7
  2912. Line 420 change MAXHOL to the size of the hold you want fitted.
  2913. 2.7
  2914. Note: DAMCAP is used in Line 13570 to calculate the remaining hold
  2915. capacity.
  2916. 2.7
  2917. PRC() holds the value of each of the tradegoods you are carrying CTOTAL
  2918. is the total weight of cargo you are carrying at the moment (also used
  2919. in 13570)
  2920. 2.7
  2921. The messages you occassionally get when transporting down to a planet
  2922. are held in code. If you want to see them, then type the following
  2923. changes in immediate mode.
  2924. 2.7
  2925. LOAD öStarTraderò
  2926. 2.7
  2927. DELETE 0,39349
  2928. 2.7
  2929. DELETE 39560,39580
  2930. 2.7
  2931. DELETE 39640
  2932. 2.7
  2933. DELETE 39650,39690
  2934. 2.7
  2935. 39351 DIM CMG$(20)
  2936. 2.7
  2937. 39554 FOR T=0 TO  20
  2938. 2.7
  2939. 39651 NEXT
  2940. 2.7
  2941. PROCCLUE (If <ctrl-B> is used first, the messages can be sent to a
  2942. printer.)
  2943. 2.7
  2944. There is a 50:50 chance of getting a clue on any planet landing. 16
  2945. messages have a 95% chance of being called, the other 4 messages only
  2946. 5%. The rumour sends you to a randomly chosen planet! Some messages are
  2947. tradehints, some are adverts for other games(!) and a couple are very
  2948. useful clues to the solution of the puzzle.
  2949. 2.7
  2950. The planets on which the segments are found and the code are chosen at
  2951. the creation of the universe stage. RUN the game, then immediately save
  2952. it. TYPE in CHEAT4 to get a list of planet numbers where the segments
  2953. are. CHEAT4 also prints out the code letters. These are held in the
  2954. array ZTX()
  2955. 2.7
  2956.  10 REM >CHEAT4
  2957. 2.7
  2958.  20 DIM PKLR(800),GR(800),ANAME$
  2959. 2.7
  2960. (800),TYP(800),SS(800),PO(800)
  2961. 2.7
  2962. ,STARSS(120),PX(120),PZ(120), PC(9),SP(9),PRC(13), UNI(120,12),ZTX(8)
  2963. 2.7
  2964.  30 BB=OPENIN(ö:1.xxxxxò):REM
  2965. 2.7
  2966.  change xxxxx to name of
  2967. 2.7
  2968.  SaveGame file
  2969. 2.7
  2970.  40 INPUT# BB,SUN,DEATH,CELL,ENG,
  2971. 2.7
  2972.  FS, PS,SS,AS,PTD,PSD,DAMCAP,HD, TE,NUMPT,PE,EPS,STDA,CRD,PN,SY
  2973. 2.7
  2974.  50 FORT=1TO800:INPUT# BB,PKLR(T),
  2975. 2.7
  2976.  GR(T),ANAME$(T),TYP(T), SS(T),PO(T):NEXTT
  2977. 2.7
  2978.  60 FORT=1TO120:INPUT# BB,SARSS(T)
  2979. 2.7
  2980.  ,PX(T),PZ(T):NEXTT
  2981. 2.7
  2982.  70 FORT=1TO9:INPUT# BB,PC(T),SP(T)
  2983. 2.7
  2984. :NEXTT
  2985. 2.7
  2986.  80 FORT=1TO13:INPUT# BB,PRC(T)
  2987. 2.7
  2988. :NEXTT
  2989. 2.7
  2990.  90 FORZ=1TO119
  2991. 2.7
  2992. 100 FORT=1TO12:INPUT# BB,UNI(Z,T)
  2993. 2.7
  2994. :NEXTT
  2995. 2.7
  2996. 110 NEXTZ
  2997. 2.7
  2998. 120 FORT=1TO8:INPUT# BB,ZTX(T)
  2999. 2.7
  3000. :NEXTT
  3001. 2.7
  3002. 130 CLOSE# BB
  3003. 2.7
  3004. 140 FOR LOOP=1 TO 9:PRINT PC(LOP),
  3005. 2.7
  3006. SP(LOOP)æ:NEXT:REM planets
  3007. 2.7
  3008. 150 FOR LOOP=1 TO 8:PRINTCHR$(64+
  3009. 2.7
  3010. ZTX(LOOP)):NEXT:REM code
  3011. 2.7
  3012. You get a nice fanfare when you collect a segment. The percentage
  3013. chances reported during a scan can be as low as 45% or as high as 90% on
  3014. a planet which actually has a segment.
  3015. 2.7
  3016. If you have two drives, it is quite easy to use drive 1 as the GameSave
  3017. drive (as in the program above). Just change (input$) in Lines 3770,
  3018. 4020 and 4050 to (ö:1.ò+input$). Dave Kent
  3019. 2.7
  3020. Å   TV output from Archimedes? Ö It is possible to connect a TV to an
  3021. Archimedes, though only in monochrome and via a video.  Connect a wire
  3022. (co-ax) from a phono plug plugged into the Archimedes mono video socket
  3023. to pin 20 (centre core of Co-ax) and any one of the many 0V lines (i.e.
  3024. connect the braid screen to 0V) on a SCART plug. This means that it only
  3025. works on video machines with a SCART socket on them (if no SCART socket,
  3026. then connect to VIDEO IN via a phono or BNC plug). This also means that
  3027. you can make demo videos and stuff by taping the pictures. Sound can be
  3028. connected to pins 2 and 6, I think, never tried it! (See Archive 2.2 p
  3029. 6)  Does anyone now how to convert the Archie mono out to colour?
  3030. Plugging the Archie SCART cable to the video doesnæt work! Oliver
  3031. Cornes.
  3032. 2.7
  3033. Å   Using First Mail Ö At first, I regarded First Word Plus as a very
  3034. ordinary word processor. The need to keep reformatting with <f12> seemed
  3035. to be a step backward. However First Mail changes the picture for me.
  3036. Here are one or two ideas on how to use First Mail for handling ordinary
  3037. day-to-day cor-respondence.
  3038. 2.7
  3039. I ömerge fromò a file carrying my letterhead. In fact I have a few
  3040. different letterheads for different purposes. In addition to the
  3041. letterhead my öfromò file has the following First Mail commands:
  3042. 2.7
  3043. longdate
  3044. 2.7
  3045. input öaddress file?ò, address
  3046. 2.7
  3047. input ötext file?ò, text
  3048. 2.7
  3049. includefile dat.address
  3050. 2.7
  3051. Dear
  3052. 2.7
  3053. includefile doc.text
  3054. 2.7
  3055. includefile dat.address
  3056. 2.7
  3057. (The bits in italic that should be in light type. It is not obvious
  3058. which the light bits should be; but see the note on p. 206 of the First
  3059. Word Plus manual.)
  3060. 2.7
  3061. The system asks me for an address file and then a file containing the
  3062. text of the letter, both of which it merges with the letterhead. The
  3063. second printing of the address comes after a hard page break. Since I
  3064. specify pauses on page breaks, this allows me to remove the letter from
  3065. the printer and replace it with the envelope (or sticker) for the second
  3066. address to be printed on that. I can cancel this when I do the draft
  3067. copy, which I keep for my own files. I save my letter texts in the doc
  3068. directory and addresses in the dat directory. This allows me to use the
  3069. same name for both if that is more convenient.
  3070. 2.7
  3071. Incidentally I use a brother daisywheel for most of my letter quality
  3072. printing; and I have configured the driver to print my letterhead in
  3073. bold red. A nice feature of First Word Plus is that you can have several
  3074. drivers for the same printer if you give them different names. Not only
  3075. that, but with a daisy-wheel you can have two configurations on the same
  3076. driver by making the NLQ configuration different from the draft
  3077. configuration, though of course, the terms draft and NLQ will have no
  3078. real meaning for a daisywheel.
  3079. 2.7
  3080. There are some errors in the Brother driver supplied, by the way; so
  3081. check with the manual, especially if you are Danish or are in the habit
  3082. of using some of the more obscure symbols. The First Word Plus manual is
  3083. a bit vague about full pathnames, too. For instance, to install a
  3084. different default printer you have to type, say,
  3085. 2.7
  3086. *copy 1wp.cfg.epson_fx resources.
  3087. 2.7
  3088. 1wp.1wp_print
  3089. 2.7
  3090. I find the First Word Plus file window most useful for exploring discs.
  3091. If you click on the window exit symbol you get the parent directory.
  3092. Clicking on a directory name in the window lists that directory in the
  3093. window as well as selecting it in the directory slot. Glyn Emery.
  3094. 2.7
  3095.  
  3096. 2.7
  3097. We begin a new section this month to help you get to grips with RISC-OS.
  3098. When you buy RISC-OS, you get a disc full of information from software
  3099. houses (see list below) about how to get their software running under
  3100. RISC-OS, but I suspect that because RISC-OS is so new, there will be
  3101. lots for us all to learn Ö hence this column.We really need a volunteer
  3102. to be the editor of this corner Ö someone to whom I can send all the
  3103. info and who will then collate it, check it and regurgitate it to me
  3104. (preferably via Eureka II for speed). Anyway, Mike Harrison, Matthew
  3105. Treagus, Keith Milner and Ting Kuei start us off.
  3106. 2.7
  3107. Å   Flashing screens Ö Iæve just got hold of the release RISC-OS User
  3108. Guide and noticed that it does not seem to mention the fact that in
  3109. modes 21, 24 and 28, the screen blanks when accessing floppies, due to
  3110. the high DMA rate. Iæm sure many dealers will get calls from worried
  3111. users who think that fitting RISC-OS has damaged their machine because
  3112. of the screen flashing on and off!
  3113. 2.7
  3114. Å   Logistix Ö Logistix users must replace the Floating Point Emulator
  3115. in the Library of the Log-istix Disc (version 2.50) with the later one
  3116. which is supplied with RISC-OS, i.e. FPE version 2.60. It can also be
  3117. found on the ABC Compiler Disc. If this is not done Logistix, will not
  3118. run correctly.
  3119. 2.7
  3120. Å   TWIN Ö If, like me, you are annoyed at the delay in loading TWIN
  3121. when editing programs, especially with BASIC using TWINO8, make an Obey
  3122. file that does the following :
  3123. 2.7
  3124. Set Run$Path Ram:,<Run$Path>
  3125. 2.7
  3126. Copy Twin Ram:Twin f~c
  3127. 2.7
  3128. (Ensure that your configured RamFS size is big enough first!). After
  3129. running this, Twin will be instantly loaded from Ram Disk. You can of
  3130. course also include in the file a *Key command to define your favourite
  3131. function key to call Twin, e.g.
  3132. 2.7
  3133.  Key 1 |UTWINO8|M
  3134. 2.7
  3135. For BASIC. The |U deletes any crud which may have been on the command
  3136. line before you hit <f1>.
  3137. 2.7
  3138. Å   Virsuses on RISC-OS!!! Ö I wonder how many people will look at this
  3139. in panic. Donæt worry. There is a virus on RISC-OS, even before it is
  3140. released, but it is totally harmless. In fact it is quite fun. First, a
  3141. brief description of how most viruses work:
  3142. 2.7
  3143. Most business machines load their operating system from disk. So, in
  3144. order to Évirusæ one of these machines, the offending program just
  3145. becomes part of the operating system in some way. It copies itself onto
  3146. other discs with operating systems on and soon every copy of the OS you
  3147. have is öinfectedò.
  3148. 2.7
  3149. On a sensible computer, such as the Archimedes(!) the operating system
  3150. is on ROM, and cannot be altered! Thus if someone decides to write a
  3151. virus program, once it is detected, turning the machine off will remove
  3152. it. It is, however, possible to install a virus on other files on disc.
  3153. This is much more difficult to do, is easier to detect and easier to
  3154. remedy. For instance, the !BOOT file is a common file to be found on a
  3155. disc, and a virus could conceivably attach onto this, although it would
  3156. be very difficult since every !BOOT file is different.
  3157. 2.7
  3158. I will not disclose how the RISC-OS virus installs itself as it will
  3159. only encourage people to write viruses. I will say, however, that once
  3160. detected, it is ((very simple)) to remove it with no after effects. If
  3161. the virus (which actually originates from Acorn!) appears on your disc,
  3162. not much actually happens╔ or at least it appears that way. You are
  3163. using the desktop as normal and suddenly, a small fish appears on the
  3164. screen and swims across, behind all the windows, leaving a trail of
  3165. bubbles which rise to the top of the screen and disappear. Several more
  3166. fish swim backwards and forwards on the desktop until the machine is
  3167. reset. This virus is totally harmless, the only ill effect is to use up
  3168. a bit of processor time! In fact, I have installed it deliberately as it
  3169. is quite relaxing!
  3170. 2.7
  3171. Another virus we have heard of is the FF8 virus which adds itself to
  3172. filetype FF8 files. It displays a message and prevents the affected file
  3173. from running on the 13th of the month.This it is a real pain if you are
  3174. not careful, i.e. if you forget to turn the computer off before running
  3175. a new program!  There is a detector program available (downloadable from
  3176. area 2 on Eureka II) but it will only check for the existence of the
  3177. virus and will not destroy it.
  3178. 2.7
  3179. Å   Manuals Ö Q: When RISC-OS is available, does it mean that the
  3180. manuals I purchased are outdated or will Acorn publish a cheap edition
  3181. to add to it?
  3182. 2.7
  3183. A: The bulk of the PRM remains correct, however there is a wealth of
  3184. brand new information and a new PRM will be out in due course, probably
  3185. in three volumes!
  3186. 2.7
  3187. The following firms have provided help on RISC-OS compatibility. The
  3188. information is on the Support Disc that comes with RISC-OS.
  3189. 2.7
  3190. Abacus Training Ltd
  3191. 2.7
  3192. Ace Computing
  3193. 2.7
  3194. Acorn Computers Ltd
  3195. 2.7
  3196. AVP Computing
  3197. 2.7
  3198. Cambridge Micro Systems Ltd
  3199. 2.7
  3200. Clares Micro Supplies Ltd
  3201. 2.7
  3202. Colton Software
  3203. 2.7
  3204. Dabs Press
  3205. 2.7
  3206. Dixon and Dixon
  3207. 2.7
  3208. Emmerich (Berlon) Ltd
  3209. 2.7
  3210. GEM Electronics
  3211. 2.7
  3212. Intelligent Interfaces Ltd
  3213. 2.7
  3214. Institute of Ophthalmologists
  3215. 2.7
  3216. Lendac Data Systems Ltd
  3217. 2.7
  3218. Lingenuity (Lindis International Ltd)
  3219. 2.7
  3220. Magenta Research Ltd
  3221. 2.7
  3222. Maze Technology
  3223. 2.7
  3224. Meadow Computers
  3225. 2.7
  3226. Minerva Systems Ltd
  3227. 2.7
  3228. Mitre Software Ltd
  3229. 2.7
  3230. Oak Professional Software Ltd
  3231. 2.7
  3232. Silicon Vision Ltd
  3233. 2.7
  3234. Watford Electronics Ltd
  3235.  
  3236.  
  3237. Å   Floppy programs on hard discs Ö Hereæs the best method Iæve come
  3238. across of getting floppy programs to run on a HD machine. You need two
  3239. FFF type files (or Obey if you want) One called ÉFloppyæ should contain:
  3240. 2.8
  3241. *CON. Drive 0
  3242. 2.8
  3243. *CON. NoBoot
  3244. 2.8
  3245. The other called Hard should be:
  3246. 2.8
  3247. *CON. Drive 4
  3248. 2.8
  3249. *CON. Boot
  3250. 2.8
  3251. If you put these in the library you can then
  3252. 2.8
  3253. *Floppy
  3254. 2.8
  3255. <ctrl-break>
  3256. 2.8
  3257. <shift-break>
  3258. 2.8
  3259. do whatever else
  3260. 2.8
  3261. <ctrl-break>
  3262. 2.8
  3263. *DIR :4
  3264. 2.8
  3265. *hard
  3266. 2.8
  3267. <ctrl-break>
  3268. 2.8
  3269. (This assumes you have a !Boot on your hard disc.) Martyn Lovell
  3270. 2.8
  3271. Å   Head alignment problems? Ö If you are getting disc errors and
  3272. suspect that the problem might be head alignment, one way of confirming
  3273. this is to use the disc copier program that you will find on Share-ware
  3274. N╝2. The program does a check of the whole disc to find bad sectors. If
  3275. one of the heads is misal-igned, you will probably find that all the bad
  3276. sectors reported are on one or other of the heads. Then itæs time to
  3277. take it off to your local dealer for repair.
  3278. 2.8
  3279. Å   Hearsay Ö If you need to change modem baud rates with ATB3 or ATB0
  3280. after calling one remote system and before calling another, you can do
  3281. so by using a dial prefix in the modem driver edit screen by putting
  3282. öATB3Dò or öATB0Dò as appropriate.
  3283. 2.8
  3284. Å   Matrix Procedures and Functions Ö This was prompted by Steve Drainæs
  3285. article in Archive 2.1 p.17 where he stated that a numerical method for
  3286. the inverse of a square matrix needs a good guess of the inverse and
  3287. uses the transposed matrix as a starting point. His excellent program
  3288. has been timed to invert a 20 x 20 matrix to 1 part in 10^9 in approx-
  3289. imately 10 seconds.
  3290. 2.8
  3291. A good guess or even a desirable result can be ob-tained by a procedure
  3292. described below. It calculates an inverse of 20x20 matrix in about 280
  3293. centisec-onds giving an error in the non-diagonal elements of the
  3294. identity matrix of less than 1 part in 10^6.
  3295. 2.8
  3296. The method used is based on the following. The matrix M to be inverted
  3297. is premultiplied by its transposed MÉ, giving MæM. The result is
  3298. decomposed in a lower triangular matrix L satisfying the identity
  3299. LLæ=MæM. Then I, which is the inverse of L, can be determined in a
  3300. straight forward way. Matrix IæI thus equals the inverse of MæM, and
  3301. finally IæIMÉ gives the result wanted. This is correct as can be seen
  3302. when premultiplying a vector x by M giving a vector v, and solving for
  3303. x.
  3304. 2.8
  3305. Mx=v ==> MæMx=Mæv==> LLæx=Mæv ==> IæILLæx=IæIMæv ==> x=IæIMæv
  3306. 2.8
  3307. In fact, this is the least square solution for vector x, i.e. r
  3308. equations with c unknown variables ( r>=c ) are solved using the
  3309. criterium that the sum of the squares of the deviations to a solution of
  3310. vector x obtains a minimal value.
  3311. 2.8
  3312. The program presented below uses PROC lst_sq_inv to determine the
  3313. Éinverseæ Mi of any matrix M. If M is a square matrix then MiM = E and
  3314. also MMi = E, E being the identity matrix. As an Éextraæ, the determi
  3315. nant of the square matrix M can easily be calculated. To my knowledge
  3316. the method is numerically very stable.
  3317. 2.8
  3318.  10 REM >Matrix_Inv
  3319. 2.8
  3320.  20 :
  3321. 2.8
  3322.  30 *********************************
  3323. 2.8
  3324.  40 REM Inverting an arbitrary matrix
  3325. 2.8
  3326.  50 REM E.D. Engelhardt, March 1989 
  3327. 2.8
  3328.  60 *********************************
  3329. 2.8
  3330.  70 :
  3331. 2.8
  3332.  80 REM *** Generate random matrix M,
  3333. 2.8
  3334.  col% columns and row% rows
  3335. 2.8
  3336.  90 CLS
  3337. 2.8
  3338. 100 PRINTÉö Inverting an arbitrary
  3339. 2.8
  3340.  matrixöÉ
  3341. 2.8
  3342. 110 REPEAT:INPUTö Rows            :
  3343. 2.8
  3344.  örow%:UNTIL row%>0
  3345. 2.8
  3346. 120 REPEAT:INPUTö Columns <= rows :
  3347. 2.8
  3348.  öcol%:UNTIL col%<=row% AND col%>0
  3349. 2.8
  3350. 130 CLS:PRINTÉö Rows    : òSTR$row%
  3351. 2.8
  3352. Éö Columns : òSTR$col%
  3353. 2.8
  3354. 140 row%-=1:col%-=1
  3355. 2.8
  3356. 150 DIM M(row%,col%)
  3357. 2.8
  3358. 160 FOR r%=0TOrow%:FOR c%=0TOcol%:
  3359. 2.8
  3360. M(r%,c%)=RND(1)*SGN(0.5-RND(1)) :NEXT:NEXT
  3361. 2.8
  3362. 170 :
  3363. 2.8
  3364. 180 start%=TIME
  3365. 2.8
  3366. 190 :
  3367. 2.8
  3368. 200 REM Determine the Éleast squareæ
  3369. 2.8
  3370.  inverse Mi of M. Result : Mi.M is equal to the identity matrix E.
  3371. 2.8
  3372.  If rows = cols also M.Mi = E.
  3373. 2.8
  3374. 210 :
  3375. 2.8
  3376. 220 DIM Mi(col%,row%):PROClst_sq_inv
  3377. 2.8
  3378. (M(),Mi())
  3379. 2.8
  3380. 230 end%=TIME
  3381. 2.8
  3382. 240 :
  3383. 2.8
  3384. 250 PRINTÉö Time(centisecs) : ò;
  3385. 2.8
  3386. STR$(end%-start%)Éæ
  3387. 2.8
  3388. 260 :
  3389. 2.8
  3390. 270 PROCprint
  3391. 2.8
  3392. 280 END
  3393. 2.8
  3394. 290 ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ-300 DEFPROClst_sq_inv(R(),Ri())
  3395. 2.8
  3396. 310 REM Ri is Éleast squareæ inverse
  3397. 2.8
  3398.  of R, i.e. Ri.R = E (identity                matrix). If rows = cols
  3399. also
  3400. 2.8
  3401.  R.Ri = E.
  3402. 2.8
  3403. 320 REM Dimensions R(v%,h%),Ri(h%,v%)
  3404. 2.8
  3405.  ==> v% : rows , h% : columns
  3406. 2.8
  3407. 330 REM E.D. Engelhardt, March 1989
  3408. 2.8
  3409. 340   :
  3410. 2.8
  3411. 350 LOCAL RtR(),L(),I(),v%,h%,c%,r%,t%
  3412. 2.8
  3413. 360 v%=DIM(R(),1):h%=DIM(R(),2)
  3414. 2.8
  3415. 370 DIM RtR(h%,h%),L(h%,h%),I(h%,h%)
  3416. 2.8
  3417. 380 :
  3418. 2.8
  3419. 390 REM Determine transpose of R
  3420. 2.8
  3421. 400 FOR r%=0 TO v%:FOR c%=0 TO h%:
  3422. 2.8
  3423. Ri(c%,r%)=R(r%,c%):NEXT:NEXT
  3424. 2.8
  3425. 410 :
  3426. 2.8
  3427. 420 REM Calculate square matrix to be
  3428. 2.8
  3429.  inverted
  3430. 2.8
  3431. 430 RtR()=Ri().R()
  3432. 2.8
  3433. 440 :
  3434. 2.8
  3435. 450 REM Calc lower triangle L of RtR
  3436. 2.8
  3437. 460 FOR c%=0 TO h%:FOR r%=c% TO h%
  3438. 2.8
  3439. 470   L(r%,c%)=RtR(r%,c%):t%=c%-1
  3440. 2.8
  3441. 480   IF t%>=0 FOR t%=t%TO0STEP-1:
  3442. 2.8
  3443. L(r%,c%)=L(r%,c%)-L(r%,t%)*
  3444. 2.8
  3445. L(c%,t%):NEXT
  3446. 2.8
  3447. 490   IF r%>c% THEN L(r%,c%)=L(r%,c%)
  3448. 2.8
  3449. /L(c%,c%) ELSE L(r%,c%)=SQR L(r%,c%)
  3450. 2.8
  3451. 500 NEXT:NEXT
  3452. 2.8
  3453. 510 :
  3454. 2.8
  3455. 520 REM If R is square (rows = cols)
  3456. 2.8
  3457.  its determinant equals the product of the diagonal elements of L. The
  3458. determinant of RtR equals the
  3459. 2.8
  3460.  square of the determinant of L.
  3461. 2.8
  3462. 530 :
  3463. 2.8
  3464. 540 REM Invert triang matrix L to I
  3465. 2.8
  3466. 550 FOR c%=0 TO h%:FOR r%=c% TO h%
  3467. 2.8
  3468. 560   FOR t%=c% TO r%-1:I(r%,c%)=
  3469. 2.8
  3470. I(r%,c%)-L(r%,t%)*I(t%,c%):NEXT
  3471. 2.8
  3472. 570   IF r%>c% THEN I(r%,c%)=I(r%,c%)
  3473. 2.8
  3474. /L(r%,r%) ELSE I(r%,c%)=1/L(r%,r%)
  3475. 2.8
  3476. 580 NEXT:NEXT
  3477. 2.8
  3478. 590 :
  3479. 2.8
  3480. 600 REM Determine transpose L of
  3481. 2.8
  3482.  inverse triangle I
  3483. 2.8
  3484. 610 FOR r%=0 TO h%:FOR c%=0 TO
  3485. 2.8
  3486.  h%:L(c%,r%)=I(r%,c%):NEXT:NEXT
  3487. 2.8
  3488. 620 :
  3489. 2.8
  3490. 630 REM Inverse matrix of R is Ri
  3491. 2.8
  3492. 640 RtR()=L().I():Ri()=RtR().Ri()
  3493. 2.8
  3494. 650 :
  3495. 2.8
  3496. 660 ENDPROC
  3497. 2.8
  3498. 670 ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ-680 DEFPROCprint
  3499. 2.8
  3500. 690 VDU 14
  3501. 2.8
  3502. 700 PRINTö ******** Elements MatrixòÉ
  3503. 2.8
  3504. 710 FOR r%=0 TO row%:FOR c%=0 TO
  3505. 2.8
  3506.  col%:PRINT M(r%,c%):NEXT:PRINT:NEXT
  3507. 2.8
  3508. 720 PRINTö ******** Elements inverse
  3509. 2.8
  3510.  MatrixöÉ
  3511. 2.8
  3512. 730 FOR r%=0 TO col%:FOR c%=0 TO row%
  3513. 2.8
  3514. :PRINT Mi(r%,c%):NEXT:PRINT:NEXT
  3515. 2.8
  3516. 740 DIM E(col%,col%)
  3517. 2.8
  3518. 750 E()=Mi().M()
  3519. 2.8
  3520. 760 PRINTö ******** Elements of
  3521. 2.8
  3522.  Inverse_Matrix.MatrixöÉ
  3523. 2.8
  3524. 770 FOR r%=0 TO col%:FOR c%=0 TO col%
  3525. 2.8
  3526. :PRINT E(r%,c%):NEXT:PRINT :NEXT
  3527. 2.8
  3528. 780 VDU 15
  3529. 2.8
  3530. 790 ENDPROC
  3531. 2.8
  3532. Å   Repton 3 Ö There is a bug in screen E of WORK, so to get past it,
  3533. you will need to know the next password which is COUNTER.
  3534. 2.8
  3535. Å   Three floppies under Arthur Ö Here is a solution to the problem of
  3536. three floppies on the desktop (Archive 2.7.12). Enter the following in a
  3537. file called ÉDesktopæ in the library directory, use *BUILD or a text
  3538. editor such as Twin to enter it.
  3539. 2.8
  3540. *BASIC
  3541. 2.8
  3542. LOAD öDESKFS:DeskTopMgr2ò
  3543. 2.8
  3544. 11 OSCLI öDESKFSò
  3545. 2.8
  3546. 12291 IFfloppies%>2 THEN PROCsys_
  3547. 2.8
  3548. addtoiconbar_left(öfloppy2ò,
  3549. 2.8
  3550. ödisc3.5ò,&301A,icon_fgcol,
  3551. 2.8
  3552. icon_bgcol, icon_width%)
  3553. 2.8
  3554. 28600 DEFFNselect_floppy2
  3555. 2.8
  3556. 28610 =0
  3557. 2.8
  3558. 28620 DEFFNmenu_floppy2
  3559. 2.8
  3560. 28630 PROCsys_definetextmenu
  3561. 2.8
  3562. (öfloppy2ò,öfloppy :2ò,öFormatò)
  3563. 2.8
  3564. 28640 =0
  3565. 2.8
  3566. 28650 DEFFNaction_floppy2
  3567. 2.8
  3568. 28660 =FNfilehandler_open_dir
  3569. 2.8
  3570. (ö-adfs-:2ò,öFloppy :2ò,0)
  3571. 2.8
  3572. 28670 DEFFNmenuselect_floppy2
  3573. 2.8
  3574. 28680 CASEitem0% OF
  3575. 2.8
  3576. 28690 WHEN0: PROCfilehandler_
  3577. 2.8
  3578. formatfloppy(ö2ò)
  3579. 2.8
  3580. 28700 ENDCASE
  3581. 2.8
  3582. 28710 =0
  3583. 2.8
  3584. RUN
  3585. 2.8
  3586. When you wish to use the three floppy version of the desktop, instead of
  3587. typing *DeskTop, enter */DeskTop, this will ensure that the upgrade
  3588. program in the library directory is run instead of activating the
  3589. desktop in the normal way.
  3590. 2.8
  3591. Unfortunately, there is no way of permanently updating the desktop so
  3592. that you can power up into the desktop with three floppies since it is
  3593. held in ROM which obviously cannot be changed.
  3594. 2.8
  3595. If you wish to power up in the desktop with three floppies then you
  3596. could do the following:
  3597. 2.8
  3598. *Configure Boot
  3599. 2.8
  3600. *Configure Language 0
  3601. 2.8
  3602. and setup a !Boot file as follows:
  3603. 2.8
  3604. */Desktop
  3605. 2.8
  3606. ensure that when you switch the computer on, your boot disc is in drive
  3607. 0 (or your default drive as configured with *Configure Drive) and the
  3608. desk top will appear after a short delay.
  3609. 2.8
  3610. N.B. No damage will be caused to the disc in powering up with the disc
  3611. in the drive since the latch will be across the disc surface and the
  3612. disc heads not in contact with the disc surface.
  3613. 2.8
  3614. The other solution is to upgrade to RISC-OS which can support up to four
  3615. floppies! Darren Jackson
  3616. 2.8
  3617. Å   Zarch Ö To put Zarch onto a hard disk, use....
  3618. 2.8
  3619. *UNPLUG SoundChannels
  3620. 2.8
  3621. *ZARCH
  3622. 2.8
  3623. When error occurs type the following,
  3624. 2.8
  3625. *RMREINIT SoundChannels
  3626. 2.8
  3627. *SAVE :4.ZARCHcopy 8000+20800
  3628. 2.8
  3629. *BUILD :4.ZARCHgo
  3630. 2.8
  3631. LOAD ZARCHcopy
  3632. 2.8
  3633. MEMORYA E1AC E1A0F00E
  3634. 2.8
  3635. CHANNELVOICE 1 6
  3636. 2.8
  3637. CHANNELVOICE 2 7
  3638. 2.8
  3639. CHANNELVOICE 3 8
  3640. 2.8
  3641. CHANNELVOICE 4 9
  3642. 2.8
  3643. GO 1FF30
  3644. 2.8
  3645. Then press <escape>. Type ZARCHgo to run the copy from hard disk. Tony
  3646. Porter
  3647. 2.8
  3648.  
  3649. 2.8
  3650. First Word Plus Extended Dictionary
  3651. 2.8
  3652. I was asked to review the First Word Plus Extended Dictionary which is
  3653. available from Science Frontiers. It seems unfair to review it in only
  3654. one paragraph, but Paulæs maxim is, öSpace in Archive is at a premium,
  3655. so say what is worth saying as briefly as possible, then shut up!ò
  3656. (Well, thatæs the jist of what I say! Ed.)
  3657. 2.8
  3658. First Word Plus Extended Dictionary comprises an 80,000 word dictionary
  3659. which replaces that in the Acorn package, and three specialized
  3660. supplementary dictionaries covering computer terms, geographical
  3661. locations and Christian names. It is an entirely competent package,
  3662. though necessarily not the most fascinating in content. If you need more
  3663. words in your dictionary, buy it, but if you need to work with large
  3664. documents, do not load it, as bigger dictionaries do take up more space.
  3665. 2.8
  3666. FWP Extended Dictionary costs ú6.95 (ú6.50 from Archive) and is produced
  3667. by Science Frontiers.
  3668. 2.8
  3669. From FWP to DTP?
  3670. 2.8
  3671. Although it is not strictly the business of the First Word Plus column,
  3672. I took a good look at the Desktop Publishing program when visiting the
  3673. Acorn stand at the Which Computer? Show. It should be available a few
  3674. weeks after RISC-OS and is reported to be öfinishedò and about to go
  3675. into production. However, it was apparently not the öfinishedò version
  3676. at the show. My informant assures me that the production version will be
  3677. even better, which should certainly be good indeed. Even the present
  3678. version has a Ésecretæ feature which is quite impressive and even Apple
  3679. cannot match it.
  3680. 2.8
  3681. <ctrlÖA> Solution?
  3682. 2.8
  3683. I have discovered why my ö<ctrl-a> makes a bleepò modules reported in
  3684. Archive 2.5 p. 18 absolutely refused to work: the answer is on the top
  3685. of page 34 of the Programmeræs Reference Manual: never use OS_WriteC
  3686. routines when you have intercepted an interrupt. The solution (but donæt
  3687. hold your breath) is to insert a <ctrl-g> into the input buffer. This
  3688. works absolutely perfectly Ö except in FWP, where it is interpreted as a
  3689. call to read the ruler!!
  3690. 2.8
  3691. No-one else has produced a solution which actually works, so the small
  3692. prize is still unclaimed.
  3693. 2.8
  3694. Shareware disk N╝6
  3695. 2.8
  3696. We get a lot of enquiries about printer drivers. The problem is that we
  3697. do not have that many different kinds of printer, so cannot help much.
  3698. Besides, printer drivers are (however necessary and satisfactory a
  3699. solution they may be) a pain and a bore, except when they are to drive
  3700. the printer you use. I am trying to compile a disk of all the contrib
  3701. uted ögoodiesò, especially printer drivers and related information and
  3702. ideas. If you have a contribution, please let me have it in the next
  3703. couple of weeks. We have printer drivers for: Taxan-Kaga KP810 = Canon
  3704. PW 1080; Citizen 120; Epson LX800 and LQ500; Star LC10 and NL10;
  3705. Panasonic KXP1080; H-P DeskJet. Quite a few of these have interesting
  3706. variants and associated ideas which may be useful for doing the special
  3707. things you want to do with your printer.
  3708. 2.8
  3709. Once the shareware disk is available, printer driver enquiries will be
  3710. at the bottom of the pile!
  3711. 2.8
  3712. (Mike sent me a pre-release version of this which I published as
  3713. Shareware N╝6, thinking it was the finished article. Ooops! We will
  3714. continue to supply N╝6 as it is and then offer free up-grades when the
  3715. final version is ready. Sorry about that! Ed.)
  3716. 2.8
  3717. Two related matters
  3718. 2.8
  3719. Å   If you get the monthly disk, you will probably have installed the
  3720. IntModule from Steve Hoare (Archive 2.6, p. 44), and you will agree with
  3721. me that it is quite the best thing that has happened to First Word Plus
  3722. since its launch! I am sure that my life-expectancy has been increased
  3723. by being able to access the ö*ò commands we all love (and hate). If you
  3724. have not installed it, copy the IntModule to your 1st Word startup disk,
  3725. then modify !boot by adding lines 23 and 26 as follows:
  3726. 2.8
  3727. 23 *rmrun IntModule
  3728. 2.8
  3729. 26 *Interrupt 15
  3730. 2.8
  3731. Now if you press <ctrl-o>, the screen goes bright blue and gives you a *
  3732. prompt. Create your directories, mount disks or whatever, then just *
  3733. <return> and you are back. Wonderful. If you do not get the disks, more
  3734. fool you, this one was worth a yearæs subscription, but it will be on
  3735. the proposed ösharewareò disk.
  3736. 2.8
  3737. Å   Just who do you think we are? Not very different from you is the
  3738. answer, I guess. I suspect that most of the contributors to Archive are
  3739. either people who enjoy computers as a hobby which can be useful, people
  3740. who use computers as part of their work, but are not professionals in
  3741. computing, or students or teachers of computing. I am actually a vet.
  3742. who does human genetics and immunology research, approaching fifty, bald
  3743. and paunchy! The point is, please do not expect too much from us/me. I
  3744. actually took this column on when a broken collar-bone got in the way of
  3745. decorating! Sadly, bones heal╔
  3746. 2.8
  3747. Two quickies
  3748. 2.8
  3749. Å   If you have more than one sprite in a file, FWP only loads the first
  3750. sprite.
  3751. 2.8
  3752. Å   There is a funny bug in the spelling list : FABRICATION is flagged
  3753. as wrong, but it appears when you browse. To add confusion, when you ask
  3754. to guess, it comes up with faArication, which is unbrowsable!! Thanks to
  3755. Colin Garlick. A review of letters received earlier reveals that the
  3756. problem is more widespread than this: Kenneth Gardner rep-orts that the
  3757. same (?) bug affects fable, fabric, -ate, -ated, -ation, fabulous, -ly,
  3758. fab, haar, maar, nascelle, oaf, zag. Kenneth provides more data on
  3759. making merged supplementary dictionaries, but the problem is obviously a
  3760. bug. Over to you Acorn!
  3761. 2.8
  3762. FWP and RISC-OS╔
  3763. 2.8
  3764. The support disk which comes with RISC-OS has the necessary instructions
  3765. for conversion and the files. It is in the Acorn directory.
  3766. 2.8
  3767. It may be easier to have Edit installed and the mode set to 0 before you
  3768. start. Then you can have a decent RAMfs space for the copied files
  3769. (assuming you do not have two drives). You can keep the instructions in
  3770. sight this way.
  3771. 2.8
  3772. ╔and the IntModule
  3773. 2.8
  3774. It is all quite smooth, but if you want the splendid IntModule facility
  3775. to give you access to the OS, it is a bit more complicated. Edit has no
  3776. öloadò command. You load things by grabbing their icons and dropping
  3777. them on the installed Edit icon. But it is not obvious how to get at the
  3778. öObeyò files in the !1stWord+ directory from the desktop. The secret is
  3779. to hold down shift while clicking on the !1stWord+ directory. You should
  3780. be a bit careful about what you do, so make a backup before mucking
  3781. about. Now edit it as follows:
  3782. 2.8
  3783. a)   (This is most important.) Rename the !Run file you got from the
  3784. Support Disc as, e.g. !RunAcorn.
  3785. 2.8
  3786. b)   Insert tthree lines before that beginning örunò (next to last) (the
  3787. third line is optional Ö it turns the caps lock off)
  3788. 2.8
  3789. rmload $.intmodule
  3790. 2.8
  3791. interrupt 15
  3792. 2.8
  3793. fx202,48 REM
  3794. 2.8
  3795. c)   Save as !Run
  3796. 2.8
  3797. d)   Check that the file type is obey. If not, get an OS prompt by
  3798. pressing f12 on the desktop and öSetfiletype !run obeyò.
  3799. 2.8
  3800. e)   Remember to copy IntModule onto the disk in directory $.
  3801. 2.8
  3802. It should work, accessing the OS when <ctrl-O> is pressed, though I get
  3803. a white border around the top and right after going to the OS but it
  3804. seems to go away, though.
  3805. 2.8
  3806. I suspect there are a few missing twiddly bits about ensuring that the
  3807. correct directory names are used, so I still have some reading to do.
  3808. More next month!
  3809. 2.8
  3810. It also happens that you can edit obey files in FWP, and further, FWP is
  3811. not squeemish about loading the öObeyò files from an application
  3812. directory. If you do this you will certainly have to set the filetype.
  3813. 2.8
  3814. First Mail
  3815. 2.8
  3816. Here are a couple more tips on 1st Mail from Glyn Emery:
  3817. 2.8
  3818. Mail merging normally means sending the same, or very slightly differ
  3819. ent, letters to a number of recipients. I recently had occasion to turn
  3820. this process on its head and send several different letters to the same
  3821. recipient; but I found 1st Mail up to the task. The occasion was that I
  3822. had to write reports on a batch of candidates, which, for the conveni
  3823. ence of his filing system, I prepared in the form of a batch of separate
  3824. letters all addressed to the administrator involved. To print them I
  3825. prepared a ömerge fromò file as follows:
  3826. 2.8
  3827. read text
  3828. 2.8
  3829. display ötext letter startedò
  3830. 2.8
  3831. includefile letterhead
  3832. 2.8
  3833. includefile dat.administrator
  3834. 2.8
  3835. Dear Mr Administrator
  3836. 2.8
  3837. includefile doc.text
  3838. 2.8
  3839. Yours sincerely
  3840. 2.8
  3841. display öletter finishedò
  3842. 2.8
  3843. repeat
  3844. 2.8
  3845. ötextò here is used as a 1st Mail keyword. The file öletterheadò
  3846. incorporates the date. I put a hard page break just before the repeat
  3847. command to make the sheet-feeder on my printer pick up the next piece of
  3848. A4. The ödisplayò commands were put in during development and proved to
  3849. be too confidence-giving to be deleted. The file dat.administrator is
  3850. the administratoræs address.
  3851. 2.8
  3852. The reports, together with a covering letter were prepared as separate
  3853. files; and a datafile was prepared listing the file names. This was
  3854. saved in the dat. directory, not forgetting to switch off WP mode before
  3855. saving it. If you donæt switch off WP mode the merge tends to öhangò. I
  3856. donæt know why.
  3857. 2.8
  3858. The second point is that I have incorporated Steve Hoareæs IntModule
  3859. (Archive 2,6 p44) into the libraries of my letter-writing discs.
  3860. Unfortunately Steveæs suggestion to use <ctrl-@> does not quite work for
  3861. me, because the ú key seems to return ASCII 0 in the First Word Plus
  3862. context, presumably in order that different codes for ú can be included
  3863. to satisfy different printers. Steve, being in America, probably had no
  3864. occasion to notice this. What I did in the end was to include
  3865. 2.8
  3866. *RMLoad %.IntModule
  3867. 2.8
  3868. *Interrupt 205 1stMail
  3869. 2.8
  3870. into the startup program for First Word Plus, and
  3871. 2.8
  3872. *RMLoad %.IntModule
  3873. 2.8
  3874. *Interrupt 205 1stWord+
  3875. 2.8
  3876. into the startup program for 1stMail. I can then use the öinsertò key to
  3877. toggle between the two, and save quite a lot of keystrokes in doing so.
  3878. Notice that I had to use % in the RMLoad command but not in the
  3879. Interrupt command because % appears in my Run$Path but not in my
  3880. File$Path.
  3881. 2.8
  3882. An interesting application for FWP
  3883. 2.8
  3884. Dave Livsey
  3885. 2.8
  3886. Those of you who, like me, have to report on the progress of large
  3887. numbers of individuals of various levels of ability (i.e. teachers!) and
  3888. are the proud possessors of an Archimedes and First Word Plus now have
  3889. the means to reduce the increasingly onerous task of reporting, imposed
  3890. by the introduction of Érecords of achievementæ (ROA). (If you do not
  3891. have First Word Plus, or something better, you deserve all the hard work
  3892. you have to do!) Using First Word Plus, it is fairly easy to set up a
  3893. ÉMail mergeæ which will print out the documents required for the ROA.
  3894. 2.8
  3895. The clue to doing this lies in the example mail-merge letter on the
  3896. First Word Plus disk. As with most problems, there are probably many
  3897. (or, at least, a few) different solutions Ö this is one. I hope it will
  3898. help reduce your load as much as it has mine!
  3899. 2.8
  3900. In all that follows, the underlined words below are supposed to be in
  3901. light type which I am unable to print in Elite type. The page numbers
  3902. refer to the First Word Plus handbook.
  3903. 2.8
  3904. In outline, you will need to set up four files: a command file, a data
  3905. file, a file containing the com-ment bank and the Émainæ file (which
  3906. corresponds to the letter in the mail-merge example).
  3907. 2.8
  3908. The command file (called Écommandæ): This needs to contain the informa
  3909. tion which indicates the location of the data file (see below), any
  3910. individual input to the ROA document (Éinputæ typed in Élightæ type
  3911. p.165 Ö 169 ) and a reference to the basic form as an Éincludefileæ
  3912. statement. The WP mode can be left switched on when creating this file
  3913. and saving it.
  3914. 2.8
  3915. The data file (Éformdataæ) must be created in the dat. directory and
  3916. contains only the data you wish to be inserted into the final document
  3917. as it is printed and is simply a list of names (firstname, secondname),
  3918. sex (He/She), tutor group (or Form, or whatever cockeyed system your
  3919. educational establishment has decided to inflict on you), date and any
  3920. other required information. As pointed out in the handbook, each item of
  3921. data must be separated from the next by a comma. There is also a problem
  3922. of commas in an item of data but this is catered for by enclosing them,
  3923. as explained on p.165. A specimen layout could be as shown :
  3924. Fred,Bloggs,He,4Z,Nov 1988,Swahili
  3925. 2.8
  3926. Note that the data fields are comma separated fields and may include
  3927. spaces (p.165). This file must be created in non-WP mode and the mode
  3928. left switched off when saving; ignore the pop-up reminder which appears
  3929. when you try to save the file.
  3930. 2.8
  3931. The comment bank file (ÉROAæ), obviously, contains all the comments
  3932. which you may wish to make about any group of students. Each comment is
  3933. prefixed by a suitable identifier e.g. K1. In order to be able to use
  3934. these comments, each identifier must be set up as a keyword (p.163) by
  3935. preceding it with Ésetvalæ in light type e.g.
  3936. 2.8
  3937. setval K1, öname1 is a complete idiot when it comes to practical work.
  3938. sex is a complete liability as sex has 11 thumbs on two left hands.ò
  3939. 2.8
  3940. Note the <,> and the <ö>. I found that it was easier to type the comment
  3941. with the WP mode switched on and then to switch the WP mode off and move
  3942. all the text onto one line. The WP mode was then switched on again as
  3943. the document does not print out correctly otherwise.
  3944. 2.8
  3945. The setval definition seems to need all the text on one line but as this
  3946. can be 160 characters long, that is not too much of a problem. These
  3947. definitions can also contain key words, in light type, for insertions
  3948. from the data file into the final document. This is useful as it means
  3949. that you can specify he or she along with the name in the data file.
  3950. N.B. Changing the ruler turns off the Élightæ type causing the defini
  3951. tions and insertions to be ignored in the final print-out.
  3952. 2.8
  3953. The final file (called Éformæ); the document you are going to print,
  3954. contains very little other than keywords spaced out as is appropriate
  3955. for your ROA. The first line must be a read statement which, being a
  3956. keyword is in light type. Following this is a list of fields in ordinary
  3957. type and in the same order as in the data file. The rest of the file is
  3958. mainly spaces preceded by a keyword placed where you want your printing
  3959. to be done. Eg.
  3960. 2.8
  3961. read name1,name2,sex,date,tutor, subject (reads from Éformdataæ)
  3962. 2.8
  3963. name1, name2 tutor subject date
  3964. 2.8
  3965. includefile ROA (this reads in the comment bank)
  3966. 2.8
  3967. name1 K1 (prints öFred is an idiot .....ò)
  3968. 2.8
  3969. sex C3 (prints in the comment on comprehension)
  3970. 2.8
  3971. sex I1 (prints in the comment on intelligence) etc.
  3972. 2.8
  3973. This file will, of course, need the WP mode swit-ched on in order to
  3974. retain all the formatting infor-mation which is necessary for the
  3975. automatic form-atter to work when insertions are made in the text.
  3976. 2.8
  3977. The ROA is printed out by clicking on Éformæ and Éformdataæ (from the
  3978. doc. directory) using the mail-merge facility on the First Word Plus
  3979. disc. Full details of this are given in the Handbook.
  3980. 2.8
  3981. Font Fiddling on First Word Plus
  3982. 2.8
  3983. Reg Dalton (& Steve Bass)
  3984. 2.8
  3985. Reg tells us the saga of creating character sets for First Word Plus and
  3986. his NEC P2200. A sample printout is shown opposite, and the programs and
  3987. printer drivers are on the program disc and downloadable from Eureka II.
  3988. 2.8
  3989. In an earlier edition of Archive (1.12 p 7) was printed a short routine
  3990. to convert the extra fonts, supplied on the Master Welcome disc, from
  3991. BBC to Archimedes format. On the face of it, this looked as if it would
  3992. be a useful little routine but there was a problem; only half of the
  3993. character set was defined. i.e. characters 32 to 126. My friend Steve,
  3994. in his wisdom, decided that one of the fonts (7by8) looked very good
  3995. with First Word Plus and decided to redefine the rest of the characters
  3996. to match the ones already done.
  3997. 2.8
  3998. The next step in the story was when I foolishly mentioned that it would
  3999. be quite simple to set up First Word Plus to utilise the IBM graphics
  4000. available in one of the alternative character sets within the printer we
  4001. both had (NEC P2200). We then decided that redesigning the fonts using
  4002. the Master was not the way to do this, mainly because the fonts would
  4003. then have to be converted to Archimedes, so we converted the CHARDES
  4004. program, which was mainly in BASIC, to a form that would save fonts in
  4005. the correct format and also run with the Archimedes mouse.
  4006. 2.8
  4007. The problem of modifying the program to work on the Archimedes was not
  4008. too difficult by even an amateur programmeræs standards but to make it
  4009. save the font in its correct form for the Archimedes proved more
  4010. problematical. A number of abortive attempts were made to rewrite the
  4011. save font routine but each time nothing was achieved except making the
  4012. computeræs character set look like hieroglyphics. Eventually, it all
  4013. fell into place and we had a working program.
  4014. 2.8
  4015. We then decided that a program for transposing characters within the
  4016. character set itself might not be a bad idea. This was written fairly
  4017. speedily, but then the next task was to create the printer driver for
  4018. First Word Plus. This marathon is usually achieved by modifying an
  4019. existing wordprocessor/printer driver file, which involves changing the
  4020. relevant values for the various functions listed within the file, e.g.
  4021. superscript, subscript, nlq etc. After this fairly simple part comes the
  4022. task of entering all the codes to achieve the extra characters which
  4023. cannot enter from the keyboard. For characters 32 to 127 this was
  4024. obviously quite simple as all that was needed in this instance was each
  4025. characteræs number, but it was soon noticed by both of us that the
  4026. characters between &80 and &9F (decimal 128 to 159) were not defined by
  4027. the existing list. After an abortive attempt to define these characters,
  4028. and failing to get them to install, it was decided that we would have to
  4029. discard 32 (yes a whole 32) of the characters so lovingly designed by
  4030. Steve.
  4031. 2.8
  4032. Notes on the font fiddling programs
  4033. 2.8
  4034. (These refer to programs on the monthly disc.)
  4035. 2.8
  4036. 1   !BOOT is the program for interchanging the position of the
  4037. characters.
  4038. 2.8
  4039. 2   After running the above program, the Acorn Character Designer
  4040. Program (modified for use on the Archimedes), Chardes_C, can be entered
  4041. and 1 above repeated as many times as necessary.
  4042. 2.8
  4043. 3   The modified Printer driver for 1WP is in the CFG directory.
  4044. 2.8
  4045. 4   The modified Printer driver hex file for 1wp is in the HEX
  4046. directory.
  4047. 2.8
  4048. 5   Before booting the disc, the font style to be modified must first be
  4049. loaded e.g. by using *NEC_Afont.
  4050. 2.8
  4051.  
  4052. Å   External drive hang-ups Ö  If you have an external 5.25ö drive
  4053. configured and it is not kept on-line (i.e. it is switched off) then the
  4054. machine hangs up if the ADFS is searching for a named disc which is not
  4055. in drive 0 at the time that the command was issued, e.g. when attempting
  4056. to copy file(s) from one 3.5ò disc to another. The solution appears to
  4057. be either always have the external drive switched on, or to configure it
  4058. out of the system during periods when it is switched off.
  4059. Å   GWBASIC to BBC BASIC Ö I wanted to convert a GWBASIC program to a
  4060. BBC BASIC one, but both BASICæs store programs with the keywords
  4061. tokenised. Therefore I needed the equivalent of the *SPOOL command. The
  4062. answer seems to be that from GWBASIC either:
  4063. SAVE öfilenameò,A
  4064. or
  4065. LIST ,öfilenameò
  4066. Both give a version of the listing which, when ported across via
  4067. putfile, can be *EXEC-uted.
  4068. Å   Mouse problems Ö I had a problem with my mouse. Sometimes when I
  4069. moved the mouse down, the pointer moved UP. At other times it worked
  4070. perfectly. I tried everything Ö including measuring the electronics
  4071. inside the mouse, and inside the keyboard, adjusting the sensitivity and
  4072. cleaning the inside and outside of the mouse. Finally I discovered that
  4073. the problem was a broken wire in the cable out from the mouse. Odd
  4074. Bakken
  4075. 2.9
  4076. Å   NEC multisync modifications Ö With a NEC multisync II monitor, I
  4077. found that the horizontal width of the picture was not optimal. There
  4078. was a black border on each side of the picture and, in modes 18-20, the
  4079. picture was even smaller, making the letters a little hard to read. I
  4080. called the local dealer and got a copy of their service manual. You can
  4081. adjust the horizontal size with coil L505. I got some improvement by
  4082. removing the core of the coil but not enough. So I shorted the coil
  4083. completely (after consulting the dealer, who said it would not harm the
  4084. monitor). By doing this I got a 10% wider picture. (I still have the
  4085. distortion of the top lines in mode 18-20.) Odd Bakken
  4086. 2.9
  4087. Å   OS_PrettyPrint Ö There has been very little in the literature about
  4088. the use of OS_PrettyPrint to avoid word wraparound in, for example, the
  4089. preparation of instruction notes at the beginning of a program. (You can
  4090. use SYS &44 instead of writing the full command). All that is needed is
  4091. a simple BASIC program such as :
  4092. 2.9
  4093.    10 SYS &44,ö<Block of words>ò
  4094. 2.9
  4095.    20 PRINT;ö ò;:REM Insert space
  4096. 2.9
  4097. or    20 PRINT:REM New Line
  4098. 2.9
  4099.    30 SYS &44,ö<Continuation of
  4100. 2.9
  4101.  text>ö
  4102. 2.9
  4103.    40 PRINT;ö ò;       etc.
  4104. 2.9
  4105. The text in line 30 continues from the point where it ended in line 10.
  4106. Unfortunately the OS command strips the leading and trailing spaces from
  4107. the block of text. The PRINT statements are therefore necess-ary to
  4108. separate the end of the text in line 10 from the beginning of the text
  4109. in line 30 or to force a new line. The word block length has the
  4110. standard BASIC line limitation which amounts to roughly three lines of
  4111. text in the 80 chars/line modes. The command works in any mode and by
  4112. judicious placing of PRINT and COLOUR statements you can have sections
  4113. of the text or even single words in colour.
  4114. 2.9
  4115. Å   Pipedream and the LC10 Ö To print in colour on a Star LC 10 colour
  4116. printer, if Pipedream is config-ured with a printer driver which
  4117. includes the follow-ing codes, the various printing styles available on
  4118. the Star LC 10 C can be selected when the printer is switched on, and
  4119. printed in colour.
  4120. 2.9
  4121.       On   Off   Description
  4122. 2.9
  4123.    H1   27 114 1   27 114 0   Red Text
  4124. 2.9
  4125.    H2   27 114 2    27 114 0   Blue Text
  4126. 2.9
  4127.    H3   27 114 3   27 114 0    Violet Text
  4128. 2.9
  4129.    H4   27 114 4   27 114 0   Yellow Text
  4130. 2.9
  4131.    H5   27 114 5    27 114 0   Orange Text
  4132. 2.9
  4133.    H6   27 114 6   27 114 0   Green Text
  4134. 2.9
  4135. Å   Pipedream line spacing Ö (Colton Softwareæs reply to a request for
  4136. 1.5 line spacing on Pipedream) Pipedream knows only integral line
  4137. spacing; single, double etc, but the line spacing on the printer can be
  4138. set independently by sending out some codes with the printer-on string
  4139. (PON). For example, PON       ESC ö2ò would give 1.5 line spacing on
  4140. Epson compatible printers.
  4141. 2.9
  4142. Å   Multi Sync Owners! Out here in New Zealand, the average multisync
  4143. monitor costs about ú60 more than the standard Acorn monitor. As a
  4144. result around 60-80% of Archimedes owners have multisyncæs. I havenæt a
  4145. clue as to why they are so much dearer in the U.K. but suggest that
  4146. someone somewhere is making a great deal of money! Most of the programs
  4147. available donæt provide a multisync option which is a real shame as that
  4148. extra 256 pixels make all the difference. Iæve tried to convert some
  4149. programs but havenæt had much luck except for Render Bender.
  4150. 2.9
  4151. To convert Render Bender proceed as follows:
  4152. 2.9
  4153. Make a new backup of your Render Bender System Disc. Label it öRender
  4154. Bender Modes 15 & 21ò or somesuch. Enter BASIC and load the main program
  4155. ö!RENDER.RENDERò. Change or add the following lines.
  4156. 2.9
  4157.    60 DIM loadadd &F100,sb1%32*1023
  4158. 2.9
  4159. :org=loadadd+&A100
  4160. 2.9
  4161.  2550 XRES=640:YRES=256:SC%=100:
  4162. 2.9
  4163.  DES=1000:IND=1.5:SKYCOL=13
  4164. 2.9
  4165. :SKYDEP=600:AVE=1:SHAD=1:SHGR=0
  4166. 2.9
  4167.  2950 IF YRES=256 AND SCRADD%<=
  4168. 2.9
  4169. &1FB0000 YRES=512:PROCbox
  4170. 2.9
  4171. (17,16,14,2,öHIGH*RESOLUTIONò
  4172. 2.9
  4173. ,14,0):ENDPROC
  4174. 2.9
  4175.  2960 YRES=256:PROCbox(17,16,14,2,
  4176. 2.9
  4177. öLOW*RESOLUTIONò,14,0):ENDPROC
  4178. 2.9
  4179.  3981 IF RES=320 THEN XRES=640:
  4180. 2.9
  4181. YRES=256
  4182. 2.9
  4183. 13590 vars!xlim=XL:vars!ylim=YL
  4184. 2.9
  4185. :vars!reso=XRES
  4186. 2.9
  4187. 14010 A$=LEFT$(name$,8):A$=A$+
  4188. 2.9
  4189. STR$FILFR%:IF YRES=256 ENS%
  4190. 2.9
  4191. =&28000 ELSE ENS%=&50000
  4192. 2.9
  4193. 14090 XL=XRES/SIZE%:YL=YRES/SIZE%
  4194. 2.9
  4195. :PROCcoeffin
  4196. 2.9
  4197. 14110 IF YRES=256 MODE15 ELSE MODE21
  4198. 2.9
  4199. 14190 IF YRES=256 MODE15 ELSE MODE21
  4200. 2.9
  4201. 14280 XL=XRES/SIZE%:YL=YRES/SIZE%
  4202. 2.9
  4203. :PROCcoeffin:SCROFF%=1
  4204. 2.9
  4205. :PROCisflooron
  4206. 2.9
  4207. 14290 IF YRES=256 MODE15 ELSE MODE21
  4208. 2.9
  4209. 15150 IF YRES=256 PROCbox(17,16,14,2,
  4210. 2.9
  4211. öLOW*RESOLUTIONò,14,1)ELSE PROCbox
  4212. 2.9
  4213. (17,16,14,2,öHIGH*RESOLUTIONò,14,1)
  4214. 2.9
  4215. 11320 GCOL63 TINT 255:VDU5:IF
  4216. 2.9
  4217.  YRES=256 PRINTTAB(0,31);öClick
  4218. 2.9
  4219.  Mouseö ELSE PRINTTAB(0,62);
  4220. 2.9
  4221. öClick Mouseò
  4222. 2.9
  4223. 14380 GCOL63 TINT255:IFYRES=256
  4224. 2.9
  4225.  PRINTTAB(0,31);öTime taken ò;
  4226. 2.9
  4227. :PROCtime(TI) :GCOL 25:PRINT;
  4228. 2.9
  4229. ö Click mouseò ELSE PRINTTAB(0,62);öTime taken ò; :PROCtime(TI):GCOL 25:
  4230. 2.9
  4231. PRINT;ö Click mouseò
  4232. 2.9
  4233. SAVE ö:0.$.!RE*.RENDERò
  4234. 2.9
  4235. Then to modify the Picture Compressor
  4236. 2.9
  4237. $.!RE*.UTIL*.PICCOMP
  4238. 2.9
  4239. *BASIC
  4240. 2.9
  4241. *LOAD :0.$.!RE*.UTIL*.PICCOMP 8F00
  4242. 2.9
  4243. *ACCESS :0.$.!RE*.UTIL*.PICCOMP WR
  4244. 2.9
  4245. !&90C0=&E3520015
  4246. 2.9
  4247. !&90C4=&03A0B805
  4248. 2.9
  4249. !&92F0=&E3500015
  4250. 2.9
  4251. !&92F4=&03A08805
  4252. 2.9
  4253. *SAVE :0.$.!RE*.UTIL*.PICCOMP 8F00+534
  4254. 2.9
  4255. *SETTYPE :0.$.!RE*.UTIL*.PICCOMP &FFA
  4256. 2.9
  4257. To modify the Animator
  4258. 2.9
  4259. *BASIC
  4260. 2.9
  4261. LOADö:0.$.!RE*.UTIL*.ANIROUTò
  4262. 2.9
  4263. 140DIM buff &50000,DUM 1:anipo%=DUM
  4264. 2.9
  4265. +&6000:PROCboot:!anipo%=0
  4266. 2.9
  4267. 1371IF !mode=21 length%=&50000
  4268. 2.9
  4269. 2251IF MODE=21 length%=&50000
  4270. 2.9
  4271. SAVE ö:0.$.!RE*.UTIL*.ANIROUTò
  4272. 2.9
  4273. Finally to get Render Bender going you need a new startup file
  4274. 2.9
  4275. *BUILD :0.$.Rend21
  4276. 2.9
  4277. *ECHO <22> <21>
  4278. 2.9
  4279. *SET RENDER :0.$.!RENDER
  4280. 2.9
  4281. *set OBEY$DIR adfs::0.$.!RENDER
  4282. 2.9
  4283. *set FROM$DESK 0
  4284. 2.9
  4285. *SET RendHard1 adfs::4.$.GRAPHICS.
  4286. 2.9
  4287. !Render \ or your path here
  4288. 2.9
  4289. *SET HardRoot $
  4290. 2.9
  4291. *RMLOAD <RENDER>.Utilities.FSLOAD
  4292. 2.9
  4293. *RMLOAD <RENDER>.Utilities.PicComp
  4294. 2.9
  4295. *BASIC <RENDER>.START
  4296. 2.9
  4297. <Escape>
  4298. 2.9
  4299. *SETTYPE :0.$.Rend21 &FFE
  4300. 2.9
  4301. Then to run Render Bender using:
  4302. 2.9
  4303. *CO. SCR. 320K
  4304. 2.9
  4305. <ctrl-break>
  4306. 2.9
  4307. *:0.$.Rend21
  4308. 2.9
  4309. All this is supplied on the monthly program disc as a series of exec
  4310. files so to modify Render Bender you just do this (where <comment>=just
  4311. that!)
  4312. 2.9
  4313. <insert Render Bender Disc>
  4314. 2.9
  4315. LOADö:0.!RENDER.RENDERò
  4316. 2.9
  4317. <insert program disc and *MOUNT or
  4318. 2.9
  4319.  use winnie>
  4320. 2.9
  4321. *EXEC Rendermods.RendMods
  4322. 2.9
  4323. <insert Render disc and *MOUNT>
  4324. 2.9
  4325. SAVE ö:0.$.!RENDER.RENDERò
  4326. 2.9
  4327. LOAD ö:0.!RENDER.UTIL*.ANIROUTò
  4328. 2.9
  4329. <insert my disc and *MOUNT or use
  4330. 2.9
  4331.  winnie>
  4332. 2.9
  4333. *EXEC Rendermods.AniMods
  4334. 2.9
  4335. <insert Render disc and *MOUNT>
  4336. 2.9
  4337. SAVE ö:0.!RENDER.UTIL*.ANIROUTò
  4338. 2.9
  4339. COPY Rend21 across to $ <On Render
  4340. 2.9
  4341.  Disc!>
  4342. 2.9
  4343. *WIPE $.!RE*.U*.PICCOMP F~C <get rid
  4344. 2.9
  4345.  of old PicComp>
  4346. 2.9
  4347. COPY PicComp across to $.!RENDER.
  4348. 2.9
  4349. UTILITIES <On Render Disc!>
  4350. 2.9
  4351. then you should be ready to go!
  4352. 2.9
  4353. Å   Eigenvalues of a matrix Ö The following program is meant for readers
  4354. who are interested in the determination of eigenvalues of a matrix. It
  4355. is based on the idea that the eigenvalues of a matrix do not change by a
  4356. similarity transformation. Decomposing a square, symmetric matrix S in
  4357. its lower and upper triangular forms (L and U respectively satisfying
  4358. LU=S) gives a new matrix UL having the same eigenvalues as S, since UL =
  4359. (U^Ö1)ULU. It can be proved that by repeating this process, a matrix is
  4360. obtained containing zero elements, except for the eigenvalues residing
  4361. on the main diagonal.
  4362. 2.9
  4363. Consider an arbitrary matrix M, having a number of rows equal to or
  4364. greater than its number of columns. Then MæM (MÉ standing for transposed
  4365. of M) is a square, symmetric matrix having the same eigen-values as M.
  4366. Some of these values may equal zero indicating that the dimensionality
  4367. of M is smaller than its number of columns. Or in other words, the
  4368. matrix spans an x-dimensional space, where x equals the number of non-
  4369. zero eigenvalues of M.
  4370. 2.9
  4371.   10 REM >Eig_values
  4372. 2.9
  4373.   20 :
  4374. 2.9
  4375.   30 ********************************
  4376. 2.9
  4377.   40 REM Eigenvalues of an arbitrary
  4378. 2.9
  4379.   50 REM matrix.  E.D. Engelhardt,
  4380. 2.9
  4381.  March 1989
  4382. 2.9
  4383.   60 ********************************
  4384. 2.9
  4385.   70 :
  4386. 2.9
  4387.   80 PROCinit
  4388. 2.9
  4389.   90 :
  4390. 2.9
  4391.  100 PROCmenu
  4392. 2.9
  4393.  110 :
  4394. 2.9
  4395.  120 PROCinput
  4396. 2.9
  4397.  130 :
  4398. 2.9
  4399.  140 start%=TIME
  4400. 2.9
  4401.  150 PROCmain
  4402. 2.9
  4403.  160 end%=TIME
  4404. 2.9
  4405.  170 :
  4406. 2.9
  4407.  180 PROCprint
  4408. 2.9
  4409.  190 END
  4410. 2.9
  4411.  200 ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ
  4412. 2.9
  4413.  210 DEFPROCinit
  4414. 2.9
  4415.  220 @%=&0A0A:CLS
  4416. 2.9
  4417.  230 ENDPROC
  4418. 2.9
  4419.  240 ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ
  4420. 2.9
  4421.  250 DEFPROCmenu
  4422. 2.9
  4423.  260 OFF
  4424. 2.9
  4425.  270 PRINTTAB(31,12)öEIGENVALUESòÉ
  4426. 2.9
  4427.  280 PRINTTAB(27,14)ö[1] Random matrixò
  4428. 2.9
  4429.  290 PRINTTAB(27,15)ö[2] Fixed demo
  4430. 2.9
  4431.  5x4 matrixö
  4432. 2.9
  4433.  300 PRINTTAB(27,16)ö[3] Fixed demo
  4434. 2.9
  4435.  4x4 matrixö
  4436. 2.9
  4437.  310 ENDPROC
  4438. 2.9
  4439.  320 ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ
  4440. 2.9
  4441.  330 DEFPROCinput
  4442. 2.9
  4443.  340 while=TRUE
  4444. 2.9
  4445.  350 WHILE while
  4446. 2.9
  4447.  360   CASE GET$ OF
  4448. 2.9
  4449.  370   WHEN ö1ò:while=FALSE:ON
  4450. 2.9
  4451.  380     REM Generate random matrix M,
  4452. 2.9
  4453.  col% columns and row% rows
  4454. 2.9
  4455.  390     REPEAT:
  4456. 2.9
  4457. INPUTÉö Rows            : ò
  4458. 2.9
  4459. row%:UNTIL row%>0
  4460. 2.9
  4461.  400     REPEAT:INPUTÉö Columns
  4462. 2.9
  4463. <= rows : öcol%:UNTIL col%
  4464. 2.9
  4465. <=row% AND col%>0
  4466. 2.9
  4467.  410     CLS:
  4468. 2.9
  4469. PRINTÉö Rows       : òSTR$
  4470. 2.9
  4471. row%Éö Columns    : òSTR$col%
  4472. 2.9
  4473.  420     row%-=1:col%-=1
  4474. 2.9
  4475.  430     DIM M(row%,col%)
  4476. 2.9
  4477.  440     FORr%=0TOrow%:FORc%=0TOcol%
  4478. 2.9
  4479.  450       M(r%,c%)=RND(1)*SGN(0.5-
  4480. 2.9
  4481. RND(1))
  4482. 2.9
  4483.  460     NEXT:NEXT
  4484. 2.9
  4485.  470     :
  4486. 2.9
  4487.  480   WHEN ö2ò:while=FALSE:ON
  4488. 2.9
  4489.  490     REM *** Fixed data for demo
  4490. 2.9
  4491.  5x4 matrix having one zero
  4492. 2.9
  4493.  eigenvalue
  4494. 2.9
  4495.  500     CLS:PRINTÉö Rows       : 5ò
  4496. 2.9
  4497. Éö Columns    : 4ò
  4498. 2.9
  4499.  510     row%=4:col%=3:DIM M(4,3)
  4500. 2.9
  4501.  520     M(0,0)=4:M(0,1)=3:M(0,2)=2:
  4502. 2.9
  4503. M(0,3)=1
  4504. 2.9
  4505.  530     M(1,0)=2:M(1,1)=4:M(1,2)=1:
  4506. 2.9
  4507. M(1,3)=3
  4508. 2.9
  4509.  540     M(2,0)=6:M(2,1)=7:M(2,2)=3:
  4510. 2.9
  4511. M(2,3)=4
  4512. 2.9
  4513.  550     M(3,0)=8:M(3,1)=11:M(3,2)=4:
  4514. 2.9
  4515. M(3,3)=7
  4516. 2.9
  4517.  560     M(4,0)=8:M(4,1)=6:M(4,2)=4:
  4518. 2.9
  4519. M(4,3)=7
  4520. 2.9
  4521.  570     :
  4522. 2.9
  4523.  580   WHEN ö3ò:while=FALSE:ON
  4524. 2.9
  4525.  590     REM Fixed data for demo 4x4
  4526. 2.9
  4527. matrix having four eigenvalues
  4528. 2.9
  4529.  600     CLS:PRINTÉö Rows       : 4ò
  4530. 2.9
  4531. Éö Columns    : 4ò
  4532. 2.9
  4533.  610     row%=3:col%=3:DIM M(3,3)
  4534. 2.9
  4535.  620     M(0,0)=1.00:M(0,1)=0.42:
  4536. 2.9
  4537. M(0,2)=0.54:M(0,3)=0.66
  4538. 2.9
  4539.  630     M(1,0)=0.42:M(1,1)=1.00:
  4540. 2.9
  4541. M(1,2)=0.32:M(1,3)=0.44
  4542. 2.9
  4543.  640     M(2,0)=0.54:M(2,1)=0.32:
  4544. 2.9
  4545. M(2,2)=1.00:M(2,3)=0.22
  4546. 2.9
  4547.  650     M(3,0)=0.66:M(3,1)=0.44:
  4548. 2.9
  4549. M(3,2)=0.22:M(3,3)=1.00
  4550. 2.9
  4551.  660   ENDCASE
  4552. 2.9
  4553.  670 ENDWHILE
  4554. 2.9
  4555.  680 ENDPROC
  4556. 2.9
  4557.  690 ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ-
  4558. 2.9
  4559.  700 DEFPROCmain
  4560. 2.9
  4561.  710 DIM Mt(col%,row%),MtM(col%,col%)
  4562. 2.9
  4563. ,E(col%)
  4564. 2.9
  4565.  720 PROCtranspose(M(),Mt())
  4566. 2.9
  4567.  730 PROCsquare_sym(M(),Mt(),MtM())
  4568. 2.9
  4569.  740 PROCeigenvalues(MtM(),E())
  4570. 2.9
  4571.  750 ENDPROC
  4572. 2.9
  4573.  760 ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ-
  4574. 2.9
  4575.  770 DEFPROCtranspose(R(),Rt())
  4576. 2.9
  4577.  780 LOCAL v%,h%
  4578. 2.9
  4579.  790 v%=DIM(R(),1):h%=DIM(R(),2)
  4580. 2.9
  4581.  800 FOR r%=0 TO v%:FOR c%=0 TO h%:
  4582. 2.9
  4583. Rt(c%,r%)=R(r%,c%):NEXT:NEXT
  4584. 2.9
  4585.  810 ENDPROC
  4586. 2.9
  4587.  820 ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ-
  4588. 2.9
  4589.  830 DEFPROCsquare_sym(R(),Rt(),RtR())
  4590. 2.9
  4591.  840 RtR()=Rt().R()
  4592. 2.9
  4593.  850 ENDPROC
  4594. 2.9
  4595.  860 ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ-
  4596. 2.9
  4597.  870 DEFPROCeigenvalues(RtR(),EV())
  4598. 2.9
  4599.  880 REM Eigenvalues are determined
  4600. 2.9
  4601.  from R-transposed x R, using the property that eigenvalues do not
  4602. change by a similarity
  4603. 2.9
  4604.  890 REM ***  transformation. Rt.R is
  4605. 2.9
  4606.  decomposed in a lower and upper
  4607. 2.9
  4608.  tri-angular matrix, Rt.R=LU. Then
  4609. 2.9
  4610.  UL has the same eigenvalues as LU.
  4611. 2.9
  4612.  900 REM Repeating this process
  4613. 2.9
  4614.  iterates all non-diagonal elements              to 0, and the diagonal
  4615. elements
  4616. 2.9
  4617.  to the eigenvalues.
  4618. 2.9
  4619.  910 :
  4620. 2.9
  4621.  920 REM E.D. Engelhardt, March 1989
  4622. 2.9
  4623.  930 :
  4624. 2.9
  4625.  940 LOCAL L(),U(),UL(),h%,c%,r%,t%,
  4626. 2.9
  4627. repeat,max,iterations%
  4628. 2.9
  4629.  950 h%=DIM(EV(),1)
  4630. 2.9
  4631.  960 DIM L(h%,h%),U(h%,h%),UL(h%,h%)
  4632. 2.9
  4633.  970 :
  4634. 2.9
  4635.  980 PRINTTAB(1,30)öIteration       : ò
  4636. 2.9
  4637.  :REM This info may be left out
  4638. 2.9
  4639.  990 :
  4640. 2.9
  4641. 1000 repeat=TRUE
  4642. 2.9
  4643. 1010 REPEAT
  4644. 2.9
  4645. 1020   iterations%+=1:PRINTTAB(13,30)
  4646. 2.9
  4647. iterations%  :REM may be left out
  4648. 2.9
  4649. 1030   REM Calculate lower triangle
  4650. 2.9
  4651.  L of RtR
  4652. 2.9
  4653. 1040   FOR c%=0 TO h%:FOR r%=c% TO h%
  4654. 2.9
  4655. 1050     L(r%,c%)=RtR(r%,c%):t%=c%-1
  4656. 2.9
  4657. 1060     IF t%>=0 FORt%=t%TO0STEP-1:
  4658. 2.9
  4659. L(r%,c%)=L(r%,c%)-L(r%,t%)
  4660. 2.9
  4661. *L(c%,t%):NEXT
  4662. 2.9
  4663. 1070     IF r%>c% THEN L(r%,c%)=
  4664. 2.9
  4665. L(r%,c%)/L(c%,c%)
  4666. 2.9
  4667. 1080     IF r%=c% IF L(r%,c%)<0 THEN:
  4668. 2.9
  4669. FOR t%=0 TO h%:L(t%,c%)=0:NEXT
  4670. 2.9
  4671. 1090     IF r%=c% L(r%,c%)=SQR L(r%,c%)
  4672. 2.9
  4673. 1100     IF r%=c% AND L(r%,c%)=0 r%=h%
  4674. 2.9
  4675. 1110   NEXT:NEXT
  4676. 2.9
  4677. 1120   :
  4678. 2.9
  4679. 1130   PROCtranspose(L(),U())
  4680. 2.9
  4681. 1140   :
  4682. 2.9
  4683. 1150   REM Matrix similar to RtR (ie
  4684. 2.9
  4685.  having same eigenvalues) is UL
  4686. 2.9
  4687. 1160   UL()=U().L()
  4688. 2.9
  4689. 1170   :
  4690. 2.9
  4691. 1180   REM Determine if diagonals of
  4692. 2.9
  4693.  RtR and UL are equivalent
  4694. 2.9
  4695. 1190   t%=0
  4696. 2.9
  4697. 1200   REPEAT
  4698. 2.9
  4699. 1210     IF UL(t%,t%)<>RtR(t%,t%)
  4700. 2.9
  4701. :repeat=FALSE
  4702. 2.9
  4703. 1220     t%+=1:IF t%>h% repeat=FALSE
  4704. 2.9
  4705. 1230   UNTIL repeat=FALSE
  4706. 2.9
  4707. 1240   IF t%<=h% repeat=TRUE:RtR()=
  4708. 2.9
  4709. UL()
  4710. 2.9
  4711. 1250 UNTIL repeat=FALSE
  4712. 2.9
  4713. 1260 :
  4714. 2.9
  4715. 1270 REM Put eigenvalues smaller then
  4716. 2.9
  4717.  non-diagonal elements to zero
  4718. 2.9
  4719. 1280 FOR t%=0 TO h%:UL(t%,t%)=0:NEXT
  4720. 2.9
  4721. 1290 FOR r%=1 TO h%-1:FOR c%=1 TO r%
  4722. 2.9
  4723. 1300   IF ABS UL(r%,c%)>max max=ABS
  4724. 2.9
  4725.  UL(r%,c%)
  4726. 2.9
  4727. 1310 NEXT:NEXT
  4728. 2.9
  4729. 1320 FOR c%=0 TO h%
  4730. 2.9
  4731. 1330   EV(c%)=RtR(c%,c%):IF EV(c%)<=
  4732. 2.9
  4733. max EV(c%)=0
  4734. 2.9
  4735. 1340 NEXT
  4736. 2.9
  4737. 1360 ENDPROC
  4738. 2.9
  4739. 1370 ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ
  4740. 2.9
  4741. 1380 DEFPROCprint
  4742. 2.9
  4743. 1390 VDU 14
  4744. 2.9
  4745. 1400 CLS:PRINTÉö Rows       : òSTR$
  4746. 2.9
  4747. row%Éö Columns    : òSTR$col%
  4748. 2.9
  4749. 1410 PRINTÉö Time(centisecs) : ò;STR$
  4750. 2.9
  4751. (end%-start%)Éæ
  4752. 2.9
  4753. 1420 PRINTö ******** Eigenvalues : òÉ
  4754. 2.9
  4755. 1430 FOR c%=0 TO col%
  4756. 2.9
  4757. 1440   PRINT E(c%)
  4758. 2.9
  4759. 1450 NEXT:PRINT
  4760. 2.9
  4761. 1460 VDU 15
  4762. 2.9
  4763. 1470 ENDPROC
  4764.  
  4765. Å   Partitioning hard drives Ö It is possible to partition hard drives
  4766. with less than 10 Mbyte. The answer is in the REM statements in the
  4767. Harddisc program on the PC disc. Change the A2080 in line 610 to any
  4768. multiple of &8800 (in hex). Details are given in the REMs.
  4769. Å   Hearsay Ö We mentioned changing modem baud rates in H & T in May.
  4770. Philip Green sends us a way of doing this automatically suggested by
  4771. Alfons Tjin. Use a dial prefix in the modem driver edit screen of just
  4772. öATò and then put B3D or B0D, as necessary, in front of the phone number
  4773. in the telephone directory.
  4774. Å   Case sensitive system variables Ö Some readers have had problems
  4775. using the *SETMACRO Alias$ command. This is because system variables are
  4776. case sensitive i.e. you need to type: Alias$ not ALIAS$
  4777. Å   Overload passwords:  A B BROS, CABBAGED, SLIPPERS, PREVIOUS,
  4778. PILLAGED, BOVERBOD, LAVATORY, CASSETTE, WHALE╩FM, EXTRACTS, STOPKETS
  4779. The following hints were sent in by Lorcan Mongey
  4780. Å   ÉTæ Option in LDR and STR Ö Assembly language programmers may have
  4781. noticed that the Programmeræs Reference Manual mentions a ÉTæ option in
  4782. the description of the LDR and STR com-mands (page 608), but neglects to
  4783. say what it does. It is, in fact, used for setting the write-back option
  4784. and has exactly the same effect as É!æ. Note that the *MEMORYI disassem
  4785. bler always disassembles pre-indexed write-back with É!æ and post-
  4786. indexed write-back with ÉTæ, although you may use either form when
  4787. assembling. Bear in mind that post-indexed write-back always takes
  4788. place, regardless of the state of the write-back flag.
  4789. 2.10
  4790. Å   Bit patterns for LDR and STR Ö There is an omission in Appendix C of
  4791. the öARM Assembly Language programmingò book published by Com-puter
  4792. Concepts. Appendix C gives the bit patterns of the ARM instruction set,
  4793. but does not describe the ÉLæ bit of the ÉSingle Data transferæ
  4794. instruction. This is the Load/Store bit: 0=store (STR), 1=load (LDR).
  4795. 2.10
  4796. This description also applies to the ÉBlock data transferæ instructions
  4797. (STM and LDM).
  4798. 2.10
  4799. Å   BASIC restrictions Ö In BASIC II on the BBC B (and IV on the Master)
  4800. there were a number of restrictions which no longer apply to BASIC V on
  4801. the Archimedes, but have not been specifically mentioned in the
  4802. Archimedes User Guide. They are worth noting because they have probably
  4803. become ingrained in BBC B users who may not have realised that they have
  4804. been lifted.
  4805. 2.10
  4806. 1) You can now change MODE inside a procedure or function. This is
  4807. because the screen RAM is now completely separate from the program area.
  4808. 2.10
  4809. 2) The nesting limits of FOR, REPEAT and GOSUB (10, 20 and 26 respec
  4810. tively) no longer apply. Instead of a fixed limit, you can now nest
  4811. loops until you run out of RAM. I have successfully nested loops 15,000
  4812. deep and run a recursive procedure 30,000 levels deep! Strangely,
  4813. nesting GOSUBs too deeply is not trapped and will corrupt your program,
  4814. but this situation is unlikely to happen in practice.
  4815. 2.10
  4816. Å   BASIC errors Ö I have found four BASIC errors not listed in the User
  4817. Guide (Issue 2). They are:
  4818. 2.10
  4819. 11 No room for this dimension Ö An attempt was made to dimension an
  4820. array for which there was insufficient space.
  4821. 2.10
  4822. 25 Bad MODE Ö An attempt was made to select a screen mode for which
  4823. there is insufficient memory. More memory can be allocated by *CONFIGURE
  4824. SCREENSIZE.
  4825. 2.10
  4826. 37 No room for function/procedure call Ö An attempt was made to Énestæ
  4827. too many function and/or procedure calls.
  4828. 2.10
  4829. 44 Too many nested structures Ö An attempt was made to Énestæ too many
  4830. FOR...NEXT, REPEAT...UNTIL and/or WHILE... ENDWHILE loops.
  4831. 2.10
  4832. Note that 11 and 44 are covered in the Archimedes 400 series BBC BASIC
  4833. Guide.
  4834. 2.10
  4835. Å   Using FORTRAN 77 Ö The article on using FORTRAN 77 in Archive 1.7
  4836. included a sample subroutine showing how to access graphics from
  4837. FORTRAN. There are a number of problems with this subroutine. It canæt
  4838. cope with negative graphics coordinates (needed after an origin shift),
  4839. it sends a line feed to the screen when it is used, which can cause your
  4840. graphics to scroll upwards, and it uses an output channel which should
  4841. be kept free for file access. The following solves all the problems:
  4842. 2.10
  4843. SUBROUTINE PLOT(K,X,Y)
  4844. 2.10
  4845. INTEGER X,Y  I1=IAND(X,?IFF)
  4846. 2.10
  4847. I2=ISHFT(IAND(X,?IFF00),-8)
  4848. 2.10
  4849. J1=IAND(Y,?IFF)
  4850. 2.10
  4851. J2=ISHFT(IAND(Y,?IFF00),-8)
  4852. 2.10
  4853. PRINT 100,CHAR(25),CHAR(K),CHAR(I1),
  4854. 2.10
  4855. CHAR(I2),CHAR(J1),CHAR(J2)
  4856. 2.10
  4857. RETURN
  4858. 2.10
  4859. 100 FORMAT (6A1$)
  4860. 2.10
  4861. END
  4862. 2.10
  4863. This method masks out the unwanted bits and shifts the data into the
  4864. l.s.b., thus preserving the sign. It uses PRINT instead of WRITE,
  4865. avoiding the need for a channel number. The $ at the end of the FORMAT
  4866. statement suppresses the line feed. (No criticism of the original
  4867. authors is intended; my first attempt looked very similar!)
  4868. 2.10
  4869. Included on this monthæs program disc is Graph_ FOR, the FORTRAN source
  4870. of a set of graphics subroutines which provide a full set of VDU calls.
  4871. Some, like BELL for instance, are trivial, but others are more
  4872. complicated.
  4873. 2.10
  4874. Å   Printer conventions Ö Many people seem to have difficulty with
  4875. setting up the correct linefeed or non-linefeed for their printers for
  4876. different app-lications, so I.J. King has tried to explain it for us╔
  4877. 2.10
  4878. How the Archimedes deals with varying printer standards Ö Since there
  4879. are two standards for printers, the Archimedes has a mechanism to allow
  4880. it to cope with both. The standards in question affect the way the paper
  4881. is fed through the mechanism and there are two possible cases:
  4882. 2.10
  4883.  A. Auto Linefeed: every time the printer receives a carriage return
  4884. character (code 13), it generates a line feed (code 10) to move the
  4885. paper up a line.
  4886. 2.10
  4887. B. Non-Auto Linefeed: the printer does not gener-ate its own linefeed
  4888. characters but relies on the com-puter to send a linefeed after every
  4889. carriage return.
  4890. 2.10
  4891. Most modern printers will actually have a switch to select either of
  4892. these modes, allowing them to be compatible with most computers, but
  4893. this is likely to be difficult to reach. The Archimedes will (in the
  4894. case of virtually all software) send a line feed after every carriage
  4895. return. To allow compatibility with printers in mode (A) above, it is
  4896. possible to tell the machine to ignore a particular code when sent to
  4897. the printer. By setting this to 10 (the code for line feed), no line
  4898. feeds will be sent to the printer and you are compatible with type (A)
  4899. printers.
  4900. 2.10
  4901. This code is set up using the *IGNORE command, for example:
  4902. 2.10
  4903. *IGNORE 10
  4904. 2.10
  4905. To disable the trap altogether, simply enter *IGNORE on its own. Either
  4906. of these may be preceded by CONFIGURE to make the effect permanent, e.g.
  4907. 2.10
  4908. *CONFIGURE IGNORE 10
  4909. 2.10
  4910. The Archimedes is set up with a factory default ignore code of 10,
  4911. making the system compatible with type (A) printers when it arrives.
  4912. 2.10
  4913. Problems arising when the protocol is ignored Ö The above should make
  4914. everything seem fairly simple and indeed it ought to be. However, some
  4915. software houses, notably GST and Grafox (i.e. First Word Plus and
  4916. Logistix) have chosen to ignore the sensible protocols described above
  4917. and override the *IGNORE status in such a way that they are only
  4918. compatible with type (B) printers, regardless of the setting of *IGNORE.
  4919. 2.10
  4920. This means that the hapless user will have been forced to configure his
  4921. printer to be type (B) but will not have re-configured his Archimedes
  4922. since the software will override the settings and work anyway. They then
  4923. go out and purchase a correctly written package, such as System
  4924. DeltaPlus etc, and the result is a type (B) printer (generating no line
  4925. feeds) on a machine configured for a type (A) printer (and so sending no
  4926. line feeds) which results in no line feeds at all and the text all comes
  4927. out on the same line.
  4928. 2.10
  4929. A subsidiary problem occurs in some cases, when reconfiguring the
  4930. Archimedes to work with type (B) printers, as is necessary if you wish
  4931. to use both First Word Plus/Logistix and other, correctly written,
  4932. software. The correct way to do this is to enter the command *CONFIGURE
  4933. IGNORE with no parameters, completely disabling the printer trap. It is
  4934. not correct to enter *CONFIGURE IGNORE 0 as this prevents code 0 from
  4935. being sent to the printer and may corrupt some graphics/font change
  4936. sequences used by certain software.
  4937. 2.10
  4938. Conclusions Ö If you are using any package which overrides the Acorn
  4939. protocols for printer compatibility in the way described above and also
  4940. wish to use correctly written software (in my case, I use both Logistix
  4941. and System DeltaPlus), you should take the following steps:
  4942. 2.10
  4943. 1. Set your printer so that Auto Linefeed is OFF (usually a DIP switch).
  4944. 2.10
  4945. 2. Enter *CONFIGURE IGNORE
  4946. 2.10
  4947. 3. Press <ctrl-break> to reconfigure your machine.
  4948. 2.10
  4949. This now only leaves us with one question Ö why are Acornsoft apparently
  4950. condoning this system of forcing the user to have a printer type
  4951. different from that for which the machine is configured by default?!
  4952. 2.10
  4953. Å   PC Emulator Star Commands (Response to query in Archive 2.5 p5) Ö
  4954. There is no need for a *Configure Floppies command from the PC emul-ator
  4955. when copying from one 3.5ö disc to another. You must understand the
  4956. distinction between log-ical and physical drives: logical drives are
  4957. known to the emulator as A, B, C, etc, and are mapped onto the physical
  4958. drives 0, 1, etc. It is possible to have more than one logical drive
  4959. assigned the same phys-ical drive. This is what happens when you have
  4960. your Archimedes configured for one floppy Ö the emul-ator maps logical
  4961. drives A and B onto physical drive 0 and, recognising this when you copy
  4962. from A to B, prompts for a disc change. If you have two floppies, the
  4963. emulator maps A and B onto 0 and 1 respect-ively. I use an external
  4964. 5.25ò 40/80 track drive on my Archimedes and my config.sys file, listed
  4965. below, illustrates the way around the problem.
  4966. 2.10
  4967. device=driver.sys /d:0 /t:80 /f:2
  4968. 2.10
  4969. device=driver.sys /d:1 /t:80 /f:2
  4970. 2.10
  4971. device=driver.sys /d:1 /t:40 /f:0
  4972. 2.10
  4973. device=driver.sys /d:1 /t:40 /f:0
  4974. 2.10
  4975. files=20
  4976. 2.10
  4977. buffers=10
  4978. 2.10
  4979. The first four lines assign more logical drives (which the emulator
  4980. gives the letters C, D, E and F) to the physical drives 0 and 1. The
  4981. meaning of the parameters is:
  4982. 2.10
  4983. /d: physical drive number
  4984. 2.10
  4985.    (0 for internal, 1 for external)
  4986. 2.10
  4987. /t: number of tracks on disc
  4988. 2.10
  4989.    (80 for 720k and 40 for 360k)
  4990. 2.10
  4991. /f: disc format
  4992. 2.10
  4993.    (2 means 720k, 0 means 360k)
  4994. 2.10
  4995. The first line assigns logical drive C to physical drive 0. You can now
  4996. copy from 3.5ö to 3.5ò by using Écopy a:x.dat c:æ and DOS will prompt
  4997. for a disc change. The second line maps logical drive D to physical
  4998. drive 1, enabling copying between 5.25ö 80-track floppies (copy b:x.dat
  4999. d:). The last two lines assign two 40-track drives (E and F) to physical
  5000. drive 1, allowing copying between 40-track 5.25ò discs (copy e:x.dat f:)
  5001. in the same way.
  5002. 2.10
  5003. You should be aware that loading all these device drivers will use up
  5004. some application workspace, leaving less for programs, so only install
  5005. them when you need them!
  5006. 2.10
  5007. Å   Three SWIs which are not mentioned in the Programmeræs Reference
  5008. Manual (Issue 1):
  5009. 2.10
  5010. OS_AddToVector &47
  5011. 2.10
  5012. OS_WriteEnv &48
  5013. 2.10
  5014. WaveSynth_Load &40300
  5015. 2.10
  5016. (WaveSynth_Load was mentioned but not ident-ified in Archive 1.8, p9)
  5017. 2.10
  5018. Also, there is one SWI which seems to have been mis-spelled in the
  5019. Arthur 1.20 ROMs, namely:
  5020. 2.10
  5021. Sound_QSDispatch &401C4
  5022. 2.10
  5023. The ÉSæ between Q and Dispatch shouldnæt be there. If you refer to SWIs
  5024. by name rather than number then you must mis-spell this one in the same
  5025. way otherwise it wonæt be recognised!
  5026. 2.10
  5027. Å   Infinite energy for ThunderMonk Ö J.R. Donaldson sent in this
  5028. program, which will alter your ThunderMonk disk to give you infinite
  5029. energy.
  5030. 2.10
  5031.  10 REM > Thun_Cheat
  5032. 2.10
  5033.  20 REM Joe Pineapples Ö Cool Assassin
  5034. 2.10
  5035.  30
  5036. 2.10
  5037.  40 DIM sector% &400
  5038. 2.10
  5039.  50
  5040. 2.10
  5041.  60 MODE 0
  5042. 2.10
  5043.  70 PRINT öPlease insert ThunderMonk
  5044. 2.10
  5045.  disc and press a key.ö
  5046. 2.10
  5047.  80 G = GET
  5048. 2.10
  5049.  90
  5050. 2.10
  5051. 100 PRINT ÉöNow loading relevant
  5052. 2.10
  5053.  sectoröÉ
  5054. 2.10
  5055. 110
  5056. 2.10
  5057. 120 SYS öADFS_DiscOpò,, 1, &C6400,
  5058. 2.10
  5059.  sector%, &400
  5060. 2.10
  5061. 130
  5062. 2.10
  5063. 140 PRINT öDo you want to play
  5064. 2.10
  5065.  (C)heat or Normal ?ö
  5066. 2.10
  5067. 150 G = GET
  5068. 2.10
  5069. 160
  5070. 2.10
  5071. 170 IF G=ASC(öCò) OR G=ASC(öcò) THEN
  5072. 2.10
  5073. 180   sector%!&388 = &E59C0044
  5074. 2.10
  5075. 190   sector%!&38C = &E28000FE
  5076. 2.10
  5077. 200   sector%!&390 = &E58C0044
  5078. 2.10
  5079. 210   ELSE
  5080. 2.10
  5081. 220   sector%!&388 = &059C0044
  5082. 2.10
  5083. 230   sector%!&38C = &02400001
  5084. 2.10
  5085. 240   sector%!&390 = &058C0044
  5086. 2.10
  5087. 250 ENDIF
  5088. 2.10
  5089. 260
  5090. 2.10
  5091. 270 PRINT ÉöNow saving relevant
  5092. 2.10
  5093.  sectoröÉ
  5094. 2.10
  5095. 280
  5096. 2.10
  5097. 290 SYS öADFS_DiscOpò,, 2, &C6400,
  5098. 2.10
  5099.  sector%, &400
  5100. 2.10
  5101. 300
  5102. 2.10
  5103. 310 PRINT öChange complete. Now use
  5104. 2.10
  5105.  disc as normal.ö
  5106. 2.10
  5107. 320 END
  5108. 2.10
  5109. Å   Thunder Monk passwords Ö the Thunder Monk passwords change from disc
  5110. to disc (or do they change from month to month? Ed), but they can be
  5111. found at address &4E400. Just find your level two password in the list
  5112. below and next two words will be used for levels three and four e.g. our
  5113. level two password is STEVES so the passwords for the next levels are
  5114. BIRTHDAY and MIDSUMMER.
  5115. 2.10
  5116. SHIRT JUMPER WELLIES Y-FRONTS LOVERS HEARTS CUPID VALENTINE DANIEL AND
  5117. SIMONS BIRTHDAY JOKES SHOWERS FOOL SPRING POLE EXAMS SUNNY STUDY STEVES
  5118. BIRTHDAY MIDSUMMER WARMER HOLIDAYS MAJORCA SUNHAT HOTTER RESULTS FAILED
  5119. PASSED PISSUP SCORCHER RESTART SUNBURN ARCHIE SPOOK SHIVER HALLOWEEN
  5120. COOLING BONFIRE WEEEEEE FIREWORKS CHILLY CHRISTMAS HOLLY PRESENTS MERRY!
  5121. 2.10
  5122. (Dæyou get the significance of the passwords?? Ed.)
  5123. 2.10
  5124. Å   View to FWP Ö When using the utility provided with First Word Plus
  5125. to convert View files, Robert Leon noted that the left margin default
  5126. (in the Print File dialogue window) should be changed to 4, otherwise
  5127. the file is not printed properly.
  5128. 2.10
  5129. Å   Using 1st Mail for multi-column printouts Ö David Scott Ö Text which
  5130. is to be printed in more than one column is first prepared with First
  5131. Word Plus and it is at this stage that preparations must be made for the
  5132. print format. The text format must suit the final required column width
  5133. otherwise First Mail will ignore the instructions to print out in multi
  5134. columns.
  5135. 2.10
  5136. An example will show how to lay out the text. Suppose that you require
  5137. two columns each 31 characters wide set side by side on a 65 character
  5138. wide sheet. This will be possible as it allows 3 characters for the
  5139. central white column since
  5140. 2.10
  5141.  31 + 3 + 31 = 65
  5142. 2.10
  5143. The text must be prepared using a line length of 31 characters. The page
  5144. markings in First Word Plus will show final page 1 column 1 as page 1,
  5145. final page 1 column 2 as page 2, final page 2 column 1 as page 3 and so
  5146. on.
  5147. 2.10
  5148. When the text has been fully prepared enter First Mail and follow the
  5149. instructions given on pages 196 and 197 of the manual. The number of
  5150. columns must be set to 2 in this example.
  5151. 2.10
  5152. Å   Another possible bug in First Mail Ö David Leckie Ö When using First
  5153. Word Plus with the ruler set to double line spacing, continuous text,
  5154. i.e. no returns are double spaced but text followed with a return is not
  5155. double spaced as you would expect.
  5156. 2.10
  5157. However when a First Mail mail-merge is done from the file, the mrg file
  5158. contains double spaced text where there was single spaced text in the
  5159. original doc. Thus if you want, say, your address lines to be double
  5160. spaced then they should be a RETURN between each line in the doc file
  5161. only if you are not going to do a First Mail mail merge. If you are
  5162. doing a mail merge then they should be single spaced i.e. no RETURNS
  5163. because after the mail merge double line spacing will be inserted! Very
  5164. funny!
  5165. 2.10
  5166. Å   öMemallocò module Ö John Fidler was playing with the !Lander program
  5167. in RISC-OS when he realised that it should not have run with the
  5168. configuration settings on his machine. He looked in the !Lander
  5169. directory (by clicking on the icon in the directory viewer while holding
  5170. the <shift> key) and found the Memalloc module.
  5171. 2.10
  5172. This module provides nine new star commands, which allow you to check
  5173. and alter the size of various memory pools i.e. system heap, RMA, screen
  5174. area, sprite area and font cache.
  5175. 2.10
  5176. ==> Help on keyword MemAlloc
  5177. 2.10
  5178. Module is: MemAlloc util 0.11 (06 Dec 1988)
  5179. 2.10
  5180. Commands provided:
  5181. 2.10
  5182. SystemSize RMASize ScreenSize SpriteSize FontSize
  5183. 2.10
  5184. RAMFSSize RMAFree SpriteFree FontFree
  5185. 2.10
  5186. Å   Desktop ScreenSize configuration Ö When using the desktop, the
  5187. memory allocated to the screen area is regulated by the desktop screen
  5188. mode and not the configuration setting e.g. if you are in mode 12 then
  5189. the screen area will have 80k allocated to it (or 96k for the 400
  5190. series).
  5191. 2.10
  5192. Å   Desktop startup commands Ö When starting the desktop using *Desktop,
  5193. you can make the Archimedes run a file or perform a star command. This
  5194. facility could be used to start the desktop up in a predefined state.
  5195. 2.10
  5196. ==> Help on keyword Desktop
  5197. 2.10
  5198. *Desktop starts up any dormant Wimp modules, and also passes an optional
  5199. 2.10
  5200. *command or file of *commands to Wimp_StartTask.
  5201. 2.10
  5202. Syntax: *Desktop [<*command> | -File <filename>]
  5203. 2.10
  5204. Å   Converting ArcTerm 6.01 to RISC-OS Ö Arc-Term 6.01 will work under
  5205. RISC-OS if you make a !Run file in the !ArcTerm application directory:
  5206. 2.10
  5207. RMEnsure InternationalKeyboard 0.17
  5208. 2.10
  5209. RMReInit InternationalKeyboard
  5210. 2.10
  5211. DIR <Obey$Dir>.!ArcTerm
  5212. 2.10
  5213. Run ArcTerm
  5214. 2.10
  5215. Å   Extra Options for the Copy Command Ö The new User Guide (page 208)
  5216. lists a number of new options for the Copy command which considerably
  5217. extend its usefulness. The L and N options are par-ticularly useful for
  5218. performing backups from hard disc to floppy disc. Thus the command:
  5219. 2.10
  5220.  *Copy HD::$.A.* FL::$.* ~CFQR
  5221. 2.10
  5222. will make a quick backup, without confirmation, of all the files and
  5223. subdirectories in directory A of the hard disc named HD onto the floppy
  5224. disc named FL. If however the option N is also added then only the files
  5225. which have changed since the last backup will be copied, thus reducing
  5226. the backup time consider-ably. If the L option is also added then even
  5227. more time is saved as the directories of both source and destination
  5228. disks are checked before any attempt is made to load the files
  5229. themselves.
  5230. 2.10
  5231. If suitable Copy commands are added to the end of an application !Run
  5232. file then an automatic backup of changed files can be made when you have
  5233. finished using the application. In this case it is vital to quote the
  5234. name of the required backup floppy disc so that a request to load it can
  5235. be given if it is not already in the drive.
  5236. 2.10
  5237. Å   RISC-OS RS423 Ö Richard House says that using RISC-OS he can now
  5238. communicate with his BBC Model B at 19200 baud, without any errors
  5239. (whereas under Arthur 1.2, even with the patch, he was limited to 9600
  5240. baud).
  5241. 2.10
  5242. Å   Diagram II using RAMdisc Ö Load the file öSetupò and change the ö8ò
  5243. in lines 10045, 10750, 10765, 10805 and 11325 to ö23ò. This will cause
  5244. it to access the ram-disk (assuming you copied Diagram II over to the
  5245. ram-disk) thereby running much faster during scrolling and saving wear
  5246. and tear on your floppy or hard disk. (J.Daniels of Pineapple Software)
  5247. 2.10
  5248. Å   MIDI !Maestro Ö One reader says that there is an undocumented
  5249. facility in the !Maestro application which can play a MIDI instrument if
  5250. the MIDI podule is fitted.
  5251. 2.10
  5252. Å   Typing control characters Ö If you wish to use a önon-keyboardò
  5253. character under RISC-OS, just hold down the <ALT> key and type in the
  5254. character number on the keypad.
  5255. 2.10
  5256. Å   RMReInit SpriteUtils Ö Many applications unplug modules and
  5257. reinitialise them later. Often, under RISC-OS, the SpriteUtils module
  5258. does not get reinitialised. If you have any problems loading sprites or
  5259. get the öSWI not knownò error, you can check whether your modules have
  5260. been reinitialised properly by typing *ROMModules.
  5261. 2.10
  5262. One reader says that ÉPacmaniaæ can be cured of this by adding the
  5263. following line to the !BOOT file:
  5264. 2.10
  5265. 935 *RMReInit SpriteUtils
  5266. 2.10
  5267. Å   Multi-Tasking Ö How many tasks can RISC-OS run simultaneously? The
  5268. manual doesnæt say, so I decided to find out by loading multiple copies
  5269. of the desktop clock. When I tried to load the 29th clock I got an error
  5270. message öToo many tasksò, making the upper limit 28.
  5271. 2.10
  5272. Å   Leaving the Desktop from a Command File Ö David Scott Ö The answer
  5273. to my own previous help query is actually quite simple when you know
  5274. how! The last command in the file, which must be an obey file, (it does
  5275. not work with an exec file) must be:
  5276. 2.10
  5277. *fx138,0,252
  5278. 2.10
  5279. which simulates pressing <control-shift-f12>.
  5280. 2.10
  5281. Å   Space for large applications Ö The methods used by Acorn and other
  5282. suppliers of application software to load their applications which
  5283. require a lot of space, seem to be both devious and, in many cases,
  5284. ineffective since they result in less space being available for the
  5285. application than under Arthur 1.2.
  5286. 2.10
  5287. The method illustrated below allows over 300k of data space in Logistix
  5288. or over 600k of memory with the PC Emulator on a 1Mbyte machine. The
  5289. technique is a three stage process and is illustrated for Logistix.
  5290. 2.10
  5291. Note that the machine will have to be reset after using the application
  5292. in order to restore all the normal modules and their facilities.
  5293. 2.10
  5294. Note also that the amount of free space will vary depending on the
  5295. configuration settings. In my case, these are 80k for the screen (Mode
  5296. 12) and 0K for System sprites, font cache and RAM FS.
  5297. 2.10
  5298. If you use Econet then the modules NetFS, NetPrint, BBCEconet, NetFiler
  5299. and NetStatus should also be killed in Stage 2. If you do not use Econet
  5300. then you will gain marginally more space for all applications by
  5301. *Unplugging these modules as I have done.
  5302. 2.10
  5303. Stage 1 Ö Set up the standard !Run file for the application so that it
  5304. sets a function key to execute the stage 2 file after quitting the
  5305. desktop.
  5306. 2.10
  5307. | >$.!Logistix.!Run
  5308. 2.10
  5309. IconSprites <Obey$Dir>.!Sprites
  5310. 2.10
  5311. Key1 Quit|MDir $|MExec $.!Logistix.Lgx1|M
  5312. 2.10
  5313. Fx138,0,252
  5314. 2.10
  5315. Fx138,0,129
  5316. 2.10
  5317. Stage 2 Ö This file must be an command file (not Obey). It clears the
  5318. temporary modules and then kills all the unwanted modules. A function
  5319. key is then set up to execute Stage 3 and the file ends by recovering
  5320. the freed space using the RMTidy com-mand which must be the last command
  5321. in the file.
  5322. 2.10
  5323. | >$.!Logistix.Lgx1
  5324. 2.10
  5325. RMClear
  5326. 2.10
  5327. RMKill Debugger
  5328. 2.10
  5329. RMKill Desktop
  5330. 2.10
  5331. RMKill WindowManager
  5332. 2.10
  5333. RMKill FontManager
  5334. 2.10
  5335. RMKill InternationalKeyboard
  5336. 2.10
  5337. RMKill SoundScheduler
  5338. 2.10
  5339. RMKill StringLib
  5340. 2.10
  5341. RMKill Percussion
  5342. 2.10
  5343. RMKill SpriteExtend
  5344. 2.10
  5345. RMKill Draw
  5346. 2.10
  5347. RMKill Hourglass
  5348. 2.10
  5349. RMKill Podule
  5350. 2.10
  5351. Key 1 *Obey $.!Logistix.Lgx2|M
  5352. 2.10
  5353. FX138 0 129
  5354. 2.10
  5355. RMTidy
  5356. 2.10
  5357. Stage 3 Ö This Obey file sets the current directory (it was cleared by
  5358. the radical effects of RMtidy) and then loads the Floating point
  5359. emulator and Logistix directly. The final line is an optional backup
  5360. command which automatically backs the new and changed data files up to a
  5361. floppy disc (named S1 in this case).
  5362. 2.10
  5363. | >$.!Logistix.Lgx2
  5364. 2.10
  5365. Dir $.!Logistix
  5366. 2.10
  5367. RMLoad $.!System.Modules.
  5368. 2.10
  5369. FPEmulator
  5370. 2.10
  5371. Lgx
  5372. 2.10
  5373. COPY :DJS.!Logistix.Sheet.* :S1.*
  5374. 2.10
  5375.  ~CFLNQ
  5376. 2.10
  5377. PC Emulator Ö The method is similar for stages 1 and 2 except the
  5378. following additional modules can be killed in stage 2: SystemDevices,
  5379. TaskManager, PaletteUtil, Filer, ADFSFiler, RAMFSFiler, ShellCLI and
  5380. RamFS. Stage 3 is not required as the line which sets the function key
  5381. termination command is:
  5382. 2.10
  5383. Key 1 PC.Emulate|M
  5384. 2.10
  5385. which enters the PC Emulator directly. Note that the PC directory must
  5386. be in the root and must be called PC otherwise the Emulator fails during
  5387. loading.
  5388. 2.10
  5389. Å   Getting First Word Plus started Ö further to the comments on page
  5390. 20/21, last month, it is not a good idea to use *MOUNT as First Word
  5391. Plus will then not allow you to change discs, *DRIVE should be used and
  5392. this works fine. My machine is configured to boot with the external
  5393. drive selected, which usually holds a ölibrary discò, which is how I
  5394. discovered the problem. First Word Plus now boots happily under RISC-OS,
  5395. including an amended version of the key press module which traps <ctrl-
  5396. f12> to provide a command line similar to that on the desk top Ö i.e.
  5397. scrolling up from the bottom of the screen. (Weæll try to get hold of
  5398. this for the monthly disc. Ed.)
  5399. 2.10
  5400. Å   First Word Plus from the RISC-OS desktop Ö create the following run
  5401. file:
  5402. 2.10
  5403. !Run
  5404. 2.10
  5405. | !Run for !First Word Plus+ version 0.01
  5406. 2.10
  5407. IconSprites <Obey$Dir>.!Sprites
  5408. 2.10
  5409. WimpSlot -min 400k
  5410. 2.10
  5411. set FirstWordPlus$Resources $.Resources.1wp.
  5412. 2.10
  5413. set FirstWordPlus$Docs &.1wp.
  5414. 2.10
  5415. echo<5><23><17><7><6><8><0><8><0>
  5416. 2.10
  5417. <0><0><0><0>
  5418. 2.10
  5419. run ö<FirstWordPlus$Resources>1wpò
  5420. 2.10
  5421. Å   First Mail under RISC-OS Ö David Leckie Ö While First Word Plus has
  5422. drawn a lot of comment, very little mention has been made First Mail,
  5423. the mail merge program that accompanies it.
  5424. 2.10
  5425. When run under RISC-OS the main window will not resize. Now this may not
  5426. seem like much of a problem but the trouble is that the printer window
  5427. is hidden under the main window and cannot be easily accessed.
  5428. 2.10
  5429. Fortunately the corners of the window are just visible and can be
  5430. clicked on. The printer driver window pops up when clicked on ok, but
  5431. while the destination printer window can be clicked on, the name of the
  5432. selected destination printer is still hidden. This problem is compounded
  5433. by the last line of the 1st paragraph on page 154 of the manual being
  5434. wrong. öThe four options Parallel Port, Serial Port, Network Port and
  5435. Disc will appear in rotation.
  5436. 2.10
  5437. They do not rotate in the order above. Parallel Port is the first and
  5438. Disk is the third not fourth but which is network and serial? Can
  5439. someone with Arthur please tell us?
  5440. 2.10
  5441. Thus, if you want to do a merge to parallel printer it works fine. For
  5442. disc, point to the corner of the window and give 2 clicks (not 3). If
  5443. you need serial or network, try 1 or 3 clicks.
  5444. 2.10
  5445. Thanks to Mark Burch who helped to crack the problem.
  5446. 2.10
  5447. Å   Installing Artisan Ö Sean Kelly Ö There are three tips: the first is
  5448. on getting Artisan to return control to the desktop without resetting
  5449. the system; the second is on putting Artisan in any chosen directory;
  5450. the third is not strictly related to RISC-OS, but is on persuading
  5451. Artisan to work with compressed screens.
  5452. 2.10
  5453. Returning to the desktop Ö When Artisan is installed as described on the
  5454. RISC-OS support disc, it does not return correctly to the desktop. The
  5455. following modification was made to the program on my A440, and works
  5456. perfectly:
  5457. 2.10
  5458. 1. Load program ART5 and, using the BASIC EDITOR, find the line: öDEF
  5459. PROCLARò
  5460. 2.10
  5461. 2. The next line should be a multi-statement line containing in-line
  5462. assembly code. If so, you have found the correct routine. Delete
  5463. everything on this line except for the first three statements and then
  5464. add ö:QUITò so that the new line reads:
  5465. 2.10
  5466. MODE12:OSCLIöFX4ò:OSCLIöUPò:QUIT
  5467. 2.10
  5468. 3. Rename the old ART5 (in case you have made a mistake) and save the
  5469. new version as ART5.
  5470. 2.10
  5471. This new version returns to the desktop, in the same condition as when
  5472. Artisan was called, when you quit Artisan.
  5473. 2.10
  5474. Altering the directory structure Ö When installed using the hard disc
  5475. install program, Artisan insists on living in a directory called
  5476. :4.$.Artisan. This can be changed Ö the following details relate to my
  5477. chosen directory of :4.$.APPS.!ARTISAN.
  5478. 2.10
  5479. 1. !RUN should be altered from the support disc version. The new version
  5480. is:
  5481. 2.10
  5482. ECHO <22><&8C>
  5483. 2.10
  5484. WIMPSLOT -MIN 200k
  5485. 2.10
  5486. DIR :4.$.APPS.!ARTISAN *** put your own directory here ***
  5487. 2.10
  5488. URD @ BASIC ART4
  5489. 2.10
  5490. In my case, the pathname of !RUN is ö:4.$.APPS. !ARTISAN.!RUNò. Before
  5491. changing !RUN, re-name the old one in case of accident.
  5492. 2.10
  5493. 2. Alter ART5 using the Basic Editor. Several lines need changing; in
  5494. each case the change consists of altering the given directory to point
  5495. to your new directory. The lines that need altering can be found by
  5496. searching for the following strings using the editor (they are all
  5497. unambiguous, but the case of each letter is crucial):
  5498. 2.10
  5499. cLare%=FALSE:
  5500. 2.10
  5501. A%=cLARESMI
  5502. 2.10
  5503. WHEN12:OSCLI
  5504. 2.10
  5505. WHEN1:OSCLIöLOAD
  5506. 2.10
  5507. OSCLIöCDIR
  5508. 2.10
  5509. OSCLIöDIR ò+ClA$+
  5510. 2.10
  5511. Preserve the old ART5 in case of problems.
  5512. 2.10
  5513. Å   Adapting Artisan for Compressed Screens Ö I use a modified version
  5514. of the screen compression routine originally published in Personal
  5515. Computer World magazine. It uses the commands *CSCREENLOAD and
  5516. *CSCREENSAVE to load and save compressed screens, and compressed screens
  5517. are given the filetype &010. The adaptation below will work equally well
  5518. with other com-pression routines with the proviso that the compressed
  5519. screen loading routine must recog-nize and correctly deal with normally
  5520. saved screens (filetype &FF9).
  5521. 2.10
  5522. 1. Load ART5 and modify it using the BASIC Editor (first rename ART5, in
  5523. case of errors). Immediately after the REM statements at the start of
  5524. the program, add these two lines (substituting your own compressed
  5525. screen save and load commands):
  5526. 2.10
  5527. *SET Alias$SCREENSAVE CSCREENSAVE %0
  5528. 2.10
  5529. *SET Alias$SCREENLOAD CSCREENLOAD %0
  5530. 2.10
  5531. Substitute the names of your own commands for CSCREENSAVE and
  5532. CSCREENLOAD.
  5533. 2.10
  5534. 2. Find DEFPROCcLaRESM with the editor. Look about 14 lines down and
  5535. there will be a line beginning with WHEN&FF9. Four lines further down
  5536. should be a line beginning with ENDIF. Add two new lines after this
  5537. ENDIF line (substituting your own compressed screen filetype):
  5538. 2.10
  5539. WHEN &010
  5540. 2.10
  5541. RES%=3:mIC%=ReSM%:ReSM%+=1:cLarESM%=7
  5542. 2.10
  5543. 3. Find DEFPROCPS with the editor. Look about seventeen lines down and
  5544. there will be a line beginning with WHEN&FF9. Six lines further down
  5545. should be a line beginning with ENDIF. Add two new lines after this
  5546. ENDIF line (substituting your own compressed screen filetype):
  5547. 2.10
  5548. WHEN &010
  5549. 2.10
  5550. PROCGw(laRES%): clArES%=4
  5551. 2.10
  5552. The modified version of ART5 will correctly handle compressed and
  5553. uncompressed screens for loading, and will normally save screens in
  5554. compressed form.
  5555. 2.10
  5556. Å   RISC-OS Postscript Printer Drivers Ö One of our readers can only use
  5557. a laser printer from an Apple Mac, but wanted to obtain good quality
  5558. images of the documents that he produced in !Draw and !Edit. In order to
  5559. do this he redirected the output of the !PrinterPS to a file and
  5560. Éportedæ the file across to the Mac. The reason why this works is
  5561. because the output of !PrinterPS application is straight ASCII Post
  5562. script text, so in theory, the resulting file could be used by any
  5563. Postscript set up.
  5564. 2.10
  5565. Å   Configuring !PrinterDM Ö some readers have had problems outputting
  5566. to their dot matrix printers. This might be because the !PrinterDM
  5567. application must be configured for the printer you are using. This can
  5568. be done by clicking, with <select>, on the printer icon (once installed)
  5569. and then clicking on the printer name that appears in a window, until
  5570. the name of your printer appears. Then select the öSave Choiceò option
  5571. on the !PrinterDM menu. The printers that !PrinterDM supports are: Epson
  5572. FX, LQ, and LQ-850 compatibles and the NEC Pin-Writer P6 plus.
  5573. 2.10
  5574. Å   RISC-OS multisync text scaling solution! Ö Richard Averill Ö If you
  5575. turn back to Archive 2.9 p14, you will see the problem of text scaling
  5576. in multisync modes raised. Having also experienced this problem, I tried
  5577. to solve it.
  5578. 2.10
  5579. Firstly, I tried using the output to sprites feature to modify this.
  5580. Since this did not alter the size of the font at all, I then tried a
  5581. more interesting method. I knew that the standard vdu 5 font size was
  5582. 8x8 pixels, so I ran the following program to tell me which locations in
  5583. the operating systemæs workspace (&0000-&7FFF) contained the value 8.
  5584. 2.10
  5585. 10 REM > $.TextSize.Find8
  5586. 2.10
  5587. 20 REM (C) Richard Averill, 1989.
  5588. 2.10
  5589. 30 FOR I%=0 TO &7FFC STEP 4
  5590. 2.10
  5591. 40 IF !I%=8 THEN PRINT ~I%;
  5592. 2.10
  5593. 50 NEXT
  5594. 2.10
  5595. I then had a list of locations, so I set vdu 5 mode and *Memoryæed each
  5596. of the locations to have a closer look. Storing 16 in the second
  5597. location (&1360) caused the x text size to be doubled! There were 3 more
  5598. 8És consecutively after this value, so after a little testing I came to
  5599. the conclusion shown by the following table:
  5600. 2.10
  5601. Address   Contents
  5602. 2.10
  5603. &1360   x size
  5604. 2.10
  5605. &1364   y size
  5606. 2.10
  5607. &1368   x spacing
  5608. 2.10
  5609. &136C   y spacing
  5610. 2.10
  5611. All values are given in pixels, so by default these are 8,8,8,8. The
  5612. WIMP manager changes the x and y values according to the x and y Éeigæ
  5613. factors read by swi OS_ReadModeVariable detailed in OS1.2 PRM pages
  5614. 124Ö126. Note that the values need not be multiples of 8, but the
  5615. characters will look rather odd otherwise!
  5616. 2.10
  5617. The following procedure will enable you to set the text size and
  5618. spacing. The syntax is PROCtextsize(x size, y size, x spacing, y
  5619. spacing).
  5620. 2.10
  5621. 10000 DEF PROCtextsize(x%,y%,sx%
  5622. 2.10
  5623. ,sy%)
  5624. 2.10
  5625. 10010 !&1360=x%
  5626. 2.10
  5627. 10020 !&1364=y%
  5628. 2.10
  5629. 10030 !&1368=sx%
  5630. 2.10
  5631. 10040 !&136C=sy%
  5632. 2.10
  5633. 10050 ENDPROC
  5634. 2.10
  5635. For example, PROCtextsize(16,8,16,8) will give you double width text
  5636. when in VDU 5 mode. This will be square in mode 12 etc. and of a
  5637. rectangular shape in mode 20 etc. The text spacing will usually be the
  5638. same as the text size.
  5639. 2.10
  5640. To set the default text size from the RISC-OS desktop (the answer to the
  5641. query,) run the following program (which is in the ö$.TextSizeò
  5642. directory of the monthly disc) from within the desktop, and it will
  5643. redraw the whole screen to enable the new size to take effect.
  5644. 2.10
  5645.  10 REM > $.TextSize.SetSize
  5646. 2.10
  5647.  20 REM (C) Richard Averill, 1989.
  5648. 2.10
  5649.  30 REM restores default text size and spacing in the RISC-OS desktop.
  5650. 2.10
  5651.  40
  5652. 2.10
  5653.  50 !&1360=8
  5654. 2.10
  5655.  60 !&1364=8
  5656. 2.10
  5657.  70 !&1368=8
  5658. 2.10
  5659.  80 !&136C=8
  5660. 2.10
  5661.  90 SYS öWimp_Initialiseò,200,
  5662. 2.10
  5663. &4B534154 TO task%
  5664. 2.10
  5665. 100 SYS öWimp_ForceRedrawò,-1,0,0,
  5666. 2.10
  5667. &FFFF,&FFFF
  5668. 2.10
  5669. 110 SYS öWimp_CloseDownò,task%,
  5670. 2.10
  5671. &4B534154
  5672. 2.10
  5673. 120 QUIT
  5674. 2.10
  5675. This will set the text size to 8 pixels, the same as under the Arthur
  5676. WIMP manager. So if you have a high resolution monochrome, the text will
  5677. become four times smaller in each direction than normal!
  5678. 2.10
  5679. Unfortunately, there is a slight problem. The RISC-OS WIMP assumes
  5680. scaling will be done to ensure that the size of the text is always 16x32
  5681. OS units and uses these values when calculating text widths/heights
  5682. instead of finding the sizes from the operating system. So any verti
  5683. cally centred text (such as window titles) will not be centred properly
  5684. in multisync modes!
  5685. 2.10
  5686. For real compatibility with Arthur 1.2 WIMP applications, you can save
  5687. the Arthur 1.2 WindowManager module from ROM to disc and *RMLoad this
  5688. into RISC-OS instead. The Arthur 1.2 WIMP module is in the ö$.TextSizeò
  5689. directory of this monthæs programs disc.
  5690. 2.10
  5691.  
  5692.  
  5693.  
  5694. Å   Limited ADFS memory (RISC-OS/Arthur 1.2) Ö One reader has written in
  5695. saying that his Archimedes will only *MOUNT six discs. On the seventh,
  5696. the drive spins continuously until the disc is removed. This happens
  5697. because the ADFS only has a limited amount of memory to store the
  5698. directory information. The amount of memory allocated for this can
  5699. controlled by using *Configure ADFSDirCache.
  5700. ==> Help on keyword ADFSDirCache
  5701. *Configure ADFSDirCache sets the size of the directory cache (in Kbytes)
  5702. used by the ADFS. A value of 0 selects a default value which depends on
  5703. RAM size.
  5704. Syntax: *Configure ADFSDirCache <size>[K]
  5705. You can also make the Archimedes forget that it has seen the disc by
  5706. using *DISMOUNT.
  5707. 2.11
  5708. ==> Help on keyword Dismount
  5709. 2.11
  5710. *Dismount closes files, unsets directories and parks the given disc.
  5711. 2.11
  5712. Syntax: *Dismount [<disc spec.>]
  5713. 2.11
  5714. Å   Three floppies for Arthur 1.2 desktop Ö In Archive 2.8, pages 11/12,
  5715. there is a hint which allows you to access three drives from the
  5716. desktop. However, the hint states that you must start the desktop up by
  5717. typing */Desktop instead of *Desktop. One reader says that you could of
  5718. course set up *Set Alias$Desktop Run Desktop which would then allow you
  5719. to start up using *Desktop.
  5720. 2.11
  5721. Å   In First Word Plus, when printing after opening more than one file,
  5722. the first file you opened will be offered for printing, not the last one
  5723. you closed!
  5724. 2.11
  5725. Å   Configuring your printer under the PC Emulator Ö In reply to Chris
  5726. Walkeræs question, you must use the following reserved words when
  5727. configuring your printer:
  5728. 2.11
  5729. For serial printers use: AUX or COM1, COM2, COM3╔
  5730. 2.11
  5731. For parallel printers use: PRN or LPT1, LPT2╔
  5732. 2.11
  5733. Å   Sprite Plot comments from Martin Simmons Ö The article on sprite
  5734. plotting was interesting since it is always good to see how other
  5735. programmers solve problems. However, the routines are far from being the
  5736. fastest possible, a major inefficiency being that the screen pointer is
  5737. updated after every pixel is plotted. This could be rectified by
  5738. deleting 2410, 2460, 2510, 2580 and changing the following:
  5739. 2.11
  5740. 2010 PROCplot_4_pixels(4*
  5741. 2.11
  5742. (gjenta-1))
  5743. 2.11
  5744. 2050 ADD screen_pointerR,
  5745. 2.11
  5746. screen_pointerR,#320
  5747. 2.11
  5748. 2110 DEF PROCplot_4_pixels(index)
  5749. 2.11
  5750. 2400 STRNEB data5R,
  5751. 2.11
  5752. [screen_pointerR,#index+0]
  5753. 2.11
  5754. 2450 STRNEB data5R,
  5755. 2.11
  5756. [screen_pointerR,#index+1]
  5757. 2.11
  5758. 2500 STRNEB data5R,
  5759. 2.11
  5760. [screen_pointerR,#index+2]
  5761. 2.11
  5762. 2570 STRNEB data5R,
  5763. 2.11
  5764. [screen_pointerR,#index+3]
  5765. 2.11
  5766. Now the pointer is only changed at the end of each line. This improves
  5767. performance over the published routine by about 10% for a 24x24 pixel
  5768. sprite with no black pixels.
  5769. 2.11
  5770. It would be quicker to use word stores instead of byte stores but this
  5771. would complicate the routine and may even slow it down overall.
  5772. 2.11
  5773. Å   D.I.Y. A3000 serial interface Ö Mike Harrison (Archive 2.10 p 56)
  5774. didnæt know what the chip numbers were for the A3000 serial interface
  5775. kit. You need a 6551 (which ought to be one of the ones manufactured by
  5776. CMD) and an LT1133.
  5777. 2.11
  5778. Å   Evaluation of Algebraic Expressions (E.D. Engelhardt) Ö Anyone who
  5779. is interested in the evaluation of valid algebraic expressions could try
  5780. to use PROCexpression in program Evalexpr as given below. The procedure
  5781. mentioned has been written using suggestions of Mr de Heus, ECD, Delft,
  5782. Holland.
  5783. 2.11
  5784. Variable names in an expression are single, lower-case characters
  5785. ranging from Éaæ to Ézæ. These names are stored in Évar$æ. Each
  5786. character in the input expression Éex$æ is matched with its presence in
  5787. Évar$æ. If so, its position in Évar$æ is detected and it is replaced by
  5788. the (arbitrary) character É$æ. The position is used to assign an
  5789. appropriate value to the actual variable by means of array Évar()æ. The
  5790. value of the expression is obtained using the EVAL function.
  5791. 2.11
  5792. The reason EVAL(ex$) is preceded by EVAL (öFALSEò) in PROCevalexpression
  5793. is as follows: If one enters an expression containing no variables but
  5794. numbers only, and the expression cannot be evaluated (e.g. LN0 or 3/0)
  5795. an error message appears on the screen. Thereafter, entering the same
  5796. type of expression, again not containing variables (e.g. LN9 after LN0
  5797. or 6/5 after 3/0), results in the same error message. To prevent this
  5798. from happening the instruction EVAL(ö<>ò) is included. I discovered this
  5799. Éfeatureæ by accident and found the solution by trial and error. I would
  5800. appreciate any comments from interested readers.
  5801. 2.11
  5802.  10 REM >Evalexpr
  5803. 2.11
  5804.  20 :
  5805. 2.11
  5806.  30 WHILE TRUE
  5807. 2.11
  5808.  40   PROCevalexpression
  5809. 2.11
  5810.  50 ENDWHILE
  5811. 2.11
  5812.  60 END
  5813. 2.11
  5814.  70 :
  5815. 2.11
  5816.  80:
  5817. 2.11
  5818.  90 DEFPROCevalexpression
  5819. 2.11
  5820. 100 k$=ö Press any key to continue !ò
  5821. 2.11
  5822. 110 LOCAL ERROR
  5823. 2.11
  5824. 120 ON ERROR LOCAL IF ERR=17 THEN
  5825. 2.11
  5826.  PRINTÉæö *** Escaped program !òÉ
  5827. 2.11
  5828. :END ELSE PRINTÉö ò;REPORT$æÉk$;:
  5829. 2.11
  5830. dummy=GET:ENDPROC
  5831. 2.11
  5832. 130 :
  5833. 2.11
  5834. 140 PROCinput
  5835. 2.11
  5836. 150 :
  5837. 2.11
  5838. 160 PROCexpression
  5839. 2.11
  5840. 170 exval=EVAL(öFALSEò)  :REM
  5841. 2.11
  5842. *** To prevent error message
  5843. 2.11
  5844.  after evaluation of a wrong
  5845. 2.11
  5846.  expression, e.g. LN0. Try to                                   REM this
  5847. line !
  5848. 2.11
  5849. 180 exval=EVAL(ex$)
  5850. 2.11
  5851. 190 :
  5852. 2.11
  5853. 200 PROCoutput
  5854. 2.11
  5855. 210 ENDPROC
  5856. 2.11
  5857. 220 :
  5858. 2.11
  5859. 230 DEFPROCinput
  5860. 2.11
  5861. 240 CLS:PRINTÉö Choice of variables
  5862. 2.11
  5863.  from a to z.öÉ
  5864. 2.11
  5865. 250 LINE INPUTö Give expression : ò
  5866. 2.11
  5867. ex$
  5868. 2.11
  5869. 260 ENDPROC
  5870. 2.11
  5871. 270 :
  5872. 2.11
  5873. 280 DEFPROCoutput
  5874. 2.11
  5875. 290 PRINTÉö Function value of ò;ex$
  5876. 2.11
  5877. ;ö = ò;exval
  5878. 2.11
  5879. 300 PRINTæk$;:dummy=GET
  5880. 2.11
  5881. 310 ENDPROC
  5882. 2.11
  5883. 320 :
  5884. 2.11
  5885. 330 DEFPROCexpression
  5886. 2.11
  5887. 340 LOCAL var$,var(),t%,i%
  5888. 2.11
  5889. 350 var$=öabcdefghijklmnopqrstuvw
  5890. 2.11
  5891. xyzö
  5892. 2.11
  5893. 360 DIM var(LEN(var$))
  5894. 2.11
  5895. 370 :
  5896. 2.11
  5897. 380 FOR t%=1 TO LEN(ex$)
  5898. 2.11
  5899. 390   i%=INSTR(var$,MID$(ex$,t%,1))
  5900. 2.11
  5901. 400   IF i%>0 THEN
  5902. 2.11
  5903. 410     var$=LEFT$(var$,i%-1)+ö$ò
  5904. 2.11
  5905. +MID$(var$,i%+1)
  5906. 2.11
  5907. 420     PRINTÉö Value of  ò;
  5908. 2.11
  5909. MID$(ex$,t%,1);ö     : ò;
  5910. 2.11
  5911. 430     INPUTöòvar(i%)
  5912. 2.11
  5913. 440     :
  5914. 2.11
  5915. 450     CASE i% OF
  5916. 2.11
  5917. 460       WHEN  1:a=var(i%)
  5918. 2.11
  5919. 470       WHEN  2:b=var(i%)
  5920. 2.11
  5921. 480       WHEN  3:c=var(i%)
  5922. 2.11
  5923. 490       WHEN  4:d=var(i%)
  5924. 2.11
  5925. 500       WHEN  5:e=var(i%)
  5926. 2.11
  5927. 510       WHEN  6:f=var(i%)
  5928. 2.11
  5929. 520       WHEN  7:g=var(i%)
  5930. 2.11
  5931. 530       WHEN  8:h=var(i%)
  5932. 2.11
  5933. 540       WHEN  9:i=var(i%)
  5934. 2.11
  5935. 550       WHEN 10:j=var(i%)
  5936. 2.11
  5937. 560       WHEN 11:k=var(i%)
  5938. 2.11
  5939. 570       WHEN 12:l=var(i%)
  5940. 2.11
  5941. 580       WHEN 13:m=var(i%)
  5942. 2.11
  5943. 590       WHEN 14:n=var(i%)
  5944. 2.11
  5945. 600       WHEN 15:o=var(i%)
  5946. 2.11
  5947. 610       WHEN 16:p=var(i%)
  5948. 2.11
  5949. 620       WHEN 17:q=var(i%)
  5950. 2.11
  5951. 630       WHEN 18:r=var(i%)
  5952. 2.11
  5953. 640       WHEN 19:s=var(i%)
  5954. 2.11
  5955. 650       WHEN 20:t=var(i%)
  5956. 2.11
  5957. 660       WHEN 21:u=var(i%)
  5958. 2.11
  5959. 670       WHEN 22:v=var(i%)
  5960. 2.11
  5961. 680       WHEN 23:w=var(i%)
  5962. 2.11
  5963. 690       WHEN 24:x=var(i%)
  5964. 2.11
  5965. 700       WHEN 25:y=var(i%)
  5966. 2.11
  5967. 710       WHEN 26:z=var(i%)
  5968. 2.11
  5969. 720     ENDCASE
  5970. 2.11
  5971. 730   ENDIF
  5972. 2.11
  5973. 740 NEXT
  5974. 2.11
  5975. 750 :
  5976. 2.11
  5977. 760 ENDPROC
  5978. 2.11
  5979.  
  5980. 2.11
  5981. Å   First Word Plus Ö I am sure that all users of First Word Plus have
  5982. found it considerably enhanced by the use of Steve Hoareæs Interrupt
  5983. Module (available on Shareware N╝6). The main use for this is in
  5984. mounting new discs, formatting and creating directories. I have recently
  5985. discovered that it can also be used for *EXECing files into the word
  5986. processor. This can be very useful because First Word Plus treats the
  5987. standard ASCII space character as a Éhardæ space. This means that if
  5988. straight ASCII text is read into First Word Plus in the regular way it
  5989. can not be formatted because each line is treated as an entire word. By
  5990. using the interrupt module and *EXECing the file it is as if it were
  5991. being typed in from the keyboard. Spaces between words are thus
  5992. translated into Ésoftæ spaces so that the resulting document can be
  5993. formatted in the usual way. Brian Cowan
  5994. 2.11
  5995. Å   Greek characters Ö (Gerald Fitton) For some time now I have been
  5996. considering converting all my old Wordwise files to PipeDream files. 
  5997. The thing that has been putting me off is that, since I teach (amongst
  5998. other things) maths and statistics, I need to be able to print Greek
  5999. letters such as CDSYabc defghijklmnopqrstuvwxy. It is relatively easy
  6000. from Wordwise to define a new character on the Epson FX printer, but not
  6001. so easy to include it in PipeDreamæs Printer On string.  I have got
  6002. round this by running a BASIC program from within PipeDreamæs !Run file
  6003. that sends the necessary codes for the Greek characters to the printer. 
  6004. You can then have What-You-See-Is-What-You-Get Greek characters on
  6005. screen by using the sequence <Alt>+E+C.  This is what you do:
  6006. 2.11
  6007. Modify the !Run file to include the command
  6008. 2.11
  6009. BASIC -quit ö<PipeDream$Dir>.
  6010. 2.11
  6011. Printers.Greekö
  6012. 2.11
  6013. My !Run file now looks like the one below.
  6014. 2.11
  6015. | > !PipeDream.!Run
  6016. 2.11
  6017. Set PipeDream$Dir <Obey$Dir>
  6018. 2.11
  6019. WimpSlot -min 160k -max 640k
  6020. 2.11
  6021. RMReInit InternationalKeyboard
  6022. 2.11
  6023. RMKill InternationalKeyboard
  6024. 2.11
  6025. BASIC -quit ö<PipeDream$Dir>.
  6026. 2.11
  6027. Printers.Greekö
  6028. 2.11
  6029. RMEnsure FPEmulator 2.60 RMLoad
  6030. 2.11
  6031.  <System$Path>Modules.FPEmulator
  6032. 2.11
  6033. Set Alias$@RunType_DDE Run
  6034. 2.11
  6035.  <PipeDream$Dir>.!Run %%*0
  6036. 2.11
  6037. Set File$Type_DDE PDream
  6038. 2.11
  6039. IconSprites <PipeDream$Dir>
  6040. 2.11
  6041. .!Sprites
  6042. 2.11
  6043. Load <Obey$Dir>.piped.pd 8000
  6044. 2.11
  6045. DIR <Obey$Dir>
  6046. 2.11
  6047. Echo <26>
  6048. 2.11
  6049. Pointer 0
  6050. 2.11
  6051. Go 8000 ; %*0
  6052. 2.11
  6053. DIR adfs::HardDisc4.$
  6054. 2.11
  6055. Include the new program ÉGreekæ in a suitable directory; I have chosen
  6056. the ÉPrintersæ directory.
  6057. 2.11
  6058. 100 REM > <PipeDream$Dir>.
  6059. 2.11
  6060. Printers.Greek
  6061. 2.11
  6062. 150 :
  6063. 2.11
  6064. 160 *Alphabet Greek
  6065. 2.11
  6066. 180 VDU 2
  6067. 2.11
  6068. 200 RESTORE
  6069. 2.11
  6070. 210 REPEAT
  6071. 2.11
  6072. 220 READ byte%
  6073. 2.11
  6074. 230 IF byte%<>-1 THEN VDU 1,byte%
  6075. 2.11
  6076. 240 UNTIL byte%=-1
  6077. 2.11
  6078. 250 :
  6079. 2.11
  6080. 260 VDU 3
  6081. 2.11
  6082. 270 :
  6083. 2.11
  6084. 280 END
  6085. 2.11
  6086. 300 :
  6087. 2.11
  6088. 310 DATA 27,64
  6089. 2.11
  6090. 320 DATA 27,58,0,0,0
  6091. 2.11
  6092. 330 DATA 27,37,1,0
  6093. 2.11
  6094. 340 DATA 27,54
  6095. 2.11
  6096. 350 DATA 27,38,0,108,108
  6097. 2.11
  6098. 360 DATA 136,0,128,0,252,2,0,2,0,0,0,0
  6099. 2.11
  6100. 370 DATA 27,38,0,128,128
  6101. 2.11
  6102. 380 DATA 138,8,4,2,4,8,16,32,64,128
  6103. 2.11
  6104. ,0,0
  6105. 2.11
  6106. 390 DATA 27,38,0,176,176
  6107. 2.11
  6108. 400 DATA 168,0,0,64,160,0,160,64,0,0
  6109. 2.11
  6110. ,0,0
  6111. 2.11
  6112. 410 DATA 27,38,0,177,177
  6113. 2.11
  6114. 420 DATA 139,18,0,18,0,126,0,18,0,18
  6115. 2.11
  6116. ,0,0
  6117. 2.11
  6118. 430 DATA 27,38,0,195,196
  6119. 2.11
  6120. 440 DATA 137,130,124,130,0,128,0,128,
  6121. 2.11
  6122. 64,0,0,0
  6123. 2.11
  6124. 450 DATA 139,2,4,10,16,34,64,130,96,
  6125. 2.11
  6126. 26,4,2
  6127. 2.11
  6128. 460 DATA 27,38,0,211,211
  6129. 2.11
  6130. 470 DATA 139,130,0,198,0,170,0,146,0,
  6131. 2.11
  6132. 130,0,0
  6133. 2.11
  6134. 480 DATA 27,38,0,217,217
  6135. 2.11
  6136. 490 DATA 139,58,68,130,0,128,0,130,68
  6137. 2.11
  6138. ,58,0,0
  6139. 2.11
  6140. 500 DATA 27,38,0,225,249
  6141. 2.11
  6142. 510 DATA 138,28,34,0,34,20,8,20,32,2
  6143. 2.11
  6144. ,0,0
  6145. 2.11
  6146. 520 DATA 138,127,128,18,128,18,128,
  6147. 2.11
  6148. 114,12,0,0,0
  6149. 2.11
  6150. 530 DATA 11,64,0,64,32,16,11,4,8,16
  6151. 2.11
  6152. ,96,0
  6153. 2.11
  6154. 540 DATA 138,12,18,64,178,0,146,0,
  6155. 2.11
  6156. 146,76,0,0
  6157. 2.11
  6158. 550 DATA 137,8,20,8,34,8,34,8,34,0
  6159. 2.11
  6160. ,0,0
  6161. 2.11
  6162. 560 DATA 8,13,144,37,192,5,130,0,0,0
  6163. 2.11
  6164. ,0,0
  6165. 2.11
  6166. 570 DATA 10,64,60,64,0,64,0,64,63,0
  6167. 2.11
  6168. ,0,0
  6169. 2.11
  6170. 580 DATA 138,56,68,16,130,16,130,16,
  6171. 2.11
  6172. 68,56,0,0
  6173. 2.11
  6174. 590 DATA 71,0,0,124,0,4,0,0,0,0,0,0
  6175. 2.11
  6176. 600 DATA 138,62,0,8,0,20,0,34,0,0,0,0
  6177. 2.11
  6178. 610 DATA 136,130,68,40,16,8,4,2,0,0
  6179. 2.11
  6180. ,0,0
  6181. 2.11
  6182. 620 DATA 10,127,0,4,0,4,0,4,120,4,0,0
  6183. 2.11
  6184. 630 DATA 10,64,32,16,8,4,8,16,96,0
  6185. 2.11
  6186. ,0,0
  6187. 2.11
  6188. 640 DATA 9,128,40,212,0,149,0,149,2,0
  6189. 2.11
  6190. ,0,0
  6191. 2.11
  6192. 650 DATA 139,0,0,0,0,0,0,0,0,0,0,0
  6193. 2.11
  6194. 660 DATA 138,32,0,62,0,32,0,62,0,32
  6195. 2.11
  6196. ,0,0
  6197. 2.11
  6198. 670 DATA 9,63,64,0,68,0,68,56,0,0,0,0
  6199. 2.11
  6200. 680 DATA 139,0,0,0,0,0,0,0,0,0,0,0
  6201. 2.11
  6202. 690 DATA 139,28,34,0,34,0,34,28,32,0
  6203. 2.11
  6204. ,32,0
  6205. 2.11
  6206. 700 DATA 10,32,64,0,64,60,64,0,64,0
  6207. 2.11
  6208. ,0,0
  6209. 2.11
  6210. 710 DATA 9,64,56,4,0,4,0,120,0,0,0,0
  6211. 2.11
  6212. 720 DATA 10,56,68,0,68,187,68,0,68,56
  6213. 2.11
  6214. ,0,0
  6215. 2.11
  6216. 730 DATA 9,65,34,20,8,20,34,65,0,0
  6217. 2.11
  6218. ,0,0
  6219. 2.11
  6220. 740 DATA 11,120,4,0,4,251,4,0,4,120
  6221. 2.11
  6222. ,0,0
  6223. 2.11
  6224. 750 DATA 138,28,34,0,2,12,2,0,34,28
  6225. 2.11
  6226. ,0,0
  6227. 2.11
  6228. 760 DATA -1
  6229. 2.11
  6230.  
  6231. 2.11
  6232. Incidently, this shows how you can include a BASIC program within an
  6233. Obey file and then come back to RUN the rest of the Obey file.
  6234. 2.11
  6235. You have to remember to remove ESC ö@ò from the Printer On string
  6236. otherwise you will lose all the character definitions you have just
  6237. downloaded! G L Fitton.
  6238. 2.11
  6239. This final section of hints and tips has been extracted from the Archive
  6240. Bulletin Board Service (BBS) by Richard Forster.
  6241. 2.11
  6242. (N.B. There may be some over-lap with other H & T, but I donæt have time
  6243. to edit it out Ö Iæm just off on my Holidays. Ed.)
  6244. 2.11
  6245. Å   First Word Plus Margins Ö It is possible to get First Word Plus to
  6246. change its margins permanently, but it is not easy. It may also depend
  6247. on your version of the software, and this method may not work on all
  6248. versions. Make sure you try it on a backup copy!
  6249. 2.11
  6250. 10 wp%=OPENUP(öResources.1wp.1wpò)
  6251. 2.11
  6252. 20 margin%=8 : REM or whatever is
  6253. 2.11
  6254.  required
  6255. 2.11
  6256. 30 PTR#wp%=&2EF9C
  6257. 2.11
  6258. 40 BPUT#wp%,margin%
  6259. 2.11
  6260. 50 CLOSE#wp%
  6261. 2.11
  6262. Å   Taxan Multisync juddering Ö If you have an A400/1 or A3000 machine
  6263. and are using it with a Taxan Multisync monitor, you may experience some
  6264. juddering which can be overcome thus:
  6265. 2.11
  6266. A400/1: Fit a molex shunt to link 2. If you do not have a spare shunt,
  6267. you can request one from Acorn Customer Services.
  6268. 2.11
  6269. A3000 : Take your machine to your local dealer. The modification is
  6270. different from the A400/1 machines and you must not open your machine.
  6271. 2.11
  6272. Å   Using the Yes/No mouse icon Ö In order to use the Yes/No mouse icon,
  6273. do:
  6274. 2.11
  6275. SWI öOS_Confirmò
  6276. 2.11
  6277. This changes the pointer shape, flushes the mouse buffer, waits until a
  6278. key is pressed and then, on exit: R0 = (lowercased) character pressed, C
  6279. flag is set if ESCAPE, Z flag set if character is ÉYæ
  6280. 2.11
  6281. Å   Saving Rom Sprites Ö To save rom sprites as a standard file, do:
  6282. 2.11
  6283. SYSöWimp_BaseOfSpritesò TO roms%
  6284. 2.11
  6285. SYSöOS_SpriteOpò,524,roms%,öfilenameò
  6286. 2.11
  6287. Save this as a BASIC program and double click it from the desktop.
  6288. 2.11
  6289. Å   Memory Re-allocation Ö You can re-allocate memory for spritesize,
  6290. screensize etc. by loading a module called MEMALLOC. This can be found
  6291. on Application Disc 2 in directory $.!Lander.
  6292. 2.11
  6293. Å   Hourglass  Ö The following SYS calls affect the hourglass. Note that
  6294. the hourglass is nested, so if you have turned it on twice it must be
  6295. turned off twice.
  6296. 2.11
  6297. SYSöHourGlass_Onò Ö Display Hourglass
  6298. 2.11
  6299. SYSöHourGlass_Offò Ö Remove Hourglass
  6300. 2.11
  6301. SYSöHourGlass_percentageò,number Ö Display Hourglass & percentage below.
  6302. 2.11
  6303. SYSöHourGlass_Smashò Ö Remove all hourglasses
  6304. 2.11
  6305. SYSöHourGlass-LEDsò,%AB Ö Where A is the top LED, B is the bottom LED
  6306. 2.11
  6307. SYSöHourGlass_Onò has a delay of 1/3 sec before actually appearing. To
  6308. make the delay the value of r0 use:
  6309. 2.11
  6310. SYSöHourGlass_Startò
  6311. 2.11
  6312. Å   Tiny directories Ö The adjust button on a tiny directory opens the
  6313. application and removes that tiny directory.
  6314. 2.11
  6315. Å   RISC-OS Speedup Ö The following calls speed up the machine ROMs from
  6316. 4Mhz to 8Mhz. Try them at your own risk. (Although under Arthur they
  6317. caused crashes, they seem to work OK under RISC-OS) The first switches
  6318. to higher speed, the second resets it:
  6319. 2.11
  6320. SYSöOS_UpdateMEMCò,64,64
  6321. 2.11
  6322. SYSöOS_UpdateMEMCò,,64
  6323. 2.11
  6324. Å   Terramex Cheat Ö For infinite lives, when you first load the game,
  6325. type in öSUBJECTTOCHANGEò on the loading screen.
  6326. 2.11
  6327. Å   RISC-OS Bugs Ö Yes, already folk have found begun to find bugs in
  6328. RISC-OS.
  6329. 2.11
  6330. 1) Module files which show up for *cat as modules but are dated 2:27
  6331. 1901 do not get a module icon in a filer window Ö this is a property of
  6332. unstamped files from AASM/OBJASM.
  6333. 2.11
  6334. 2) Edit does not work properly in modes 2,4 or 5. (But who would want to
  6335. do so?! Ed.)
  6336. 2.11
  6337. 3) You can drag a directory into itself creating an copy within a copy
  6338. until disc space runs out. (Could that be the answer to the Élibrary
  6339. virusæ in the Help!!! section? Ed.)
  6340. 2.11
  6341. 4) Resizing the interactive help window can cause the mouse pointer to
  6342. move autonomously up the screen. Try it: Hold button down and resize it,
  6343. keep holding, and it will go for a certain window size always.
  6344. 2.11
  6345. Å   MaxGammon under RISC-OS Ö If you have a copy of this game, the
  6346. author has a version which works in the desktop. Send your original disk
  6347. and a S.A.E. to 11 Maryland, Barkham, Wokingham, Berkshire RG11 4PB and
  6348. you can have an upgrade to the newer version.
  6349. 2.11
  6350. Å   Last line in program  Ö To find the last line in a BASIC program
  6351. which is in memory, hold down <ctrl>+<shift> and then press <escape>
  6352. twice.
  6353. 2.11
  6354. Å   Hearsay Problems Ö It is still possible to select a route from the
  6355. screen when in a scrolling terminal, but it must be a Élongæ click. A
  6356. short click tries to home the cursor to where the pointer is by sending
  6357. a string of control codes. The answer is to hold the button down a bit
  6358. longer or use the keyboard.
  6359. 2.11
  6360. If you have problems with Xmodem make sure that Vasscomm is turned off.
  6361. 2.11
  6362. Å   Filer_OpenDir Ö When using Filer_OpenDir, it is important to get the
  6363. full pathname correct. For instance, if your hard disc has the name
  6364. ÉFredæ and you want to open the directory $.Foo, you should use:
  6365. 2.11
  6366. *Filer_OpenDir adfs::Fred.$.Foo
  6367. 2.11
  6368. and not something like:
  6369. 2.11
  6370. *File_OpenDir adfs::4.Foo
  6371. 2.11
  6372. The reason is that when you click on the drive icon, the Filer checks
  6373. the list of open windows to see if the requested pathname is already
  6374. visible. Unfortunately it is not too intelligent about this, and if the
  6375. names do not match exactly, the Filer will open another window. This
  6376. will have the side effect that when Dismount is used only windows with
  6377. the first pathname will be closed.
  6378. 2.11
  6379. Å   Legal Text Scaling for Multisyncs Ö Richard Averillæs hint last
  6380. month (Archive 2.10 pp 19/20) to help rescale text in multisync modes
  6381. could be done more legally using:
  6382. 2.11
  6383. VDU 23,17,7,flags,x;y;0,0
  6384. 2.11
  6385. flags => bit 0 = not implemented
  6386. 2.11
  6387. bit 1 = 1 => set size of VDU 5 characters
  6388. 2.11
  6389. bit 2 = 1 => set size of VDU 5 spacing
  6390. 2.11
  6391.  10 REM > CharSize    Demonstration
  6392. 2.11
  6393.  of changing character size
  6394. 2.11
  6395.  20 REM By Martin Simmons 10/07/89
  6396. 2.11
  6397.  30
  6398. 2.11
  6399.  40 MODE 12
  6400. 2.11
  6401.  50
  6402. 2.11
  6403.  60 VDU 5:CLS:PRINTÉæ
  6404. 2.11
  6405.  70 GCOL 1
  6406. 2.11
  6407.  80 PROCprint(8,16,öDouble heightò)
  6408. 2.11
  6409.  90 PRINT
  6410. 2.11
  6411. 100 GCOL 2
  6412. 2.11
  6413. 110 PROCprint(16,8,öDouble widthò)
  6414. 2.11
  6415. 120 PRINT
  6416. 2.11
  6417. 130 GCOL 3
  6418. 2.11
  6419. 140 PROCprint(16,16,öDouble sizeò)
  6420. 2.11
  6421. 150 PRINT
  6422. 2.11
  6423. 160 GCOL 5
  6424. 2.11
  6425. 170 PROCprint2(8,8,16,16,öDouble
  6426. 2.11
  6427.  spacedö)
  6428. 2.11
  6429. 180 GCOL 7
  6430. 2.11
  6431. 190 PROCprint(8,4,öMangled half
  6432. 2.11
  6433.  heightö)
  6434. 2.11
  6435. 200 PRINTÉæ
  6436. 2.11
  6437. 210 GCOL 6
  6438. 2.11
  6439. 220 PROCprint(120,120,öBIGò)
  6440. 2.11
  6441. 230 VDU 4
  6442. 2.11
  6443. 240 END
  6444. 2.11
  6445. 250
  6446. 2.11
  6447. 260 DEF PROCprint(X%,Y%,text$)
  6448. 2.11
  6449. 270 VDU 23,17,7,6,X%;Y%;0,0
  6450. 2.11
  6451. 280 PRINT text$
  6452. 2.11
  6453. 290 ENDPROC
  6454. 2.11
  6455. 300
  6456. 2.11
  6457. 310 DEF PROCprint2(X%,Y%,sx%,sy%
  6458. 2.11
  6459. ,text$)
  6460. 2.11
  6461. 320 VDU 23,17,7,2,X%;Y%;0,0
  6462. 2.11
  6463. 330 VDU 23,17,7,4,sx%;sy%;0,0
  6464. 2.11
  6465. 340 PRINT text$
  6466. 2.11
  6467. 350 ENDPROC
  6468. 2.11
  6469.  
  6470. 2.11
  6471. Å   ARM assembler T option Ö Martyn Lovell says that although the
  6472. assembler sees the T option for the LDR mnemonic the same as the !
  6473. option (Archive 2.10 p 9), it is not used in the same way. The ! option
  6474. should be used to force write back with pre-indexed addressing while the
  6475. T option should be used with post-indexed addressing to cause the -TRAN
  6476. pin on the ARM to go low for the duration of the data transfer. This is
  6477. used by an OS in non-user modes to allow the OS to generate a user-mode
  6478. address.
  6479. 2.11
  6480. Å   ALTernative keys Ö The RISC-OS Inter-nationalKeyboard module
  6481. provides the facility for typing control characters by holding down
  6482. <alt> and typing the number on the numeric keypad. In addition, the
  6483. following keys produce symbols when pressed with <alt> held down:
  6484. 2.11
  6485. 1 gives 1   2 gives 2   3 gives 3   ~ gives ┬
  6486. 2.11
  6487. 9 gives ▒   0 gives √   , gives x    . gives ╓
  6488. 2.11
  6489. R gives ¿   Y gives ┤   S gives ñ   Z gives ╟
  6490. 2.11
  6491. X gives ╚   C gives ó   M gives ╡  
  6492. 2.11
  6493. shifted C gives ⌐
  6494. 2.11
  6495. Other keys return nothing. The old Arthur effect of using
  6496. <ctrl><shift><alt> to add 128 to the code can be produced by RMKILLing
  6497. this module. Doing this will also allow the use of <alt> plus a cursor
  6498. key in the BASIC Editor which does not work with this module installed.
  6499. 2.11
  6500. Å   Colour cursor for the BASIC Editor Ö Here is a little program which
  6501. will alter the ArmBE module so that you can change the colour of the
  6502. cursor.
  6503. 2.11
  6504.  10 REM > ColourEdit Make a colour
  6505. 2.11
  6506.  cursor for the BASIC Editor
  6507. 2.11
  6508.  20 REM By Martin Simmons 11/07/89
  6509. 2.11
  6510.  30 REM I use yellow background,
  6511. 2.11
  6512.  blue foreground, red cursor
  6513. 2.11
  6514.  (1=6 EOR 7)
  6515. 2.11
  6516.  40
  6517. 2.11
  6518.  50 colour%=6  :REM **** CHANGE
  6519. 2.11
  6520.  THIS LINE TO CHANGE THE
  6521. 2.11
  6522.  COLOUR (EOR 7) ****
  6523. 2.11
  6524.  60 DIM buf% &10000
  6525. 2.11
  6526.  70 OSCLI öLoad :App2.Modules.
  6527. 2.11
  6528. BasicEdit ö+STR$~buf%
  6529. 2.11
  6530.  80 P%=buf%+&81E4
  6531. 2.11
  6532.  90 [ SWI  &100+colour%   ;Change
  6533. 2.11
  6534.  background palette
  6535. 2.11
  6536. 100 ]
  6537. 2.11
  6538. 110 zi%=buf%+&8320:zi%+=8+4*
  6539. 2.11
  6540. ((!zi%<<8)>>8)
  6541. 2.11
  6542. 120 wind%=buf%+&8310:wind%+=8+4*
  6543. 2.11
  6544. ((!wind%<<8)>>8)
  6545. 2.11
  6546. 130 P%=buf%+&8310
  6547. 2.11
  6548. 140 [ SWI  öOS_WriteSò
  6549. 2.11
  6550. 150   EQUB 17 : EQUB 128+colour%
  6551. 2.11
  6552.     ;Set background colour
  6553. 2.11
  6554. 160   EQUB 12  ;Clear screen
  6555. 2.11
  6556. 170   EQUB 23 : EQUB 16 : EQUB 1   
  6557. 2.11
  6558. ;Set cursor movement
  6559. 2.11
  6560. 180   EQUS STRING$(4-(P% AND 3)
  6561. 2.11
  6562. ,CHR$0)
  6563. 2.11
  6564. 190   BL zi%
  6565. 2.11
  6566. 200   BL wind%
  6567. 2.11
  6568. 210 ]
  6569. 2.11
  6570. 220 INPUTÉöEnter new file name for
  6571. 2.11
  6572.  the editor: öfile$
  6573. 2.11
  6574. 230 OSCLI öSave ò+file$+ö ò+STR$
  6575. 2.11
  6576. ~buf%+ö +94B4ò
  6577. 2.11
  6578. 240 OSCLI öSetType ò+file$+ö FFAò
  6579. 2.11
  6580.  
  6581. 2.11
  6582. Å   Wild card copy for RISC-OS Ö The destination parameter of the *Copy
  6583. command now has greater freedom regarding wild cards i.e. wildcards in
  6584. the destination can be used even though they were not used for the
  6585. source
  6586. 2.11
  6587.  e.g. *COPY :0.Text :1.* is now valid.
  6588. 2.11
  6589. Å   RISC-OS disc names Ö It is possible to set a system variable which
  6590. will behave like a disc name. If you *Set <discname>$Path <filepath> you
  6591. can then access you files by :<discname>.<filename>. For example:
  6592. 2.11
  6593. *Set W App1:$.
  6594. 2.11
  6595. *Run W:!Edit
  6596. 2.11
  6597. You can even define several paths, just like File$Path and Run$Path:
  6598. 2.11
  6599. *Set W App1:$.,App2:$.
  6600. 2.11
  6601. *RMLoad W:Modules.BasicEdit
  6602. 2.11
  6603. *Run W:!Edit
  6604. 2.11
  6605. Å   Memory Usage Ö Gerald Fitton Ö Of course, the Ébestæ machine has
  6606. both hard disc and 4Mb of memory, but some hard disc machines have less
  6607. memory. If you have the Ébestæ then you will probably put all the
  6608. !(application) directories that you use in your root ($) directory for
  6609. instant access. When you click on the :4 icon in the icon bar, all your
  6610. application !Boot files will be RUN and memory will be allocated to each
  6611. application (so that it is instantly available). This is true even when
  6612. the applications are not installed on the icon bar. If you have less
  6613. memory, say 1Mb, then you may find that your dormant applications are
  6614. using up too much memory for some of the more sophisticated appli
  6615. cations. The solution is to put your applications not in the root
  6616. directory but in a (non-!) sub-directory. For example, !Patience can be
  6617. put together with !Zarch in a games directory, where Games is in the
  6618. root directory. This way, only when you open the Games directory (by
  6619. double clicking on it) will you use up memory on the dormant appli
  6620. cations !Patience and !Zarch.
  6621. 2.11
  6622. Å   1st Mail solution Ö When using 1st Mail in RISC-OS, the printer
  6623. options are hidden underneath another window. Mr Burrows has solved the
  6624. problem by altering the template file:
  6625. 2.11
  6626. *Load $.Resources.1wp.
  6627. 2.11
  6628. 1ml_templa 9000
  6629. 2.11
  6630. !&9AA8=155
  6631. 2.11
  6632. !&9AB0=1023
  6633. 2.11
  6634. *Save $.Resources.1wp.
  6635. 2.11
  6636. 1ml_templa 9000+AEA
  6637. 2.11
  6638. *SetType $.Resources.1wp
  6639. 2.11
  6640. .1ml_templa FFF
  6641. 2.11
  6642. Å   RISC-OS Hints and Tips Ö S C Costin Ö When using !PrinterDM on the
  6643. Desktop to print a text file, if the printer and Archimedes are set up
  6644. where there are no ignore characters configured, i.e. can be checked as
  6645. follows:
  6646. 2.11
  6647. F12    ;Press function key 12 from desktop
  6648. 2.11
  6649. *status ignore   ;Enter command
  6650. 2.11
  6651. No ignore   ;Returned after entering command
  6652. 2.11
  6653. The problem is that the line feed is suppressed and therefore over-
  6654. printing occurs. This is easily overcome by clicking on the !PrinterDM
  6655. icon on the icon bar, which produces a window, and selecting CR or LF
  6656. conversion.
  6657. 2.11
  6658. A more permanent solution is to edit the file PrData. To do this hold
  6659. shift key while clicking on the application directory !PrinterDM, then
  6660. drag PrData icon over Edit icon on the icon bar and release the mouse
  6661. button. At the end of the printer driver data change line: from 0 to 1
  6662. i.e. change line:
  6663. 2.11
  6664. 0;0/1 1=>convert CR or LF to CR,LF
  6665. 2.11
  6666. to:
  6667. 2.11
  6668. 1;0/1 1=>convert CR or LF to CR,LF
  6669. 2.11
  6670. Å   Pipedream conversion to ADFS E type floppy disc by S C Costin
  6671. 2.11
  6672. 1)   Format new disc using the new E format.
  6673. 2.11
  6674. 2)   Name the new disc NewPd.
  6675. 2.11
  6676. 3)   Backup your original copy to the disc NewPd, using *COPY to retain
  6677. E format.
  6678. 2.11
  6679. 4)   Copy the !PipeDream application from the support disc to the root
  6680. directory of disc NewPd.
  6681. 2.11
  6682. 5)   Copy the Floating Point Emulator module from directory
  6683. !System.Modules on Application Disc 1 into directory $.!PipeDream on
  6684. disc NewPd.
  6685. 2.11
  6686. 6)   Delete $.!boot
  6687. 2.11
  6688. 7)   Delete $.piped.fpe2
  6689. 2.11
  6690. 8)   Delete $.rs423drive
  6691. 2.11
  6692. 9)   Add the following obey file called $.!boot
  6693. 2.11
  6694. | > $.!boot
  6695. 2.11
  6696. *quit
  6697. 2.11
  6698. RUN $.!pipedream.!run
  6699. 2.11
  6700. 10)   Leave the !PipeDream.!boot file as copied from the support disc.
  6701. 2.11
  6702. | > !PipeDream.!Boot
  6703. 2.11
  6704. Set PipeDream$Dir <Obey$Dir>
  6705. 2.11
  6706. Set Alias$@RunType_DDE Run <PipeDream$Dir>.!Run %%*0
  6707. 2.11
  6708. Set File$Type_DDE PDream
  6709. 2.11
  6710. IconSprites <PipeDream$Dir>
  6711. 2.11
  6712. .!Sprites
  6713. 2.11
  6714. 11)   If mouse cursor control is required insert lines 7 & 8 in the !Run
  6715. Obey file as follows:
  6716. 2.11
  6717. | > !PipeDream.!Run
  6718. 2.11
  6719. Set PipeDream$Dir <Obey$Dir>
  6720. 2.11
  6721. WimpSlot -min 450k
  6722. 2.11
  6723. ||RMReInit InternationalKeyboard
  6724. 2.11
  6725. RMKill InternationalKeyboard
  6726. 2.11
  6727. RMEnsure FPEmulator 2.60
  6728. 2.11
  6729. RMLoad <Obey$Dir>.FPEmulator
  6730. 2.11
  6731. $.piped.cursorrm
  6732. 2.11
  6733. mousecursor on 13 &c5 131
  6734. 2.11
  6735. Set Alias$@RunType_DDE Run <PipeDream$Dir>.!Run %%*0
  6736. 2.11
  6737. Set File$Type_DDE PDream
  6738. 2.11
  6739. IconSprites <PipeDream$Dir>
  6740. 2.11
  6741. .!Sprites
  6742. 2.11
  6743. Load $.Library.pd 8000
  6744. 2.11
  6745. Echo <26>
  6746. 2.11
  6747. Pointer 0
  6748. 2.11
  6749. Go 8000 ; %*0
  6750. 2.11
  6751. Å   Update for Artisan and ProArtisan Ö Clares have now produced an
  6752. application which will up-date your Artisan and ProArtisan discs for
  6753. RISC-OS. It has been put on both this monthæs and last monthæs program
  6754. discs. Many thanks to Duncan Burbridge, Kimba, Australia (age 12) who
  6755. also sent us information on updating Artisan for RISC-OS.
  6756. 2.11
  6757. Å   Not enough screen memory? Ö If a program expects to run in a
  6758. specific screen mode and not enough screen memory is available, it will
  6759. usually report a ÉBad Modeæ error when run from the desktop, as the
  6760. screen memory canæt be expanded dynamically once the application has
  6761. started. This can be fixed by either dragging the screen memory bar in
  6762. the task window, or by entering the appro-priate mode first.  A much
  6763. more elegant way is to add the following line to the Obey file that
  6764. starts the program:  Echo <22><n>  Where <n> is the mode. This ensures
  6765. that the screen memory is allocated before the application starts and
  6766. should appear before the *WimpSlot command.
  6767. 2.11
  6768. Å   Uncluttered cataloging Ö RISC-OS has a neat way of searching a disc
  6769. without cluttering the screen. Use <adjust> to open a directory and it
  6770. closes the one you were in, leaving only the new dir-ectory on the
  6771. screen. To move back up the tree, click <adjust> on the close icon, and
  6772. the next directory up will appear, closing the current directory (unless
  6773. you are in the root directory, of course!).
  6774. 2.11
  6775. Å   Bye bye hard disk! Ö The RAM disc is fantastic but not much use on 1
  6776. Mbyte machines. Also, note that when RAMFS is selected *bye does not
  6777. park the head of the Winchester Ö so beware!!!
  6778. 2.11
  6779.  
  6780. Å   Archive Bulletin Board Ö This monthæs password is öARCAMò Ö which is
  6781. apparently the name of Alan Gloveræs hi-fi system!
  6782. 2.12
  6783. Å   Arthur 1.2 desktop Ö Nick Furniss has converted the Arthur 1.2
  6784. desktop so that it works under RISC-OS. If you are interested, you
  6785. should contact him at 87 Moordale Avenue, Bracknell, RG12 1TG.
  6786. 2.12
  6787. Å   Datachat Modem connections Ö These connect-ions were sent in by P
  6788. Carlson who is happily using the Datachat to connect to Prestel.
  6789. 2.12
  6790.    Archimedes   Datachat
  6791. 2.12
  6792.    2   5
  6793. 2.12
  6794.    3   1
  6795. 2.12
  6796.    5   3
  6797. 2.12
  6798. Pins 2 & 3 on the Datachat are linked together and pins 1, 6 and 8 are
  6799. linked on the Archimedes.
  6800. 2.12
  6801. Å   First Word Plus Ö Volker Eloesser of West Germany, in response to
  6802. Help needed 2.11, p.15, concerning First Word Plus:
  6803. 2.12
  6804. 1) This sounds as if the printer is configured to a shorter paper length
  6805. than the computer. If the computer sends a page which is one line longer
  6806. than the configured length, the printer will feed the next full page
  6807. after receiving a form-feed command. If the reconfiguration of the
  6808. printer does not work, change the FormFeed command in the printer driver
  6809. (HEX-file) to a no-operation code, such as É00æ or É*æ and compile a new
  6810. CFG-file.
  6811. 2.12
  6812. 2) Simply close the window by clicking on the close-symbol on the top-
  6813. left corner of the text window before printing.
  6814. 2.12
  6815. Å   First Word Plus word-count Ö The word count in First Word Plus does
  6816. not work properly! It counts a word which contains an apostrophe as two
  6817. words e.g. Iæm or itæs. This was very embarrassing for one Archive
  6818. reader, who insisted to his publisher, that he had written a certain
  6819. number of words.
  6820. 2.12
  6821. Å   Graphic Writer bug Ö If you insert a block marker at the end of a
  6822. document, it is possible to scroll past the ÉEndæ point. This is usually
  6823. remedied by scrolling back but if you continue editing it is possible to
  6824. crash the application by pressing <ctrl><down arrow> followed by <page
  6825. down> or <page up>. So be careful.
  6826. 2.12
  6827. Å   Home Accounts Ö Just a quick comment on Alan Highetæs Home Accounts
  6828. review in 2.10 Ö one of his criticisms is that the reporting is limited
  6829. to a whole yearæs transactions thus possibly taking up lots of paper;
  6830. whilst this is true, report output can, under RISC-OS, be dragged
  6831. directly into !EDIT and then you can print bits needed.  Not ideal, but
  6832. a solution.
  6833. 2.12
  6834. Also he says that transactions are deleted after a year Ö this is not
  6835. completely true Ö only the last 12 months transactions can be graphed
  6836. and edited, but all transactions are kept for viewing in the account/
  6837. header windows. Brian Debenham
  6838. 2.12
  6839. Å   Prolog X Ö We have a hint & tip on öRetaining facts, rules and lists
  6840. produced in Prolog Xò written by C.G.Williamson. It was fairly long and
  6841. rather technical, so we did not print it. If anyone would like a copy of
  6842. this, please send an SAE to Adrian Look at the Archive office. (We have
  6843. just received a letter from Jim Davis who says that he would like to
  6844. commend Chris for his öbrilliantly simple use of the Prolog built-in
  6845. predicates Étellæ and Étoldæ.ò He quotes several learned texts and says
  6846. that they all miss Chrisæ simple combination of Étellæ, Élisting(X,Y)æ,
  6847. Étoldæ as a method of avoiding the very contrived, but hitherto common,
  6848. use of Étellæ and Étoldæ. He believes that Chrisæ expedient will become
  6849. standard.) Should we therefore publish Chrisæ comments? Are there many
  6850. Prolog users out there? Ed.)
  6851. 2.12
  6852. Å   QL Reader Ö Brian Oliver points out that there is a problem with
  6853. QLreader (Shareware 12) in its drive select. Otherwise it is excellent
  6854. and it now works fine with my 5.25ö drive connected to slot :2 after the
  6855. following modification. The SYS òADFS_DiscOpö command on line 2750 is
  6856. wrong. It should be:-
  6857. 2.12
  6858. SYS öXADFS_DiscOpò,,(1+List%<<6),
  6859. 2.12
  6860. Start%+(drive%<<29),bf%,512 TO flags%
  6861. 2.12
  6862. It is then necessary to set the default drive on line 240 and those for
  6863. selection on lines 19740 & 1950.
  6864. 2.12
  6865. Å   RS423 Archimedes to Beeb Ö J.O.Linton: I have been having trouble
  6866. with my RS423 port. My Beeb would listen to my Archimedes but my
  6867. Archimedes would not receive data correctly from my Beeb. I have a
  6868. fairly early Archimedes so I went to some trouble to get the field
  6869. modification done to the serial chip only to find that the fault was
  6870. exactly as before. Then my dealer sent me a leaflet from Acorn (Part No.
  6871. 0476.033) called ÉUsing the serial portæ in which I found this vital
  6872. paragraph:
  6873. 2.12
  6874. ÉThe Acorn BBC model B uses one stop bit by default, whereas the default
  6875. configuration of an Archimedes computer is two stop bits. You are
  6876. advised to change the DATA configuration of your Archimedes computer to
  6877. 5 if you are using your serial port to pass data to or from a BBC model
  6878. B.æ
  6879. 2.12
  6880. *Configure DATA 5 and Hey Presto Ö it worked!
  6881. 2.12
  6882. Å   Systemdevs Ö When using the System Devices to send characters to the
  6883. printer, the printer ignore character feature is not Éusedæ, and all
  6884. characters are sent to the printer Ö including the printer ignore
  6885. character. This is very useful for sending an alternative character set
  6886. to the printer (if it has a user-defined graphics option) as no
  6887. characters will be Éstrippedæ Ö rather like using VDU 1,char with the
  6888. VDU drivers. All that needs to be done is give a command similar to:
  6889. *COPY UserChars printer: ~C~V. Michael Ben-Gershon
  6890. 2.12
  6891. Å   Teletext Adaptors Ö Richard House has written some software which
  6892. allows the Archimedes to ögrabò teletext pages using the Acorn Teletext
  6893. adaptor. If any one is interested, we can put you in touch with him.
  6894. 2.12
  6895. Herman Stevens from Belgium, says that in order to get the Morley
  6896. teletext adaptor to work with RISC-OS, you require: I/O podule, Softæs
  6897. öSupportò and öATSò saved on ADFS disc, !65Host copied on the same disc
  6898. and !boot file as follows:
  6899. 2.12
  6900. CLS
  6901. 2.12
  6902. *DIR !65Host
  6903. 2.12
  6904. *RMLoad !RunImage
  6905. 2.12
  6906. *CACHEROM 1 ADFS
  6907. 2.12
  6908. *CACHEROM 3 SUPPORT
  6909. 2.12
  6910. *CACHEROM 4 ATS
  6911. 2.12
  6912. *EMU.
  6913. 2.12
  6914. By typing öTTEXTò you can start the Support ROM and TELETEXT will start
  6915. the ATS ROM.
  6916. 2.12
  6917. Å   Taxan Multisync wobbles Ö The hint last month was expressed in
  6918. rather too technical language. Iæll try again.
  6919. 2.12
  6920. Look at the p.c.b. from the front of the computer and near the serial
  6921. port socket you will see a couple of metal pins sticking up and on the
  6922. board alongside it, the inscription öLK2ò. Then over to the left of
  6923. that, about in line with the headphone socket is a set of five pairs of
  6924. pins inscribed as öPL2ò. It should have a couple of black plastic/metal
  6925. sleeves on it. These are spare metal shorting links. Slide one of these
  6926. links off (upwards) and put it instead on LK2. That should do the trick.
  6927. 2.12
  6928. Å   Compressing Text with OS_PrettyPrint Ö Under RISC-OS, the
  6929. ÉOS_PrettyPrintæ SWI (c.f. Archive 2.9 p9) has been extended to include
  6930. a Édictionaryæ facility. When an ASCII <27> code is encountered, the
  6931. next byte will be used to find (and print) a dictionary entry. For
  6932. example:
  6933. 2.12
  6934. Consider the following dictionary:
  6935. 2.12
  6936. 1)   Hello
  6937. 2.12
  6938. 2)   this
  6939. 2.12
  6940. 3)   is
  6941. 2.12
  6942. 4)   Archie
  6943. 2.12
  6944. If you send the codes <27><4> to the OS_Pretty Print SWI, tthe text
  6945. ÉArchieæ will be printed.
  6946. 2.12
  6947. The two bytes <27><4> replace the 5 bytes <65> <114><99><104><101> which
  6948. we actually want printed. The operating system uses this feature to
  6949. compress any strings it might need to print.
  6950. 2.12
  6951. The structure of a dictionary is shown below:
  6952. 2.12
  6953. <entry length> }
  6954. 2.12
  6955. <string>       } repeat
  6956. 2.12
  6957. <0>            }
  6958. 2.12
  6959. .
  6960. 2.12
  6961. .
  6962. 2.12
  6963. <0>            ; end of of dictionary
  6964. 2.12
  6965. Therefore to print an OS_PrettyPrint SWI, you must use the following
  6966. entry parameters:
  6967. 2.12
  6968. r0 -> pointer string
  6969. 2.12
  6970. r1 -> pointer dictionary (0 -> system dictionary)
  6971. 2.12
  6972. r2 -> special string (printed if dictionary entry zero is accessed)
  6973. 2.12
  6974.  10 REM >PrettyPrt
  6975. 2.12
  6976.  20
  6977. 2.12
  6978.  30 REM ****************************
  6979. 2.12
  6980.  40 REM * Using the OS_PrettyPrint *
  6981. 2.12
  6982.  50 REM *   Dictionary Facility    *
  6983. 2.12
  6984.  60 REM *  by Adrian Philip Look   *
  6985. 2.12
  6986.  70 REM *    21st August 1989      *
  6987. 2.12
  6988.  80 REM ****************************
  6989. 2.12
  6990.  90
  6991. 2.12
  6992. 100 DIM dictionary% &400:REM allocate
  6993. 2.12
  6994. some space for the dictionary
  6995. 2.12
  6996. 110 DIM buffer% 3 : REM allocate some
  6997. 2.12
  6998.  space for the string
  6999. 2.12
  7000. 120
  7001. 2.12
  7002. 130 PROCsetupdictionary :REM make a
  7003. 2.12
  7004.  user dictionary
  7005. 2.12
  7006. 140
  7007. 2.12
  7008. 150 buffer%?0=27 : REM a dictionary
  7009. 2.12
  7010.  entry follows
  7011. 2.12
  7012. 160 buffer%?2=0  : REM terminate
  7013. 2.12
  7014.  OS_PrettyPrint string
  7015. 2.12
  7016. 170 FOR x%=0 TO 5
  7017. 2.12
  7018. 180   buffer%?1=x% : REM dictionary
  7019. 2.12
  7020.  entry x%
  7021. 2.12
  7022. 190   PRINTæx%;ö : ò;
  7023. 2.12
  7024. 200   SYS öOS_PrettyPrintò,buffer%,
  7025. 2.12
  7026. dictionary%,ö<special string>ò +CHR$(0)
  7027. 2.12
  7028. 210 NEXT x%
  7029. 2.12
  7030. 220 PRINTÉ
  7031. 2.12
  7032. 230 END
  7033. 2.12
  7034. 240
  7035. 2.12
  7036. 250 DEFPROCsetupdictionary
  7037. 2.12
  7038. 260 x%=dictionary%
  7039. 2.12
  7040. 270 READ s$
  7041. 2.12
  7042. 280 WHILE s$<>ö***ò
  7043. 2.12
  7044. 290   x%?0=LEN(s$)+2:REM entry length
  7045. 2.12
  7046. 300   $(x%+1)=s$+CHR$(0) :REM null
  7047. 2.12
  7048.  terminated string
  7049. 2.12
  7050. 310   x%+=LEN(s$)+2
  7051. 2.12
  7052. 320   READ s$
  7053. 2.12
  7054. 330 ENDWHILE
  7055. 2.12
  7056. 340 ?x%=0 : REM zero length string to
  7057. 2.12
  7058.  terminate dictionary
  7059. 2.12
  7060. 350 ENDPROC
  7061. 2.12
  7062. 360
  7063. 2.12
  7064. 370 DATA Hello,this,is,Archie,ö***ò
  7065. 2.12
  7066.  
  7067. 2.12
  7068. Å   Copy Options Ö In Archive 2.10 page 15 we said that there were two
  7069. new copy options L and N. In fact there are five new options, the other
  7070. three being:
  7071. 2.12
  7072. A Ö Force destination access to same as source
  7073. 2.12
  7074. S Ö Restamp datestamped files after coping
  7075. 2.12
  7076. T Ö Only copy the directory structure
  7077. 2.12
  7078. Å   Filer_OpenDir and Filer_CloseDir (contæd) Ö Gary Atkinson says that
  7079. these commands do not use system variables and so the full directory
  7080. name must be used every time. This makes life difficult for RISC-OS
  7081. applications which want to open a Filer window relative to their present
  7082. position on the disc (which may change e.g. hard disc users).
  7083. 2.12
  7084. Therefore, with this context in mind, Gary has sent in the following
  7085. hint which will read the value of a system variable:
  7086. 2.12
  7087. DIM buffer% 255, temp% 255
  7088. 2.12
  7089. SYS öOS_CLIò,öFiler_OpenDir ò + FNread_system_variable(öObey$Dirò)
  7090. 2.12
  7091. END
  7092. 2.12
  7093. :
  7094. 2.12
  7095. DEFFNread_system_variable(v$)
  7096. 2.12
  7097. LOCAL len%,x%
  7098. 2.12
  7099. $buffer%=v$
  7100. 2.12
  7101. SYS öOS_ReadVarValò,buffer%,temp%
  7102. 2.12
  7103. ,255,0,3 TO ,,len%
  7104. 2.12
  7105. v$=öò
  7106. 2.12
  7107. FOR x%=0 TO len%-1
  7108. 2.12
  7109. v$+=CHR$(buffer%?x%)
  7110. 2.12
  7111. NEXT x%
  7112. 2.12
  7113. =v$
  7114. 2.12
  7115. Å   Mode 16, 17 and 24 co-ordinates Ö Under RISC-OS modes 16 and 17 now
  7116. support graphics. This means that a resolution of 1056x256 can now be
  7117. obtained on a normal monitor. However, it should be noted that the
  7118. screen size, in OS co-ordinates, is not 1280x1024 (or even 2048x1024 as
  7119. Richard Averill suggested last month) but 2111x1024. In order to convert
  7120. between the two sizes you should use the following function:
  7121. 2.12
  7122. DEFFNconvert2111to1280(x%)
  7123. 2.12
  7124. =INT(33*(x%+0.5)/20)
  7125. 2.12
  7126. Å   Modifying !Calc to accept keyboard input Ö In order to modify the
  7127. calculator on the Applications Disc 2 to accept keyboard input you must:
  7128. 2.12
  7129. 1) Leave the desktop and type *BASIC.
  7130. 2.12
  7131. 2) Mount Applications Disc 2 in drive 0.
  7132. 2.12
  7133. 3) LOAD ö!Calc.!RunImageò and make the follow-ing modifications:
  7134. 2.12
  7135.    Add the following lines:
  7136. 2.12
  7137. 315 WHEN 8 : PROCwndkeyprssd(!q%,
  7138. 2.12
  7139. q%!24)
  7140. 2.12
  7141. 750 DEFPROCwndkeyprssd(handle%
  7142. 2.12
  7143. ,key%) : IF key%>47 AND key%<5 THEN PROCdigit(CHR$(key%))
  7144. 2.12
  7145. 751 CASE key% OF
  7146. 2.12
  7147. 752 WHEN 42: PROCoperator(ö*ò)
  7148. 2.12
  7149. 753 WHEN 43: PROCoperator(ö+ò)
  7150. 2.12
  7151. 754 WHEN 47: PROCoperator(ö/ò)
  7152. 2.12
  7153. 755 WHEN 46: PROCpoint
  7154. 2.12
  7155. 756 WHEN 45: PROCoperator(ö-ò)
  7156. 2.12
  7157. 757 WHEN 95: PROCoperator(ö-ò)
  7158. 2.12
  7159. 758 WHEN 61: PROCoperator(ö=ò)
  7160. 2.12
  7161. 759 ENDCASE
  7162. 2.12
  7163.    Now renumber the program (just type RENUMBER <return>), and then
  7164. type:
  7165. 2.12
  7166. 855 PROCupdate(calc%,12,-28-32,10
  7167. 2.12
  7168. *16+12,24):PROCcalc:ENDPROC
  7169. 2.12
  7170. 105 q%!60=15<<12
  7171. 2.12
  7172. 4) SAVE ö!Calc.!RunImageò
  7173. 2.12
  7174.    To use text with the modified calculator just click in the calculator
  7175. window (not on an icon) and type away. Note that a caret will not
  7176. appear.
  7177. 2.12
  7178. Å   New CMOS RAM settings for outline fonts Ö When using the outline
  7179. font manager (which is supplied with the Acorn DTP) you can set various
  7180. font cache thresholds. These thresholds govern which mode of caching is
  7181. used i.e. vertical & horizontal subpixeled, cached outlines, anti-
  7182. aliased outlines, non-exact font from x90y45, and Éauto-growæ cache.
  7183. 2.12
  7184. The various thresholds can be set up as follows:
  7185. 2.12
  7186. *Configure FontSize <n>k ; min size of cache
  7187. 2.12
  7188. *Configure FontMax  <n>k ; max size of Éauto-growæ cache
  7189. 2.12
  7190. *Configure FontMax1 <h>  ; max size of non-exact font x90y45
  7191. 2.12
  7192. *Configure FontMax2 <h>  ; max size of anti-aliased outlines
  7193. 2.12
  7194. *Configure FontMax3 <h>  ; max size of cached outlines
  7195. 2.12
  7196. *Configure FontMax4 <w>  ; max size of horizontally-subpixeled font
  7197. 2.12
  7198. *Configure FontMax5 <h>  ; max size of vertically-subpixeled font
  7199. 2.12
  7200. where <h> refers to maximum font pixel height (pixel height = point
  7201. height * dpi / 72), and <w> to the maximum font pixel width.
  7202. 2.12
  7203. Some programs may corrupt the CMOS RAM and soil the font cache
  7204. thresholds. This may dramatically reduce the efficiency of cached fonts.
  7205. Use the *STATUS command to view your currents threshold settings (and
  7206. make a note of them just in case the CMOS RAM gets corrupted).
  7207. 2.12
  7208. Å   New FPE Ö There is a new version of the floating pointer emulator
  7209. provided on the Applications Disc 2. If any of your programs use older
  7210. versions of the FPE, you should update the module. This is because the
  7211. pre 2.60 release versions of the FPE have a bug (a badly formed module
  7212. header) which happens to work under Arthur 1.2.
  7213. 2.12
  7214. Å   New system variable Ö There is a new system variable, called
  7215. Font$Path, which tells the Archimedes where anti-aliased fonts can be
  7216. found. It has the same syntax as Load$Path and Run$Path. This means that
  7217. fonts can be accessed from several different directories e.g. *Set
  7218. Font$Path $.Fonts1, $.Fonts2,$.Fonts3 will allow the fonts manager to
  7219. access anti-aliased fonts from three directories $.Font1, $.Font2 and
  7220. $.Font3. To remain compatible with the earlier versions of the font
  7221. manager you can *Set Font$Path <Font$Prefix>.
  7222. 2.12
  7223. Å   OS_ChangedBox Ö RISC-OS now offers a facility which will keep track
  7224. of the areas on the Éscreenæ which have been altered by calls to the VDU
  7225. drivers. When enabled, this feature will pro-vide a rectangle (co-
  7226. ordinates in pixels from the bottom left-hand corner) of the area on the
  7227. Éscreenæ which has been changed. The parameters are:
  7228. 2.12
  7229. Entry:
  7230. 2.12
  7231. R0 = 0  -> disable changed box calculations
  7232. 2.12
  7233.    = 1  -> enable changed box calculations
  7234. 2.12
  7235.    = 2  -> reset changed box to null rectangle
  7236. 2.12
  7237.    = -1 -> read changed box info
  7238. 2.12
  7239. Exit:
  7240. 2.12
  7241. R0 = old enable state
  7242. 2.12
  7243. R1 points to a fixed block of 5 words
  7244. 2.12
  7245.    [R1, #0]  = disable/enable flag
  7246. 2.12
  7247.    [R1, #4]  = x-coordinate of left edge of box
  7248. 2.12
  7249.    [R1, #8]  = y-coordinate of bottom edge of box
  7250. 2.12
  7251.    [R1, #12] = x-coordinate of right edge of box
  7252. 2.12
  7253.    [R1, #16] = y-coordinate of top edge of box
  7254. 2.12
  7255. An example program:
  7256. 2.12
  7257.  10 REM >Changed
  7258. 2.12
  7259.  20
  7260. 2.12
  7261.  30 REM *************************
  7262. 2.12
  7263.  40 REM *  Using OS_ChangedBox  *
  7264. 2.12
  7265.  50 REM * by Adrian Philip Look *
  7266. 2.12
  7267.  60 REM *   22nd August 1989    *
  7268. 2.12
  7269.  70 REM *************************
  7270. 2.12
  7271.  80
  7272. 2.12
  7273.  90 MODE 12 : OFF
  7274. 2.12
  7275. 100
  7276. 2.12
  7277. 110 PROCenablecalulations
  7278. 2.12
  7279. 120 PROCresetrectangle
  7280. 2.12
  7281. 130
  7282. 2.12
  7283. 140 LINE 400,400,600,600
  7284. 2.12
  7285. 150 PROCreadbox
  7286. 2.12
  7287. 160 RECTANGLE FILL 300,300,10,10
  7288. 2.12
  7289. 170 PROCreadbox
  7290. 2.12
  7291. 180 RECTANGLE FILL 700,700,30,30
  7292. 2.12
  7293. 190 PROCreadbox
  7294. 2.12
  7295. 200 CIRCLE 250,250,200
  7296. 2.12
  7297. 210 PROCreadbox
  7298. 2.12
  7299. 220 RECTANGLE 550,450,500,300
  7300. 2.12
  7301. 230 PROCreadbox
  7302. 2.12
  7303. 240
  7304. 2.12
  7305. 250 PROCdisablecalulations : ON
  7306. 2.12
  7307. 260 PRINT
  7308. 2.12
  7309. 270 END
  7310. 2.12
  7311. 280
  7312. 2.12
  7313. 290 DEFPROCresetrectangle
  7314. 2.12
  7315. 300 SYS öOS_ChangedBoxò,2
  7316. 2.12
  7317. 310 ENDPROC
  7318. 2.12
  7319. 320
  7320. 2.12
  7321. 330 DEFPROCenablecalulations
  7322. 2.12
  7323. 340 SYS öOS_ChangedBoxò,1
  7324. 2.12
  7325. 350 ENDPROC
  7326. 2.12
  7327. 360
  7328. 2.12
  7329. 370 DEFPROCdisablecalulations
  7330. 2.12
  7331. 380 SYS öOS_ChangedBoxò,0
  7332. 2.12
  7333. 390 ENDPROC
  7334. 2.12
  7335. 400
  7336. 2.12
  7337. 410 DEFPROCreadbox
  7338. 2.12
  7339. 420 PROCdisablecalulations
  7340. 2.12
  7341. 430 SYS öOS_ChangedBoxò,-1 TO ,data%
  7342. 2.12
  7343. 440 x0%=data%!4: y0%=data%!8
  7344. 2.12
  7345. 450 x1%=data%!12 : y1%=data%!16
  7346. 2.12
  7347. 460
  7348. 2.12
  7349. 470 PRINTTAB(0,0);öChanged Box
  7350. 2.12
  7351. Rectangle (in pixels not
  7352. 2.12
  7353.  OS coords)ö
  7354. 2.12
  7355. 480 PRINTöleft x:   ò;x0%;ö     ò
  7356. 2.12
  7357. 490 PRINTöbottom y: ò;y0%;ö     ò
  7358. 2.12
  7359. 500 PRINTöright x:  ò;x1%;ö     ò
  7360. 2.12
  7361. 510 PRINTötop y:    ò;y1%;ö     ò
  7362. 2.12
  7363. 520
  7364. 2.12
  7365. 530 PRINTÉöpress any key to step
  7366. 2.12
  7367. through demoö
  7368. 2.12
  7369. 540 QQ=GET
  7370. 2.12
  7371. 550 PROCenablecalulations
  7372. 2.12
  7373. 560 ENDPROC
  7374. 2.12
  7375. Å   ProArtisan & Artisan upgrades to RISC-OS Ö ProArtisan discs need to
  7376. be changed so that they work under RISC-OS. This upgrade avoids the
  7377. dreaded öFilecore in useò error, and is available from Clares Micros if
  7378. you send them a blank D-formatted disc.
  7379. 2.12
  7380. Å   RISC-OS printer drivers and Line Feeds Ö If your printer does not
  7381. automatically generate line feeds when it receives a carriage return you
  7382. can make the RISC printer drivers generate one for you. Once the printer
  7383. drive is installed on you must click on the printer icon with the SELECT
  7384. button. This will reveal a window which contains an option to convert
  7385. single line feeds or carriage returns into a single line feed and
  7386. carriage return i.e. CR or LF => CR,LF.
  7387. 2.12
  7388. If you wish to make this option permanent just select the ÉSave Choicesæ
  7389. option on the printer driver menu.
  7390. 2.12
  7391. Å   RISC-OS will run old WIMP programs (i.e. it emulates the Arthur 1.2
  7392. Window Manager) but because the emulation is not complete there are some
  7393. anomalies with the sprite handling. (a) selected sprites are rendered
  7394. incorrectly (b) sprite are scaled according to the screen mode (this did
  7395. not happen before). In practice, however, this affects very few
  7396. applications.
  7397. 2.12
  7398. Å   The *CDIR command for the ADFS, RAMFS, and NETFS now creates
  7399. unlocked directories. This means that directories can be renamed, moved
  7400. and deleted from the desktop. However, the contents of a directory must
  7401. be deleted before the directory itself can be deleted.
  7402. 2.12
  7403. Å   The Window Manager (RISC-OS) no longer reserves 32k permanent memory
  7404. for window definitions, etc but acquires memory from the RMA as it is
  7405. needed. This means that some Arthur 1.2 wimp programs may fail to start,
  7406. giving a ÉNo room to create windowæ error. This can usually be solved by
  7407. increasing the memory allocated to the RMA (by dragging the RMA bar in
  7408. the Task Manager) before starting the application.
  7409. 2.12
  7410. The following hints and tips were sent in by Paul Witheridge
  7411. 2.12
  7412. Å   Cancelling tasks from the öTask Displayò Ö If you call up the Task
  7413. Display by clicking the mouse menu button on the Task Manager Icon at
  7414. the right-hand end of the icon bar and then selecting Task Display from
  7415. the resulting menu, you will get, among other things, a one line display
  7416. for each active task, showing the name of the task and how much memory
  7417. it uses.
  7418. 2.12
  7419. If you position the pointer on that display line and click menu again,
  7420. you will see a very similar menu, but this time there is a menu item for
  7421. the task in question. This menu item has a sub-menu arrow. If you move
  7422. the pointer onto it, you will be rewarded with a sub-menu with a just a
  7423. single item, öQuitò. Clicking on this will usually, but not always,
  7424. cause the task to terminate.
  7425. 2.12
  7426. From the programmeræs point of view, the next time the task in question
  7427. issues a Wimp_Poll request, it will receive a reason code 18 with a
  7428. subordinate code of 8 in the fifth word of the parameter block. It
  7429. should interpret this as a directive to terminate.
  7430. 2.12
  7431. Å   Command files from within an Obey file Ö One of the main differences
  7432. between Command files and Obey files is that input from a Command file
  7433. can be passed to the OS Command Line Interpreter or to an application,
  7434. while input from an Obey file is only passed to the Command Line
  7435. Interpreter. This means that when an application program is started up
  7436. by a RUN command in an Obey file, the following line of the Obey file
  7437. will always be treated as a command and never as input to the appli
  7438. cation program. For example if the following is an Obey file:
  7439. 2.12
  7440. Dir ADFS:$.BasPgms
  7441. 2.12
  7442. BASIC
  7443. 2.12
  7444. Dir ADFS:$
  7445. 2.12
  7446. Then the second DIR command will be executed after quitting from BASIC.
  7447. If, instead, the file is a Command file, then as soon as BASIC starts up
  7448. it will read the öDir ADFS:$ò as input (and since it does not begin with
  7449. an asterisk, it will not understand it and treat it as a mistake).
  7450. 2.12
  7451. You can use a combination of Obey and Command files to start up an
  7452. application program and provide it with an initial set of input data.
  7453. This can be very useful, but to be successful, you must know a little
  7454. more about what happens when a Command file is executed from within an
  7455. Obey file. Consider the following example:
  7456. 2.12
  7457. | > ObeyFile
  7458. 2.12
  7459. Echo Output 1 from ObeyFile
  7460. 2.12
  7461. Exec CmndFile
  7462. 2.12
  7463. Echo Output 2 from ObeyFile
  7464. 2.12
  7465. | > CmndFile
  7466. 2.12
  7467. Echo Output from CmndFile
  7468. 2.12
  7469. When the Obey file is run, the following output is produced:
  7470. 2.12
  7471. Output 1 from ObeyFile
  7472. 2.12
  7473. Output 2 from ObeyFile
  7474. 2.12
  7475. * | > CmndFile
  7476. 2.12
  7477. * Echo Output from CmndFile
  7478. 2.12
  7479. Output from CmndFile
  7480. 2.12
  7481. From this output, you can see that despite the fact that the öExec
  7482. CmndFileò command came between the two öEchoò commands in the Obey file,
  7483. the contents of the Command file were not actually executed until the
  7484. Obey file was finished with. The Command Line Interpreter obviously
  7485. gives precedence to Obey files over Command files. All that the EXEC
  7486. command did was to open the Command file for input and assign the system
  7487. input stream to it. It did not actually read anything from it. This was
  7488. left to the Command Line Interpreter, but it did not resume reading from
  7489. the system input stream until it had exhausted the Obey file.
  7490. 2.12
  7491. Since application programs can take input from a Command file, but not
  7492. from an Obey file, an EXEC command can be used within an Obey file to
  7493. östackò input ready for an application program. The following example of
  7494. an Obey file and a Command file can be used to create a RISC-OS
  7495. application for the Basic Editor:
  7496. 2.12
  7497. | > !BasicEdit.!Run
  7498. 2.12
  7499. If ö<System$Path>ò = öò then Error 0 System resources cannot be found
  7500. RMensure ARMBasicEditor 1.00 RMload System:Modules.BasicEdit
  7501. 2.12
  7502. Key 2 EDIT .|M
  7503. 2.12
  7504. Key 4 *QUIT|M
  7505. 2.12
  7506. Wimpslot -min 100k
  7507. 2.12
  7508. Exec <Obey$Dir>.!Init
  7509. 2.12
  7510. Basic -load %*0
  7511. 2.12
  7512. *| > !BasicEdit.!Init
  7513. 2.12
  7514. EDIT
  7515. 2.12
  7516. Both files should reside in a application directory called ö!BasicEditò.
  7517. An accompanying ö!spritesò file would be nice, but is not essential
  7518. since in its absence, RISC-OS will use the default sprite for an
  7519. application.
  7520. 2.12
  7521. The öExec <Obey$Dir>.!Initò command in the Obey file opens the Command
  7522. file and when the following öBasic -load %*0ò command executes, BASIC
  7523. reads the contents of the Command file as if it were being entered from
  7524. the keyboard.
  7525. 2.12
  7526. If you double-click on the icon for ö!BasicEditò in a directory viewer,
  7527. the Basic Editor is started up ready to create a new program. If you
  7528. install ö!BasicEditò on the icon bar using TinyDirs, you can drag the
  7529. icon for a BASIC program from a directory viewer to the ö!BasicEditò
  7530. icon on the icon bar, which will start up the Basic Editor and load the
  7531. program into it ready to edit.
  7532. 2.12
  7533. The following example consists of an Obey file and a Command file to
  7534. start up Twin as an application and to change the default colours used
  7535. by twin from white on black to blue on cyan. The contents of the Obey
  7536. file, which is the !Run file in the !Twin application directory, are:
  7537. 2.12
  7538. | > !Twin.!Run
  7539. 2.12
  7540. WimpSlot -min 100k
  7541. 2.12
  7542. Load ADFS:%%.Twin 8000
  7543. 2.12
  7544. Exec <Obey$Dir>.!Init
  7545. 2.12
  7546. Go 8000 ; %*0
  7547. 2.12
  7548. and the contents of the Command file, which is named ö!Initò and also
  7549. resides in the !Twin directory, are (in the notation used for *BUILD
  7550. etc):
  7551. 2.12
  7552. |!|A|S|@|F|@|@|@|S|A|D|@|@|@
  7553. 2.12
  7554. The Obey file assumes that Twin resides in the current ADFS library,
  7555. refering to it as öADFS:%%ò. öADFSò must be specified in case the ADFS
  7556. is not the current filing system and ö%%ò will be replaced by a single
  7557. percentage sign by the argument substitution process for Obey files.
  7558. Twin is loaded at &8000 because in a RISC-OS multi-tasking environment,
  7559. the amount of storage available to start up TWIN is often not enough to
  7560. load it at its önormalò load address of &80000 (leading to the dreaded
  7561. error message: öNo writeable memory at this addressò). Note that loading
  7562. Twin at &8000 leaves no memory for starting up applications from within
  7563. Twin. Such applications would normally run at &8000 and utilise the
  7564. memory between &8000 and Twinæs normal load address at &80000).
  7565. 2.12
  7566. The Command file seems to consist of unintelligible hieroglyphics. The
  7567. first character (shown as ö|!|Aò) is actually &81 and has the same
  7568. effect on Twin as pressing function key one. The remaining eight
  7569. characters (shown as ö|S|@|F|@|@|@|S|A|D|@|@|@ò) are equivalent to:
  7570. 2.12
  7571.    ctrl-S ctrl-@ ctrl-F ctrl-@ ctrl-@ ctrl-@
  7572. 2.12
  7573.    ctrl-S ctrl-A ctrl-D ctrl-@ ctrl-@ ctrl-@
  7574. 2.12
  7575. which will have the same effect when read by Twin as the BASIC
  7576. statements:
  7577. 2.12
  7578.    VDU 19,0,5,0,0,0
  7579. 2.12
  7580.    VDU 19,1,4,0,0,0
  7581. 2.12
  7582. mapping logical colour zero to physical colour five (cyan) and logical
  7583. colour one to physical colour four (blue).
  7584. 2.12
  7585. As in the case of !BasicEdit, double clicking on the !Twin icon in a
  7586. directory viewer will start up Twin without any file loaded, while
  7587. installing !Twin on the icon bar via TinyDirs will allow dragging file
  7588. icons to the !Twin icon on the icon bar, starting up Twin and loading
  7589. the file.
  7590. 2.12
  7591. Å   Error signalling from within a machine code subroutine called from
  7592. BASIC ÖUnder BASIC V version 1.04, it is simple to signal an error
  7593. condition from a machine code subroutine by setting the over-flow flag
  7594. and loading register zero with a pointer to an error block before
  7595. returning to BASIC.
  7596. 2.12
  7597. Consider these two, almost identical examples:
  7598. 2.12
  7599. The first assembles and calls a machine code subroutine that points
  7600. register zero to an error block (see line 70) and then returns to BASIC
  7601. with the overflow flag cleared (see line 80). This program terminates
  7602. normally without an error:
  7603. 2.12
  7604.  10 REM > Example1
  7605. 2.12
  7606.  20
  7607. 2.12
  7608.  30 DIM code% 100
  7609. 2.12
  7610.  40 FOR pass% = 0 TO 3 STEP 3
  7611. 2.12
  7612.  50 P%=code%
  7613. 2.12
  7614.  60 [OPT pass%
  7615. 2.12
  7616.  70 ADR R0,errblk
  7617. 2.12
  7618.  80 BICS PC,R14,#&10000000
  7619. 2.12
  7620.  90 .errblk EQUD 99
  7621. 2.12
  7622. 100 EQUS öI am an error messageò
  7623. 2.12
  7624. 110 EQUB 0
  7625. 2.12
  7626. 120 ]:NEXT
  7627. 2.12
  7628. 130 ON ERROR PROCerror
  7629. 2.12
  7630. 140 CALL code%
  7631. 2.12
  7632. 150 END
  7633. 2.12
  7634. 160 :
  7635. 2.12
  7636. 170 DEF PROCerror
  7637. 2.12
  7638. 180 PRINT öNmbr=ò; ERR
  7639. 2.12
  7640. 190 PRINT öText=ò; REPORT$
  7641. 2.12
  7642. 200 PRINT öLine=ò; ERL
  7643. 2.12
  7644. 210 END
  7645. 2.12
  7646. 220 ENDPROC
  7647. 2.12
  7648. The second example is exactly the same except that it sets the overflow
  7649. flag (see line 80) before returning to BASIC:
  7650. 2.12
  7651.  10 REM > Example2
  7652. 2.12
  7653.  20
  7654. 2.12
  7655.  30 DIM code% 100
  7656. 2.12
  7657.  40 FOR pass% = 0 TO 3 STEP 3
  7658. 2.12
  7659.  50 P%=code%
  7660. 2.12
  7661.  60 [OPT pass%
  7662. 2.12
  7663.  70 ADR R0,errblk
  7664. 2.12
  7665.  80 ORRS PC,R14,#&10000000
  7666. 2.12
  7667.  90 .errblk EQUD 99
  7668. 2.12
  7669. 100 EQUS öI am an error messageò
  7670. 2.12
  7671. 110 EQUB 0
  7672. 2.12
  7673. 120 ]:NEXT
  7674. 2.12
  7675. 130 ON ERROR PROCerror
  7676. 2.12
  7677. 140 CALL code%
  7678. 2.12
  7679. 150 END
  7680. 2.12
  7681. 160 :
  7682. 2.12
  7683. 170 DEF PROCerror
  7684. 2.12
  7685. 180 PRINT öNmbr=ò; ERR
  7686. 2.12
  7687. 190 PRINT öText=ò; REPORT$
  7688. 2.12
  7689. 200 PRINT öLine=ò; ERL
  7690. 2.12
  7691. 210 END
  7692. 2.12
  7693. 220 ENDPROC
  7694. 2.12
  7695. In this second case, an error occurs, which is trapped by the ON ERROR
  7696. statement (see line 130) and results in the following lines being
  7697. printed by PROCerror:
  7698. 2.12
  7699. Nmbr=99
  7700. 2.12
  7701. Text=I am an error message
  7702. 2.12
  7703. Line=140
  7704. 2.12
  7705. This use of the overflow flag can result in unexpected behaviour from
  7706. some programs. For example, if the last SWI call in a machine code
  7707. subroutine returns with the overflow flag set, indicating an error
  7708. occurred during the execution of the SWI, and this flag is not reset
  7709. before the subroutine returns to BASIC, then BASIC will take this as an
  7710. error condition. Exactly what happens depends on the contents of
  7711. register zero. If it points to a valid error block, then BASICæs error
  7712. trapping mechanism will function properly. Otherwise unpredictable
  7713. errors (such as an address exception) will happen.
  7714. 2.12
  7715. Å   New SWI calls in RISC-OS Ö The following program can be used to list
  7716. all the SWI calls available in OS. It basically works by calling the
  7717. öOS_SWINumberToStringò SWI for all possible SWI numbers and displaying
  7718. the returned string. To speed things up it checks to see if the first
  7719. SWI in a each chunk of 64 is valid. If not, it ignores the rest of the
  7720. chunk. öValidò in this case means that the SWI name is neither
  7721. öOS_Undefinedò nor öUserò. SWI names beginning with öXò are also ignored
  7722. as duplicates.
  7723. 2.12
  7724.  10 REM > SWIlist
  7725. 2.12
  7726.  20 :
  7727. 2.12
  7728.  30 buflen%=100
  7729. 2.12
  7730.  40 DIM buffer% buflen%
  7731. 2.12
  7732.  50 :
  7733. 2.12
  7734.  60 SYS öOS_SWINumberFromStringò,,
  7735. 2.12
  7736. öXOS_SWINumberToStringò TO S%
  7737. 2.12
  7738.  70 :
  7739. 2.12
  7740.  80 VDU 14
  7741. 2.12
  7742.  90 :
  7743. 2.12
  7744. 100 FOR chunk% = 0 TO &80000 STEP 64
  7745. 2.12
  7746. 110 SYS S%,chunk%,buffer%,buflen%
  7747. 2.12
  7748.  TO ,swi$;V%
  7749. 2.12
  7750. 120 IF V%AND1 ELSE IF LEFT$(swi$,1)
  7751. 2.12
  7752. =öXò ELSE IF swi$ =öUserò ELSE IF swi$<>öOS_Undefinedò PROCchunk
  7753. 2.12
  7754. 130 NEXT
  7755. 2.12
  7756. 140 :
  7757. 2.12
  7758. 150 VDU15
  7759. 2.12
  7760. 160 :
  7761. 2.12
  7762. 170 END
  7763. 2.12
  7764. 180
  7765. 2.12
  7766. 190 DEFPROCchunk
  7767. 2.12
  7768. 200 FOR swi% = chunk% TO chunk%+63
  7769. 2.12
  7770. 210 SYS S%,swi%,buffer%,buflen% TO
  7771. 2.12
  7772.  ,swi$;V%
  7773. 2.12
  7774. 220 IF V%AND1 ELSE IF LEFT$(swi$,1)
  7775. 2.12
  7776. =öXò ELSE IF swi$=öUserò ELSE IF swi$<>öOS_Undefinedò PRINT öSWI number
  7777. ò;RIGHT$(ö0000ò+
  7778. 2.12
  7779. STR$~swi%,5);ö is ò;swi$
  7780. 2.12
  7781. 230 NEXT
  7782. 2.12
  7783. 240 ENDPROC
  7784. 2.12
  7785. If this program is run, a list of SWIs is generated. Those for the
  7786. FPemulator and ColourTrans will only be listed if the relevant Relocat
  7787. able Module is loaded when SWIlist is run. Those for RamFS will only be
  7788. listed if the RAM disc is configured.
  7789. 2.12
  7790. The program was also run against Arthur 1.2 and by comparing the two
  7791. listings, it was possible to identify those SWIs which appeared in the
  7792. RISC-OS listing but not in that for Arthur. These are presumably new
  7793. SWIs and are listed below.
  7794. 2.12
  7795. 00049   OS_ReadArgs
  7796. 2.12
  7797. 0004A   OS_ReadRAMFsLimits
  7798. 2.12
  7799. 0004B   OS_ClaimDeviceVector
  7800. 2.12
  7801. 0004C   OS_ReleaseDeviceVector
  7802. 2.12
  7803. 0004D   OS_DelinkApplication
  7804. 2.12
  7805. 0004E   OS_RelinkApplication
  7806. 2.12
  7807. 0004F   OS_HeapSort
  7808. 2.12
  7809. 00050   OS_ExitAndDie
  7810. 2.12
  7811. 00051   OS_ReadMemMapInfo
  7812. 2.12
  7813. 00052   OS_ReadMemMapEntries
  7814. 2.12
  7815. 00053   OS_SetMemMapEntries
  7816. 2.12
  7817. 00054   OS_AddCallBack
  7818. 2.12
  7819. 00055   OS_ReadDefaultHandler
  7820. 2.12
  7821. 00056   OS_SetECFOrigin
  7822. 2.12
  7823. 00057   OS_SerialOp
  7824. 2.12
  7825. 00058   OS_ReadSysInfo
  7826. 2.12
  7827. 00059   OS_Confirm
  7828. 2.12
  7829. 0005A   OS_ChangedBox
  7830. 2.12
  7831. 0005B   OS_CRC
  7832. 2.12
  7833. 0005C   OS_ReadDynamicArea
  7834. 2.12
  7835. 0005D   OS_PrintChar
  7836. 2.12
  7837. 000EB   OS_ConvertFixedFileSize
  7838. 2.12
  7839. 000EC   OS_ConvertFileSize
  7840. 2.12
  7841. 00240   IIC_Control
  7842. 2.12
  7843. 40098   Font_ReadColourTable
  7844. 2.12
  7845. 400DE   Wimp_StartTask
  7846. 2.12
  7847. 400DF   Wimp_ReportError
  7848. 2.12
  7849. 400E0   Wimp_GetWindowOutline
  7850. 2.12
  7851. 400E1   Wimp_PollIdle
  7852. 2.12
  7853. 400E2   Wimp_PlotIcon
  7854. 2.12
  7855. 400E3   Wimp_SetMode
  7856. 2.12
  7857. 400E4   Wimp_SetPalette
  7858. 2.12
  7859. 400E5   Wimp_ReadPalette
  7860. 2.12
  7861. 400E6   Wimp_SetColour
  7862. 2.12
  7863. 400E7   Wimp_SendMessage
  7864. 2.12
  7865. 400E8   Wimp_CreateSubMenu
  7866. 2.12
  7867. 400E9   Wimp_SpriteOp
  7868. 2.12
  7869. 400EA   Wimp_BaseOfSprites
  7870. 2.12
  7871. 400EB   Wimp_BlockCopy
  7872. 2.12
  7873. 400EC   Wimp_SlotSize
  7874. 2.12
  7875. 400ED   Wimp_ReadPixTrans
  7876. 2.12
  7877. 400EE   Wimp_ClaimFreeMemory
  7878. 2.12
  7879. 400EF   Wimp_CommandWindow
  7880. 2.12
  7881. 400F0   Wimp_TextColour
  7882. 2.12
  7883. 400F1   Wimp_TransferBlock
  7884. 2.12
  7885. 400F2   Wimp_ReadSysInfo
  7886. 2.12
  7887. 400F3   Wimp_SetFontColours
  7888. 2.12
  7889. 401C7   Sound_QInterface
  7890. 2.12
  7891. 40244   ADFS_Retries
  7892. 2.12
  7893. 40245   ADFS_DescribeDisc
  7894. 2.12
  7895. 40289   Podule_HardwareAddress
  7896. 2.12
  7897. 40540   FileCore_DiscOp
  7898. 2.12
  7899. 40541   FileCore_Create
  7900. 2.12
  7901. 40542   FileCore_Drives
  7902. 2.12
  7903. 40543   FileCore_FreeSpace
  7904. 2.12
  7905. 40544   FileCore_FloppyStructure
  7906. 2.12
  7907. 40545   FileCore_DescribeDisc
  7908. 2.12
  7909. 405C0   Shell_Create
  7910. 2.12
  7911. 405C1   Shell_Destroy
  7912. 2.12
  7913. 406C0   Hourglass_On
  7914. 2.12
  7915. 406C1   Hourglass_Off
  7916. 2.12
  7917. 406C2   Hourglass_Smash
  7918. 2.12
  7919. 406C3   Hourglass_Start
  7920. 2.12
  7921. 406C4   Hourglass_Percentage
  7922. 2.12
  7923. 406C5   Hourglass_LEDs
  7924. 2.12
  7925. 40700   Draw_ProcessPath
  7926. 2.12
  7927. 40701   Draw_ProcessPathFP
  7928. 2.12
  7929. 40702   Draw_Fill
  7930. 2.12
  7931. 40703   Draw_FillFP
  7932. 2.12
  7933. 40704   Draw_Stroke
  7934. 2.12
  7935. 40705   Draw_StrokeFP
  7936. 2.12
  7937. 40706   Draw_StrokePath
  7938. 2.12
  7939. 40707   Draw_StrokePathFP
  7940. 2.12
  7941. 40708   Draw_FlattenPath
  7942. 2.12
  7943. 40709   Draw_FlattenPathFP
  7944. 2.12
  7945. 4070A   Draw_TransformPath
  7946. 2.12
  7947. 4070B   Draw_TransformPathFP
  7948. 2.12
  7949. 40780   RamFS_DiscOp
  7950. 2.12
  7951. 40781   RamFS_NOP
  7952. 2.12
  7953. 40782   RamFS_Drives
  7954. 2.12
  7955. 40783   RamFS_FreeSpace
  7956. 2.12
  7957. 40784   RamFS_NOP
  7958. 2.12
  7959. 40785   RamFS_DescribeDisc
  7960. 2.12
  7961. 40740   ColourTrans_SelectTable
  7962. 2.12
  7963. 40741   ColourTrans_SelectGCOLTable
  7964. 2.12
  7965. 40742   ColourTrans_ReturnGCOL
  7966. 2.12
  7967. 40743   ColourTrans_SetGCOL
  7968. 2.12
  7969. 40744   ColourTrans_ReturnColourNumber
  7970. 2.12
  7971. 40745   ColourTrans_ReturnGCOLForMode
  7972. 2.12
  7973. 40746   ColourTrans_ReturnColourNumber
  7974. 2.12
  7975. ForMode
  7976. 2.12
  7977. 40747   ColourTrans_ReturnOppGCOL
  7978. 2.12
  7979. 40748   ColourTrans_SetOppGCOL
  7980. 2.12
  7981. 40749   ColourTrans_ReturnOppColour
  7982. 2.12
  7983. Number
  7984. 2.12
  7985. 4074A   ColourTrans_ReturnOppGCOLFor
  7986. 2.12
  7987. Mode
  7988. 2.12
  7989. 4074B   ColourTrans_ReturnOppColour
  7990. 2.12
  7991. NumberForMode
  7992. 2.12
  7993. 4074C   ColourTrans_GCOLToColourNumber
  7994. 2.12
  7995. 4074D   ColourTrans_ColourNumberToGCOL
  7996. 2.12
  7997. 4074E   ColourTrans_ReturnFontColours
  7998. 2.12
  7999. 4074F   ColourTrans_SetFontColours
  8000. 2.12
  8001. 40750   ColourTrans_InvalidateCache
  8002. 2.12
  8003. Å   Starting up TinyDirs automatically via the Desktop initialisation
  8004. file Ö Archive 2.10  p 15, refers to the facility whereby the Desktop
  8005. can be caused to run a file of initialisation commands at start-up time.
  8006. One command that can be included in this file is a command to start up
  8007. TinyDirs and automatically install high-use directories or applications
  8008. on the icon bar.
  8009. 2.12
  8010. TinyDirs accepts multiple arguments on the command, separated by blanks.
  8011. So, if you created two application directories for, say, the Basic
  8012. Editor and Twin, you could include the following command in the Desktop
  8013. startup file (assuming that the name of the disc where !TinyDirs,
  8014. !BasicEdit and !Twin all reside is öSysDiscò):
  8015. 2.12
  8016. Run ADFS::SysDisc.$.!TinyDirs ADFS::SysDisc.$.!BasicEdit
  8017. ADFS::SysDisc.$.!Twin
  8018. 2.12
  8019. Although two icons will be installed on the icon bar, only one copy of
  8020. the TinyDirs application is started up. If two separate commands had
  8021. been used:
  8022. 2.12
  8023. Run ADFS::SysDisc.$.!TinyDirs ADFS::SysDisc.$.!BasicEdit
  8024. 2.12
  8025. Run ADFS::SysDisc.$.!TinyDirs ADFS::SysDisc.$.!Twin
  8026. 2.12
  8027. then, although the icon bar would look exactly the same, with the same
  8028. two icons installed, two copies of TinyDirs would have been started up,
  8029. using twice the memory.
  8030. 2.12
  8031. It also seems safe to reduce the memory required by TinyDirs from 32k to
  8032. 24k by altering the WimpSlot command in the !Run file for TinyDirs to
  8033. 2.12
  8034. WimpSlot -min 24k -max 24k
  8035. 2.12
  8036.  
  8037.