apple Lisa2. One working!! - one to go?

Ray Arachelian ray at
Sat Dec 11 09:00:47 CST 2010

On 12/11/2010 03:15 AM, terry stewart wrote:
> Ok, an examination of the comments in the ROM H listing suggests that
> the Lisa 2/10 does look to see if the hard drive is connected and if
> not, then boots from the floppy drive.  As the machine still gives an
> error number 57 on the I/O board when the widget is unplugged but the
> floppy drive plugged in, I deduce the fault is definitely is on the
> main I/O board somewhere.
> With the widget unplugged then I took some readings on the floppy
> drive card edge and compared those to the same on the working Lisa. 
> There were some differences.  Compared to the working machine..
> PH0 does not show a brief 5V pulse on start up
> PH1 and PH2 remain at zero rather than pulsing briefly to 3.5 v or so
> every 4-5 seconds
> HDS is static at zero rather than at 4.5v and dropping to zero every
> 4-5 seconds
> DEN (ENBL) is 5v rather than zero
> WRD is 5v rather than zero
> PWM is 0 rather than 4v
> The WRD and the PH lines come off the IWM chip (Integrated WOZ
> machine).  I found a few docs on this chip but I'll need to study them
> a little harder to try to understand how they work.  Checking out the
> IMW chip, a clock signal is there and nothing on the input side is
> obviously amiss but then I would not recognise it if it was.  The data
> and address lines are a combination of exotic looking waves.  The same
> can be said of the data and address lines in the 6504a disk controller
> chip itself although A8 (pin 13) seemed to be a steady 3.8V rather
> than a wave.
> I checked quite a few of the other 71xxxx chips.  They appear to be
> doing what they should on the straight signal.  With a wave, it's hard
> to tell.
> I'm wondering if it is the IMW IC.  Does this seem a strong suspect? 
> I don't have a replacement for this unfortunately, but they are also
> in the Apple IIGS apparently, so not that uncommon.

But if you had a working IIGS would you sacrifice its IWM? :-)

I know you've said you're sure the I/O ROM says E8, does the sticker on
the I/O board confirm this?  It's very suspect to me.
Also can you confirm that the floppy drive in that Lisa is a standard
sony 400K one?  If you take it apart, do you see only one head, and the
top part of the clamp has a bit of foam?

If that ROM is ok, it might well be the 800K ROM from SunRem.  I'm
guessing that it's either that, or it's corrupt.  If either of those
cases is wrong, well, you might have a new ROM that wasn't unreleased. 
Again, you're getting error 57, which is a timeout of the controller's
self test, or a bus error during an attempt to access the controller.
This has nothing to do with access to the floppy drive, but everything
to do with the power on self test that 68000 does to check the 6504 is

Unless the IWM caused the 6504 to crash, it shouldn't cause a bus error
or timeout when the 68000 tries to get status from the 6504.  If on
poweron the 6504 is fully functional, it does a self test also.  Then,
it writes the results into the shared floppy RAM, and the 68000 reads
this status.  Unfortunately, in all cases, you get the same error 57. 
It might be a timeout, bus error, or an internal 6504 failure, or a RAM

The only clue we have is the oddball I/O ROM version.  Please, check the
sticker on the I/O ROM.  If it says 88 on the label, either the EPROM
went bad, or the I/O RAM is bad, or something went wrong that prevented
the 6504 from reporting its version to the 68000.  Does the sticker say
E8 on it?  Is there an Apple symbol on the sticker?

Here's what the code looks like, all roads lead to 57 (EDISK)
unfortunately, so we can't pinpoint exactly what went wrong.  If you
have a logic analyzer with the ability to analyze running 68000 code,
and can catch the POST ROM going through this code, you might be able to
see where it dies.

Perhaps if you can enter Service Mode, you could look at 02AE which is a
copy of the result of the 6504's self test.  If this is non-zero, it's
what reported the error.  02A1 is a copy of the ROM version, which
should contain E8.

