SerialToVM hardware version 1.1a Copyright (C) 2000 by Soeren Gust, sgust@ithh.informationstheater.de ****************************************************************** * This text is distributed in the hope that it will be useful, * * but WITHOUT ANY WARRANTY; without even the implied warranty of * * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * * GNU General Public License for more details. * ****************************************************************** This text is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. What is it ---------- SerialToVM lets you connect the Visual Memory to a standard RS-232 serial port on a PC (or other systems like Amiga etc.). It is possible to send and receive games and save-files from and to the Visual Memory. It uses the VM to VM protocol, the same protocol is used when transferring files directly from one VM to another. Since this protocol is limited to transferring files it is not possible to do things like reinitialise the VM or copy protected files. The SerialToVM is basically a AT90S8515 from Atmels AVR series of micro-controllers to convert the synchronous serial protocol from the VM into the normal asynchronous serial communication available on nearly all computers since the mid 80s. To build it you need to be able to make a single sided pcb (100mm * 75mm). Additionally you need a way to program the Atmel with a standard Atmel ISP cable. To modify the firmware you need the avr-gcc C compiler. This package contains just a description of the hardware, to use it you need additional PC software. Look at "http://soeren.informationstheater.de/vm/" to see all supported systems. There is also the source code available to allow porting to not yet supported systems. WARNING ------- The version 1.1 of the hardware does not use the standard Atmel ISP connector as defined in appnote AVR910, the left and right columns are exchanged. Control the connections to the programmer with a multimeter before applying power, especially make sure that GND is correctly connected and that VCC connects to the unused pin. This error happened when I built my first programming cable nearly a year ago and has been transfered to all my AVR projects. I thought the connector on page 2 was viewed from below just like the one on page 8, but it is viewed from above. How to build it --------------- You need to make a single sided 100mm * 75mm pcb. I have included layout data in eps and png (300 dpi) format, if you need other formats please E-mail me. The layout uses 9 wire jumpers, one is under IC2, two others are crossing each other, so isolate them. I recommend to use sockets for all ICs, the Atmel needs it, since I used the PLCC version of the Atmel. The SerialToVM needs 9V DC unregulated power. Some Volts more don't matter, although the regulators will get hotter. Adapt the voltage rating of C6 as necessary, check the power supply unloaded for maximum voltage. Add cooling to the regulators as necessary, especially when mounting the SerialToVM into a case. I have myself successfully used a power supply from a SEGA Megadrive outputting 10V. The 6V DC is an output to feed the VM directly instead of batteries. How to connect it to the battery compartment is up to you, I opened my VM and put wires unter the battery clips, there are some screws in the right position. The connector ISP is a not the standard Atmel in-system-programmable connector, read my warning earlier in this documentation. If you don't have an interface to connect to this I recommend the UISP interface from "http://medo.fov.uni-mb.si/mapp" since this is the one I have used myself. Before using the SerialToVM you have to upload the firmware into the Atmel using the ISP. When doing this the VM has to be disconnected, or it could be destroyed! I have supplied object code in S-records and Intel-HEX, use whatever your interface supports. If none of them is supported contact me. If you want to change the firmware, the source is in the src directory. My development environment was avr-gcc using gcc-core-2.95.2-avr-patch-1.1, binutils-2.9.5.0.13-avr-patch-1.1, avr-libc-20000201.tar.gz and uisp-0.2b-1026.src.tar.gz. The connection to the serial port is a direct connection by pin position, using press on connectors on both sides. Such connections are also available for PC main boards, but be careful, there are at least 2 different versions, the only working one is the connection by pin position, sometimes called "pin 5 type". Connection to PC ---------------- To connect the SerialToVM to a PC use a standard null-modem cable. This cable is wired: 1 --- 4,6 2 --- 3 3 --- 2 4,6 --- 1 5 --- 5 7 --- 8 8 --- 7 To connect a macintosh you need a mac to PC null-modem cable. Finding one of them can be difficult, here is how to wire it: Mac PC-AT (SUB-D 9 pin) 1 ----- 6,8 2 ----- 7 3 ----- 2 4,8 ----- 5 5 ----- 3 Pinout of Mac connector: 8 7 6 5 4 3 2 1 Connector to VM --------------- I have built my own connector to the VM. The right part is easy, just use a saw to give the pcb part the correct size to fit into the VM. The left part is more difficult. Cut the pcb directly at the end of the copper lines. I then soldered contacts taken from a VLB connector onto the pcb. A PCI connector should work, too. Look into the directory pictures for a picture of the connector taken from the solder side. How does it work ---------------- The Atmels UART is used to communicate with the PC, using the MAX232CPE as driver to RS-232. Port B is used for RTS/CTS/DTR handshaking, the latter is converted with a 1489. The SPI is used to receive data from the VM. PA0-1 is used to send data to the VM, PA2 as a handshake to VM signal, PA3 as a handshake from VM signal. The 74LS07 is used to convert the 5V signals from the Atmel to 3.5V signals for the VM. Pictures -------- There is a picture of the SerialToVM and a detail picture of the VM connector in the pictures directory. Component list -------------- IC1 1 * AT90S8515-8JC 8 MHz PLCC IC2 1 * 74LS07 IC3 1 * MAX232CPE IC4 1 * 1489 or 75189 XT 1 * CST8.00MTW ceramic resonator 8MHz with integrated capacitors CB 4 * 100nF C1-C5 5 * 1uF / 16V C6 1 * 47uF / 16V (more than 16V if the power supply outputs more) REG1 1 * 7805 Voltage regulator 5V REG2 1 * 7806 Voltage regulator 6V R1-R4 4 * 10K R5 1 * 2.2K ISP 1 * 2x3 pin connector RS232 1 * 2x5 pin connector wires 9 * wire jumpers cable to RS-232 power supply 75mm * 100mm pcb