If I remember correctly, on the vc4000 cartridges the PVI cs address is 
wired to a CPU address.

I attached my crcfile for some RAM/PVI address information for you.

Since leaving MESS developement I have done several improvements in my
Acetronic emulation.

# ANALOGCONTROLS means analog joystick emulation needed

# NOISE noise hardware in vc4000
#  not in tv spielcomputer

# NOINVERSION vc4000 can prevent grid/background color inversion/darker colors
#  not tv spielcomputer --> gives games with wrong background/grid colors
# 16COLORS vc4000 has darker color palette for background/grid
#  not in tv spielcomputer
# PALETTE8 game has 16 colors, but looks better on tv spielcomputer with only 8 colors

# pvi a11 must be connected on the vc4000 cartridges
#  most connect it to a12 --> PVI_A11_IGNORED (default)
#  chess 2 seams to need A11 and A12
#  some early cartridge will need A11
# PVI_A11 pvi at $xf00-$xfff needed (ur tv spielcomputer+vc4000, not tv spielcomputer)
# PVI_0F00 pvi at 0xf00-0xfff expected
# PVI_A12 pvi at 0x1f00-0x1fff needed
# PVI_A11_IGNORED pvi at $1700-17ff needed; not tvspielcomputer extended!
# PVI_1700 pvi at 0x1700-0x17ff expected
# PVI_1F00 pvi at 0x1f00-0x1fff, no mirrors at 0x3f00, 0x5f00, 0x7f00 (only tvspielcomputer extended)
# (pvi normally at $1f00-1fff, and io at $1e80-1eff)

# TYPE4RAM 4kbyte cartridge, 1kbyte? ram at 0x1000
# TYPE4RAM256 4kbyte cartridge, 256 byte ram at 0x1000
# TYPE4RAM1024B 4kbyte cartridge, 1024 byte ram at 0x1800
# TYPE6RAM 6kbyte cartridge, 1kbyte ram
# TYPE6RAM1024 6kbyte cartridge, 1kbyte ram at 0x1800

# 6KByte cartridges give problems on the tvspielcomputer

[vc4000]
# Advanced Programmable Game System
# the first 13 seam to be acetronic mpu1000/2000 versions
# 682b876a,5c7f11e0,ec2a91b3,5e8ee224,cb28b9fe,9c8e7de6,3da31bc5,0ab80f3e,
# 87977f92,c6b2cd9a,6ae47072,b589f093,b1c31f9a

#682b876a = Olympics (Pack-in Game) | acetronic? 1 | | | ANALOGCONTROLS
#5c7f11e0 = Grand Prix | acetronic? 2 | | | ANALOGCONTROLS
#ec2a91b3 = Blackjack | acetronic? 3 |
#get new card
#show
#bet finished/bed high/bed low
5e8ee224 = Tank Battle/Plane Battle | acetronic? 4 |
cb28b9fe = Air Sea Battle | acetronic? 5 | | | 16COLORS
9c8e7de6 = Shooting Gallery | acetronic? 6 |
#7   Math
#8   Math 2
#9   Challenge
#10? Auto Sport
#10? Codebreaker
#11  Supermaze
3da31bc5 = Horse Racing | acetronic? 12 |
#0ab80f3e = Circus | acetronic? 13 | | | ANALOGCONTROLS
#14  Prizefight
87977f92 = Soccer | acetronic? 15 | |
#16  Hobby Module (never released?)
#17  Musical Games
#18  Treasure Hunt
#19  Golf
#20  HeadOn
#21  Draughts
#22  Spiders Web
#23  Chess
#24  Othello
c6b2cd9a = Electronic Pinball | acetronic? 25 |
#26  Super Knockout
6ae47072 = Invaders (Pack-in Game)| acetronic? 27 | 
#28  ?
b589f093 = Shootout | acetronic? 29
#b1c31f9a = Space Wars | acetronic? 30 |
#31  Lazer Attack
#32  Backgammon
#33  Planet Defender
#34  Sea Wolf (never released?)

# working in another version
# metropolis hangman

