ADC Membership Technical Business Join ADC
Search Advanced Search
NOTE: This Technical Note has been retired. Please see the Technical Notes page for current documentation.

Technical Note DV07
Forcing Floppy Disk Size to be Either 400K or 800K


This document explains how to initialize a disk as either single- or double-sided. It only applies to 800K drives, of course.

Updated: [February 01 1986]

Calling the disk driver

You can call the disk driver to initialize a disk and determine programmatically whether it should be initialized as single- (MFS) or double- (HFS) sided. All you have to do is call the .Sony driver directly to do the formatting then the Disk Initialization Package to write the directory information.

This is not the way you should normally format disks within an application. If the user puts in an unformatted disk, you should let her or him decide whether it becomes single- or double-sided via the Disk Initialization dialog. This automatically happens when you call DIBadMount or the user inserts a disk while in Standard File. The intent of this technical note is to provide a means for specific applications to produce, say, 400K disks. An example might be a production disk copying program.

From MPW Pascal:

      error:      OSErr;
      IPtr:       ^INTEGER;
      paramBlock: ParamBlockRec;     {needs OSIntf}
    WITH paramBlock DO BEGIN
       ioRefNum := -5;            {.Sony driver}
       ioVRefNum := 1;            {drive number}
       csCode := 6;            {format control code}
       IPtr:=@csParam;            {pretend it's an INTEGER}
       IPtr^:=1;                {number of sides}
    error:=PBControl(@paramBlock, FALSE);    {do the call}
    IF error=ControlErr THEN

    {you are under MFS, which doesn't support control code 6, but it}
    {would always get formatted single-sided anyway.}
    {other errors are possible: ioErr, etc.}


From MPW C:

    OSErr            error;
    CntrlParam        paramBlock;

    paramBlock.ioCRefNum = -5;    /*.Sony driver*/
    paramBlock.ioVRefNum = 1;    /*drive number*/
    paramBlock.csCode = 6;    /*format control code*/
    paramBlock.csParam[0]=1;     /*for single sided,2 for double-sided*/

    error=PBControl(&paramBlock, false);/*do the call*/
    if (error==controlErr) ;
    /*you are under MFS, which doesn't support control code 6, but it*/
    /*would always get formatted single-sided anyway.*/
    /*other errors are possible: ioErr, etc.*/

You then call DIZero to write a standard (MFS or HFS) directory. It will produce MFS if you formatted it single-sided, and HFS if you formatted double-sided.

Back to top


The Disk Driver

The Disk Initialization Package

Back to top


Acrobat gif

Acrobat version of this Note (52K)


Back to top

Technical Notes by Date | Number | Technology | Title
Developer Documentation | Technical Q&As | Development Kits | Sample Code

Gray line

Contact ADC |  ADC Site Map |  ADC Advanced Search
For information about Apple Products, please visit
Contact Apple | Privacy Notice
Copyright © 2002 Apple Computer, Inc. All rights reserved.