Changeset 258 in xtideuniversalbios for trunk/Serial_Server/library
- Timestamp:
- Feb 22, 2012, 7:01:53 PM (13 years ago)
- google:author:
- gregli@hotmail.com
- Location:
- trunk/Serial_Server/library
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Serial_Server/library/Image.cpp
r233 r258 12 12 #include <stdio.h> 13 13 14 struct floppyInfo { 15 unsigned long size; 16 unsigned char type; 17 unsigned char cylinders; 18 unsigned char heads; 19 unsigned char sectors; 20 } floppyInfos[] = 21 { 22 { 2949120 / 512, 6, 80, 2, 36 }, // 2.88MB 3.5" 23 { 1474560 / 512, 4, 80, 2, 18 }, // 1.44MB 3.5" 24 { 1228800 / 512, 2, 80, 2, 15 }, // 1.2MB 5.25" 25 { 737280 / 512, 3, 80, 1, 18 }, // 720KB 3.5" 26 { 368640 / 512, 1, 40, 2, 9 }, // 360KB 5.25" 27 { 327680 / 512, 0, 40, 2, 8 }, // 320KB 5.25" 28 { 184320 / 512, 0, 40, 1, 9 }, // 180KB 5.25" single sided 29 { 163840 / 512, 0, 40, 1, 8 }, // 160KB 5.25" single sided 30 { 0, 0, 0, 0, 0 } 31 }; 32 14 33 Image::Image( char *name, int p_readOnly, int p_drive ) 15 34 { … … 27 46 { 28 47 double sizef; 48 char sizeChar; 49 struct floppyInfo *f; 29 50 30 51 for( char *c = shortFileName = name; *c; c++ ) … … 46 67 if( totallba == 0 ) 47 68 log( -1, "'%s', Image size zero?" ); 69 70 floppy = 0; 71 for( f = floppyInfos; f->size && f->size != totallba; f++ ) ; 72 if( f->size ) 73 { 74 floppy = 1; 75 floppyType = f->type; 76 p_useCHS = 1; 77 p_cyl = f->cylinders; 78 p_head = f->heads; 79 p_sect = f->sectors; 80 } 48 81 49 82 if( p_useCHS ) … … 82 115 83 116 sizef = totallba/2048.0; 117 sizeChar = 'M'; 118 if( sizef < 1 ) 119 { 120 sizef *= 1024; 121 sizeChar = 'K'; 122 } 84 123 if( useCHS ) 85 log( 0, "Opening '%s', CHS geometry %u:%u:%u, total LBA %lu, total size %.1lf MB", name, cyl, sect, head, totallba, sizef ); 86 else 87 log( 0, "Opening '%s', total LBA %lu, total size %.1lf MB", name, totallba, sizef ); 124 log( 0, "%s: %s with CHS geometry %u:%u:%u, size %.2lf %cB", 125 name, (floppy ? "Floppy Disk" : "Hard Disk"), cyl, head, sect, sizef, sizeChar ); 126 else 127 log( 0, "%s: %s with total sectors %lu, size %.2lf %cB", 128 name, (floppy ? "Floppy Disk" : "Hard Disk"), totallba, sizef, sizeChar ); 88 129 } 89 130 … … 137 178 #define ATA_dwLBACnt 60 138 179 139 #define ATA_wVendor 159 140 180 // Words carved out of the vendor specific area for our use 181 // 182 #define ATA_wSerialFloppyFlagAndType 158 183 #define ATA_wSerialPortAndBaud 159 184 185 // Defines used in the words above 186 // 141 187 #define ATA_wCaps_LBA 0x200 142 188 143 189 #define ATA_wGenCfg_FIXED 0x40 190 191 #define ATA_wSerialFloppyFlagAndType_Flag 0x10 192 #define ATA_wSerialFloppyFlagAndType_TypePosition 5 144 193 145 194 struct comPorts { … … 207 256 } 208 257 258 if( floppy ) 259 buff[ ATA_wSerialFloppyFlagAndType ] = ATA_wSerialFloppyFlagAndType_Flag | (floppyType << ATA_wSerialFloppyFlagAndType_TypePosition); 260 261 // we always set this, so that the bulk of the BIOS will consider this disk as a hard disk 262 // 209 263 buff[ ATA_wGenCfg ] = ATA_wGenCfg_FIXED; 210 // buff[ ATA_VendorSpecific_ReturnPortBaud ] = retWord; 211 } 264 } -
trunk/Serial_Server/library/Library.h
r233 r258 32 32 33 33 unsigned long cyl, sect, head; 34 unsigned char floppy, floppyType; 34 35 int useCHS; 35 36 -
trunk/Serial_Server/library/Process.cpp
r233 r258 99 99 lastScan = 0; 100 100 101 // 102 // Floppy disks must come after any hard disks 103 // 104 if( (image0 && image0->floppy) && (image1 && !image1->floppy) ) 105 { 106 img = image0; 107 image0 = image1; 108 image1 = img; 109 } 110 101 111 lasttick = GetTime(); 102 112
Note:
See TracChangeset
for help on using the changeset viewer.