+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + SilkMouse version 4.2 + + for Atari ST/STe/TT/Falcon + + FREEWARE, Copyright (c) 1997 by Mark Slagell + +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Purpose ======= SilkMouse is the definitive mouse accelerator for Atari TOS computers. It may be used by itself or in conjunction with Codehead Software's popular Warp 9 package, replacing its mouse accelerator. It is also fully compatible with serial mouse drivers. The acceleration algorithm has been entirely reconceived since the release three years ago of version 3.2. More sophisticated mathematics have been employed to help you control the mouse pointer with less effort. A few options are included that you may find handy, but can be disabled where they are not needed. These include a simple screen saver, a hold-screen switch for terminating applications, and a patch preventing a specific glitch that some Atari keyboards are prone to. The options are detailed later in this document. The resident part of SilkMouse is written entirely in assembly language for speed and compactness. Installation ============ Delete or otherwise disable any mouse accelerator currently installed on your system, including any previous version of SilkMouse. If you are using a serial mouse or some other driver with acceleration that can't be entirely disabled, adjust it down (for MOUSE.PRG, set "speedup" to around 15). Run SILKMOUS.PRG from the desktop, or copy it to your AUTO folder and reboot. (Any conflicts can usually be cured by ordering your AUTO folder so SILKMOUS.PRG runs later. To date I know of only one rather obscure combination like that: if you use Geneva, SilkMouse, and Word Perfect, GENEVA.PRG needs to run before SILKMOUS.PRG in the AUTO folder.) When first installed, SilkMouse is inactive until you set preferences using SMCP.APP, the SilkMouse Control Panel. It can be run from the desktop or renamed as SMCP.ACC and installed as an accessory. After you have saved preferences, SILKMOUS.PRG finds that information by itself the next time it installs. You do not need to leave SMCP installed to use SilkMouse. A CPX version of SMCP is not currently planned for this version. Some characteristics of the SilkMouse accelerator ================================================= 1: extremely smooth response, without gears or plateaus 2: smaller physical motions needed to reach any point on screen 3: easy single-pixel control 4: fine adjustability of response curve 5: resolution independence, no adjusting for different aspect ratios 6: angle of motion faithfully reproduced 7: predictable operation of Alt-arrow keys. SilkMouse is uniquely able to overcome the resolution limitations of both the screen and the mouse device. Regardless of screen mode, coordinates are maintained internally on a virtual 1-micron grid, and adjustments are continuously made from accumulated rounding errors. Physical mouse speed is determined not from the raw X and Y components reported by the IKBD processor, but from the magnitude of the resulting vector (the Pythagorean theorem is used, with fixed-point binary values taken from a table to avoid having to compute square roots on the fly), and the elapsed time between mouse motion reports. This extra information allows discrimination between much lower physical speeds than is possible with a conventional accelerator, effectively increasing the resolution of the mouse and allowing you to expend less energy to get the results you want. Accelerator configuration ========================= To adjust mouse response, click on "Mouse accelerator: Config" in the SMCP accessory. You will see five slider-based adjustments and two switches. To understand the first four adjustments, think of a response curve plotted with physical mouse speed along the X axis and acceleration factor along the Y axis. SMCP draws the curve to fit three points. Think of these as (x0,y0), (x1,y1), and (x2,y2). Of those sliders adjusting acceleration, Min, Avg and Max correspond respectively to y0, y1 and y2. These should be adjusted according to work habits and personal taste. Coordinate x0 is fixed at theoretical speed zero, and x2 at a speed Nolan Ryan, hurling the mouse across a desktop, could not have achieved in his prime. The sensitivity adjustment corresponds to x1, though its slider is calibrated inversely to the graph axis so the description makes better intuitive sense. I suggest setting this to reflect physical considerations; for instance, you might reduce it if using a high-resolution mouse, or increase it if you have small hands. The sliders described above have been calibrated for a range of 0 to 100. I suggest starting them around the middle and working outward until you find your best response curve. The fifth adjustment, "Drag weight", causes acceleration to automatically decrease when a mouse button is being pressed. This both enhances control of free-hand drawing and gives a sense of weight when something is being dragged, as the description suggests. From a range of 0 to 12, the default setting is 1. When set to zero, the mouse button state has no affect on acceleration. Contour type I maintains strict resolution independence at all speeds; in some circumstances that means actually decelerating, not accelerating, the pointer response. For those who find that behavior disconcerting, contour type II blends in raw pulse data at the low end of the response curve, preventing deceleration and making the "Min accel" adjustment less critical. Choose the contour type that seems to give you better single-pixel control. Leave "VDI pixel dimensions" on unless you experience odd behavior. Atari maintains documented but seldom-used system variables for the height and width of a pixel. If you have installed something that changes screen modes without updating those variables (SEBRA is guilty of this oversight), turn this switch off and SilkMouse will calculate pixel dimensions based on other information. (My personal settings when using a standard Atari mouse are: Min accel: 72 Avg accel: 62 Max accel: 50 Sensitivity: 50 Drag weight: 2 Contour type I VDI pixel dimensions ON.) The screen saver ================ Included with SilkMouse is an optional screen saver whose purpose is not to entertain or amuse, but to extend the useful life of your monitor without getting in the way of your work. When a color monitor is in use, the saver works as follows: after a given period where no input from the mouse or keyboard is received, the display inverts and goes to half intensity (black becomes gray, white becomes black, bright yellow becomes dark blue, etc.). It remains in this state for a time that is some multiple of the initial delay, then goes blank. Moving the mouse or pressing a key at any time returns the display to normal. (As of version 4.1, the screen saver correctly recognizes activity of a serial mouse.) The invert/dim algorithm is good for your monitor, because it assures even use of all areas of the screen to prevent phosphor burn-in; it is also convenient, since the information in the display remains viewable for a while even after protection begins. When a monochrome monitor is in use, a screenful of memory may optionally be reserved during bootup. (Note: turning the "mono reserve" switch on or off has no effect until after you save preferences and reboot.) Having the extra memory available allows the saver to mimic its color behavior when the hardware does not support palette manipulation. When changing states from normal to dimmed, the screen is inverted if the background was white, or every other pixel is turned off if the background was black. In the former case, all screen activity remains continuously viewable. In the latter, the display updates every five seconds. In both cases the display blanks completely after a while. If you tell the saver not to reserve the extra memory, it inverts (white->black->white) periodically without going blank. When the "Watch modem" switch is set to "Port", the saver monitors the MFP (ST) serial port and resets whenever it sees activity there, as if a key had been pressed. When set to "Buffer", it watches the serial input buffer instead. Experiment for best results depending on what ports and programs you use. The "Init delay" slider sets how long, in minutes, the saver waits before dimming the display. "Dim factor" sets how long it stays in the dimmed state before going blank, and is multiplied by the delay value. For example, if you set initial delay to 10 and dim factor to 5, the screen will go dim after 10 minutes of no input, and blank out 50 minutes later. New as of version 4.2 is a saver exemption feature. Despite my best efforts in designing a trouble-free screen saver, there will always be some applications that can't coexist with it. These typically intercept the vectors that serve as display-restoring triggers, or do direct hardware manipulation on the screen base address and/or color registers. Such programs may be exempted from saver action by clicking the "Add..." button in the "Exempt applications" box. Use the file selector to indicate the program. SilkMouse will suppress its saver activity whenever that program is running, even if it is running in the background on a multitasking system. SMCP maintains a list of up to twenty exempt programs. It checks to make sure new additions to the list are actually executable files, but does not check for duplicates. If you ever need to do this manually, browse the list with the "Prev" and "Next" buttons, clicking "Remove" when necessary. Technical note: the exemption feature relies on the "p_run" system variable to find basepages of active GEMDOS processes. Since a program's filename is not found in the basepage, the lengths of its text, data, and bss segments are used as a fingerprint. A program not in the exemption list may prevent the saver from engaging if its file length and all segment lengths exactly match something in the list, but this is extremely unlikely to occur, and harmless if it does. Function key debounce ===================== When a shift key is held down and two other adjacent keys are pressed together, many Atari keyboards tend to erroneously report a shift-F1 or shift-F3, in addition to one or both of the keys actually pressed. If you've never noticed, it may be that you are an exceptionally careful typist, or none of your software does anything interesting when you press shift-F1 or shift-F3 anyway. In any case, the debounce feature effectively cures the glitch. R-hold screen after prg ======================= This feature is intended for reading the output of a program run from the desktop when it was designed to run from a command line shell. You know the feeling. You run an unfamiliar program, it prints a screen full of something which immediately disappears, and you're back at the desktop. You wonder if there's a command line option you can send to make the program wait for a keypress before exiting, but of course that's part of the information you aren't fast enough to read. So you run it over and over, vainly trying to freeze the screen by hitting control-S or alt-Help at just the right millisecond. If the R-hold option of SilkMouse is active, each application checks the status of the right mouse button when terminating. If it is not being pressed, the application exits normally; otherwise the screen remains visible in whatever state the application left it, until you release the button. You can also lock the screen and free your hands by clicking the left button while holding the right one down. Then you can release both buttons, and the system will stay frozen until you click again with the right button. Parting words ============= SilkMouse may be freely distributed as long as it is unaltered and accompanied by this text file. Up to version 3.0, SilkMouse was a shareware product with a $10 price tag. It was sufficiently popular to pay for my first ST system. Since then, a dwindling Atari market and my own improved financial circumstances persuaded me to make SilkMouse freeware; I still accept voluntary payments, but everyone is free from obligation. Anyone who still wishes to contribute may do so with a check payable to Mark Slagell (not SilkWare--I've closed that account) and mailed to the address below. Bug reports, suggestions, and other comments are all welcome. Mark Slagell (sluggo@ames.net) 3716 Ross Road Ames, IA 50014 USA