Saturday, September 9, 2023

The Convergent Technologies AWS Emulated CMI CM5410 Hard Drive hijacks ST-506 interface pins 30-32 (or do they hijack pin 34 also?)

From: Tom Trebisky
Date: Sun, Mar 28, 2021 at 4:08 PM
Subject: More time with AWS
To: Convergent MightyFrame 

I decided to trace signals, working my way back from the MFM drive
through the motherboard wire list to be sure I knew
what was talking to what on the HDC schematic (and hence in the code). 
This will lead to more notes in the code,
right now it is 3 tables on sheets of paper on my desk.

One interesting thing turned up.

They seem to "abuse" DS3 and DS4 on pins 30 and 32 of the MFM drive
cable.  They read these two signals and give 
them their own name DRTYPE0 and 1.  This is suggestive, but let's see
where it leads.

As you may know there are 4 pins (DS1, 2, 3, 4) and you set jumpers on
the drive for only one of them, which
gives the drive it's identity (so an MFM system can actually thus handle
4 drives).  But as you know, typical
MFM systems only handle two and the AWS seems to only handle one. So
signals DS3 and DS4 are in almost
all cases unused.  BUT, you may want to inspect any drives you have that
actually work with your AWS
systems.  With 2 bits, we could have 4 different supported drive types.

In short, your drive should have a place for 4 jumpers (only one should
be present) or a switch with 4 switches.
If more than one jumper/switch is present or set that would suggest that
CT is up to other business.

I will continue to pursue this, and other things.

    Tom

; the aim in what follows is to load a value into aux
; We essentially have 4 tables of 5 values
; r1 is the inner loop.
; r3 is set once outside the loop.
; So, r3 determines what the drive type is.
;
; type 0 --  77 tracks, 1 head, 16 sectors per track
; type 1 -- 256 tracks, 2 head, 32 sectors per track
; type 2 -- 256 tracks, 4 head, 32 sectors per track
; type 3 -- 256 tracks, 6 head, 32 sectors per track
; type 4 -- 153 tracks, 4 head, 32 sectors per track

0100: 81 04 x0100:  xec     x0104,r1
0101: cf 3e         xmit    M_STATUS,ivr
0102: da 20         xmit    0h,driv[5]
0103: e0 ee         jmp     x00ee ; loop up

0104: 83 09 x0104:  xec     x0109,r3 ; r1 = 0
0105: 83 0e         xec     x010e,r3 ; r1 = 1
0106: 83 13         xec     x0113,r3 ; r1 = 2
0107: 83 18         xec     x0118,r3 ; r1 = 3
0108: e0 18         jmp     x0018 ; r1 = 4 (done)

0109: c0 4d x0109:  xmit    4dh,aux ; tracks (lsb)
010a: c0 00         xmit    0h,aux
010b: c0 00         xmit    0h,aux
010c: c0 00         xmit    0h,aux
010d: c0 99         xmit    99h,aux

010e: c0 00 x010e:  xmit    0h,aux ; tracks (msb)
010f: c0 01         xmit    1h,aux
0110: c0 01         xmit    1h,aux
0111: c0 01         xmit    1h,aux
0112: c0 00         xmit    0h,aux

0113: c0 01 x0113:  xmit    1h,aux ; heads
0114: c0 02         xmit    2h,aux
0115: c0 04         xmit    4h,aux
0116: c0 06         xmit    6h,aux
0117: c0 04         xmit    4h,aux

0118: c0 10 x0118:  xmit    10h,aux ; sectors per track
0119: c0 20         xmit    20h,aux
011a: c0 20         xmit    20h,aux
011b: c0 20         xmit    20h,aux
011c: c0 20         xmit    20h,aux

; ---------------------------
; CMD - seek
; seek is followed by 2 bytes
; A = HHHH TTTT
; B = TTTT TTTT
; byte A gives head and 4 msb of track
; byte B gives 8 lsb of track.

No comments:

Post a Comment