Jump to content
LaPorta

Very perplexing SE/30 MB ADB issue

Recommended Posts

Ok, so I finally got my SE/30 spare motherboard functioning. All caps replaced, SCSI chip swapped out so SCSI works again. ADB worked just fine prior. I hooked her all up after re-capping the AB. Must have installed C25 in backwards, because it blew up spectacularly. I replaced it, machine turns on just fine now. However: the mouse will not move in any direction. Clicking works just fine. I attached an ADB keyboard and the keyboard works just fine; I can navigate, open simple text, type all characters...no problem. This is with either ADB port. I swapped in my other motherboard, and the mouse works fine without issue, so I know the mouse is just fine. I've been tracking down the circuitry traces, and can find no issue. I would think that if the ADB chip was bad, nothing would work at all.

 

Any insight into this weird one at all? I cannot find C25 on the schematics for the analog board, so I do not know if it somehow directly/indirectly has anything to do with the ADB circuit. Everything else works fine without issue (SCSI, floppy, etc).

Edited by LaPorta

Share this post


Link to post
Share on other sites

Sounds like your ADB might be fine. Random thoughts- Cursor movement is handled at VBL interrupt time. Is it possible when your cap blew something got damaged between your video circuit and the VIAs?

Share this post


Link to post
Share on other sites

Can you explain a little more, crutch? I'll admit this is over my head; I need some plain language. I need to figure out more about cursor movement; I tried to find information on how the movement functions, to no avail. Where exactly would you start looking for some sort of blown or open component?

 

I also found C25 on the SE schematics (same deal as SE/30), and it appears to be connected to the +12V source and then to ground. Does this somehow smooth out the current coming in or something?

Edited by LaPorta

Share this post


Link to post
Share on other sites

Legacy Macs update the cursor position and redraw the cursor during the vertical blanking (VBL) interrupt when the CRT beam does a vertical retrace back to the top every 1/60 second. This literally interrupts the 68k CPU, which is why you can almost always move the mouse pointer even if software gets stuck or crashes (the exception is cursor movement slows during floppy disk access, which disables interrupts). 
 

On the SE/30 IIRC the mobo learns about VBL interrupts when the video circuitry informs VIA2 which informs the 68030 (see Guide to the Macintosh Family Hardware, look up vertical blanking interrupts in the index). I was surmising that if a trace got wonky near your VIA, you could lose cursor movement. It’s just a wild ass guess though, but I’m reaching because I agree that an ADB fault that only affects cursor movement but not clicking or key presses sounds unlikely.

 

I’m more of a software guy so I’m guessing others will have better ideas where to look for your issue on the board though.  

Edited by Crutch

Share this post


Link to post
Share on other sites

Certainly not an expert in this, but reading through the wikipedia page on ADB, specifically the 'design' section may be helpful. 

 

https://en.wikipedia.org/wiki/Apple_Desktop_Bus#Apple_Desktop_Bus

 

This especially caught my attention:

 

"For instance, if the mouse is known to be at address $D, the computer will periodically send out a 1-byte message on the bus that looks something like:

1101 11 00

This says that device $D (1101) should talk (11) and return the contents of register zero (00). To a mouse this means "tell me the latest position changes". Registers can contain between two and eight bytes. Register zero is generally the primary communications channel. Registers one and two are undefined, and are generally intended to allow 3rd party developers to store configuration information. Register three always contains device identification information."

Share this post


Link to post
Share on other sites

If the computer otherwise seems to run normally, I would suspect the polling is occurring properly, but the signal isn't reaching the port for some reason?

 

I've found while using an old moniswitch with a loose switch, that occasionally some contact in the ADB will become loose and I can only use the mouse, not the keyboard. (though the power button still works.) Can't remember if clicking worked though...

Edited by jeremywork

Share this post


Link to post
Share on other sites

