A patch and a report of installing W98SE

General information and assistance with DOSBox.

A patch and a report of installing W98SE

Postby CZM » 2012-3-11 @ 04:25

Hello, this is ZM.C. I'd like to report the installation of W98Se on DOSBox0.74 and
a patch that changes the DL of boot.com, supports up to 4 HDD images and free
geometric type of FDD images.


A few days ago, I saw the thread of guides about installing W95b on this forum.
Following the settings and procedures, I succeeded. (except that using core=dynamic).
It was stable and speedily. I was so happy, similar to the previous poster :D.
And I wondered how about W98Se...

After days of trails and errors, I've seen W98Se running on DOSBox0.74.
Without audio and net, it is stable. And it's fast than VirtualBox I ever used.
(However, the more powerful CPU would be more helpful to emulate more hardware)

Here below is the report:

1. It might be better that DOSBox does not call DLL externally, uses static Lib instead.
2. Edit dosbox.conf
[sdl]
priority=higher,lower
[dosbox]
machine=svga_s3
memsize=31
[cpu]
core=dynamic
cputype=pentium_slow
cycles=auto 8192 99%
Disable all other hardware emulation or leave the options as default values.

3. Use 3 images to speed up the installation. One is for source(>160M) , other one is
for destination(>256M) and the last one is for temp( >32M).
During the installing, choose compact/minimal hardware/software for now.
It takes about 2 hours to finish the installation, although the W98 claim 1 hour...
After 1 hour of beginning, the timer meter shows 20 min remained. 1st reboot.
No error happened till now. Choose "close and go on" if there's any error occurred.
While the timer meter shows 7 minutes remained, the 1st error occurred.
At 3 minutes remained, the 2nd error occurred.

4. Finally the installation is finished the and the system runs in normal mode.
If you want to use the "DOSPROMPT", uncheck the ROM EMU option, choose FULL SCREEN.
Run the DOSPROMPT, and type "mode co80" if the screen is blank.
Now we can change the hardware configurations,
e.g. higher resolution 1024*768*256 color, audio and net.
But these changes might cause the Explorer unhappy.
Increasing the frameskips or cpu cycles or decreasing the audio rate to make it happy again.
It would fail to execute DOSBox in this virtual machine.

