165{
168
170 {
171
172 case 0x00:
173 {
175
177 {
179
180
183 break;
184 }
185
187
189 {
190 DPRINT1(
"BiosDiskService(0x00): Drive number 0x%02X invalid\n",
Drive);
191
192
195 break;
196 }
197
198
199
200
203 break;
204 }
205
206
207 case 0x01:
208 {
209 BYTE LastOperationStatus = 0x00;
210
214 {
215 DPRINT1(
"BiosDiskService(0x01): Disk number 0x%02X invalid\n",
Drive);
216
217
220 break;
221 }
222
224
227 else
229
230
231 setAH(LastOperationStatus);
232 if (LastOperationStatus == 0x00)
234 else
236
237 break;
238 }
239
240
241 case 0x02:
242 {
246
247
248
250
251
253
257 {
258 DPRINT1(
"BiosDiskService(0x02): Disk number 0x%02X invalid\n",
Drive);
259
260
263 break;
264 }
265
266
269 {
270
273 }
274 else
275 {
276 DPRINT1(
"BiosDiskService(0x02): Error when reading from disk number 0x%02X (0x%02X)\n",
Drive,
Status);
277
278
281 }
282
283 break;
284 }
285
286
287 case 0x03:
288 {
292
293
294
296
297
299
303 {
304 DPRINT1(
"BiosDiskService(0x03): Disk number 0x%02X invalid\n",
Drive);
305
306
309 break;
310 }
311
312
315 {
316
319 }
320 else
321 {
322 DPRINT1(
"BiosDiskService(0x03): Error when writing to disk number 0x%02X (0x%02X)\n",
Drive,
Status);
323
324
327 }
328
329 break;
330 }
331
332
333 case 0x04:
334
335
336 case 0x05:
337
338
339 case 0x06:
340
341
342 case 0x07:
344
345
346 case 0x08:
347 {
350 BYTE PresentDrives = 0;
352
356 {
357 DPRINT1(
"BiosDiskService(0x08): Disk number 0x%02X invalid\n",
Drive);
358
359
362 break;
363 }
364
365
366
367
369
371
372
373
375 ((
HIBYTE(MaxCylinders) & 0x02) << 6));
376
378
380
382 {
383
385 {
387 ++PresentDrives;
388 }
389
390
391
392
393
394
395
396 }
397 else
398 {
399
401 {
403 ++PresentDrives;
404 }
405
406
409 }
410 setDL(PresentDrives);
411
414
415
418 break;
419 }
420
421
422 case 0x09:
423
424
425 case 0x0A:
426
427
428 case 0x0B:
430
431
432 case 0x0C:
433 {
436
437
438
440
441
443
446 {
447 DPRINT1(
"BiosDiskService(0x0C): Disk number 0x%02X is not a HDD\n",
Drive);
448
449
452 break;
453 }
454
457 {
458 DPRINT1(
"BiosDiskService(0x0C): Disk number 0x%02X invalid\n",
Drive);
459
460
463 break;
464 }
465
466
469 {
470
473 }
474 else
475 {
476 DPRINT1(
"BiosDiskService(0x0C): Error when seeking in disk number 0x%02X (0x%02X)\n",
Drive,
Status);
477
478
481 }
482
483 break;
484 }
485
486
487 case 0x0D:
488 {
489
491 }
492
493
494 case 0x0E:
495
496
497 case 0x0F:
499
500
501 case 0x10:
502 {
505 {
506 DPRINT1(
"BiosDiskService(0x10): Disk number 0x%02X is not a HDD\n",
Drive);
507
508
511 break;
512 }
513
516 {
517 DPRINT1(
"BiosDiskService(0x10): Disk number 0x%02X invalid\n",
Drive);
518
519
522 break;
523 }
524
525
528 break;
529 }
530
531
532 case 0x11:
533 {
535
538 {
539 DPRINT1(
"BiosDiskService(0x11): Disk number 0x%02X is not a HDD\n",
Drive);
540
541
544 break;
545 }
546
549 {
550 DPRINT1(
"BiosDiskService(0x11): Disk number 0x%02X invalid\n",
Drive);
551
552
555 break;
556 }
557
558
561 {
562
565 }
566 else
567 {
568 DPRINT1(
"BiosDiskService(0x11): Error when recalibrating disk number 0x%02X (0x%02X)\n",
Drive,
Status);
569
570
573 }
574
575 break;
576 }
577
578
579 case 0x12:
580
581
582 case 0x13:
583
584
585 case 0x14:
587
588
589 case 0x15:
590 {
594 {
595 DPRINT1(
"BiosDiskService(0x15): Disk number 0x%02X invalid\n",
Drive);
596
597
600 break;
601 }
602
604 {
606
607
609
610
615 }
616 else
617 {
618
620 }
621
622
624 break;
625 }
626
627
628 case 0x16:
629
630
631 case 0x17:
632
633
634 case 0x18:
636
638 {
639 DPRINT1(
"BIOS Function INT 13h, AH = 0x%02X, AL = 0x%02X, BH = 0x%02X NOT IMPLEMENTED\n",
641 }
642 }
643}
static VOID AllDisksReset(VOID)
static PDISK_IMAGE GetDisk(IN BYTE DiskNumber)
static PDISK_IMAGE HardDrive[4]
static PDISK_IMAGE FloppyDrive[2]
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
_In_ HANDLE _Outptr_result_bytebuffer_ ViewSize PVOID * BaseAddress
BYTE ReadDisk(IN PDISK_IMAGE DiskImage, IN WORD Cylinder, IN BYTE Head, IN BYTE Sector, IN BYTE NumSectors)
BOOLEAN IsDiskPresent(IN PDISK_IMAGE DiskImage)
BYTE WriteDisk(IN PDISK_IMAGE DiskImage, IN WORD Cylinder, IN BYTE Head, IN BYTE Sector, IN BYTE NumSectors)
BYTE SeekDisk(IN PDISK_IMAGE DiskImage, IN WORD Cylinder, IN BYTE Head, IN BYTE Sector)
VOID WINAPI setCX(USHORT)
VOID WINAPI setDX(USHORT)
VOID WINAPI setES(USHORT)
VOID WINAPI setDI(USHORT)
_In_ WDFREQUEST _In_ PIO_STACK_LOCATION Stack