I suppose the question is (and I don't know the answer) what is needed for the mouse tracking to function and not needed for simple keystrokes? Is there a dedicated data pathway that would need to be active between the various ICs for mouse tracking that is special just for that?

Share this post


Link to post
Share on other sites

Well, I just took the ultimate plunge: I emailed Woz on his site regarding the issue. I figured that if he responds, the designer might have an idea!

Share this post


Link to post
Share on other sites

Another supposition: is there further hardware that turns the mouse signals into X, Y coordinates, or that which processes mouse movement in general that could have been damaged?

Share this post


Link to post
Share on other sites

In order for the mouse cursor to update the vertical blanking interrupt has to operate correctly.

 

On 2/9/2020 at 6:07 AM, Crutch said:

On the SE/30 IIRC the mobo learns about VBL interrupts when the video circuitry informs VIA2 which informs the 68030

Kind of.

VIA1 turns on /VSYNCEN (VIA1 p17 - UI6 p5) to enable the vertical blanking interrupt.

This is handled by UI6 which just takes the /VSYNC signal (present at pin 4) and outputs it to /IRQ6 (on pin 13) whenever /VSYNCEN is active.

/IRQ6 again is an input on VIA2 (pin 7). VIA2 then outputs that same signal again on pin 18 this time called /VBLK which gets fed into VIA1 pin 44.

 

On 2/9/2020 at 6:27 PM, LaPorta said:

is there further hardware that turns the mouse signals into X, Y coordinates

That's all happening between the ADB controller and VIA1 using the two ADB state lines and the interrupt line. You did check all those already I think if you traced everything going in and coming out of the ADB controller.

 

Next things to do: trace the whole way the /VSYNC signal takes to become /VBLK.

-what's the state of /VSYNCEN? (check VIA1 pin 17 and UI6 pin 5) - should be low

-if /VSYNCEN is active check if 60Hz is present at: UI6 pin 4, UI6 pin 13, VIA2 pin 7, VIA2 pin 18 and VIA1 pin 44 (in that order)

 

Edited by Bolle

Share this post


Link to post
Share on other sites

Ok so tonight I’ll fire it up and check those pin traces with the scope and see what shows up. I hope it will be something blatantly hitting me in the face. I appreciate it, and will report back.

Share this post


Link to post
Share on other sites

Received a rather odd response from Woz:

 

Sorry, I didn’t work on the ADB and have no ideas to help you.”

 

So, one of three things:

 

1: He is unwilling to help (I figure he would just say so, but who knows).

 

2: All the history available is incorrect and he didn’t design the thing.

 

3: Some unnamed person is answering his personal emails and screening for this sort of thing.

 

Not sure if there is a fourth option, but I’ll just have to work with Bolle’s suggestions here.

 

On a more positive note, I got my other SE/30 motherboard, AB, and PSU recapped and the Mac Con installed, floppy drive cleaned and lubed, and the machine is back to functioning normally. The MB for this thread will work as a spare.

Edited by LaPorta

Share this post


Link to post
Share on other sites
6 hours ago, LaPorta said:

Received a rather odd response from Woz:

 

Sorry, I didn’t work on the ADB and have no ideas to help you.”

 

So, one of three things:

 

1: He is unwilling to help (I figure he would just say so, but who knows).

 

2: All the history available is incorrect and he didn’t design the thing.

 

He really doesn't know.

I wouldn't ask Woz any Macintosh questions at all, or at least he wouldn't be toward the top of my list to ask.

Edited by Dog Cow

Share this post


Link to post
Share on other sites

Well, the implementation of ADB in the IIgs, on a hardware level, is probably quite different from any implementation on the Mac, so he is probably telling the truth when he says he doesn't know, at least with regard to the Mac, as I'm pretty sure he had virtually nothing to do with Mac development (especially in 1985-1986, when the IIgs was being designed), except for maybe the earliest stages when it was nothing more than a prototype peripheral card running in an Apple II , and even then only marginally so.

 

At any rate, Bolle's advice makes sense.

 

c

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×