Home » Archimedes archive » Acorn User » AU 1998-07.adf » Regulars » StarInfo/Thoukydide/ReadMe
StarInfo/Thoukydide/ReadMe
This website contains an archive of files for the Acorn Electron, BBC Micro, Acorn Archimedes, Commodore 16 and Commodore 64 computers, which Dominic Ford has rescued from his private collection of floppy disks and cassettes.
Some of these files were originally commercial releases in the 1980s and 1990s, but they are now widely available online. I assume that copyright over them is no longer being asserted. If you own the copyright and would like files to be removed, please contact me.
Tape/disk: | Home » Archimedes archive » Acorn User » AU 1998-07.adf » Regulars |
Filename: | StarInfo/Thoukydide/ReadMe |
Read OK: | ✔ |
File size: | 1003 bytes |
Load address: | 0000 |
Exec address: | 0000 |
Duplicates
There is 1 duplicate copy of this file in the archive:
- Archimedes archive » Acorn User » AU 1998-07.adf » Regulars » StarInfo/Thoukydide/ReadMe
- Archimedes archive » Acorn User » AU 1998-13 (Christmas).adf » Regulars » StarInfo/Kennedy/ReadMe
File contents
File : ReadMe Date : 07-Jun-97 Author : � A.Thoukydides, 1997 Description : Information about Crazy Pointer. INTRODUCTION This program is inspired by MouseP written by Andrew Bolt and published in the June 1997 *Info section of Acorn User; it consists of a relocatable module that gives the hardware pointer a similar appearance to Andrew's pointer. LOADING THE MODULE To try the new look pointer simply double-click on the module in a filer window. The pointer should now turn to face the direction it is being moved in, and wobble for a while when the pointer stops moving. The caret pointer that is used when moving over some writable icons, and the popup menu pointer, have also been modified in a similar manner. The new pointer may be installed more permanently by copying the module into either the !Boot.Choices.Boot.PreDesk or !Boot.Choices.Boot.Tasks directories. The module will then be loaded automatically every time that the computer is switched on or reset. CONFIGURATION A single *command is provided to configure the pointer wobble: *CrazyPointerWobble [-nowobble] [[-friction] <value>] [[-spring] <value>] [[-force] <value>] The possible arguments are: -nowobble Disable the pointer wobble. This results in a pointer that just rotates to follow movements. -friction <value> The amount of friction. Increasing this value stops any wobble quicker. -spring <value> The strength of the spring restorative force. Increasing this value makes the pointer wobble faster. -force <value> The scaling between mouse movements and the effect on the wobble. Increasing this value makes the wobble more sensitive to slow motions of the mouse. The three numeric values are specified on a logarithmic scale in the range 0 to 10, with a value of 5 being the default. TECHNICAL DETAILS The pointer shape is updated on every vertical sync event. This provides a smooth animation (a different image for every frame refresh), that even works outside the desktop and while applications are not multitasking. The alternative of using a WIMP task that updates the pointer on null events was considered, but not used because it would result in jerky movements and slow the desktop down more. The disadvantage to updating the pointer from an interrupt routine is that the SWIs that can be used are limited; for example it isn't possible to redirect output to a sprite and use VDU operations to draw the pointer shape. To overcome these problems a set of primitive graphics operations have been implemented, including a subroutine that can plot a general polygon in any colour (including dithered patterns) from a list of coordinates. The complete pointer is plotted using just two operations - the first fills the central dark blue area, and the second draws the cyan border using the same list of coordinates. The desktop uses several different pointers in addition to the standard shape, such as the double-click pointer, a caret for writable icons, and a menu for pop-up menu buttons. The pointer shape can be redefined using two SWIs: OS_SpriteOp 36 sets the pointer shape from a sprite, and OS_Word 21,0 sets the shape from a raw bit pattern. Both of these SWIs are intercepted by module, performed by claiming SpriteV and WordV. When OS_SpriteOp 36 is called, the sprite name is checked against a list of known pointer names; a match results in the standard pointer being replaced. The final problem with implementing the wobbly pointer in assembler is the lack of floating point support. To overcome this problem, all sections of the code that require real numbers have been written using fixed point values, with each 32 bit value split into half with 16 bits of integer and 16 bits of fraction. However, high accuracy is not required for this application, so some of the calculations have been implemented for speed and simplicitly rather than for precision.
00000000 46 69 6c 65 20 20 20 20 20 20 20 20 3a 20 52 65 |File : Re| 00000010 61 64 4d 65 0a 44 61 74 65 20 20 20 20 20 20 20 |adMe.Date | 00000020 20 3a 20 30 37 2d 4a 75 6e 2d 39 37 0a 41 75 74 | : 07-Jun-97.Aut| 00000030 68 6f 72 20 20 20 20 20 20 3a 20 a9 20 41 2e 54 |hor : . A.T| 00000040 68 6f 75 6b 79 64 69 64 65 73 2c 20 31 39 39 37 |houkydides, 1997| 00000050 0a 44 65 73 63 72 69 70 74 69 6f 6e 20 3a 20 49 |.Description : I| 00000060 6e 66 6f 72 6d 61 74 69 6f 6e 20 61 62 6f 75 74 |nformation about| 00000070 20 43 72 61 7a 79 20 50 6f 69 6e 74 65 72 2e 0a | Crazy Pointer..| 00000080 0a 0a 49 4e 54 52 4f 44 55 43 54 49 4f 4e 0a 0a |..INTRODUCTION..| 00000090 54 68 69 73 20 70 72 6f 67 72 61 6d 20 69 73 20 |This program is | 000000a0 69 6e 73 70 69 72 65 64 20 62 79 20 4d 6f 75 73 |inspired by Mous| 000000b0 65 50 20 77 72 69 74 74 65 6e 20 62 79 20 41 6e |eP written by An| 000000c0 64 72 65 77 20 42 6f 6c 74 20 61 6e 64 20 70 75 |drew Bolt and pu| 000000d0 62 6c 69 73 68 65 64 20 69 6e 0a 74 68 65 20 4a |blished in.the J| 000000e0 75 6e 65 20 31 39 39 37 20 2a 49 6e 66 6f 20 73 |une 1997 *Info s| 000000f0 65 63 74 69 6f 6e 20 6f 66 20 41 63 6f 72 6e 20 |ection of Acorn | 00000100 55 73 65 72 3b 20 69 74 20 63 6f 6e 73 69 73 74 |User; it consist| 00000110 73 20 6f 66 20 61 20 72 65 6c 6f 63 61 74 61 62 |s of a relocatab| 00000120 6c 65 0a 6d 6f 64 75 6c 65 20 74 68 61 74 20 67 |le.module that g| 00000130 69 76 65 73 20 74 68 65 20 68 61 72 64 77 61 72 |ives the hardwar| 00000140 65 20 70 6f 69 6e 74 65 72 20 61 20 73 69 6d 69 |e pointer a simi| 00000150 6c 61 72 20 61 70 70 65 61 72 61 6e 63 65 20 74 |lar appearance t| 00000160 6f 20 41 6e 64 72 65 77 27 73 0a 70 6f 69 6e 74 |o Andrew's.point| 00000170 65 72 2e 0a 0a 0a 4c 4f 41 44 49 4e 47 20 54 48 |er....LOADING TH| 00000180 45 20 4d 4f 44 55 4c 45 0a 0a 54 6f 20 74 72 79 |E MODULE..To try| 00000190 20 74 68 65 20 6e 65 77 20 6c 6f 6f 6b 20 70 6f | the new look po| 000001a0 69 6e 74 65 72 20 73 69 6d 70 6c 79 20 64 6f 75 |inter simply dou| 000001b0 62 6c 65 2d 63 6c 69 63 6b 20 6f 6e 20 74 68 65 |ble-click on the| 000001c0 20 6d 6f 64 75 6c 65 20 69 6e 20 61 20 66 69 6c | module in a fil| 000001d0 65 72 0a 77 69 6e 64 6f 77 2e 20 54 68 65 20 70 |er.window. The p| 000001e0 6f 69 6e 74 65 72 20 73 68 6f 75 6c 64 20 6e 6f |ointer should no| 000001f0 77 20 74 75 72 6e 20 74 6f 20 66 61 63 65 20 74 |w turn to face t| 00000200 68 65 20 64 69 72 65 63 74 69 6f 6e 20 69 74 20 |he direction it | 00000210 69 73 20 62 65 69 6e 67 20 6d 6f 76 65 64 0a 69 |is being moved.i| 00000220 6e 2c 20 61 6e 64 20 77 6f 62 62 6c 65 20 66 6f |n, and wobble fo| 00000230 72 20 61 20 77 68 69 6c 65 20 77 68 65 6e 20 74 |r a while when t| 00000240 68 65 20 70 6f 69 6e 74 65 72 20 73 74 6f 70 73 |he pointer stops| 00000250 20 6d 6f 76 69 6e 67 2e 20 54 68 65 20 63 61 72 | moving. The car| 00000260 65 74 20 70 6f 69 6e 74 65 72 0a 74 68 61 74 20 |et pointer.that | 00000270 69 73 20 75 73 65 64 20 77 68 65 6e 20 6d 6f 76 |is used when mov| 00000280 69 6e 67 20 6f 76 65 72 20 73 6f 6d 65 20 77 72 |ing over some wr| 00000290 69 74 61 62 6c 65 20 69 63 6f 6e 73 2c 20 61 6e |itable icons, an| 000002a0 64 20 74 68 65 20 70 6f 70 75 70 20 6d 65 6e 75 |d the popup menu| 000002b0 0a 70 6f 69 6e 74 65 72 2c 20 68 61 76 65 20 61 |.pointer, have a| 000002c0 6c 73 6f 20 62 65 65 6e 20 6d 6f 64 69 66 69 65 |lso been modifie| 000002d0 64 20 69 6e 20 61 20 73 69 6d 69 6c 61 72 20 6d |d in a similar m| 000002e0 61 6e 6e 65 72 2e 0a 0a 54 68 65 20 6e 65 77 20 |anner...The new | 000002f0 70 6f 69 6e 74 65 72 20 6d 61 79 20 62 65 20 69 |pointer may be i| 00000300 6e 73 74 61 6c 6c 65 64 20 6d 6f 72 65 20 70 65 |nstalled more pe| 00000310 72 6d 61 6e 65 6e 74 6c 79 20 62 79 20 63 6f 70 |rmanently by cop| 00000320 79 69 6e 67 20 74 68 65 20 6d 6f 64 75 6c 65 20 |ying the module | 00000330 69 6e 74 6f 0a 65 69 74 68 65 72 20 74 68 65 20 |into.either the | 00000340 21 42 6f 6f 74 2e 43 68 6f 69 63 65 73 2e 42 6f |!Boot.Choices.Bo| 00000350 6f 74 2e 50 72 65 44 65 73 6b 20 6f 72 20 21 42 |ot.PreDesk or !B| 00000360 6f 6f 74 2e 43 68 6f 69 63 65 73 2e 42 6f 6f 74 |oot.Choices.Boot| 00000370 2e 54 61 73 6b 73 0a 64 69 72 65 63 74 6f 72 69 |.Tasks.directori| 00000380 65 73 2e 20 54 68 65 20 6d 6f 64 75 6c 65 20 77 |es. The module w| 00000390 69 6c 6c 20 74 68 65 6e 20 62 65 20 6c 6f 61 64 |ill then be load| 000003a0 65 64 20 61 75 74 6f 6d 61 74 69 63 61 6c 6c 79 |ed automatically| 000003b0 20 65 76 65 72 79 20 74 69 6d 65 20 74 68 61 74 | every time that| 000003c0 20 74 68 65 0a 63 6f 6d 70 75 74 65 72 20 69 73 | the.computer is| 000003d0 20 73 77 69 74 63 68 65 64 20 6f 6e 20 6f 72 20 | switched on or | 000003e0 72 65 73 65 74 2e 0a 0a 0a 43 4f 4e 46 49 47 55 |reset....CONFIGU| 000003f0 52 41 54 49 4f 4e 0a 0a 41 20 73 69 6e 67 6c 65 |RATION..A single| 00000400 20 2a 63 6f 6d 6d 61 6e 64 20 69 73 20 70 72 6f | *command is pro| 00000410 76 69 64 65 64 20 74 6f 20 63 6f 6e 66 69 67 75 |vided to configu| 00000420 72 65 20 74 68 65 20 70 6f 69 6e 74 65 72 20 77 |re the pointer w| 00000430 6f 62 62 6c 65 3a 0a 0a 20 20 20 20 2a 43 72 61 |obble:.. *Cra| 00000440 7a 79 50 6f 69 6e 74 65 72 57 6f 62 62 6c 65 20 |zyPointerWobble | 00000450 5b 2d 6e 6f 77 6f 62 62 6c 65 5d 20 5b 5b 2d 66 |[-nowobble] [[-f| 00000460 72 69 63 74 69 6f 6e 5d 20 3c 76 61 6c 75 65 3e |riction] <value>| 00000470 5d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 |]. | 00000480 20 20 20 20 20 20 20 20 20 20 5b 5b 2d 73 70 72 | [[-spr| 00000490 69 6e 67 5d 20 3c 76 61 6c 75 65 3e 5d 20 5b 5b |ing] <value>] [[| 000004a0 2d 66 6f 72 63 65 5d 20 3c 76 61 6c 75 65 3e 5d |-force] <value>]| 000004b0 0a 0a 54 68 65 20 70 6f 73 73 69 62 6c 65 20 61 |..The possible a| 000004c0 72 67 75 6d 65 6e 74 73 20 61 72 65 3a 0a 0a 20 |rguments are:.. | 000004d0 20 20 20 2d 6e 6f 77 6f 62 62 6c 65 20 20 20 20 | -nowobble | 000004e0 20 20 20 20 20 20 20 44 69 73 61 62 6c 65 20 74 | Disable t| 000004f0 68 65 20 70 6f 69 6e 74 65 72 20 77 6f 62 62 6c |he pointer wobbl| 00000500 65 2e 20 54 68 69 73 20 72 65 73 75 6c 74 73 20 |e. This results | 00000510 69 6e 20 61 20 70 6f 69 6e 74 65 72 0a 20 20 20 |in a pointer. | 00000520 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | | 00000530 20 20 20 20 20 74 68 61 74 20 6a 75 73 74 20 72 | that just r| 00000540 6f 74 61 74 65 73 20 74 6f 20 66 6f 6c 6c 6f 77 |otates to follow| 00000550 20 6d 6f 76 65 6d 65 6e 74 73 2e 0a 20 20 20 20 | movements.. | 00000560 0a 20 20 20 20 2d 66 72 69 63 74 69 6f 6e 20 3c |. -friction <| 00000570 76 61 6c 75 65 3e 20 20 20 54 68 65 20 61 6d 6f |value> The amo| 00000580 75 6e 74 20 6f 66 20 66 72 69 63 74 69 6f 6e 2e |unt of friction.| 00000590 20 49 6e 63 72 65 61 73 69 6e 67 20 74 68 69 73 | Increasing this| 000005a0 20 76 61 6c 75 65 20 73 74 6f 70 73 0a 20 20 20 | value stops. | 000005b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | | 000005c0 20 20 20 20 20 61 6e 79 20 77 6f 62 62 6c 65 20 | any wobble | 000005d0 71 75 69 63 6b 65 72 2e 0a 20 20 20 20 0a 20 20 |quicker.. . | 000005e0 20 20 2d 73 70 72 69 6e 67 20 3c 76 61 6c 75 65 | -spring <value| 000005f0 3e 20 20 20 20 20 54 68 65 20 73 74 72 65 6e 67 |> The streng| 00000600 74 68 20 6f 66 20 74 68 65 20 73 70 72 69 6e 67 |th of the spring| 00000610 20 72 65 73 74 6f 72 61 74 69 76 65 20 66 6f 72 | restorative for| 00000620 63 65 2e 0a 20 20 20 20 20 20 20 20 20 20 20 20 |ce.. | 00000630 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 63 72 | Incr| 00000640 65 61 73 69 6e 67 20 74 68 69 73 20 76 61 6c 75 |easing this valu| 00000650 65 20 6d 61 6b 65 73 20 74 68 65 20 70 6f 69 6e |e makes the poin| 00000660 74 65 72 20 77 6f 62 62 6c 65 20 66 61 73 74 65 |ter wobble faste| 00000670 72 2e 0a 20 20 20 20 0a 20 20 20 20 2d 66 6f 72 |r.. . -for| 00000680 63 65 20 3c 76 61 6c 75 65 3e 20 20 20 20 20 20 |ce <value> | 00000690 54 68 65 20 73 63 61 6c 69 6e 67 20 62 65 74 77 |The scaling betw| 000006a0 65 65 6e 20 6d 6f 75 73 65 20 6d 6f 76 65 6d 65 |een mouse moveme| 000006b0 6e 74 73 20 61 6e 64 20 74 68 65 20 65 66 66 65 |nts and the effe| 000006c0 63 74 20 6f 6e 0a 20 20 20 20 20 20 20 20 20 20 |ct on. | 000006d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 68 | th| 000006e0 65 20 77 6f 62 62 6c 65 2e 20 49 6e 63 72 65 61 |e wobble. Increa| 000006f0 73 69 6e 67 20 74 68 69 73 20 76 61 6c 75 65 20 |sing this value | 00000700 6d 61 6b 65 73 20 74 68 65 20 77 6f 62 62 6c 65 |makes the wobble| 00000710 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 |. | 00000720 20 20 20 20 20 20 20 20 20 6d 6f 72 65 20 73 65 | more se| 00000730 6e 73 69 74 69 76 65 20 74 6f 20 73 6c 6f 77 20 |nsitive to slow | 00000740 6d 6f 74 69 6f 6e 73 20 6f 66 20 74 68 65 20 6d |motions of the m| 00000750 6f 75 73 65 2e 0a 0a 54 68 65 20 74 68 72 65 65 |ouse...The three| 00000760 20 6e 75 6d 65 72 69 63 20 76 61 6c 75 65 73 20 | numeric values | 00000770 61 72 65 20 73 70 65 63 69 66 69 65 64 20 6f 6e |are specified on| 00000780 20 61 20 6c 6f 67 61 72 69 74 68 6d 69 63 20 73 | a logarithmic s| 00000790 63 61 6c 65 20 69 6e 20 74 68 65 20 72 61 6e 67 |cale in the rang| 000007a0 65 0a 30 20 74 6f 20 31 30 2c 20 77 69 74 68 20 |e.0 to 10, with | 000007b0 61 20 76 61 6c 75 65 20 6f 66 20 35 20 62 65 69 |a value of 5 bei| 000007c0 6e 67 20 74 68 65 20 64 65 66 61 75 6c 74 2e 0a |ng the default..| 000007d0 0a 0a 54 45 43 48 4e 49 43 41 4c 20 44 45 54 41 |..TECHNICAL DETA| 000007e0 49 4c 53 0a 0a 54 68 65 20 70 6f 69 6e 74 65 72 |ILS..The pointer| 000007f0 20 73 68 61 70 65 20 69 73 20 75 70 64 61 74 65 | shape is update| 00000800 64 20 6f 6e 20 65 76 65 72 79 20 76 65 72 74 69 |d on every verti| 00000810 63 61 6c 20 73 79 6e 63 20 65 76 65 6e 74 2e 20 |cal sync event. | 00000820 54 68 69 73 20 70 72 6f 76 69 64 65 73 20 61 0a |This provides a.| 00000830 73 6d 6f 6f 74 68 20 61 6e 69 6d 61 74 69 6f 6e |smooth animation| 00000840 20 28 61 20 64 69 66 66 65 72 65 6e 74 20 69 6d | (a different im| 00000850 61 67 65 20 66 6f 72 20 65 76 65 72 79 20 66 72 |age for every fr| 00000860 61 6d 65 20 72 65 66 72 65 73 68 29 2c 20 74 68 |ame refresh), th| 00000870 61 74 20 65 76 65 6e 20 77 6f 72 6b 73 0a 6f 75 |at even works.ou| 00000880 74 73 69 64 65 20 74 68 65 20 64 65 73 6b 74 6f |tside the deskto| 00000890 70 20 61 6e 64 20 77 68 69 6c 65 20 61 70 70 6c |p and while appl| 000008a0 69 63 61 74 69 6f 6e 73 20 61 72 65 20 6e 6f 74 |ications are not| 000008b0 20 6d 75 6c 74 69 74 61 73 6b 69 6e 67 2e 20 54 | multitasking. T| 000008c0 68 65 0a 61 6c 74 65 72 6e 61 74 69 76 65 20 6f |he.alternative o| 000008d0 66 20 75 73 69 6e 67 20 61 20 57 49 4d 50 20 74 |f using a WIMP t| 000008e0 61 73 6b 20 74 68 61 74 20 75 70 64 61 74 65 73 |ask that updates| 000008f0 20 74 68 65 20 70 6f 69 6e 74 65 72 20 6f 6e 20 | the pointer on | 00000900 6e 75 6c 6c 20 65 76 65 6e 74 73 20 77 61 73 0a |null events was.| 00000910 63 6f 6e 73 69 64 65 72 65 64 2c 20 62 75 74 20 |considered, but | 00000920 6e 6f 74 20 75 73 65 64 20 62 65 63 61 75 73 65 |not used because| 00000930 20 69 74 20 77 6f 75 6c 64 20 72 65 73 75 6c 74 | it would result| 00000940 20 69 6e 20 6a 65 72 6b 79 20 6d 6f 76 65 6d 65 | in jerky moveme| 00000950 6e 74 73 20 61 6e 64 20 73 6c 6f 77 0a 74 68 65 |nts and slow.the| 00000960 20 64 65 73 6b 74 6f 70 20 64 6f 77 6e 20 6d 6f | desktop down mo| 00000970 72 65 2e 0a 0a 54 68 65 20 64 69 73 61 64 76 61 |re...The disadva| 00000980 6e 74 61 67 65 20 74 6f 20 75 70 64 61 74 69 6e |ntage to updatin| 00000990 67 20 74 68 65 20 70 6f 69 6e 74 65 72 20 66 72 |g the pointer fr| 000009a0 6f 6d 20 61 6e 20 69 6e 74 65 72 72 75 70 74 20 |om an interrupt | 000009b0 72 6f 75 74 69 6e 65 20 69 73 20 74 68 61 74 0a |routine is that.| 000009c0 74 68 65 20 53 57 49 73 20 74 68 61 74 20 63 61 |the SWIs that ca| 000009d0 6e 20 62 65 20 75 73 65 64 20 61 72 65 20 6c 69 |n be used are li| 000009e0 6d 69 74 65 64 3b 20 66 6f 72 20 65 78 61 6d 70 |mited; for examp| 000009f0 6c 65 20 69 74 20 69 73 6e 27 74 20 70 6f 73 73 |le it isn't poss| 00000a00 69 62 6c 65 20 74 6f 20 0a 72 65 64 69 72 65 63 |ible to .redirec| 00000a10 74 20 6f 75 74 70 75 74 20 74 6f 20 61 20 73 70 |t output to a sp| 00000a20 72 69 74 65 20 61 6e 64 20 75 73 65 20 56 44 55 |rite and use VDU| 00000a30 20 6f 70 65 72 61 74 69 6f 6e 73 20 74 6f 20 64 | operations to d| 00000a40 72 61 77 20 74 68 65 20 70 6f 69 6e 74 65 72 20 |raw the pointer | 00000a50 73 68 61 70 65 2e 0a 54 6f 20 6f 76 65 72 63 6f |shape..To overco| 00000a60 6d 65 20 74 68 65 73 65 20 70 72 6f 62 6c 65 6d |me these problem| 00000a70 73 20 61 20 73 65 74 20 6f 66 20 70 72 69 6d 69 |s a set of primi| 00000a80 74 69 76 65 20 67 72 61 70 68 69 63 73 20 6f 70 |tive graphics op| 00000a90 65 72 61 74 69 6f 6e 73 20 68 61 76 65 20 62 65 |erations have be| 00000aa0 65 6e 0a 69 6d 70 6c 65 6d 65 6e 74 65 64 2c 20 |en.implemented, | 00000ab0 69 6e 63 6c 75 64 69 6e 67 20 61 20 73 75 62 72 |including a subr| 00000ac0 6f 75 74 69 6e 65 20 74 68 61 74 20 63 61 6e 20 |outine that can | 00000ad0 70 6c 6f 74 20 61 20 67 65 6e 65 72 61 6c 20 70 |plot a general p| 00000ae0 6f 6c 79 67 6f 6e 20 69 6e 0a 61 6e 79 20 63 6f |olygon in.any co| 00000af0 6c 6f 75 72 20 28 69 6e 63 6c 75 64 69 6e 67 20 |lour (including | 00000b00 64 69 74 68 65 72 65 64 20 70 61 74 74 65 72 6e |dithered pattern| 00000b10 73 29 20 66 72 6f 6d 20 61 20 6c 69 73 74 20 6f |s) from a list o| 00000b20 66 20 63 6f 6f 72 64 69 6e 61 74 65 73 2e 20 54 |f coordinates. T| 00000b30 68 65 0a 63 6f 6d 70 6c 65 74 65 20 70 6f 69 6e |he.complete poin| 00000b40 74 65 72 20 69 73 20 70 6c 6f 74 74 65 64 20 75 |ter is plotted u| 00000b50 73 69 6e 67 20 6a 75 73 74 20 74 77 6f 20 6f 70 |sing just two op| 00000b60 65 72 61 74 69 6f 6e 73 20 2d 20 74 68 65 20 66 |erations - the f| 00000b70 69 72 73 74 20 66 69 6c 6c 73 20 74 68 65 0a 63 |irst fills the.c| 00000b80 65 6e 74 72 61 6c 20 64 61 72 6b 20 62 6c 75 65 |entral dark blue| 00000b90 20 61 72 65 61 2c 20 61 6e 64 20 74 68 65 20 73 | area, and the s| 00000ba0 65 63 6f 6e 64 20 64 72 61 77 73 20 74 68 65 20 |econd draws the | 00000bb0 63 79 61 6e 20 62 6f 72 64 65 72 20 75 73 69 6e |cyan border usin| 00000bc0 67 20 74 68 65 20 73 61 6d 65 0a 6c 69 73 74 20 |g the same.list | 00000bd0 6f 66 20 63 6f 6f 72 64 69 6e 61 74 65 73 2e 0a |of coordinates..| 00000be0 0a 54 68 65 20 64 65 73 6b 74 6f 70 20 75 73 65 |.The desktop use| 00000bf0 73 20 73 65 76 65 72 61 6c 20 64 69 66 66 65 72 |s several differ| 00000c00 65 6e 74 20 70 6f 69 6e 74 65 72 73 20 69 6e 20 |ent pointers in | 00000c10 61 64 64 69 74 69 6f 6e 20 74 6f 20 74 68 65 20 |addition to the | 00000c20 73 74 61 6e 64 61 72 64 0a 73 68 61 70 65 2c 20 |standard.shape, | 00000c30 73 75 63 68 20 61 73 20 74 68 65 20 64 6f 75 62 |such as the doub| 00000c40 6c 65 2d 63 6c 69 63 6b 20 70 6f 69 6e 74 65 72 |le-click pointer| 00000c50 2c 20 61 20 63 61 72 65 74 20 66 6f 72 20 77 72 |, a caret for wr| 00000c60 69 74 61 62 6c 65 20 69 63 6f 6e 73 2c 20 61 6e |itable icons, an| 00000c70 64 20 61 0a 6d 65 6e 75 20 66 6f 72 20 70 6f 70 |d a.menu for pop| 00000c80 2d 75 70 20 6d 65 6e 75 20 62 75 74 74 6f 6e 73 |-up menu buttons| 00000c90 2e 20 54 68 65 20 70 6f 69 6e 74 65 72 20 73 68 |. The pointer sh| 00000ca0 61 70 65 20 63 61 6e 20 62 65 20 72 65 64 65 66 |ape can be redef| 00000cb0 69 6e 65 64 20 75 73 69 6e 67 20 74 77 6f 0a 53 |ined using two.S| 00000cc0 57 49 73 3a 20 4f 53 5f 53 70 72 69 74 65 4f 70 |WIs: OS_SpriteOp| 00000cd0 20 33 36 20 73 65 74 73 20 74 68 65 20 70 6f 69 | 36 sets the poi| 00000ce0 6e 74 65 72 20 73 68 61 70 65 20 66 72 6f 6d 20 |nter shape from | 00000cf0 61 20 73 70 72 69 74 65 2c 20 61 6e 64 20 4f 53 |a sprite, and OS| 00000d00 5f 57 6f 72 64 20 32 31 2c 30 0a 73 65 74 73 20 |_Word 21,0.sets | 00000d10 74 68 65 20 73 68 61 70 65 20 66 72 6f 6d 20 61 |the shape from a| 00000d20 20 72 61 77 20 62 69 74 20 70 61 74 74 65 72 6e | raw bit pattern| 00000d30 2e 20 42 6f 74 68 20 6f 66 20 74 68 65 73 65 20 |. Both of these | 00000d40 53 57 49 73 20 61 72 65 20 69 6e 74 65 72 63 65 |SWIs are interce| 00000d50 70 74 65 64 20 62 79 0a 6d 6f 64 75 6c 65 2c 20 |pted by.module, | 00000d60 70 65 72 66 6f 72 6d 65 64 20 62 79 20 63 6c 61 |performed by cla| 00000d70 69 6d 69 6e 67 20 53 70 72 69 74 65 56 20 61 6e |iming SpriteV an| 00000d80 64 20 57 6f 72 64 56 2e 20 57 68 65 6e 20 4f 53 |d WordV. When OS| 00000d90 5f 53 70 72 69 74 65 4f 70 20 33 36 20 69 73 0a |_SpriteOp 36 is.| 00000da0 63 61 6c 6c 65 64 2c 20 74 68 65 20 73 70 72 69 |called, the spri| 00000db0 74 65 20 6e 61 6d 65 20 69 73 20 63 68 65 63 6b |te name is check| 00000dc0 65 64 20 61 67 61 69 6e 73 74 20 61 20 6c 69 73 |ed against a lis| 00000dd0 74 20 6f 66 20 6b 6e 6f 77 6e 20 70 6f 69 6e 74 |t of known point| 00000de0 65 72 20 6e 61 6d 65 73 3b 20 61 0a 6d 61 74 63 |er names; a.matc| 00000df0 68 20 72 65 73 75 6c 74 73 20 69 6e 20 74 68 65 |h results in the| 00000e00 20 73 74 61 6e 64 61 72 64 20 70 6f 69 6e 74 65 | standard pointe| 00000e10 72 20 62 65 69 6e 67 20 72 65 70 6c 61 63 65 64 |r being replaced| 00000e20 2e 0a 0a 54 68 65 20 66 69 6e 61 6c 20 70 72 6f |...The final pro| 00000e30 62 6c 65 6d 20 77 69 74 68 20 69 6d 70 6c 65 6d |blem with implem| 00000e40 65 6e 74 69 6e 67 20 74 68 65 20 77 6f 62 62 6c |enting the wobbl| 00000e50 79 20 70 6f 69 6e 74 65 72 20 69 6e 20 61 73 73 |y pointer in ass| 00000e60 65 6d 62 6c 65 72 20 69 73 20 74 68 65 0a 6c 61 |embler is the.la| 00000e70 63 6b 20 6f 66 20 66 6c 6f 61 74 69 6e 67 20 70 |ck of floating p| 00000e80 6f 69 6e 74 20 73 75 70 70 6f 72 74 2e 20 54 6f |oint support. To| 00000e90 20 6f 76 65 72 63 6f 6d 65 20 74 68 69 73 20 70 | overcome this p| 00000ea0 72 6f 62 6c 65 6d 2c 20 61 6c 6c 20 73 65 63 74 |roblem, all sect| 00000eb0 69 6f 6e 73 20 6f 66 20 74 68 65 0a 63 6f 64 65 |ions of the.code| 00000ec0 20 74 68 61 74 20 72 65 71 75 69 72 65 20 72 65 | that require re| 00000ed0 61 6c 20 6e 75 6d 62 65 72 73 20 68 61 76 65 20 |al numbers have | 00000ee0 62 65 65 6e 20 77 72 69 74 74 65 6e 20 75 73 69 |been written usi| 00000ef0 6e 67 20 66 69 78 65 64 20 70 6f 69 6e 74 20 76 |ng fixed point v| 00000f00 61 6c 75 65 73 2c 0a 77 69 74 68 20 65 61 63 68 |alues,.with each| 00000f10 20 33 32 20 62 69 74 20 76 61 6c 75 65 20 73 70 | 32 bit value sp| 00000f20 6c 69 74 20 69 6e 74 6f 20 68 61 6c 66 20 77 69 |lit into half wi| 00000f30 74 68 20 31 36 20 62 69 74 73 20 6f 66 20 69 6e |th 16 bits of in| 00000f40 74 65 67 65 72 20 61 6e 64 20 31 36 20 62 69 74 |teger and 16 bit| 00000f50 73 20 6f 66 0a 66 72 61 63 74 69 6f 6e 2e 20 48 |s of.fraction. H| 00000f60 6f 77 65 76 65 72 2c 20 68 69 67 68 20 61 63 63 |owever, high acc| 00000f70 75 72 61 63 79 20 69 73 20 6e 6f 74 20 72 65 71 |uracy is not req| 00000f80 75 69 72 65 64 20 66 6f 72 20 74 68 69 73 20 61 |uired for this a| 00000f90 70 70 6c 69 63 61 74 69 6f 6e 2c 20 73 6f 0a 73 |pplication, so.s| 00000fa0 6f 6d 65 20 6f 66 20 74 68 65 20 63 61 6c 63 75 |ome of the calcu| 00000fb0 6c 61 74 69 6f 6e 73 20 68 61 76 65 20 62 65 65 |lations have bee| 00000fc0 6e 20 69 6d 70 6c 65 6d 65 6e 74 65 64 20 66 6f |n implemented fo| 00000fd0 72 20 73 70 65 65 64 20 61 6e 64 20 73 69 6d 70 |r speed and simp| 00000fe0 6c 69 63 69 74 6c 79 0a 72 61 74 68 65 72 20 74 |licitly.rather t| 00000ff0 68 61 6e 20 66 6f 72 20 70 72 65 63 69 73 69 6f |han for precisio| 00001000 6e 2e 0a |n..| 00001003