5. Wishes and questions.
Wish that the command Boot.com reserve the boot disk_no in DL.
Support 2 more hdd images.
Support free geometry type of FDD.
( I'd implemented them in a patch as attached)
Is it possible to use memory block move in the INT13_Handler?
W98 usually save the video rom in C:\videorom.bin, will it be an issue to DOSBox?
In W98 dos mode, 2 floppy are functional. But floppy B's disappeared in the windows mode ?

6. List of files in the attachment
_Report.txt --- this text file.
2 conf(s), for installing/normal running phases.
6 screenshots.
A patch as item 6 stated.
The app I built and used to install W98Se.

P.S. some tools to mount images I known
vmware-mount -- free. mounts hdd images. I mostly used.
filedisk -- open source. mounts un-partitioned (single partition) image.
vfd -- open source. mounts floppy image.
winImage -- shareware.
osfmount -- free. supports many types of image. I just heard it recently
DOSBox+W9x+net-- a huge collection but completed. That's why I try to extend to 4 HDDs.

03/11/2012
Attachments
Patch and Install w98.zip
A Patch and a Report of Installing W98SE
(1.29 MiB) Downloaded 493 times
CZM
Newbie
 
Posts: 8
Joined: 2012-3-10 @ 21:43

Re: A patch and a report of installing W98SE

Postby CZM » 2012-3-11 @ 23:57

Hi, I found a typo...
This line in dos_programs.cpp (for boot command) should be:
reg_edx+= reg_edx< MAX_FDD_IMAGES? 0: 0x7E;
;______^ this place should be a PLUS ....
I'd checked the real PC and VirtualBox, they will reserve the DL= driveNo.

I plan to use it to build an image which not only can be mounted as a HDD but also a FDD, and keep it still bootable for both cases.

Below is the updated attachment.
Attachments
Patch and Install w98.zip
with new read me, new diff and new APP. Others remaind unchanged.
(1.29 MiB) Downloaded 467 times
CZM
Newbie
 
Posts: 8
Joined: 2012-3-10 @ 21:43

Re: A patch and a report of installing W98SE

Postby CZM » 2012-3-13 @ 04:02

Hi, I've finished the work on MBR.

; This programe is a Boot Sector Loader written by Jemin Z. M. Chen.
; on 2012/03/13. Please use it under the GNU GPL2 copyright.
;
; It contains the cloned BPB, the partition table and the loader.
; The cloned BPB is used to formulate as the image is a FDD.
; The partition table is used for the image working as a normal hard disk.
; The loader will detect where the image is booted from, a hdd or a fdd
; then it prepares the boot sector with proper value in the cloned BPB, so
; the system is ready to boot up.
;
; Please mount it as a hard disk when reformatting, then refer to the
; real BPB, fix the fields of the cloned BPB before it be mounted as
; a floppy.
;
; Compatibility: FAT12/FAT16 system ( tested: W95b, W98, FreeDOS ke2041)
; Dos6.22/W95A unable to boot up as a floppy, mount neither.
;
; I've build a 4M image with freedos in the attachment for the one who
; is willing to have a trial. Using this MBR sector and the patch I posted,
; we have 6 mount points on DOSBox.
Attachments
MBR.zip
The asm code, bin, and a 4M sample image with freedos to boot.
(318.73 KiB) Downloaded 428 times
CZM
Newbie
 
Posts: 8
Joined: 2012-3-10 @ 21:43

Re: A patch and a report of installing W98SE

Postby CZM » 2012-3-17 @ 09:46

Hello, this is ZMC from Taiwan.

I'd like to share a new built (ZM120317) program to someone who is interested in seeing that the
DOSBox runs W98Se in 1024*768*16bit colors, also net and audio functions are enabled.


First, when I built the previous App I attached, I'd tried to change the optimizing options of the
compliler. Some works but slower. Some is fast but not stable. I thought some codes
are critical to change their contents, e.g. the implementation of CPU op-code for the
virtual machine. However the optimizing by the complier does helpful sometimes. For example,
B=A*60; It's hard to a human thinking a code like this:
B=(A<<4-A)<<2;
So I use different optimizing options to serveral groups of codes.

Second, I thought the time stamp is important to a multi-thread system. I found the SDL-lib
using a slower version of ticks function. After I enable it, the program runs better.


The detail of changes and the content of the attachment:

1. Enable SDL_StartTicks() of SDL library calling QueryPerformanceFrequency() and
QueryPerformanceCounter(). Or, I undefined the GetTicks() in timer.h and
wrote a ticks fuction added in timer.cpp as below:

Code: Select all
bool ticks_start_UNSET= true;
LARGE_INTEGER ticks_start;
Bit32u ticks_FACTOR= 0;

Bit32u GetTicks( void) //ZMC
{
   LARGE_INTEGER t;
   if( ticks_FACTOR== 0)
   {
      LARGE_INTEGER ticks_per_second;
      ticks_start_UNSET= false;
      QueryPerformanceFrequency( &ticks_per_second);

      ticks_FACTOR= (Bit32u) (ticks_per_second.QuadPart/ 1000);
/*
      while( ( ticks_per_second.QuadPart>>ticks_FACTOR)>0)
      {
         ticks_FACTOR++;
      }
      ticks_FACTOR-= 10;
*/
      QueryPerformanceCounter( &ticks_start);
   }

   QueryPerformanceCounter(&t);
//   return (Bit32u)((t.QuadPart- ticks_start.QuadPart)>> (ticks_FACTOR));
   return (Bit32u)((t.QuadPart- ticks_start.QuadPart)/ (ticks_FACTOR));
}
// Setting the ticks_FACTOR=1, it will run W98Se better, but too fast to a DOS program.


2. Divid the source codes into several groups.
The main part: to build this app, including codes of CPU and FPU only.
Can not be optimized. (/Od)
The INT services: a lib. To be optimized a little, but does not increase code size. (/Ox)
The SDL interfaces: a lib. To be optimized a little, but doesn't increase code size too much.( /Ox /Ot)
The Debugger: I use the same option as main part /Od.
UI and remaining: Full optimized. (/O2)

3. The attachment contains:
this text file.
the new built app.
the conf. ( I don't re-install a new system.)
2 screenshots.

Thanks for reading,
ZMC
P.S. I found the error message handler of the MBR.asm points to wrong places, I'll fix it then upload again.
Attachments
ZM120317.zip
Text, App, Conf, 2 Screenshots.
(1.07 MiB) Downloaded 422 times
CZM
Newbie
 
Posts: 8
Joined: 2012-3-10 @ 21:43

Re: A patch and a report of installing W98SE

Postby CZM » 2012-3-19 @ 21:25

Hello, this is Z.M.C. from Taiwan.

I'd like to share a new built (ZM120320) program to someone who expects seeing the
DOSBox runs W98Se better.


First, the function gen_runcode() in \Dosbox-0.74\src\cpu\core_dyn_x86\risc_x86.h is remarked
off a few lines to speed up, as shown below. We can do this if the file dosbox.cpp is optimizing
free ( no optimization). I moved it to my CoreCPU group for compiling. In my tests, both W95b
and W98Se were running fluently more.


Second, About the MBR, I've fixed the error setting of DS after shadowing in previous version.
Add more codes to read remaining sectors, but there is lack of space to put the FAT32 structure.
Have to build the FAT32 header in the cloned BPB and fix the offset for some field in codes.



The detail of changes and the content of the attachment:

1. Move dosbox.cpp to the CoreCPU group, in order to compile it with no optimizing.
2. Mark off several push and pop as below.
[code]
static BlockReturn gen_runcode(Bit8u * code) {
BlockReturn retval;

#if defined (_MSC_VER)
__asm {

/* Prepare the flags */
//ZMC
// push ebx
mov eax, [reg_flags]
and eax, FMASK_TEST

//ZMC It seems OK that doesn't care about ebx, esi and edi if no optimizing applied to dosbox.cpp
// push esi
// push edi // someone used edi, when DOSBox enter DOS5.0 shell

//ZMC for popping ebp out earlier
push ebp

push offset( return_address)
push eax
mov eax, [code]
jmp eax
return_address:
/* return here with flags in ecx */

pop ebp

// pop edi
// pop esi
// pop ebx

/* Restore the flags */
and dword ptr [reg_flags], ~FMASK_TEST
and ecx, FMASK_TEST
or [reg_flags], ecx
mov [retval], eax
}}
[/code]
3. The attachment contains:
this text file.
the new built app.
the MBR.asm, MBR.bin
a 4M sample image with Freedos system

Thanks for reading,
ZMC
Attachments
ZM120320.zip
a text, an App, MBR.asm MBR.bin and 4M Freedos image
(1.17 MiB) Downloaded 417 times
CZM
Newbie
 
Posts: 8
Joined: 2012-3-10 @ 21:43

Re: A patch and a report of installing W98SE

Postby keropi » 2012-3-19 @ 23:04

So these are patches to make dosbox more compatible to install win98 in it?
Don't get me wrong, but what is so special having win98 on DOSbox? the minute you go windows things like cga/ega/vga/soundblaster are not important and there are way better virtualizers for windows out there... DOSBox is ... DOS :)
anyway thanks for sharing, maybe ppl find that info usefull :)
User avatar
keropi
l33t++
 
Posts: 6480
Joined: 2003-9-08 @ 06:45
Location: Greece

Re: A patch and a report of installing W98SE

Postby Dominus » 2012-3-20 @ 00:47

A useful patch would be being able to use the mounted CD-Rom when you boot a HD image...
User avatar
Dominus
DOSBox Moderator
 
Posts: 7616
Joined: 2002-10-03 @ 09:54
Location: Ludwigsburg

Re: A patch and a report of installing W98SE

Postby wd » 2012-3-20 @ 11:20

A useful patch would be being able to use the mounted CD-Rom when you boot a HD image...

Nope because then just more people would try to use it and complain about application incompatibilities etc.
wd
DOSBox Author
 
Posts: 10818
Joined: 2003-12-03 @ 21:23

Re: A patch and a report of installing W98SE

Postby Dominus » 2012-3-20 @ 11:30

Hehe
User avatar
Dominus
DOSBox Moderator
 
Posts: 7616
Joined: 2002-10-03 @ 09:54
Location: Ludwigsburg

Re: A patch and a report of installing W98SE

Postby Jorpho » 2012-3-20 @ 14:56

keropi wrote:Don't get me wrong, but what is so special having win98 on DOSbox? the minute you go windows things like cga/ega/vga/soundblaster are not important and there are way better virtualizers for windows out there... DOSBox is ... DOS :)
There's still the old trick of getting 3D acceleration in Win9x via a fully-emulated Voodoo.

That of course raises the question: are the patches in question compatible with the internal Voodoo emulation patches?
User avatar
Jorpho
l33t++
 
Posts: 7043
Joined: 2003-2-14 @ 19:50
Location: Canada

Re: A patch and a report of installing W98SE

Postby ovvldc » 2012-3-22 @ 18:41

keropi wrote:Don't get me wrong, but what is so special having win98 on DOSbox? the minute you go windows things like cga/ega/vga/soundblaster are not important and there are way better virtualizers for windows out there...


Presumably, there is a perceived gap for fans of older software between DOS programs, which tend to work brilliantly in DOSBox, and W2K+ compatible programs, which work better and better in Wine.

Having DOSBox run Win98 reliably (as far as Win98 can be run reliably :depressed:) would help these people. If the patches improve Win98 compatibility without breaking anything else, there is little technical loss in taking ZMC's work and enthusiasm on board.

But wd will probably have a hard time ignoring people who then come here with problems :wink:.
ovvldc
Newbie
 
Posts: 44
Joined: 2008-8-17 @ 12:48
Location: NL

Re: A patch and a report of installing W98SE

Postby Dominus » 2012-3-22 @ 19:18

Wd will not have a hard time, he will just close their threads ;)
User avatar
Dominus
DOSBox Moderator
 