If you can jump into the diag ROM at 00fe1136, it should attempt to see
if it can talk to the floppy controller, if you get an error 57
immediately after this (the Lisa might crash without throwing an error,
since your're jumping into POST code from service mode) then it's a timeout.

110C|                       ;  Test of disk interface - ensure R/W
capability to shared RAM, then
110C|                       ;  try disable interrupts command.  This
test will also verify
110C|                       ;  the results of the disk controller's own
self-test (ROM and RAM test).
110C|                       DSKTST
110C|                               .IF  DIAGS = 1
110C| 47FA 0078                     LEA     DSKVCT,A3       ;set up
vector in case of bus timeout
1110| 21CB 0008                     MOVE.L  A3,BUSVCTR
1114| 207C 00FC C001                MOVE.L  #DISKMEM,A0     ;set ptr for
shared memory
111A|                       ;  Display ROM
id                                                       CHG001
111A| 7A03                          MOVEQ   #ROMIDROW,D5    ;set cursor
ptrs                        CHG001
111C| 3C3C 0051                     MOVE    #ROMIDCOL+1,D6 
;                                       CHG001
1120| 702F                          MOVEQ   #'/',D0         ;preceed
with / char                    CHG001
1122| 6100 2616                     BSR     DSPVAL          ;display
it                             CHG001
1126| 1028 0030                     MOVE.B  ROMV(A0),D0     ;read
id                                CHG001
112A| 11C0 02A1                     MOVE.B  D0,IOROM        ;save in low
memory                     CHG010
112E| 7202                          MOVEQ   #2,D1          
;                                       CHG001
1130| 6100 0546                     BSR     OUTCH          
;                                       CHG001
1134|                       ;  Read system
type                                                     CHG009
1134| 6162                          BSR.S   SETTYPE         ;determine
system type                  CHG029
1136|                       ;  Check disk alive indicator
1136| 4282                          CLR.L   D2              ;clear for
use                          CHG022
1138| 227C 00FC D901                MOVE.L  #VIA2BASE,A1    ;set ptr to
parallel port 6522
113E| 0229 00BF 0010                ANDI.B  #$BF,DDRB2(A1)  ;ensure bit
6 is input
1144| 203C 001C 8000                MOVE.L  #DSKTMOUT,D0    ;set up
timeout count for 15 secs
114A| 0811 0006             @2      BTST    #DSKDIAG,IRB2(A1) ;check
114E| 6606                          BNE.S   @3              ;skip if set
1150| 5380                          SUBQ.L  #1,D0           ;else loop
until timeout (about 8 us per loop)
1152| 66F6                          BNE.S   @2
1154| 7439                          MOVEQ   #EDISK,D2       ;error if
not set                       CHG022
1156|                       ;  Try read operation and check results of
1156|                       @3
1156|                               .IF  DIAGS = 1
1156| 11E8 0016 02AE                MOVE.B  STST(A0),DSKRSLT ;get
results of disk self-test         CHG022
115C| 6616                          BNE.S   INTERR           ;exit if
error                         CHG022
115E| 4A02                  @4      TST.B   D2              ;previous
error?                        CHG022
1160| 6612                          BNE.S   INTERR          ;exit if
yes                            CHG022
1162|                       ;  Then try simple write operation to shared RAM
1162| 7055                          MOVEQ   #$55,D0         ;set up
pattern                         RM000
1164| 1140 0002                     MOVE.B  D0,CMD(A0)      ;try write
1168| B028 0002                     CMP.B   CMD(A0),D0      ;verify
116C| 6606                          BNE.S   INTERR          ;exit if error
116E|                       ;  Finally try a command to disable interrupts
116E| 6100 0BD6                     BSR     DSABLDSK        ;go issue
disable cmd
1172| 640C                          BCC.S   DSKXIT          ;skip if OK
1174|                               .ELSE
1174|                               .ENDC
1174| 08C7 0011             INTERR  BSET    #DISK,D7        ;else set
disk error
1178| 4A87                          TST.L   D7              ;restart if
in loop mode
117A| 6B90                          BMI.S   DSKTST
117C| 6000 021C                     BRA     TSTCHK          ;and abort
further testing

If you suspect that no keyboard isn't working, and your 6522's and the
COP421 chips are all socketed, feel free to swap them around, or swap
them from the other Lisa.  6522's are very common.  Western Design
Center may even sell new ones.  see:
and find the right version.

Take extra care with the COP421 chip!   COP421's are unique to the Lisa
and can only be found on Lisa I/O boards.  (COP421's from anything other
than a Lisa will not work since these are microcontrollers with a bit of
EPROM built in and burned in for Lisas, so only those coming from a Lisa
can be used.)

The COP421 handles keyboard, mouse, and the real time clock.  The year
on the clock has only a 15 year span.  So Lisas never had a Y2K problem.
:-)  Their clock range expired long before 2000, I forget the exact
limit, but it's probably 1994 or 1995.

One of the VIA 6522s handles the keyboard (and volume + sound control),
the other the parallel port (contrast + widget).  Swapping the two VIA's
around on the same I/O board is helpful in determining if a VIA is bad. 
If both VIA's are good a known working keyboard doesn't work with your
2/10, this is what you'd check on the I/O board.

The Lisa actually has 3 CPU's.  A 68000, a 6504, a COP421, and in the
first prototypes, they also had a COP421 in the keyboard.  These were
later replaced with an intel chip.  The Lisa 2's (not 2/10's) also had a
socket for an FPU.

More information about the cctalk mailing list