| Title: | Atari ST, TT, & Falcon | 
| Notice: | Please read note 1.0 and its replies before posting! | 
| Moderator: | FUNYET::ANDERSON | 
| Created: | Mon Apr 04 1988 | 
| Last Modified: | Tue May 06 1997 | 
| Last Successful Update: | Fri Jun 06 1997 | 
| Number of topics: | 1433 | 
| Total number of notes: | 10312 | 
Hi, can anyone help me regarding the use of an xbios call.
I am trying to write a 'FAT' format program in C (Laser), the format
part of the program (I'm trying 10 sectors 81 tracks) works fine. 
My problem arises when I try to create the boot block. I make a call
to Protobt(buf,serialno,disktype,execflag) where
disktype 0 - single sided 180K 40 tracks
         1 - double  "    360K  "  "
         2 - single  "    360K 80  "
         3 - double  "    720K 80  "
I need to know what disktype to use (it's obviously none of the above,
how much should I expect from 10 sectors 81 tracks ?).
The macro for Protobt in osbind.h is...
	xbios(18,buf,serialno,disktype,execflag)
Sooo if anyone knows what disktype I need to specify (and how they know!)
please shout......
			Thanks in advance,
				Andrew
| T.R | Title | User | Personal Name | Date | Lines | 
|---|---|---|---|---|---|
| 516.1 | You might have to roll your own boot block. | 5319::LOMICKAJ | Jeff Lomicka | Thu Jun 22 1989 10:25 | 3 | 
| I think you'll have to foramt your own boot block. Do you have the format? You can loot it up in any MSDOS documentation. | |||||
| 516.2 | Oh well | AYOV27::FAMIS_DEVSYS | Thu Jun 22 1989 11:21 | 6 | |
|     Jeff, thanks for the reply - I have no idea how to format my own
    boot block or access to documentation, I seem to recall seeing a
    book 'Atari ST disk drive internals' or something like that. Looks
    like I'll have to buy it!!, thanks anyway...
    
    		Andrew
 | |||||
| 516.3 | BOOTBLOCK Program here | CALYPS::SHARPE | Tue Jul 04 1989 15:46 | 63 | |
|     Andrew, here is a program that I use to format floppy's on my ST.  I
    lifted most of the code from on of the START magazines if I remember
    correctly.  It has the BOOTBLOCK info you want in it.  Have Fun!
    
    Mike Sharpe
/*
	Program to format a floppy disk with a disk name
*/
#include <osbind.h>
#include <stdio.h>
main()
{
	static char buf[20000];
	int i;
	long l;
	for (i=0; i<81; i++) {
		printf("\rFormat track %02d", i); fflush(stdout);
		if (Flopfmt(buf, 0L, 1, 10, i, 0, 1, 0x87654321L, 0xe5e5))
			printf("  Error on track %02d", i);
		if (Flopfmt(buf, 0L, 1, 10, i, 1, 1, 0x87654321L, 0xe5e5))
			printf("  Error on track %02d", i);
	}
	for (i=0; i<10*512; i++)
		buf[i] = 0;
	puts("Zero track 0 & 1");
	Flopwr(buf, 0L, 1, 1, 0, 0, 10);
	Flopwr(buf, 0L, 1, 1, 0, 1, 10);
	Flopwr(buf, 0L, 1, 1, 1, 0, 10);
	Flopwr(buf, 0L, 1, 1, 1, 1, 10);
	puts("Build prototype boot block");
	Protobt(buf, 0x01000000L, 3, 0);
	/* buf[X] = Y where X and Y are DECIMAL EQUIVELENTS of HEX VALUES */
	/* now change the number of sectors */
	buf[19] = 64;
	buf[20] = 06;
	/* now change the sectors per track entry.  (10 not 9) */
	buf[24] = 10;
	puts("Write it to disk");
	Flopwr(buf, 0L, 1, 1, 0, 0, 1);
	/* buf[X] = Y where X and Y are DECIMAL EQUIVELENTS of HEX VALUES */
	/* begin entering the disk name here */
	/* put zeros into floppy buffer here */
	for (i=0; i<10*512; i++)
			buf[i] = 0;
	printf("Enter Disk Name here: ");
	/* input disk name here */
	scanf("%s", buf);
	/* put end of disk name byte in buffer here */
	buf[11] = 08;
	Flopwr(buf, 0L, 1, 2, 0, 1, 1);
	/* end disk name entry here */
}
 | |||||