Posts: 7616
Joined: 2002-10-03 @ 09:54
Location: Ludwigsburg

Re: A patch and a report of installing W98SE

Postby CZM » 2012-4-11 @ 14:20

Hello, this is ZMC from Taiwan.

I'd like to share a new built (ZM120411) program to someone who is interested in seeing that the DOSBox runs W98Se.

A) There are 2 major changes in gen_runcode() of risc_x86.h:
1. The pushings of registers are added back for stablity ( with screen 1024*768*256 + net + audio ).
2. These 3 lines are modified.
// and [reg_flags], ~FMASK_TEST
// and ecx, FMASK_TEST
// or [reg_flags], ecx
xor ecx, [reg_flags]
and ecx, FMASK_TEST
xor [reg_flags], ecx

B) The details of codes:

1. The gen_runcode() in risc_x86.h is modified as below.

static Bit8u * code;
static BlockReturn retval;

// static void gen_runcode( Bit8u * code) {
static void gen_runcode(void) {

//static BlockReturn gen_runcode(Bit8u * code) {
// BlockReturn retval;

#if defined (_MSC_VER)

__asm {

//ZMC Add the pushings back for stablities
push ebx // direction key used it, when enter DOSBox DOS5.0
push edi // someone used edi, when enter DOSBox DOS5.0
push esi
//ZMC for popping ebp out earlier
push ebp
mov ebx, [reg_flags]
// mov eax, [block]
// mov eax, [code]
and ebx, FMASK_TEST
push offset( return_address)

/* Prepare the flags */
push ebx

// mov eax, [code]
// jmp eax
jmp [code]
//#define offset_cache_start ( 0)
// jmp dword ptr [ebx+ offset_cache_start]

return_address:
/* return here with flags in ecx */
pop ebp
pop esi
pop edi
pop ebx
xor ecx, [reg_flags]
mov [retval], eax
and ecx, FMASK_TEST

/* Restore the flags */
xor [reg_flags], ecx
}
// return retval;
}

