Jump to content

Lisa "mouse missing" notification


Recommended Posts

When the Lisa (2/10, if relevant) boots and shows a 'mouse error' (the mouse with ? icon), what does that actually mean?

 

For context: I recently built a joystick controller for my Lisa because there isn't room for a mouse by it.  But it makes the Lisa come up with a 'missing mouse' icon at startup, even though it actually works fine when the pointer appears.  I'm currently assuming that this is because for the first second or so the pins on the mouse port are in an indeterminate state and probably look like nothing is plugged in.  But I want to check that this doesn't mean "you're doing something that will cause issues later" (e.g. drawing too much power from the 5v line, or something).

 

Here's info about the controller:

 

 

 

Edited by cheesestraws
Link to post
Share on other sites
42 minutes ago, fri0701 said:

You may find it useful to look at the boot ROM source on page 70

So as far as I can see, that just interrogates the COPS to see whether it thinks it has a mouse connected or not.  I've got the COP421 datasheet here but it looks like it's just a repurposable microcontroller so that's no use at all.  Do you know if the listing for what's inside the Lisa's COP421 is anywhere?

 

(that said, I'm reasonably confident reading that that that's a "no mouse is connected" rather than "some part of my I/O board is about to catch fire", which is what I was aiming for)

Link to post
Share on other sites

The hardware reference manual is a good resource in general. A later version can be found at Ray Arachelian's site.

 

The COP421 firmware was cunningly extracted from the chip by Patrick Schaefer a few years ago. You can find it on Bitsavers, but although the firmware has been disassembled, there's no commentary. You can read more about how Patrick did the extraction on his website -- it's pretty impressive!

Link to post
Share on other sites
2 hours ago, fri0701 said:

Lisa Hardware Reference Manual, sections 6.6.2 - 6.6.3

 

1 hour ago, stepleton said:

The hardware reference manual is a good resource in general. A later version can be found at Ray Arachelian's site.

 

Thankyou both for these links.  Having read the relevant sections, I'm reasonably confident now that this is just my pseudo-mouse not looking like a real mouse the moment after it gets powered up, rather than me doing anything that will actually cause damage to the machine (which was my concern).  I could go and stare at the COPS source, but since it isn't commented and I don't know the instruction set at all, all it would permit me to do is stroke my beard and feel like a real engineer ;-) which, while pleasant, is not entirely useful.

Link to post
Share on other sites

The Lisa's (and some Apple ]['s with a mouse card - but not ADB ones!, Mac 128, 512, 512KE) rodent is digital. Signals are sent via an optical encoder along the two X and two Y pins. You're not going to be able to use an analog mouse.

 

You'll need to send a train of pulses in the right axis bits for it to work. i.e. there are two bits for x and two bits for y.

 

If you really want to use an analog joystick, you could probably build a circuit using discrete logic such as a pair of bidirectional shift registers, with a comparator and timer that sends the pulses in the right way. That is you'll need to sense if the analog joystick is centered and then send nothing. Might be easier to do with a microcontroller though.

 

If it's a little bit to the left, slowly send a train of pulses across X and X2 indicating left movement. If it's a lot to the left send the same pulses more rapidly. If it's all the way to the left, send them as fast as possible, etc.

 

Do the same with right movement, but reverse the direction of the pulse train (see the links below on wikipedia for the details and the nifty animation.)

 

The comparator's voltage difference can be used to control the timer so it provides a speed control, but the direction + or - needs to control the pattern of bits shifted either to the left or right, and ofc, you'll need some way to initialize the shift registers with the right initial pattern.

 

You might be able to skip the shift registers if you can generate the signals from discrete logic, but note that the X1 and X2 overlap a bit, so it's not straightforward and will take a little bit of thinking. Likely you'll need a decade counter at least for each axis and some way to encode the output into the two X1 and X2 bits (and repeat again for the Y axis).

 

 

Additionally the Lisa's hardware supports upto 3 mouse buttons, but one is being used as a sense switch to tell the Lisa when the mouse is inserted. I believe that sense pin is grounded inside the mouse. This is likely what's causing the missing mouse icon.

 

The other button is not connected (the pin is missing I think in the db9), and the third one is the only one used.

 

see:

https://en.wikipedia.org/wiki/File:Quadrature_Diagram.svg

https://en.wikipedia.org/wiki/File:Incremental_directional_encoder.gif

on this page for details: https://en.wikipedia.org/wiki/Incremental_encoder

 

 

Edited by sunder
clarity
Link to post
Share on other sites
8 minutes ago, sunder said:

You'll need to send a train of pulses in the right axis bits for it to work

This is exactly what I did :) the controller exists and works (thread linked in the first post), it's just that the Lisa displays 'mouse not found' on boot.  By the time the desktop appears, it's perfectly happy with the pseudo-mouse.  My current working theory is this is because the microcontroller has a bootloader that delays the initialisation of the GPIO pins for a couple of seconds when it is first powered on, and so when the Lisa looks to see what's coming in its mouse port, it looks like nothing is connected.  I was mostly wanting a sanity check that this was actually what this message meant and not 'help you're going to blow up my mouse circuitry'. :-)

 

Here's a video of the thing working.  It's actually really nice once you get used to it.

 

Link to post
Share on other sites

oh hey, so I wonder if it's not that grounded SW signal that's causing the missing mouse, maybe you can negate one of the outputs of the X line or the Y line using a NOT gate (and change code accordingly) - maybe the COP421 doesn't like that both X1 and X2 and Y1 and Y2 are all 0V at the same time, so maybe negating some of the signals would help let it know that there is indeed a mouse attached?

 

I'm guessing the GPIOs of that Arduino start up at 0V and until they're switched to output mode and values are sent to them, they all stay low, and they look like there's no mouse attached to the COP421?

Edited by sunder
reasoning
Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...