wiki:geniuspc

The Genius PC is a home computer from VTech. Released in the late 90s, it is one of the last microcomputers. Not very much about it is known, the computer doesn't come with any useful hardware documentation and the integration of everything in a big ASIC makes it hard to know how it works.

Moreover, this computer have different names in each country, making it even harder to track down the information.

  • France : VTech Genius PC
  • Germany : VTech Genius IQ 128 and VTech TV 512
  • UK : VTech IT Unlimited
  • USA : VTech Precomputer Unlimited
  • Also mentioned on the french packaging : Switzerland, the Netherlands, Canada.

Hardware :

  • Motorola MC68EC000, 16-bit external databus, 32MHz
  • 256K of RAM
  • 2M of ROM - Sharp LH537NWN mask ROM
  • Mass storage : 128KB flash memory - AM29F010
  • Cartridge port, apparently on memory bus with system ROM and storage flash. The french system comes with cartridges only containing straps, likely shorting some pins enable extra features...

The ROM is a 16-bit one, available directly on the CPU bus. The FLASH is 8-bit, but directly on the CPU bus as well. The cartridge port is connected to the same bus, and can be used for extra flash storage.

Both flash chips (internal and german storage extension cartridge) are 8-bit only. This means they can't be used for executable code. However, the cartridge port itself is 16bit and can be used for that purpose.

The RAM is accessed through the VTech 27-05793 chip, which likely handles memory refresh. I don't know if the RAM is mapped as 16 or 8-bit to the CPU, and if there are any wait states when accessing it or whatever. The VTech chip might also have some internal memory ?

Other chips

  • BH7236AF : Video encoder (PAL/NTSC + RGB output). On french motherboard RGB is used, composite is not wired.
  • LMT324 : LM324, used as audio amplifier
  • C807U : Toshiba microcontroller. Handles mouse and keyboard scanning, LEDs, on/off buttons, etc. Running at low speed out of internal RC oscillator, as there is no external crystal for it. Seems to communicate with the VTech chip through a serial link.
  • VTech 27-05793 : of course a datasheet of this one would make things easier. Seems to be also called "LS05PR730C102" ?

Output : RGB color video (french version, others have composite output) and mono sound.

Color palette is at least 15 colors :

  • White
  • Light grey
  • Dark grey
  • Black
  • Sky blue
  • Blue
  • Red
  • Green
  • Dark green
  • Yellow
  • Orange
  • Brown
  • Dark brown
  • Mauve
  • Pink

According to the MESS driver, the 16th color is transparent when used for the hardware cursor. The display resolution is 512x256. That's a 64K frame buffer. Top and bottom borders can have different colors.

Serial port

Turns out the serial port is standard. 9600 baud, 8N1, no control flow. You can connect with minicom and use the "chat" application. Files are transferred using the XModem protocol.

This means text is encoded in ASCII. Makes it easy to look for them in the ROM dump.

The serial port is implemented by the small daughterboard above the mainboard. It uses a 4060 counter (baudrate generator?) and a GAL (shift registers?).

There are some things involving interrupts happening, and since the interrupt is manually vectored (jump to register), if not properly setup it will crash both the serial port and the video logic. To avoid problems, the serial port is kept at a low baudrate (1200 bauds) by default, and set to 9600 only when the "chat" application is running.

The chat application initializes the UART by writing $C1 to address $600003 (the reset value seems to be $01).

Incoming data triggers IRQ2, which the chat application sets to handle the incoming bytes into a circular buffer.

RecvSerial nop
    move.b $600001,d3 ; Read status
    move.b d3,d0
    andi.l #1,d0 ; Check if Rx data available
    moveq #1,d1
    cmp.l d0,d1
    bne.s RecvSerial ; If not, wait a little more
    move.b ($600007).l,d0 ; Get the next byte of data
    rts

Cartridge port

Finally the cartridge port is understood!

To run code from there, you need the cartridge ROM (a 16 bit one) to start with "IQP QA TESTING PROG\0" or "IQ CART NOTV FRE 01\0" or "IQ CARTRIDGE FRE 01\0". The first string looks generic, but the two others (with FRE in the name) are likely specific to the French version, the other versions of the internal ROM should be checked to see what they expect.

The NOTV variant seems to not output anything to the TV (possibly it is run before the video out is up and running). According to the MESS driver, there are several VTech machines whch share a similar architecture, and some of them are laptop-like with an LCD display, so that may explain it.

The ROM jumps straight into the cartridge (at offset 0x14, just after the identifier string) if it detects a cartridge.

Pinout

N.TOPBOTTOMN.
1 CARD1GND2
3 D3D114
5 D10D46
7 D2D128
9 D9D510
11D1D1312
13D8D614
15D0D1416
17GNDD718
19+5VD1520
21+5VA022
23A1A1624
25A2A1526
27A3A1428
29A4A1330
31A5A1232
33A6A1134
35A7A1036
37A17A938
39A18A840
41/OEA1942
43RESET/WE44
45/LDS?46
47?A8/CE
49CARD2UDS50

CARD1 = GND to detect fake-cart 1. CARD2 = GND to detect fake-cart 2. Both to GND to detect a real ROM cart.

Sound

There seem to be both a sample-based system (but the sample format isn't known yet), and a synthesizer system.

Rom DUMP

With the help of an AT90USBkey a dump of the ROM was made. You can download it in the attachment section below. The rom is 2MB big, but there is a big chunk of it which is actually text, graphics and audio sample, and disassembling the remaining 68000 code should not be too hard.

For now I only have the French ROM, but people are going to send me the German and UK ROM chips so I can dump them as well (thanks guys !). If you have other info about the hardware, let us know !

MESS core

I have started a MESS driver for this machine. Other people took a look at it and it's now booting, and allows you to use the machine : video, keyboard and mouse are working, as well as the flash memory chip. There is still no sound, and, as far as I can tell, no serial port emulated.

Memory map

  • $300000 Video RAM
  • $600001 bit 7: set when Rx data available
  • $600007 Serial port Rx data
  • $600101 Serial port Tx (W) / Tx status (R)
  • $600301 Keyboard control (LEDs and stuff)
  • $600501 Video control?
  • $600600-4 Sample sound address (big endian)
  • $600605 Sample sound length (number of 16 bit words) (0xFF = about 1 second)
  • $600801 4 for power on, 0 for power off
  • $600901 Waveshape for synth1
  • $600903 Note for synth1
  • $600905 Octave? for synth1
  • $600907 Volume for Synth1
  • $60091x Likewise for Synth2
  • $600919 W: start playing sample / R: 1 if sample playing, 0 if finished

Acknowledgements

A lot of the contents in this page was explored by Alexandre Botzung. Many thanks to him for exploring the platform and finding nice things it is able to do.

Last modified 7 years ago Last modified on Apr 4, 2017, 7:59:46 PM

Attachments (10)

Note: See TracWiki for help on using the wiki.