schoepf@DMZRZU71.BITNET (05/27/87)
I'm the proud owner of a hard disk. I installed three partitions with 10, 6 and 4 MB and worked with them until last week when suddenly the disk broke down. What happened? After three days (and some nights) of work I discovered that the HDX program wrote bad partition information onto the disk boot sector. Investigation of other hard disks showed that this seems to happen if you do not choose one of the partition defaults. To be more specific: I started from default 4-6-10 and changed it to 10-6-4. The HDX program correctly computed the new partition sizes, but did not change the partition start sectors. This means that partition #2 started after 4 Megabytes occupying the same space as the last 6 MB of partition #1. Needless to say what happened after I reached the 4 MB limit on #1. The first sector of every partition is that partition's boot sector containing the information how it is structured: length of FAT, length of directory, start of FAT/directory etc. Overwriting this will confuse BIOS and hard disk driver. The bios parameter block you get from BIOS will contain real garbage. Trying to access this partition from TOS probably bombs the system. Even worse: if you start your desktop with a window for this damaged partition GEM will not even finish booting. There is *NO* protection at all against errors while your DESKTOP.INF file is being read and processed by GEM. OK, so you boot again with a Floppy containing a new DESKTOP.INF.. BUT if you boot from the hard disk you have no chance to delete the DESKTOP.INF, because to delete it you need the hard disk switched on and connected before booting, but booting does not work... You got no chance -- formatting is also impossible. (How I got out of this CATCH-22 situation? See below!) THIS IS A VERY BAD BUG. After some weeks or months of decent work it jumops at you from behind and you don't know why and how to get away from it. There is no documentation how to access the hard disk boot sector. (We found it out by disassembling the hard disk driver -- took half a day of two people's time). MORAL: Hard disk owners, BEWARE! DO NOT CHOOSE YOUR OWN PARTITION SIZES UNTIL THIS IS FIXED! But what if it really happens? There is a way around. You need a floppy with an executable boot sector that starts GEM. Then you start the hard disk driver, delete DESKTOP.INF and/or deinstall the hard disk boot program, etc. If everything fails you'll have to reformat the hard disk. But how do you generate this special boot sector? Well, there is a XBIOS function... I include the little assembler program that I used: ********************************CUT HERE*********************** text * * First: generate boot sector contents in memory * move.w #1,-(a7) * make boot sector executable move.w #3,-(a7) * 2 = single sided, 3 = double sided move.l #$2000000,-(a7) * generate random serial number pea BOOT(pc) * buffer for boot sector move.w #18,-(a7) * 18 = PROTOBT trap #14 * XBIOS add.l #14,a7 * * Then: write boot sector to disk, side 0, track 0, sector 1 * move.w #1,-(a7) * count move.w #0,-(a7) * side move.w #0,-(a7) * track move.w #1,-(a7) * sector move.w #0,-(a7) * device clr.l -(a7) * filler pea BOOT(pc) * buffer move.w #9,-(a7) * 9 = FLOPWR trap #14 * XBIOS add.l #20,a7 * * Last: stop running * clr.w -(a7) trap #1 * * BUFFER for boot sector, must be 512 bytes long * BOOT bra start(pc) * bra to start of boot code dc.b 0,0,0,0,0,0 * unused ds.b 22 * reserved for disk parameter block start move.l (a7)+,a5 * prepare for double return move.l (a7)+,a5 * dito pea null(pc) * empty environment string pea null(pc) * no arguments pea null(pc) * no filename move.w #5,-(a7) * create basepage move.w #$4b,-(a7) * Pexec trap #1 * TOS add.l #14,a7 move.l d0,a0 * save address of base page move.l $4fe,8(a0) * fill in GEM's start address pea null(pc) * no environment move.l a0,-(a7) * base page address pea null(pc) * no filename move.w #4,-(a7) * start program move.w #$4b,-(a7) * Pexec trap #1 * TOS add.l #14,a7 jmp (a5) null dc.l 0 * * reserve enough space (actually too much, but it doesn't matter) * ds.b 512 end ***************************CUT HERE************************** In the hope that nobody else will spend his/her days and nights on this any more, Rainer Schoepf <SCHOEPF@DMZRZU71.BITNET>
dyer@atari.UUCP (Landon Dyer) (05/28/87)
in article <8705271449.AA18225@ucbvax.Berkeley.EDU>, schoepf@DMZRZU71.BITNET says: > > > I'm the proud owner of a hard disk. I installed three partitions with > 10, 6 and 4 MB and worked with them until last week when suddenly the > disk broke down. What happened? > > After three days (and some nights) of work I discovered that the HDX > program wrote bad partition information onto the disk boot sector. > Investigation of other hard disks showed that this seems to happen if > you do not choose one of the partition defaults. > > [etc...] Right. This (serious) bug was fixed a *long* time ago in Revision 8 of HDX; when you pull down the "About HDX..." menu, you should see a date of September 29, 1986 (or later). If you have an earlier version of HDX, or you know friends that do, get thee hence to your dealer and get an update. -- -Landon Dyer, Atari Corporation {sun,amdcad,lll-lcc,imagen}!atari!dyer The views expressed here do not necessarily reflect those SEGMENTS of Atari or the AI software that has taken over my brain. ARE FOR Yow! I am waiting for my warranty-expired interrupt! WORMS