71 #define FLOPPY_SIZE_CODE 0x02 // 512 byte sectors 72 #define FLOPPY_DATALEN 0xFF // Not used - because size code is 0x02 73 #define FLOPPY_MOTOR_TICKS 37 // ~2 seconds 74 #define FLOPPY_FILLBYTE 0xF6 75 #define FLOPPY_GAPLEN 0x1B 76 #define FLOPPY_FORMAT_GAPLEN 0x6C 102 #pragma pack(push, 1) 132 if (DiskNumber & 0x80)
138 DPRINT1(
"GetDisk: HDD number 0x%02X invalid\n", DiskNumber | 0x80);
148 DPRINT1(
"GetDisk: Floppy number 0x%02X invalid\n", DiskNumber);
190 DPRINT1(
"BiosDiskService(0x00): Drive number 0x%02X invalid\n",
Drive);
209 BYTE LastOperationStatus = 0x00;
215 DPRINT1(
"BiosDiskService(0x01): Disk number 0x%02X invalid\n",
Drive);
231 setAH(LastOperationStatus);
232 if (LastOperationStatus == 0x00)
258 DPRINT1(
"BiosDiskService(0x02): Disk number 0x%02X invalid\n",
Drive);
276 DPRINT1(
"BiosDiskService(0x02): Error when reading from disk number 0x%02X (0x%02X)\n",
Drive,
Status);
304 DPRINT1(
"BiosDiskService(0x03): Disk number 0x%02X invalid\n",
Drive);
322 DPRINT1(
"BiosDiskService(0x03): Error when writing to disk number 0x%02X (0x%02X)\n",
Drive,
Status);
350 BYTE PresentDrives = 0;
357 DPRINT1(
"BiosDiskService(0x08): Disk number 0x%02X invalid\n",
Drive);
375 ((
HIBYTE(MaxCylinders) & 0x02) << 6));
410 setDL(PresentDrives);
447 DPRINT1(
"BiosDiskService(0x0C): Disk number 0x%02X is not a HDD\n",
Drive);
458 DPRINT1(
"BiosDiskService(0x0C): Disk number 0x%02X invalid\n",
Drive);
476 DPRINT1(
"BiosDiskService(0x0C): Error when seeking in disk number 0x%02X (0x%02X)\n",
Drive,
Status);
506 DPRINT1(
"BiosDiskService(0x10): Disk number 0x%02X is not a HDD\n",
Drive);
517 DPRINT1(
"BiosDiskService(0x10): Disk number 0x%02X invalid\n",
Drive);
539 DPRINT1(
"BiosDiskService(0x11): Disk number 0x%02X is not a HDD\n",
Drive);
550 DPRINT1(
"BiosDiskService(0x11): Disk number 0x%02X invalid\n",
Drive);
568 DPRINT1(
"BiosDiskService(0x11): Error when recalibrating disk number 0x%02X (0x%02X)\n",
Drive,
Status);
595 DPRINT1(
"BiosDiskService(0x15): Disk number 0x%02X invalid\n",
Drive);
639 DPRINT1(
"BIOS Function INT 13h, AH = 0x%02X, AL = 0x%02X, BH = 0x%02X NOT IMPLEMENTED\n",
BYTE WriteDisk(IN PDISK_IMAGE DiskImage, IN WORD Cylinder, IN BYTE Head, IN BYTE Sector, IN BYTE NumSectors)
struct _FLOPPY_PARAM_TABLE * PFLOPPY_PARAM_TABLE
static PDISK_IMAGE HardDrive[4]
BOOLEAN IsDiskPresent(IN PDISK_IMAGE DiskImage)
struct _HARDDISK_PARAM_TABLE HARDDISK_PARAM_TABLE
#define SEG_OFF_TO_PTR(seg, off)
#define RegisterBiosInt32(IntNumber, IntHandler)
_In_ WDFREQUEST _In_ PIO_STACK_LOCATION Stack
BYTE ReadDisk(IN PDISK_IMAGE DiskImage, IN WORD Cylinder, IN BYTE Head, IN BYTE Sector, IN BYTE NumSectors)
VOID WINAPI setES(USHORT)
struct _HARDDISK_PARAM_TABLE * PHARDDISK_PARAM_TABLE
static const FLOPPY_PARAM_TABLE_EX FloppyParamTable
struct _FLOPPY_PARAM_TABLE_EX * PFLOPPY_PARAM_TABLE_EX
VOID DiskBios32Post(VOID)
static VOID AllDisksReset(VOID)
static PDISK_IMAGE FloppyDrive[2]
_In_ HANDLE _Outptr_result_bytebuffer_ ViewSize PVOID * BaseAddress
FLOPPY_PARAM_TABLE FloppyParamTable
static PDISK_IMAGE GetDisk(IN BYTE DiskNumber)
BYTE LastDisketteOperation
#define FLOPPY_MOTOR_TICKS
VOID WINAPI setDX(USHORT)
#define BIOS_DISK_INTERRUPT
BOOLEAN DiskBios32Initialize(VOID)
VOID WINAPI setDI(USHORT)
struct _FLOPPY_PARAM_TABLE_EX FLOPPY_PARAM_TABLE_EX
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
#define FLOPPY_FORMAT_GAPLEN
PDISK_IMAGE RetrieveDisk(IN DISK_TYPE DiskType, IN ULONG DiskNumber)
VOID DiskBios32Cleanup(VOID)
BYTE SeekDisk(IN PDISK_IMAGE DiskImage, IN WORD Cylinder, IN BYTE Head, IN BYTE Sector)
VOID WINAPI setCX(USHORT)
struct _FLOPPY_PARAM_TABLE FLOPPY_PARAM_TABLE
VOID WINAPI BiosDiskService(LPWORD Stack)
#define RtlCopyMemory(Destination, Source, Length)