------------------------------------------------------------------------------

  FM-7 EMULATOR XM7 (V3.4L52a / V2.9L52a / V1.1L52a)

  \[XR[h
  for Win32
  Copyright (C) 1999-2012 ohD
  Copyright (C) 2001-2012 Ryu Takegami
  ROMEO support code by usalin

------------------------------------------------------------------------------

\[XJɂ

  ̃A[JCuFM-7G~[^XM7(V3.4L52a/V2.9L52a/V1.1L52a)̑S\[XR[
  hłB

  ͌XA\[XR[hJɗ]ϋɓIł͂܂B{\tgɂĂ
  ̐A@E̓肪ߋ̋@́AڍׂȃhLgEdl
  ƂȂ蓾܂̂ŁAdqۑ̈ӖłJׂƍl܂B

  ܂XM7̊J̉ߒŁAM88͂߂Ƃ鑽̃\tgEFÃ\[XQl
  Ē܂B̂ƂӖ܂B


gpKiCZXj

  A[JCuɊ܂܂t@CQ́Aꕔ̗O(q)AohD 
  ݂肤쌠ۗLĂ܂B

  \[Xt@C̈ꕔA͑Sėpꍇ́A̋KɊÂ
  Ƃ܂B̋K͉ߋ̃o[Wɂ̂ڂēKp̂Ƃ܂B

  EVMfBNg̃t@Cėpꍇ́AỸ\[XуhL
    gɃIWi̒쌠\𖾋LĂB܂pp͋֎~܂B
  EȊO̍̕ėp͎RłBOlApp͋֎~܂B

  ̃A[JCu̍Ĕzz͂ł܂Bf]ڂւ܂B


gpKɊ܂܂ȂOȂ

  ȉɎt@CFMG~[^"fmgen"ς̂łB
  IWi̒쌠҂ciscł(cisc@retropc.net)B
  ̕ɂĂ͑Oq̋K͓Kp܂B

  vm\fmgen.cpp
  vm\fmgen.h
  vm\fmgeninl.h
  vm\opna.cpp
  vm\opna.h
  vm\psg.cpp
  vm\psg.h


  ȉɎt@C̓ouJZbgT|[gpR[hłB
  XM7dash̊J҂łg}(tomatoma@s54.xrea.com)̋𓾂āA32KBouJ
  Zbgpɉς̏gݍł܂B
  ̕ɂĂXM7dasḧڐÂ߁AOq̋Kɏ]ƂƂȂ܂B

  vm\bubble.c
  vm\bubble.h


  ȉɎt@CROMEOT|[gpR[hłB
  ҂ł邤(usalin@yahoo.co.jp)̋𓾂āAς̏gݍł܂B
  ̕ɂĂ͑Oq̋K͓Kp܂B

  win32\juliet.cpp
  win32\juliet.h
  win32\romeo.h


  ȉɎt@CVisual C++ 2010 Express EditionpmakeflełB
  ҂łBen.JP̋𓾂āAς̏YtĂ܂B
  ̕ɂĂXM7LP̈ڐÂ߁AOq̋Kɏ]ƂƂȂ܂B

  MS\makefile
  MS\Win32\winres.h


  ȉɎt@CV3.4L51/V2.9L51/V1.1L51ŐVɍ̗pACRłB
  ҂łVێ(tenmaru-tenpulako@violet.plala.or.jp)̋𓾂āAꕔ
  ς̏gݍł܂B
  ̕ɂĂ͑Oq̋K͓Kp܂B

  win32\resource\tenfm8.ico
  win32\resource\tenfm7.ico
  win32\resource\tenfm77.ico
  win32\resource\ten77av.ico
  win32\resource\ten40ex.ico
  win32\resource\ten40sx.ico
  win32\resource\ten40ex2.ico
  win32\resource\app_5in.ico
  win32\resource\app_2d5.ico
  win32\resource\app_d775.ico
  win32\resource\app_vfd5.ico
  win32\resource\app_351.ico
  win32\resource\app_2d1.ico
  win32\resource\app_2dd1.ico
  win32\resource\app_d771.ico
  win32\resource\app_vfd1.ico
  win32\resource\app_352.ico
  win32\resource\app_2d2.ico
  win32\resource\app_2dd2.ico
  win32\resource\app_d772.ico
  win32\resource\app_vfd2.ico
  win32\resource\app_t77.ico
  win32\resource\app_t771.ico


fBNg

  ȉ̂悤ȃfBNg\ɂȂĂ܂B͕֋XIȂ̂łB

  VM          zFM-7
  Win32       I/O(Win32)
  Borland     BorlandRpCmakefile
  Tool        ⏕c[


`ς݃V{

  ȉ̃V{ŜŎgĂ܂B

  _DEBUG     fobOrh܂Bassertɂ鎩Ȑffs܂B
  NDEBUG     [Xrh܂Bʏ͂`܂B
  _WIN32     Win32錾܂B(RpCɂ莩`܂)
  XM7_VER    o[W`܂Bo[WɉA13̐l`܂B
  MOUSE      }EXG~[V@\Lɂ܂B
  MR2        MR2I/O^RAMfBXN@\Lɂ܂(XM7_VER=3̂ݗL)B
  L4CARD     400CJ[hT|[g@\Lɂ܂(XM7_VER=1̂ݗL)B
  JSUB       {TuVXeT|[g@\Lɂ܂(XM7_VER=1̂ݗL)B
  BUBBLE     ouJZbgT|[g@\Lɂ܂(XN7_VER=1̂ݗL)B
  RSC        RS-232CT|[g@\Lɂ܂B
  ROMEO      ROMEOT|[g@\Lɂ܂B

  <Ql>
    ۂ̎st@Cł͈ȉ̃V{`ăRpCĂ܂B
      V1.1      : -DXM7_VER=1 -DMOUSE -DROMEO -DFDDSND -DMIDI -DRSC -DL4CARD
                  -DJSUB -DBUBBLE
      V2        : -DXM7_VER=2 -DMOUSE -DROMEO -DFDDSND -DMIDI -DRSC
      V2-V2߂ : -DXM7_VER=2 -DMOUSE -DROMEO -DFDDSND -DMIDI -DRSC -DFMTV151
      V3        : -DXM7_VER=3 -DMOUSE -DROMEO -DFDDSND -DMIDI -DRSC -DMR2


  ȉ̃V{xm7.hŐ錾Ă܂B

  FALSE      0
  TRUE       (!FALSE)
  NULL       ((void)0)
  ASSERT     _DEBUG`ɁAassertLɂ܂B
  FASTCALL   WX^֐ĂяoKg܂B
  UNUSED     gpĂȂϐ̌x\}邽߂Ɏg܂B


rh̑O

  XM7{̂̃rhꍇ́AVMfBNgWIN32fBNg̓e
  fBNgɂ܂Ƃ߂ăRs[ĂB̂悤ȃc[ɂȂ܂B

  ------- {(VMyWIN32̓e1ɂ܂Ƃ߂)
      |
      ------- resource (ACR\[X)

  ܂AZuƂNASM(Netwide Assembler)KvłBzzĂ܂
  ̂ŕʓr肵ĂBo[W0.98𐄏܂{M_ł̍ŐV
  2.10.05ł肠܂B
  ۂɃ[XXM7ŎgpĂNASM(0.98.08+towns05)́w]H in 
  x(http://www.purose.net/befis/)ŔzzĂ܂Bgbvy[WA
  udownloadvuNASM for FM-TOWNSvƐiłB
  iԈĂuHall of FamevuInside TOWNS-OSvāuƂ񂶂Rv
    ƂȂł肢܂Bj


rh(Borland C++ 5.5.1)

  XM7Embacadero(Borland)疳zzĂBorland C++Ńrhł܂B
  Borland C++Version 5.5.1ZbgAbvAɎ3_ݒ肵Ă܂B

  (1)nasmw(nasm)ɃpXʂĂB
  (2)J̃CupXlib\psdk܂߂

  BorlandfBNgmakefileRs[܂B^[Qbgo[WT|
  [gӋ@\Anasm̃t@Cmakefile̐擪Œ`Ă܂̂ŕKv
  ΕύXĂ܂B

  oAƃfBNgmakeXM7.exe܂B


rh(Visual C++ 2010 Express Edition)

  XM7Microsoft疳zzĂVisual C++ 2010Ńrhł܂B
  Visual C++ 2010 Express EditionAMicrosoft DirectX 9.0 SDK (October 2004)Z
  bgAbvAɎ3_ݒ肵Ă܂B

  (1)nasmw(nasm),Visual C++ɃpXʂĂB
  (2)ϐ̃CN[hpXACupXAst@CpXݒ肵Ă
  (3)MSfBNgWin32fBNgɂwinres.hƃfBNgɃR
     s[Ă(LłłStandard Editionȏł͕Kv܂񂪁c)

  MSfBNgmakefileRs[܂B^[Qbgo[WT|[g
  Ӌ@\Anasm̃t@Cmakefile̐擪Œ`Ă܂̂ŕKv
  ΕύXĂ܂B
  oAƃfBNgnmakeXM7.exe܂B

  ȂA̕@Ńrhst@CBCCŃrh኱傫ȂA
  WindowsXPȍ~łȂƓȂ߁AĔzzɂBCCŃrĥĂ
  ܂B


rh(Visual C++ o[W)

  ܂NASMŃAZu܂BBorland C++Ƃ̓R}hCقȂ܂̂Œ
  ĂB

  (V1rhꍇ)
   nasmw -d _WIN32 -d XM7_VER=1 -d L4CARD -d JSUB -f win32 cpu_x86.asm
   nasmw -d _WIN32 -d XM7_VER=1 -d L4CARD -d JSUB -f win32 ddrend16.asm
   nasmw -d _WIN32 -d XM7_VER=1 -d L4CARD -d JSUB -f win32 ddrend24.asm
   nasmw -d _WIN32 -d XM7_VER=1 -d L4CARD -d JSUB -f win32 ddrend32.asm
   nasmw -d _WIN32 -d XM7_VER=1 -d L4CARD -d JSUB -f win32 gdi_rend.asm
   nasmw -d _WIN32 -d XM7_VER=1 -d L4CARD -d JSUB -f win32 l4_rend.asm
   nasmw -d _WIN32 -d XM7_VER=1 -d L4CARD -d JSUB -f win32 vm_sub.asm
   nasmw -d _WIN32 -d XM7_VER=1 -d L4CARD -d JSUB -f win32 w32_sub.asm

  (V2rhꍇ)
   nasmw -d _WIN32 -d XM7_VER=2 -f win32 cpu_x86.asm
   nasmw -d _WIN32 -d XM7_VER=2 -f win32 ddrend16.asm
   nasmw -d _WIN32 -d XM7_VER=2 -f win32 ddrend24.asm
   nasmw -d _WIN32 -d XM7_VER=2 -f win32 ddrend32.asm
   nasmw -d _WIN32 -d XM7_VER=2 -f win32 gdi_rend.asm
   nasmw -d _WIN32 -d XM7_VER=2 -f win32 l4_rend.asm
   nasmw -d _WIN32 -d XM7_VER=2 -f win32 vm_sub.asm
   nasmw -d _WIN32 -d XM7_VER=2 -f win32 w32_sub.asm

  (V3rhꍇ)
   nasmw -d _WIN32 -d XM7_VER=3 -f win32 cpu_x86.asm
   nasmw -d _WIN32 -d XM7_VER=3 -f win32 ddrend16.asm
   nasmw -d _WIN32 -d XM7_VER=3 -f win32 ddrend24.asm
   nasmw -d _WIN32 -d XM7_VER=3 -f win32 ddrend32.asm
   nasmw -d _WIN32 -d XM7_VER=3 -f win32 gdi_rend.asm
   nasmw -d _WIN32 -d XM7_VER=3 -f win32 l4_rend.asm
   nasmw -d _WIN32 -d XM7_VER=3 -f win32 vm_sub.asm
   nasmw -d _WIN32 -d XM7_VER=3 -f win32 w32_sub.asm

  Visual C++IDENAAvP[VEBU[h"Win32 Application"
  ݒ"̃vWFNg"IXM7̃vWFNg쐬܂B

  vWFNg쐬A[NfBNg.cA.cppA.rcׂăvWFNg
  ǉ܂B܂nasmɂ萶ꂽcpu_x86.obj, ddrend16.obj, ddrend24.obj,
  ddrend32.obj, gdi_rend.obj, l4_rend.obj, vm_sub.obj, w32_sub.obj ǉ
  B

  Ƃ̓V{XM7_VERѕKvȃIvVV{`Arhok
  łBCû͎̂NKvƎv܂B

  kernel32.lib user32.lib gdi32.lib comctl32.lib comdlg32.lib shell32.lib
  winmm.lib imm32.lib ddraw.lib dinput.lib dsound.lib dxguid.lib ole32.lib


⏕c[

  ROM쐬c[SAVEROMV[ÝAFM-7V[Yœ삷镔(6809AZu
  Lq)ƁANfBXN쐬镔(8086AZuŋLq)ɕĂ܂B

  6809AZũ͎c[ō쐬܂B
      HD63C09/6809 NXAZu AS63.EXE Version 1.20T
  8086AZũ͎c[ō쐬܂B
      Netwide Assembler 0.98(Netwide Assembler 0.98.08+towns05)
  e[vŁE_vXgł̐ɂ͈ȉ̃c[KvłB
      FTOOLS (Apollo)FMWRITE.EXE/FMFSLIB.DLL

  6809AZuuAS63.EXEv Version 1.20T́w6809.netx(http://www.6809
  .net)ŔzzĂ܂Bu6x09Nv̉̂قɃN܂B
  8086AZuɂĂXM7{̂ƓNetwide Assember𗘗p܂B
  FTOOLSApollõTCg(http://retropc.net/apollo/)ŔzzĂ܂B

  CNBorland C++ɕtmake.exegƗǂł傤BɃCN
  ƁAȉ̃t@C܂B

    SAVEROM.COM/SAVEROM.BIN  (XM7 V2EFM77AVV[YS@p 2D)
    SAVEROM2.COM/SAVEROM2.BIN(XM7 V3EFM77AV20/40/EX/SXp 2DD)
    SAVEROM7.COM/SAVEROM7.BIN(XM7 V1EFM-7V[YS@p 2D)
    SAVEJDIC.COM/SAVEJDIC.BIN(XM7 V1.1EFM77-101p 2D)
    SAVEKNJ.COM/SAVEKNJ.BIN  (XM7 V1/V2/V3EFM77AV40EX/SXp 2DD)
    SAVER.D77 (ec[̎@spt@CfBXNC[WA2D)

  AS63̃IveB}CY@\gA6809̃u`̓Ou`̂ŋLq
  Ă܂BAZuɃV[gœ͂̂̓V[gɕϊ܂B


\[XR[h KCh

  XM7̃A[LeN`AvO\ȒPɐ܂B

  XM7VM(z}V)ƌĂԉzFM-7ƁAۂI/OG~[VS
  @ˑłWin322ɕĂ܂BzFM-7͈̕ڐAA
  p߂ōĂ܂̂ŁACPUAOSւ̈ڐA͔rIeՂłB
  AVM6809CPURAɂĂ͐\̂x86AZuŋLqĂ
  ̂ŁACPUɈڐAꍇCPURAʓrKv܂B


  {IVM̎g͎̒ʂłB

  (1)
     [NGAAROMt@C[h܂BsFALSEԂ
     ܂̂œK؂ȃG[sĂB
     #include "xm7.h"
     ....
     if (!system_init()) {
       (G[)
     }

  (2)Zbg
     VM̏IAZbg܂B͎@ł̃p[IZbg
     ɑ鏈łB
     #include "xm7.h"
     ....
     system_reset();

  (3)s
     VMusPʂ̉zԂĂA̎ԂɊÂCPUfoCX
     ܂B܂肱̎Ԃi߂Ƃ삪Asɂ܂B
     sƃAWX^̃[NGAωAqnotifyn̊
     KvɉČĂяo܂B
     #include "xm7.h"
     ....
     /* 1msAVMs */
     DWORD us = 1000;
     while (us > 0) {
       us -= schedule_exec(us);
     }

  (4)I
     ̉ȂǁAЕts܂B
     #include "xm7.h"
     ....
     system_cleanup();

  VMROMt@CAfBXNC[W(D77t@C)AXM7t@C̃t@CI/O
@KvɂȂƁAdevice.hŐ錾Ăfile_n̊֐ĂяoAt@CA
@NZXv܂B

  ܂VRAMύXApbgύXAFM(OPN)Ȃǂւ̃WX^o͂ȂǂƁA
  device.hɐ錾Ăxxxxx_notifyn̊֐Ăяo܂Bvbgt
  H[łnotify󂯁AKXs܂B

  L[{[hAWCXeBbNу}EXɂẮAVMɒʒm܂VM
@f[^vɑ΂ăf[^n`ɂȂ܂BL[{[hɂĂkeyboa
@rd_makeAkeyboard_break2̊֐ŃL[Make/Breakʒm܂BWCX
@eBbNjoy_requestA}EXmospos_request/mosbtn_requestVMĂ
@o܂̂ŁAvbgtH[Ńf[^쐬AԂ܂B

  ۂ̃G~[^̎ł́AA^C邽߃vbgtH[
  ̎ԂvAɌԂVM쓮邱ƂɂȂ܂B쓮̍
  Ԃnotify̏AL[{[hf[^̒ʒmȂǂsƂɂȂ܂B̂߁A
  ʂɃXPW[KvƂȂAԏ2w\ƂȂ܂B


  Win32łw32_main.cŏɏqׂAZbgAIsĂ܂B

  XPW[w32_sch.cɂAtimeGetTime APIpĎԌvsƂƂ
  ԃI[o[̏ꍇ̏A`ÉEg`Ȃǂ̃TuW[̌Ăяo
  sĂ܂B

  `w32_draw.cɂAۂ̏w32_gdi.c܂w32_dd.cppɐU蕪Ă
  ܂BVRAMrbgC[WAJ[镔(_O)gdi_rend.asmA
  ddrend*.asmAl4_rend.asmɂ܂A{Iɓl̃ASY
  ̂VMtool.cBMPZ[u@\ƂĎĂ܂̂ŁAQlɂĂ
  B

  ͏w32_kbd.cppłBDirectInputы̃WCXeBbNAPIp
  L[{[hEQ[Rg[E}EX̎擾sAɏqׂAPIgVM
  ʐMĂ܂B

  g`w32_snd.cppɂADirectSoundgo͂sĂ܂BXg
  [~O͓T^Iȃ_uobt@sAWݒł75msƂɃobt@
  ̔[UsdlƂĂ܂B


A

  z[y[W
  http://ytanaka.vicp.net/ ({ƁE@\~)
  http://retropc.net/ryu/xm7/ (NȂXM7̂؁[)

  f
  http://ytanaka.vicp.net/cgi-bin/xm7/hyperbbs.cgi (@\~)

  Վf
  http://xm7.bbs.coocan.jp/

  [AhX
  ohD : yasushi@tanaka.net
   : ryu.takegami@mbg.nifty.com
