MDFS::Info.Comp.BBC.Mouse Search

BBC Mice and Mouse Drivers

Mice
suitable for BBCs [61K]A quadrature mouse (such as an Archimedes mouse) can be plugged into the BBC user port. It should be wired up as shown below. You can simply put a 20pin IDE head on the end of the mouse cable, but it is useful to put a 9-pin D socket (female, no pins) on mice using the Master Compact pinouts.
  +5v  1 |  2  CB1 - Xaxis                   /
       3 |  4  CB2 - Yaxis                 / 1| Xdir
   0v  5 |  6  D0  - Xdir            Left |6  |
       7 |  8  D1                         |  2| Right
       9 | 10  D2  - YDir             +5v |7  |
      11 | 12  D3                         |  3| Middle
      13 | 14  D4                      0v |8  |
      15 | 16  D5  - Left                 |  4| Ydir
      17 | 18  D6  - Middle         Yaxis |9  |
      19 | 20  D7  - Right                 \ 5| Xaxis
     USER PORT                               \
                                    COMPACT MOUSE PORT
Mouse
adapter leads [57K]A short adapter with a 20-pin IDC header and a 9-pin D plug (male, pins) makes the user port accessible for plugging in the mouse and lets mice be interchangeable between Compacts and non-Compacts.

Mouse Driver

Mouse.zip contains a *MOUSE command which provides a mouse driver. DFS224+Mse and DFS229+Mse are DFS ROM images for the Master and Master Compact that include a mouse driver in the spare ROM space using ROMMouse.src.

Once the mouse driver has been turned on with *MOUSE ON, then the mouse position and button state can be read using OSBYTE or OSWORD. The OSBYTE routines are accessible using the INKEY and ADVAL calls.

ADVAL(7) Osbyte &80,&07,&00 Mouse X position
ADVAL(8) Osbyte &80,&08,&00 Mouse Y position
ADVAL(9) Osbyte &80,&09,&00 Mouse buttons %rml, set if pressed
INKEY-10 Osbyte &81,&F6,&FF Mouse left button
INKEY-11 Osbyte &82,&F5,&FF Mouse middle button
INKEY-12 Osbyte &82,&F4,&FF Mouse right button
The mouse driver also responds to the AMX OSWORD 64 call. On exit:

XY+0, XY+1Mouse X position
XY+2, XY+3Mouse Y position
XY+4 Text X position
XY+5 Text Y position
XY+6 Mouse buttons b7=R, b6=M, b5=L, clear if button pressed

MouseTest is a short BASIC program that tests the mouse calls and displays their return values.

Mouse programming

MouseLib is a BASIC library providing a handful of mouse interface routines:

DEFPROCMouse_Initinitialises mouse variables mx%,my%,bl%,bm% and br%.
DEFPROCMouse_UntilActionwaits until the mouse changes state, by being moved or a button being pressed, or until a keyboard key is pressed.
DEFPROCMouse_Readreads the mouse state into mx%,my%,bl%,bm% and br%, being the mouse x and y position, and the button left, middle and right state.
DEFPROCPointer_Initinitialises a simple pointer.
DEFPROCPointer_Drawdraws a pointer at the current graphics position.
DEFPROCPointer_UntilActionwaits until the mouse buttons change state or a keyboard key is pressed, drawing a pointer at the mouse position while waiting.

using the Mouse library a main program just needs to start by calling PROCMouse_Init and use PROCPointer_UntilAction in the main loop.


Hosted by Force9 Internet - Domain registration by EasySpace - Authored by J.G.Harston
Last update: 09-Jan-2006