CBM 9060

From: Ruud_at_Baltissen.org
Date: Sun, 30 Jan 2011 17:45:50 +0100
Message-ID: <4D4595BE.25984.143B2D1@Ruud.Baltissen.org>
Hallo allemaal,


My CBM 9060 story so far (from now on: 9090 is meant as well). I 
managed to repair one board, good news so far. The other one keeps 
flashing that the ZeroPage RAM is bad but exchanging the 6810's 
doesn't solve the matter :( It seems that I have to throw in some 
havier debug stuff.

I have uploaded the latest diassembly:
http://www.baltissen.org/zip/9060.zip


And now the things I found and/or problems I still have:

Disk Controller:
- The disk info is hard coded: 4/6 heads, 152 tracks/side, 32 
sectors/track.
- The various ZP adresses use in my listing coded Z_xx do something 
but I wasn't able yet to find out what exactly.
- Z_2D..2F aren't used.
- Z_30 is filled but never used.
- Z_31 and higher aren't used in the program. But Stack starts 
already at $7F.
- I have no idea what the routine at P_FDB2, and in particular, 
P_FDE8 do. P_FDE8 is used in the routine starting at A_FC4E which I 
don't understand as well.

- FYI: $0400 and higher is common RAM with the Bus Controller, both 
Controllers can read and/or write the same RAM. So it is possible 
that one Controller only writes to it and the other only will read 
it.
- $0499 is used to fill a command byte for the SASI controller but 
I cannot find the place where it is filled.
- $04A3 is used but filled where ???
- Less important: SecStatByte/$04A5 is filled but the info isn't 
used.
- I cannot find the origin of the various SASI commands found here. 
Like:
  - $C0 (= position head in 8250) -> $01 SASI command = recalibrate 
unit.
  - $B4 -> $C0 = ???
  - $A8 -> $00 = send zero status  
  - $C4 -> $0E = Vendor unique

Bus Controller:
- I was able to use a lot of the comment for the 8250 in the 9060 
as well.
- I wasn't able to find the verify part (not to be mixed up with 
the VERIFY command). Probably not needed. 
- With exception of the Backup function all of the second drive is 
still present. 
- $10B3 is used but filled where ???
- The use of the Write protection flag puzzles me. It is ONLY 
filled with the value 1 at startup. At InitDrive2 it is changed to 
zero:
		lsr	WPWS0B,X	; disk changed?
		bcc	A_C87A		; no, -> done
When loading the BAM, it is set to zero as well. But during the 
WaitLoop (= idle phase) it is checked to execute, or not, a 
subroutine. IMHO it never will be executed anymore after at least 
the first disk access.
- At A_FC06 the Disk Controller generates some error codes using 
some tables. These codes pop up again at "Prepare error number and 
message" (PrepErrMsg2). At A_EFEC the value $20 is added and the 
result is decreased twice. This value is used for the message 
generator. The original value $01 would end up as $1F but that 
doesn't exist ??? Same for $09/$27.  

Remark: add 'IMHO' to all sentences.


--
    ___
   / __|__
  / /  |_/     Groetjes, Ruud Baltissen
  \ \__|_\
   \___|       http://Ruud.C64.org







       Message was sent through the cbm-hackers mailing list
Received on 2011-01-30 17:00:13

Archive generated by hypermail 2.2.0.