5c7f11e0 = Car Races/grand prix | vc4000 1/acetronic? 02 | | | ANALOGCONTROLS, 16COLORS
ec2a91b3 = las vegas blackjack | vc4000 2/acetronic? 03 | | |
682b876a = Paddle Games/olympics | vc4000 3/acetronic? 01 | | | ANALOGCONTROLS
468e4779 = Tank Battle, Air Battle/tank air battle | vc4000 4/acetronic? 04
e38e0c03 = mathematik 1 | vc4000 5 | | video timing; keyboard assignment
66c5975e = mathematik 2 | vc4000 6 | |
f3d37699 = Air, Sea Battle/air_sea_battle | vc4000 7/acetronic? 05
ea8f717f = Memory 1, Flag Capture| vc4000 8
7b2b2b61 = intelligenz 1 (labyrinth) | vc4000 9
bdd652b7 = Winter Sports | vc4000 10 | | | NOINVERSION
aaea290f = Hippodrome/horse racing | vc4000 11/acetronic? 12 | | graphics | 16COLORS
31978ad4 = Hunting | vc4000 12 | | | NOISE
e9c53288 = Chess | vc4000 13 | 1kbyte ram at 0x1000-0x1fff | graphics | TYPE4RAM1024B
55011f0a = Motocross | vc4000 14 | | graphics
a0f5320a = Intelligence II (4 gewinnt)| vc4000 15 | |
52b8c6e7 = Intelligence III (mastermind)| vc4000 16 | | graphics
0ab80f3e = Circus/circus | vc4000 17/acetronic? 13 | | | NOINVERSION, ANALOGCONTROLS
922c9f0d = Boxing Match | vc4000 18 |
b1c31f9a = Outer Space Combat/space wars | vc4000 19/acetronic?
d68da80a = Melody, Simon | vc4000 20 |
619c07c9 = Intelligence 4 (Reversi) | vc4000 21 | |
1b948aeb = Chess II | vc4000 22 | 1kbyte ram at 0x1800-0x1fff; PVI A11 pin not checked | | PVI_1F00, TYPE6RAM
add99c6e = Pinball/electronic pinball | vc4000 23/acetronic? 25 | | |16COLORS
05af8228 = Soccer/soccer | vc4000 24/acetronic? 15 | |
a47fe1bf = Bowling, Ninepins | vc4000 25 | | graphics | PVI_1700; ANALOGCONTROLS
7b868473 = Draughts | vc4000 26 | 1 kbyte ram at 0x1000-0x1fff | | TYPE4RAM256; 16COLORS
d399ce07 = Golf | vc4000 27 | | graphics
11dd7f0d = Cockpit | vc4000 28 | | graphics
a640a330 = Metropolis Hangman | vc4000 29 | (left 2 faster; left 0 select; left clear continue; left enter accept) | graphics
08209d98 = solidär | vc4000 30 | |
50fd6a18 = Casino | vc4000 31 |  | | NOINVERSION, PVI_A11_IGNORED (only wrong background if not)
9497204a = Invader | vc4000 32 | |
a46c2f9e = Super Invaders | vc4000 33 | | | NOINVERSION (writes to 1e1a 1e4a; means nothing!?)
# = space laser (not released) | vc4000 34
# = rodeo (not released) | vc4000 35
08cd8135 = backgammon | vc4000 36 | 1kbyte ram at 0x1000-0x1fff | graphics | TYPE4RAM256
27cce96f = Monster-Man | vc4000 37
b3ed1129 = hyperspace | vc4000 38 | |
# = basketball (not released) | vc4000 39
306e37bb = superspace | vc4000 40 | |

# galgenspiel | homebrew --> lead to interton 29 | german

# munch and crunch | voltmace 24
# leapfrog | voltmace 25

e0b761da =8000 private multicartridge early version

#baddump
14468471 = Chess II | vc4000 22 | incomplete
3e984c7a = Bowling, Ninepins | vc4000 25 | baddump
a01ffcd8 = 1000 galgenspiel/hangman | GERMAN | typed in; not verified
d9b5d633 = 1000 galgenspiel/hangman | GERMAN | typed in; some word fixes; not verified

Did you take care about placing/using the vc4000 crc file for the emulator?
(crcdir /raid/prog/mess/crc
in $home/.xmess/xmessrc)

on the tiny build the directory and filename are .xtiny and xtinyrc.

I have looked at the example files, and did a short conversion to tvc 
file format
(raw extracted data from the cassette), and testet it with 4 in einer reihe.
(f1 q n +).

In my humble opinion .pgm makes it only a little bit easier for the 
novice, but makes
emulation more difficult and do not reflect real hardware behaviour.

PS: bowling is a bit picky about the analog controller being outside 
expected positions,
but when you have it somewhat in the center it is working.
--------------------------------------------------------------------------
Let's start with the memorymap.

