Microdrive Unit Design
Re: Microdrive Unit Design
I think the calculations are fine, but work for 4 bits not 8, so the bandwidth is double for 8 bits, or to put another way, your time for 8 bits should be doubled - in a logical sense the 2 heads make the tape double the length, although I suspect the heads are interleaved to guarantee the throughput from system.
It would be fun to get a scope on the Microdrives and the ZX8302 ULA and see what is written.
It would be fun to get a scope on the Microdrives and the ZX8302 ULA and see what is written.
Re: Microdrive Unit Design
Yes, I see.
But how the tracks are switched to make a single continuous stream?
The QL Service Manual gives this explanation.
But how the tracks are switched to make a single continuous stream?
The QL Service Manual gives this explanation.
Tomas7.3.2 Data is recorded on two tracks using a standard stereo cassette head arrangement and is written in bytes, one byte to one track and the next
byte to the other track. It is recovered in the same way. The tape itself is one continuous loop. Since hardware takes care of switching between
tracks the software sees the tape as one doublelength single track.
Re: Microdrive Unit Design
For reading (taken from js rom disassembly):
;Initialise microdrive registers
L52B8 move.w #256,d0 ;initial attempts
move.w #$0F0F,d3 ;initialise checksum
moveq #0,d4
moveq #pc..rxrd,d6 ;port bit for read buffer ready
lea pc_trak1-pc_mctrl(a3),a2 ;microdrive read track1 port
lea pc_trak2-pc_mctrl(a3),a4 ; " " " 2 "
rts
;Read microdrive data to buffer
L52CE bsr.s L52B8 ;initialise registers
L52D0 btst d6,(a3) ;read buffer ready ?
dbne d0,L52D0 ;exit when ready or if attempts exhausted
exg a4,a4 ;(slight wait)
move.b (a2),d4 ;read first data byte from track port 1
exg a2,a4 ;alternate track pointers
move.b d4,(a1)+ ;data to buffer
add.w d4,d3 ;accumulate checksum
tst.w d0 ;initial attempts counter exhausted ?
blt L5446 ;yes, return outcome failed
moveq #20,d0 ;(redundant loop counter)
subq.w #1,d1 ;decrement byte counter
Writing - I don't know - the whole area of serialized data output by the zx8203 seems to be bit banging - whether it's serial, network, ipc comms or Microdive...
;Initialise microdrive registers
L52B8 move.w #256,d0 ;initial attempts
move.w #$0F0F,d3 ;initialise checksum
moveq #0,d4
moveq #pc..rxrd,d6 ;port bit for read buffer ready
lea pc_trak1-pc_mctrl(a3),a2 ;microdrive read track1 port
lea pc_trak2-pc_mctrl(a3),a4 ; " " " 2 "
rts
;Read microdrive data to buffer
L52CE bsr.s L52B8 ;initialise registers
L52D0 btst d6,(a3) ;read buffer ready ?
dbne d0,L52D0 ;exit when ready or if attempts exhausted
exg a4,a4 ;(slight wait)
move.b (a2),d4 ;read first data byte from track port 1
exg a2,a4 ;alternate track pointers
move.b d4,(a1)+ ;data to buffer
add.w d4,d3 ;accumulate checksum
tst.w d0 ;initial attempts counter exhausted ?
blt L5446 ;yes, return outcome failed
moveq #20,d0 ;(redundant loop counter)
subq.w #1,d1 ;decrement byte counter
Writing - I don't know - the whole area of serialized data output by the zx8203 seems to be bit banging - whether it's serial, network, ipc comms or Microdive...
Re: Microdrive Unit Design
Hi,
@ Dex, picture showing it nicely.
@ Prof, yes the idea of reading two h/w registers, each having one byte of data from either track. Reading is driven by ZX8302 triggering a gap interrupt for MC68000.
Tom
@ Dex, picture showing it nicely.
@ Prof, yes the idea of reading two h/w registers, each having one byte of data from either track. Reading is driven by ZX8302 triggering a gap interrupt for MC68000.
Tom
Re: Microdrive Unit Design
The answer lies in the head construction and tape quality capable of enough magnetic density.If the above correct then 44 um (microns) of tape must accommodate 8 bits, and that is 2*8 FM transitions, we already learnt.
How could this be at all achieved?
Searching web shows many head types, but principally all work is done by a tiny gap, its width in order of micrometers!
Gap breaks the magnetic tube and its property so called `flux', is forced out, trailing the magnetic states in tiny parts of tape.
We may possibly observe a gap on the head face with a ray of light, coming from an angle?
To visualise, compare the thickness of:
human's hair - 80 [um]
spider's web - 7 [um]
EDIT, I wish to also include calculations of Sector & Byte length based on time and speed.
Code: Select all
SectorLenght[mm] = SectorTime[us] / 10^6 * TapeLength[mm] / LoopTime[s]
ByteLenght[mm] = SectorLenght[mm] / BytesPerSector[n]
31760 / 10^6 * 5080 / 7.19 = 22.44mm
22.44 / 512 ~ 0.044mm
That corresponds to roughly an inch per sector and 44 microns per byte, too.
Tomas
Re: Microdrive Unit Design
Another information about that top-performance cartridge: the speedtest reported (and continues to report) 7 secs / 2310 rpmtcat wrote:Consider Loop time formula.I don't think that a so slight speed difference could be sufficient to produce such results.Code: Select all
LoopTime[s] = TapeLenght[mm] / ( RollerDiameter[mm] * PI) / MotorSpeed [r/m] * 60
Re: Microdrive Unit Design
Hi Cristian,
I wish I could explain that, my argument was that tape speed is one of the sensitive factors having some influence on it.
Please consider:
If you are not too disappointed, we could continue in this quest. Other exercise could be to take an Iss#6 drive and adjust its speed slightly by 0.25s in the hope to bring it to higher performance. This is not an irreversible change!
But again I may be wrong.
Tomas
I wish I could explain that, my argument was that tape speed is one of the sensitive factors having some influence on it.
Please consider:
The drive deviation and my tool precision is just 0.25 secs.0.25 secs * 10^6 / 31760 ~ 8 sectors.
1/4 of a second then corresponds to 8 sectors on tape, where each sector is 512 byte long.
225 nominal +/- 8 sectors
If you are not too disappointed, we could continue in this quest. Other exercise could be to take an Iss#6 drive and adjust its speed slightly by 0.25s in the hope to bring it to higher performance. This is not an irreversible change!
But again I may be wrong.
Tomas
Re: Microdrive Unit Design
Sure, I got your argument and I agree. I simply shared some extra info I forgotted to share before.
No disappointment from my side at all. Please feel free to explain the speed adjusting procedure: I'll consider it but I can't promise anything
No disappointment from my side at all. Please feel free to explain the speed adjusting procedure: I'll consider it but I can't promise anything
Re: Microdrive Unit Design
I borrow this explanation from other MD related thread.
The hole is covered by a seal, which is punctured already from a factory setting, so I was told.
Tomas
I have not tried this myself, I would go for 1/4 anti-clockwise turn for a start, and run `mSpeed' before and after adjustment, to spot any difference. EDIT then fine tune with 1/8 turns.There is a small hole on the bottom of the motor. Through it you can adjust preset potentiometer to change speed.
The potentiometer increases speed when turned clockwise (as viewed from bottom of motor). The speed range was quite limited, so adjustment isn't too critical. The angular movement is typical for a preset, about 300 degrees.
The hole is covered by a seal, which is punctured already from a factory setting, so I was told.
Tomas