PCem
changeset 148:d08a822e6603
Force CD-ROM TOC to be loaded on startup, booting from CD-ROM should be more reliable.
| author | TomW |
|---|---|
| date | Thu Aug 21 20:44:18 2014 +0100 |
| parents | a221bebd5ff3 |
| children | 82d7f693029b |
| files | src/cdrom-ioctl.c src/cdrom-ioctl.h src/pc.c |
| diffstat | 3 files changed, 26 insertions(+), 1 deletions(-) [+] |
line diff
1.1 --- a/src/cdrom-ioctl.c Wed Aug 20 19:37:23 2014 +0100 1.2 +++ b/src/cdrom-ioctl.c Thu Aug 21 20:44:18 2014 +0100 1.3 @@ -477,6 +477,26 @@ 1.4 return last_block; 1.5 } 1.6 1.7 +void ioctl_reset() 1.8 +{ 1.9 + CDROM_TOC ltoc; 1.10 + int temp; 1.11 + long size; 1.12 + 1.13 + if (!cdrom_drive) 1.14 + { 1.15 + tocvalid = 0; 1.16 + return; 1.17 + } 1.18 + 1.19 + ioctl_open(0); 1.20 + temp = DeviceIoControl(hIOCTL, IOCTL_CDROM_READ_TOC, NULL, 0, <oc, sizeof(ltoc), &size, NULL); 1.21 + ioctl_close(); 1.22 + 1.23 + toc = ltoc; 1.24 + tocvalid = 1; 1.25 +} 1.26 + 1.27 int ioctl_open(char d) 1.28 { 1.29 // char s[8];
2.1 --- a/src/cdrom-ioctl.h Wed Aug 20 19:37:23 2014 +0100 2.2 +++ b/src/cdrom-ioctl.h Thu Aug 21 20:44:18 2014 +0100 2.3 @@ -5,5 +5,6 @@ 2.4 various platform specific cdrom-ioctl files */ 2.5 2.6 extern int ioctl_open(char d); 2.7 - 2.8 +extern void ioctl_reset(); 2.9 + 2.10 #endif /* ! CDROM_IOCTL_H */
3.1 --- a/src/pc.c Wed Aug 20 19:37:23 2014 +0100 3.2 +++ b/src/pc.c Thu Aug 21 20:44:18 2014 +0100 3.3 @@ -245,6 +245,8 @@ 3.4 // pclog("Init - CPUID %i %i\n",CPUID,cpuspeed); 3.5 shadowbios=0; 3.6 voodoo_init(); 3.7 + 3.8 + ioctl_reset(); 3.9 } 3.10 3.11 void resetpc() 3.12 @@ -292,6 +294,8 @@ 3.13 keyboard_at_reset(); 3.14 3.15 // output=3; 3.16 + 3.17 + ioctl_reset(); 3.18 } 3.19 3.20 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"};