At the cartridge-connector of the Interton their are only adresslines A0-A12
available. That means only adress $0 to $1FFF are really adressable. Inside
the Interton Adressline 13 and 14 of the CPU are not connected. So adress
range $2000-$3FFF, $4000-$5FFF and $6000-$7FFF are just duplications of
$0-$1FFF. 

Coming to the Cartridges: 

I have found 4 different Layout's of them

1. 2K or 4K Rom

2. 2K or 4K Eprom (I think they are done when Interton runs out of ROM's)

3. 4K-Rom + 1K Ram (only in cartridge no. 13, 26 and 36)

4. 6K-Rom + 1K Ram (only in cartridge no. 22)

The mapping is done as follows

For 1. 2K-Rom ranges from $0-$07FF

          4K-Rom ranges from $0-$0FFF

For 2. same as for 1

For 3. 4K-Rom from $0-$0FFF and the 1K-Ram is from $1000-$15FF with
duplication at $1800-$1DFF(means 1.5K in 1K physical Ram. The memory from
$1400-$15FF is the same as from $1000-$11FF)

For 4. 6K-Rom from $0-$15FF(only 5.5K!!!!) and the 1K-Ram from
$1800-$1DFF(again 1.5K)

I attached the 4 schematics of the Cartridges.

So far the memory mapping is as follows:

$0000-$0FFF = Rom

$1000-$15FF = Rom or Ram or nothing (depends on the Cartridge)

$1600-$17FF = mirror of $1E00-$1FFF (you already know)

$1800-$1DFF = Ram or nothing (depends on Cartridge)

$1E00-$1E7F = not used

$1E80-$1EFF = Sound register when write and Keyboard when read

$1F00-$1FFF = PVI internals (you already have a good definition in your
coding guide)

Coming to a more detailed look at addressrange $1E80-$1EFF.

You already noticed that the Sound Register is at $1E80. Actually it is
duplicated at each adress between $1E80 and $1EFF. So a write to any of
these adresses are effecting the Sound Register, but I didn't find any of
the 37 Cartridges released for the Interton which writes to any other adress
than $1E80.

The Keyboard is normally mapped at $1E88-$1E8E, as you already know, but is
also mirrored as follows:

Left Controller (P1)     Console           Right Controller (P2)

$1E88-$1E8A              $1E8B             $1E8B-$1E8E

$1E98-$1E9A              $1E9B

$1EA8-$1EAA              $1EAB             $1EAB-$1EAE

$1EB8-$1EBA              $1EBB

$1EC8-$1ECA              $1ECB             $1ECB-$1ECE

$1ED8-$1EDA              $1EDB

$1EE8-$1EEA              $1EEB             $1EEB-$1EEE

$1EF8-$1EFA              $1EFB

All other adresses in this range are not used.

The Base Version has a 2k-Rom from $0-$07FF and 2k-Ram from $0800-$0FFF. The
extended version has also 3k-Ram from $1000-$1BFF, as shown on page 162 of
the book.

The 8 Bytes from $199C-$199F and $19BC-$19BF I wouldn't take any notice,
because it is actually a bug in the Rom which is mentioned on page 245 of
the book.

Q. Is $1E88..$1E8E mirrored at eg. $1EA8..$1EAE for reads, in the same way
as you described for the Interton? If so, would a noise generator installed
at $1E80 be mirrored for writes throughout the $1E81..$1EFF range, in the
same way as you described for the Interton?

A. The TVGC behaves the same as the Interton in this area ($1E80..$1EFF).

Q. The region $1C00..$1CFF seems to be a mirror of $1D00..$1DFF, is this
correct? (This would mean that the PSGs are mirrored accessed at
$1C00..$1C1F and the optional random number generator is mirrored at
$1C20).

A. No. The PSGs are not mirrored to $1Cxx.

When you press RESET the RAM is not cleared on the real hardware. I think
the correct behaviour should be just to reset the IAR (Program Counter)
back to 0 and not alter any memory or registers.

If you concentrate on core graphics timing at the moment a good game to
start with is the Interton game no. 1 Autorennen (Grand Prix). When the
first game of it starts the cars just disappear and not coming back from
the bottom of the screen. In MESS I have it so far that they will appear
again but they flicker and are in positions where they not on the real
machine. They also change colors during their way up the screen. I
couldn't figure out why that happens, but this game is depending a lot on
the interrupts.

END OF DOCUMENT-----------------------------------------------------------

