logoalt Hacker News

snakeyjake11/08/20241 replyview on HN

The user doesn't need the string the Apple software scanned the ROM of the hard drive and looked for specific vendor IDs before proceeding.

For the most part (there were EXTREMELY rare exceptions) the only strings that would pass were specific custom models of widely-available drives that were only sold to apple.

FWB did not check.

You could use ResEdit to haxxor the list:

http://www.euronet.nl/users/ernstoud/drvsetup.html

I cannot believe that page is still online. I first referenced it ON a PPC Mac running netscape. My flabbers are gasted.


Replies

tzs11/09/2024

Early versions of FWB did do some checking. It wasn't nearly as picky as Apple's checks for specific drive models, but it did check for several manufacturers.

That's because there were vendor specific settings that it wanted to set and some vendor differences in getting some information. There was support for a generic drive but there was a compile time option that controlled whether or not it allowed it and I don't remember what that was set to on release builds.

Source: I worked at the contracting company that wrote FWB's early versions and am looking at the source right now to jog my memory. :-) (My current employer owns the IP of that contracting company and knows and is OK with me having these ancient files).

Here's the command dispatch table from mid 1990 to show what drives it recognized and which ones needed vendor specific routines.

  struct command_switch
  {
 int (*read)();  /* read command */
 int (*write)();  /* write command */
 int (*format)(); /* format device */
 int (*findsize)(); /* find limits of device */
 int (*setup)();  /* setup device paramters */
 int (*verblock)(); /* verify track */
 int (*ready)();  /* test unit ready */
 int (*rezero)(); /* rezero */
 int (*reassign)(); /* reassign block */
  } CmdSwitch[9] =
  {
 {
  OMTIread, OMTIwrite, OMTIformat, OMTIfindsize,
  OMTIsetup, OMTIvertrack, OMTIready, OMTIrezero, OMTIreassign
 },
 {
  SEAGATEread, SEAGATEwrite, SEAGATEformat, SEAGATEfindsize,
  SEAGATEsetup, SEAGATEvertrack, SEAGATEready, SEAGATErezero, SEAGATEreassign
 },
 {/* QUANTUM */
  SEAGATEread, SEAGATEwrite, SEAGATEformat, QUANTUMfindsize,
  QUANTUMsetup, SEAGATEvertrack, SEAGATEready, SEAGATErezero, SEAGATEreassign
 },
 {/* CONNER */
  SEAGATEread, SEAGATEwrite, SEAGATEformat, CONNERfindsize,
  nulldev, SEAGATEvertrack, SEAGATEready, SEAGATErezero, SEAGATEreassign
 },
 {/* WREN3 */
  SEAGATEread, SEAGATEwrite, SEAGATEformat, QUANTUMfindsize,
  CDCsetup, SEAGATEvertrack, SEAGATEready, SEAGATErezero, SEAGATEreassign
 },
 {/* DEFAULT */
  SEAGATEread, SEAGATEwrite, SEAGATEformat, GENERICfindsize,
  nulldev, SEAGATEvertrack, SEAGATEready, SEAGATErezero, SEAGATEreassign
 },
 {/* SyQuest */
  SEAGATEread, SEAGATEwrite, SEAGATEformat, SYQUESTfindsize,
  nulldev, SEAGATEvertrack, SEAGATEready, SEAGATErezero, SEAGATEreassign
 },
 {/* Sony optical */
  SEAGATEread, SEAGATEwrite, SONYformat, SONYfindsize,
  SONYsetup, SEAGATEvertrack, SEAGATEready, SEAGATErezero, SEAGATEreassign
 },
 {/* Ricoh optical */
  SEAGATEread, SEAGATEwrite, RICOHformat, RICOHfindsize,
  nulldev, SEAGATEvertrack, SEAGATEready, SEAGATErezero, RICOHreassign
 },
  };
I know this is from 1990 because somehow the timestamps on the files have survived. Those files went from a Mac II to a Centris 650 to a series of PCs (with Windows or Linux) to a Power Mac G5 to an Intel iMac to an Intel Mac Pro to another Intel iMac and finally to a Mac Studio. Somewhere along there resource forks got lost, and the project files for whatever compiler I was using in 1990, but still I'm surprised at how much is still around.
show 1 reply