Nextor is a disk operating system for MSX computers. It is built on top of the source code of MSX-DOS 2.31, released in 1991.
If you are already familiar with Nextor 2 you may want to take a look at what's new in Nextor 3. If you are new to Nextor the getting started guide will be useful for you.
The source code of Nextor is published with permission from the MSX Licensing Corporation under certain terms. Please take a moment to read the license terms for details.
Please visit either the categorized releases page (recommended) or the standard releases section for binaries.
As of Nextor 3.0 this repository no longer contains Nextor drivers for specific hardware. Drivers that were part of the repository in Nextor 2 now live in their own separate repositories; other drivers are distributed by their developers in whatever way they choose. See the known drivers document for the list of available drivers and where to get each of them.
Note that additionally to the master branch there are v2.0 and v2.1 branches that hold the code and documentation for the legacy versions of Nextor (and the Nextor 2 version of the hardware-specific drivers).
-
source: The source code of Nextor itself.
-
kernel: The kernel ROM, includes the FDISK tool.
-
nextor_sys: The
NEXTOR.SYSfile. -
tools: The command line tools: the ones created for Nextor and the classic MSX-DOS tools (CHKDSK, UNDEL, DISKCOPY, FIXDISK, KMODE, XCOPY, XDIR), rewritten from the originals. The tools written in C live in tools/C.
-
drivers: The standalone ROM driver and an example RAM driver.
-
commandcom:
COMMAND3.COM, the command interpreter.
-
-
sdk: Z80 assembler and C include files, helper routines and driver templates, intended to be used when developing Nextor drivers and Nextor-aware tools.
-
buildtools: The source code of
mknexrom, a tool that generates a full Nextor ROM from the kernel base and a driver. -
docs: Documentation for both users and developers.
-
docker: The infrastructure to create the Nextor development Docker image.
-
categorized releases: The infrastructure to create the categorized releases page.
For instructions on how to build Nextor using the Nextor development Docker image, see README.md in the Docker directory.
Nextor requires Linux to be built. It should work on macOS too, but that hasn't been tested. If you are on Windows 10 or 11 you can use WSL.
To build Nextor you'll need:
make, GNU make version 4.3 or newer (the kernel makefile uses grouped targets, introduced in that version). On Debian/Ubuntu-ish systems you can justapt-get install make.- The Nestor80 tools. Go to the releases section and download the appropriate variant of the latest version for the assembler (N80), the linker (LK80) and the library manager (LB80).
- SDCC v4.2 or newer, for FDISK and the command line tools written in C. On Debian/Ubuntu-ish systems you can just
apt-get install sdcc. objcopyfrom the binutils package. On Debian/Ubuntu-ish systems you can justapt-get install binutils.mknexromto generate the ROM files with the drivers. You have it in the releases section, but you can also build it from the source in thebuildtools/sourcesdirectory.mformat,mmdandmcopyfrom the mtools package, only if you want to build the tools disk image. On Debian/Ubuntu-ish systems you can justapt-get install mtools.zip, only if you want to build the tools zip archive. On Debian/Ubuntu-ish systems you can justapt-get install zip.
Except for those obtained via apt, you'll need to place these tools at a suitable location to be able to use them, e.g. /usr/bin.
There are a number of makefiles that will take care of building the different components of Nextor. Once the tools are in place, cd to the appropriate directory and run make, adding an explicit target where the table says so - anything with a named target in the "Target" column is built only when that target is requested, it's never included in a plain make:
| What do you want to build? | Makefile directory | Target | Result |
|---|---|---|---|
Kernel base file (the input for mknexrom to produce complete kernel ROMs) |
source/kernel |
none | bin/kernel-base/Nextor-<version>.base.dat |
| Kernel base file, both build variants¹ | source/kernel |
everything |
bin/kernel-base/Nextor-<version>.base[.<variant>].dat, two files |
| Standalone ROMs² (ASCII8 and ASCII16) | source/drivers |
none | bin/drivers/Nextor-<version>.StandaloneASCII8.ROM and ...ASCII16.ROM |
| Standalone ROMs², both build variants¹ | source/drivers |
everything |
bin/drivers/Nextor-<version>.StandaloneASCII{8,16}[.<variant>].ROM, four files |
| Example RAM-loadable driver | source/drivers |
ram-example |
bin/drivers/ram-driver-example.drv |
NEXTOR.SYS, plus its Japanese-messages variant |
source/nextor_sys |
none | bin/tools/NEXTOR.SYS and bin/tools/NEXTOR.SYS.japanese |
COMMAND3.COM, the command interpreter |
source/commandcom |
none | bin/tools/COMMAND3.COM |
| Command line tools written in assembler | source/tools |
none | bin/tools, one .COM file per tool |
| Command line tools written in C | source/tools/C |
none | bin/tools, one .COM file per tool |
| Tools disk image³ | source/tools |
tools-disk |
bin/tools/nextor.dsk |
| Tools zip archive⁴ | source/tools |
tools-zip |
bin/tools/tools.zip |
¹ The two variants are: default, and NO_UNDOC_CPU_INSTRUCTIONS (no undocumented Z80 opcodes, for compatibility with Z180-based MSX machines). See the comments at the beginning of the kernel makefile for the details.
² A standalone ROM is a full usable ROM containing the Nextor kernel and a dummy driver that doesn't handle any hardware. The source/drivers makefile builds the kernel base file too (by recursing into source/kernel), unless the NEXTOR_BASE variable points it to a pre-built one.
³ The disk image is a 720K FAT12 image containing NEXTOR.SYS (plus the Japanese-messages variant, renamed to NEXTORJ.SYS), every .COM file present in bin/tools (which includes COMMAND3.COM and all the command line tools), a README.TXT file, and the COMMAND3.COM help files in a HELP directory. It boots straight to the DOS prompt on a computer with a Nextor kernel ROM. Files not built by this repository can be added through the EXTRA_FILES variable (e.g. use EXTRA_FILES=MSXDOS.SYS,COMMAND.COM for a disk that also boots to the DOS prompt in MSX-DOS 1 mode); relative paths are resolved against the current directory, the one you run make from. This target requires the mtools package, and expects all the files to be already built: use the tools-disk umbrella target (below) to build them and create the image in one go.
⁴ The zip archive contains just the command line tools (no NEXTOR.SYS, no COMMAND3.COM). This target requires the zip tool and, like tools-disk, expects the tools to be already built: the tools-zip umbrella target (below) builds them and creates the archive in one go.
Additionally, an "umbrella" makefile in source invokes the other makefiles in the right order, so the common combinations are a single make command run from the source directory. The same rule applies: plain make builds the first row only, every other combination needs its target spelled out.
| What do you want to build? | Target | Result |
|---|---|---|
Everything with a default target above: kernel base file, standalone ROMs, NEXTOR.SYS, COMMAND3.COM and all the command line tools |
none | bin/kernel-base, bin/drivers, bin/tools |
| The same, but with the kernel base file and the standalone ROMs in both variants¹ | everything |
bin/kernel-base, bin/drivers, bin/tools |
NEXTOR.SYS, COMMAND3.COM and all the command line tools, then the disk image³ |
tools-disk |
bin/tools, including nextor.dsk |
| All the command line tools, then the zip archive⁴ | tools-zip |
bin/tools, including tools.zip |
NEXTOR.SYS, COMMAND3.COM and all the command line tools, then both the disk image³ and the zip archive⁴ |
tools-all |
bin/tools, including nextor.dsk and tools.zip |
Note that the example RAM driver is the one thing no umbrella target builds: it is always an explicit make ram-example in source/drivers.
Every makefile (the umbrella one included) also supports a clean target that removes the intermediate files from the source directories, and the umbrella makefile adds distclean, which additionally deletes the generated bin/kernel-base, bin/drivers and bin/tools directories.