                             fMSX MS-DOS 1.4.1
                   MSX emulator for the MS-DOS platform.
    Core emulator code copyright (C) 1994, 1995, 1996  Marat Fayzullin
              MS-DOS port copyright (C) 1996  Marcel de Kogel
                                     
               MS-DOS(tm) is a trademark of Microsoft Corp.

fMSX is a portable emulator of MSX home computers written in C. You can
always get the latest fMSX source code, binaries, and support files from
  http://www.freeflight.com/fms/fMSX/
Another MSX-related archive is located at
  ftp://ftp.komkon.org/pub/MSX/

Note: fMSX MS-DOS requires the presence of a DPMI server. If you don't run
the program under a DPMI-hosted environment (Windows, OS/2, QPMI, ...),
put the file CSDPMI.EXE included in CWSDPMI.ZIP somewhere in your path.

Hardware Requirements
=====================
A 486DX-33 (P75 recommended)
A VLB- or PCI-based VGA compatible video card
PC Speaker/Adlib/SB2.0/SBPro/SB16/GUS/SB AWE32 and joystick supported.

Files included in FMSX-DOS.ZIP
==============================
FMSX-DOS.EXE The emulator
FMSX-DOS.TXT This file
CWSDMI.ZIP   A dpmi server required by FMSX-DOS.EXE
FILE_ID.DIZ  A small description of this program
Some utilities for use with fMSX MS-DOS can be found on the fMSX MS-DOS
distribution site at http://www.komkon.org/~dekogel/fmsx.html
More information about fMSX and MSX in general can be found on the fMSX
distibution site at http://www.freeflight.com/fms/fMSX

Other files required by fMSX MS-DOS
===================================
MSX.ROM      Standard MSX BIOS and BASIC code
MSX2.ROM     MSX2 BIOS and BASIC code
MSX2EXT.ROM  MSX2 ExtROM containing system extensions
MSX2P.ROM    MSX2+ BIOS and BASIC code
MSX2PEXT.ROM MSX2+ ExtROM containing system extensions
DISK.ROM     MSX DiskROM containing BDOS and DISK BASIC [optional]
RS232.ROM    RS232 BIOS and BASIC extensions [optional]
FMPAC.ROM    FM-PAC ROM extensions [optional]
CMOS.ROM     Non-volatile memory used in MSX2 and MSX2+. This file gets
             rewritten on exit if non-volatile memory was changed.

Key Mapping
===========
GRAPH  - Left alt
CODE   - Right alt
SELECT - PageDown
STOP   - PageUp

Special Keys
============
F6  - Rewind tape
F7  - Wind tape
F8  - Toggle sound on/off
F9  - Pause
F10 - Quit emulator
F11 - Increase sound volume
F12 - Decrease sound volume
Left Ctrl+Left Alt+Right Ctrl+Right Alt - Reset MSX

Command line options
====================
Below is a list of available command line options. Many options may be
abbreviated. Use -help to get a list of currently supported abbreviations.
-help                Show a help page describing all available command
                     line options
-verbose <level>     Select debugging messages [1]
                     0 - Silent       1 - Startup messages
                     2 - V9938 ops    4 - Disk
                     8 - Memory      16 - Illegal Z80 ops
-ifreq <frequency>   Set interrupt frequency [50Hz]
-iperiod <period>    Set interrupts period [75000 T-States]
-uperiod <period>    Number of interrupts per screen update [2]
-printer <filename>  Redirect printer output to file [stdout]
-serial <filename>   Redirect serial I/O to a file [stdin/stdout]
-ram <pages>         Number of 16kB RAM pages [4/8/8]
-vram <pages>        Number of 16kB VRAM pages [2/8/8]
-msx1/-msx2/-msx2+   Select MSX model [-msx2]
-rom <type>          Select MegaROM mapper types [0,0]
                     (two -rom options can be present)
                     0 - Konami 8kB    1 - Konami 16kB
                     2 - Konami5 8kB   3 - Konami4 8kB
                     4 - ASCII 8kB     5 - ASCII 16kB
-diska <filename>    Set disk image used for drive A: [DRIVEA.DSK].
                     Physical drives are supported, e.g. "-diska A:" will
                     use PC disk A:. Both single and double sided floppies
                     are support
-diskb <filename>    Set disk image used for drive B: [DRIVEB.DSK].
                     Physical drives are supported
-tape <filename>     Select tape image[MSX.CAS]. There's no limit to the
                     length of a tape image
-font <filename>     Set fixed font for text modes [DEFAULT.FNT]
-logsnd <filename>   Write soundtrack to a file [off]
-video <mode>        Select video mode[0]
                     0 - 320x200   1 - 320x240
                     2 - 640x480   3 - 256x212
                     Video modes 1 and 3 may not be compatible with your
                     video card and/or monitor. For video 2, you'll need a
                     VESA compatible video card.
-chipset <id>        Select SVGA chipset[255]
                     0 - VESA
                     1 - S3
                     255 - Detect
                     Support for more popular chipsets may be added in
                     future versions
-modeswitch <mode>   Allow/Don't allow VGA mode switches[0]
                     0 - Don't allow VGA mode switches
                     1 - Allow VGA mode switches
                     If this option is enabled, the game will use both
                     video modes 2 and 3
