Question about VG93
ZXNet echo conference «zx.spectrum»
From Vladimir Yudin → To All 11 December 1997
Hello All!
People, no one knows where you can get information about the operation of VG93,
everything is of interest (command system, internal organization, data format
on the FM/MFM disk, algorithms for the controller to operate when executing commands
and so on).
PS: Specific question: if when reading a group of sectors in one of them
a CRC error occurs, then the operation is terminated on this sector or
is completed to the end?
Sincerely
┬ ┬┌┐┬┐ ┐┬┬
╨╜╨╙╜╨╙ ╨ ╨
From Vitaly Samoylov → To All 14 December 1997
Greetings, Vladimir!
─────────────────────────────────── ──────────────────────── ────────────────────
In distant times (11 Dec 97), Ser Vladimir wrote on a scroll All,
Bequeathing the “Question of VG93”, and today (14 Dec 97) I decided intervene:
────────────────────────────────── ──────────────────────── ─────────────────────
VY> People, no one knows where to get information about the operation of the VG93,
VY> is interested in everything (command system, internal organization, data format
VY> on the FM/MFM disk, algorithms for the controller to operate when executing commands
VY> and so on).
There is such a book: “ZX Spectrum & TR-DOS for users and programmers”
Authors: A. Larchenko N. Rodionov
3rd Edition
VY> PS: Specific question: if a CRC error occurs in one of them
VY> when reading a group of sectors, does the operation terminate at this sector or
VY> is completed to the end?
Most likely - to the end, if you mean a multi-sector operation!
As far as I know, this the operation works until the index pulse arrives, that is, if the sectors on the track are not in order, then there will be an error 'sector not found' !
VY> respectful
All the best. /──────────────────────\ [ Fantasy World - Rulez ]
Sincerely, │ Wanderer 'Sagacious' │ [ Getting up early - MustDie]
─────────────────── ────\──────────────────────/ [ Station 106.8 - Rulez ]
... Do what you must, what is meant to happen ...
From Vladimir Yudin → To All 14 December 1997
VY>> one of them, a CRC error occurs, then the operation is terminated
VY>> on this sector or is it completed to the end?
VS> Most likely - to the end, if you mean a multi-sector
VS> operation!
VS> As far as I know, this operation works until the index
VS> arrives impulse, that is, if the sectors on the track are out of order, then
VS> there will be an error 'sector not found'!
Firstly, the controller doesn't care whether the sector is in order or not, it
looks for them by headers and if the sector doesn't fit, it simply ignores it.
Secondly, I'm not sure that the controller reads sectors by their numbers during multi-sector processing
. IMHO he reads them in order
until the end of the sector.
2All: Please enlighten me on this issue.
Sincerely
┬ ┬┌┐┬┐ ┐┬┬
╨ґ╨╙ґ╨╙ ╨ ╨
From Pavel Fedin → To All 15 December 1997
BIN HEX
0000HVRR #00 - #0F Recovery.
0001HVRR #10 - #1F Search.
001THVRR #20 - #3F Step in the previous direction. 010THVRR #40 - #5F Step forward.
011THVRR #60 - #7F Step back.
100MSECA #80 - #9F Read sector.
101MSEC0 #A0 - #BF Write sector.
11000E00 #C0, #C4 Read address.
11100E00 #E0, #E4 Read track.
11110E00 #F0, #F4 Write track.
1101III #D0 - #DF Forced interrupt.
Flag bits:
RR - head positioning speed:
╔══І══І═════╗
║R1│R0│T step║
╟──┼──┼─────Є
║ 0│ 0│ 6 ms║
║ 0│ 1│12 ms║
║ 1│ 0│20 ms║
║ 1│ 1│30 ms║
╚══╧══╧═════ў
This table is valid at a clock frequency of 1 MHz. When the signal TEST=0, the period
is about 400 ms and does not change.
V - checking the track number after positioning. H - head loading.
T - changing the track number in the track register after each
step.
A - type of address mark (0 - #FB, 1 - #F8). C - checking the disk side number
when identifying the index
area.
E - delay after loading the head for 30 ms. S - disk side.
M - multi-sector operation.
I - interrupt condition:
I0 - when the drive transitions to the "ready" state.
I1 - when the drive transitions to the "not ready" state.
I2 - when the index pulse.
I3 - immediately.
The "restore" command performs positioning to track 0. If
after 256 steps the TR00 signal does not appear, then the command stops working. Always executed when the controller is reset
regardless of whether the drive is ready.
“Search” command - the current
track number must be in the track register, and the required one must be in the data register. The head moves until they coincide.
The “step” command moves the head 1 step. The direction is set by the "forward" and "backward" commands.
The "read sector" command reads from the current track the sector whose number is specified
in the sector register. The side of the disk is specified by the flag
S (0, 1). When the M flag is set, all sectors up to the end of the track are read.
Flag A - type of address mark: when A=1 - #F8, sector erasure is allowed; when A=0
- #FB, erasing is prohibited. First the sector identifier is read; if one is not found, then the “array not found” flag is set in the status register.
Otherwise, if the track, side, sector and checksum numbers match, then the data is read: the next byte is issued to the data register and
accompanied by the DRQ signal. A byte must be read from the data register before the next one appears, otherwise the “data loss” flag is set in the status register. At the endreading, the checksum is checked and if it does not match, then the “checksum error” flag is set in the status register. In this case, the multisector operation is terminated.
The “write sector” command in terms of sector identification is executed similarly
to the previous one. The DRQ signal appears when the first byte of data is requested. Then
22 bytes are calculated for double density (for single 11) - the space between the index area and
data. After this, if the data register has received a byte, a write strobe is issued and
data is written, starting with the zero bytes and
address mark. The data register must receive another byte in response to each
DRQ signal at write speed. If the byte is not received, then the “data loss” bit is set in the status register, and byte 0 is written to the disk. After the data, a checksum and a byte are written - a space. The WSTB signal is set to 0.
Bye, with a pack of vicheuses, Pavel Fedin.