2. This line in core_dyn_x86.cpp is modified.
// BlockReturn ret=gen_runcode( block->cache.start);
code= block->cache.start;
gen_runcode();
#define ret retval

C) The attachement includes
1. dosbox.exe
2. dosbox.conf
3. this text file

Thanks for reading.
ZMC
Attachments
ZM120411.zip
1. dosbox.exe, 2. dosbox.conf, 3. a text file
(1.07 MiB) Downloaded 423 times
CZM
Newbie
 
Posts: 8
Joined: 2012-3-10 @ 21:43

Re: A patch and a report of installing W98SE

Postby CZM » 2013-9-04 @ 02:08

The following steps state about executing "msconfig" to disable 3 items for running Win98se more

smoothly. Please also refer to "W98se msconfig.jpg."
1. Select the "Start-Menu" -> "Run" -> type "msconfig" -> "OK"
2. Open the "startup" Tab.
3. Uncheck 2 items "LoadPowerProfile Rundll32.exe ..."
4. Uncheck the item "SchedulingAgent ... mstask.exe ..."
5. Apply and exit.
6. Restart the O.S.


Some minor changes in \dosbox-0.74\src\cpu\core_dyn_x86.cpp
Code: Select all
static void dyn_flags_gen_to_host(void) {
   gen_save_flags(DREG(EXIT));

//ZM 2013/9/1
   gen_dop_word(DOP_XOR,true,DREG(EXIT),DREG(FLAGS)); // save the differences in EXIT
   gen_dop_word_imm(DOP_AND,true,DREG(EXIT),FMASK_TEST); // keep the useful bits
   gen_dop_word(DOP_XOR,true,DREG(FLAGS),DREG(EXIT)); // change these bits in FLAGS

//   gen_dop_word_imm(DOP_AND,true,DREG(EXIT),FMASK_TEST);
//   gen_dop_word_imm(DOP_AND,true,DREG(FLAGS),~FMASK_TEST);
//   gen_dop_word(DOP_OR,true,DREG(FLAGS),DREG(EXIT));


   gen_releasereg(DREG(EXIT));
   gen_releasereg(DREG(FLAGS));
}



