Performing a Super iCybie (SiC) upgrade

A detailed guide.

iCybie gold robot
Introduction

The iCybie robotic dog was invented by Andrew Filo with first patent filing on 9 May 2000 [1]. The patent describes a method and means to reprogram and puppeteer this robot. The author argues that this robot is sufficiently complex that it would be a useful research tool in the matter of sensor arrays determining experiential behaviour. However, in its stock configuration, these features are not modifiable. By applying a delicate if not simple method to modify a stock iCybie, extended capabilities of its technical sophistication are accessible to perform software development. In the early days a modification called SiC, a moniker for Super iCybie, was introduced which allowed the robot to be externally programmed and controlled. If the robot were modified according to the SiC upgrade process, a connection was established between the serial port on the Toshiba TMP91C815F CPU and a computer via a stereo jack connection refitted to an DB9 serial port connector using the MAX233 family of TTL to RS-232 chips.

The iCybie with Revision ‘D’ motherboard, manufacture date 24 May 2001, has a Toshiba CPU with two daughterboards containing a SunPlus 2483 for audio playback and an RSC-364 for voice recognition, command storage, and speech synthesis. The CPU addresses an internal ROM and an external 40-pin two-sided card interface which reads a pair of 128k x8 CMOS multi-purpose SST39VF010 flash, for a total of 2 x 1 Mbit / 256k of memory. When these cards were acquired with the accessory walk-up charger, they contained binary files which load using a bootstrapper. In this configuration, it behaves similar to a traditional BIOS in that it contains settings to load a disk, if present, before code in ROM, and, a switch to turn on Tx/Rx for sending and receiving of TTL signals. As such, the robot becomes an acute sensor array which determines mood and behaviour states exhibited to the user through its sixteen motors. A description of the sensor array and such potential for research is outside the scope of the topic.

The modification described includes the use of the downloader accessory for writing files to the cards in order to create a bootstrapper in system ROM. During the time described herein, it was discovered that a tower of a vintage equivalent to the downloader with Windows XP, service pack 3 with a “native” parallel port on the motherboard was ideal for performing cartridge writing, although writing without trust mode enabled required removal of ECP drivers so that the parallel port could be debugged. Such a machine also served as the development platform regarding Windows drivers necessary so that a command-line program called ICBURN could be used instead of the SilverLit downloader program, along with a device driver I/O called WinIo. A laptop running Windows 7 with a USB-Serial adapter worked well for communicating with the SiC once the circuit modifications were made and the cable appropriately constructed. Given the age of the software and the pre-2000 year development period, upgrades were performed so that the sources of each could build using the C++ compiler in Visual Studio 8.

Modification of the robot

The robot can be modified with the introduction of the MAX233CPP integrated circuit in line between the serial lines of the CPU of the robot and signal ground to form a three-terminal I/O. At the output, a stereo jack is installed at a convenient place on the robot's shell. A length of cable can now be connected. A completed iCybie motherboard installation is shown in Fig.1.

Fig.1

The cable, constructed to adapt the stereo jack to three pin serial: Pins 2, 3, and 5 while pins 1, 4, and 6, 7 and 8 are connected together on the DB-9 interface, is shown in Fig.2.

Fig.2

This forms the complete set of hardware required to connect a computer to the iCybie robot. The modification shown in Fig.1 uses the “brush” technique to apply the wires to the Tx and Rx pads on the motherboard. This means a stranded wire was used, flattened where the wire body is secured using industrial glue inside foam insulators, attached to the motherboard. This would be a solderless alternative to the method shown in Fig.3, which is easily prone to breakage.

Fig.3

Serial cable wiring

The MAX233CPP is wired to the modified circuit installed in the previous section according to the schematic, shown in Fig.4. A completed circuit modeled on a solderless breadboard, is shown in Fig.5.

Fig.4

Fig.5

iCybie programmable memory cards

As demonstrated in the patent, the iCybie has been designed to be reprogrammable.

In order to configure the robot’s internal memory to use the hardware modification, two files—cromnist-h.bin and cromnist-l.bin—need to be uploaded to the memory card. With the memory card installed in the robot, on boot the files are used to add an 8kB program, C-ROM, to the bootstrapper, interrupting the process to include the hardware connection.

To use the Downloader.exe program original supplied, a second program AllowIo.exe which opens the parallel port at 0x378. To run the program Downloader.exe, a *.bat file is required with the following contents:

allowio.exe downloader.exe 0x378

The program then will run, shown in Fig.6.

Fig.6

Selection of the two files: crominst-l.bin by opening the file from the folder containing the downloader program using “Low Byte”, crominst-h.bin using “High Byte”, then using “PC --> Cartridge” will save the files onto the memory card.

Using ICBURN

The sources were updated and built in Visual Studio 2005, targeted to Windows XP, although it can also now run in Windows 7, although you will need to install WDK from Microsoft to allow development of WinIo. To discover the usage of ICBURN, navigate to the folder where the release version of the program is stored, open a command-prompt and type icburn.exe.

Fig.7

The command to execute in order to create a CROM would be:

icburn -t crominst

Note that the -t flag is used in the command. If the parallel port used on the execution computer is bi-directional, you can leave out the flag. If you start by not using the flag, the program will tell you if the port is such, if you need to use the flag. From experience, native parallel ports seem not to be bi-directional, while those made to use PCMCIA or ExpressCard, seem to be. This is not to imply this observation is in general true, but either way, if everything is in the program folder and the peripherals are connected properly, the files will be written to the iCybie cartridge flash memory. One could even shorten the command syntax, as illustrated by a successful writing of the Z-Cybie personality.

The bundle of ICBURN which is available in the Store, version 0.2, has WinIO.dll already in the folder. Do not move this file from the folder, as you will receive the following error, shown in Fig.8.

Fig.8

The program has been updated to include more verbose logging at the console, as well as writing a logfile to disk containing the last execution action.

Applying the CROM program

Having created a crominst disk by writing it in the method described in the previous section, plug it into the iCybie cartridge slot. Connect the serial cable from the iCybie to the computer. A typical programming environment is shown in Fig.9.

Fig.9

Check that the com port is correct. In the example done for this paper, a USB-Serial adapter cable capable running in Windows 7, 8.1, or 10. If the modification and the construction of the chip wiring successful, running a terminal application connected to the serial port will yield the results shown in Fig.10.

Fig.10

Once the crominst has been installed. Disconnect from the serial port, shutdown iCybie, remove the card containing the CROM files, and startup iCybie by connecting the battery. Connecting again to iCybie via the serial cable will yield the output shown in Fig.11.

Fig.11

After a successful SiC upgrade and CROM software installation, you are free to program iCybie including puppeteering by creating a software development kit (SDK), such as extending YICT.

Static puppeteering

As described in [1], the iCybie was designed for puppeteering via the SiC cable interface. In combination with SICBURN, as well as the downloader program and ICBURN, programs could be written in the SDK, then uploaded for boot into the robot’s memory. Then they can be observed, interacted with, and decided if they need to be improved or deleted.

Advanced repair techniques

There are times when the modification is made and the unthinkable happens. The pads of the Tx or Rx come separated from their placement on the motherboard, as shown in Fig.12.

Fig.12

Usually, one would not be able to continue further as the copper lines from the CPU are too small to create new pads for. But with advances in nanotechnology, there is the ability to create new pads by employing conductive silver inks.

References

[1] Filo, A. “Self-stabilizing walking apparatus that is capable of being reprogrammed or puppeteered”, U.S. Patent 6,462,498, Oct. 2002.