NLMSX v0.27  (http://nlmsx.generation-msx.nl)
MSX emulator for Windows 95/98/NT/2000, DirectX 3 or higher
By Frits Hilderink


Table of contents
-----------------

    Introduction
    Features
    MSX-Emulator Keyboard
    Configuring NLMSX
        Memory Layout
        I/O Layout
        Command line parameters
        Keyboard Layout
	Buttons
    Default Configurations
    Statusbar
    Bug Report
    Thanks to


Introduction
------------
NLMSX is a msx1/msx2/msx2+ emulator that is based upon fMSX 2.0b made by 
Marat Fayzullin and is being developed by Frits Hilderink, a former member 
of MSX Computer Club Enschede in the Netherlands. 

As of NLMSX v0.20 only the Z80 emulation part is used from 
the original fMSX 2.0b source. 


Features
--------
NLMSX has the current features:

- Emulates MSX-1,2,2+
- MSX-DOS 2 emulation
- Texas Instruments 279x diskcontroller emulation
- Konami MegaROM Emulation
- V9918/V9938/V9958 Emulation in both PAL and NTSC modes
- ...


MSX-Emulator Keyboard
---------------------

MSX-Key	Windows-Key

F1	F1
F2	F2
F3	F3
F4	F4
F5	F5
F6	Shift+F1
F7	Shift+F2
F8	Shift+F3
F9	Shift+F4
F10	Shift+F5

Special keys:

MSX-Key		Windows-Key

Select	        End
Stop	        Page Up
Home/Cls	Home
Kana (japanese)	Page Down
Code	        Page Down
Graph         	F8
Caps	        Caps Lock


Notes:
- Kana and Code have the same scancode and therefore are exclusively available
  on different keyboard layouts (common: Kana toggles the kanji keyboard mode,
  Code must be used simultaneously with other keys to produce code-characters).

Very special keys:

Change Disk             F6
Skip Window 1/2/3/4     F7
Screenshot              F9
Reset                   F12


Configurations
--------------

With NLMSX configurations can be made using the Edit Configuration dialog.
This dialog currently has a treeview on the left side that contains an
overview of the used memory layout and the I/O layout.

    Memory Layout
    -------------

    This layout describes the types of memory that can be configured:

    - Undefined
    
      Specifies an empty mainslot/subslot.
      
    - Normal ROM
    
      Specifies to place a normal ROM image on a mainslot/subslot.
      Parameters: ROM Image, Image Start, Image Length, Start Address.
    
    - Normal RAM
    
      Specifies a non memory mapped RAM area on a mainslot/subslot.
      Parameters: Start Address, Image Length.
      Remarks: Not yet available.
      
    - Memory Mapper

      Specifies a memory mapper on a mainslot/subslot.

      Parameters: Mapper Size.
      Remarks: -

    - Disk rom, Memory Mapped, TMS279x

      Specifies a disk rom image with a special memory mapped I/O interface
      linked to a emulated Texas Instruments 279x diskcontroller. Every
      specifies disk rom has it's own diskcontroller, thus enabling support
      for multiple disk drives (2, 4, 6 or 8 drives).

      Parameters: ROM Image, Image Start, Image Length.
      Remarks: Only the disk image of the first drive is currently available.

    - MSX-DOS 2 ROM

      Specifies a MSX-DOS 2 Cartridge on a mainslot/subslot.
      Parameters: ROM Image.

    - Konami Cartridge 4

      Specifies a Konami MegaROM Cartridge with memory mapped I/O at the
      addresses 4000, 6000, 8000 and A000. This type is only used for
      cartridges that have no SCC. Like:
      Metal Gear, USAS, Nemesis, Shalow, Vampire Killer, Maze Of Galious, etc..

      Parameters: ROM Image.
      Remarks: Cartridges with sizes of 16Kbyte or 32Kbyte can also be used
      with this memory type.

    - Konami Cartridge 5

      Specifies a Konami MegaROM Cartridge with memory mapped I/O at the
      addresses 4000, 6000, 8000 and A000. This type is only used for
      cartridges that do have an SCC. Like:
      F1 Spirit, Metal Gear 2, Nemesis 2, Salamander, Nemesis 3, Parodius,
      Space Manbow, Contra, Quarth, Pennant Race 2, Kings Valley 2, etc..

      Parameters: ROM Image.
      Remarks: Cartridges with sizes of 16Kbyte or 32Kbyte can also be used
      with this memory type.
      
    - Cartridge A

      Specifies the place for Cartridge B. The exact parameters can be given
      on the command line. The parameters can specify any of the above
      possible configurations except the type Cartridge A/B.

      Parameters: Must be specified trough the commandline.
      Remarks: Command line parameters are not yet available.

    - Cartridge B

      Specifies the place for Cartridge B. The exact parameters can be given
      on the command line. The parameters can specify any of the above
      possible configurations except the type Cartridge A/B.

      Parameters: Must be specified through the commandline.
      Remarks: Commandline parameters are not yet available.


    Parameter information:
    
    - ROM Image

      Specifies the file name of the image to load. It may contain spaces.
      If there is no absolute pathname, then the position is relative
      to the position of NLMSX it self.

    - Image Start

      Specifies the start of the first byte of the image to be read.
      For example: use 7 if the specified ROM file is a 'BSAVE' file.
      
      Remarks: There no autodetection for BSAVE'D files or normal files.

    - Image Length

      Specifies the length of the image to be read. A value of zero results in
      reading the complete file. This is the default.

    - Start Address

      Specifies the start address within the Z80 addressing space.

    - Mapper Size

      Specifies the size of the memory mapper. Possible sizes:
        64 KByte, 128 KByte, 256 KByte, 512 KByte, 1 MByte, 2 MByte, 4 MByte.


    I/O Layout
    ----------

    Not yet available.


    Command line parameters
    -----------------------

    The following command line parameters are available:

    - /Config <configuration name>

      Specifies the configuration to use, instead of the default configuration.

    - /DriveA <disk image>
      /DriveB <disk image>
      /DriveC <disk image>
      /DriveD <disk image>
      /DriveE <disk image>
      /DriveF <disk image>
      /DriveG <disk image>
      /DriveH <disk image>

      Specifies the disk image to use for the corresponding drive. The disk image
      can be 360Kbyte (Single Sided) or 720KByte (Double Sided). Read-only images
      are opened as if they are write protected. Disk images are not locked and can
      be changed on the fly outside of the emulator, but changing the contents
      outside of the emulator can/will lead to inconsistencies.

    - /CartA

      Specifies that the upcoming parameters /MT, /RI, /IS, /IL, /SA and /MS are
      to be used to specify the contents of Cartridge A.
      
      Remarks: This is the default.

    - /CartB

      Specifies that the upcoming parameters /MT, /RI, /IS, /IL, /SA and /MS are
      to be used to specify the contents of Cartridge B.

    - /MT  <memory type>

      Specifies the used memory type for cartridge A or B. Possible values are:

          0  Undefined
          1  Normal ROM
          2  Normal RAM
          3  Memory Mapper
          4  Disk rom, Memory Mapped, TMS279x
          5  MSX-DOS 2 ROM
          6  Konami Cartridge 4
          7  Konami Cartridge 5
          8  Cartridge A, has the same effect as Undefined
          9  Cartridge B, has the same effect as Undefined

    - /RI <ROM Image>

      Specifies the file name of the image to load. It may contain spaces.
      If there is no absolute pathname, then the position is relative
      to the position of NLMSX it self.

    - /IS <Image Start>

      Specifies the start of the first byte of the image to be read.
      For example: use 7 if the specified ROM file is a 'BSAVE' file.

    - /IL <Image Length>

      Specifies the length of the image to be read. A value of zero results in
      reading the complete file. This is the default.

    - /SA <Start Address>

      Specifies the start address within the Z80 addressing space.

    - /MS <Mapper Size>

      Specifies the size of the memory mapper. Possible sizes:

        0   64 KByte
	1  128 KByte
	2  256 KByte
	3  512 KByte
	4    1 MByte
	5    2 MByte
	6    4 MByte

    Examples:

      ; Just a the MSX-DOS cartridge.
      nlmsx.exe /CartA /MT 5 /RI roms\msxdos2.rom

      ; A konami megarom cartridge without SCC.
      nlmsx.exe /CartA /MT 6 /RI ..\megaroms\vkiller.rom

      ; A konami megarom cartridge with SCC.
      nlmsx.exe /CartA /MT 7 /RI ..\megaroms\mgear2.rom

      ; A combination that brings up special possibilities in Nemesis 2 !
      nlmsx.exe /CartA /MT 7 /RI ..\megaroms\nemesis2.rom
                /CartB /MT 6 /RI ..\megaroms\usas.rom

      ; A 4 megabyte memory mapper with an extra disk rom.
      ; This configuration will have a total of four diskdrives.
      nlmsx.exe /CartA /MT 3 /MS 6
                /CartB /MT 4 /RI roms\disk.rom

      ; The painter.rom.
      nlmsx.exe /carta /mt 1 /ri roms\painter.rom /il 0x10000 /sa 0


    Keyboard Layout
    ---------------

    Not yet available.


    Buttons
    -------
    
    The following buttons are visible:
    
    - New
    - Delete
    - Rename

      These three buttons are not yet available. But the list of configurations
      is made up by the presence of a corresponding '.ini' file in the
      directory 'Config'. Which resides in the same directory as NLMSX it self.
      '.ini' files can be freely added/renamed/deleted on more conventional ways.
      Changes will only be available when entering the Edit Configuration dialog
      again.

    - OK

      Saves all changes and quits the Edit Configuration dialog.

    - Cancel

      Discards all changes and quits the Edit Configuration dialog.

    - Apply

      Saves all changes to the corresponding configuration file. Nothing will
      be changed in the currently running emulation process.

    - Apply To Emulation
    
      Applies all changes to the currently running emulation process. Changing
      or removing ROM images from the running process will most likely reset
      the MSX, if the ROM image is actually used.

      Remarks: This button is only available in the configuration marked with
      '(Current)'.


Default Configurations
----------------------
Default the following configurations are delivered by the emulator:

MSX

Slot 0:   32KB BIOS-ROM
Slot 1:   Cartridge slot A
Slot 2:   16KB Disk-ROM
Slot 3:   64KB RAM
Specials: TMS9918 video (16KB), 50Hz (PAL)

MSX-2
Slot 0:   32KB BIOS-ROM
Slot 1:   Cartridge slot A
Slot 2:   Cartridge slot B
Slot 3-0: Undefined
Slot 3-1: 16KB SubROM
Slot 3-2: 2MB RAM-Mapper
Slot 3-3: 16KB Disk-ROM (TMS279x)
Specials: V9938 video (128KB), 50Hz (PAL), CMOS, MSX-DOS 2

MSX-2+
Slot 0:   32KB BIOS-ROM
Slot 1:   Cartridge slot A
Slot 2:   Cartridge slot B
Slot 3-0: Undefined
Slot 3-1: 16KB SubROM
Slot 3-2: 2MB RAM-Mapper
Slot 3-3: 16KB Disk-ROM (TMS279x)
Specials: V9958 video (128KB), 60Hz (NTSC), CMOS, 128KB Kanji-ROM, MSX-DOS 2

MSX-2 Arabic
Slot 0-0: 32KB BIOS-ROM
Slot 0-1: 32KB Microsoft & Alalamiah DISK BASIC ROM
Slot 0-2: 32KB Arabic word processor
Slot 1:   Cartridge slot A
Slot 2:   Cartridge slot B
Slot 3-0: Yamaha Painter
Slot 3-1: 16KB SubROM
Slot 3-2: 16KB Disk-ROM (TMS279x)
Slot 3-3: 128KB RAM-Mapper

Remarks: The standard disk-rom is used because the original
         disk-rom from this Arabic MSX-2 is not supported.

New configurations can be made and saved for later use. It's also possible to 
change the configuration during the emulation !


Statusbar
----------
The statusbar gives the following information:
- With Screen + frames/second


Bug Report
----------
You can report bug's at emulator@hilderink.demon.nl


Thanks to
---------
I want to thank the following people for helping me:

- Sandy Pleyte (Website and Idea's and a lot more)
- Arnaud de Klerk (Idea's and lot of other things)
- Thijs v.d. Veen
- Hans Otten
- Remco Seesink
- Daniel Gonzlez (Testing)
- Sean Young (Interrupt handling)
- Laurens Holst (Interrupt handling)
- Khaled (for the roms Arabic MSX-2 roms)

and all the MSX people who support/uses this emulator.


--
[EOF]