The attachment contains:
1. "W98se msconfig.txt" - this document.
2. "W98se msconfig.jpg"
3. dosbox.conf - for your reference.
4. DOSBox.exe
5. "DOSBox ne2000.exe"
6. "DOSBox debugger.exe"
7. "DOSBox ne2000 debugger.exe"

Thanks,
ZMC 2013/09/04
Attachments
ZM20130904.7z
Settings to W98se and dosbox with debugger
(1.53 MiB) Downloaded 158 times
CZM
Newbie
 
Posts: 8
Joined: 2012-3-10 @ 21:43

Re: A patch and a report of installing W98SE

Postby CZM » 2013-10-07 @ 15:29

Hi,
I would like to share a new built dosbox.exe which can runs much more fast than those I posted before.

Main changes:
This version declare both variables "cpu_regs" and "Segs" be volatile in "cpu.cpp", so that we can apply almost all optimizing options of the compiler.
Note that the prototype of each associative function and some variable types have to be modified too.

Some other minor changes:
The cpu cycle in section [cpu] was changed to "cycles=51200 99% limit 76800" in "dosbox.conf".
Link with SDL-1.2.15 instead of SDL-1.2.14.
Use for(;;) instead of while(1) in "op.h", "dosbox.cpp" and "programs.cpp".
#define GetTicks() GetTickCount() in "timer.h"

The attachment contains:
1. "ZM20131007" - this document.
2. dosbox.conf - for your reference.
3. DOSBox.exe
4. "DOSBox ne2000.exe"
5. "DOSBox debugger.exe"
6. "DOSBox ne2000 debugger.exe"

Thanks,
ZMC 2013/10/07
Attachments
ZM20131007.7z
A faster version
(1.45 MiB) Downloaded 152 times
CZM
Newbie
 
Posts: 8
Joined: 2012-3-10 @ 21:43


Return to DOSBox General

Who is online

Users browsing this forum: No registered users and 1 guest