📄 init.c
字号:
/*
// Program: Format
// Version: 0.90d
// (0.90b/c/d - DMA friendly buffer movement - Eric Auer - May 2003)
// Written By: Brian E. Reifsnyder
// Copyright: 2002 under the terms of the GNU GPL, Version 2
// Module Name: init.c
// Module Description: Program initialization functions.
*/
#include <stdlib.h>
#include "format.h"
#include "driveio.h" /* sector buffers */
void Setup_DDPT(void);
void Initialization(void)
{
int bad_sector_map_pointer=0;
unsigned long int where;
sector_buffer = §or_buffer_0[0];
where = FP_SEG(sector_buffer);
where <<= 4;
where += FP_OFF(sector_buffer);
if ((where & 0xffff) > (0xffff - 512)) {
sector_buffer = §or_buffer_1[0];
where = FP_SEG(sector_buffer);
where <<= 4;
where += FP_OFF(sector_buffer);
printf("DMA tuning: using alternative sector_buffer\n");
}
if ((where & 0xffff) > (0xffff - 512)) {
printf("DMA tuning: CANNOT move sector buffer away from boundary!?\n");
}
huge_sector_buffer = &huge_sector_buffer_0[0];
where = FP_SEG(huge_sector_buffer);
where <<= 4;
where += FP_OFF(huge_sector_buffer);
if ( (where & 0xffff) > (0xffff - sizeof(huge_sector_buffer_0)) ) {
huge_sector_buffer = &huge_sector_buffer_1[0];
where = FP_SEG(sector_buffer);
where <<= 4;
where += FP_OFF(sector_buffer);
printf("DMA tuning: using alternative huge_sector_buffer\n");
}
if (debug_prog==TRUE) {
printf("[DEBUG] 1 sector buffer at %4.4x:%4.4x,\n",
FP_SEG(sector_buffer), FP_OFF(sector_buffer));
printf("[DEBUG] 1 track buffer at %4.4x:%4.4x\n",
FP_SEG(huge_sector_buffer), FP_OFF(huge_sector_buffer));
}
param.drive_letter[0]=NULL;
param.volume_label[0]=NULL;
param.drive_type=0; /* not NULL; */
param.drive_number=0; /* not NULL; */
param.fat_type=0; /* not NULL; */
param.media_type=UNKNOWN;
param.force_yes=FALSE;
param.verify=TRUE;
param.v=FALSE;
param.q=FALSE;
param.u=FALSE;
param.f=FALSE;
param.b=FALSE;
param.s=FALSE;
param.t=FALSE;
param.n=FALSE;
param.one=FALSE;
param.four=FALSE;
param.eight=FALSE;
param.size=UNKNOWN;
param.cylinders=0;
param.sectors=0;
drive_statistics.bytes_in_bad_sectors=0;
segread(&sregs);
/* Clear bad_sector_map[]. */
do
{
bad_sector_map[bad_sector_map_pointer]=0;
bad_sector_map_pointer++;
}while(bad_sector_map_pointer<MAX_BAD_SECTORS);
Setup_DDPT();
}
void Setup_DDPT(void)
{
/* Get the location of the DDPT */
regs.h.ah =0x35;
regs.h.al =0x1e;
intdosx(®s, ®s, &sregs);
ddpt = MK_FP(sregs.es, regs.x.bx);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -