re: Strange request: Reading RX-50 (aka DEC Rainbow 100) disks

2001-06-09 Thread Mark Hittinger


> Has anybody done this before?  Any pointers?

I'm very familiar with the RX50 on the Rainbow.  I wrote the "copy protected
disk copier" for it in that bygone era.  AR!!

The Rainbow ran several operating systems, CPM, CPM/86, MSDOS 2, and MSDOS 3.
The Rainbow had both a z80 cpu and an 8088 cpu with the lowest 2k ram shared
between the z80 and the 8088.  The z80 controlled the floppy drive via a
WD 1793 chip.

I'd actually recommend trying to use kermit to get the data out via the
serial port first :-)  There is a rainbow kermit out there.

I remember being able to transfer files between the Rainbow and the IBM PC
using a lower density single sided format - like 40 tracks.  This was in
MSDOS world only and not CPM.  I'd bet there are utilities on simtel20 that
would read a CPM format floppy in 40 track format.  I formatted them on the
IBM PC in low density mode and then wrote data to them on the Rainbow.

There is also a version of DECNET for the Rainbow that works via the serial
port.

If you can find someone with a PDP-11 or a MicroVAX unix system somewhere
you might be able to just dd them.

I still have my Rainbow and I have to use an air blower to get rid of dust
in order to get the floppies to even read at all anymore.  My apple ][
floppies still read solid with no air blower.

Good Luck!

Mark Hittinger
Earthlink
[EMAIL PROTECTED]

To Unsubscribe: send mail to [EMAIL PROTECTED]
with "unsubscribe freebsd-hackers" in the body of the message



Re: Strange request: Reading RX-50 (aka DEC Rainbow 100) disks

2001-06-09 Thread James Housley

Mark Hittinger wrote:
> 
> MSDOS world only and not CPM.  I'd bet there are utilities on simtel20 that
> would read a CPM format floppy in 40 track format.  I formatted them on the

A quick search returned 10 matches with this one looking like what you
want.

http://www.simtel.net/pub/pd/44392.shtml

Jim
-- 
/"\   ASCII Ribbon Campaign  .
\ / - NO HTML/RTF in e-mail  .
 X  - NO Word docs in e-mail .
/ \ -
[EMAIL PROTECTED]  http://www.FreeBSD.org The Power to Serve
[EMAIL PROTECTED]  http://www.TheHousleys.net
-
It's always a long day, 86400 doesn't fit into a short.

To Unsubscribe: send mail to [EMAIL PROTECTED]
with "unsubscribe freebsd-hackers" in the body of the message



Re: Strange request: Reading RX-50 (aka DEC Rainbow 100) disks

2001-06-09 Thread Warner Losh

In message <[EMAIL PROTECTED]> Mark Hittinger writes:
: I'd actually recommend trying to use kermit to get the data out via the
: serial port first :-)  There is a rainbow kermit out there.

Not an option.  I have about 100 floppies to transfer.  I know I could
set this up, but 9600 baud is just too slow.

: I remember being able to transfer files between the Rainbow and the IBM PC
: using a lower density single sided format - like 40 tracks.  This was in
: MSDOS world only and not CPM.  I'd bet there are utilities on simtel20 that
: would read a CPM format floppy in 40 track format.  I formatted them on the
: IBM PC in low density mode and then wrote data to them on the Rainbow.

Well, I could use the IMPDRIVE driver that I wrote for the 720k low
density floppy and transfer things that way.  I don't want to do that
either.  While less painful than serial, it is still painful.

There was a driver for DOS that would do this, but I don't have DOS on
my machines.  This tells me that the 1.2M drives will read them w/o a
problem.  Writing I know is a problem due to different head
technologies used between them.

: If you can find someone with a PDP-11 or a MicroVAX unix system somewhere
: you might be able to just dd them.

I do have the options of connection the hardware up to the floppy
controller in my desktop too :-).  I have both the RX-50 drives, as
well as a pair of TEAC FD55 drives (that do the same data rate as the
RX-50's, with the same heads, but with only one drive per spindle and
two read heads instead of one).  Trouble is, it looks like our floppy
driver doesn't grok single sided 400k disks :-(.  That's what I'm
looking to hack and advise on how to hack.

: I still have my Rainbow and I have to use an air blower to get rid of dust
: in order to get the floppies to even read at all anymore.  My apple ][
: floppies still read solid with no air blower.

I had to use the air blower as well, but most of the disks read after
that :-).

Warner

To Unsubscribe: send mail to [EMAIL PROTECTED]
with "unsubscribe freebsd-hackers" in the body of the message



