diff --git a/Machines/MSX.cpp b/Machines/MSX.cpp new file mode 100644 index 000000000..7b507eaea --- /dev/null +++ b/Machines/MSX.cpp @@ -0,0 +1,26 @@ +// +// MSX.cpp +// Clock Signal +// +// Created by Thomas Harte on 24/11/2017. +// Copyright © 2017 Thomas Harte. All rights reserved. +// + +#include "MSX.hpp" + +namespace MSX { + +class ConcreteMachine: + public Machine { + +}; + +} + +using namespace MSX; + +Machine *Machine::MSX() { + return new ConcreteMachine; +} + +Machine::~Machine() {} diff --git a/Machines/MSX.hpp b/Machines/MSX.hpp new file mode 100644 index 000000000..103d635f8 --- /dev/null +++ b/Machines/MSX.hpp @@ -0,0 +1,22 @@ +// +// MSX.hpp +// Clock Signal +// +// Created by Thomas Harte on 24/11/2017. +// Copyright © 2017 Thomas Harte. All rights reserved. +// + +#ifndef MSX_hpp +#define MSX_hpp + +namespace MSX { + +class Machine { + public: + virtual ~Machine(); + static Machine *MSX(); +}; + +} + +#endif /* MSX_hpp */ diff --git a/OSBindings/Mac/Clock Signal.xcodeproj/project.pbxproj b/OSBindings/Mac/Clock Signal.xcodeproj/project.pbxproj index 7092eddbb..87bb82728 100644 --- a/OSBindings/Mac/Clock Signal.xcodeproj/project.pbxproj +++ b/OSBindings/Mac/Clock Signal.xcodeproj/project.pbxproj @@ -221,6 +221,8 @@ 4B71368E1F788112008B8ED9 /* Parser.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4B71368C1F788112008B8ED9 /* Parser.cpp */; }; 4B7136911F789C93008B8ED9 /* SegmentParser.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4B71368F1F789C93008B8ED9 /* SegmentParser.cpp */; }; 4B7913CC1DFCD80E00175A82 /* Video.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4B7913CA1DFCD80E00175A82 /* Video.cpp */; }; + 4B79A4FB1FC8FF9400EEDAD5 /* MSX.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4B79A4F91FC8FF9400EEDAD5 /* MSX.cpp */; }; + 4B79A4FD1FC9000C00EEDAD5 /* MSX.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4B79A4F91FC8FF9400EEDAD5 /* MSX.cpp */; }; 4B79E4441E3AF38600141F11 /* cassette.png in Resources */ = {isa = PBXBuildFile; fileRef = 4B79E4411E3AF38600141F11 /* cassette.png */; }; 4B79E4451E3AF38600141F11 /* floppy35.png in Resources */ = {isa = PBXBuildFile; fileRef = 4B79E4421E3AF38600141F11 /* floppy35.png */; }; 4B79E4461E3AF38600141F11 /* floppy525.png in Resources */ = {isa = PBXBuildFile; fileRef = 4B79E4431E3AF38600141F11 /* floppy525.png */; }; @@ -819,6 +821,8 @@ 4B77069C1EC904570053B588 /* Z80.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = Z80.hpp; path = Z80/Z80.hpp; sourceTree = ""; }; 4B7913CA1DFCD80E00175A82 /* Video.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Video.cpp; path = Electron/Video.cpp; sourceTree = ""; }; 4B7913CB1DFCD80E00175A82 /* Video.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = Video.hpp; path = Electron/Video.hpp; sourceTree = ""; }; + 4B79A4F91FC8FF9400EEDAD5 /* MSX.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = MSX.cpp; sourceTree = ""; }; + 4B79A4FA1FC8FF9400EEDAD5 /* MSX.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = MSX.hpp; sourceTree = ""; }; 4B79E4411E3AF38600141F11 /* cassette.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = cassette.png; sourceTree = ""; }; 4B79E4421E3AF38600141F11 /* floppy35.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = floppy35.png; sourceTree = ""; }; 4B79E4431E3AF38600141F11 /* floppy525.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = floppy525.png; sourceTree = ""; }; @@ -1893,6 +1897,15 @@ name = Z80; sourceTree = ""; }; + 4B79A4FC1FC8FF9800EEDAD5 /* MSX */ = { + isa = PBXGroup; + children = ( + 4B79A4F91FC8FF9400EEDAD5 /* MSX.cpp */, + 4B79A4FA1FC8FF9400EEDAD5 /* MSX.hpp */, + ); + name = MSX; + sourceTree = ""; + }; 4B8334881F5DB8470097E338 /* Implementation */ = { isa = PBXGroup; children = ( @@ -2374,15 +2387,16 @@ isa = PBXGroup; children = ( 4B54C0BB1F8D8E790050900F /* KeyboardMachine.cpp */, - 4BDCC5F81FB27A5E001220C5 /* ROMMachine.hpp */, 4BA9C3CF1D8164A9002DDB61 /* ConfigurationTarget.hpp */, 4B046DC31CFE651500E9E45E /* CRTMachine.hpp */, 4B7041271F92C26900735E45 /* JoystickMachine.hpp */, 4B8E4ECD1DCE483D003716C3 /* KeyboardMachine.hpp */, + 4BDCC5F81FB27A5E001220C5 /* ROMMachine.hpp */, 4B38F3491F2EC12000D9235D /* AmstradCPC */, 4B2E2D961C3A06EC00138695 /* Atari2600 */, 4B4DC81D1D2C2425003C5BF8 /* Commodore */, 4B2E2D9E1C3A070900138695 /* Electron */, + 4B79A4FC1FC8FF9800EEDAD5 /* MSX */, 4BCF1FA51DADC3E10039D2E7 /* Oric */, 4B2B3A461F9B8FA70062DABF /* Utility */, 4B1497931EE4B5AC00CE2596 /* ZX8081 */, @@ -3131,6 +3145,7 @@ 4B055AAA1FAE85F50060FFFF /* CPM.cpp in Sources */, 4B055A9A1FAE85CB0060FFFF /* MFMDiskController.cpp in Sources */, 4B055ACB1FAE9AFB0060FFFF /* SerialBus.cpp in Sources */, + 4B79A4FD1FC9000C00EEDAD5 /* MSX.cpp in Sources */, 4B055AA41FAE85E50060FFFF /* DigitalPhaseLockedLoop.cpp in Sources */, 4B055AE61FAE9B6F0060FFFF /* OutputShader.cpp in Sources */, 4B055A9B1FAE85DA0060FFFF /* AcornADF.cpp in Sources */, @@ -3367,6 +3382,7 @@ 4BFE7B871FC39BF100160B38 /* StandardOptions.cpp in Sources */, 4B5FADC01DE3BF2B00AEC565 /* Microdisc.cpp in Sources */, 4B54C0C81F8D91E50050900F /* Keyboard.cpp in Sources */, + 4B79A4FB1FC8FF9400EEDAD5 /* MSX.cpp in Sources */, 4BEE0A701D72496600532C7B /* PRG.cpp in Sources */, 4B8334861F5DA3780097E338 /* 6502Storage.cpp in Sources */, 4B8FE2271DA1DE2D0090D3CE /* NSBundle+DataResource.m in Sources */, diff --git a/ROMImages/MSX/basic.rom b/ROMImages/MSX/basic.rom new file mode 100644 index 000000000..0fea39901 Binary files /dev/null and b/ROMImages/MSX/basic.rom differ diff --git a/ROMImages/MSX/cbios.txt b/ROMImages/MSX/cbios.txt new file mode 100644 index 000000000..434f5c04f --- /dev/null +++ b/ROMImages/MSX/cbios.txt @@ -0,0 +1,225 @@ +C-BIOS 0.28 +=========== + +This software is a substitute BIOS which is can be used for running MSX +emulators. It currently supports only execution of cartridge image ("ROMs"). +Before you use it, you should read and accept the license (see below). + +On the C-BIOS web site, you can download newer versions, download the source +code, and report bugs. + +http://cbios.sourceforge.net/ + + +License +------- + +Copyright (c) 2002-2005 BouKiCHi. All rights reserved. +Copyright (c) 2003 Reikan. All rights reserved. +Copyright (c) 2004-2006,2008-2010 Maarten ter Huurne. All rights reserved. +Copyright (c) 2004-2006,2008-2011 Albert Beevendorp. All rights reserved. +Copyright (c) 2004-2005 Patrick van Arkel. All rights reserved. +Copyright (c) 2004,2010-2011 Manuel Bilderbeek. All rights reserved. +Copyright (c) 2004-2006 Joost Yervante Damad. All rights reserved. +Copyright (c) 2004-2006 Jussi Pitkänen. All rights reserved. +Copyright (c) 2004-2007 Eric Boon. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR +IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES +OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. +IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, +INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT +NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF +THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + +History +------- + +ver 0.01 Initial +ver 0.02 2002-08-15(JST) + * Added original font and drawing screen. + * Added dump-mode. + * Changed recognition method of cartridges + to recognize cartridges taking priority. +ver 0.03 2002-08-19(JST) + * Based on a suggestion from Ms.Okei, + wrote 20h of BIOS(compare HL and DE). + In the result, shooting game of a certain company became runnable + more correctly. + Thank Ms.Okei!! +ver 0.04 2002-08-20(JST) + * Added initialize of FCC2h-FCC4h. + * Added function of GTSTCK and GTTRIG temporarily. + * Divided msxb.bin to halfs. + doing combining/copying with setb.bat now. +ver 0.05 2002-08-27(JST) + * Added INITGRP(only screen2), CHGMOD(graphic mode change routine), + a routine calls H.STKE. + * Rewrite memory recognition routine. + * Some bug fixes. + * Added sound test function. +ver 0.06 2002-09-01(JST) + * Fixed around of color. +ver 0.07 2002-09-09(JST) + * Added some sorts of keyboard routines. + * Added joystich function to GTSTCK and GTTRIG. +ver 0.08 2002-09-12(JST) + * Restructured memory initialize routine. + * Added error display routine. + * Fixed routine of finding kinds of cartridges. + * Fixed using method of EXPTBL. + * Added initialize of from RG8SAV to RG23SA. + * Now return within disabled interrupt from ENASLT routine. +ver 0.09 2002-09-19(JST) + * Made the rest half of font. + * Improved key input routine. + * Added CHPUT. With it, rewrote display routine. + * Fixed init_grp. + * Changed filenames to CBIOS.ROM, CBIOS_SUB.ROM. +ver 0.10 2002-09-20(JST) + * Fixed indent. + * and so on... +ver 0.10a 2002-09-22(JST) + * Fixed license. + * Added support of ROMs in page3. +ver 0.11 2002-09-22(JST) + * Small fix in init_sc5. +ver 0.12beta + 2002-09-25(JST) + * Added test routine for disk access. need DISK.ROM. + * Added init_sc7. + * Improved ENASLT. now finding cartridge uses ENASLT. + * Improved RAM detection. +ver 0.12 2002-09-27(JST) + * Changed finding cartridge again. + * Changed screen mode of cartridge running time. + * Fixed keyboard routine. + * Fixed stick routine against to interrupt. +ver 0.13 2002-10-02(JST) + * Based on info from Mr.Maarten (a member of openMSX developers), + fixed around of SCREEN 5. + For detail, switching line numbers, + temporary treatment for a bug of reading from VDP status register, + and so on. +ver 0.14 2002-10-10(JST) + * Rewrote comments in source within Japanese. +ver 0.15 2003-02-26(JST) + * Rewrote some of comments back to English again. + * Fixed non-assemblable condition becauseof lack of font file. + * Changed filename, some of label name, strings and so on. +ver 0.16 2003-04-16(JST) + * Separated sound test from source. (Disabled) +ver 0.16a 2003-06-01(JST) + * CHGMOD: When screen0/1, now load font to VRAM. + * CHPUT: Now support also screen1 not only screen0. +ver 0.16b 2003-08-10(JST) + * Added entry: INITXT, INIT32. + These were exist only as internal routine of CHGMOD. + * INITXT, INIT32: Fixed screen clear failure. + * CHPUT: Fixed scroll failure. +ver 0.17 2003-08-10(JST) + * Changed LICENSE. + New LICENSE will be suitable in various situations. + e.g. use as a firmware for hand-made hardware. +ver 0.18 2004-12-18(CET) + * First release since moving to SourceForge. + * Much improved support for MSX2 games. + * Graphical boot logo. + * Included machine config files for several MSX emulators. + * Various bug fixes. +ver 0.19 2004-12-24(CET) + * Added support for SCREEN4 and SCREEN8. + * Added support for clock chip. + * Added support for palette. This fixes a lot of wrong colours. + * Stubbed many calls: non-implemented calls print their name on the + openMSX debugdevice (if present). + * Various bug fixes. +ver 0.20 2005-02-09(CET) + * Added an MSX2+ configuration, which includes V9958 and MSX MUSIC. + * Separate main ROMs for MSX1/MSX2/MSX2+. + * Implemented several MSX2 specific routines, including BLT*. + * Display is disabled when switching to a different screen mode. + * Improved CHPUT a lot; implemented control and escape codes. + * Rewrote key buffering; fixes bug of keys being repeated. + * New boot logo, even cooler than the previous one. + * New font, placed at a fixed address so all games can find it. + * Started work on a disk ROM, but it is not functional yet, so it + is not enabled in the configurations. + * Stubbed all non-implemented calls. + * Various bug fixes. +ver 0.21 2005-06-07(CET) + * Fixed RuMSX configuration files, thanks to Rudolf Lechleitner. + * Rewrote ROM search code; now all ROMs are recognized. + Also a clear error message is printed for BASIC ROMs. + * New boot logo for MSX2 and MSX2+. + * Changed boot sequence: + Show logo, switch to SCREEN 1 and search for ROMs. + * Improved video code; fixes several games. + * Various bug fixes. +ver 0.22 2008-12-27(CET) + * Use separate logo ROM to save space in the main ROM. + * Set lower bits of PSG reg 15 before reading joystick trigger status. + * Improved RAM search. + * Many new routines implemented and existing implementations made + more complete, especially character I/O and bitmap graphics. + * Added lots of documentation to system variables. + * Added support for GNU assembler. + * Various bug fixes. +ver 0.23 2009-01-04(CET) + * Updated blueMSX configuration files, thanks to Benoît Delvaux. + * Fixed version reported by MSX1 logo ROM. + * Fixed several video routines so they work on MSX1 VDPs (TMS99xx). + * A couple of other bug fixes. +ver 0.24 2010-05-24(CET) + * VRAM size is now properly checked, fixing R-Type's V9938 detection. + * C-BIOS doesn't lie anymore about the interrupt frequency. + * Don't di; halt when no ROM is found, the warning in openMSX may be + confusing + * A few minor bug fixes and tweaks. +ver 0.25 2011-02-01(CET) + * C-BIOS now offers localized versions in the flavours INT (default), + JP and BR. + * Bug fixes for compatibility with Mirai, Family Billiards. + * A couple of other bug fixes. + * This version only compiles with Pasmo 0.5.3, due to lack of + standards in assembler directives... +ver 0.26 2014-11-02(CET) + * Restored support to compile with tniASM (v1.0 Beta 17 or higher) + * Moved to git, which means a.o.: archived changelog.txt, use git log + from now on + * Fixed VDP VRAM access timing for MSX1 VDP's + * Update openMSX configurations to the new structure + * Fixed bug blueMSX configurations + * Fixed build on Mac OS X and add support for "make dist" +ver 0.27 2014-11-05(CET) + * Fixed bug (regression) in filvrm on non-MSX1-VDP's + * Fixed some small bugs in openMSX configs + * Fixed line endings of this file +ver 0.28 2017-07-30(CEST) + * Fixed bug that prevented brackets and a few other keys from + generating characters when pressed + +Special Thanks +-------------- + +People uploading MSX information to the internet. +People developing any kind of emulators. +All users. + +Font edit tool: + Gameboy Tile Designer version 2.2 + Copyright H. Mulder 1999 + diff --git a/ROMImages/MSX/disk.rom b/ROMImages/MSX/disk.rom new file mode 100644 index 000000000..d9fa89f54 Binary files /dev/null and b/ROMImages/MSX/disk.rom differ diff --git a/ROMImages/MSX/main_msx1.rom b/ROMImages/MSX/main_msx1.rom new file mode 100644 index 000000000..2ac924d0e Binary files /dev/null and b/ROMImages/MSX/main_msx1.rom differ diff --git a/ROMImages/MSX/main_msx1_br.rom b/ROMImages/MSX/main_msx1_br.rom new file mode 100644 index 000000000..81eeb8d00 Binary files /dev/null and b/ROMImages/MSX/main_msx1_br.rom differ diff --git a/ROMImages/MSX/main_msx1_jp.rom b/ROMImages/MSX/main_msx1_jp.rom new file mode 100644 index 000000000..c1d9bbc50 Binary files /dev/null and b/ROMImages/MSX/main_msx1_jp.rom differ diff --git a/ROMImages/MSX/readme.txt b/ROMImages/MSX/readme.txt new file mode 100644 index 000000000..a7f127583 --- /dev/null +++ b/ROMImages/MSX/readme.txt @@ -0,0 +1,7 @@ +ROMs for the MSX go here. Those included here are BouKiCHi’s C-BIOS open source reimplementation — see cbios.txt for authorship and licence information. ROMs for a specific MSX may be supplied instead if the user desires. + +Expected files: + +basic.rom +disk.rom +main_msx1.rom