Short: Ultimate Amiga PS/2 WheelMouseController Author: rdc@cyberlan.mtu-net.ru Uploader: rdc@cyberlan.mtu-net.ru Version: 1.5 Type: hard/hack Amiga PS/2 Wheel Mouse Controller - new version: - detailed hypertext manual in HTML, in english and russian languages. Latest online-version of this manual you can see at my page: http://rdc.euro.ru/ps2m - corrected yet another bug in PCB :) (middle mouse button was wrong connected and didn't work) New PCB is common for all hardware versions - added 5-button Genius NetScroll Optical protocol support - added horizontal scrolling by side buttons feature: BUTTONSCROLL=BS/S - firmware bugfixes: - found sulution for conflict with Scala - solved problem with Microsoft Wheel Mouse Optical (thanks to Jürgen Lachmann for bug-report) And even you can send me your favourite mouse - and I will add support of it to next version of my controller. Advantages of this controller: - full open source under GPL (General Public License, text of license included) - linear movement interpolation: mouse movements will be ideal smooth on any screen frame rates - MMB (Middle Mouse Button) support - System-friendly fourth mouse button support - Fifth mouse button support - now on Amiga too! - detection of Amiga mouse counters overrun (127 pixels per frame for DblPAL 48Hz) - full Plug'n'Play support: hotswap - you can change mouse «on the fly» - mouse hangs detection: controller checks mouse every 2 seconds and will reset it if mouse doesn't reply - support of popular Microsoft Intellimouse wheel protocol (these mice work with wheel) - support of Microsoft Intellimouse Explorer protocol (for example, A4Tech WOP-35 - all 5 buttons work) - support of Genius NetScroll Optical (this mouse works with wheel and all 5 buttons) - fully compatible with Amiga NewMouse wheel standard - fully compatible with WheelBusMouse software - you can simultaneously use mouse & 2 joysticks - no «calibration» requirements - wheel works in any screen mode - horizontal scrolling even on one-wheel mouse - very low CPU load in wheel mode - most advanced Amiga PS/2 mouse controller :-) More detailed info: - detection of Amiga mouse counters overrun: Amiga has only one-byte signed counters for mouse, and AmigaOS checks them only one time per vblank. This means that mouse may move only 127*VBlankFreq pixels per second (6096 pixels per second for default DblPAL). If this value was overran, AmigaOS can't detect true movement of mouse and pointer will disorderly jump. For correct this, my PS/2 controller limits movement to maximum 6000 pixels per second. If mouse moves faster, movement will be remembered and executed at 6000 pixels per second. Slower movements will be always executed at real speed. - linear movement interpolation: As we know, RS-232C (aka «COM») mice at PeeCee are extremely poor quality - mouse pointer with them doesn't move, it jumps. It is because generic 3-button RS-232C mouse reports about movement only 25 times per second. PS/2 mice work better - all of them can report about state 80 times per second, and most of them (excluding 5-button mice) can report 200 times per second. But it is not an ideal because refresh rate of mouse (for example, 80fps of Genius NetScroll Optical) interferes with similar refresh rate (for example, 72Hz of Super72). For correct this, my controller moves «virtual Amiga mouse» smoothly. If user moves PS/2 mouse at 500 pixels per second, Amiga will get from my PS/2 controller true 500 counts per second, with true 2-milliseconds intervals - you can get oscilliscope and check it. Most another PeeCee-mouse-controllers don't have similar feature, and move «virtual Amiga mouse» by «count packets» after every byte packet from PeeCee-mouse. For example, if user moves RS-232C mouse at 500 pixels per second, and mouse sends 25 reports per second, Amiga will get 25 packets of 20 fast (some microsecond between counts) counts per second, with approx.40 milliseconds interval between packets. If user has 75Hz screen refresh rate, mouse pointer will update only every three vblank, and jumps of pointer (in comparison with ideally smooth Amiga mouse) will only incline user to suicide using mouse cord :-) My PS/2 controller is free from this bug. Theoretically I can do even smooth RS-232C mouse controller, but is it nonsense because of RS-232C mice death. Modern optical mice already don't have RS-232C versions, but there is no modern mice without PS/2 version. - mouse hangs detection: Some Chinese mice are very cheap and very unstable. Integrated to mouse controller can hang and even don't response to reset command. These mice on PeeCee require reconnect (and sometimes reboot because of not-PnP initial nature of PeeCee). My controller in case of 2-seconds silence (user doesn't touch mouse) asks mouse about state. If mouse doesn't respond, controller will automatically take away power souce for some time. Take care: hardware reset does not work in 5-button version because of lack of PIC pins - you can select between 5-buttons version with quality mice, and 4-buttons version with bad mice. But anyway, you can reset mouse by reconnect it «on the fly». It is not a PeeCee :) - full Plug'n'Play support: Because of previous feature, controller will detect mouse replacement. Unlike PeeCee, wheel function (or it's absence) will be detected automatically. You don't need to replace drivers if you change mouse «on the fly» :) - support of popular Microsoft Intellimouse/Explorer wheel protocol Microsoft (for this paragraph it is a company name, not an abuse) instead of it's normal practice to hide all details, published protocol of wheel mouse. It has two «layers»: protocol of wheel mouse, and protocol of 5-button wheel mouse. There are many Microsoft Intellimouse compatible devices, and all of them will work with wheel at my controller. Some other mice are Intellimouse Explorer (5 buttons) compatible. For example, it is A4Tech WOP-35. That mice will work with all 5 buttons. If you use 4-buttons version of controller, both additional buttons will work as one. - support of Genius NetScroll Optical protocol Another mice, like of Genius NetScroll Optical, can be compatible with Intellimouse, but incompatible with Intellimouse Explorer. Genius NetScroll supports both Intellimouse and own protocols. In Intellimouse mode it works as 3-button wheeled mouse, and in own Genius-mode it works as 5-button wheeled mouse. From version 1.5, ps2m supports both 5-button protocols - Genius NetScroll and MS Intellimouse Explorer. Yet some another mice, like A4Tech WOP-35, can be Intellimouse (and even Explorer) compatible, but have additional features like two wheels, feedback (Logitech iFeel), etc. Some mice can have even different ideology - like Maxxtro with «joystick» between buttons. Additional features of these mice can't be used with current version of ps2m, but things have characteristic to change :-) If you have unsupported mice - you can send me it (or money, enough for buy it here) by mail, and I will do support for it. - Fifth mouse button support - now on Amiga too! Up to this time there was only maximum 4-button mice support on Amiga. My controller breaks this barrier - let's be more buttons, good and different! :) - horizontal scrolling even on one-wheel mouse You can switch vertical scrolling to horizontal by qualifier pressing - like MMB in Mroocheck, but you can select any qualifier key or joystick/mouse button. For example - I use left ALT. Additional 4th and 5th mouse buttons may be used for this too. - fully compatible with Amiga NewMouse wheel standard Amiga NewMouse standard describes an internal AmigaOS protocol for wheel mice. There are some NewMouse-compatible sofware, MUIWheel and Directory Opus Magellan for example. All this software will work with my PS/2 controller. Unfortunately, Amiga NewMouse standard describes only four buttons. But anyway, any of two additional buttons may be used as generic fourth button, and another - as qualifier for X-Y scroll temporary switching. Both buttons can be used even as a second scroller. - fully compatible with WheelBusMouse software WheelBusMouse is a software driver early released by me, that allows to use any wheel mouse without controller (but you must alter the mouse). My PS/2 controller is fully electrically compatible with WBM package. This means that you can install WBM driver and use altered wheel mouse instead of soldering PS/2 controller. Or you even can simply plug second mouse and use it as a scroller :-) - you can simultaneously use mouse & 2 joysticks You can use joystick(s) in parallel with mouse: pressing «Fire» of any joystick will disable mouse function on this port. If you press «Fire» on Joy1 (wheel function) - wheel will be reseted to initial phase (don't touch wheel during game). If you press «Fire» on Joy2 (mouse port) - mouse will be disabled at all. For protect against probable mouse movement, mouse will be enabled only after any mouse button pressing. - no «calibration» requirements My controller doesn't use analog inputs and doesn't require calibration (like Mroocheck interface from Elbox). - wheel works in any screen mode Wheel works in any screen mode - you can simultaneously use wheeled applications on PAL, DblPAL, Super72 or any other screens (unlike Mroocheck with horizontal rate setting). - very low CPU load in wheel mode This controller doesn't use any software emulated serial protocols like CD32 joypad and analog-to-digital conversions like Mroocheck. It reduces slow chipset reading/writing cycles number to absolute minimum, and this wheel solution is the fastest ever made for Amiga. - most advanced Amiga PS/2 mouse controller. Do you doubt in this yet? :) ;) =) All instructions included. Have fun! ============================= Archive contents ============================= Original Packed Ratio Date Time Name -------- ------- ----- --------- -------- ------------- 10140 3978 60.7% 09-Jul-01 02:15:30 ps2m.readme 8611 3563 58.6% 09-Jul-01 01:43:42 +adv_detail.html 10788 4918 54.4% 09-Jul-01 01:44:32 +adv_detail_ru.html 1579 808 48.8% 13-Jun-01 04:53:34 +advantages.html 1739 992 42.9% 13-Jun-01 04:53:44 +advantages_ru.html 599 347 42.0% 07-Apr-01 13:02:26 +newmouse.h 1956 1277 34.7% 02-Jul-01 14:13:52 +wbm 6685 2221 66.7% 02-Jul-01 14:13:46 +wbm.c 127 127 0.0% 05-Jun-01 18:18:16 +circle.png 4533 1960 56.7% 09-Jul-01 01:45:28 +compatibility.html 6483 3131 51.7% 09-Jul-01 01:45:46 +compatibility_ru.html 1959 1151 41.2% 08-Jul-01 23:35:38 +contact.html 2429 1602 34.0% 08-Jul-01 23:18:30 +contact_ru.html 630 409 35.0% 18-Jun-01 01:40:56 +credits.html 668 491 26.4% 18-Jun-01 01:41:08 +credits_ru.html 1016 567 44.1% 29-Jun-01 15:37:48 +future.html 1188 756 36.3% 09-Jul-01 01:59:16 +future_ru.html 5071 5002 1.3% 04-Jun-01 04:06:40 +gns_1.jpeg 6025 5875 2.4% 04-Jun-01 04:12:42 +gns_2.jpeg 18009 7015 61.0% 29-Mar-01 09:59:00 +gpl.txt 5240 1312 74.9% 09-Jul-01 02:13:34 +history.html 5464 1556 71.5% 09-Jul-01 02:14:12 +history_ru.html 11477 4645 59.5% 09-Jul-01 00:56:36 +how2do.html 7325 3554 51.4% 30-Jun-01 15:37:02 +how2do_ru.html 1198 493 58.8% 08-Jul-01 23:20:20 +index.html 1199 554 53.7% 08-Jul-01 23:20:28 +index_ru.html 644 393 38.9% 09-Jul-01 00:53:04 +license.html 673 470 30.1% 09-Jul-01 00:53:18 +license_ru.html 4124 4124 0.0% 05-Jun-01 04:43:44 +movement.png 1983 832 58.0% 04-Jul-01 11:32:38 +pcb.html 16717 16219 2.9% 04-Jul-01 01:05:34 +ps2m-comp-5but&2wheels.png 16639 16121 3.1% 04-Jul-01 01:12:22 +ps2m-comp-5button.png 16890 16386 2.9% 03-Jul-01 19:26:16 +ps2m-comp-mousepower.png 9343 9285 0.6% 04-Jul-01 00:46:32 +ps2m-solderside&ground.png 8919 8850 0.7% 03-Jul-01 19:43:04 +ps2m-solderside.png 2162 1075 50.2% 04-Jul-01 11:28:00 +pcb_ru.html 1049 458 56.3% 04-Jun-00 23:05:42 +16f876.i 4339 996 77.0% 09-Jul-00 18:00:08 +macros.i 10272 3176 69.0% 09-Jul-01 01:10:30 +ps2m.asm 2768 1166 57.8% 08-Jul-01 23:59:46 +ps2m_5button.hex 2800 1166 58.3% 09-Jul-01 00:00:18 +ps2m_mousepower.hex 5676 5676 0.0% 04-Jun-01 23:16:44 +ps2.jpeg 4297 4250 1.0% 03-Jun-01 20:05:12 +ps2m-1.jpeg 4223 4173 1.1% 03-Jun-01 20:05:12 +ps2m-2.jpeg 5933 5891 0.7% 03-Jun-01 20:05:12 +ps2m-3.jpeg 2974 2974 0.0% 03-Jul-01 14:55:44 +ps2m_2wheel.png 3050 3050 0.0% 03-Jul-01 14:56:38 +ps2m_5button.png 3109 3109 0.0% 03-Jul-01 14:57:04 +ps2m_mousepower.png 12078 11977 0.8% 08-Jul-01 21:49:44 +rdc.jpeg 689 689 0.0% 04-Jun-01 19:13:54 +scala.png 130 130 0.0% 05-Jun-01 18:23:08 +triangle.png 3484 1547 55.5% 09-Jul-01 01:46:24 +usage.html 3835 1855 51.6% 09-Jul-01 01:46:42 +usage_ru.html 4295 1803 58.0% 09-Jul-01 00:45:44 +version.html 5193 2423 53.3% 09-Jul-01 00:46:08 +version_ru.html 4383 1996 54.4% 17-Jun-01 03:31:10 +whatisit.html 5129 2634 48.6% 05-Jun-01 15:48:38 +whatisit_ru.html -------- ------- ----- --------- -------- 289938 193198 33.3% 08-Jul-101 23:49:42 57 files