Re: Strange request: Reading RX-50 (aka DEC Rainbow 100) disks

2001-06-09 Thread Warner Losh

In message <[EMAIL PROTECTED]> James Housley writes:
: Mark Hittinger wrote:
: > 
: > MSDOS world only and not CPM.  I'd bet there are utilities on simtel20 that
: > would read a CPM format floppy in 40 track format.  I formatted them on the
: 
: A quick search returned 10 matches with this one looking like what you
: want.
: 
: http://www.simtel.net/pub/pd/44392.shtml

Right, but none of them run under FreeBSD.  I have at least two or
three of these programs already.  My problem is getting the bits off
the disk on a FreeBSD box.

Warner

To Unsubscribe: send mail to [EMAIL PROTECTED]
with "unsubscribe freebsd-hackers" in the body of the message



Re: Strange request: Reading RX-50 (aka DEC Rainbow 100) disks

2001-06-10 Thread Ian Dowse

In message <[EMAIL PROTECTED]>, Warner Losh writ
es:

>I do have the options of connection the hardware up to the floppy
>controller in my desktop too :-).  I have both the RX-50 drives, as
>well as a pair of TEAC FD55 drives (that do the same data rate as the
>RX-50's, with the same heads, but with only one drive per spindle and
>two read heads instead of one).  Trouble is, it looks like our floppy
>driver doesn't grok single sided 400k disks :-(.  That's what I'm
>looking to hack and advise on how to hack.

The fdcontrol program allows most of the paramaters to be set to
match the disks, but unfortunately it cannot set the sector offset.
MSDOS disks sectors are numbered starting at 1 (the sector offset
is 1), but it was common practice with old 8-bit CP/M-type systems
to choose sector numbers starting at 0x41, 0x81 or other values.

I was attempting something similar last summer, but with disks from
an Amstrad CPC computer. I used the following patch to the fd driver
and fdcontrol to allow the sector offset to be specified along with
the other parameters. It also allows a head offset to be specified,
which is useful for reading the second side of double-sided disks
that were written as single-sided disks with a hardware switch on
the side-select line (i.e the head number written to disk does not
match the hardware head number).

The patch below is against RELENG_4 around Jan 2000, so it will
need updating. I'm also not sure what sector offset the DEC Rainbow
used - I think I have a Rainbow boot disk here, but I'd have to
dig out a 5.25 floppy drive to check :-) Once you get the settings
right, you can just dd the disk to an image file.

Ian


Index: sys/i386/include/ioctl_fd.h
===
RCS file: /dump/FreeBSD-CVS/src/sys/i386/include/Attic/ioctl_fd.h,v
retrieving revision 1.13
diff -u -r1.13 ioctl_fd.h
--- sys/i386/include/ioctl_fd.h 1999/12/29 04:33:02 1.13
+++ sys/i386/include/ioctl_fd.h 2001/06/10 15:36:24
@@ -86,6 +86,7 @@
 struct fd_type {
int sectrac;/* sectors per track */
int secsize;/* size code for sectors */
+   int secoff; /* starting sector number*/
int datalen;/* data len when secsize = 0 */
int gap;/* gap len between sectors   */
int tracks; /* total num of tracks   */
@@ -95,6 +96,7 @@
int heads;  /* number of heads   */
int f_gap;  /* format gap len*/
int f_inter;/* format interleave factor  */
+   int headoff;
 };
 
 #define FD_FORM   _IOW('F', 61, struct fd_formb) /* format a track */
