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, &ltoc, 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"};