LisaList2

Advanced search  

News:

2022.06.03 added links to LisaList1 and LisaFAQ to the General Category

Pages: [1]   Go Down

Author Topic: Troubleshooting self-test Error 57  (Read 10848 times)

sigma7

  • Administrator
  • Sr. Member
  • *****
  • Karma: +150/-1
  • Offline Offline
  • Posts: 398
  • Warning: Memory errors found. Verify comments.
Troubleshooting self-test Error 57
« on: September 05, 2023, 01:35:59 am »


This is a preliminary draft of this topic, there may be some mistakes/errors...


Reviewing the Rev H Boot ROM Listing, error 57 equates to EDISK, with the comment "disk error"; it appears to be limited to floppy disk controller errors.

Searching the code for EDISK, we find it at address $1152 (that's offset $1152 from the start of the ROM, shown as 1152 in the left column of the listing), and at $1186, and at $14C6

So there are 3 possibilities for where this error might be generated/detected.

The ROM version display and the timing of the error message help narrow down which is happening...

1) $1186 -- The I/O ROM version is displayed on the screen by the code at $111A, which writes the "/" character to the screen after the CPU Board ROM version (eg. "H"), then reads the I/O ROM version from the FDC shared RAM, and writes that to the screen. If the attempt to get the I/O ROM version fails with a bus error, execution will redirect to DSKVCT so nothing will be displayed after the "/".

A bus error will occur if the 8T97 at U2F does not assert /DTACK when accessing the shared RAM. See this topic for suggestions for troubleshooting bus errors: Troubleshooting Bus Errors

If /DTACK is generated correctly, but the shared RAM is not working properly, or the FDC did not successfully write its ROM version number into the shared RAM, then the I/O ROM version shown may be incorrect or even random.

If service mode is available, one can test the shared RAM manually via reads and writes to odd addresses from FCC001 to FCC1FF. The end of this range is used for the Lisa Parameter RAM, and the 6504 stack, and the beginning of the range is used for FDC operation (values, commands, etc.) so for random writes, using the middle of the range is least likely to cause any hiccups.

The I/O Board RAM chips are two of the few static sensitive devices on the Lisa circuit boards, so they are among the parts most likely to be found faulty.

2) $1154 -- After displaying the I/O ROM version, the self test checks to see if the FDC has asserted DSKDIAG (U3E-11), which is done after the 6504 successfully goes through its reset sequence. DISKDIAG on the schematic is controlled by the 6504 with writes to the equates BOOTL and BOOTH in the IO_ROM listing. DSKDIAG is set low by /RESET. The 6504 writes to BOOTH (setting DSKDIAG high) when ready to interact with the 68k.

If the FDC is not working, then the state of DSKDIAG will remain low after reset. If the FDC is working or semi-working, then you should be able to see the state of this signal be low upon reset, then go high shortly after. If it is stuck low, then the 6504 circuitry may have some kind of problem.

The Boot ROM Listing suggests the 68k waits 15 seconds for DSKDIAG to go high, so if the amount of time between seeing the I/O ROM version on screen and the error appearing is much less, then the error is likely from $14C6.

3) $14C6 -- After finding that DSKDIAG is high, the 68K:
  • checks the startup status from the FDC as stored at $FCC017 is $00 (via code at $1156),
  • attempts to write $55 and read it back back at $FCC003 in the FDC shared RAM (via code at $1162), and
  • issues the disable interrupts command to the FDC (via code at $1D46);
If any of those fail, error 57 is generated.

The startup status retrieved from $FCC017 will not be $00 if the FDC detected an error upon reset; see error numbers extracted from the I/O ROM listing below (note the pic shows decimal numbers, not hexadecimal as used in Service Mode).

If the keyboard is working, then one could use service mode to do these checks manually to see which one is failing.

eg. enter service mode and type

1fcc017 1<return>   (to read 1 word from FCC017, the status byte where error codes are returned)

2fcc003 55<return>  (to write 1 byte to FCC003, the command byte where commands are issued to the FDC)
1fcc003 1<return>   (to read 1 byte from FCC003)
« Last Edit: September 05, 2023, 01:59:29 am by sigma7 »
Logged
Warning: Memory errors found. ECC non-functional. Verify comments if accuracy is important to you.

sigma7

  • Administrator
  • Sr. Member
  • *****
  • Karma: +150/-1
  • Offline Offline
  • Posts: 398
  • Warning: Memory errors found. Verify comments.
Re: Troubleshooting self-test Error 57
« Reply #1 on: September 05, 2023, 01:39:34 am »

(reserved for future use)
Logged
Warning: Memory errors found. ECC non-functional. Verify comments if accuracy is important to you.
Pages: [1]   Go Up