Changeset 56316 in vbox for trunk/src/VBox/Devices/PC
- Timestamp:
- Jun 9, 2015 10:52:56 PM (10 years ago)
- svn:sync-xref-src-repo-rev:
- 100902
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/Devices/PC/BIOS/floppy.c
r56292 r56316 1116 1116 1117 1117 // Format type (AL) 1118 // 00 - NOT USED 1119 // 01 - DISKETTE 360K IN 360K DRIVE 1118 // 00 - NOT USED 1119 // 01 - DISKETTE 360K IN 360K DRIVE 1120 1120 // 02 - DISKETTE 360K IN 1.2M DRIVE 1121 1121 // 03 - DISKETTE 1.2M IN 1.2M DRIVE … … 1131 1131 return; 1132 1132 } 1133 1133 1134 1134 // see if drive exists 1135 1135 if (floppy_drive_exists(drive) == 0) { … … 1216 1216 SET_AH(0x0C); // drive/media type unknown 1217 1217 set_diskette_ret_status(0x0C); 1218 SET_CF(); 1218 SET_CF(); 1219 1219 return; 1220 1220 } … … 1227 1227 else 1228 1228 drive_type &= 0x0f; 1229 1229 1230 1230 // Get current drive state. Set 'base_address' to media status offset address 1231 1231 base_address = (drive) ? 0x0091 : 0x0090; … … 1242 1242 break; 1243 1243 case 2: // 1.2MB, 5.25" 1244 if (track == 39 && num_sectors == 9) { // 360K disk in 1.2M drive 1244 if (track == 39 && num_sectors == 9) { // 360K disk in 1.2M drive 1245 1245 media_state |= 0x70; // 0111 0000 (media type established, double stepping, 300 kbps) 1246 1246 } else if (track == 79 && num_sectors == 15) { // 1.2M disk in 1.2M drive … … 1252 1252 media_state |= 0x90; // 1001 0000 (media type established, 250 kbps) 1253 1253 1254 1254 break; 1255 1255 case 4: // 1.44MB, 3.5" 1256 1256 if (track == 79) { … … 1260 1260 media_state |= 0x10; // 0001 0000 (media type established, 500 kbps) 1261 1261 } 1262 } 1262 } 1263 1263 break; 1264 1264 case 5: // 2.88MB, 3.5" … … 1283 1283 SET_AH(0x0C); 1284 1284 set_diskette_ret_status(0x0C); 1285 SET_CF(); 1285 SET_CF(); 1286 1286 return; 1287 1287 } … … 1290 1290 write_byte(0x0040, base_address, media_state); 1291 1291 1292 // set es & di to point to 11 byte diskette param table in ROM 1292 // set es & di to point to 11 byte diskette param table in ROM 1293 1293 ES = 0xF000; // @todo: any way to make this relocatable? 1294 1294 DI = get_floppy_dpt(drive_type);
Note:
See TracChangeset
for help on using the changeset viewer.