As an example. this code compiles fine with DosBox,
FSINFO fsinfo;
ULONG drivenumber = drive[0];
if (drivenumber > 26) { // drive letter was lowercase
drivenumber = drive[0] - 'a' + 1;
}
APIRET rc = DosQueryFSInfo(drivenumber, FSIL_VOLSER, &fsinfo, sizeof(FSINFO));
if (rc == NO_ERROR) {
bool cdrom = false;
Whereas with DosBox-x, the error is,
drive_cache.cpp: In member function 'void DOS_Drive_Cache::SetBaseDir(const char*, DOS_Drive*)':
drive_cache.cpp:159:32: error: cannot convert 'DOS_Drive' to 'ULONG' {aka 'long unsigned int'} in initialization
159 | ULONG drivenumber = drive[0];
| ~~~~~~~^
| |
| DOS_Drive
drive_cache.cpp:161:32: error: no match for 'operator-' (operand types are 'DOS_Drive' and 'char')
161 | drivenumber = drive[0] - 'a' + 1;
| ~~~~~~~~ ^ ~~~
| | |
| | char
| DOS_Drive