[comp.sys.ibm.ps2.hardware] patching LLFORMAT.COM

boegehol@informatik.uni-stuttgart.de (Harald Boegeholz) (07/30/90)

In article <S33966R.90Jul22123149@kaira.hut.fi> s33966r@kaira.hut.fi (Juha Hulkkonen) writes:
>   ... So, if you could provide the patched llformat or a
>   pointer to any other suitable low-level formating program I'd be more
>   than happy  ;-)

Here it is...
To format a non-IBM ESDI harddisk in a Model 60, one has to
convince the controller to ignore the absence of the "primary
defect map" which can be found on the second last cylinder
of an IBM disk.

The program LLFORMAT.COM supplied on the reference diskette of
my IBM PS/2 Model 60-071 uses the following code to format the
hard disk:

339D:81B1 B41A           MOV	AH,1A 
339D:81B3 B000           MOV	AL,00 
339D:81B5 8A166472       MOV	DL,[7264] 
339D:81B9 B114           MOV    CL,14     ; *** CHANGE TO MOV CL,15
            ^^                                                   ^^
339D:81BB 0A0ED376       OR	CL,[76D3] 
339D:81BF CD13           INT	13 
339D:81C1 7210           JB	81D3 
339D:81C3 B41A           MOV	AH,1A 
339D:81C5 B000           MOV	AL,00 
339D:81C7 8A166472       MOV	DL,[7264] 
339D:81CB B11C           MOV    CL,1C     ; *** CHANGE TO MOV CL,1D
            ^^                                                   ^^
339D:81CD 0A0ED376       OR	CL,[76D3] 
339D:81D1 CD13           INT	13 
339D:81D3 C3             RET	 

The "IBM Personal System/2 and Personal Computer BIOS Interface
Technical Reference" has the following to say about this BIOS call:

INT 13H

AH=1AH  (Format Unit)
AL=defect table block count
ES:BX=address of defect block table
CL=Modifier bits:
  7  0
  6  0
  5  0
  4  enable periodic interrupt
  3  perform extended surface analysis
  2  update secondary defect map
  1  ignore secondary defect map
  0  ignore primary defect map
DL=drive number

So all one has to do is apply the changes indicated above (i.e., set
the "ignore primary defect map" bit) and use the reference diskette 
to format the disk as usual. By "as usual", I mean boot with
the reference diskette, press Ctrl+A at the main menu (undocumented
feature, as Muriel Rosenberg pointed out) and follow the prompts.

Note that the address of the routine will probably be different
since I have the German version of the reference diskette. Also note
that this code is used for the Model 60 with an "ESDI Fixed Disk Drive
Adapter/A". The LLFORMAT.COM for the Model 80 contains the same
routine (at a different address), so the patch should work there, too.
I wasn't able to test this, though.

I used the above method successfully for a NEC D5655 hard disk (140MB).
Other ESDI hard disks with up to 10MB/s transfer rate should work as well.


Harald Boegeholz