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 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.
The Nowind interface is made up of four components:
-
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.
-
Glue logic (a GAL IC), to interface the MSX Slot connector signals to the FT245, the flashrom and the mapper.
-
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.
-
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 |
- |
flashRom |
|
1 |
0x4000 |
flashRom |
usb(w) |
|
2 |
0x8000 |
usb(r) |
usb(w) |
|
3 |
0xc000 |
- |
- |
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
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