Macintosh 512K ED
This computer belongs to a customer, it had a Dove MacSnap 524S board installed, which should expand the memory to 1MB. When received it, it didn't boot at all and only gave a long beep followed by a horizontal line on the screen
Work done so far
- Replaced RIFA capacitors on the analog board
- Diagnosed boot issue and swapped LAG chip from a donor board
Work remaining
- Clean and lubricate floppy drive
Initial inspection
Logic board repair
After checking the clock signal and the integrity of the ROMs I initially assumed an issue with the memory, I suspected that the stack was getting corrupt causing the normally short beep to be extended. Judging from the flux residue on the back the ICs had previously been either re-soldered or replaced as well which made them more suspect.
After removing all the memory ICs and testing them individually, I found that they all worked correctly, so I installed sockets on the board and re-installed all the ICs.
This left only one option; connecting the logic analyser and running an inverse assembler to find out where it was getting stuck. Unfortunately, I don't own a test clip large enough for the Motorola 68000, so this became quite the spider web of wires:
After connecting and configuring the logic analyser, I confirmed pretty quickly that both ROM and RAM access appeared to be working correctly but that the CPU was spending way too much time in this loop:
State Number ADDR 68000 Mnemonic DATA STAT ADDR Time DATA STAT
Decimal Hex hex Hex Hex Hex Absolute Hex Binary
____________ ______ _______________________________ ____ ____ ______ ___________ ____ ________
32754 4002AE 082D DMA 082D E9 4002AE 631.910 ms 082D 11101001
32755 4002B0 EFFF DMA EFFF E9 4002B0 631.910 ms EFFF 11101001
32756 4002B0 0001 DMA 0001 E9 4002B0 631.911 ms 0001 11101001
32757 4002B2 FFFF DMA FFFF E9 4002B2 631.911 ms FFFF 11101001
32758 4002B2 1A00 DMA 1A00 E9 4002B2 631.911 ms 1A00 11101001
32759 4002B4 56C8 DMA 56C8 E9 4002B4 631.912 ms 56C8 11101001
32760 EFFBFE 007E DMA 007E DB EFFBFE 631.914 ms 007E 11011011
32761 4002B6 FFF8 DMA FFF8 E9 4002B6 631.914 ms FFF8 11101001
Thanks to Steve Chamberlin's disassembled and commented ROM, I found that it was waiting for the V-BLANK signal:
2AE 082D 0001 1A00 L25: BTst.B #$1, $1A00(A5) ; check the VBLANK interrupt flag @sc
2B4 56C8 FFF8 DBNE D0, L25 ; wait until the VBLANK interrupt flag is set @sc
Looking at the schematic it appears that the LAG IC (PAL 16R8) is responsible for generating the v-sync signal, which is then processed by the VIA IC (MOS6522) into the V-BLANK interrupt which is sent through the TSG IC (PAL 16R6) to the CPU.
When I checked the v-sync signal at the LAG using an oscilloscope I found the issue, it was running at a frequency of 980Khz, much higher than the 60hz it should be.
After swapping the LAG from a donor board, the issue was resolved and the computer could boot normally. Unfortunately, these PAL ICs (early FGPA like devices) were programmed at the factory and no source code is available for them. This means that they are pretty much unobtainium and can only be replaced from a donor board.