# HG changeset patch # User TomW # Date 1408650258 -3600 # Node ID d08a822e6603e9301fb09f378fc07c04693c8100 # Parent a221bebd5ff315774c950395fc6b89520c859625 Force CD-ROM TOC to be loaded on startup, booting from CD-ROM should be more reliable. diff -r a221bebd5ff3 -r d08a822e6603 src/cdrom-ioctl.c --- a/src/cdrom-ioctl.c Wed Aug 20 19:37:23 2014 +0100 +++ b/src/cdrom-ioctl.c Thu Aug 21 20:44:18 2014 +0100 @@ -477,6 +477,26 @@ return last_block; } +void ioctl_reset() +{ + CDROM_TOC ltoc; + int temp; + long size; + + if (!cdrom_drive) + { + tocvalid = 0; + return; + } + + ioctl_open(0); + temp = DeviceIoControl(hIOCTL, IOCTL_CDROM_READ_TOC, NULL, 0, <oc, sizeof(ltoc), &size, NULL); + ioctl_close(); + + toc = ltoc; + tocvalid = 1; +} + int ioctl_open(char d) { // char s[8]; diff -r a221bebd5ff3 -r d08a822e6603 src/cdrom-ioctl.h --- a/src/cdrom-ioctl.h Wed Aug 20 19:37:23 2014 +0100 +++ b/src/cdrom-ioctl.h Thu Aug 21 20:44:18 2014 +0100 @@ -5,5 +5,6 @@ various platform specific cdrom-ioctl files */ extern int ioctl_open(char d); - +extern void ioctl_reset(); + #endif /* ! CDROM_IOCTL_H */ diff -r a221bebd5ff3 -r d08a822e6603 src/pc.c --- a/src/pc.c Wed Aug 20 19:37:23 2014 +0100 +++ b/src/pc.c Thu Aug 21 20:44:18 2014 +0100 @@ -245,6 +245,8 @@ // pclog("Init - CPUID %i %i\n",CPUID,cpuspeed); shadowbios=0; voodoo_init(); + + ioctl_reset(); } void resetpc() @@ -292,6 +294,8 @@ keyboard_at_reset(); // output=3; + + ioctl_reset(); } char romsets[17][40]={"IBM PC","IBM XT","Generic Turbo XT","Euro PC","Tandy 1000","Amstrad PC1512","Sinclair PC200","Amstrad PC1640","IBM AT","AMI 286 clone","Dell System 200","Misc 286","IBM AT 386","Misc 386","386 clone","486 clone","486 clone 2"};