This page is pesimized for any browser and any screen resolution
Welcome, brave visitor. In this page you will find my software productions for MSX
computers (well, not all of them, but the ones that are worth using), useful mainly
for programmers of such obsolete system. And of course, all for free (freeware,
do-whatever-you-want-with-it-ware, etc), since as Linus Torvalds said once:
"Software is like sex: it is much better when it is for free"
So go for it, download everything you want and for any comment, suggestion or complaint
write me to the e-mail address that appears at the beginning of the page.
Index
These are the programs you can find in this page:
NestorBASIC: Essential
BASIC extension which allows things like using all the available mapped memory for
the storage of data or machine code routines, using all the existing disk access
functions, or replaying MoonBlaster music and PSG sound effects from BASIC or Turbo-BASIC.
NestorBASIC Extensions:
External machine code routines that add new capabilities to NestorBASIC.
NestorPreTer: BASIC pre-interpreter.
Now you can write your BASIC program using all the comments and indentations you
want, without typing line numbers, and even using macros. NestorPreTer will convert
your "source" program into an MSX-BASIC executable file without comments, without
spaces, with the line numbers automatically generated and with the macros expanded.
InterNestor Suite: PPP+TCP/IP
stack for MSX2/2+/TR computers with at least 256K mapped RAM and MSX-DOS 2. Includes
a telnet client and a FTP client. Note: InterNestor Suite requires
NestorMan to work.
InterNestor Lite: Another TCP/IP
stack, more "lightweight" than InterNestor Suite; works on MSX2/2+/TR with at least
128K mapped RAM and does not require DOS 2. Two kinds of hardware are supported:
serial port (RS232) with modem, and the Ethernet UNAPI.
ObsoNET: ObsoNET is an Ethernet
card for MSX computers, formerly designed and manufactured by Daniel Berdugo.
NestorMan: Resident dynamic
memory manager for MSX-DOS 2. With NestorMan you can reserve memory blocks with
sizes between 1 byte and 16K; this is much more flexible than the whole segments
allocation method provided by DOS 2. Besides, you can create and manage double-chained
lists.
MegaSCSI: Some utilities
for the users of this amazing SCSI controller.
Besides, the following information is also available:
MSX2 Technical Handbook: Official
technical reference of the MSX2 standard, manually converted to text files by me.
Easymbler: Easy and funny
assembler course written by me. Note: available in spanish only.
InterNestor Suite project:
InterNestor Suite was the final project I developped to obtain my degree in telecommunication
engineering. Here you can download the project report I delivered to teachers and
the presentation I shown the exam day. Note: available in spanish only.
MSX-UNAPI specification:
Standard for defining and implementing new APIs (Application Program Interface) for MSX.
NestorBASIC is a BASIC extension for MSX2/2+/TR computers with at least 128K mapped
RAM. It is Turbo-BASIC compatible (in fact it includes Turbo-BASIC, an loads it
at installation time) and provides the following capabilities:
Access to all the mapped memory available on the computer (all
the free memory when using DOS 2), up to 4 Mb.
Full access to VRAM, including data blocks exchange between RAM
and VRAM.
BASIC programs storage in mapped memory, it is possible to switch
from one to another without losing the existing variables.
Disk files and sectors access, it is possible to directly read/write
to/from mapped memory and VRAM. File searching, directories management.
Graphic compression/decompresion.
MoonBlaster music replay. Samplekit and wavekit load.
PSG sound effects replay.
Machine code routines execution; routines placed in BIOS, in a
mapped memory segment or in BASIC main memory (including system work area) can be
executed directly or using interrupts.
NestorMan functions, InterNestor Suite and InterNestor Lite routines execution.
NestorBASIC consists on a single file which can be installed with a simple BLOAD
instruction. It installs itself on a hidden RAM segment and only uses about 500
bytes of the BASIC main memory. Its functions are invoked using an USR instruction
and an array for the parameters, so they can be used from inside of turbo-blocks.
Turbo-BASIC is included within the NestorBASIC file, both are installed simultaneously.
NestorBASIC downloads:
NBASIC.BIN:NestorBASIC
1.11, with a simple BLOAD"NBASIC.BIN",R you have installed it.
NBVERS-E.TXT: Versions
information file in english.
NBVERS-S.TXT: Versions
information file in spanish.
SAMPLES.LZH: Samples about
file searching and MoonBlaster music replay.
TCPCON.LZH: Sample about
using InterNestor Suite and InterNestor Lite with NestorBASIC.
TCP Console is a program that opens a TCP connection, sends to it everything
typed at the keyboard, and prints on the screen everything received. The "source"
codes in NestorPreTer format and the MSX-BASIC executables
are included (TCPCON-S for InterNestor Suite and TCPCON-L for InterNestor Lite).
NPLAYER.LZH:
NestorPlayer 1.0, MoonBlaster FM and Wave replayer that uses NestorBASIC.
It allows to browse the available disk drives and directories to search for music
files, samplekits and wavekits.
SEE.LZH: PSG sound effects
editor developped by Fuzzy Logic. NestorBASIC can replay these sound effects.
One of the capabilities of NestorBASIC is the possibility of executing machine code
routines previously loaded on any memory segment. Using this mechanism it is possible
to develop extensions for tasks that are impossible to do when using only BASIC
instructions or NestorBASIC functions. In this section you have all the extensions
I have developped for NestorBASIC, all of them include usage manual and an usage
example.
CABROPL4.LZH: Allows direct
control of MoonSound's sound chip OPL4, without having to use the MoonBlaster driver.
NMIF.LZH:NestorMIF
allows the decompression of MIF format graphic files previously loaded on mapped
memory.
NCADS.LZH:NestorCadenas.
This extension is useful for programs that use a lot of text strings. Now you can
store all the strings in a text file, load this file on mapped memory, and by using
NestorCadenas retrieve the strings when you need them. You can retrieve the strings
sequentially (in the same order they are stored in the file) or randomly (identifying
the strings with a name). The advantage is clear: if the strings are stored in mapped
memory, more main memory is available for the BASIC program.
When writing MSX-BASIC programas we encounter three problems. First, the comments
we add to the code use part of the scare memory available for the program. Second,
variable names can have only two characters, which does not help to add readability
to the program. And third, jumps and subroutine calls refer to line number, which
also makes the program to be difficult to trace.
NestorPreTer, which works in MSX2/2+/TR with at least 128K mapped
RAM, helps to solve these problems. It is a BASIC pre-interpreter, that is, a utility
that converts a text file into an MSX-BASIC executable program; this text file may
be generated with a text editor or in the MSX-BASIC environment, saving the program
in ASCII format (SAVE"PROGRAM.BAS",A). The processing performed by NestorPreTer
on the "source" file is as follows:
Remarks and blank spaces stripping. You can add to your "source"
as many comments and indentations as you want, the amount of memory used by your
program will be only the amount needed to store the code.
Line numbers generation. It is not necessary to type line numbers
in the code, since NestorPreTer will generate them automatically. To identify the
lines that are destination for jump instructions, you can use alphanumeric labels.
Macro expansion. You can define macros, that is, text blocks with
an assigned name (similar to DEFINE directive of the C language). This allows the
simulation of long names for variables, for example you can include "@DEFINE FILE_NAME
F$" at the beginning of the text, and then use "INPUT @FILE_NAME" within the code.
InterNestor Suite is a TCP/IP plus PPP stack for MSX2/2+/TR computers with MSX-DOS
2, at least 256K mapped RAM and RS232 interface. It allows internet connection through
a modem and using any ISP access account, or direct connection to other computer
using a null-modem cable. It installs as a TSR, so any application may use its routines
for acessing the internet. InterNestor Suite consists on:
Installer program, it installs the modules that compose the stack.
Four code modules: physical module (RS232), link level module (PPP), network
level module (IP) and transport level module (TCP).
Modem dialer for connections via modem+ISP.
PPP connection and TCP connections control programs.
Four simple applications: a PING client, a resolver (name server access
client, for example to convert site names to IP addresses), a simple telnet client,
and a complete FTP client.
User's and programmer's manual, in english. This manual explains how to
install and use InterNestor Suite, and provides all the necessary information for
developping internet based applications.
Note: InterNestor Suite requires NestorMan
to work.
Downloads for InterNestor Suite:
INS-V10.LZH:InterNestor
Suite 1.0, with all the components mentioned above plus the Erik Maas'
Fossil driver for RS232, needed by the stack to work.
InterNestor Lite is another TCP/IP stack; this one works on MSX2/2+/TR with at least
128K RAM and does not require DOS 2. It supports two kinds of hardware: serial port (RS232) with modem,
and the Ethernet UNAPI.
INL11.LZH: InterNestor Lite 1.1.1.
Includes both the serial and the Ethernet UNAPI version, as well as the Fossil driver
(necessary for the serial version), and the user's and programmer's manual
in spanish and english. It has support for UDP and TCP, as well as for sending and
capturing raw datagrams, and built-in resolver; a simple PING client, a TFTP client/server,
a TCP console -simplified Telnet client- and a Telnet client with partial support
for VT100 escape codes are included (the first three applications include the source
code).
InterNestor Lite is already complete. Future versions will include only bug corrections,
so you can take this version as the base for developping your Internet applications.
NOTE: Starting at version 1.1, explicit support for ObsoNET cards has been removed;
instead, the Ethernet UNAPI is supported now. ObsoNET BIOS is compatible with the Ethernet UNAPI
starting at version 1.1, so with the appropriate BIOS upgrade, ObsoNET users can use
InterNestor Lite for the Ethernet UNAPI. Please download the latest ObsoNET BIOS from the
ObsoNET section. You can also take a look at the
UNAPI specification if you want.
FTP.COM: FTP client for InterNestor
Lite 1.01. This application is similar to the command-line based FTP client
shipped with the Windows and Linux operating systems. It requires DOS 2, and the
commands that operate on multiple files (MGET, MPUT and MDELETE) require also that
NestorMan be installed.
INLIB: C (SDCC) library for InterNestor
Lite. This is a library of functions for accessing InterNestor Lite capabilities
from programs developed in C language. It is intended for use with SDCC, a freeware
cross-compiler available for Windows and Linux platforms. More information about
the SDCC compiler and its usage for developing MSX applications on
Avelino's MSX page.
INL11SRC.LZH: InterNestor Lite source code.
Licensed under GPL.
ObsoNET is an Ethernet card for MSX computers, formerly designed and manufactured
by Daniel Berdugo. In this section you will find only the software that I have developed
for this card.
Important: Please upgrade your ObsoNET card BIOS to version 1.1, which is compatible
with the Ethernet UNAPI, so you can use InterNestor Lite 1.1. The old
InterNestor Lite for ObsoNET (version 1.0x) is now discontinued.
ONETM-S.TXT:ObsoNET
user's and programmer's manual. Spanish version.
ONETM-E.TXT:ObsoNET
user's and programmer's manual. English version.
ONETFRL.COM:ObsoNET
Flash ROM loader 1.0. This application is necessary in order to update
the ObsoNET BIOS and burn custom programs on its ROM.
BIOS.ROM, BIOSDOS2.ROM,
BIOS.DAT: ObsoNET BIOS 1.1. This version is compatible with BIOS 1.0,
but adds compatibility with the Ethernet UNAPI. On the user's manual
the differences between the three files are explained.
BIOS10.ROM:The old BIOS version 1.0,
in case you experience problems with BIOS 1.1 (you should not, of course!)
InterNestor Lite. With BIOS 1.1, you can use
InterNestor Lite for the Ethernet UNAPI with your ObsoNET card.
As a starting point for working with ObsoNET, it is recommended to read sections
1 and 2 of ObsoNET manual, as well as section 2.3 of InterNestor Lite manual.
NestorMan is a dynamic memory manager for MSX2/2+/TR with MSX-DOS 2. It installs
as a TSR, so it may be used by any other application. NestorMan offers the following
capabilities:
Reservation of memory blocks with sizes between 1 byte and 16K. This mechanism
is much more versatile than the one provided by DOS 2, which only allows the allocation
of whole 16K segments. After asking NestorMan for a new block of the desired size,
it returns the number of the segment where the block has been reserved, as well
as its starting address. NestorMan automatically handles the allocation of new segments
when they are needed.
Double-chained lists creation. These lists are data structures in which
each item is stored with a pointer to the previous item and a pointer to the next
item. It is possible to insert items (any data block with a size of up to 16K) and
to extract them to/from any position on the list, as well as to "browse" the items
(to move to the previous or to the next item, or to move to a given item providing
his index number in the list).
Downloads for NestorMan:
NMAN122.LZH:NestorMan
1.22. Includes user's manual in spanish and english.
TEXTOR.LZH:TexTor
1.0. It is a very simple text editor, similar to MS-DOS' EDLIN, that serves
as an example of the use of NestorMan. Source code is included.
MegaSCSI, developped by ESE Artists
Factory, is the best SCSI controller available for MSX. I'm really lucky
of having one and I have developped some applications for being used with it. These
applications are listed below:
WPE.LZH: Two utilities, WP.COM
and WE.COM, for write-protect and write-enable disk partitions created with MegaSCSI.
Source code is included.
BOOT60.LZH: Patch for the
MegaSCSI boot program placed at SRAM. It forces the computer to boot in 60Hz mode,
or in 50Hz mode if the H key is pressed while booting. Includes the source code.
CHGKEY.LZH: Patch for the
MegaSCSI SRAM. Allows the use of the normal keyboard (keys 0-9 and A-F) instead
of the numeric keyboard to emulate disk changes when using floppy emulation. Useful
for Philips 8245 and similar computers users. Includes the source code.
PSETLIST.LZH: Includes
two programs. PARSET is a partition setting program that uses the standard partition
table on the boot sector of the disk instead of the file MEGASCSI.TBL, so it works
with all the disks having this format: ESE-ASPI, IDE, all PC disks... PARLIST lists
all the existing partitions on the disk, showing the length and the starting sector
of each one. Source code is included.
NCDPLAY.LZH:NestorCDPlayer
is a CD Audio player for MegaSCSI. It installs as TSR and you can control the CD
replaying process from within any application, by using CTRL/SHIFT + CODE/GRAPH
key combinations. Source code is included.
NDICREAT.LZH: This utility
does not really require MegaSCSI to work, but without it it is not very useful.
NestorDiskImageCreator creates empty disk images with any size
between 10K and 32500K.
If you want to develop your own applications for MegaSCSI, this document will be
very helpful for you:
MEGUIDE.TXT: Shortened
english translation of the MegaSCSI's programming manual. It is not complete, but
the basic concepts and the most important BIOS functions are explained.
Some years ago Leonardo Padial developped
a Z380 card for MSX. Daniel Zorita and me helped him with the software development,
and here is my contribution to that project:
EPROM30.LZH: Version 3.0
of the EPROM included in the card.
Z380MAN.TXT: LPE-Z380 with
EPROM 3.0 programmer's manual in english.
Z380MAN.LZH: Compressed
version of the file Z380MAN.TXT.
ZUTILS.LZH: Includes F2Z.COM,
to load a file into the LPE-Z380 memory; Z2F.COM, to perform the reverse process;
and ZEXE.COM, to execute a Z380 program.
CALLPCM.LZH: Sample of
BASIC CALL command installable on the LPE-Z380 card. With this program it is possible
to save and replay PCMs directly to/from the LPE-Z380 memory, using the Turbo-R
microphone. It is a very simple program that does not include trigger level specification
nor silence compression.
If you want to develop your own programs for LPE-Z380 and you don't have an assembler
for Z380, the following file may be very helpful for you:
Z380MAC.TXT: Macros for
assembling Z380 instructions using a Z80 assembler, it is only necessary to slightly
vary the original instructions syntax. The macros have been tested with Compass,
they should not cause problems on other assemblers.
Z380MAC.LZH: Compressed
version of the file Z380MAC.TXT.
Here you have some of the smaill utilities that I have developped along these years
of obsolete programming, all of them for MSX2/2+/TR and most of them for MSX-DOS
2. I hope that some of them will be useful for you.
MEM.LZH: Small program that
shows information about the total, allocated and free mapped memory, divided in
slots. Requires MSX-DOS 2 to work.
CHCOPY2.LZH:Chapuza
Copy 2.0. Diskette copy utility that uses all the free RAM and the VRAM
to minimize disk changes. Requires MSX-DOS 2 to work.
BOREHD.LZH:Boot
Register for MSX with Hard Disk. Executing this program from the AUTOEXEC.BAS
of your hard disk you will be able to count how many times you have booted your
computer from a given reference date, as well as the date and time of the last boot
and the current boot. Requires MSX-DOS 2 to work.
RAMDD.LZH:Registro
de Arranque para MSX con Disco Duro. Spanish version of BOREHD.
NAC11.LZH:NestorAcentos
1.1. Resident program that allows the generation of vowels with tilde and
other characters like ñ ¡ ¿ using the KANA key in japanese MSX
computers.
NEM3-SCC.LZH: This is
the Nemesis 3 SCC sound master files made by Martos a long time ago, but with one
interisting modification: now you can switch on and off sepparately every SCC and
PSG channel, as well as to pause the music. Useful to compose arrangements.
MKROMDSK 1.2: Application that will be useful for those having
a writable Flash ROM cartridge. It creates a ROM file from the contents of the RAM
disk that exists when executing it. If this ROM file is burned on the Flash cartridge,
when booting the computer a read-only disk drive will appear with all the files
and directories that were present on the RAM disk. Besides, the resulting ROM incorporates
the DOS 2 kernel.
Version 1.2 corrects a bug that caused the generated ROMs not to work on MSX Turbo-R
with external memory mapper.
MKROMDSK requires MSX-DOS 2 to work, and is composed of two files:
MKROMDSK.DAT:
Template used to generate ROM files. If you have a MSX-DOS 2.20 kernel image, you
don't need to download this file, since MKROMDSK.COM can generate it from that image.
(NOTE: kernel 2.30, present on MSX Turbo-R DiskROM, can NOT
be used; it must be a 2.20 kernel).
MKROMD1 1.0: This application is identical
to MKROMDSK, excepto that generated ROMs incorporate the DOS 1 kernel instead of
the DOS 2 kernel. This way, generated ROMs can be used on MSX2 with 64K RAM, or
even on MSX1.
This is the official technical reference of the MSX2 standard, edited by
ASCII corporation in 1987, converted to text files. I typed all of it manually
in 1997, using photocopies as reference (I had never seen the original book); I
used about four months for the whole task. I have corrected some failures of the
original text and I have added information about Turbo-BASIC.
Easymbler is a Z80 assembler course (but oriented to MSX, of course) that I wrote
for the disk magazine Eurolink, published by MSX MEN (Ramón Ribas and Daniel
Zorita) some years ago. The basic idea was that it had to be eay to understand and
funny to read, and maybe with this last point I went too far... Note: it is
available in spanish only. For this reason, the description of the
downloadables below is left in spanish.
EASYMB1.TXT: Primera entrega.
Introducción al código máquina. Descripción del
Z80.
EASYMB2.TXT: Segunda entrega.
Instrucciones del Z80.
EASYMB3.TXT: Tercera entrega.
Introducción a los ensambladores y a la arquitectura del MSX. Técnicas
básicas de programación.
EASYMB4.TXT: Cuarta entrega.
Funcionamiento y manejo de los slots del MSX.
EASYMB5.TXT: Quinta entrega.
La memoria mapeada del MSX.
I studied telecommunication engineering in UPC,
Barcelona, between 1993 and 2002. The final project I developped in order to obtain
my degree had the title "InterNestor Suite: design and implementation of a TCP/IP
stack for MSX computers"; yes, it is the same InterNestor Suite you can
download from this page.
Following is the project report I wrote and the presentantion I shown the exam day,
december 11th 2002. By the way I obtained the maximum grade for this project. :-)
Note: it is available in spanish only.
MEMINS.ZIP: Project report
delivered to teachers in MS Word 97 format.
PRESINS.ZIP: Presentation
shown the exam day in MS PowerPoint 97 format.
MSX-UNAPI stands for MSX unified API definition and discovery standard.
It is a proposal of a coding standard aimed to hardware and software developers.
When MSX hobbyists develop new hardware for MSX machines, they equip the devices
with a ROM containing code that provides an API (Application Program Interface),
a set of routines that are used by software applications in order to access the
hardware. How this API is designed and implemented depends only on the hardware
developer criteria, since there is not a standarized way to do it.
The MSX-UNAPI specification aims to provide a standarized way to define, implement,
discover and use such APIs, so that devices with the same function made
by different developers may have compatible APIs.
It is easier than it seems (really!) and it can be really useful for hardware and
software developers. If you are interested, here are the available documents
about the MSX-UNAPI specification:
Introduction to the MSX-UNAPI specification: You
better start reading this. It is a short text introducing the key concepts of the
specification. You have some versions to choose:
MSX-UNAPI specification v1.0: The complete specification,
containing all the ugly details. Available only in english at this time. Choose
your version:
InterNestor Lite supports the Ethernet UNAPI. So if you develop your own Ethernet hardware,
and make its BIOS compatible with the Ethernet UNAPI, InterNestor Lite will automatically recognize and
use your hardware.
Comments about the MSX-UNAPI specification are welcome.
If you want to discuss about it, please visit one of the existing MSX-UNAPI forums:
Published InterNestor Lite 1.1. Now both InterNestor Lite versions
(for serial port and for Ethernet) are distributed in a single package.
Also, now there is one single user manual for both versions.