Q&A - cayce-msx/msxpp-quick-ref GitHub Wiki
This FAQ is in no particular order.
- Q: How to run rom files?
A: That deserves a howto section - Q: How to mount a .dsk (floppy disk image) that's stored on a micro-SD card?
A: That too deserves a howto section - Q: Are any/all dip-switch/keyboard options reachable from MSX by software, e.g., a .BAT program?
A: yes, using switched I/O
This is documented in the OCM-PLD Pack atdocs/switched io ports revision 11.pdf
See column on the right ("SMART COMMANDS TABLE"), hex values. TheSETSMART
tool executes one or more of these commands, e.g.:-
SETSMART -F8FD
: Warm reset with OCM-BIOS reload -
SETSMART -0a0f33
: CPU 8.06MHz, Set External Slot-1 + Internal SCC-I Slot-2, Lock Slot-1 & Slot-2 Toggles -
SETSMART -FB
: Cold reset
-
- Q: What 'custom speeds' are available for the CPU?
A:SETSMART
command value 04-0A Set Custom Speed to 4.10,4.48,4.90,5.39,6.10,6.96,8.06MHz - Q: Is there a 'safe mode' that starts software that won't run with the standard settings?
A: Not as such, but you could try this:SETSMART -030B40 ' CPU & external bus at 3.58MHz, Turbo MegaSD Off MAPPER ' disables MSX-DOS2 memory mapper BASIC AUTOEXEC.BAS ' .. or another command to start the application
- Q: Can the display settings be influenced by software?
A: yes, for example with the following two commands:-
SETSMART -18
: Set Display Mode 15kHz RGB with Audio Out (i.e., SCART) -
SETSMART -D0
: Force NTSC Mode (i.e., 60Hz)
-
- Q: What is the maximum usable μSD-card storage size?
A: depends on MegaSDHC vs. Nextor:- using SD-BIOS with Nextor: FAT16 4GiB * 255 partitions => almost 1TiB
- preinstalled firmware: probably just one partition of 4GiB
- Q: Which OneChipMSX device variants exist?
A: There is the original (blue transparent) Japanese OneChipMSX ("OCM") (2006), Korean and Brazilian Zemmix Neo (2013-2018), metal case SX-1 (2018), 3D printed case SX-1 mini+ (2020-2023), transparent case SM-X (2019-?), SM-X Mini (no longer supported by OCM-PLD), the SX|2 (2021-2024), SX-lite (2024-..) and SX-E (2024-..). I'll use the term MSX++ to describe them all for the remainder of this document. (Note that that's not entire accurate nor license-compliant, as only such a hardware device with firmware OCM-PLD v3.9.1 may be called MSX++.) All are supported by KdL's OCM-PLD firmware.
The following Machine Ids are defined - displayed bysamples/ocmstat.asc
in the OCM-Extra Pack:- 0: 1chipMSX
- 1: Zemmix Neo/SX-1 and related (also SX-lite?)
- 2: SM-X/MC2P
- 3: SX-2 (and probably SX-E)
- 4: SM-X Mini/SMX-HB
- 5: Altera DE0/DE1 ("DE0CV")
- Q: Is there information about the original OneChipMSX, and its prototype, the ESE MSX3?
A: Yes, check out, e.g.:- http://msxbanzai.tni.nl/computers/ese3.html (plaintext HTTP only!)
- https://www-hat-hi--ho-ne-jp.translate.goog/tujikawa/esepld/index.html?_x_tr_sch=http&_x_tr_sl=auto&_x_tr_tl=en&_x_tr_hl=en-US&_x_tr_pto=wapp
- http://www.msx.d4e.co.jp/1chipmsx.html (plaintext HTTP only! Also, Google translate seems to have issues translating?)
- Q: What revisions of SX2 exist?
A: In Apr-2024 the following:- Initial (sold in 2021): has power switch on the left of the unit
- Revision 2.x (sold in 2023): power switch by the USB connector and a jumper to disable Wi-Fi
- Revision 3.x (sold in 2024): (capped/not implemented) FPGA multicore support
- Q: What does the SX2 add compared to SX1?
A: SX2 adds a DC power connector, autofire (Ren-Sha Turbo), OPL/YM3526,OPL2/YM3812,OPL3/YMF262, PS/2 mouse port, second PSG, separate 3.5mm TRS jack tape in/out connector and 3rd "cartridge slot" IDC connector. And a much more powerful FPGA - which enables the OPL/2/3 and (in the future) Turbo-R emulation. - Q: OPL3? Sounds familiar. Who are member of that family tree, and what is supported by OCM-PLD/MSX++ devices?
A: All OPLx sound chips were created by Yamaha. Some were used in MSXes, others in IBM compatible PC sound cards.
operator | model | year | MSX device / standard | IBM-PC device(s) | Remarks | OCM-PLD support |
---|---|---|---|---|---|---|
OPL | YM3526 | 1984 | SX2 and related | |||
Y8950 | 1984 | Music Module, MSX-AUDIO | YM3526 with ADPCM | limited * | ||
OPL2 | YM3812 | 1985 | Adlib, SoundBlaster | SX2 and related | ||
OPLL | YM2413 | 1987 | FM-PAC, MSX-MUSIC | all | ||
OPL3 | YMF262 | 1990 | Sound Blaster Pro & 16, AdLib Gold, Pro AudioSpectrum | SX2 and related | ||
OPL4 | YMF278 | 1994 | MoonSound | SoundEdge | none | |
*) SX2 & related do support MSX software that uses MSX-AUDIO without ADPCM |
-
Q: How to use the OPL3 and/or second PSG on SX2 & related devices?
A: Both are disabled by default (unknown why). Also, both cannot have their volume set individually.
Enable OPL/OPL2/OPL3 usingSETSMART -88
or Scroll Lock. Disable withSETSMART -87
or Scroll Lock.
Enable the second PSG (the 'switched io ports' document calls this "external PSG"; it's accessed at I/O ports 10-13h) usingSETSMART -55
. Disable withSETSMART -54
. PSG2 cannot be enabled using the keyboard.
Testing:- OPL3: The 8bits4ever SX2 manuals contains
opl3test.vgm
, showcasing the OPL3. Usevgmplay
to play. - OPL3: Zanac Ex is enhanced for OPL/MSX Audio by Solid. Works fine on SX2/SM-X!
- PSG2: Dot Attack (in PSG B/C mode) showcases the second ('dual') PSG.
- OPL3: The 8bits4ever SX2 manuals contains
-
Q: How good is the MSX-AUDIO support of SX2 OPL3?
A: MEGAREP andlogin.com
both detect 'Y8950' MSX-AUDIO after switching on OPL3 (Scroll Lock). Zanac Ex enhanced for MSX-AUDIO works fine. However, Dawn of Time hangs. It probably detects MSX-AUDIO, assumes ADPCM is present (which is not supported) and gets into trouble. -
Q: What's this "KdL firmware" mentioned in a few documents on Google Drive?
A: the internal software (burned to FPGA) that mimics the hardware of an MSX2+ (or Turbo-R) device. There are variants for all MSX++ devices. It can be tailored for PS/2 host keyboard (BR, ES, FR, IT, US, JP) and EPBIOS type (single or dual). SM-X and SX-2 support more features as they are based on the more powerful Cyclone IV-E series FPGA. The others run on a Cyclone I series FPGA. You can build the firmware yourself, and upload it via a μSD card. But that voids all warranty and might brick your device, so be sure you know what you're doing! -
Q: What does EPBIOS mean?
A: An abbreviation for "EPCS BIOS". With EPCS meaning "Erasable Programmable Configurable, Serial" or "Enhanced Programmable Configuration, SPI flash"?
It's all MSX BIOS ROMs burned into a (flashable) EPROM (e.g. EPCS16) that is part of (or connected to?) the Altera Cyclone FPGA chip. The OCM-PLD code mentions EPCS1, EPCS4, EPCS16, EPCS64 & EPCS128, the number referring to the ROM size in Mbit, i.e., 128KiB through 16MiB. (note: EPCS1 with 128KiB is too small to contain OCM-PLD; requires minimum 512KiB) SDBIOS Pack toolREADSID.COM
will tell you which is inside your device. -
Q: How can OCM-PLD firmware + EPBIOS fit in 512KiB? The EPBIOS itself alone is 512KiB!
A: SX1 and comparable devices are fitted with EPCS4. That has 512KiB available. For those devices, the firmware is compressed with multiple techniques to about 200KiB. The 512KiB EPBIOS uses a reduced mapping (no compression!) to 304KiB. The IPL-ROMv3, which takes care of bootstrapping/starting up the device, uses 3KiB. The.pld
files targeted at EPCS4 are all padded to 512KiB.
For EPCS16 they are padded to the available 2MiB. Those contain two full EPBIOSes of 512KiB each, which leaves 1MiB for firmware + IPL-ROM. -
Q: Two EPBIOSes?
A: MSX++'s with 2MiB (or more) EPCS FlashROM have enough room to hold two full-sized 512KiB BIOS sets. This applies to SM-X, SX-2 and SX-E. Dipswitch 7 toggles between both EPBIOSes. Switching via software, key combo or reset button click pattern is not supported. EPBIOS2 provides Nextor instead of Mega-SD, and is otherwise the same as EPBIOS1. -
Q: Can I flash a new EPBIOS to my device?
A: Yes. This does require a full firmware flash - toolsPLDFLASH.COM
&SMXFLASH.COM
(included in the SD-BIOS Pack) only support updating the entire EPCS (512KiB or 2MiB). For that purpose, you'd need to build your own firmware, with a custom EPBIOS. Note that for devices based on Cyclone IV-E (SM-X, SX2, SX-E, with EPCS16) the two EPBIOS files are structured as follows:- firmware
- about 320KiB unused space (for OCM-PLD 3.9.1)
- EPBIOS 1 - with all bits reversed! (bit 7 becomes bit 0, etc.)
- EPBIOS 2 - same
- .. so in principe, you could create a new EPBIOS, reverse its bits, replace that contents into an existing
.pld
firmware file from the OCM-PLD Pack, and flash that. Use extreme caution if you do so, and do it at your own risk! You'll need special equipment to unbrick your device if anything goes wrong.
-
Q: How does OCM-PLD boot?
A: FPGAs like the Altera Cyclone are SRAM-based devices. They do not retain any configuration when unpowered.- Upon startup, the FPGA loads all configuration from FlashROM, e.g., EPCS4. This is called Active Serial (AS) configuration.
- The firmware is preloaded into the FPGA. It configures all the circuits: counters, SDRAM controller, I/O management, CPU, VDP, etc.
- At the end of the configuration the FPGA operates as an MSX2+.
- The “IPL-ROM loader” circuit starts: data from the IPL-ROMv3 is transferred to MSX SLOT3-3 at address #0000.
- This IPL-ROMv3 loads an SDBIOS (from SD card) or, if that fails, an EPBIOS (from EPCS FlashROM) into SDRAM memory.
- The RST 00 command is executed.
This resets the Z80 program counter to the MSX BIOS initialization address #0000.
(The IPL-ROM in slot 3-3 is swapped with Kun/XBASIC by the firmware at that same moment.)
-
Q: How to enable Wi-Fi?
A: The 8bits4ever site just says "Internal ESP-01 Wi-Fi module (Requires SD-BIOS)", which wasn't much help to me. Read on for generic SD-BIOS info, or for Wi-Fi networking directly go to setup ESP8266 Wi-Fi. -
Q: What's this SD-BIOS?
A: An alternative BIOS ROM set for your MSX++. It is 512KiB large. As the name implies, you load it onto a μSD-card. And you can customize it! See the howto for more info. -
Q: But my MSX++ already boots without a BIOS on μSD-card. Why would I need or want an SD-BIOS?
A: SD-BIOS has a few features you don't get with the built-in EP-BIOS:- Nextor DOS
- Choose the boot logo
- Choose character map: Yen, Backslash or Western
- Internet via ESP8266 Wi-Fi
- Saving RTC CMOS data
- (experimental) Turbo-R (or any MSX that fits into the slotmap)
-
Q: Turbo-R?
A: Yes! Although experimental, so YMMV, but it boots & runs just fine. The firmware supports R800 and PCM out, but not MSX-MIDI, R800 LED nor mic.
Testing results & additional details:- Booting to BASIC reports "MSX BASIC version 4.1"!
-
ECHO %_MSXVER%
says "Turbo-R"! -
HRA's CHGCPU tool supports the commands for R800 ROM & DRAM modes
(
/1
and/2
, even prints "Changed to R800 RxM mode") – and correctly refuses option/3
stating the device is not FS A1-FX/(W)SX-compatible. - however,
CPUSPEED.COM
keeps printing "T80 @ .." so it's unclear whetherCHGCPU /1
actually has any effect. - the same for the DOS2 built-in
CPU
command: this keeps printing "CPU mode is Z80" even after runningCPU 1
orCPU 2
. - The MSX++ LEDs don't indicate the R800 turbo mode.
- The BASIC MIDI drum command _MDR does not seem to be working (although the BIOS does contain the code for it)
-
_CHGCPU from DM-System2 BASIC
which can be downloaded
does not work;
installing works fine on MSX2+ (but has no function, as
_CHGCPU
only works for R800 - not Pana Turbo mode likeCHGCPU.COM
) but halts while installing on Turbo-R SD-BIOS. (It does work on openMSX Turbo-R.) - Turbo-R timer at I/O ports 0xE6 & 0xE7 is implemented
- Turbo-R Pause at I/O port 0xA7 is implemented
- Turbo-R PCM at I/O ports 0xA4 & 0xA5 is implemented
- MSX-MIDI at I/O ports 0xE8-0xEF is partially implemented -- 0xE9 is handled as
midi_dout_s
. This is connected to joystick port 2. - Seed of Dragon seems to hang (black screen) after the video/RGB selection
- Illusion City: starts, but as I can't read Japanese I'm unable to navigate the menus until the point where the game (or even a demo) actually starts ;)
- Fray: demo runs, but PCM voice output appears too slow (like a walkman with almost-empty batteries, if you're old enough to remember that). Pressing F12 twice for 8.06MHz turbo mode improves this a bit. Apparently this is still slower than the R800 native clock at 7.16MHz. The game itself runs fine!
-
Q: Which MSX standards are supported by the OCM-PLD/MSX++ firmware?
A: All! MSX 1, 2, 2+ and Turbo-R (experimental) all run when loaded as SD-BIOS. Usemake-sdbios.sh
(Linux/macOS) option 7 to create one for your own MainROM & SubROM. Even C-BIOS is supported. There are a few limitations:- MegaSDHC does not support MSX1; Nextor does.
- SD-BIOS has a fixed slot layout; the romset you use must support that
- C-BIOS must be booted in a special way because of this - read on
-
Q: How to boot C-BIOS?
A: (Beware: this process is a bit cumbersome. Nice to see that it's possible - but it's not very practical.)
Note that C-BIOS is an Open Source implementation of the MSX BIOSes. In OpenMSX, it only supports ROM-based software - which translates to real cartridges inserted onto your MSX++. C-BIOS still is in need of developers to support BASIC and Disk. (C-BIOS 0.29a, 2018, does contain a basic & disk ROM. Not sure what the status of that is...)
The following requires firmware 3.9.1.
Steps:- Use
make-sdbios.sh
(Linux/macOS) option 8 to create an OCM-BIOS.DAT file for C-BIOS, with MSX-MUSIC and MegaSDHC or Nextor. Wi-Fi, the C-BIOS logo and Kanji ROM are not supported due to slot mapping limitations.
- Put this SD-BIOS on the card, together with some utils (at least
SETSMART.COM
).
- DO NOT insert the μSD card
- insert a ROM cartridge
- set dip switches 4-5-6 to ON to disable the external slots
- boot your MSX++
- when the BASIC prompt appears, insert the card
- Type
_SYSTEM
, thenSETSMART -F8F90DFD
to start C-BIOS, which will subsequently start your cartridge.
Note: - SMART command
F9
signals to boot with slot 0 unexpanded, which is what C-BIOS requires.0D
enables both external cartridge slots, overriding the dip switches. - switched io ports documentation states about command
F9
: "internal OPLL disabled" (refers to FM-PAC) but that should not be the case. Instead, Wi-Fi & Kanji ROMs are inaccessible, thus disabled. - Starting from OCM-PLD v3.9.2, booting with right-ALT held replaces this
F9
command. The above process then becomes easier; the μSD card can already be inserted before booting._SYSTEM
/SETSMART
is then not necessary. However, directly after boot you'll have to press Shift-F12/Shift-ScrollLock to enable the external slot(s). - Doing the above without a ROM cartridge ends with a C-BIOS 'hang' mentioning "Init ROM in slot: 3.2". C-BIOS might think the MegaSDHC ESE-RAM at slot 3-2 is a ROM cartridge?
- Use
-
Q: What tools are available?
A: that deserves its own section -
Q: What contents is available at KdL's site?
A: excluding some specials, that is:- MSX-DOS v2.4X (private link)
- OCM-PLD Pack - Firmware, source code, docs and tools for 1chipMSX/Zemmix Neo/SX-1 and SM-X/SX-2
- also contains all older versions
- unless you want to develop/flash your own OCM-PLD, this package contains little that is not already in the SDBIOS Pack except some docs:
- dip-switch user manual (for 1st & 2nd gen. devices separately)
- hardware fixes for various devices
- joystick to midi cable
- startup processing explanation, including how the SD-BIOS boots
- switched I/O-ports explanation
- OCM-EXTRA Pack - "Utilities to make the most of OCM-PLD" - mostly just a subset of SDBIOS pack,
adding (in
samples\scripts
) example starter scripts for a few games (using toolsEP.COM
,MGLOAD.COM
,MGLOCM.COM
andSRI.COM
(SofaRunIt)) and insamples
a few BASIC (ASCII) examples how to interface with the OCM-PLD firmware. Plus assembly sources for the utils that interface with the OCM-PLD firmware. - OCM-SDBIOS Pack (private link) - many precreated BIOSes, plus scripting to create your own
- file location & name pattern:
sdbios-{k|n}3{3|4|8}[-wifi]/{zemmix-neo|...}/k38zneok.{wst|yen|bsl}
- .. which denotes:
sdbios-<disk: Nextor or MegaSDHC><PLD-version><wifi>/<logo>|<generation>/<disk><PLDv><logo>.<charset>
(KUN Basic is always the same) - all of these files are 512KiB in size
- .. which denotes:
- file location & name pattern:
- ESP8266 Wi-Fi Support Pack - Wi-Fi custom firmware by ducasp - useful only for developers or if your MSX++ device does not come with ESP8266 built-in
- Monitor ratiofix
- Software tools to build & flash your own firmware
-
Q: Which cartridge slot is 1/A, and which is 2/B?
A: top = 1/A, back/side = 2/B -
Q: How to use MIDI out?
A: see howto -
Q: Is there a software RESET command?
A: Yes, just enterRESET
in a command prompt or .BAT file. It's built intoCOMMAND2.COM
v2.40. More info:HELP RESET
.
You can also useSETSMART
orGETRESET
tools for MSX++-specific reset variants; see question above & tools list. -
Q: Does the firmware have an officially MSX-licensed logo?
A: Yes. From KdL's site: "The MSX++ logo was officially granted to the OCM-PLD firmware by 西 和彦 [Mr. Kazuhiko Nishi] on 2022/Jul/21st. Starting with v3.9.1. Unofficial MSX3 and MSX3+ logos have been archived for disambiguation and out of respect for Mr. Nishi's MSX3 project. MSX++ compatibles [must] support switched I/O port extension ID 0xD4 (212)." -
Q: Can I insert my own logo?
A: That's not easy! I was hoping to script some 'png2logo-rom' tool. But looking atmake/roms/src/official_msx++_logo_v1.3_20220827/
inside the SD-BIOS Pack, I noticedknmsxppl.asm
. It compiles to 1635 Bytesknmsxppl.bin
which is injected at address range 399d-3fff intomake/roms/knmsxppl.rom
. Comparing that with otherkn*.rom
files (there are 12) reveals that indeed only these 1635 Bytes differ. Those 1635 Bytes contain a program that generates the logo. You might be able to tweakknmsxppl.asm
for your own logo; it's a generic 'plotter' that draws horizontal strokes. It will take some work to compile it, inject it into akn*.rom
and bundle anOCM-BIOS.DAT
. Note that the code for the other 11 is not provided. -
Q: What is the function of the yellow jumper on the bottom of the SX1Mini+?
A: To disable the Wi-Fi module -
Q: What is the VGA/RGB DB15 connector pinout?
A: for SX1-mini+ rev 6.5 - others may differ:
1=R
2=G
3=B (Composite output prior to rev6.1+?)
9=5v VCC (for blanking)
13=Hsync (Csync in RGB 15kHz mode)
14=Vsync (MONO audio in RGB 15kHz mode)
5-6-7-8-10=GND
4-11-12-15=not connected
(source: 8bits4ever)
For Composite & RGB video, a CRT monitor is recommended (but it actually looks okay on an LCD). -
Q: How to use the VGA connector for audio?
A: set video output to RGB 15kHz, either by flipping dip switches 2&3 to OFF / ON before turning on the device, or by pressing Print Screen until the RGB mode is active.
(SX1mini+.pdf manual
, status LEDs 6/7 OFF/ON: "15khz RGB+Audio through VGA connector" and keyboard: "[(SHIFT+)PRINTSCREEN] Changes video output CVBS/S-Video, SCART, VGA 31KHz, VGA+ 31KHz")
Mono audio will then be available on pin 14.
Note: you need a good quality cable, or the audio might sound bad.
(source: 8bits4ever)
BTW: I was not able to confirm this. I hear nothing at all... -
Q: What cable to use for VGA-to-SCART-plus-mono-audio?
A: 8bits4ever recommends RetroCables' "Cable RGB-SCART Zemmix Neo" which comes with a white RCA (cinch) mono audio connector. It must be externally powered; can be either a 9V battery or (5V) USB. See also this discussion on MRC. The audio doesn't work for me - but that might be specific to my SX1 rev6.5? Video looks slightly better, even on my LCD - with VGA, some vertical lines are wider than others. That problem is not there on the same monitor with this SCART cable. A CRT monitor is recommended for the best results. -
Q: How are the 3.5mm TRRS audio jack wires connected?
A: depending on audio mode:- mono (default;
SETSMART -3D
orSETAUDIO.COM /m
): both left & right output internal & cartridge slot 1+2 sounds - pseudo-stereo (
SETSMART -3E
orSETAUDIO /s
):- white/left - cartridge slot 1+2 sounds, red/right - internal sounds
- cassette ('CMT') enabled (SCROLL LOCK key or
SETSMART -28
command; not on SM-X/SX-2 or Turbo-R):- white/left: music; red/right: tape in & out
- mono (default;
-
Q: What does CMT mean?
A: At first I thought of Cassette Motor Toggle (real MSXes have a relay to start/stop the tape motor by 'remote control') but that doesn't make sense, as there is no DIN8 plug on an MSX++, or any other way to send that signal. I guess it just means Cassette Magnetic Tape, an abbreviation I found in a few places. It doesn't seem to be a very common term, though. Anyway, it just means tape 🙂. -
Q: Wait, did you say pseudo-stereo?
A: Yes, pseudo-stereo. Enable it viaSETSMART -3E
orSETAUDIO /s
. (The first time I enabled this, I heard a buzz in the left channel, and no cartridge sounds. Luckily, hasn't happened since.) All internal (PSG, SCC, FM-PAC) sounds go to the right channel, cartridge-generated sounds (e.g. Music Module, MoonSound) go to the left. I tested it with a Toshiba HX-MU900 MSX-AUDIO cartridge and the demo Dawn of Time. Not just because that's a great demo, but also because it's kind enough to tell me both MSX-MUSIC & MSX-AUDIO are detected, and use both! And indeed, on the left I hear (cartridge slot 1+2) MSX-AUDIO sounds, and on the right the internal sounds, i.e., FM-PAC/MSX-MUSIC.
A thing to note is that the volume controls only affect the internal sounds! The cartridge sounds will always be at their loudest. If you want to hear the internal sounds louder, you'll need an external amplifier with a balance function. -
Q: How does the tape interface work?
A: For the SX1, 8bits4ever advertises: '3.5mm jack stereo audio output. Switchable tape input.' Strange as it may sound in hindsight, I assumed that meant: "no tape output supported." But,CSAVE
orSAVE("CAS:...")
actually just works! (As long you don't use a Turbo-R SD-BIOS. The MSX Turbo-R standard removed the cassette port. Yes, I made this mistake 🙂.)
All the good old beeping sounds come through the red/right channel - if and only if you have tape mode enabled, e.g. by pressing Scroll Lock. Otherwise, no audio is produced. To my surprise, input is on the same channel. It might be logical to have in & out on separate (mono) lines. Like this DIN8-to-datasette cable. But then again - this way, you can split the audio cable: left goes to speaker, and right to tape in&out. Just be sure to NOT combine a split audio cable and tape mode with pseudo-stereo; then you'll only hear audio from physical cartridges.
The SX|2 has a separate audio connector for tape, with white/left carrying the signal into SX2 - and red/right the signal towards the tape recorder
As for tape input, the 3 ways to read a program from tape on an MSX are:BLOAD"CAS:",r # binary CLOAD # BASIC RUN"CAS:" # ASCII BASIC
MRC says: "when reading cassette, the baud rate is automatically determined." Well, I could not get a 2400baud signal recognized. 1200baud worked fine. To get really old school, use a real data recorder. I took the easy route: connect line out from a laptop to MSX++, and play an audio recording (optionally using
cas2wav
). -
Q: How to halt a program?
A: Using 'host' keyboard key markings, that is:
- BASIC: lCtrl-End
- MSX-DOS: lCtrl-C
Note that the Pause/Break key invokes the Pause/blackout function. You cannot use it to stop a BASIC program! -
Q: What is 'red mode'/LED 0?
A: Seems to refer to LED 9 (rightmost on my SX1). Actually, all LEDs are blue. No red LEDs - except on the ESP8266 Wi-Fi module. I'm assuming one of the other MSX++ devices has red LEDs?
The SX2 only has one addressable LED, called "main LED". There's also a power LED which cannot be programmed. Both are blue. -
Q: I like to work in the dark. How to disable all device LEDs?
A:SETSMART -22
("Set Lights Mode ON + Red Led OFF") will turn off all 9 blue LEDs, but - the Wi-Fi light stays on...
I'm assuming "Lights Mode" means that LEDs can be controlled by the user - so "Lights Mode ON" does not imply they are lit up ;)
On disk access, LED 1 will still blink.SETSMART -21
(default) shows LEDs as documented.
SETSMART -23
lights just LED 9 (rightmost). Interestingly, that LED goes off (and all others stay off!) for a second when modifying volumes (F9-F11, PgUp/Dn)!
In BASIC the LEDs can be controlled as follows:OUT &H40,&HD4 REM enable SMART switched I/O device PRINT(INP(&H40)) REM expect 43 (&H2B; inverse of &HD4) to verify that SMART device is enabled OUT &H41,&H22 REM SETSMART command OUT &H44,255 REM LEDs 1-8 off; "red LED 0" (LED 9) remains as-is OUT &H44,126 REM LEDs 1&8 on; each bit that is 0 will switch a LED on, and vice versa (inverse logic) PRINT(BIN$(INP(&H48) AND &H18)) REM bit 3: lights mode, bit 4: 'red mode'
See also
samples\lights.asc
in the OCM-Extra Pack -
Q: Can I enable International, Russian or other MSX keyboard (key matrix) layouts?
A: Alas, no. Read on for some background on that. -
Q: What do the following SD-BIOS variants codes mean: k33, k34, k38-wifi, n34, n38-wifi?
A: SD-BIOS that is compatible with KdL firmware version 3.3, 3.4+, 3.8+, with either [n]extor or [k]dl's megasdhc. wifi speaks for itself, right? 🙂 -
Q: What happens when running NYYRIKKI's 512x512 demo?
A: This demo is described at MRC. Shows all 128KiB VRAM in SCREEN7 (normally 512x212), interlaced (512x424) and using a vsync trick to (on 'forgiving' CRTs!) go to 512x512.
Part of the trick is switching to 50Hz, which results in 625 maximum lines on a CRT, versus 525 for NTSC/60Hz. Not all of these are usable from an MSX due to vertical blanking, making 60Hz not enough to show 512 lines.
Second part of the trick is to extend vertical blanking as far as possible, which makes the bottom part of the image roll over to the top!
On my SX1 with CRT via VGA, I think I see the whole picture, with a small border on top and (about twice as large) at the bottom. Interlacing is visible (at 25fps) but not uncomfortable.
The picture used is a bit awkward to assess whether all lines are shown - and where on the screen. However, it looks like the bottom line of the picture (just 1 line) seems to be shown at the top. A bit peculiar is the very last line on screen: it blacks out (tears) about halfway. OpenMSX shows a lot less; top part is not shown.
On the whole, the SX1 does a very good job of showing all these pixels! -
Q: What happens when switching to 50Hz?
A: In BASIC,VDP(10)=VDP(10)XOR2
will switch between modes.
COMMAND 2.4 acceptsHERTZ 50
/HERTZ 60
.
In DOS on an MSX++,SETSMART -D2
also works, but the above on all MSX2 (and up) models.
With regular VGA, I see a short blackout, after which my LCD shows a wider image.
Diagnostics say: 720x576p 31.4kHz 50Hz vs. 640x480 31.4kHz 60Hz -
Q: How to switch the CPU to turbo mode?
A: Use F12 orCPUSPEED.COM
(SDBIOS tool) to switch between CPU speed settings. Also, HRA's CHGCPU tool supports switching between Z80 standard and turbo modes (/0
and/3
). LEDs 8&9 respond to this tool as well. -
Q: How fast is the CPU in turbo mode?
A:BENCHMRK\POWER.COM
measures the CPU against the standard 3.57MHz Z80. Outcomes: 88% (!) at 3.58MHz, 138% at 5.37MHz (had expected 150%), 235% at 8.06MHz (that's more than expected). See FRS's reverse engineering tools to get this tool. -
Q: What does FPGA and PLD mean?
A:- Field Programmable Gate Array - basically a chip that can be reprogrammed
- Programmable Logic Device - a more advanced FPGA
-
Q: Does SX1 (or any other MSX++ device) have persistent RTC (CMOS) and/or SRAM (either FM-PAC-like or Panasonic A1-like)?
A: No, according to this MRC discussion (page 17 and onwards). For the missing CMOS, there is an alternative. -
Q: Given the former question, why does the SX1 say it has 32MiB SRAM on board?
A: It does, but SRAM does not retain its data after power is off. I never realized, but also the FM-PAC contains a battery. When it is empty, the SRAM data is lost. I always thought it meant Save RAM. Never too old to learn something! -
Q: How to boot with current date & time - given that the MSX++ devices have no Real Time Clock (RTC)?
A: Either setup ESP8266 Wi-Fi - which can retrieve date&time via SNTP at boot or usingSNTP.COM
, or buy a Toshiba FlashAir SD card which is an SD card with Wi-Fi.
Although AFAIK this only applies to the original OneChipMSX, and the Zemmix Neo. All other MSX++-compatible devices have a micro-SD card slot - and FlashAir is only available as full size SD card. See OCM-PLD msxtools for some information. -
Q: Can the FM-PAC ROM program be invoked with
_FMPAC
?
A: No. That is specific to the PanaSoft SW-M004 FMPAC. If you include your ROM dump in a custom SD-BIOS, it would.
Does work on openMSXBoosted_MSX2_EN
, for example. -
Q: Is it possible to dump the SDBIOS or EPBIOS?
A: Yes. UseSAVEROM.COM <file> /S
- part of the SD-BIOS utils.
You can dump all roms separately using the MSX++ slot layout. (MegaSDHC/Nextor in slot 3-2 using ASCII 8K mapper, blocks 0-F. The others can be dumped at their respective slot & page in Normal mode).
Far easier is to dump slot 3-2 ASCII 8K, blocks 0-3F: 512KiB. Why this works is explained at MSX++ SDRAM layout. I was able to match most EPBIOS ROMs, and the whole SDBIOS, in my SX1mini+ and SX2 by SHA1 sum. Not MegaSDHC - all four 16k blocks except the third appear to be modified at runtime. EPBIOS JIS2 (blocks 24-31) mismatched on SX1 (every dump is different!) but does match on SX2.
Both for EPBIOS & SDBIOS and on both devices, I didn't manage to dump the (I/O-accessed) JIS1 & 2 ROMs usingKANJIROM.BAS
, part of FRS's reverse engineering tools; it fails with 'Open err:' for all four combinations. -
Q: How to safely 'inspect' cartridge ROM contents?
A: Follow these steps:- set dip switch 4 to ON (disables physical cartridge slot 1)
- insert cartridge in slot 1/A (top)
- boot to MSX-DOS/Nextor; cartridge will be ignored
- run
SETSMART -0D
(enables physical cartridge slot 1) - run
SAVEROM.COM <file>
and select slot 1
-
Q: Does MSX++ support PCM output?
A: Yes! That is, my SX1 implements the Turbo-R PCM.
See OCM-PLD pack msxtools - just runAROID.BAT
.
I kinda was expecting it to support Covox/SIMPL since we don't have a physical printer port. Alas,MPCM <file> /P
stays silent.
Then again, I was pleasantly surprised that this is implemented; it's not documented. Volume can be set using master volume (PgUp/Dn). -
Q: Can you boot natively to MSX-DOS1?
A: Yes. Start by formatting a partition as FAT12, since MSX-DOS1 only supports FAT12.
That can be done in Nextor Disk BASIC (not supported in EPBIOS/MegaSD) using_FDISK
and then creating a partition of max. 32MiB; FAT12 is then automatically selected.
(not sure how to do this on Windows; Linux cmdline example:sudo mkfs.fat -F 12 -n somelabel /dev/mmcblk0p1
)
Make sure to set the 'active' (boot) flag for this partition.
Then optionally copy an SD-BIOSOCM-BIOS.DAT
file as the first file. I had to apply, on Windows, the same fiddling asmake-sdb.cmd
due to hidden directorySystem Volume Information
:set DEST=D: set SDBIOSTEMP="%DEST%\System Volume Information" set SDBIOSFN=OCM-BIOS.DAT rd /S /Q %SDBIOSTEMP% >nul 2>nul&rem.>%SDBIOSTEMP% echo Starting EPBIOS is safer if you don't delete me^^!>>%SDBIOSTEMP% if exist %SDBIOSFN% copy /Y %SDBIOSFN% %SDBIOSTEMP% if exist %SDBIOSTEMP% ren %SDBIOSTEMP% %SDBIOSFN%
Copy
COMMAND.COM
andMSXDOS.SYS
to the new partition.
Insert the μSD card and boot your MSX++ device. The MSX-DOS1 prompt will appear.
This works on both MegaSDHC and Nextor DOS.
Note:- What did not work for me is going, from the DOS prompt, to
BASIC
and then back to MSX-DOS1 using_SYSTEM
; it just brought me back to BASIC. - What also did not work, was adding
NEXTOR.SYS
andCOMMAND2.COM
and then trying to boot to DOS1 by holding "1" while booting. That ends in BASIC (and, again,_SYSTEM
has no effect). - Alternative 1: Nextor
EMUFILE
(or SofaRunIt) using a.DSK
image withCOMMAND.COM
andMSXDOS.SYS
- runs MSX-DOS1 but with some intermediate steps - Alternative 2: Nextor
MAPDRV
combined withMAPPER.COM
(orMAP.COM
) - runs DOS2.x but in a mode more compatible with programs expecting MSX-DOS 1
- What did not work for me is going, from the DOS prompt, to
-
Q: How to access other partitions?
A: That depends on the Disk ROM:- For Nextor, that is documented in their getting started guide.
What worked for me:MAPDRV B: 3 1 0
to map partition 3 (don't for get the ':'!).
Others recommend "3-2" (the slot where the Nextor ROM is mapped) instead of "0" - with "0": "the device is assumed to be controlled by the kernel on the same slot of the currently mapped device".
- For MegaSDHC: I've developed
MSDPAR
which is an adaptation ofPARSET
&PARLIST
by Konamiman. Only works for FAT12 partitions. MegaSDHC is limited to only one FAT16 (max 4GiB) which must be the first partition.
- For Nextor, that is documented in their getting started guide.
-
Q: Is there a way to show all current settings?
A: Run the BASIC program in the OCM-EXTRA Packsamples\ocmstat.asc
. It shows many settings of your MSX++.
... and will run through all SMART commands from 00 through FF. That has some interesting effects!
vhzstat.asc
andfirminfo.asc
in the same location show some other settings. -
Q: How much RAM is available?
A: Default, 2MiB in slot 3-0.
Set dipswitch 7 to ON before booting to get 4MiB RAM - the maximum that fits in an MSX memory mapper; 256 pages of 16KiB. It can also be enabled after a soft reset.
Note: Turbo-R with 4MiB only works with Nextor; not MegaSDHC. This might be the reason that 4MiB is not the default.- Since OCM-PLD 3.9.1, it is possible to enable a 4MiB "Extra-Mapper" which will appear in slot 0-1.
This requires minimum 16MiB SDRAM.
All SM-X MINI (by design) and the first batch (by mistake) of SMX-HB devices have just 8MiB.
All other currently existing devices have 32MiB.
Until now, no devices have been produced with 16MiB.
The SDRAM size can be read from Dynamic Port 4B bit3+4 (when
INP(&H44)
returns 0) - 0=8MiB, 1=16MiB, 2=32MiB.
Not all of that SDRAM is accessible to your MSX; see MSX++ SD-RAM layout for more information.
- Note: When Extra-Mapper 4096kB is enabled, some software crashes, e.g., Micro Music v3.1.
- Use the following commands to select a different RAM size available inside your MSX:
-
SETSMART -56FC
orGETRESET /2
: 2048KiB -
SETSMART -56FE
orGETRESET /4
: 4096KiB -
SETSMART -57FC
orGETRESET /6
: 2048+4096KiB = 6MiB (OCM-PLD 3.9.1+ and SDRAM>=16MiB) -
SETSMART -57FE
orGETRESET /8
: 4096+4096KiB = 8MiB (OCM-PLD 3.9.1+ and SDRAM>=16MiB)
-
- Be aware that you need special software, like
MEMMAN
, to use all that memory, divided over two mappers.
- Since OCM-PLD 3.9.1, it is possible to enable a 4MiB "Extra-Mapper" which will appear in slot 0-1.
This requires minimum 16MiB SDRAM.
All SM-X MINI (by design) and the first batch (by mistake) of SMX-HB devices have just 8MiB.
All other currently existing devices have 32MiB.
Until now, no devices have been produced with 16MiB.
The SDRAM size can be read from Dynamic Port 4B bit3+4 (when
-
Q: Any reason the VRAM isn't extended to 192KiB?
A: First, a little explanation.
The MSX2/2+ VDPs (V9938 & V9958) do support an additional 64KiB on top of the standard 128KiB. But only for a few features. For example, SCREEN 7 & 8 cannot show the data in the extra pages.
There is some software that uses it, as discussed on MRC: 1 and 2. So there is not much use to map an additional 64KiB.
In stead, the developers of MSX++ mapped a whopping 1MiB of VRAM! Using switch I/O port 0x4D, both halves of the 128KiB VRAM can be mapped to one of the 16 pages of 64KiB each.
Run the BASIC program in the OCM-EXTRA Packsamples\vram1024\vramtest.asc
for a demo.
lumshock.asc
in the same location shows how to use this for smooth 16-frame full page animation in SCREEN 12.
Note that any software using this would only run correctly on an MSX++; not even the openMSX emulator supports this. -
Q: What do the
kanjiutils
in OCM-PLD msxtools do?
A: these are two BASIC tools:-
jistable.asc
shows the full content of the JIS1 & JIS2 roms; many pages of symbols & characters in various alphabets (Roman, Cyrillic, Greek, Japanese, etc.)
-
kmode2.asc
enables hires Kanji DOS using interlaced screen 1. Note: the directory separator becomes ¥ in this mode.
-
-
Q: Where to find more detailed information?
A: Check OCM-PLD Packhistory.txt
or one of the many other textfiles in the Packs.