-sound <mode>        Select audio mode[255]
                     0 - No sound
                     1 - Internal Speaker
                     2 - Adlib
                     3 - Sound Blaster
                     4 - Gravis Ultrasound
                     5 - SB AWE32
                     255 - Detect
-speakerchannels     Set sound channel priority list (Internal speaker
<list>               only)[3,2,1]
                     1-3 = PSG Melodic
                     4-6 = PSG Noise
                     7-11 = SCC
                     Most games use channel 3 for their sound effects and
                     channels 1 and 2 for their melodies. Try using 3,1,2
                     if the default list doesn't give the desired sound
                     quality
-volume <volume>     Set initial volume[10]
                     0 - Quiet    15 - Maximum
-reverb <level>      Set reverb send level (SB AWE32 only)[7]
                     0 - None    100 - Maximum
-chorus <level>      Set chorus send level (SB AWE32 only)[0]
                     0 - None    100 - Maximum
-soundquality [-sq]  Set sound quality (SoundBlaster only) [3]
<value>              Range is from 1 (low) to 5 (very high)
-scc <mode>          Set SCC emulation mode[1]
                     0 - SCC emulation off
                     1 - SCC emulation on
-fmpac <mode>        Set FM-PAC emulation mode[0]
                     0 - FM-PAC emulation off
                     1 - FM-PAC emulation on
                     FM-PAC can only be turned on if FMPAC.ROM is resident
                     in your fMSX MS-DOS directory. Also, FM-PAC emulation
                     requires a SoundBlaster or AWE32 compatible sound
                     card. Do not turn FM-PAC emulation on if you have an
                     Adlib or GUS sound card
-joystick <mode>     Select joystick mode[1]
                     0 - No joystick support
                     1 - Emulate joystick at port 1
                     2 - Emulate joystick at port 2
                     The 2nd PC joystick isn't supported (yet)
-swapbuttons <mode>  Swap/Do not swap buttons [0]
                     0 - Do not swap buttons
                     1 - Swap joystick buttons

Tape emulation
==============
The tape emulation isn't nearly finished. Saving and loading files from
BASIC works correctly (Metal Gear saves perfectly as well), but there are
some major problems creating tape images from real MSX tapes. There's no
program shipped with the emulator that does this

Passing options to the emulator
===============================
With the amount of command line options fMSX MS-DOS supports, it's easy to
create command lines larger than the DOS limit of 126 bytes. If you
experience problems with the command line length, put all options in a
temporary file (say, "TempFile.tmp"), and start the emulator with the
command line "fMSX-DOS @TempFile.tmp". You may also give extra command
line options when using this feature, like in `fMSX-DOS @MyConfig.cfg -
ifreq 60 Pacman.rom'

Configuration files
===================
The emulator loads three configuration files (if present) before it boots
MSX: fMSX-DOS.cfg located in the emulator's directory and CARTA.cfg and
CARTB.cfg located in the cartridge dump's directory. These are plain text
files containing optional command line options. Options can be separated
with spaces, tabs or returns.

Troubleshooting
===============
- If a game runs a bit too slow, try using -ifreq 60.
- If the emulator runs all games much too slow, try decreasing iperiod
  to 30000-50000. You may also want to try -ifreq 0. If you're using a
  SoundBlaster, try decreasing the sound quality or using Adlib mode
- If you want your games to run faster, increase ifreq. If you want them
  to run slower, decrease ifreq
- If you don't own an MSX with a floppy drive and you want to create an
  MSX floppy disk, follow these instructions: Format a 3 inch floppy
  disk to standard DOS 720KB format and start fMSX MS-DOS with the "-
  diska A:" (or "-diska B:") option with the floppy not inserted in the
  drive. After MSX-BASIC has booted, insert the floppy into your floppy
  drive and type "CALL FORMAT". Choose drive A and double sided, and
  wait till the formatting has finished.

History
=======
1.4.1 Major improvements to the SoundBlaster support, added FM-PAC
      emulation, fixed some bugs
1.3.1 Increased speed, fixed lots of bugs, added PC speaker, SB, GUS and
      AWE32 support, added S3 support, added tape emulation and
      configuration file support
1.2.3 Added volume control, joystick options, modeswitch option, video
      mode 3, improved sound, increased speed, fixed some bugs
1.2.2 Added joystick support, Added SCC emulation and improved PSG
      emulation, added VESA support, increased speed, fixed some major
      bugs
1.2.1 Initial release

Credits
=======
- fMSX MS-DOS was compiled using DJ Delorie's DJGPP v2.0. DJGPP is a 32
  bit C compiler for MS-DOS. Source code and binaries of DJGPP are
  available at http://www.delorie.com
- The SB AWE32 routines are heavily based on `The Unofficial Sound
  Blaster AWE32 Programming Guide' written by Vince Vu a.k.a. Judge
  Dredd. Thanks a million for writing this!
- Martijn Zeedijk tested the GUS routines and helped me fix lots of bugs
- Some parts of the code were taken from Allegro. Allegro is a library
  for DJGPP written by Shawn Hargreaves. Allegro is available at
  ftp://x2ftp.oulu.fi/pub/msdos/programming/djgpp2

Please send your comments to Marcel at
m.dekogel@student.utwente.nl

