ViewVC Help
View File | Revision Log | Show Annotations | Revision Graph | Root Listing
root/cebix/BasiliskII/src/cdrom.cpp
(Generate patch)

Comparing BasiliskII/src/cdrom.cpp (file contents):
Revision 1.6 by cebix, 2000-07-14T21:29:07Z vs.
Revision 1.8 by cebix, 2000-07-24T20:39:33Z

# Line 185 | Line 185 | static void find_hfs_partition(DriveInfo
185                  if (Sys_read(info->fh, map, i * 512, 512) != 512)
186                          break;
187  
188 <                // Skip driver descriptor
189 <                uint16 sig = ntohs(((uint16 *)map)[0]);
190 <                if (sig == 'ER')
188 >                // Not a partition map block? Then look at next block
189 >                uint16 sig = (map[0] << 8) | map[1];
190 >                if (sig != 0x504d)
191                          continue;
192  
193 <                // No partition map? Then look at next block
194 <                if (sig != 'PM')
195 <                        continue;
196 <
197 <                // Partition map found, Apple HFS partition?
193 >                // Partition map block found, Apple HFS partition?
194                  if (strcmp((char *)(map + 48), "Apple_HFS") == 0) {
195                          info->start_byte = ntohl(((uint32 *)map)[2]) << 9;
196 <                        D(bug(" HFS partition found at %ld, %ld blocks\n", info->start_byte, ntohl(((uint32 *)map)[3])));
196 >                        D(bug(" HFS partition found at %d, %d blocks\n", info->start_byte, ntohl(((uint32 *)map)[3])));
197                          break;
198                  }
199          }
# Line 674 | Line 670 | int16 CDROMControl(uint32 pb, uint32 dce
670                          return controlErr;
671  
672                  case 103: {             // AudioTrackSearch
673 <                        D(bug(" AudioTrackSearch postype %d, pos %08lx, hold %d\n", ReadMacInt16(pb + csParam), ReadMacInt32(pb + csParam + 2), ReadMacInt16(pb + csParam + 6)));
673 >                        D(bug(" AudioTrackSearch postype %d, pos %08x, hold %d\n", ReadMacInt16(pb + csParam), ReadMacInt32(pb + csParam + 2), ReadMacInt16(pb + csParam + 6)));
674                          if (ReadMacInt8(info->status + dsDiskInPlace) == 0)
675                                  return offLinErr;
676  
# Line 871 | Line 867 | int16 CDROMStatus(uint32 pb, uint32 dce)
867                          uint32 sel = ReadMacInt32(pb + csParam);
868                          D(bug(" driver gestalt %c%c%c%c\n", sel >> 24, sel >> 16,  sel >> 8, sel));
869                          switch (sel) {
870 <                                case 'vers':    // Version
870 >                                case FOURCC('v','e','r','s'):   // Version
871                                          WriteMacInt32(pb + csParam + 4, 0x05208000);
872                                          break;
873 <                                case 'devt':    // Device type
874 <                                        WriteMacInt32(pb + csParam + 4, 'cdrm');
873 >                                case FOURCC('d','e','v','t'):   // Device type
874 >                                        WriteMacInt32(pb + csParam + 4, FOURCC('c','d','r','m'));
875                                          break;
876 <                                case 'intf':    // Interface type
877 <                                        WriteMacInt32(pb + csParam + 4, 'basi');
876 >                                case FOURCC('i','n','t','f'):   // Interface type
877 >                                        WriteMacInt32(pb + csParam + 4, FOURCC('b','a','s','i'));
878                                          break;
879 <                                case 'sync':    // Only synchronous operation?
879 >                                case FOURCC('s','y','n','c'):   // Only synchronous operation?
880                                          WriteMacInt32(pb + csParam + 4, 0x01000000);
881                                          break;
882 <                                case 'boot':    // Boot ID
882 >                                case FOURCC('b','o','o','t'):   // Boot ID
883                                          if (info != NULL)
884                                                  WriteMacInt16(pb + csParam + 4, info->num);
885                                          else
886                                                  WriteMacInt16(pb + csParam + 4, 0);
887                                          WriteMacInt16(pb + csParam + 6, (uint16)CDROMRefNum);
888                                          break;
889 <                                case 'wide':    // 64-bit access supported?
889 >                                case FOURCC('w','i','d','e'):   // 64-bit access supported?
890                                          WriteMacInt16(pb + csParam + 4, 0);
891                                          break;
892 <                                case 'purg':    // Purge flags
892 >                                case FOURCC('p','u','r','g'):   // Purge flags
893                                          WriteMacInt32(pb + csParam + 4, 0);
894                                          break;
895 <                                case 'ejec':    // Eject flags
895 >                                case FOURCC('e','j','e','c'):   // Eject flags
896                                          WriteMacInt32(pb + csParam + 4, 0x00030003);    // Don't eject on shutdown/restart
897                                          break;
898 <                                case 'flus':    // Flush flags
898 >                                case FOURCC('f','l','u','s'):   // Flush flags
899                                          WriteMacInt16(pb + csParam + 4, 0);
900                                          break;
901 <                                case 'vmop':    // Virtual memory attributes
901 >                                case FOURCC('v','m','o','p'):   // Virtual memory attributes
902                                          WriteMacInt32(pb + csParam + 4, 0);     // Drive not available for VM
903                                          break;
904                                  default:

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines