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

Work remaining

Initial inspection

Front Left

Front Right

Back

Board

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.

Board

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:

Logic analyser

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.

Schematic

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.