Windows NT 4.0 source code leak
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

276 lines
7.4 KiB

#include "insignia.h"
#include "host_def.h"
#ifndef PROD
/*
* VPC-XT Revision 1.0
*
* Title : Generic Floppy Interface Test Module
*
* Description : This module acts as a pseudo GFI diskette server, simply
* tracing out the calls made and returning success.
*
* Author : Henry Nash
*
* Notes : None
*
* Mods: (r3.2) : The system directory /usr/include/sys is not available
* on a Mac running Finder and MPW. Bracket references to
* such include files by "#ifdef macintosh <Mac file> #else
* <Unix file> #endif".
*/
#ifdef SCCSID
static char SccsID[]="@(#)gfi_test.c 1.9 08/03/93 Copyright Insignia Solutions Ltd.";
#endif
#ifdef SEGMENTATION
/*
* The following #include specifies the code segment into which this
* module will by placed by the MPW C compiler on the Mac II running
* MultiFinder.
*/
#include "SOFTPC_TEST_FLOPPY.seg"
#endif
/*
* O/S include files.
*/
#endif /* not PROD */
#include <stdio.h>
#include TypesH
#ifndef PROD
/*
* SoftPC include files
*/
#include "xt.h"
#include CpuH
#include "sas.h"
#include "bios.h"
#include "config.h"
#include "ios.h"
#include "trace.h"
#include "fla.h"
#include "gfi.h"
#include "gfitest.h"
/*
* ============================================================================
* Local static data and defines
* ============================================================================
*/
static void print_cmd();
/*
* ============================================================================
* External functions
* ============================================================================
*/
int gfi_test_command(command_block, result_block)
FDC_CMD_BLOCK *command_block;
FDC_RESULT_BLOCK *result_block;
{
UNUSED(result_block);
fprintf(trace_file, "GFI: Command received - ");
switch(get_c0_cmd(command_block))
{
case FDC_READ_TRACK : fprintf(trace_file, "Read a track\n");
print_cmd(command_block);
break;
case FDC_SPECIFY : fprintf(trace_file, "Specify\n");
print_cmd(command_block);
break;
case FDC_SENSE_DRIVE_STATUS : fprintf(trace_file, "Sense Drive Status\n");
print_cmd(command_block);
break;
case FDC_WRITE_DATA : fprintf(trace_file, "Write Data\n");
print_cmd(command_block);
break;
case FDC_READ_DATA : fprintf(trace_file, "Read Data\n");
print_cmd(command_block);
break;
case FDC_RECALIBRATE : fprintf(trace_file, "Recalibrate\n");
print_cmd(command_block);
break;
case FDC_SENSE_INT_STATUS : fprintf(trace_file, "<Illegal call> Sense Interrupt Status\n");
break;
case FDC_WRITE_DELETED_DATA : fprintf(trace_file, "Write Deleted Data\n");
print_cmd(command_block);
break;
case FDC_READ_ID : fprintf(trace_file, "Read ID\n");
print_cmd(command_block);
break;
case FDC_READ_DELETED_DATA : fprintf(trace_file, "Read Deleted Data\n");
print_cmd(command_block);
break;
case FDC_FORMAT_TRACK : fprintf(trace_file, "Format a track\n");
print_cmd(command_block);
break;
case FDC_SEEK : fprintf(trace_file, "Seek\n");
print_cmd(command_block);
break;
case FDC_SCAN_EQUAL : fprintf(trace_file, "Scan Equal\n");
print_cmd(command_block);
break;
case FDC_SCAN_LOW_OR_EQUAL : fprintf(trace_file, "Scan Low or Equal\n");
print_cmd(command_block);
break;
case FDC_SCAN_HIGH_OR_EQUAL : fprintf(trace_file, "Scan High or Equal\n");
print_cmd(command_block);
break;
default : fprintf(trace_file, "Unknown command %x\n", get_c0_cmd(command_block));
break;
}
return(SUCCESS);
}
int gfi_test_drive_on(drive)
int drive;
{
fprintf(trace_file, "GFI: Drive on command - drive %x\n", drive);
return(SUCCESS);
}
int gfi_test_drive_off(drive)
int drive;
{
fprintf(trace_file, "GFI: Drive off command - drive %x\n", drive);
return(SUCCESS);
}
int gfi_test_high(drive)
int drive;
{
fprintf(trace_file, "GFI: Set high density command - drive %x\n", drive);
return(SUCCESS);
}
int gfi_test_drive_type(drive)
int drive;
{
fprintf(trace_file, "GFI: Drive type command - drive %x\n", drive);
return(GFI_DRIVE_TYPE_360);
}
int gfi_test_change(drive)
int drive;
{
fprintf(trace_file, "GFI: Disk changed command - drive %x\n", drive);
return(TRUE);
}
int gfi_test_reset(result_block)
FDC_RESULT_BLOCK *result_block;
{
UNUSED(result_block);
fprintf(trace_file, "GFI: Reset command\n");
return(SUCCESS);
}
/*
* ============================================================================
* Internal functions
* ============================================================================
*/
static void print_cmd(cmd_block)
FDC_CMD_BLOCK *cmd_block;
{
switch(gfi_fdc_description[get_type_cmd(cmd_block)].cmd_class)
{
case 0 : fprintf(trace_file, "MT: %x MFM: %x Skip: %x Head: %x Drive: %x\n",
get_c0_MT(cmd_block), get_c0_MFM(cmd_block),
get_c0_skip(cmd_block),
get_c0_head(cmd_block), get_c0_drive(cmd_block));
fprintf(trace_file, "Cyl: %x Hd: %x Sec: %x N: %x EOT: %x GPL: %x DTL: %x\n",
get_c0_cyl(cmd_block), get_c0_hd(cmd_block),
get_c0_sector(cmd_block), get_c0_N(cmd_block),
get_c0_EOT(cmd_block), get_c0_GPL(cmd_block),
get_c0_DTL(cmd_block));
break;
case 1 : fprintf(trace_file, "MT: %x MFM: %x Head: %x Drive: %x\n",
get_c1_MT(cmd_block), get_c1_MFM(cmd_block),
get_c1_head(cmd_block), get_c1_drive(cmd_block));
fprintf(trace_file, "Cyl: %x Hd: %x Sec: %x N: %x EOT: %x GPL: %x DTL: %x\n",
get_c1_cyl(cmd_block), get_c1_hd(cmd_block),
get_c1_sector(cmd_block), get_c1_N(cmd_block),
get_c1_EOT(cmd_block), get_c1_GPL(cmd_block),
get_c1_DTL(cmd_block));
break;
case 2 : fprintf(trace_file, "MFM: %x Head: %x Drive: %x\n",
get_c2_MFM(cmd_block), get_c2_head(cmd_block),
get_c2_drive(cmd_block));
fprintf(trace_file, "Cyl: %x Hd: %x Sec: %x N: %x EOT: %x GPL: %x DTL: %x\n",
get_c2_cyl(cmd_block), get_c2_hd(cmd_block),
get_c2_sector(cmd_block), get_c2_N(cmd_block),
get_c2_EOT(cmd_block), get_c2_GPL(cmd_block),
get_c2_DTL(cmd_block));
break;
case 3 : fprintf(trace_file, "MFM: %x Head: %x Drive: %x\n",
get_c3_MFM(cmd_block), get_c3_head(cmd_block),
get_c3_drive(cmd_block));
fprintf(trace_file, "N: %x SC: %x GPL: %x Fill: %x\n",
get_c3_N(cmd_block), get_c3_SC(cmd_block),
get_c3_GPL(cmd_block), get_c3_filler(cmd_block));
break;
case 4 : fprintf(trace_file, "MFM: %x Head: %x Drive: %x\n",
get_c4_MFM(cmd_block), get_c4_head(cmd_block),
get_c4_drive(cmd_block));
break;
case 5 : fprintf(trace_file, "Drive: %x\n", get_c5_drive(cmd_block));
break;
case 6 : fprintf(trace_file, "SRT: %x HUT: %x HLT: %x ND: %x\n",
get_c6_SRT(cmd_block), get_c6_HUT(cmd_block),
get_c6_HLT(cmd_block), get_c6_ND(cmd_block));
break;
case 7 : fprintf(trace_file, "Head: %x Drive: %x\n",
get_c7_head(cmd_block), get_c7_drive(cmd_block));
break;
case 8 : fprintf(trace_file, "Head: %x Drive: %x New cyl: %x\n",
get_c8_head(cmd_block), get_c8_drive(cmd_block),
get_c8_new_cyl(cmd_block));
break;
}
}
#endif /* nPROD */