I broke and fixed Macintosh Portable (backlight). Attached backlight circuit schematic that I reverse engineered

AppleTree

New Tinkerer
Apr 17, 2026
3
3
3
I bought a Macintosh Portable backlight model a while ago and I finally got around to working on it. The case and screen were in almost perfect condition. No scratches or cracks. The motherboard was in decent shape too but obviously it needed recapping.

I washed it in soapy water, rinsed it in isopropyl alcohol by dipping it in for a while and recapped it. I rebuilt the battery with a new 6V one. I saw a trace on the back that looked to be broken from capacitor leakage so I fixed that, or so I thought. This was a mistake. More on this later.

factory-trace-mod.jpg


With great hope, I assembled the machine and pressed the space bar. To my disappointment, nothing happened, nothing on the screen, no chime. I could hear a slight click in the speaker so I knew it was powering on. I checked the voltage regulator output and it was good at 5.2V. I checked the CPU clock, VCC and reset line and they were all fine, too. I checked the address and data bus and they all seem to be doing something. I read that sometimes the SWIM chip would go bad so I desoldered it but it made no difference.

So I used a cheap 8-ch logic analyser to look into what was going on. This post was very helpful in understanding what goes on at the power on time. https://tinkerdifferent.com/threads/fixing-a-macintosh-portable-what-worked-for-me.4990/

And I did find something interesting. The first four ROM access cycles looked fine (markers 0,1,2,3 in the screenshot). The CPU was accessing address 0, 2, 4, and 6 to get the stack pointer and ROM address to jump to, which is $0090002A. But after that, I noticed that the ROM OE (output enable) line would go very strange from there, a couple of very short ROM enable cycles (compared to the previous four cycles) and then no ROM access after that. I checked what was being read out of ROM in the first four ROM accesses, and they were fine.

logic-analyser.jpg


It didn't feel like the CPU GLU chip was broken, as it was enabling the ROM OE correctly in the first four ROM access cycles. SWIM chip was not there so it couldn't be that. I checked all connections between ROM, RAM, CPU and CPU GLU and they were all fine. What could it be? Then, when I was staring at the logic analyser output, it occurred to me the issue coincided with ADDR23 being set high. It was supposed to be set high, since the next ROM access is at $0090002A, and the binary format of this number has ADDR23 set to high.

On the backlight model, there is a bodge wire going from CPU's ADDR23 pin to the backlight circuit. Out of ideas at this point, I desoldered that wire to see what would happen. I didn't expect anything to be different but to my amazement, it gave a happy chime and was hung at the test pattern, which was expected since the SWIM chip was not there. I soldered back the SWIM chip and the machine booted successfully! But I couldn't understand why it worked though.

bodge-wire.jpg


I had to understand why that bodge wire was there and how the backlight circuit was designed. While there is non-backlight model schematic available, I couldn't find any schematic for the backlight circuit of the backlight model, so I started checking wiring on the board and drawing it myself.

m5126 backlight schematic 3.png


The bodge wire was going to a NAND gate input (pin 5) along with SLOT_CS(0) line from CPU GLU (explained below) going to the other input at pin 4. The trace that I "fixed" was connecting these two input lines, so either ADDR23 or SLOT_CS(0) going high would set the NAND output to low. This in turn enables 74AC244. This webpage I found helped me understand what the backlight circuit was supposed to be doing. https://macintoshportable.info/M5126-9MB/

Then I realised that the "broken" trace was in fact a factory mod, along with the bodge wire. I was not supposed to bridge that.

The backlight circuit is made up of two parts, one part for letting Mac OS figure out whether it's running on a backlight model or non-backlight model; and the other part to set the backlight brightness. The first part (74AC00 pin 4,5,& 6; and 74AC244) puts the backlight identifier on the data bus, which is read by Mac OS and it would go "Ah, I am running on a backlight model, I'd better turn on the backlight and enable backlight brightness control panel". When a read happens at $FC0200, SLOT_CS(0) line is set to high by the CPU GLU chip. It looks like the original board design was to use only SLOT_CS(0) line for putting the backlight identifier on the data bus, because it was connected to both pin 4 and 5 of the NAND gate on the board (becoming a NOT gate). Setting SLOT_CS(0) high would set the NAND output to low, and this would enable 74AC244 to put the identifier 10100101 ($A5) onto D15-D8 data lines, which is read by Mac OS. But the problem was that SLOT_CS(0) was initially designed for the never-released Slim Cards (PC Card style memory cards, from what I understand), so any access to memory expansion address range $500000 - $8FFFFF would also cause the CPU GLU chip to set SLOT_CS(0) to high; this in turn would put 10100101 on the data bus and cause a bus conflict.

Apple's solution was to put backlight identifier on the data bus only when "both SLOT_CS(0) and ADDR23 are high", which now required a cut trace and a bodge wire. That way, a read at $FC0200 works fine as before (since ADDR23 is set). Also read at memory space between $500000 and $7FFFFF would not cause backlight identifier to be put on the data bus, since ADDR23 is not set for those addresses. Only the memory access to $800000-$8FFFFF (1MB range) had to be sacrificed since ADDR23 is set to high for that. This is the reason why the backlight model's maximum memory is only 8MB, as opposed to 9MB of the non-backlight model. You can't access the last 1MB of expansion memory between $800000-$8FFFFF, as that would cause the backlight circuit to put the backlight identifier on the data bus while the expansion memory is also putting data there, causing a bus conflict.

So by bridging what I thought was a broken trace, I made the backlight identifier to be put on the data bus as soon as ADDR23 was set to high for ROM access, since SLOT_CS(0) was no longer needed to set the output of NAND gate to low; and inadvertently caused a bus conflict. When I desoldered the bodge wire, ADDR23 being set to high for ROM access was no longer seen by the backlight circuit, so the machine booted fine. That explained everything.

I undid my "broken trace fix", put back the bodge wire and everything is working fine now!

m5126-fixed.jpg
 
Last edited:

JDW

Administrator
Staff member
Founder
Sep 2, 2021
2,774
2,167
113
55
Japan
youtube.com
Fantastic info! Love your partial schematic too!

And to think... This is your FIRST POST here on TinkerDifferent! I'd like to offer you a very big WELCOME ABOARD!
 
  • Like
Reactions: phunguss

AppleTree

New Tinkerer
Apr 17, 2026
3
3
3
Thank you for the warm welcome. I enjoy watching your videos. In fact, your video on the Portable backlight model taught me how to disassemble the LCD screen case (poking a thin tool in the side holes to unlatch the top bezel), so I could recap the inverter board.
 

David Cook

Active Tinkerer
Jul 20, 2023
239
311
63
Incredible write up! It explains so much.

Based on your schematic, the digital potentiometer chip (U14G) is actually being used as a variable resistor (two terminal). So, rather than supplying a voltage that sets the brightness, it is changing resistance and the screen's circuitry is converting that into a brightness voltage and backlight enable signal. Very interesting. This provides additional evidence that the inverter is not an Apple design, as it isn't even directly connected to the Portable circuitry.
 

David Cook

Active Tinkerer
Jul 20, 2023
239
311
63
I had no idea that the "backlight id" and "backlight brightness register" were implemented in such a rudimentary manner. There are 5 unused bits in the brightness register that could be hooked up to other circuits. If someone comes up with a replacement screen at some point, it would now be reasonable to change the backlight id and supplement the driver code.
 

AppleTree

New Tinkerer
Apr 17, 2026
3
3
3
I had no idea that the "backlight id" and "backlight brightness register" were implemented in such a rudimentary manner. There are 5 unused bits in the brightness register that could be hooked up to other circuits. If someone comes up with a replacement screen at some point, it would now be reasonable to change the backlight id and supplement the driver code.
I wasn't sure where 74AC374's O0 to O4 (5 unused bits you referred to) were connected to. Traces from those pins went under 74AC374 and I couldn't be bothered desoldering it to follow the traces. They must be connected to something, can't be just floating. Maybe I will desolder that chip one day to complete the schematic.