Index: sys/isa/fd.c
===
RCS file: /dump/FreeBSD-CVS/src/sys/isa/fd.c,v
retrieving revision 1.176
diff -u -r1.176 fd.c
--- sys/isa/fd.c2000/01/08 09:33:06 1.176
+++ sys/isa/fd.c2001/06/10 15:52:19
@@ -125,24 +125,24 @@
 
 static struct fd_type fd_types[NUMTYPES] =
 {
-{ 21,2,0xFF,0x04,82,3444,1,FDC_500KBPS,2,0x0C,2 }, /* 1.72M in HD 3.5in */
-{ 18,2,0xFF,0x1B,82,2952,1,FDC_500KBPS,2,0x6C,1 }, /* 1.48M in HD 3.5in */
-{ 18,2,0xFF,0x1B,80,2880,1,FDC_500KBPS,2,0x6C,1 }, /* 1.44M in HD 3.5in */
-{ 15,2,0xFF,0x1B,80,2400,1,FDC_500KBPS,2,0x54,1 }, /*  1.2M in HD 5.25/3.5 */
-{ 10,2,0xFF,0x10,82,1640,1,FDC_250KBPS,2,0x2E,1 }, /*  820K in HD 3.5in */
-{ 10,2,0xFF,0x10,80,1600,1,FDC_250KBPS,2,0x2E,1 }, /*  800K in HD 3.5in */
-{  9,2,0xFF,0x20,80,1440,1,FDC_250KBPS,2,0x50,1 }, /*  720K in HD 3.5in */
-{  9,2,0xFF,0x2A,40, 720,1,FDC_250KBPS,2,0x50,1 }, /*  360K in DD 5.25in */
-{  8,2,0xFF,0x2A,80,1280,1,FDC_250KBPS,2,0x50,1 }, /*  640K in DD 5.25in */
-{  8,3,0xFF,0x35,77,1232,1,FDC_500KBPS,2,0x74,1 }, /* 1.23M in HD 5.25in */
-
-{ 18,2,0xFF,0x02,82,2952,1,FDC_500KBPS,2,0x02,2 }, /* 1.48M in HD 5.25in */
-{ 18,2,0xFF,0x02,80,2880,1,FDC_500KBPS,2,0x02,2 }, /* 1.44M in HD 5.25in */
-{ 10,2,0xFF,0x10,82,1640,1,FDC_300KBPS,2,0x2E,1 }, /*  820K in HD 5.25in */
-{ 10,2,0xFF,0x10,80,1600,1,FDC_300KBPS,2,0x2E,1 }, /*  800K in HD 5.25in */
-{  9,2,0xFF,0x20,80,1440,1,FDC_300KBPS,2,0x50,1 }, /*  720K in HD 5.25in */
-{  9,2,0xFF,0x23,40, 720,2,FDC_300KBPS,2,0x50,1 }, /*  360K in HD 5.25in */
-{  8,2,0xFF,0x2A,80,1280,1,FDC_300KBPS,2,0x50,1 }, /*  640K in HD 5.25in */
+{ 21,2,1,0xFF,0x04,82,3444,1,FDC_500KBPS,2,0x0C,2 }, /* 1.72M in HD 3.5in */
+{ 18,2,1,0xFF,0x1B,82,2952,1,FDC_500KBPS,2,0x6C,1 }, /* 1.48M in HD 3.5in */
+{ 18,2,1,0xFF,0x1B,80,2880,1,FDC_500KBPS,2,0x6C,1 }, /* 1.44M in HD 3.5in */
+{ 15,2,1,0xFF,0x1B,80,2400,1,FDC_500KBPS,2,0x54,1 }, /*  1.2M in HD 5.25/3.5 */
+{ 10,2,1,0xFF,0x10,82,1640,1,FDC_250KBPS,2,0x2E,1 }, /*  820K in HD 3.5in */
+{ 10,2,1,0xFF,0x10,80,1600,1,FDC_250KBPS,2,0x2E,1 }, /*  800K in HD 3.5in */
+{  9,2,1,0xFF,0x20,80,1440,1,FDC_250KBPS,2,0x50,1 }, /* 

Re: Strange request: Reading RX-50 (aka DEC Rainbow 100) disks

2001-06-10 Thread Warner Losh

[[ Lots of details on how to do this deed, or at least the format
   of the Rainbow disk, follow.  Hit 'n' or 'd' if you don't care ]]

In message <[EMAIL PROTECTED]> Ian Dowse writes:
: The fdcontrol program allows most of the paramaters to be set to
: match the disks, but unfortunately it cannot set the sector offset.
: MSDOS disks sectors are numbered starting at 1 (the sector offset
: is 1), but it was common practice with old 8-bit CP/M-type systems
: to choose sector numbers starting at 0x41, 0x81 or other values.

That's OK.  The Rainbow disks have sectors numbered 1 through 10, for
both CP/M disks and MS-DOS disks.  This makes things easier to cope
with.

: The patch below is against RELENG_4 around Jan 2000, so it will
: need updating. I'm also not sure what sector offset the DEC Rainbow
: used - I think I have a Rainbow boot disk here, but I'd have to
: dig out a 5.25 floppy drive to check :-) Once you get the settings
: right, you can just dd the disk to an image file.

Well, here's the technical data I could find on the rainbow's disks
(boy, I'm glad I got the technical docs set with the unit, it was over
my head for the most part when I was 16, but it is perfectly readable
to me now).  I'm not sure what to put for the "gap" "trans" or "f_gap"
parameters, so I'll include a little more info than most people would
generally want.  However, it may prove useful to other people trying
to read different formats in the future. so here goes:

--

1 head  (although I have drives with 2 heads)
10 sectors per track
80 tracks
250kB/s transfer rate
300rpm

Track Format:

Description No BytesContents
Pre ID Gap  47  0x4e
ID Fields
  Sync  8   0
  Mark  3   0xa1
  Header IDAM   1   FE
Track Address   1   Track number (0-0x4f)
Side Number 1   0
Sector Address  1   Sector (1-10)
Bytes/sector code   1   0x2
CRC 1   Calc CRC [See note 1]
Pose ID Gap 22  0x4e
Data Fields
  Sync  12  0
  Mark  3   0xa1
  Data DAM  1   0xfb
Data512 
  CRC   2   CRC over data
  Post Amble1   0
Pre_index gap   70 [2]  0x4e

Note 1: I think the length here should be 2 rather than 1 based on
other text

Note 2: "This field is written once per track until an index field is
encoutered"  Whatever that means.

--

Finally, I have the actual disk drives (both the RX-50 and the TEAC
FD-55 which is a two sided version of the RX-50) that I could connect
for this project.  Any thumbnail about how to add a new type of drive
to fd.c?  What parameters do I need for it?

Finally, I have a few minor cleanups of my own for the floppy driver.
Mostly removing the last gasping vestiges of the ft driver that lived
in fd.c.  I'd also like to move isa/fd.c into
dev/fd/fd{,_isa,_pccard}.c so we can eliminate one of the last
remaining NCARD variable useages.  Anybody special I should talk to
before doing this?  My guess is Joerg.

Warner

To Unsubscribe: send mail to [EMAIL PROTECTED]
with "unsubscribe freebsd-hackers" in the body of the message



Re: Strange request: Reading RX-50 (aka DEC Rainbow 100) disks

2001-06-10 Thread Ian Dowse

In message <[EMAIL PROTECTED]>, Warner Losh writ
es:
>
>That's OK.  The Rainbow disks have sectors numbered 1 through 10, for
>both CP/M disks and MS-DOS disks.  This makes things easier to cope
>with.

Great, then no driver changes are required. I've just tried it; I
found a normal PC 5.25" drive, and I was able to read the DEC
Rainbow boot disk I have here by doing

# fdcontrol /dev/fd1
sectrac? []: 10
secsize? [2]:
datalen? [0xff]:
gap? [0x1b]:
tracks? [80]:
size? []: 800
steptrac? [1]:
trans? []: 1
heads? []: 1
f_gap? [0x54]:
f_inter? [1]:

# hd /dev/fd1 |less

Note: The `trans' values come from the 'FDC_???KBPS' #defines in
fdreg.h. A value of 1 is 'FDC_300KBPS' which is different to the
specs you quoted, but I think the PC standard 5.25" drive runs at
360rpm rather than 300. For a 300rpm drive you probably want a
trans value of 2 (250kbps).

I just left the `gap' and `f_gap' values at their defaults; I don't
know the exact details of these fields, but I seem to remember that
they are only used during writing and formatting, so you can ignore
them for reading.

>for this project.  Any thumbnail about how to add a new type of drive
>to fd.c?  What parameters do I need for it?

You could add an entry to the fd_types array in fd.c, but that
requires linking the entry into a device node, so it's probably
easier to just use fdcontrol.

Ian

To Unsubscribe: send mail to [EMAIL PROTECTED]
with "unsubscribe freebsd-hackers" in the body of the message



Re: Strange request: Reading RX-50 (aka DEC Rainbow 100) disks

2001-06-13 Thread Terry Lambert

Warner Losh wrote:
> 
> I have the need to read a whole pile of DEC Rainbow 100 floppies.  I
> can do it on the DEC Rainbow, but that's a huge pita since it isn't
> networked.  I'd like to either connect a RX-50 drive to my machine, or
> use a 1.2M 5.25" floppy drive that I can scrounge easily enough to do
> the deed.
> 
> 80 tracks, 10 spt, 1 side.  400k in size.  I think it uses either
> 250kb/s or 300kb/s for the data transfer rate (same as the 3.5" low
> density drives, if my memory isn't going south).
> 
> Has anybody done this before?  Any pointers?

I did this all the time on Xenix, using "dd" and the single
sided device node.  See fdcontrol.

-- Terry

To Unsubscribe: send mail to [EMAIL PROTECTED]
with "unsubscribe freebsd-hackers" in the body of the message