1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
|
.\" Copyright (c) 1983, 1991 Regents of the University of California.
.\" All rights reserved.
.\"
.\" Redistribution and use in source and binary forms, with or without
.\" modification, are permitted provided that the following conditions
.\" are met:
.\" 1. Redistributions of source code must retain the above copyright
.\" notice, this list of conditions and the following disclaimer.
.\" 2. Redistributions in binary form must reproduce the above copyright
.\" notice, this list of conditions and the following disclaimer in the
.\" documentation and/or other materials provided with the distribution.
.\" 3. All advertising materials mentioning features or use of this software
.\" must display the following acknowledgement:
.\" This product includes software developed by the University of
.\" California, Berkeley and its contributors.
.\" 4. Neither the name of the University nor the names of its contributors
.\" may be used to endorse or promote products derived from this software
.\" without specific prior written permission.
.\"
.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
.\" SUCH DAMAGE.
.\"
.\" from: @(#)rx.4 6.2 (Berkeley) 3/27/91
.\" $Id: rx.4,v 1.1 1995/10/18 08:44:35 deraadt Exp $
.\"
.Dd March 27, 1991
.Dt RX 4 vax
.Os BSD 4.2
.Sh NAME
.Nm rx
.Nd
.Tn DEC
.Tn RX02
floppy disk interface
.Sh SYNOPSIS
.Cd "controller fx0 at uba0 csr 0177170 vector rxintr"
.Cd "disk rx0 at fx0 drive 0"
.Cd "disk rx1 at fx0 drive 1"
.Sh DESCRIPTION
The
.Nm rx
device provides access to a
.Tn DEC
.Tn RX02
floppy disk
unit with M8256 interface module
.Pf ( Tn RX211
configuration).
The
.Tn RX02
uses 8-inch, single-sided, soft-sectored floppy
disks (with pre-formatted industry-standard headers) in
either single or double density.
.Pp
Floppy disks handled by the
.Tn RX02
contain 77 tracks, each with 26
sectors (for a total of 2,002 sectors). The sector size is 128
bytes for single density, 256 bytes for double density. Single
density disks are compatible with the
.Tn RX01
floppy disk unit and with
.Tn IBM
3740 Series Diskette 1 systems.
.Pp
In addition to normal (`block' and `raw')
.Tn I/O ,
the driver supports
formatting of disks for either density and
the ability to invoke a 2 for 1 interleaved sector mapping
compatible with the
.Tn DEC
operating system
.Tn RT-11 .
.Pp
The minor device number is interpreted as follows:
.Pp
.Bl -column Otherx -offset indent
.Sy Bit Description
0 Sector interleaving (1 disables interleaving)
1 Logical sector 1 is on track 1 (0 no, 1 yes)
2 Not used, reserved
Other Drive number
.El
.Pp
The two drives in a single
.Tn RX02
unit are treated as
two disks attached to a single controller. Thus, if there are two
.Tn RX02 Ns 's
on a system, the drives on the first
.Tn RX02
are
.Dq Li rx0
and
.Dq Li rx1 ,
while the drives on the second are
.Dq Li rx2
and
.Dq Li rx3 .
.Pp
When the device is opened, the density of the disk
currently in the drive is automatically determined. If there
is no floppy in the device, open will fail.
.Pp
The interleaving parameters are represented in raw device
names by the letters
.Ql a
through
.Ql d .
Thus, unit 0, drive 0 is
called by one of the following names:
.Pp
.Bl -column interleavedxx "Device namexx" "Starting Track" -offset indent
.Sy Mapping Device name Starting track
interleaved /dev/rrx0a 0
direct /dev/rrx0b 0
interleaved /dev/rrx0c 1
direct /dev/rrx0d 1
.El
.Pp
The mapping used on the
.Ql c
device is compatible with the
.Tn DEC
operating system
.Tn RT-11 .
The
.Ql b
device accesses the
sectors of the disk in strictly sequential order.
The
.Ql a
device is the most efficient for disk-to-disk copying.
This mapping is always used by the block device.
.Pp
.Tn I/O
requests must start on a sector boundary, involve an integral
number of complete sectors, and not go off the end of the disk.
.Sh NOTES
Even though the storage capacity on a floppy disk is quite
small, it is possible to make filesystems on
double density disks.
For example, the command
.Bd -literal -offset indent
% mkfs /dev/rx0 1001 13 1 4096 512 32 0 4
.Ed
.Pp
makes a file system on the double density disk in rx0 with
436 kbytes available for file storage.
Using
.Xr tar 1
gives a more efficient utilization of the available
space for file storage.
Single density diskettes do not provide sufficient storage capacity to
hold file systems.
.Pp
A number of
.Xr ioctl 2
calls apply to the rx devices, and
have the form
.Bd -literal -offset indent
#include <vaxuba/rxreg.h>
ioctl(fildes, code, arg)
int *arg;
.Ed
.Pp
The applicable codes are:
.Bl -tag -width RXIOC_GETDENS
.It Dv RXIOC_FORMAT
Format the diskette. The density to use is specified
by the
.Ar arg
argument, zero gives single density while non-zero
gives double density.
.It Dv RXIOC_GETDENS
Return the density of the diskette (zero or non-zero as above).
.It Dv RXIOC_WDDMK
On the next write, include a
.Em deleted data address mark
in
the header of the first sector.
.It Dv RXIOC_RDDMK
Return non-zero if the last sector read contained a
.Em deleted data address mark
in its header, otherwise
return 0.
.El
.Sh FILES
.Bl -tag -width /dev/rx?xx -compact
.It Pa /dev/rx?
.It Pa /dev/rrx?[a-d]
.El
.Sh DIAGNOSTICS
.Bl -diag
.It "rx%d: hard error, trk %d psec %d cs=%b, db=%b, err=%x, %x, %x, %x."
An unrecoverable error was encountered. The
track and physical sector numbers, the device registers and the
extended error status are displayed.
.Pp
.It rx%d: state %d (reset).
The driver entered a bogus state. This should not happen.
.El
.Sh ERRORS
The following errors may be returned by the driver:
.Bl -tag -width [ENODEV]
.It Bq Er ENODEV
Drive not ready; usually because no disk is in the drive or
the drive door is open.
.It Bq Er ENXIO
Nonexistent drive (on open);
offset is too large or not on a sector boundary or
byte count is not a multiple of the sector size (on read or write);
or bad (undefined) ioctl code.
.It Bq Er EIO
A physical error other than ``not ready'', probably bad media or
unknown format.
.It Bq Er EBUSY
Drive has been opened for exclusive access.
.It Bq Er EBADF
No write access (on format), or wrong density; the latter
can only happen if the disk is changed without
.Em closing
the device
(i.e., calling
.Xr close 2 ) .
.El
.Sh SEE ALSO
.Xr rxformat 8 ,
.Xr newfs 8 ,
.Xr mkfs 8 ,
.Xr tar 1 ,
.Xr arff 8
.Sh HISTORY
The
.Nm
driver appeared in
.Bx 4.2 .
.Sh BUGS
A floppy may not be formatted if the
header info on sector 1, track 0 has been damaged. Hence, it is not
possible to format completely degaussed disks or disks with other
formats than the two known by the hardware.
.Pp
If the drive subsystem is powered down when the machine is booted, the
controller won't interrupt.
|