| BBC Mice and Mouse Drivers |
| MDFS::Info.Comp.BBC.Mouse | Search |
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 standard Amiga pinouts, or Master Compact pinouts. I prefer
to use Amiga pinouts as mice are easier to come by already wired up with an
Amiga plug on the end. Note that Atari mice have exactly the same pinout as
the Amiga mouse, except that pins 1 and 4 are swapped with each other. Some
mice come with a switch to do this.
+5v 1 | 2 CB1 - Xaxis / | / |
3 | 4 CB2 - Yaxis / 1| Yaxis / 1| Xdir
0v 5 | 6 D0 - Xdir Left |6 | Left |6 |
7 | 8 D1 | 2| Xaxis | 2| Right
9 | 10 D2 - YDir +5v |7 | +5v |7 |
11 | 12 D3 | 3| Ydir | 3| Middle
13 | 14 D4 0v |8 | 0v |8 |
15 | 16 D5 - Left | 4| Xdir | 4| Ydir
17 | 18 D6 - Middle Right |9 | Yaxis |9 |
19 | 20 D7 - Right \ 5| Middle \ 5| Xaxis
USER PORT \ | \ |
AMIGA MOUSE PORT COMPACT MOUSE PORT
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 command which provides a mouse driver, and a
relocatable sideways ROM
that provides a *MOUSE command.
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+1 | Mouse X position |
| XY+2, XY+3 | Mouse 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.
DEFPROCMouse_Init
| initialises mouse variables mx%,my%,bl%,bm% and br%. |
DEFPROCMouse_UntilAction
| waits until the mouse changes state, by being moved or a button being pressed, or until a keyboard key is pressed. |
DEFPROCMouse_Read | reads 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_Init
| initialises a simple pointer. |
DEFPROCPointer_Draw | draws a pointer at the current graphics position. |
DEFPROCPointer_UntilAction
| waits 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
- Authored by J.G.Harston