M50753 PMUs

There are 3 major versions of this PMU. The first was found in the Portable and PowerBook 100. It's different from the later 2 by having a different response to the 0x78 “Read Interrupt Flag” command - the later versions use a more streamlined approach that wastes less 680×0 time fetching ADB data from the PMU. The second was the 140/170 (and probably the 145/145B?). This introduced the streamlined 0x78 command. The third, in the 160/180/180c, is largely similar but supports a few more commands and has larger code as a result. All known PMU versions fit into 6K (6144 bytes) of code with plenty of room to spare, however.

A datasheet for the M50753 hasn't been found, but you can get one for the almost-identical M50754 here. For information on the opcodes of the M507xx series, check out Neil Parker's deep dive into the similar M50740/50741 used in the Apple IIgs for a similar role.

The IDA Pro universal disassembler supports disassembly of these processors under the processor type “Mitsubishi 740 series (8-bit)”.

680x0 side hookups

As usual for this vintage of Macintosh, this is done through a VIA. There is an 8-bit bidrectional data bus and 2 handshake lines, one to the VIA from the PMU (PMAck), and one from the PMU to the VIA (PMReq). The Portable and PowerBook 100 only have 1 VIA, and so the PMU data bus is VIA port A while PMReq and PMAck are bits 1 and 0 of port B. On all later PowerBooks, VIA2 port A is the data bus while PMReq and PMAck are VIA2 port B bits 2 and 1.

I/O port assignments

The M50753 has a bunch of I/O ports. Here's what we've currently worked out on how they're used.

Port P2 All 8 bits of this port are a bidirectional data bus to the VIA.

Port P3

Bit Function
7 PMReq handshake flag from the VIA
6 PMAck handshake flag to the VIA
5
4
3 Audio subsystem power control
2 Power switch input: 0 = on, 1 = off
1 Reset line output to 680×0

Port P4

Bit Function
3
2 System power control: 0 = off, 1 = on
1 ADB in
0 ADB out

(P4 only has 4 bits)

A/D assignments

The M50753 has an analog-to-digital converter which is used to read the battery voltage, among other things.