Print this page

Nowind Interface

The Nowind interface for MSX

This device in MSX cartridge format turns your MSX into an USB device  to be connected to a PC.

Nowind is Aaldert Dekker and Jan Wilmans.

The Nowind hardware 

The Nowind hardware comes in a standard (Sunrise) MSX cartridge. A very professional designed and manufactured piece of electronics! Note the quality goldplated slotconnector.

 

Nowind USB MSX

Nowind USB MSX

Nowind USB MSX

Nowind architecture 

With modern components it is not too difficult to design a MSX device like this one. The whole USB interface is handled by the FTDI IC, the FT245 from FTDI, see http://www.ftdichip.com/Documents/DataSheets/DS_FT245R.pdf 

To use the Nowind inetrface you need the D2XX (USB Direct Drivers + DLL S/W Interface) driver package from  http://www.ftdichip.com/Documents/DataSheets/DS_FT245R.pdf Windows XP does not recognise this device out of the box. 

Nowind USB MSX

The   Nowind interface is made up of four components:

  1. USB interface IC, the FT245. This is a two way USB to 8 bit I/O parallel inetrface adapter. The USB driver, in the form of a DLL or LLinux libraru allow reading and writing to the 8 bit I/O port. Besied 8 bit data I/O ports soem ahndshake signals make interfacing to the bus of the MSX possible.
  2. Glue logic (a GAL IC), to interface the MSX Slot connector signals to the FT245, the flashrom and the mapper.
  3. A simple mapper (74LS174 to map the flash rom into the address space of the MSX. Similar to the MSX DOS 2 mapper since the Nowind interface is not only a standard MSX ROM cartrdige, but also a MSX DOS 2 ROM.
  4. Flash ROM. A standard AMD AF29F040 4 Megabit flash ROM, which acts a a MSX ROM cartridge (a diskROM for example), a MSX DOS 2.2 ROM cartrdige and even a ROM disk. The flash ROM can be put in flash mode and programmed with data coming from the USB HOST on the PC.

Memory map

The interface uses memory-mapped I/O to communicate with the onboard USB client chip. The complete memory map is shown below. The addresses are the beginning of a memory block.

page

address 

read

write

0

0x0000
0x2000

-
usb(r)

flashRom

1

0x4000
0x6000

flashRom

usb(w)
mapper

2

0x8000
0xa000

usb(r)
flashRom

usb(w)
mapper

3

0xc000
0xe000

-

-

The flashrom can be read at page 1 (the upper half is mirrored in page 2). Writing to the flash can only be done in page 0. The USB chip can be read at 0x2000-0x3fff and 0x8000-0x9fff, it doesn't matter where you read. Writing to the USB chip is done at 0x4000-0x5fff and 0x8000-0x9fff (again, all addresses connect to the same chip).

The flashrom is 512kB and is divided into 32 banks of 16kB. The 'mapper' (0x6000-0x7fff and 0xa000-0xbfff) controles which bank is selected. The lower 5 bits are connected to A14-A18 of the flashrom. When powered on, it's uncertain which bank will be selected. This means there has to be a rom header ("AB") with an INIT routine in every bank, that enables bank 0.

Nowind software 

Nowind USB MSX 
The Nowind interface comes with a diskrom in the flashrom, and a USB host program to be executed on the PC. Both Microsoft Windows and Linux are supported as host.
The flash ROM and he diskrom also supply the MSX with a 360 kB ROM disk (with content downloadable from the PC) and a MSX DOS 2.2 cartridge. The ROM disk in the flash ROM  appears as drive B:, the PC hosted dsk file is drive A:. Any other disk drives will be C:, D: etc..

The diskROM supports both MSX DOS 1 and MSX DOS 2. This diskROM is a patched version of the wellknown Philips NMS8250 diskROM. Patches are applied to change the low level actions for reading and writing from a physical floppy disk drive to the disk emulation on the PC via the USB interface. More information on diskROMS, with sources, can be found here. See also the Nowind documentation.

Protocol

The Nowind diskrom and the USBHOST program exchange data via the FTDI 8 bit I/O parallel interface (with a large FIFO queue!). On this raw data transfer a protocol is defined, targeted to assist the MSX diskrom:

 0 C_DSKIO
 1 C_DSKCHG
 2 C_GETDPB
 3 C_CHOICE
 4 C_DSKFMT
 5 C_DRIVES
 6 C_BOOT
 7 C_SETDATE
 8 C_DEVICEOPEN
 9 C_DEVICECLOSE
10 C_DEVICERNDIO
11 C_DEVICEWRITE
12 C_DEVICEREAD
13 C_DEVICEEOF
14 C_AUXIN
15 C_AUXOUT

USBHOST

 The USBHOST is (at the moment) a DOS comamnd line program, running in a DOS box. 

The program options are: 

C:\nowind\usbhost ?
Usage: usbhost [options] [diskimage.dsk] [romimage.rom]
Options: --image, -i    specify disk image
         --rom, -r      specify rom image
         --flash, -f    update firmware
         --dos2, -2     boot MSXDOS 2
         --ctrl, -c     only 1 drive per diskrom (same as holding CTRL)
         --shift, -s    prevent other diskroms from initializing
         --dsk2rom, -d  convert 360 kB image to romdisk.bin
         --test, -t     testmode (send a fixed 'HELLO MSX' infinately to MSX)

Examples: usbhost image.dsk
          usbhost kungfu.rom
          usbhost -2s harddiskimage.dsk
          usbhost --flash firmware.bin  

Some strong points of the Nowind interface

  •  The PC can be used as unlimited storage for the MSX. Though the PC is needed for operating the MSX, it so convenient to have the MSX files on the PC with easy backup and interchange via the internet.
  • Access to the same files as in the emulator.
  • No need to use floppies or cardreaders with compact flash cards to get files from the PC to the MSX.
  • Use your diskless MSX 1 with a disk drive.
  • Any cooperation between PC and MSX is possible, by writing software for the MSX, replacing the diskrom, and a variant of the USB host program on the PC.
  • The ROM disk can be used without a PC. So this is an alternative for the many flash devices for MSX.
  • Open source. All software and documentation is freely available on the Nowind website.

Usage remarks

Some things I noticed on the Nowind interface:

  • Switch off the MSX before inserting the Nowind interface.
  • Make sure the MSX is powered up before inserting the USB cable in the PC, otherwise it is not seen as USB device. 
  • Unplug the USB cable from the PC when turning the MSX power off and on.
  • Use Ctrl-C to stop the USBHOST program.
  • Resetting the MSX is often not sufficient to reset a not responding Nowind interface, instead stop USBHOST and power off the MSX (and remove the USB cable from the PC first!) may be required.
  • Check often the Nowind sourceforge development site for newer versions of the software, there is all the time active development going on!  

Previous page: White turbo R
Next page: SD MMC drive