MSXDasm v2.0 -- by Eduardo Aguiar (07/01/1999)
==============================================
Hi there! It is my first "official" release of Msxdasm. As you might
guess, it is a disassembler for MSX programs, more specifically MSX's
.rom files. I hope you enjoy it!


Msxdasm highlights:
==================
. Covers up all Z80 instructions, even those called "secrets".
. Really navigates through code. It splits very well code from data.
. Looks for HKEYI hooking (FD9ah), which almost every game do.
. Looks for jphla kind of routines (see below).
. Allows you define labels for meaning addresses, e.g. 004A -> RDVRM
. Brings MSXROM.DEF with some definitions on addresses.
. You may create a .DEF for each .ROM, for naming addresses INSIDE code.
. Runs on every system with DPMI (Win95, Linux DOS, OS/2, DOS with QEMM).


Disassembling...
================
It is just type "msxdasm filename", where filename is a .ROM file. Note
that it will disassembly only normal MSX games, not megarom's ones. I
promisse I will think about it...

E.g:

msxdasm kvalley >kvalley.asm

As I told above, you may define some labels for addresses. For kvalley.rom,
I have created an kvalley.def file:

4010 addhla hl = hl + a
4015 adddea de = de + a

Note that "addhla" and "adddea" are simply labels I choosed, and they
mean nothing to real code or to disassembly run. They could be anything else.
After creating kvalley.def, you can simply run again msxdasm, and it will
use the new defined labels on disassembling! You can do it infinitely.


jphla
=====
I did not know how to call it, but it is very common on Konami's games:
a routine that acts as a selector to jump to several addresses:

jphla:
        POP HL
        add a,a
        call addhla
        jp (hl)

The difference exists when you can it:
        call jphla
        dw   address1
        dw   address2
        dw   address3
        ...

Instead having code following the call instruction, we have dw definitions
to addresses. Without being aware of this, any disassembler would
misunderstand the subsequent code.So, as soon as you identify a jphla
routine, you should put it on game's definition file, so msxdasm will know
how to handle with it. Using again kvalley (my favorite!) we have:

4010 addhla hl = hl + a
4015 adddea de = de + a
404b jphla


About Msxdasm and its author:
============================
MSXdasm is FREEWARE, which means you can use, copy, share, distribute it
without charge. It is also means I am not responsible for any damage that
might occurs, or for any misfunction of msxdasm.

Author: Eduardo Aguiar. I am graduating on Mathematics, and if all runs fine
I will graduate next week! I am also an analyst and programmer at State
University of Rio de Janeiro. I have started on MSX in 1985, and have made
some commercial progs here in Brazil. Even working nowadays on PCs I never
forget MSX and Konami Games (they rules!).

I would like to thanks DJGPP authors for the best C++ compiler ever!
Take a look at www.delorie.com for further information on it!


Contacting the author:
=====================
Just send an e-mail to aguiar@uerj.br. I really would like to hear about
you all on MSX communities all around! Any doubt, comment or request would
be very appreciated.

That's all. Enjoy Msxdasm!
