From 2b0081cf596eff671fa62dd0ea0f88e392901613 Mon Sep 17 00:00:00 2001 From: Peter Veenstra Date: Sat, 16 Jul 2011 12:24:46 +0000 Subject: [PATCH] Increase number of floppies when using non-disk images as well. Maybe decrease the number on unmount in the future. Thanks ripsaw Imported-from: https://svn.code.sf.net/p/dosbox/code-0/dosbox/trunk@3729 --- include/bios_disk.h | 1 + src/dos/dos_programs.cpp | 1 + src/ints/bios_disk.cpp | 24 ++++++++++++++---------- 3 files changed, 16 insertions(+), 10 deletions(-) diff --git a/include/bios_disk.h b/include/bios_disk.h index 95c3d345..ef4ad36f 100644 --- a/include/bios_disk.h +++ b/include/bios_disk.h @@ -69,6 +69,7 @@ public: }; void updateDPT(void); +void incrementFDD(void); #define MAX_HDD_IMAGES 2 diff --git a/src/dos/dos_programs.cpp b/src/dos/dos_programs.cpp index 902ac3d6..1e8a02e0 100644 --- a/src/dos/dos_programs.cpp +++ b/src/dos/dos_programs.cpp @@ -324,6 +324,7 @@ public: label = drive; label += "_FLOPPY"; newdrive->dirCache.SetLabel(label.c_str(),iscdrom,true); } + if(type == "floppy") incrementFDD(); return; showusage: #if defined (WIN32) || defined(OS2) diff --git a/src/ints/bios_disk.cpp b/src/ints/bios_disk.cpp index 556b5743..a5514467 100644 --- a/src/ints/bios_disk.cpp +++ b/src/ints/bios_disk.cpp @@ -85,6 +85,19 @@ void updateDPT(void) { } } +void incrementFDD(void) { + Bit16u equipment=mem_readw(BIOS_CONFIGURATION); + if(equipment&1) { + Bitu numofdisks = (equipment>>6)&3; + numofdisks++; + if(numofdisks > 1) numofdisks=1;//max 2 floppies at the moment + equipment&=~0x00C0; + equipment|=(numofdisks<<6); + } else equipment|=1; + mem_writew(BIOS_CONFIGURATION,equipment); + CMOS_SetRegister(0x14, (Bit8u)(equipment&0xff)); +} + void swapInDisks(void) { bool allNull = true; Bits diskcount = 0; @@ -219,16 +232,7 @@ imageDisk::imageDisk(FILE *imgFile, Bit8u *imgName, Bit32u imgSizeK, bool isHard if(!founddisk) { active = false; } else { - Bit16u equipment=mem_readw(BIOS_CONFIGURATION); - if(equipment&1) { - Bitu numofdisks = (equipment>>6)&3; - numofdisks++; - if(numofdisks > 1) numofdisks=1;//max 2 floppies at the moment - equipment&=~0x00C0; - equipment|=(numofdisks<<6); - } else equipment|=1; - mem_writew(BIOS_CONFIGURATION,equipment); - CMOS_SetRegister(0x14, (Bit8u)(equipment&0xff)); + incrementFDD(); } } }