• Please review our updated Terms and Rules here

CMOS setting spoof or 1701 bypass

famicomaster2

Experienced Member
Joined
Feb 3, 2017
Messages
315
Location
Southeastern US
Hello, as mentioned in my other thread, I am attempting to recover data from several vintage hard disks (which came with controllers) that were given to me by a friend of the family. Large cardboard box of mostly MFM/RLL drives and controllers.
The current pair is:
DTC 5150XL (BIOS CXD23A) and a Shugart 712.

The Shugart drive is working fine. It spins up, seeks to track 0 and asserts it's READY signal like it's supposed to. However, during the boot process, one of two things will happen:
-Nothing happens at all and the machine hangs
-1701 error and the machine hangs
It definitely is hanging, I can leave it for an hour and come back to no change at all. Sometimes even control+alt+delete does not work, and I have to hit the reset button on the computer.

However, I have noticed that if I leave the control interface of the disk disconnected during the boot, I only get "Primary master hard disk fail" and I can press F1 to continue to boot to DOS, at which point I can reconnect the drive. Some software, such as HDAT.COM can actually still access the drive - It passes a seek test and despite some read errors it seems to be able to read/write/verify from the disk just fine.
Unfortunately, because the machine booted without it connected, almost no software is aware of it's presence. I am thinking this is because the CMOS flag for it is cleared for the "disk fail" message.

The way I see it, there are two solutions here: I can "spoof" the CMOS results to make software see the drive after it has booted. I was at one point aware of a utility which could do this, but it has been many years.
The other solution is to just "fix" the 1701 error. Does anyone have a readout on what DTC's error codes are? I have not found a listing anywhere, and I've only got their little installation manual which is similarly unhelpful. 1701 is a general disk system fault, but it is also printing numbers in parenthesis in what seems like an attempt to be more helpful.

Tl;dr Can I force DOS software to recognize a drive that wasn't present on boot, or how do I fix a generic 1701 error?

Thanks in advance for any help.


EDIT: Added 5150XL BIOS revision
 
Last edited:
Yes, the controller was in a static bag with the disk, all of the disks were. Lucky me!

I have other controllers of the same model which I've tried for the same result. The numbers after the 1701 are always one of the following:
(00) (01) (04) (20)

I hope to get some of these working because after recovering whatever data I can, I would like to performance test some of these drives.
 
What's the number after the 1701 error?
With the drive disconnected: 1701(20) and the system hangs
With the drive connected: Nothing happens and the system hangs
Without jumper W2/1 (BIOS enable): System boots to DOS prompt and the disk is accessible from HDAT but nothing else
Without jumper W2/4 (I/O address): 1701(00) and the system hangs
With drive select as DS2: 1701(04) and the system hangs
 
Hmm. Is there any way to bypass the error and just have the machine continue booting? I've noticed some other drives/controllers will just outright hang the system on boot regardless. This includes some IDE drives I have - The access lamp will flash and then the system will hang indefinitely.

That and it would be nice to "trick" the other applications into at least seeing the drive so I could get data off it.
 
Is there a reason I can't change the CMOS settings while the machine is already at the DOS prompt? I recall doing this with an AT once, but I do not remember what the software was.
 
The DTC 5150 is an 8 bit controller intended for the PC/XT family of systems. It doesn't even know that CMOS exists on your system.
This has nothing to do with the DTC5150XL - The software running on the machine looks at the CMOS to know if a hard disk is present. When the hard disk "fails," the CMOS does not report a disk, but the hardware is still accessible.

All I need to do is tell a few pieces of software that there is a drive there and it'll be fine.
 
What software running on the machine? It's not using Int 13h services? If it is, those services are furnished by the 5150XL BIOS extension ROM. Or have you disabled that?

I'm very confused over what you're trying to tell us.
 
Just some easy examples, HDAT.COM, a disk maintenance program I mentioned in the first post, will work regardless as long as the disk is connected.
However, FDISK, SpeedStor, SpinRite, Norton Commander, etc all list "No disk" or "Inaccessible controller"

I find it strange that HDAT.COM is just fine operating the drive but other software can't even see the controller. My guess is that HDAT is just ignoring the CMOS flags entirely and talking to the I/O port on which the controller resides anyways, whereas the other software is checking the CMOS flags for a disk before it even attempts to look for a controller.
 
The programs you mentioned do use INT 13h services, which is what reports the number of functioning drives. This applies to PC/XT which has no CMOS as well.

However, if you want to see what a direct access program might do, try the attached utility. Do observe that an XT-class controller is very different from an AT-class one (different I/O ports, DMA vs. programmed I/O, etc.). Something I wrote in the 1990s that employs code from a hard disk imager that I wrote.
 

Attachments

  • idesdi.zip
    9.2 KB · Views: 5
I have had similar problems in the past with a WD1006V (16-bit AT class controller), which I never got around. System hang during boot.

I'll write that to a disk and try it next - Does it work with DOS6?
 
Since it's a real-mode DOS program, it shouldn't matter. Just probes I/O ports and tries to go from there.
IDESDI reports, for a WD Caviar 21000 (master on ATA channel 2)
"A directly-accessible controller was not found. This system either has no hard disk or uses a SCSI interface."

IDESDI reports, for an IBM type 0665 attached to my DTC 7287 (primary disk controller)
"An AT controller was found" but reported totally insane and incorrect geometry.
"Cylinders -55 Heads 2 Sectors 17"
The actual geometry of this disk is 733/7/26.
Geometry was only reported on the first run - Afterwards it just says "An AT controller was found."

The machine is booted off the 0665 running DOS 6.22.

Next I attached a new old stock Seagate ST-506 to the same DTC 7287 as before. Did not change any jumpers and the controller is in the same slot with the same cables.
Booting with the drive attached, the machine hangs after "DTC CONTROLLER RAM CHECK...OK More than 2 drives in the system"
Power machine off, disconnect control cable, power machine back on. "Primary hard disk fail," press F1 to continue. Boot from floppy (Connected to the DTC card). Reconnect drive control cable. From DOS prompt, "idesdi".
"An AT controller was found" and the system hangs.

Thoughts? This is a brand new drive, I could see it being bad but this seems like software error.
 
Well, it's a 20 year old program. Could be that the 5150 doesn't play nice with a standard AT controller.

Machines faster than a 386 or 486 may not work with it. Have you tried installing the DTC controller (I have one here) in a PC/XT?
 
Those tests were done with the DTC 7287 which came out of my IBM AT and a known working drive which booted the system to the point I could run the program. It's working just fine in that case. Haven't tried the 5150XL yet because it didn't even work right with a known working setup.

I do not have access to my XT or AT right now because of a recent move and will not have access to them for a few weeks yet.
 
There's a huge difference between the 7287 (AT controller) and the 5150XL (XT controller). To get an idea of the port assignments (in case you want to fool around with it), consult the IBM XT Techref--source code for the XT controller is present.
Of course, you're not going to be able to read old data written by a 5150XL with a 7287--the address IDs, etc. are completely different.
 
Back
Top